This commit is contained in:
777
2026-01-08 17:38:41 +08:00
parent 20c5908f34
commit 432743addf
27 changed files with 825 additions and 170 deletions

View File

@@ -2,7 +2,10 @@ package com.ruoyi.cai.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.cai.domain.*;
import com.ruoyi.cai.domain.Account;
import com.ruoyi.cai.domain.ConsumeLog;
import com.ruoyi.cai.domain.Gift;
import com.ruoyi.cai.domain.User;
import com.ruoyi.cai.dto.admin.vo.AccountAdminVo;
import com.ruoyi.cai.dto.video.VideoSettleResp;
import com.ruoyi.cai.dto.video.WithholdingFeeUserResp;
@@ -10,7 +13,6 @@ import com.ruoyi.cai.enums.ConsumeLogType;
import com.ruoyi.cai.enums.account.AccountChangeCodeEnum;
import com.ruoyi.cai.ws.bean.Room;
import com.ruoyi.common.core.domain.PageQuery;
import org.springframework.transaction.annotation.Transactional;
/**
* 用户账户Service接口
@@ -32,11 +34,6 @@ public interface AccountService extends IService<Account> {
void withdrawFail(Long userId, Long incomeCoin, Long traceId);
@Transactional(rollbackFor = Exception.class)
PointChangeLog drawPoint(PrizeOnline prizeOnline, User user, Integer drawPoint, String traceId);
PointRecordLog rechargePoint(RechargeOrder rechargeOrder, User user);
void recharge(ConsumeLog consumeLog);
void rechargeAdminIgnoreAccount(ConsumeLog consumeLog);

View File

@@ -2,8 +2,6 @@ package com.ruoyi.cai.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.cai.domain.PointChangeLog;
import com.ruoyi.cai.domain.PrizeOnline;
import com.ruoyi.cai.domain.User;
/**
* 积分记录Service接口
@@ -13,13 +11,4 @@ import com.ruoyi.cai.domain.User;
*/
public interface PointChangeLogService extends IService<PointChangeLog> {
void rechargeOrderChange(String orderNo, Long userId, Long givePoint);
void rechargeOrderInviteChange(Long userId, Long givePoint, Long inviteUserId, String traceId);
void adminChange(Long userId, Long givePoint);
void adminInvite(Long userId, Long givePoint, Long inviteUserId, String traceId);
PointChangeLog drawPoint(PrizeOnline prizeOnline, User user, Integer drawPoint, String traceId);
}

View File

@@ -16,4 +16,7 @@ public interface PrizeOnlineService extends IService<PrizeOnline> {
List<PrizeOnline> selectPrizeOnlineList(Integer gender);
void reset(Integer gender, List<PrizeOnline> bo);
List<PrizeOnline> prizeUp();
}

View File

@@ -0,0 +1,14 @@
package com.ruoyi.cai.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.cai.domain.PrizeWinningRecord;
/**
* 中奖记录Service接口
*
* @author ruoyi
* @date 2026-01-08
*/
public interface PrizeWinningRecordService extends IService<PrizeWinningRecord> {
}

View File

@@ -217,34 +217,6 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
accountChangeLogService.saveLogNoAdmin(user.getId(),user.getUsercode(), AccountChangeCodeEnum.WITHDRAW_FAIL,incomeCoin,traceId);
}
@Autowired
private PointRecordLogService pointRecordLogService;
@Autowired
private PointChangeLogService pointChangeLogService;
@Transactional(rollbackFor = Exception.class)
@Override
public PointChangeLog drawPoint(PrizeOnline prizeOnline, User user, Integer drawPoint, String traceId){
boolean bb = baseMapper.decrPoint(user.getId(), Long.valueOf(drawPoint));
if(!bb){
throw new ServiceException("积分不足");
}
PointChangeLog pointChangeLog = pointChangeLogService.drawPoint(prizeOnline, user, drawPoint, traceId);
return pointChangeLog;
}
@Transactional(rollbackFor = Exception.class)
@Override
public PointRecordLog rechargePoint(RechargeOrder rechargeOrder, User user){
if(rechargeOrder.getGivePoint() == null || rechargeOrder.getGivePoint() == 0){
return null;
}
log.info("开始赠送积分 orderNo={}", rechargeOrder.getOrderNo());
baseMapper.incrPoint(rechargeOrder.getUserId(), rechargeOrder.getGivePoint());
pointChangeLogService.rechargeOrderChange(rechargeOrder.getOrderNo(), rechargeOrder.getUserId(),rechargeOrder.getGivePoint());
PointRecordLog pointRecordLog = pointRecordLogService.initOrder(rechargeOrder, user);
return pointRecordLog;
}
@Override
@Transactional(rollbackFor = Exception.class)

