nnnn
This commit is contained in:
@@ -2,10 +2,7 @@ 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.Account;
|
||||
import com.ruoyi.cai.domain.ConsumeLog;
|
||||
import com.ruoyi.cai.domain.Gift;
|
||||
import com.ruoyi.cai.domain.User;
|
||||
import com.ruoyi.cai.domain.*;
|
||||
import com.ruoyi.cai.dto.admin.vo.AccountAdminVo;
|
||||
import com.ruoyi.cai.dto.video.VideoSettleResp;
|
||||
import com.ruoyi.cai.dto.video.WithholdingFeeUserResp;
|
||||
@@ -34,6 +31,8 @@ public interface AccountService extends IService<Account> {
|
||||
|
||||
void withdrawFail(Long userId, Long incomeCoin, Long traceId);
|
||||
|
||||
PointRecordLog rechargePoint(RechargeOrder rechargeOrder, User user);
|
||||
|
||||
void recharge(ConsumeLog consumeLog);
|
||||
|
||||
void rechargeAdminIgnoreAccount(ConsumeLog consumeLog);
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.ruoyi.cai.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.ruoyi.cai.domain.PointRecordLog;
|
||||
import com.ruoyi.cai.domain.RechargeOrder;
|
||||
import com.ruoyi.cai.domain.User;
|
||||
import com.ruoyi.cai.dto.AddPointAdminDto;
|
||||
|
||||
/**
|
||||
* 用户积分分销Service接口
|
||||
*
|
||||
* @author 77
|
||||
* @date 2025-12-03
|
||||
*/
|
||||
public interface PointRecordLogService extends IService<PointRecordLog> {
|
||||
|
||||
void adminUpdatePoint(AddPointAdminDto dto);
|
||||
|
||||
PointRecordLog initOrder(RechargeOrder order, User user);
|
||||
|
||||
void dealCalculateSales(Long pointLogId);
|
||||
}
|
||||
@@ -9,7 +9,9 @@ import com.ruoyi.cai.domain.*;
|
||||
import com.ruoyi.cai.dto.admin.vo.AccountAdminVo;
|
||||
import com.ruoyi.cai.dto.video.VideoSettleResp;
|
||||
import com.ruoyi.cai.dto.video.WithholdingFeeUserResp;
|
||||
import com.ruoyi.cai.enums.ConsumeLogStatus;
|
||||
import com.ruoyi.cai.enums.ConsumeLogType;
|
||||
import com.ruoyi.cai.enums.PointLogType;
|
||||
import com.ruoyi.cai.enums.SystemConfigEnum;
|
||||
import com.ruoyi.cai.enums.account.AccountChangeCodeEnum;
|
||||
import com.ruoyi.cai.enums.account.AccountTypeEnum;
|
||||
@@ -33,6 +35,7 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 用户账户Service业务层处理
|
||||
@@ -214,6 +217,21 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
|
||||
accountChangeLogService.saveLogNoAdmin(user.getId(),user.getUsercode(), AccountChangeCodeEnum.WITHDRAW_FAIL,incomeCoin,traceId);
|
||||
}
|
||||
|
||||
@Autowired
|
||||
private PointRecordLogService pointRecordLogService;
|
||||
|
||||
@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());
|
||||
PointRecordLog pointRecordLog = pointRecordLogService.initOrder(rechargeOrder, user);
|
||||
return pointRecordLog;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void recharge(ConsumeLog consumeLog){
|
||||
|
||||
@@ -0,0 +1,137 @@
|
||||
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.*;
|
||||
import com.ruoyi.cai.dto.AddPointAdminDto;
|
||||
import com.ruoyi.cai.enums.ConsumeLogStatus;
|
||||
import com.ruoyi.cai.enums.PointLogType;
|
||||
import com.ruoyi.cai.mapper.AccountMapper;
|
||||
import com.ruoyi.cai.mapper.PointRecordLogMapper;
|
||||
import com.ruoyi.cai.service.PointRecordLogService;
|
||||
import com.ruoyi.cai.service.UserInfoService;
|
||||
import com.ruoyi.cai.service.UserInviteService;
|
||||
import com.ruoyi.cai.service.UserService;
|
||||
import com.ruoyi.cai.util.CaiNumUtil;
|
||||
import com.ruoyi.common.exception.ServiceException;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 用户积分分销Service业务层处理
|
||||
*
|
||||
* @author 77
|
||||
* @date 2025-12-03
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class PointRecordLogServiceImpl extends ServiceImpl<PointRecordLogMapper,PointRecordLog> implements PointRecordLogService {
|
||||
@Autowired
|
||||
private UserInviteService userInviteService;
|
||||
@Autowired
|
||||
private UserService userService;
|
||||
@Autowired
|
||||
private UserInfoService userInfoService;
|
||||
@Resource
|
||||
private AccountMapper accountMapper;
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void adminUpdatePoint(AddPointAdminDto dto){
|
||||
String usercode = dto.getUsercode();
|
||||
User user = userService.getByUserCode(usercode);
|
||||
if(user == null){
|
||||
throw new ServiceException("用户不存在");
|
||||
}
|
||||
if(dto.isDistribution()){
|
||||
if(dto.getPoint() <= 0){
|
||||
throw new ServiceException("开启分销情况下,无法调整积分为负数");
|
||||
}
|
||||
}
|
||||
accountMapper.incrPoint(user.getId(), dto.getPoint());
|
||||
PointRecordLog pointLog = new PointRecordLog();
|
||||
pointLog.setPoints(dto.getPoint());
|
||||
pointLog.setSourceUserId(user.getId());
|
||||
pointLog.setSourceUsercode(user.getUsercode());
|
||||
pointLog.setSourcePhone(user.getMobile());
|
||||
UserInvite userInvite = userInviteService.getByUserId(user.getId());
|
||||
if(userInvite != null){
|
||||
User oneUser = userService.getById(userInvite.getInviteId());
|
||||
if(oneUser != null && oneUser.getStatus() == 0){
|
||||
UserInfo userInfo = userInfoService.getByUserId(userInvite.getUserId());
|
||||
pointLog.setOneRate(userInfo.getPointRate());
|
||||
pointLog.setOneUserId(oneUser.getId());
|
||||
pointLog.setOneUsercode(oneUser.getUsercode());
|
||||
pointLog.setOnePhone(oneUser.getMobile());
|
||||
pointLog.setOnePoints(CaiNumUtil.coin(pointLog.getPoints(),pointLog.getOneRate()));
|
||||
}
|
||||
}
|
||||
if(dto.isDistribution()){ // 需要分销,直接分销
|
||||
pointLog.setStatus(ConsumeLogStatus.ALREADY.getCode());
|
||||
if(pointLog.getOnePoints() >= 0 && pointLog.getOneUserId() != null){
|
||||
accountMapper.incrPoint(pointLog.getOneUserId(), pointLog.getOnePoints());
|
||||
}
|
||||
}else{
|
||||
pointLog.setStatus(ConsumeLogStatus.NO.getCode());
|
||||
}
|
||||
pointLog.setSourceType(PointLogType.ADMIN.getCode());
|
||||
pointLog.setRemark(dto.getRemark());
|
||||
pointLog.setCreateTime(LocalDateTime.now());
|
||||
this.save(pointLog);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PointRecordLog initOrder(RechargeOrder rechargeOrder, User user){
|
||||
PointRecordLog log = new PointRecordLog();
|
||||
log.setPoints(rechargeOrder.getGivePoint());
|
||||
log.setSourceUserId(user.getId());
|
||||
log.setSourceUsercode(user.getUsercode());
|
||||
log.setSourcePhone(user.getMobile());
|
||||
UserInvite userInvite = userInviteService.getByUserId(user.getId());
|
||||
if(userInvite != null){
|
||||
User oneUser = userService.getById(userInvite.getInviteId());
|
||||
if(oneUser != null && oneUser.getStatus() == 0){
|
||||
UserInfo userInfo = userInfoService.getByUserId(userInvite.getUserId());
|
||||
log.setOneRate(userInfo.getPointRate());
|
||||
log.setOneUserId(oneUser.getId());
|
||||
log.setOneUsercode(oneUser.getUsercode());
|
||||
log.setOnePhone(oneUser.getMobile());
|
||||
log.setOnePoints(CaiNumUtil.coin(log.getPoints(),log.getOneRate()));
|
||||
}
|
||||
}
|
||||
log.setStatus(ConsumeLogStatus.READY.getCode());
|
||||
log.setSourceType(PointLogType.ORDER.getCode());
|
||||
log.setSourceId(rechargeOrder.getOrderNo());
|
||||
log.setCreateTime(LocalDateTime.now());
|
||||
this.save(log);
|
||||
return log;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void dealCalculateSales(Long pointLogId) {
|
||||
PointRecordLog pointRecordLog = this.getById(pointLogId);
|
||||
if(pointRecordLog == null){
|
||||
return;
|
||||
}
|
||||
if(!ConsumeLogStatus.READY.getCode().equals(pointRecordLog.getStatus())){
|
||||
return;
|
||||
}
|
||||
boolean update = this.update(Wrappers.lambdaUpdate(PointRecordLog.class)
|
||||
.eq(PointRecordLog::getId, pointLogId)
|
||||
.eq(PointRecordLog::getStatus, ConsumeLogStatus.READY.getCode())
|
||||
.set(PointRecordLog::getStatus, ConsumeLogStatus.ALREADY.getCode()));
|
||||
if(!update){
|
||||
return;
|
||||
}
|
||||
if(pointRecordLog.getOneUserId() == null || pointRecordLog.getPoints() <= 0){
|
||||
return;
|
||||
}
|
||||
accountMapper.incrPoint(pointRecordLog.getOneUserId(), pointRecordLog.getOnePoints());
|
||||
}
|
||||
}
|
||||
@@ -127,9 +127,13 @@ 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);
|
||||
RechargeConsumerResp resp = new RechargeConsumerResp();
|
||||
resp.setSuccess(true);
|
||||
resp.setConsumeLogId(consumeLog.getId());
|
||||
if(pointRecordLog != null){
|
||||
resp.setPointLogId(pointRecordLog.getId());
|
||||
}
|
||||
resp.setUserId(user.getId());
|
||||
resp.setUser(user);
|
||||
resp.setTraceId(traceId);
|
||||
|
||||
Reference in New Issue
Block a user