This commit is contained in:
张良(004796)
2024-01-26 17:10:37 +08:00
parent 747bc38a28
commit 8531cf8c12
40 changed files with 385 additions and 315 deletions

View File

@@ -24,6 +24,7 @@ public interface AccountCashService extends IService<AccountCash> {
void fail(Long id);
ExportBatchAuditVo batchAudit(List<AccountCashAdminVo> result);
ExportBatchAuditVo batchAudit(List<Long> result);
void success(Long id);
}

View File

@@ -7,6 +7,7 @@ import com.ruoyi.cai.dto.AddRechargeOrderAdminDto;
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.pay.PayTypeEnum;
import com.ruoyi.common.core.domain.PageQuery;
@@ -26,7 +27,7 @@ public interface RechargeOrderService extends IService<RechargeOrder> {
RechargeOrder addRechargeOrder(AddRechargeOrderDto addRechargeOrderDto);
ConsumeResp orderSuccess(String orderNo, Map<String,String> params, String appId, PayTypeEnum payTypeEnum);
RechargeConsumerResp orderSuccess(String orderNo, Map<String,String> params, String appId, PayTypeEnum payTypeEnum);
RechargeOrder updateAdminRechargeOrder(AddRechargeOrderAdminDto dto);
}

View File

@@ -3,8 +3,9 @@ package com.ruoyi.cai.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.cai.domain.UserGift;
import com.ruoyi.cai.dto.ConsumeResp;
import com.ruoyi.cai.dto.app.query.GiveGiftRes;
import com.ruoyi.cai.dto.app.query.GiveGiftReq;
import com.ruoyi.cai.dto.app.vo.index.UserGiftIndexVo;
import com.ruoyi.cai.dto.commom.consumer.GiftConsumerResp;
import java.util.List;
@@ -18,6 +19,6 @@ public interface UserGiftService extends IService<UserGift> {
List<UserGiftIndexVo> selectGiftList(Long userId);
ConsumeResp giveGift(GiveGiftRes query);
GiftConsumerResp giveGift(GiveGiftReq query);
}

View File