View File

@@ -23,105 +23,6 @@ import javax.annotation.Resource;
* @author ruoyi
* @date 2025-12-10
*/
@RequiredArgsConstructor
@Service
public class PointChangeLogServiceImpl extends ServiceImpl<PointChangeLogMapper,PointChangeLog> implements PointChangeLogService {
@Autowired
private UserService userService;
@Resource
private AccountMapper accountMapper;
@Override
public void rechargeOrderChange(String orderNo, Long userId, Long givePoint){
accountMapper.incrPoint(userId, givePoint);
User user = userService.getById(userId);
PointChangeLog pointChangeLog = new PointChangeLog();
pointChangeLog.setUserId(userId);
pointChangeLog.setUsercode(user.getUsercode());
pointChangeLog.setActionType(PointChangeLogActionTypeEnum.PAY.getCode());
pointChangeLog.setMessage("充值赠送"+givePoint+"积分");
pointChangeLog.setChangeValue(givePoint);
pointChangeLog.setIsAdmin(false);
pointChangeLog.setTraceLinkType(PointChangeTraceTypeEnum.PAY.getCode());
pointChangeLog.setTraceId(orderNo);
this.save(pointChangeLog);
}
@Override
public void rechargeOrderInviteChange(Long userId, Long givePoint, Long inviteUserId, String traceId){
accountMapper.incrPoint(userId, givePoint);
User user = userService.getById(userId);
User inviteUser = userService.getById(inviteUserId);
PointChangeLog pointChangeLog = new PointChangeLog();
pointChangeLog.setUserId(userId);
pointChangeLog.setUsercode(user.getUsercode());
pointChangeLog.setActionType(PointChangeLogActionTypeEnum.INVITE.getCode());
String message = String.format("从【%s】中充值分成新增%s积分", inviteUser.getNickname(), givePoint);
pointChangeLog.setMessage(message);
pointChangeLog.setTarUserId(inviteUser.getId());
pointChangeLog.setTarUsercode(inviteUser.getUsercode());
pointChangeLog.setTarName(inviteUser.getNickname());
pointChangeLog.setTarImg(inviteUser.getAvatar());
pointChangeLog.setChangeValue(givePoint);
pointChangeLog.setIsAdmin(false);
pointChangeLog.setTraceLinkType(PointChangeTraceTypeEnum.INVITE.getCode());
pointChangeLog.setTraceId(traceId);
this.save(pointChangeLog);
}
@Override
public void adminChange(Long userId, Long givePoint){
accountMapper.incrPoint(userId, givePoint);
User user = userService.getById(userId);
PointChangeLog pointChangeLog = new PointChangeLog();
pointChangeLog.setUserId(userId);
pointChangeLog.setUsercode(user.getUsercode());
pointChangeLog.setActionType(PointChangeLogActionTypeEnum.SYSTEM.getCode());
String message = String.format("系统调整:%s%s积分", givePoint > 0 ? "新增" : "减少", givePoint);
pointChangeLog.setMessage(message);
pointChangeLog.setChangeValue(givePoint);
pointChangeLog.setIsAdmin(true);
pointChangeLog.setTraceLinkType(PointChangeTraceTypeEnum.SYSTEM.getCode());
this.save(pointChangeLog);
}
@Override
public void adminInvite(Long userId, Long givePoint, Long inviteUserId, String traceId){
accountMapper.incrPoint(userId, givePoint);
User user = userService.getById(userId);
User inviteUser = userService.getById(inviteUserId);
PointChangeLog pointChangeLog = new PointChangeLog();
pointChangeLog.setUserId(userId);
pointChangeLog.setUsercode(user.getUsercode());
pointChangeLog.setActionType(PointChangeLogActionTypeEnum.SYSTEM.getCode());
String message = String.format("从【%s】的充值中获得%s积分", inviteUser.getNickname(), givePoint);
pointChangeLog.setMessage(message);
pointChangeLog.setTarUserId(inviteUser.getId());
pointChangeLog.setTarUsercode(inviteUser.getUsercode());
pointChangeLog.setTarName(inviteUser.getNickname());
pointChangeLog.setTarImg(inviteUser.getAvatar());
pointChangeLog.setChangeValue(givePoint);
pointChangeLog.setIsAdmin(true);
pointChangeLog.setTraceLinkType(PointChangeTraceTypeEnum.INVITE.getCode());
pointChangeLog.setTraceId(traceId);
this.save(pointChangeLog);
}
@Override
public PointChangeLog drawPoint(PrizeOnline prizeOnline, User user, Integer drawPoint, String traceId) {
PointChangeLog pointChangeLog = new PointChangeLog();
pointChangeLog.setActionType(PointChangeLogActionTypeEnum.USE.getCode());
pointChangeLog.setUserId(user.getId());
pointChangeLog.setUsercode(user.getUsercode());
String message = String.format("抽中【%s】", prizeOnline.getPrizeName());
pointChangeLog.setMessage(message);
pointChangeLog.setChangeValue(Long.valueOf(drawPoint));
pointChangeLog.setOperateIp(ServletUtils.getClientIP());
pointChangeLog.setIsAdmin(false);
pointChangeLog.setTraceLinkType(PointChangeTraceTypeEnum.USE.getCode());
pointChangeLog.setTraceId(traceId);
this.save(pointChangeLog);
return pointChangeLog;
}
}

