From 990c09c842d87d1f179e3a0070541da0457b8393 Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Tue, 21 Nov 2023 14:07:19 +0800
Subject: [PATCH] 匹配
---
src/main/java/cc/mrbird/febs/mall/service/impl/CommonService.java | 244 ++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 240 insertions(+), 4 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/CommonService.java b/src/main/java/cc/mrbird/febs/mall/service/impl/CommonService.java
index 6f2fe47..7cb9d65 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/CommonService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/CommonService.java
@@ -1,18 +1,32 @@
package cc.mrbird.febs.mall.service.impl;
+import cc.mrbird.febs.common.enumerates.AgentLevelEnum;
+import cc.mrbird.febs.common.enumerates.DataDictionaryEnum;
+import cc.mrbird.febs.common.enumerates.FlowTypeEnum;
+import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum;
+import cc.mrbird.febs.common.exception.FebsException;
import cc.mrbird.febs.common.utils.AppContants;
import cc.mrbird.febs.common.utils.RedisUtils;
-import cc.mrbird.febs.mall.entity.AppVersion;
-import cc.mrbird.febs.mall.entity.DataDictionaryCustom;
-import cc.mrbird.febs.mall.mapper.AppVersionMapper;
-import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper;
+import cc.mrbird.febs.mall.entity.*;
+import cc.mrbird.febs.mall.mapper.*;
+import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
import cc.mrbird.febs.mall.service.ICommonService;
+import cc.mrbird.febs.mall.service.IMallAchieveService;
+import cc.mrbird.febs.mall.service.IMallMoneyFlowService;
+import cc.mrbird.febs.pay.service.IAliPayService;
+import cc.mrbird.febs.pay.service.IPayService;
+import cc.mrbird.febs.pay.service.UnipayService;
+import cc.mrbird.febs.rabbit.producter.AgentProducer;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
+import java.math.BigDecimal;
+import java.util.Date;
import java.util.List;
/**
@@ -26,6 +40,15 @@
private final RedisUtils redisUtils;
private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
private final AppVersionMapper appVersionMapper;
+
+
+ private final MallGoodsMapper mallGoodsMapper;
+ private final MallMemberMapper memberMapper;
+ private final IApiMallMemberWalletService memberWalletService;
+ private final IMallMoneyFlowService mallMoneyFlowService;
+ private final MallAchieveRecordMapper mallAchieveRecordMapper;
+ private final MallMemberWalletMapper mallMemberWalletMapper;
+ private final MallOrderInfoMapper mallOrderInfoMapper;
@Override
public boolean verifyCode(String account, String code) {
@@ -73,4 +96,217 @@
dic.setDescription(description);
dataDictionaryCustomMapper.insert(dic);
}
+
+ @Override
+ public void updateDataDic(String type, String code, String value) {
+ DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(type, code);
+ if (dic != null) {
+ dic.setValue(value);
+ dataDictionaryCustomMapper.updateById(dic);
+ }
+ }
+
+ /**
+ * 支付金额后的操作
+ * 减少积分,增加流水
+ * 购买套餐后,升级会员等级
+ * 增加支付金额流水
+ * 增加补贴额度
+ * 增加贡献值,增加流水
+ * 产生一条业绩记录
+ * @param orderId
+ */
+ @Override
+ public void changeWallet(Long orderId, int payType) {
+ MallOrderInfo orderInfo = this.mallOrderInfoMapper.selectById(orderId);
+ Long memberId = orderInfo.getMemberId();
+ boolean hasTc = false;
+ //总贡献值
+ BigDecimal starSum = BigDecimal.ZERO;
+ /**
+ * 总补贴额度
+ * 所有合伙人补贴至消费礼包的三倍额度需要复购一次。
+ */
+ BigDecimal scoreSum = BigDecimal.ZERO;
+ BigDecimal achieveSum = BigDecimal.ZERO;
+ List<MallOrderItem> orderItems = this.mallOrderInfoMapper.getMallOrderItemByOrderId(orderInfo.getId());
+ if (CollUtil.isNotEmpty(orderItems)) {
+ for (MallOrderItem orderItem : orderItems) {
+ MallGoods mallGoods = mallGoodsMapper.selectById(orderItem.getGoodsId());
+ /**
+ * 购买套餐赠送贡献值
+ * 补贴3倍额度
+ */
+ if (mallGoods.getIsNormal() == 2) {
+ hasTc = true;
+ BigDecimal star = (mallGoods.getStar()==null ? BigDecimal.ZERO : mallGoods.getStar())
+ .multiply(new BigDecimal(orderItem.getCnt()));
+ starSum = starSum.add(star);
+// scoreSum = scoreSum.add(
+// new BigDecimal(mallGoods.getPresentPrice())
+// .multiply(new BigDecimal(3))
+// .multiply(new BigDecimal(orderItem.getCnt()))
+// .abs()
+// .setScale(2,BigDecimal.ROUND_DOWN));
+ String goodsName = mallGoods.getGoodsName();
+ /**
+ * 1-2档投资级别,2.5倍
+ * 3-4档投资级别,2.8倍
+ * 5-6档投资级别,3倍
+ * 目前紧急修改成按照商品名称
+ */
+ BigDecimal basePercent = new BigDecimal("3");
+ if(goodsName.equals("礼包一")){
+ basePercent = new BigDecimal("1.5");
+ }
+ if(goodsName.equals("礼包二")){
+ basePercent = new BigDecimal("2.5");
+ }
+ if(goodsName.equals("礼包三") || goodsName.equals("礼包四")){
+ basePercent = new BigDecimal("2.8");
+ }
+ if(goodsName.equals("礼包五") || goodsName.equals("礼包六")){
+ basePercent = new BigDecimal("3");
+ }
+ scoreSum = scoreSum.add(
+ new BigDecimal(mallGoods.getPresentPrice())
+ .multiply(new BigDecimal(orderItem.getCnt()))
+ .multiply(basePercent)
+ .abs()
+ .setScale(2,BigDecimal.ROUND_DOWN));
+ achieveSum = achieveSum.add(
+ new BigDecimal(mallGoods.getPresentPrice())
+ .multiply(new BigDecimal(orderItem.getCnt()))
+ .abs()
+ .setScale(2,BigDecimal.ROUND_DOWN));
+ }
+ }
+ /**
+ * 增加贡献值,增加流水
+ */
+ if (starSum.compareTo(BigDecimal.ZERO) > 0) {
+ //系统设置的个人贡献点最大值
+ DataDictionaryCustom starGetDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.STAR_GET.getType(),
+ DataDictionaryEnum.STAR_GET.getCode());
+ if(ObjectUtil.isNotEmpty(starGetDic)){
+ String starGetStr = StrUtil.isEmpty(starGetDic.getValue()) ? "0" : starGetDic.getValue();
+ BigDecimal starGet = new BigDecimal(starGetStr);
+
+ MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(memberId);
+ BigDecimal star = new BigDecimal(mallMemberWallet.getStar());
+ if(starGet.compareTo(star.add(starSum)) < 0){
+ if(starGet.compareTo(BigDecimal.ZERO) == 0){
+ mallMemberWalletMapper.addStarByMemberId(starSum.intValue(), memberId);
+ mallMoneyFlowService.addMoneyFlow(
+ memberId,
+ starSum,
+ MoneyFlowTypeEnum.STAR.getValue(),
+ orderInfo.getOrderNo(),
+ FlowTypeEnum.STAR.getValue(),
+ 2);
+ }
+ if(starGet.compareTo(star) > 0){
+ BigDecimal subtract = starGet.subtract(star);
+ if(subtract.compareTo(starSum) < 0){
+ starSum = subtract;
+ }
+ mallMemberWalletMapper.addStarByMemberId(starSum.intValue(), memberId);
+ mallMoneyFlowService.addMoneyFlow(
+ memberId,
+ starSum,
+ MoneyFlowTypeEnum.STAR.getValue(),
+ orderInfo.getOrderNo(),
+ FlowTypeEnum.STAR.getValue(),
+ 2);
+ }
+ }else{
+ mallMemberWalletMapper.addStarByMemberId(starSum.intValue(), memberId);
+ mallMoneyFlowService.addMoneyFlow(
+ memberId,
+ starSum,
+ MoneyFlowTypeEnum.STAR.getValue(),
+ orderInfo.getOrderNo(),
+ FlowTypeEnum.STAR.getValue(),
+ 2);
+ }
+ }
+ }
+ /**
+ * 增加补贴额度
+ */
+ if (scoreSum.compareTo(BigDecimal.ZERO) > 0) {
+// MallMember mallMember = memberMapper.selectById(memberId);
+// if(MemberLevelEnum.SECOND_LEVEL.getLevelCode(mallMember.getLevel()) >= 5){
+// scoreSum = scoreSum.multiply(new BigDecimal(3));
+// }
+// if(MemberLevelEnum.SECOND_LEVEL.getLevelCode(mallMember.getLevel()) >= 3
+// &&MemberLevelEnum.SECOND_LEVEL.getLevelCode(mallMember.getLevel()) < 5){
+// scoreSum = scoreSum.multiply(new BigDecimal(2.8));
+// }
+// if(MemberLevelEnum.SECOND_LEVEL.getLevelCode(mallMember.getLevel()) < 3){
+// scoreSum = scoreSum.multiply(new BigDecimal(2.5));
+// }
+ memberWalletService.add(scoreSum, memberId, "totalScore");
+ mallMoneyFlowService.addMoneyFlow(
+ memberId,
+ scoreSum,
+ MoneyFlowTypeEnum.TOTAL_SCORE.getValue(),
+ orderInfo.getOrderNo(),
+ "",
+ scoreSum.toString(),
+ memberId,
+ 1,
+ FlowTypeEnum.TOTAL_SCORE.getValue(),
+ 2);
+ }
+ }
+
+ /**
+ * 购买套餐后,升级会员等级
+ */
+ if (hasTc) {
+ MallMember mallMember = memberMapper.selectById(memberId);
+ if (AgentLevelEnum.ZERO_LEVEL.name().equals(mallMember.getLevel())) {
+ mallMember.setLevel(AgentLevelEnum.SECOND_LEVEL.name());
+ memberMapper.updateById(mallMember);
+ }
+ }
+ /**
+ * 增加支付金额流水
+ */
+ mallMoneyFlowService.addMoneyFlow(
+ memberId,
+ orderInfo.getAmount().subtract(orderInfo.getScoreAmount()).negate(),
+ MoneyFlowTypeEnum.PAY.getValue(),
+ orderInfo.getOrderNo(),
+ payType);
+ /**
+ * 减少积分,增加流水
+ */
+ if (orderInfo.getScoreCnt().compareTo(BigDecimal.ZERO) > 0) {
+ int reduce = memberWalletService.reduce(orderInfo.getScoreCnt(), memberId, "prizeScore");
+ if (reduce == 2) {
+ throw new FebsException("积分不足");
+ }
+ mallMoneyFlowService.addMoneyFlow(
+ memberId,
+ orderInfo.getScoreCnt().negate(),
+ MoneyFlowTypeEnum.PAY.getValue(),
+ orderInfo.getOrderNo(),
+ FlowTypeEnum.PRIZE_SCORE.getValue());
+ }
+ /**
+ * 产生一条业绩记录
+ */
+ if(achieveSum.compareTo(BigDecimal.ZERO) > 0){
+ MallAchieveRecord mallAchieveRecord = new MallAchieveRecord();
+ mallAchieveRecord.setMemberId(memberId);
+ mallAchieveRecord.setAchieveTime(new Date());
+ mallAchieveRecord.setAmount(achieveSum.subtract(orderInfo.getScoreAmount()));
+ mallAchieveRecord.setOrderId(orderId);
+ mallAchieveRecord.setPayTime(orderInfo.getPayTime());
+ mallAchieveRecordMapper.insert(mallAchieveRecord);
+ }
+ }
}
--
Gitblit v1.9.1