This commit is contained in:
张良(004796)
2024-01-19 17:59:01 +08:00
parent a98d191bb4
commit 87ed8dbfa7
16 changed files with 105 additions and 293 deletions

View File

@@ -2,6 +2,7 @@ package com.ruoyi.cai.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.cai.domain.AccountChangeLog;
import com.ruoyi.cai.domain.Gift;
import com.ruoyi.cai.enums.account.AccountChangeCodeEnum;
/**
@@ -12,9 +13,15 @@ import com.ruoyi.cai.enums.account.AccountChangeCodeEnum;
*/
public interface AccountChangeLogService extends IService<AccountChangeLog> {
AccountChangeLog getLogNoAdmin(Long userId, String usercode, AccountChangeCodeEnum change, Long price, Long traceId);
AccountChangeLog saveLogNoAdmin(Long userId, String usercode, AccountChangeCodeEnum change, Long price, Long traceId);
AccountChangeLog saveLog(Long userId,String usercode, AccountChangeCodeEnum change, Long price, Long traceId,Integer admin);
AccountChangeLog saveLogNoAdmin(Long userId, String usercode, AccountChangeCodeEnum change, Long price, Long traceId
, Long tarUserId);
AccountChangeLog saveLogAdmin(Long userId,String usercode, AccountChangeCodeEnum change, Long price,Long traceId);
AccountChangeLog saveLogNoAdmin(Long userId, String usercode, AccountChangeCodeEnum change, Long price, Long traceId
, Long tarUserId, Gift gift);
AccountChangeLog saveLogAdmin(Long userId, String usercode, AccountChangeCodeEnum change, Long price, Long traceId);
}

View File

