| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- package com.punchsettle.server.service.manager.impl;
- import com.punchsettle.server.atomic.entity.LotteryScratchRecord;
- import com.punchsettle.server.atomic.entity.User;
- import com.punchsettle.server.atomic.service.ILotteryScratchRecordService;
- import com.punchsettle.server.atomic.service.IUserService;
- import com.punchsettle.server.common.exception.BusinessException;
- import com.punchsettle.server.constant.ScratchActionTypeEnum;
- import com.punchsettle.server.dto.scratch.ScratchDto;
- import com.punchsettle.server.dto.scratch.ScratchQuery;
- import com.punchsettle.server.service.manager.IScratchManager;
- import com.punchsettle.server.utiis.UserUtils;
- import org.springframework.beans.BeanUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.transaction.annotation.Transactional;
- import java.util.List;
- import java.util.Optional;
- /**
- * @author tyuio
- * @version 1.0.0
- * @description TODO
- * @date 2024/12/13 16:25
- */
- public class ScratchManagerImpl implements IScratchManager {
- @Autowired
- private IUserService userService;
- @Autowired
- private ILotteryScratchRecordService scratchRecordService;
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void modifyScratchAmount(ScratchDto dto) {
- Long currentUserId = UserUtils.getCurrentUserId();
- User user = Optional.ofNullable(userService.getById(currentUserId)).orElseThrow(() -> BusinessException.fail("无法获取当前用户信息"));
- User updateUser = new User();
- updateUser.setId(user.getId());
- if (ScratchActionTypeEnum.INVEST.equals(dto.getActionType())) {
- updateUser.setLotteryInvestAmount(user.getLotteryInvestAmount().add(dto.getAmount()));
- }
- if (ScratchActionTypeEnum.WIN.equals(dto.getActionType())) {
- updateUser.setLotteryWinAmount(user.getLotteryWinAmount().add(dto.getAmount()));
- }
- userService.updateById(updateUser);
- LotteryScratchRecord scratchRecord = new LotteryScratchRecord();
- BeanUtils.copyProperties(dto, scratchRecord);
- dto.setId(null);
- scratchRecordService.insert(scratchRecord);
- }
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void revokeScratchRecord(ScratchDto dto) {
- // 获取当前用户信息
- Long currentUserId = UserUtils.getCurrentUserId();
- User user = Optional.ofNullable(userService.getById(currentUserId)).orElseThrow(() -> BusinessException.fail("无法获取当前用户信息"));
- // 获取待撤销的刮刮乐记录
- LotteryScratchRecord scratchRecord = Optional.ofNullable(scratchRecordService.selectById(dto.getId())).orElseThrow(() -> BusinessException.fail("无法获取刮刮乐记录"));
- // 待更新的用户信息
- User updateUser = new User();
- updateUser.setId(user.getId());
- // 待更新的刮刮乐记录
- LotteryScratchRecord updateScratchRecord = new LotteryScratchRecord();
- updateScratchRecord.setId(scratchRecord.getId());
- // 撤销投入
- if (ScratchActionTypeEnum.INVEST.equals(scratchRecord.getActionType())) {
- if (scratchRecord.getAmount().compareTo(user.getLotteryInvestAmount()) > 0) {
- BusinessException.throwFail("撤销投入金额异常,用户已投入金额小于待撤销金额");
- }
- updateScratchRecord.setActionType(ScratchActionTypeEnum.REVOKE_INVEST);
- updateUser.setLotteryInvestAmount(user.getLotteryInvestAmount().subtract(scratchRecord.getAmount()));
- }
- // 撤销中奖
- if (ScratchActionTypeEnum.WIN.equals(scratchRecord.getActionType())) {
- if (scratchRecord.getAmount().compareTo(user.getLotteryWinAmount()) > 0) {
- BusinessException.throwFail("撤销中奖金额异常,用户已中奖金额小于待撤销金额");
- }
- updateScratchRecord.setActionType(ScratchActionTypeEnum.REVOKE_WIN);
- updateUser.setLotteryWinAmount(user.getLotteryWinAmount().subtract(scratchRecord.getAmount()));
- }
- // 更新用户
- userService.updateById(updateUser);
- // 更新刮刮乐记录
- scratchRecordService.update(updateScratchRecord);
- }
- @Override
- public List<ScratchDto> queryScratchRecord(ScratchQuery query) {
- return List.of();
- }
- }
|