This commit is contained in:
777
2025-11-29 17:37:28 +08:00
parent 7f9b7bc639
commit 52ea057ea1
15 changed files with 159 additions and 15 deletions

View File

@@ -36,6 +36,8 @@ public interface AccountService extends IService<Account> {
void recharge(ConsumeLog consumeLog);
void rechargeAdminIgnoreAccount(ConsumeLog consumeLog);
Page<AccountAdminVo> pageAdmin(PageQuery pageQuery, AccountAdminVo bo);
boolean distribution(ConsumeLog consumeLog, Long userId, Long amount, AccountChangeCodeEnum accountChangeEnum);

View File

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.cai.domain.RechargeOrder;
import com.ruoyi.cai.dto.AddRechargeOrderAdminDto;
import com.ruoyi.cai.dto.admin.vo.order.UpdateAdminRechargeOrderDTO;
import com.ruoyi.cai.dto.app.query.order.AddRechargeOrderDto;
import com.ruoyi.cai.dto.ConsumeResp;
import com.ruoyi.cai.dto.admin.vo.RechargeOrderAdminVo;
@@ -29,7 +30,7 @@ public interface RechargeOrderService extends IService<RechargeOrder> {
RechargeConsumerResp orderSuccess(String orderNo, Map<String,String> params, String appId, PayTypeEnum payTypeEnum);
RechargeOrder updateAdminRechargeOrder(AddRechargeOrderAdminDto dto);
UpdateAdminRechargeOrderDTO updateAdminRechargeOrder(AddRechargeOrderAdminDto dto);
void setFastPay(String orderNo);
}

View File

@@ -232,6 +232,22 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
consumeLogService.save(consumeLog);
}
@Transactional(rollbackFor = Exception.class)
@Override
public void rechargeAdminIgnoreAccount(ConsumeLog consumeLog){
log.info("开始管理員充值 consumeLog={}", JSON.toJSONString(consumeLog));
Long userId = consumeLog.getSourceUserId();
Long amount = consumeLog.getAmount();
User user = userService.getById(userId);
Account account = this.getByUserId(userId);
if(account == null || user == null){
throw new ServiceException("无效账号");
}
// 获取分销的比例和用户
consumeLogService.calculateInitFenxiao(consumeLog);
consumeLogService.save(consumeLog);
}
@Override
public Page<AccountAdminVo> pageAdmin(PageQuery pageQuery, AccountAdminVo bo) {

View File

@@ -7,14 +7,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.cai.domain.*;
import com.ruoyi.cai.dto.AddRechargeOrderAdminDto;
import com.ruoyi.cai.dto.admin.vo.order.UpdateAdminRechargeOrderDTO;
import com.ruoyi.cai.dto.app.query.order.AddRechargeOrderDto;
import com.ruoyi.cai.dto.ConsumeResp;
import com.ruoyi.cai.dto.admin.vo.RechargeOrderAdminVo;
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.enums.version.VersionPlatformEnum;
import com.ruoyi.cai.manager.IdManager;
import com.ruoyi.cai.mapper.AccountMapper;
import com.ruoyi.cai.mapper.RechargeOrderMapper;
@@ -142,7 +141,7 @@ public class RechargeOrderServiceImpl extends ServiceImpl<RechargeOrderMapper,Re
@Override
@Transactional(rollbackFor = Exception.class)
public RechargeOrder updateAdminRechargeOrder(AddRechargeOrderAdminDto dto){
public UpdateAdminRechargeOrderDTO updateAdminRechargeOrder(AddRechargeOrderAdminDto dto){
User user = userService.getByUserCode(dto.getUsercode());
if(user == null){
throw new ServiceException("用户不存在");
@@ -151,6 +150,14 @@ public class RechargeOrderServiceImpl extends ServiceImpl<RechargeOrderMapper,Re
if(accountTypeEnum == null){
throw new ServiceException("参数错误");
}
if(dto.isDistribution()){
if(dto.getRechargeCoin() <= 0){
throw new ServiceException("开启分销情况下,无法调整金额为负数");
}
if(accountTypeEnum != AccountTypeEnum.COIN){
throw new ServiceException("只有调整余额才能开启分销");
}
}
Long userId = user.getId();
Long traceId = IdManager.nextId();
RechargeOrder order = new RechargeOrder();
@@ -167,7 +174,16 @@ public class RechargeOrderServiceImpl extends ServiceImpl<RechargeOrderMapper,Re
order.setOperateIp(ServletUtils.getClientIP());
order.setAdmin(true);
order.setAdminId(LoginHelper.getUserId());
order.setRemark(dto.getRemark());
String remark = dto.getRemark();
if(dto.isDistribution()){
if(remark == null){
remark = "[参与分销]";
}else{
remark = "[参与分销]"+remark;
}
}
order.setRemark(remark);
order.setDistribution(dto.isDistribution());
order.setTraceId(traceId);
this.save(order);
Account account = accountService.getByUserId(userId);
@@ -200,9 +216,31 @@ public class RechargeOrderServiceImpl extends ServiceImpl<RechargeOrderMapper,Re
accountChangeLogService.saveLogAdmin(user.getId(),user.getUsercode(), AccountChangeCodeEnum.SYSTEM_INCOME_COIN_DECR,dto.getRechargeCoin(),traceId);
}
}
return order;
UpdateAdminRechargeOrderDTO result = new UpdateAdminRechargeOrderDTO();
result.setRechargeOrder(order);
// 分销逻辑
if(dto.isDistribution()){
ConsumeLog consumeLog = new ConsumeLog();
consumeLog.init(user,null);
consumeLog.setTraceId(traceId);
consumeLog.setType(ConsumeLogType.RECHARGE.getCode());
consumeLog.setAmount(order.getRechargeCoin());
accountService.rechargeAdminIgnoreAccount(consumeLog);
RechargeConsumerResp resp = new RechargeConsumerResp();
resp.setSuccess(true);
resp.setConsumeLogId(consumeLog.getId());
resp.setUserId(user.getId());
resp.setUser(user);
resp.setTraceId(traceId);
resp.setPrice(order.getPrice());
resp.setRechargeCoin(order.getRechargeCoin());
resp.setOrderNo(order.getOrderNo());
result.setResp(resp);
}
return result;
}
@Override
public void setFastPay(String orderNo) {
if(orderNo != null){