View File

@@ -6,6 +6,7 @@ import com.ruoyi.cai.domain.*;
import com.ruoyi.cai.dto.AddPointAdminDto;
import com.ruoyi.cai.enums.ConsumeLogStatus;
import com.ruoyi.cai.enums.PointLogType;
import com.ruoyi.cai.lottery.PointManager;
import com.ruoyi.cai.manager.IdManager;
import com.ruoyi.cai.mapper.AccountMapper;
import com.ruoyi.cai.mapper.PointRecordLogMapper;
@@ -39,6 +40,8 @@ public class PointRecordLogServiceImpl extends ServiceImpl<PointRecordLogMapper,
private AccountMapper accountMapper;
@Autowired
private PointChangeLogService pointChangeLogService;
@Autowired
private PointManager pointManager;
@Override
@Transactional(rollbackFor = Exception.class)
@@ -53,7 +56,7 @@ public class PointRecordLogServiceImpl extends ServiceImpl<PointRecordLogMapper,
throw new ServiceException("开启分销情况下,无法调整积分为负数");
}
}
pointChangeLogService.adminChange(user.getId(),dto.getChangePoints());
pointManager.adminChange(user.getId(),dto.getChangePoints());
PointRecordLog pointLog = new PointRecordLog();
pointLog.setPoints(dto.getChangePoints());
pointLog.setSourceUserId(user.getId());
@@ -76,7 +79,7 @@ public class PointRecordLogServiceImpl extends ServiceImpl<PointRecordLogMapper,
pointLog.setStatus(ConsumeLogStatus.ALREADY.getCode());
if(pointLog.getOnePoints() >= 0 && pointLog.getOneUserId() != null && pointLog.getOneJoin()){
String traceId = IdManager.nextIdStr();
pointChangeLogService.adminInvite(pointLog.getOneUserId(),pointLog.getOnePoints(),pointLog.getSourceUserId(),traceId);
pointManager.adminInvite(pointLog.getOneUserId(),pointLog.getOnePoints(),pointLog.getSourceUserId(),traceId);
pointLog.setTraceId(traceId);
}
}else{
@@ -141,8 +144,9 @@ public class PointRecordLogServiceImpl extends ServiceImpl<PointRecordLogMapper,
if(!pointRecordLog.getOneJoin()){
return;
}
pointChangeLogService.rechargeOrderInviteChange(pointRecordLog.getOneUserId(),pointRecordLog.getOnePoints(),pointRecordLog.getSourceUserId(),traceId);
pointManager.rechargeOrderInviteChange(pointRecordLog.getOneUserId(),pointRecordLog.getOnePoints(),pointRecordLog.getSourceUserId(),traceId);
}
}