@@ -13,6 +13,8 @@ import com.ruoyi.cai.enums.AccountCashStatusEnum;
import com.ruoyi.cai.enums.AuditStatusEnum;
import com.ruoyi.cai.manager.IdManager;
import com.ruoyi.cai.mapper.AccountCashMapper;
import com.ruoyi.cai.notice.YunxinHttpService;
import com.ruoyi.cai.notice.dto.CashSuccessSendMesDTO;
import com.ruoyi.cai.service.AccountCashService;
import com.ruoyi.cai.service.AccountBankcardService;
import com.ruoyi.cai.service.AccountService;
@@ -20,11 +22,13 @@ import com.ruoyi.cai.service.WithdrawExchangeService;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.ServletUtils;
import io.undertow.util.AttachmentList;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
@Service
@@ -35,6 +39,8 @@ public class AccountCashServiceImpl extends ServiceImpl<AccountCashMapper, Accou
private AccountService accountService;
@Autowired
private WithdrawExchangeService withdrawExchangeService;
@Autowired
private YunxinHttpService yunxinHttpService;
@Override
public void withdraw(WithdrawReq res) {
AccountBankcard one = accountBankcardService.getOne(Wrappers.lambdaQuery(AccountBankcard.class)
@@ -84,31 +90,66 @@ public class AccountCashServiceImpl extends ServiceImpl<AccountCashMapper, Accou
return;
}
accountService.withdrawFail(accountCash.getUserId(),accountCash.getWithdrawCoin(),accountCash.getTraceId());
yunxinHttpService.cashFailSendMessage(accountCash.getUserId(),accountCash.getCreateTime(),accountCash.getCashMoney(),
accountCash.getVerifyRemark());
}
@Override
public ExportBatchAuditVo batchAudit(List<AccountCashAdminVo> result) {
public void success(Long id) {
boolean update = this.update(Wrappers.lambdaUpdate(AccountCash.class)
.set(AccountCash::getVerifyTime, LocalDateTime.now())
.set(AccountCash::getOperateIp, ServletUtils.getClientIP())
.set(AccountCash::getStatus, AccountCashStatusEnum.SUCCESS.getCode())
.eq(AccountCash::getStatus, AccountCashStatusEnum.READY.getCode())
.eq(AccountCash::getId, id));
if(!update){
return;
}
AccountCash accountCash = this.getById(id);
if(accountCash == null){
return;
}
// 发送通知
yunxinHttpService.cashSuccessSendMessage(accountCash.getUserId(),
accountCash.getCreateTime(),
accountCash.getCashMoney(),accountCash.getRealCashMoney(),
accountCash.getCardAccount(),accountCash.getVerifyTime());
}
@Override
public ExportBatchAuditVo batchAudit(List<Long> result) {
ExportBatchAuditVo res = new ExportBatchAuditVo();
Integer allNum = result.size();
Integer successNum = 0;
Integer ignoreNum = 0;
Integer failNum = 0;
for (AccountCashAdminVo vo : result) {
List<CashSuccessSendMesDTO> dtoList = new ArrayList<>();
for (Long id : result) {
try {
AccountCash cash = this.getById(vo.getId());
if(!AuditStatusEnum.AUDITING.getCode().equals(cash.getStatus())){
AccountCash cash = this.getById(id);
if(cash == null || !AuditStatusEnum.AUDITING.getCode().equals(cash.getStatus())){
ignoreNum++;
continue;
}
LocalDateTime now = LocalDateTime.now();
boolean update = this.update(Wrappers.lambdaUpdate(AccountCash.class)
.eq(AccountCash::getId, vo.getId())
.eq(AccountCash::getId, id)
.eq(AccountCash::getStatus, AuditStatusEnum.AUDITING.getCode())
.set(AccountCash::getVerifyTime, LocalDateTime.now())
.set(AccountCash::getVerifyTime, now)
.set(AccountCash::getOperateIp, ServletUtils.getClientIP())
.set(AccountCash::getStatus, AccountCashStatusEnum.SUCCESS.getCode()));
if(update){
successNum++;
CashSuccessSendMesDTO dto = new CashSuccessSendMesDTO();
dto.setToUid(cash.getUserId());
dto.setCashTime(cash.getCreateTime());
dto.setCashMoney(cash.getCashMoney());
dto.setRealCashMonty(cash.getRealCashMoney());
dto.setCardAccount(cash.getCardAccount());
dto.setVerifyTime(now);
dtoList.add(dto);
}else{
ignoreNum++;
}
@@ -121,8 +162,12 @@ public class AccountCashServiceImpl extends ServiceImpl<AccountCashMapper, Accou
res.setIgnoreNum(ignoreNum);
res.setAllNum(allNum);
res.setFailNum(failNum);
if(!dtoList.isEmpty()){
yunxinHttpService.batchCashSuccessSendMessage(dtoList);
}
return res;
}
}

View File

@@ -18,7 +18,7 @@ import com.ruoyi.cai.manager.IdManager;
import com.ruoyi.cai.manager.SystemConfigManager;
import com.ruoyi.cai.mapper.AccountMapper;
import com.ruoyi.cai.service.*;
import com.ruoyi.cai.util.NumCaUtil;
import com.ruoyi.cai.util.CaiNumUtil;
import com.ruoyi.cai.ws.bean.Room;
import com.ruoyi.cai.ws.bean.RoomData;
import com.ruoyi.cai.ws.bean.UserData;
@@ -100,7 +100,7 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
// 开始处理 接收方的费用
Long targetUserId = consumeLog.getTargetUserId();
if(targetUserId != null){
Long anchorAmount = NumCaUtil.coin(amount,consumeLog.getTargetRate());
Long anchorAmount = CaiNumUtil.coin(amount,consumeLog.getTargetRate());
consumeLog.setAnchorAmount(anchorAmount);
baseMapper.incsIncomeCoin(targetUserId,anchorAmount);
}
@@ -158,7 +158,7 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
}
// 开始处理 接收方的费用
BigDecimal imRate = systemConfigManager.getSystemConfigOfBigDecimal(SystemConfigEnum.DAY_MAX_DYNAMIC);
Long anchorAmount = NumCaUtil.coin(price,imRate);
Long anchorAmount = CaiNumUtil.coin(price,imRate);
baseMapper.incsIncomeCoin(toUser.getId(),anchorAmount);
Long tractId = IdManager.nextId();
// 记录消费方的流水
@@ -372,7 +372,7 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
}
}
Long amountReal = payCoin + payIncome; // 实际支付的金额
Long anchorAmount = NumCaUtil.coin(amountReal,roomData.getVideoDivide());
Long anchorAmount = CaiNumUtil.coin(amountReal,roomData.getVideoDivide());
User fromUser = userService.getById(userCall.getFromUid());
User toUser = userService.getById(userCall.getToUid());

View File

@@ -8,9 +8,10 @@ import com.ruoyi.cai.enums.ConsumeLogStatus;
import com.ruoyi.cai.enums.ConsumeLogType;
import com.ruoyi.cai.enums.account.AccountChangeCodeEnum;
import com.ruoyi.cai.mapper.ConsumeLogMapper;
import com.ruoyi.cai.notice.YunxinHttpService;
import com.ruoyi.cai.rank.RankManager;
import com.ruoyi.cai.service.*;
import com.ruoyi.cai.util.NumCaUtil;
import com.ruoyi.cai.util.CaiNumUtil;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.helper.LoginHelper;
@@ -43,6 +44,8 @@ public class ConsumeLogServiceImpl extends ServiceImpl<ConsumeLogMapper, Consume
private UnionService unionService;
@Autowired
private AccountService accountService;
@Autowired
private YunxinHttpService yunxinHttpService;
@Override
@Transactional(rollbackFor = Exception.class)
@@ -108,11 +111,15 @@ public class ConsumeLogServiceImpl extends ServiceImpl<ConsumeLogMapper, Consume
AccountChangeCodeEnum changeCodeEnum = ConsumeLogType.getUnionChange(code);
oneUnionSend = accountService.distribution(consumer, consumer.getUnionUserId(), consumer.getUnionAmount(), changeCodeEnum);
}
if(oneInviteSend){
if(oneInviteSend){ // 一级邀请
rankManager.sendInviteRankMq(consumer.getOneUserId(),consumer.getOneAmount(),consumer.getTraceId());
userInviteService.incsCoinAsync(consumer.getOneUserId(),consumer.getCreateInviteUserId(),consumer.getOneAmount());
if(ConsumeLogType.RECHARGE.getCode().equals(consumer.getType())){ // 充值奖励推送
yunxinHttpService.inviteCashbackSendMessage(consumer.getOneUserId(),consumer.getSourceUserId(),
consumer.getOneRate(),consumer.getAmount(),consumer.getOneAmount());
}
}
if(oneUnionSend){
if(oneUnionSend){ // 工会邀请
rankManager.sendInviteRankMq(consumer.getUnionUserId(),consumer.getUnionAmount(),consumer.getTraceId());
}
}catch (Exception e){
@@ -138,7 +145,7 @@ public class ConsumeLogServiceImpl extends ServiceImpl<ConsumeLogMapper, Consume
consumeLog.setOnePhone(oneUser.getMobile());
consumeLog.setOneJoin(userInvite.getEnableRate());
consumeLog.setOneIsUnion(oneUser.getIsUnion());
consumeLog.setOneAmount(NumCaUtil.coin(consumeLog.getAmount(),consumeLog.getOneRate()));
consumeLog.setOneAmount(CaiNumUtil.coin(consumeLog.getAmount(),consumeLog.getOneRate()));
}
}
consumeLog.setCalculateStatus(true);
@@ -164,7 +171,7 @@ public class ConsumeLogServiceImpl extends ServiceImpl<ConsumeLogMapper, Consume
consumeLog.setOnePhone(oneUser.getMobile());
consumeLog.setOneJoin(userInvite.getEnableRate());
consumeLog.setOneIsUnion(oneUser.getIsUnion());
consumeLog.setOneAmount(NumCaUtil.coin(consumeLog.getAnchorAmount(),consumeLog.getOneRate()));
consumeLog.setOneAmount(CaiNumUtil.coin(consumeLog.getAnchorAmount(),consumeLog.getOneRate()));
}
}
// 工会分销 只有通话和礼物才有
@@ -188,7 +195,7 @@ public class ConsumeLogServiceImpl extends ServiceImpl<ConsumeLogMapper, Consume
}else if(ConsumeLogType.VIDEO.getCode().equals(consumeLog.getType())){
consumeLog.setUnionRate(unionUser.getVideoDivide());
}
consumeLog.setUnionAmount(NumCaUtil.coin(consumeLog.getAnchorAmount(),consumeLog.getUnionRate()));
consumeLog.setUnionAmount(CaiNumUtil.coin(consumeLog.getAnchorAmount(),consumeLog.getUnionRate()));
}
}
}

