From 1bdcb09087eec428c6f4413a52dcbb8f324add68 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Thu, 11 May 2023 14:13:08 +0800
Subject: [PATCH] 支付设置
---
src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java | 140 +++++++++++++++++++++++++++++++++++++++-------
1 files changed, 118 insertions(+), 22 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java
index 5993c95..58c95fb 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java
@@ -58,6 +58,7 @@
private final AgentProducer agentProducer;
private final MallScoreRecordMapper mallScoreRecordMapper;
private final MallScoreAchieveReleaseMapper mallScoreAchieveReleaseMapper;
+ private final MallScoreVoucherMapper mallScoreVoucherMapper;
@Override
@Transactional(rollbackFor = Exception.class)
@@ -770,25 +771,32 @@
* 每次拿重试次数大于零
* 按ID asc排序的十条数据
*/
- List<MallMqRecord> mallMqRecords = mallMqRecordMapper.selectByStateLimitTen(2);
- if(CollUtil.isEmpty(mallMqRecords)){
- return;
- }
- for(MallMqRecord mallMqRecord : mallMqRecords){
- Integer retryTimes = mallMqRecord.getRetryTimes();
- if(retryTimes <= 0){
- continue;
- }
- retryTimes = retryTimes - 1;
- mallMqRecord.setRetryTimes(retryTimes);
- mallMqRecordMapper.updateById(mallMqRecord);
-
- Long orderId = mallMqRecord.getOrderId();
- agentProducer.sendPerkMoneyMsg(orderId);
- }
+// List<MallMqRecord> mallMqRecords = mallMqRecordMapper.selectByStateLimitTen(2);
+// if(CollUtil.isEmpty(mallMqRecords)){
+// return;
+// }
+// DateTime dateTime = DateUtil.offsetMinute(new Date(), -5);
+// for(MallMqRecord mallMqRecord : mallMqRecords){
+// if(DateUtil.compare(dateTime,mallMqRecord.getCreateTime()) <= 0){
+// continue;
+// }
+// Integer retryTimes = mallMqRecord.getRetryTimes();
+// if(retryTimes <= 0){
+// continue;
+// }
+// retryTimes = retryTimes - 1;
+// mallMqRecord.setRetryTimes(retryTimes);
+// mallMqRecordMapper.updateById(mallMqRecord);
+//
+// Long orderId = mallMqRecord.getOrderId();
+// if(mallMqRecord.getState() == 2){
+// agentProducer.sendPerkMoneyMsg(orderId);
+// }
+// }
}
@Override
+ @Transactional(rollbackFor = Exception.class)
public void scoreRecordReleaseJob() {
/**
* 每日按照比例释放记录的百分比到用户的绿色凭证账户
@@ -831,6 +839,7 @@
}
@Override
+ @Transactional(rollbackFor = Exception.class)
public void achieveReleaseJob() {
/**
* 业绩产生凭证
@@ -863,8 +872,17 @@
/**
* 获取每日最大产生的凭证数量
+ * 改成每日产出固定值
*/
- BigDecimal achieveDailyRelease = getAchieveDailyRelease();
+// BigDecimal achieveDailyRelease = getAchieveDailyRelease();
+ DataDictionaryCustom achieveReleaseDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ GreenScoreEnum.ACHIEVE_RELEASE.getType(),
+ GreenScoreEnum.ACHIEVE_RELEASE.getCode()
+ );
+ BigDecimal achieveDailyRelease = new BigDecimal(achieveReleaseDic.getValue() == null ? "0" : achieveReleaseDic.getValue());
+ if(achieveDailyRelease.compareTo(BigDecimal.ZERO) <= 0){
+ return;
+ }
if(achieveTotal.compareTo(achieveMax) < 0){
BigDecimal divide = achieveTotal.divide(achieveMax, 2, BigDecimal.ROUND_DOWN);
@@ -881,8 +899,8 @@
/**
* 20%给合伙人、联创
- * 5% 给联创
- * 15% 给合伙人
+ * 5% 给联创 10%
+ * 15% 给合伙人 10%
*/
DataDictionaryCustom roleAchievePercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
GreenScoreEnum.ROLE_ACHIEVE_PERCENT.getType(),
@@ -896,7 +914,8 @@
List<MallMember> roleAchieveReleaseMembers = mallMemberMapper.selectByRole(3,1);
if(CollUtil.isNotEmpty(roleAchieveReleaseMembers)){
//联创拿走0.25
- BigDecimal multiply = roleAchieveRelease.multiply(new BigDecimal(0.25));
+// BigDecimal multiply = roleAchieveRelease.multiply(new BigDecimal(0.25));
+ BigDecimal multiply = roleAchieveRelease.multiply(new BigDecimal(0.5));
BigDecimal memberAchieveRelease = multiply.divide(new BigDecimal(roleAchieveReleaseMembers.size()), 2, BigDecimal.ROUND_DOWN);
if(memberAchieveRelease.compareTo(BigDecimal.ZERO) > 0){
for(MallMember mallMember : roleAchieveReleaseMembers){
@@ -912,7 +931,8 @@
List<MallMember> roleAchieveReleaseHHR = mallMemberMapper.selectByRole(4,1);
if(CollUtil.isNotEmpty(roleAchieveReleaseHHR)){
//合伙人拿走0.75
- BigDecimal multiply = roleAchieveRelease.multiply(new BigDecimal(0.75));
+// BigDecimal multiply = roleAchieveRelease.multiply(new BigDecimal(0.75));
+ BigDecimal multiply = roleAchieveRelease.multiply(new BigDecimal(0.5));
BigDecimal memberAchieveReleaseHHR = multiply.divide(new BigDecimal(roleAchieveReleaseHHR.size()), 2, BigDecimal.ROUND_DOWN);
if(memberAchieveReleaseHHR.compareTo(BigDecimal.ZERO) > 0){
for(MallMember mallMember : roleAchieveReleaseHHR){
@@ -1005,10 +1025,86 @@
mallScoreAchieveRelease.setReleaseNo(scoreNo);
mallScoreAchieveRelease.setVoucherExpect(achieveDailyRelease);
mallScoreAchieveRelease.setVoucherReal(achieveDailyReleaseReal);
- mallScoreAchieveReleaseMapper.updateById(mallScoreAchieveRelease);
+ mallScoreAchieveReleaseMapper.insert(mallScoreAchieveRelease);
}
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void selaHalfVoucher(String price) {
+ /**
+ * 获取所有凭证大于0的用户
+ * 当前价格卖出账户的一半凭证
+ */
+ BigDecimal scorePrice = new BigDecimal(price == null ? "0" : price);
+ if(scorePrice.compareTo(BigDecimal.ZERO) <= 0){
+ return;
+ }
+ List<MallMemberWallet> mallMemberWallets = mallMemberWalletMapper.selectList(null);
+ if(CollUtil.isNotEmpty(mallMemberWallets)){
+ List<MallMemberWallet> wallets = mallMemberWallets
+ .stream()
+ .filter(mallMemberWallet -> mallMemberWallet.getVoucherCnt().compareTo(BigDecimal.ZERO) > 0)
+ .collect(Collectors.toList());
+ if(CollUtil.isNotEmpty(wallets)){
+ BigDecimal scorePoolCntAdd = BigDecimal.ZERO;
+ //绿色积分剩余数量
+ for(MallMemberWallet mallMemberWallet : wallets){
+ //增加账户的凭证金额,减少当前的一半的凭证数量
+ BigDecimal voucherCnt = mallMemberWallet.getVoucherCnt().divide(new BigDecimal(2), 2, BigDecimal.ROUND_DOWN)
+ .setScale(2,BigDecimal.ROUND_DOWN);
+ BigDecimal voucherAmountAdd = scorePrice.multiply(voucherCnt)
+ .setScale(2,BigDecimal.ROUND_DOWN);
+ mallMemberWalletMapper.addVorCherAmountAndCntById(voucherAmountAdd,voucherCnt,mallMemberWallet.getId());
+
+ scorePoolCntAdd = scorePoolCntAdd.add(voucherCnt);
+
+ DataDictionaryCustom surplusCntDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ GreenScoreEnum.SURPLUS_CNT.getType(),
+ GreenScoreEnum.SURPLUS_CNT.getCode()
+ );
+ //增加绿色积分剩余数量
+ BigDecimal surplusCnt = new BigDecimal(surplusCntDic.getValue() == null ? "0" : surplusCntDic.getValue());
+ BigDecimal voucherCntAdd = surplusCnt.add(voucherCnt).setScale(2,BigDecimal.ROUND_DOWN);
+ surplusCntDic.setValue(voucherCntAdd.toString());
+ dataDictionaryCustomMapper.updateById(surplusCntDic);
+
+ /**
+ * 生成一条卖出记录
+ */
+ String voucherNo = MallUtils.getOrderNum("VS");
+ MallScoreVoucher mallScoreVoucher = new MallScoreVoucher();
+ mallScoreVoucher.setVoucherNo(voucherNo);
+ mallScoreVoucher.setMemberId(mallMemberWallet.getMemberId());
+ mallScoreVoucher.setVoucherCnt(voucherCnt);
+ mallScoreVoucher.setPrice(scorePrice);
+ mallScoreVoucher.setVoucherAmount(voucherAmountAdd);
+ mallScoreVoucher.setType("S");
+ mallScoreVoucherMapper.insert(mallScoreVoucher);
+
+ //产生一条流水记录
+ mallMoneyFlowService.addMoneyFlow(
+ mallMemberWallet.getMemberId(),
+ voucherAmountAdd,
+ MoneyFlowTypeEnum.VOUCHER_SALE.getValue(),
+ voucherNo,
+ FlowTypeEnum.BALANCE.getValue());
+ }
+
+ //增加积分凭证池的凭证数量
+ DataDictionaryCustom scorePoolCntDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ GreenScoreEnum.SCORE_POOL_CNT.getType(),
+ GreenScoreEnum.SCORE_POOL_CNT.getCode()
+ );
+ //增加绿色积分剩余数量
+ BigDecimal scorePoolCnt = new BigDecimal(scorePoolCntDic.getValue() == null ? "0" : scorePoolCntDic.getValue());
+ scorePoolCnt = scorePoolCnt.add(scorePoolCntAdd);
+ scorePoolCntDic.setValue(scorePoolCnt.toString());
+ dataDictionaryCustomMapper.updateById(scorePoolCntDic);
+ }
+ }
+ }
+
/**
* 给用户的增加凭证数据,并且增加流水
* @param memberAchieveRelease 释放数量
--
Gitblit v1.9.1