View File

@@ -3,11 +3,16 @@ package com.ruoyi.cai.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.cai.domain.PrizeOnline;
import com.ruoyi.cai.dto.commom.user.MinUser;
import com.ruoyi.cai.enums.GenderEnum;
import com.ruoyi.cai.enums.prize.PrizeTypeEnum;
import com.ruoyi.cai.mapper.PrizeOnlineMapper;
import com.ruoyi.cai.service.PrizeOnlineService;
import com.ruoyi.cai.service.UserService;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.helper.LoginHelper;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -25,6 +30,9 @@ import java.util.stream.Collectors;
@Service
public class PrizeOnlineServiceImpl extends ServiceImpl<PrizeOnlineMapper,PrizeOnline> implements PrizeOnlineService {
@Autowired
private UserService userService;
@Override
public List<PrizeOnline> selectPrizeOnlineList(Integer gender){
return this.list(Wrappers.lambdaQuery(PrizeOnline.class).eq(PrizeOnline::getGender, gender));
@@ -63,4 +71,16 @@ public class PrizeOnlineServiceImpl extends ServiceImpl<PrizeOnlineMapper,PrizeO
this.removeByIds(dbIds);
}
@Override
public List<PrizeOnline> prizeUp() {
Long userId = LoginHelper.getUserId();
MinUser minUser = userService.getMinUserById(userId);
GenderEnum genderEnum = GenderEnum.getByCode(minUser.getGender());
if(genderEnum == null || genderEnum == GenderEnum.NONE){
return new ArrayList<>();
}
List<PrizeOnline> prizeOnlines = this.selectPrizeOnlineList(genderEnum.getCode());
return prizeOnlines;
}
}

View File

@@ -0,0 +1,18 @@
package com.ruoyi.cai.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.cai.domain.PrizeWinningRecord;
import com.ruoyi.cai.mapper.PrizeWinningRecordMapper;
import com.ruoyi.cai.service.PrizeWinningRecordService;
import org.springframework.stereotype.Service;
/**
* 中奖记录Service业务层处理
*
* @author ruoyi
* @date 2026-01-08
*/
@Service
public class PrizeWinningRecordServiceImpl extends ServiceImpl<PrizeWinningRecordMapper,PrizeWinningRecord> implements PrizeWinningRecordService {
}

View File

@@ -14,6 +14,7 @@ import com.ruoyi.cai.dto.commom.consumer.RechargeConsumerResp;
import com.ruoyi.cai.enums.ConsumeLogType;
import com.ruoyi.cai.enums.account.AccountChangeCodeEnum;
import com.ruoyi.cai.enums.account.AccountTypeEnum;
import com.ruoyi.cai.lottery.PointManager;
import com.ruoyi.cai.manager.IdManager;
import com.ruoyi.cai.mapper.AccountMapper;
import com.ruoyi.cai.mapper.RechargeOrderMapper;
@@ -55,6 +56,8 @@ public class RechargeOrderServiceImpl extends ServiceImpl<RechargeOrderMapper,Re
private AccountMapper accountMapper;
@Autowired
private AccountChangeLogService accountChangeLogService;
@Autowired
private PointManager pointManager;
@Override
public RechargeOrder getByOrderNo(String orderNo){
@@ -127,7 +130,7 @@ public class RechargeOrderServiceImpl extends ServiceImpl<RechargeOrderMapper,Re
consumeLog.setType(ConsumeLogType.RECHARGE.getCode());
consumeLog.setAmount(rechargeOrder.getRechargeCoin());
accountService.recharge(consumeLog);
PointRecordLog pointRecordLog = accountService.rechargePoint(rechargeOrder, user); // 处理充值积分
PointRecordLog pointRecordLog = pointManager.rechargePoint(rechargeOrder, user); // 处理充值积分
RechargeConsumerResp resp = new RechargeConsumerResp();
resp.setSuccess(true);
resp.setConsumeLogId(consumeLog.getId());