View File

@@ -10,6 +10,7 @@ import com.ruoyi.cai.dto.AddRechargeOrderAdminDto;
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;
@@ -93,7 +94,7 @@ public class RechargeOrderServiceImpl extends ServiceImpl<RechargeOrderMapper,Re
@Override
@Transactional(rollbackFor = Exception.class)
public ConsumeResp orderSuccess(String orderNo, Map<String,String> params, String appId, PayTypeEnum payTypeEnum){
public RechargeConsumerResp orderSuccess(String orderNo, Map<String,String> params, String appId, PayTypeEnum payTypeEnum){
RechargeOrder rechargeOrder = this.getByOrderNo(orderNo);
if(rechargeOrder == null){
throw new ServiceException("订单不存在");
@@ -124,12 +125,13 @@ public class RechargeOrderServiceImpl extends ServiceImpl<RechargeOrderMapper,Re
consumeLog.setType(ConsumeLogType.RECHARGE.getCode());
consumeLog.setAmount(rechargeOrder.getRechargeCoin());
accountService.recharge(consumeLog);
ConsumeResp resp = new ConsumeResp();
RechargeConsumerResp resp = new RechargeConsumerResp();
resp.setSuccess(true);
resp.setConsumeLogId(consumeLog.getId());
resp.setUserId(user.getId());
resp.setTraceId(traceId);
resp.setPrice(rechargeOrder.getPrice());
resp.setRechargeCoin(rechargeOrder.getRechargeCoin());
return resp;
}

View File

@@ -3,15 +3,13 @@ package com.ruoyi.cai.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.cai.domain.*;
import com.ruoyi.cai.dto.ConsumeResp;
import com.ruoyi.cai.dto.app.query.GiveGiftRes;
import com.ruoyi.cai.dto.app.query.GiveGiftReq;
import com.ruoyi.cai.dto.app.vo.index.UserGiftIndexVo;
import com.ruoyi.cai.dto.commom.consumer.GiftConsumerResp;
import com.ruoyi.cai.enums.ConsumeLogType;
import com.ruoyi.cai.manager.IdManager;
import com.ruoyi.cai.manager.LockManager;
import com.ruoyi.cai.mapper.UserGiftMapper;
import com.ruoyi.cai.mq.AmqpProducer;
import com.ruoyi.cai.mq.dto.CommonDTO;
import com.ruoyi.cai.mq.handle.dto.RankDTO;
import com.ruoyi.cai.rank.RankManager;
import com.ruoyi.cai.service.*;
import com.ruoyi.common.exception.ServiceException;
@@ -57,7 +55,7 @@ public class UserGiftServiceImpl extends ServiceImpl<UserGiftMapper, UserGift> i
@Override
@Transactional(rollbackFor = Exception.class)
public ConsumeResp giveGift(GiveGiftRes query) {
public GiftConsumerResp giveGift(GiveGiftReq query) {
Long fromUserId = LoginHelper.getUserId();
Gift gift = giftService.getById(query.getGiftId());
if(gift == null){
@@ -68,7 +66,8 @@ public class UserGiftServiceImpl extends ServiceImpl<UserGiftMapper, UserGift> i
if(lock.isLocked()){
throw new ServiceException("您点击太快了");
}
ConsumeResp resp = new ConsumeResp();
GiftConsumerResp resp = new GiftConsumerResp();
resp.setGift(gift);
try {
lock.lock(3, TimeUnit.SECONDS);
User fromUser = userService.getById(fromUserId);
@@ -84,6 +83,7 @@ public class UserGiftServiceImpl extends ServiceImpl<UserGiftMapper, UserGift> i
consumeLog.setAmount(giftAmount);
consumeLog.setTargetRate(anchor.getGiftRate());
consumeLog = accountService.giftDecr(consumeLog, ConsumeLogType.GIFT, gift);
resp.setAnchorIncomeCoin(consumeLog.getAnchorAmount());
resp.setConsumeLogId(consumeLog.getId());
UserGift userGift = new UserGift();
userGift.setType(query.getType());