From 2abd05a4ab94edfacb73edc59866a9057be6fca8 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Thu, 22 Dec 2022 14:42:18 +0800
Subject: [PATCH] 20221221
---
src/main/java/cc/mrbird/febs/mall/vo/OrderListVo.java | 3
src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java | 82 ++++++++-------
src/test/java/cc/mrbird/febs/ProfitTest.java | 159 +++++++++++++++++++++----------
src/main/resources/mapper/modules/MallMoneyFlowMapper.xml | 2
src/main/resources/mapper/modules/MallGoodsSkuMapper.xml | 6 +
5 files changed, 158 insertions(+), 94 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java
index e5448c6..33b2ed4 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java
@@ -203,51 +203,55 @@
* 2、返利对象:下单人的直推上级
* 3、金额:返利比例乘以补贴金额
*/
- //下单人的直推上级
- MallMember mallMemberOne = memberMapper.selectInfoByInviteId(mallMember.getReferrerId());
- DataDictionaryCustom rewardPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
- DataDictionaryEnum.REWARD_PERCENT.getType(),
- DataDictionaryEnum.REWARD_PERCENT.getCode()
- );
- BigDecimal rewardPercent = new BigDecimal(rewardPercentDic.getValue()).multiply(new BigDecimal(0.01)).setScale(2,BigDecimal.ROUND_DOWN);
- BigDecimal directRewardAmount = subsidyAmount.multiply(rewardPercent).setScale(2, BigDecimal.ROUND_DOWN);
-
- Long marketSubsidyFlowId = mallMoneyFlowService.addMoneyFlow(
- mallMember.getId(),
- orderInfo.getOrderNo(),
- directRewardAmount,
- MallMoneyFlowTypeEnum.DIRECT_REWARD.getCode(),
- MallMoneyFlow.STATUS_SUCCESS,
- MallMoneyFlow.IS_RETURN_Y,
- mallMemberOne.getId(),
- FlowTypeEnum.BALANCE.getValue(),
- MallMoneyFlowTypeEnum.DIRECT_REWARD.getName()
- );
- memberWalletService.addBalance(directRewardAmount,mallMemberOne.getId());
/**
* 生成分享奖励的流水记录
* 1、待生效
* 2、返利对象:下单人的直推上级 10%,直推的直推 5%
* 3、金额:补贴金额乘以分享奖励的比例
*/
- DataDictionaryCustom shareOneDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
- DataDictionaryEnum.LEVEL_ONE.getType(),
- DataDictionaryEnum.LEVEL_ONE.getCode()
- );
- BigDecimal shareOne = new BigDecimal(shareOneDic.getValue()).multiply(new BigDecimal(0.01)).setScale(2,BigDecimal.ROUND_DOWN);
- BigDecimal shareOneAmount = subsidyAmount.multiply(shareOne).setScale(2, BigDecimal.ROUND_DOWN);
- Long ShareOneFlowId = mallMoneyFlowService.addMoneyFlow(
- mallMember.getId(),
- orderInfo.getOrderNo(),
- shareOneAmount,
- MallMoneyFlowTypeEnum.SHARE_REWARD_ONE.getCode(),
- MallMoneyFlow.STATUS_SUCCESS,
- MallMoneyFlow.IS_RETURN_Y,
- mallMemberOne.getId(),
- FlowTypeEnum.BALANCE.getValue(),
- MallMoneyFlowTypeEnum.SHARE_REWARD_ONE.getName()
- );
- memberWalletService.addBalance(shareOneAmount,mallMemberOne.getId());
+ //下单人的直推上级
+ MallMember mallMemberOne = memberMapper.selectInfoByInviteId(mallMember.getReferrerId());
+ //生成直推返利的流水记录
+ if(ObjectUtil.isNotEmpty(mallMemberOne)){
+ DataDictionaryCustom rewardPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.REWARD_PERCENT.getType(),
+ DataDictionaryEnum.REWARD_PERCENT.getCode()
+ );
+ BigDecimal rewardPercent = new BigDecimal(rewardPercentDic.getValue()).multiply(new BigDecimal(0.01)).setScale(2,BigDecimal.ROUND_DOWN);
+ BigDecimal directRewardAmount = subsidyAmount.multiply(rewardPercent).setScale(2, BigDecimal.ROUND_DOWN);
+
+ Long marketSubsidyFlowId = mallMoneyFlowService.addMoneyFlow(
+ mallMember.getId(),
+ orderInfo.getOrderNo(),
+ directRewardAmount,
+ MallMoneyFlowTypeEnum.DIRECT_REWARD.getCode(),
+ MallMoneyFlow.STATUS_SUCCESS,
+ MallMoneyFlow.IS_RETURN_Y,
+ mallMemberOne.getId(),
+ FlowTypeEnum.BALANCE.getValue(),
+ MallMoneyFlowTypeEnum.DIRECT_REWARD.getName()
+ );
+ memberWalletService.addBalance(directRewardAmount,mallMemberOne.getId());
+ DataDictionaryCustom shareOneDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.LEVEL_ONE.getType(),
+ DataDictionaryEnum.LEVEL_ONE.getCode()
+ );
+ //生成分享奖励的流水记录
+ BigDecimal shareOne = new BigDecimal(shareOneDic.getValue()).multiply(new BigDecimal(0.01)).setScale(2,BigDecimal.ROUND_DOWN);
+ BigDecimal shareOneAmount = subsidyAmount.multiply(shareOne).setScale(2, BigDecimal.ROUND_DOWN);
+ Long ShareOneFlowId = mallMoneyFlowService.addMoneyFlow(
+ mallMember.getId(),
+ orderInfo.getOrderNo(),
+ shareOneAmount,
+ MallMoneyFlowTypeEnum.SHARE_REWARD_ONE.getCode(),
+ MallMoneyFlow.STATUS_SUCCESS,
+ MallMoneyFlow.IS_RETURN_Y,
+ mallMemberOne.getId(),
+ FlowTypeEnum.BALANCE.getValue(),
+ MallMoneyFlowTypeEnum.SHARE_REWARD_ONE.getName()
+ );
+ memberWalletService.addBalance(shareOneAmount,mallMemberOne.getId());
+ }
//下单人的直推上级的直推
MallMember mallMemberTwo = memberMapper.selectInfoByInviteId(mallMemberOne.getReferrerId());
if(ObjectUtil.isNotEmpty(mallMemberTwo)){
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/OrderListVo.java b/src/main/java/cc/mrbird/febs/mall/vo/OrderListVo.java
index 4ec2948..40eafe2 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/OrderListVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/OrderListVo.java
@@ -45,4 +45,7 @@
@ApiModelProperty(value = "评价状态 1:待评价 2:已评价")
private Integer commentState;
+
+ @ApiModelProperty(value = "补贴金额")
+ private Integer subsidyAmount;
}
diff --git a/src/main/resources/mapper/modules/MallGoodsSkuMapper.xml b/src/main/resources/mapper/modules/MallGoodsSkuMapper.xml
index 99771dc..a1e5746 100644
--- a/src/main/resources/mapper/modules/MallGoodsSkuMapper.xml
+++ b/src/main/resources/mapper/modules/MallGoodsSkuMapper.xml
@@ -26,7 +26,11 @@
</select>
<select id="selectSkuByGoodsId" resultType="cc.mrbird.febs.mall.entity.MallGoodsSku">
- select a.*, b.name styleName from mall_goods_sku a
+ select
+ a.*,
+ b.name styleName,
+ b.name goodsName
+ from mall_goods_sku a
inner join mall_goods_style b on a.style_id=b.id
where a.goods_id=#{id}
</select>
diff --git a/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml b/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml
index e53d53f..368a4e2 100644
--- a/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml
+++ b/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml
@@ -138,7 +138,7 @@
<select id="selectOneByMemberIdAndOrderNoAndTypeAndStatusAndIsReturn" resultType="cc.mrbird.febs.mall.entity.MallMoneyFlow">
select a.*
from mall_money_flow a
- where a.memberId = #{memberId}
+ where a.member_id = #{memberId}
and a.order_no = #{orderNo}
and a.type = #{type}
and a.status = #{status}
diff --git a/src/test/java/cc/mrbird/febs/ProfitTest.java b/src/test/java/cc/mrbird/febs/ProfitTest.java
index 6d37c66..fb10558 100644
--- a/src/test/java/cc/mrbird/febs/ProfitTest.java
+++ b/src/test/java/cc/mrbird/febs/ProfitTest.java
@@ -1,18 +1,31 @@
package cc.mrbird.febs;
import cc.mrbird.febs.common.entity.FebsResponse;
+import cc.mrbird.febs.common.enumerates.MallMoneyFlowTypeEnum;
+import cc.mrbird.febs.common.enumerates.OrderStatusEnum;
+import cc.mrbird.febs.common.exception.FebsException;
+import cc.mrbird.febs.common.utils.AppContants;
+import cc.mrbird.febs.common.utils.LoginUserUtil;
import cc.mrbird.febs.common.utils.MallUtils;
+import cc.mrbird.febs.mall.entity.MallMember;
+import cc.mrbird.febs.mall.entity.MallMoneyFlow;
+import cc.mrbird.febs.mall.entity.MallOrderInfo;
import cc.mrbird.febs.mall.entity.MallOrderItem;
+import cc.mrbird.febs.mall.mapper.MallMemberMapper;
+import cc.mrbird.febs.mall.mapper.MallMoneyFlowMapper;
import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper;
import cc.mrbird.febs.mall.mapper.MallOrderItemMapper;
import cc.mrbird.febs.mall.quartz.OrderSettlementJob;
import cc.mrbird.febs.mall.service.IAgentService;
+import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
import cc.mrbird.febs.mall.service.IMallAchieveService;
import cc.mrbird.febs.mall.service.IMemberProfitService;
import cc.mrbird.febs.pay.model.*;
import cc.mrbird.febs.pay.service.UnipayService;
import cc.mrbird.febs.rabbit.consumer.AgentConsumer;
+import cc.mrbird.febs.rabbit.producter.AgentProducer;
import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@@ -31,61 +44,101 @@
@SpringBootTest
public class ProfitTest {
-// @Autowired
-// private AgentConsumer agentConsumer;
-//
-// @Autowired
-// private IAgentService agentService;
-//
-// @Autowired
-// private IMemberProfitService memberProfitService;
-//
+ @Autowired
+ private AgentConsumer agentConsumer;
+
+ @Autowired
+ private IAgentService agentService;
+
+ @Autowired
+ private IMemberProfitService memberProfitService;
+
+ @Test
+ public void dynamicProfit() {
+ memberProfitService.dynamicProfit(21L);
+ }
+ @Test
+ public void agentProfit() {
+ memberProfitService.agentProfit(null);
+ }
+
+
// @Test
-// public void dynamicProfit() {
-// memberProfitService.dynamicProfit(21L);
+// public void staticProfit() {
+// memberProfitService.staticProfit(new Date());
// }
-// @Test
-// public void agentProfit() {
-// memberProfitService.agentProfit(null);
-// }
-//
-//
-//// @Test
-//// public void staticProfit() {
-//// memberProfitService.staticProfit(new Date());
-//// }
-//
-// @Test
-// public void thankfulProfit() {
-// memberProfitService.thankfulProfit(new Date());
-// }
-//
-// @Test
-// public void rankProfit() {
-// memberProfitService.rankProfit();
-// }
-//
-// @Autowired
-// private MallOrderInfoMapper mallOrderInfoMapper;
-//
-// @Test
-// public void directorProfitTest() {
-// memberProfitService.storeAndDirectorProfit(new Date());
-// }
-//
-// @Autowired
-// private MallOrderItemMapper mallOrderItemMapper;
-//
-// @Autowired
-// private IMallAchieveService mallAchieveService;
-//
-// @Test
-// public void achieveTest() {
-// List<MallOrderItem> items = mallOrderItemMapper.selectList(null);
-// for (MallOrderItem item : items) {
-// mallAchieveService.add(item.getId());
-// }
-// }
+
+ @Test
+ public void thankfulProfit() {
+ memberProfitService.thankfulProfit(new Date());
+ }
+
+ @Test
+ public void rankProfit() {
+ memberProfitService.rankProfit();
+ }
+
+ @Autowired
+ private MallOrderInfoMapper mallOrderInfoMapper;
+
+ @Autowired
+ private MallMemberMapper mallMemberMapper;
+
+ @Autowired
+ private MallMoneyFlowMapper mallMoneyFlowMapper;
+
+ @Autowired
+ private IApiMallMemberWalletService memberWalletService;
+
+ @Autowired
+ private AgentProducer agentProducer;
+
+ @Test
+ public void directorProfitTest() {
+ MallMember member = mallMemberMapper.selectById(1L);
+ MallOrderInfo orderInfo = mallOrderInfoMapper.selectOrderByMemberIdAndId(member.getId(), 577L);
+ if (orderInfo == null || AppContants.DEL_FLAG_Y == orderInfo.getDelFlag()) {
+ throw new FebsException("订单不存在");
+ }
+
+ if (orderInfo.getStatus() != OrderStatusEnum.WAIT_FINISH.getValue()) {
+ throw new FebsException("该状态不能确认收货");
+ }
+
+ orderInfo.setStatus(OrderStatusEnum.FINISH.getValue());
+ orderInfo.setReceivingTime(new Date());
+ mallOrderInfoMapper.updateById(orderInfo);
+ /**
+ * 通过支付流水记录,返回下单金额
+ */
+ MallMoneyFlow payFlow = mallMoneyFlowMapper.selectOneByMemberIdAndOrderNoAndTypeAndStatusAndIsReturn(
+ member.getId(),
+ orderInfo.getOrderNo(),
+ MallMoneyFlowTypeEnum.PAY.getCode(),
+ MallMoneyFlow.STATUS_SUCCESS,
+ MallMoneyFlow.IS_RETURN_N);
+ if(ObjectUtil.isNotEmpty(payFlow)){
+ memberWalletService.addBalance(payFlow.getAmount().negate(),payFlow.getRtMemberId());
+ payFlow.setIsReturn(MallMoneyFlow.IS_RETURN_Y);
+ mallMoneyFlowMapper.updateById(payFlow);
+ }
+ //产生补贴流水记录
+ agentProducer.sendDirectRewardMsg(orderInfo.getId());
+ }
+
+ @Autowired
+ private MallOrderItemMapper mallOrderItemMapper;
+
+ @Autowired
+ private IMallAchieveService mallAchieveService;
+
+ @Test
+ public void achieveTest() {
+ List<MallOrderItem> items = mallOrderItemMapper.selectList(null);
+ for (MallOrderItem item : items) {
+ mallAchieveService.add(item.getId());
+ }
+ }
//
// @Test
// public void paramTest() {
--
Gitblit v1.9.1