From 96797576f4ececd59bf573cccf0f6e47581673d0 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Mon, 11 Sep 2023 15:32:41 +0800
Subject: [PATCH] 领红包
---
src/main/java/cc/mrbird/febs/common/utils/AppContants.java | 1 +
src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java | 1 +
src/main/resources/mapper/modules/MallMoneyFlowMapper.xml | 1 +
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java | 48 ++++++++++++++++++++++++++++++++++++------------
4 files changed, 39 insertions(+), 12 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/common/utils/AppContants.java b/src/main/java/cc/mrbird/febs/common/utils/AppContants.java
index 79d69c3..81eba7a 100644
--- a/src/main/java/cc/mrbird/febs/common/utils/AppContants.java
+++ b/src/main/java/cc/mrbird/febs/common/utils/AppContants.java
@@ -67,5 +67,6 @@
public static final String AGENT_LEVEL = "AGENT_LEVEL";
public static final String AGENT_LEVEL_REQUIRE = "AGENT_LEVEL_REQUIRE";
+ public static final String SCORE_POOL_TODAY = "scorePoolToday";
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
index a5b82f9..844f498 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
@@ -17,16 +17,19 @@
import cc.mrbird.febs.mall.service.IApiMallMemberService;
import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
import cc.mrbird.febs.mall.service.ICommonService;
+import cc.mrbird.febs.mall.service.IMallMoneyFlowService;
import cc.mrbird.febs.mall.vo.*;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.asymmetric.KeyType;
import cn.hutool.crypto.asymmetric.RSA;
import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -38,6 +41,7 @@
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
+import java.math.RoundingMode;
import java.util.*;
/**
@@ -56,6 +60,7 @@
private final MallShoppingCartMapper mallShoppingCartMapper;
private final MallMoneyFlowMapper mallMoneyFlowMapper;
private final IApiMallMemberWalletService walletService;
+ private final IMallMoneyFlowService moneyFlowService;
private final MallMemberPaymentMapper mallMemberPaymentMapper;
private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
private final MallShopApplyMapper mallShopApplyMapper;
@@ -596,19 +601,38 @@
@Override
public FebsResponse redBag() {
MallMember member = LoginUserUtil.getLoginUser();
- List<MallMoneyFlow> mallMoneyFlows = mallMoneyFlowMapper.selectByMemberIdAndTypeAndStatusAndDate(member.getId(), MoneyFlowTypeEnum.SCORE_POOL.getValue(), 1, new Date());
- if(CollUtil.isEmpty(mallMoneyFlows)){
- throw new FebsException("没有红包");
- }
- BigDecimal amount = BigDecimal.ZERO;
- for(MallMoneyFlow mallMoneyFlow : mallMoneyFlows){
- mallMoneyFlow.setStatus(2);
- mallMoneyFlowMapper.updateById(mallMoneyFlow);
+ QueryWrapper<MallMember> formalMember = new QueryWrapper<>();
+ formalMember.ne("level", AgentLevelEnum.ZERO_LEVEL.name());
+ List<MallMember> mallMembers = this.baseMapper.selectList(formalMember);
+ BigDecimal outCome = BigDecimal.ZERO;
+ if(CollUtil.isNotEmpty(mallMembers)){
- amount = mallMoneyFlow.getAmount().abs();
+ BigDecimal scorePoolToDay = new BigDecimal(redisUtils.get(AppContants.SCORE_POOL_TODAY).toString());
+ BigDecimal income = new BigDecimal(scorePoolToDay.divide(new BigDecimal(mallMembers.size()), 2, RoundingMode.HALF_UP).intValue());
+ if(income.compareTo(BigDecimal.ZERO) < 1){
+ throw new FebsException("没有红包");
+ }
+ MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(member.getId());
+ if(mallMemberWallet.getScore().compareTo(BigDecimal.ZERO) < 1){
+ throw new FebsException("没有红包");
+ }
+ if(mallMemberWallet.getScore().compareTo(income) < 0){
+ outCome = new BigDecimal(mallMemberWallet.getScore().intValue());
+ }else{
+ outCome = income;
+ }
+
+ outCome = new BigDecimal(RandomUtil.randomBigDecimal(BigDecimal.ZERO,outCome).intValue()).setScale(2,BigDecimal.ROUND_DOWN);
+ /*
+ 平分成佣金,一比一减少赠送积分
+ 如果没有赠送积分,则平分0
+ */
+ moneyFlowService.addMoneyFlow(member.getId(), outCome, MoneyFlowTypeEnum.SCORE_POOL.getValue(), null, FlowTypeEnum.COMMISSION.getValue());
+ moneyFlowService.addMoneyFlow(member.getId(), outCome.negate(), MoneyFlowTypeEnum.SCORE_POOL.getValue(), null, FlowTypeEnum.SCORE.getValue());
+ walletService.add(outCome, member.getId(), "commission");
+ walletService.reduce(outCome.negate(), member.getId(), "score");
+
}
- walletService.add(amount, member.getId(), "commission");
- walletService.reduce(amount.negate(), member.getId(), "score");
- return new FebsResponse().success().data(amount);
+ return new FebsResponse().success().data(outCome);
}
}
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 cff92e6..d7b9f3e 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
@@ -538,6 +538,7 @@
BigDecimal scorePoolToDay = scorePoolNew.multiply(dividEquallyRatio);
redisUtils.set(redisKey,scorePoolNew.subtract(scorePoolToDay).intValue(),0L);
+ redisUtils.set(AppContants.SCORE_POOL_TODAY,scorePoolToDay.intValue(),0L);
QueryWrapper<MallMember> formalMember = new QueryWrapper<>();
formalMember.ne("level", AgentLevelEnum.ZERO_LEVEL.name());
diff --git a/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml b/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml
index aa81c97..18e6e4d 100644
--- a/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml
+++ b/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml
@@ -18,6 +18,7 @@
left join mall_member b on a.rt_member_id=b.id
left join data_dictionary_custom c on b.level = c.code and c.type='AGENT_LEVEL'
<where>
+
<if test="record.inOrOut == 3">
and a.amount > 0
</if>
--
Gitblit v1.9.1