@@ -1,15 +0,0 @@
package com.ruoyi.cai.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.cai.domain.AccountDetail;
/**
* 账户明细Service接口
*
* @author 77
* @date 2023-12-22
*/
public interface AccountDetailService extends IService<AccountDetail> {
}

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.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;
@@ -12,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接口
@@ -24,7 +24,9 @@ public interface AccountService extends IService<Account> {
Account getByUserId(Long userId);
ConsumeLog decr(ConsumeLog log, ConsumeLogType consumeLogType);
ConsumeLog guardDecr(ConsumeLog log, ConsumeLogType consumeLogType);
ConsumeLog giftDecr(ConsumeLog consumeLog, ConsumeLogType consumeLogType, Gift gift);
Long imDesc(User fromUser, User toUser, Long price);
@@ -36,7 +38,7 @@ public interface AccountService extends IService<Account> {
Page<AccountAdminVo> pageAdmin(PageQuery pageQuery, AccountAdminVo bo);
void distribution(Long userId, Long amount, AccountChangeCodeEnum accountChangeEnum, Long traceId);
void distribution(ConsumeLog consumeLog,Long userId, Long amount, AccountChangeCodeEnum accountChangeEnum);
WithholdingFeeUserResp withholdingFeeUser(Long userId, Long price);

View File

@@ -2,6 +2,7 @@ package com.ruoyi.cai.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.cai.domain.AccountChangeLog;
import com.ruoyi.cai.domain.Gift;
import com.ruoyi.cai.enums.account.AccountChangeCodeEnum;
import com.ruoyi.cai.mapper.AccountChangeLogMapper;
import com.ruoyi.cai.service.AccountChangeLogService;
@@ -16,33 +17,56 @@ import org.springframework.stereotype.Service;
@Service
public class AccountChangeLogServiceImpl extends ServiceImpl<AccountChangeLogMapper,AccountChangeLog> implements AccountChangeLogService {
@Override
public AccountChangeLog saveLogNoAdmin(Long userId, String usercode, AccountChangeCodeEnum change, Long price, Long traceId){
return this.saveLog(userId,usercode,change,price,traceId,0);
public AccountChangeLog getLogNoAdmin(Long userId, String usercode, AccountChangeCodeEnum change, Long price, Long traceId){
return this.getAccountChangeLog(userId, usercode, change, price, traceId, 0);
}
@Override
public AccountChangeLog saveLog(Long userId,String usercode, AccountChangeCodeEnum change, Long price, Long traceId,Integer admin){
public AccountChangeLog saveLogNoAdmin(Long userId, String usercode, AccountChangeCodeEnum change, Long price, Long traceId){
AccountChangeLog changeLog = this.getAccountChangeLog(userId, usercode, change, price, traceId, 0);
this.save(changeLog);
return changeLog;
}
@Override
public AccountChangeLog saveLogNoAdmin(Long userId, String usercode, AccountChangeCodeEnum change, Long price, Long traceId
,Long tarUserId){
AccountChangeLog changeLog = this.getAccountChangeLog(userId, usercode, change, price, traceId, 0);
changeLog.setTarUserId(userId);
this.save(changeLog);
return changeLog;
}
@Override
public AccountChangeLog saveLogNoAdmin(Long userId, String usercode, AccountChangeCodeEnum change, Long price, Long traceId
, Long tarUserId, Gift gift){
AccountChangeLog changeLog = this.getAccountChangeLog(userId, usercode, change, price, traceId, 0);
changeLog.setTarUserId(userId);
if(gift != null){
changeLog.setTarParam(gift.getId()+"");
changeLog.setTarImg(gift.getImg());
}
this.save(changeLog);
return changeLog;
}
private AccountChangeLog getAccountChangeLog(Long userId, String usercode, AccountChangeCodeEnum change, Long price, Long traceId, Integer admin){
AccountChangeLog log = new AccountChangeLog();
log.init(change);
log.setUserId(userId);
log.setUsercode(usercode);
log.setTraceId(traceId);
log.setAccountType(change.getAccountType().getCode());
log.setCateId(change.getCate().getCode());
log.setCateAppName(change.getText());
log.setCateAdminName(change.getText());
log.setTraceLinkType(change.getCate().name());
log.setRemark(change.getDesc());
log.setChangeValue(price);
log.setIsAdmin(admin);
this.save(log);
return log;
}
@Override
public AccountChangeLog saveLogAdmin(Long userId, String usercode, AccountChangeCodeEnum change, Long price,Long traceId) {
return this.saveLog(userId,usercode,change,price,traceId,1);
AccountChangeLog changeLog = this.getAccountChangeLog(userId, usercode, change, price, traceId, 1);
this.save(changeLog);
return changeLog;
}

View File

@@ -1,19 +0,0 @@
package com.ruoyi.cai.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.cai.domain.AccountDetail;
import com.ruoyi.cai.mapper.AccountDetailMapper;
import com.ruoyi.cai.service.AccountDetailService;
import org.springframework.stereotype.Service;
/**
* 账户明细Service业务层处理
*
* @author 77
* @date 2023-12-22
*/
@Service
public class AccountDetailServiceImpl extends ServiceImpl<AccountDetailMapper, AccountDetail> implements AccountDetailService {
}

View File

@@ -6,10 +6,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.cai.config.CaiProperties;
import com.ruoyi.cai.domain.Account;
import com.ruoyi.cai.domain.ConsumeLog;
import com.ruoyi.cai.domain.User;
import com.ruoyi.cai.domain.UserCall;
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;
@@ -65,11 +62,16 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
@Override
@Transactional(rollbackFor = Exception.class)
public ConsumeLog decr(ConsumeLog consumeLog, ConsumeLogType consumeLogType) {
public ConsumeLog guardDecr(ConsumeLog consumeLog, ConsumeLogType consumeLogType){
return giftDecr(consumeLog,consumeLogType,null);
}
@Override
@Transactional(rollbackFor = Exception.class)
public ConsumeLog giftDecr(ConsumeLog consumeLog, ConsumeLogType consumeLogType, Gift gift) {
log.info("开始扣费 consumeLog={}", JSON.toJSONString(consumeLog));
Long userId = consumeLog.getSourceUserId();
Long amount = consumeLog.getAmount();
Account account = this.getByUserId(userId);
long totalCoin = account.getIncomeCoin() + account.getCoin();
if(totalCoin < amount){
@@ -105,16 +107,19 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
// 记录消费方的流水
if(coin != 0){
AccountChangeCodeEnum change = ConsumeLogType.getSourceChange(consumeLogType, AccountTypeEnum.COIN);
accountChangeLogService.saveLogNoAdmin(userId,consumeLog.getSourceUsercode(), change, coin,consumeLog.getTraceId());
accountChangeLogService.saveLogNoAdmin(userId, consumeLog.getSourceUsercode(), change, coin, consumeLog.getTraceId()
,consumeLog.getTargetUserId(),gift);
}
if(incomeCoin != 0){
AccountChangeCodeEnum change = ConsumeLogType.getSourceChange(consumeLogType, AccountTypeEnum.INCOME_COIN);
accountChangeLogService.saveLogNoAdmin(userId,consumeLog.getSourceUsercode(), change,incomeCoin,consumeLog.getTraceId());
accountChangeLogService.saveLogNoAdmin(userId, consumeLog.getSourceUsercode(), change, coin, consumeLog.getTraceId()
,consumeLog.getTargetUserId(),gift);
}
// 记录接收方的流水
if(targetUserId != null){
AccountChangeCodeEnum change = ConsumeLogType.getTargetChange(consumeLogType);
accountChangeLogService.saveLogNoAdmin(targetUserId,consumeLog.getTargetUsercode(), change,consumeLog.getAnchorAmount(),consumeLog.getTraceId());
accountChangeLogService.saveLogNoAdmin(userId, consumeLog.getSourceUsercode(), change, coin, consumeLog.getTraceId()
,consumeLog.getSourceUserId(),gift);
}
// 获取分销的比例和用户
consumeLogService.calculateInitFenxiao(consumeLog);
@@ -158,14 +163,14 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
Long tractId = IdManager.nextId();
// 记录消费方的流水
if(coin != 0){
accountChangeLogService.saveLogNoAdmin(fromUserId,fromUser.getUsercode(), AccountChangeCodeEnum.IM_COIN_OUT, coin, tractId);
accountChangeLogService.saveLogNoAdmin(fromUser.getId(),fromUser.getUsercode(), AccountChangeCodeEnum.IM_COIN_OUT, coin, tractId, toUser.getId());
}
if(incomeCoin != 0){
accountChangeLogService.saveLogNoAdmin(fromUserId,fromUser.getUsercode(), AccountChangeCodeEnum.IM_INCOME_COIN_OUT,incomeCoin,tractId);
accountChangeLogService.saveLogNoAdmin(fromUser.getId(),fromUser.getUsercode(), AccountChangeCodeEnum.IM_INCOME_COIN_OUT,incomeCoin,tractId,toUser.getId());
}
// 记录接收方的流水
if(anchorAmount != 0){
accountChangeLogService.saveLogNoAdmin(toUser.getId(),toUser.getUsercode(), AccountChangeCodeEnum.IM_INCOME,anchorAmount,tractId);
accountChangeLogService.saveLogNoAdmin(toUser.getId(),toUser.getUsercode(), AccountChangeCodeEnum.IM_INCOME,anchorAmount,tractId,fromUser.getId());
}
return tractId;
}
@@ -224,11 +229,14 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
return baseMapper.pageAdmin(pageQuery.build(),bo);
}
@Autowired
private GiftService giftService;
/**
* 分销
*/
@Override
public void distribution(Long userId, Long amount, AccountChangeCodeEnum accountChangeEnum,Long traceId) {
public void distribution(ConsumeLog consumeLog,Long userId, Long amount, AccountChangeCodeEnum accountChangeEnum) {
User user = userService.getById(userId);
Account account = this.getByUserId(userId);
if(account == null || user == null){
@@ -240,7 +248,18 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
return;
}
baseMapper.incsCoin(userId, amount);
accountChangeLogService.saveLogNoAdmin(userId,user.getUsercode(), accountChangeEnum,amount,traceId);
if(ConsumeLogType.GIFT.getCode().equals(consumeLog.getType())){ // 礼物
Gift gift = giftService.getById(consumeLog.getBusinessParam());
accountChangeLogService.saveLogNoAdmin(userId,user.getUsercode(), accountChangeEnum,amount,consumeLog.getTraceId(),
consumeLog.getTargetUserId(),gift);
}else if(ConsumeLogType.VIDEO.getCode().equals(consumeLog.getType())
|| ConsumeLogType.GUARD.getCode().equals(consumeLog.getType())){ // 视频和守护
accountChangeLogService.saveLogNoAdmin(userId,user.getUsercode(), accountChangeEnum,amount,consumeLog.getTraceId(),
consumeLog.getTargetUserId());
}else if(ConsumeLogType.RECHARGE.getCode().equals(consumeLog.getType())){ // 充值
accountChangeLogService.saveLogNoAdmin(userId,user.getUsercode(), accountChangeEnum,amount,consumeLog.getTraceId(),
consumeLog.getSourceUserId());
}
}
/**
@@ -299,6 +318,9 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
Long callTime = roomService.getCallTime(room);
// 本次支付金额
long totalAmount = callPrice * ((callTime / 60) + 1); // 本次需要支付的金额
if(callTime % 60 == 0){
totalAmount = callPrice * (callTime / 60);
}
Long payCoin = roomData.getPayCoin(); // 已经支付的余额
Long payIncome = roomData.getPayIncome(); // 已经支付的收益
// 补差价

View File

@@ -94,13 +94,13 @@ public class ConsumeLogServiceImpl extends ServiceImpl<ConsumeLogMapper, Consume
if(consumer.getOneUserId() != null && BooleanUtils.isTrue(consumer.getOneJoin())
&& consumer.getOneAmount() > 0){
AccountChangeCodeEnum changeCodeEnum = ConsumeLogType.getOneInviteChange(code);
accountService.distribution(consumer.getOneUserId(),consumer.getOneAmount(),changeCodeEnum,consumer.getTraceId());
accountService.distribution(consumer,consumer.getOneUserId(),consumer.getOneAmount(),changeCodeEnum);
}
// 计算工会
if(consumer.getUnionUserId() != null && BooleanUtils.isTrue(consumer.getUnionJoin())
&& consumer.getUnionAmount() > 0){
AccountChangeCodeEnum changeCodeEnum = ConsumeLogType.getUnionChange(code);
accountService.distribution(consumer.getUnionUserId(),consumer.getUnionAmount(),changeCodeEnum,consumer.getTraceId());
accountService.distribution(consumer,consumer.getUnionUserId(),consumer.getUnionAmount(),changeCodeEnum);
}
}catch (Exception e){
log.error("分销发生未知错误,请联系开发检查!",e);

View File

@@ -112,7 +112,7 @@ public class GuardTotalServiceImpl extends ServiceImpl<GuardTotalMapper, GuardTo
consumeLog.setType(ConsumeLogType.GUARD.getCode());
consumeLog.setAmount(guardValue);
consumeLog.setTargetRate(anchor.getGuardRate());
consumeLog = accountService.decr(consumeLog, ConsumeLogType.GUARD);
consumeLog = accountService.guardDecr(consumeLog, ConsumeLogType.GUARD);
resp.setConsumeLogId(consumeLog.getId());
GuardLog guardLog = new GuardLog();
guardLog.setFromUserId(fromUserId);

View File

@@ -77,7 +77,7 @@ public class UserGiftServiceImpl extends ServiceImpl<UserGiftMapper, UserGift> i
consumeLog.setType(ConsumeLogType.GIFT.getCode());
consumeLog.setAmount(giftAmount);
consumeLog.setTargetRate(anchor.getGiftRate());
consumeLog = accountService.decr(consumeLog, ConsumeLogType.GIFT);
consumeLog = accountService.giftDecr(consumeLog, ConsumeLogType.GIFT, gift);
resp.setConsumeLogId(consumeLog.getId());
UserGift userGift = new UserGift();
userGift.setType(query.getType());