123
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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> {
|
||||
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
|
||||
}
|
||||
@@ -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(); // 已经支付的收益
|
||||
// 补差价
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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());
|
||||
|
||||
Reference in New Issue
Block a user