From 7c2c2435ae5d5443593e260177d28dcc990ddea4 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Tue, 20 Dec 2022 14:49:41 +0800
Subject: [PATCH] 20221220 1、会员注册后level为会员 2、代理每天一点更新一次定时器 3、确认收货后返还订单金额,并且产生其余补贴
---
src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java | 2
src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java | 10
src/main/java/cc/mrbird/febs/mall/entity/MallMoneyFlow.java | 6
src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java | 10
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 75 ++---
src/main/java/cc/mrbird/febs/mall/service/impl/MallMoneyFlowServiceImpl.java | 17 +
src/main/resources/mapper/modules/MallMemberMapper.xml | 31 ++
src/main/java/cc/mrbird/febs/common/enumerates/MallMoneyFlowTypeEnum.java | 22 +
src/main/java/cc/mrbird/febs/mall/service/IAgentService.java | 6
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java | 2
src/main/java/cc/mrbird/febs/mall/quartz/OrderOvertimeJob.java | 95 +++++++
src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java | 11
src/main/java/cc/mrbird/febs/common/enumerates/MemberAgentLevelEnum.java | 102 ++++++++
src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java | 252 ++++++++++++++++++++
src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java | 31 ++
src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java | 1
src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java | 9
src/main/resources/mapper/modules/MallMoneyFlowMapper.xml | 10
src/main/java/cc/mrbird/febs/mall/entity/MallOrderInfo.java | 2
src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java | 6
src/main/java/cc/mrbird/febs/mall/service/IMallMoneyFlowService.java | 2
21 files changed, 641 insertions(+), 61 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
index 995697d..cf1ddf1 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
@@ -6,8 +6,39 @@
@Getter
public enum DataDictionaryEnum {
+ /**
+ * 代理等级
+ * value : {"levelSelf":"一星","directLevelCnt":"3","teamLevelCnt":"5","minTeamLevelCnt":"2","ManageSubsidyPercent":"2"}
+ * levelSelf:自身星级
+ * directLevelCnt:直推星级数量
+ * teamLevelCnt:团队星级数量
+ * minTeamLevelCnt:两个市场均有上一个代理等级
+ * ManageSubsidyPercent:团队管理补贴百分比例,基数为订单补贴金额
+ * subsidyPercent:平级团队管理补贴百分比例,基数为订单补贴金额
+ */
+ //{"levelSelf":"一星","directLevelCnt":"3","teamLevelCnt":"5","minTeamLevelCnt":"0","manageSubsidyPercent":"2","subsidyPercent":"0"}
+ AGENT_ONE("MEMBER_AGENT_LEVEL", "AGENT_ONE"),//区代
+ //{"levelSelf":"二星","directLevelCnt":"5","teamLevelCnt":"50","minTeamLevelCnt":"2","manageSubsidyPercent":"4","subsidyPercent":"1"}
+ AGENT_TWO("MEMBER_AGENT_LEVEL", "AGENT_TWO"),//县代
+ //{"levelSelf":"二星","directLevelCnt":"10","teamLevelCnt":"300","minTeamLevelCnt":"2","manageSubsidyPercent":"7","subsidyPercent":"1"}
+ AGENT_THREE("MEMBER_AGENT_LEVEL", "AGENT_THREE"),//市代
+ //{"levelSelf":"三星","directLevelCnt":"10","teamLevelCnt":"1000","minTeamLevelCnt":"2","manageSubsidyPercent":"12","subsidyPercent":"1"}
+ AGENT_FOUR("MEMBER_AGENT_LEVEL", "AGENT_FOUR"),//省代
+ //{"levelSelf":"三星","directLevelCnt":"10","teamLevelCnt":"5000","minTeamLevelCnt":"2","manageSubsidyPercent":"20","subsidyPercent":"1"}
+ AGENT_FIVE("MEMBER_AGENT_LEVEL", "AGENT_FIVE"),//总代
+
+ //第一代分享奖比例
+ LEVEL_ONE("SHARE_PERCENT", "LEVEL_ONE"),
+
+ //第二代分享奖比例
+ LEVEL_TWO("SHARE_PERCENT", "LEVEL_TWO"),
+
+ //直推返利的比例
+ REWARD_PERCENT("DIRECT_REWARD", "REWARD_PERCENT"),
+
//会员每日可用订单数
BUY_TIMES("ORDER_BUY", "BUY_TIMES"),
+
//商品补贴比例
SUBSIDY_PERCENT("GOODS_SUBSIDY", "SUBSIDY_PERCENT"),
diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/MallMoneyFlowTypeEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/MallMoneyFlowTypeEnum.java
new file mode 100644
index 0000000..7a65496
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/MallMoneyFlowTypeEnum.java
@@ -0,0 +1,22 @@
+package cc.mrbird.febs.common.enumerates;
+
+import lombok.Getter;
+
+@Getter
+public enum MallMoneyFlowTypeEnum {
+
+ TEAM_REWARD("团队管理补贴",6),
+ PAY("支付",5),
+ SHARE_REWARD_TWO("第二代分享奖励",4),
+ SHARE_REWARD_ONE("第一代分享奖励",3),
+ DIRECT_REWARD("直推奖励",2),
+ MARKET_SUBSIDIES("市场补贴",1);
+
+ private String name;
+ private Integer code;
+
+ MallMoneyFlowTypeEnum(String name,Integer code) {
+ this.name = name;
+ this.code = code;
+ }
+}
diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/MemberAgentLevelEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/MemberAgentLevelEnum.java
new file mode 100644
index 0000000..e1065d7
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/MemberAgentLevelEnum.java
@@ -0,0 +1,102 @@
+package cc.mrbird.febs.common.enumerates;
+
+import lombok.Getter;
+
+@Getter
+public enum MemberAgentLevelEnum {
+ AGENT_FIVE("总代","AGENT_FIVE",5),//总代
+ AGENT_FOUR("省代","AGENT_FOUR",4),//省代
+ AGENT_THREE("市代","AGENT_THREE",3),//市代
+ AGENT_TWO("县代","AGENT_TWO",2),//县代
+ AGENT_ONE("区代","AGENT_ONE",1),//区代
+ AGENT("会员","AGENT",0);//会员
+
+ private String name;
+ private String code;
+ private Integer value;
+
+ MemberAgentLevelEnum(String name,String code,Integer value) {
+ this.name = name;
+ this.code = code;
+ this.value = value;
+ }
+
+ /**
+ *
+ 根据传入的name,比较两个级别的大小
+ levelOne等于levelTwo返回2,levelOne大于levelTwo返回1,否则返回0
+ */
+ public int compareLevel(String levelOne ,String levelTwo) {
+ int codeOne = 0;
+ int codeTwo = 0;
+ for (MemberAgentLevelEnum memberAgentLevelEnum : MemberAgentLevelEnum.values()) {
+ if(memberAgentLevelEnum.name.equals(levelOne)){
+ codeOne = memberAgentLevelEnum.value;
+ }
+ if(memberAgentLevelEnum.name.equals(levelTwo)){
+ codeTwo = memberAgentLevelEnum.value;
+ }
+ }
+ if(codeOne > codeTwo){
+ return 1;
+ }
+ if(codeOne == codeTwo){
+ return 2;
+ }
+ return 0;
+ }
+
+ /**
+ * 根据传入的等级code,输出上一等级name
+ * @param code
+ * @return
+ */
+ public String minLevel(String code) {
+ String minLevel = null;
+ for (MemberAgentLevelEnum memberAgentLevelEnum : MemberAgentLevelEnum.values()) {
+ if(memberAgentLevelEnum.getCode().equals(code)){
+ minLevel = getNameByValue(memberAgentLevelEnum.getValue() - 1);
+ }
+ }
+ return minLevel;
+ }
+ private String getNameByValue(Integer value){
+ String name = null;
+ for (MemberAgentLevelEnum memberAgentLevelEnum : MemberAgentLevelEnum.values()) {
+ if(memberAgentLevelEnum.getValue() == value){
+ name = memberAgentLevelEnum.getName();
+ }
+ }
+ return name;
+ }
+
+ /**
+ * 根据传入的等级code,输出等级name
+ * @param code
+ * @return
+ */
+ public String getNameByCode(String code){
+ String name = null;
+ for (MemberAgentLevelEnum memberAgentLevelEnum : MemberAgentLevelEnum.values()) {
+ if(memberAgentLevelEnum.getCode() == code){
+ name = memberAgentLevelEnum.getName();
+ }
+ }
+ return name;
+ }
+
+ /**
+ * 根据传入的等级name,输出等级code
+ * @param name
+ * @return
+ */
+ public String getCodeByName(String name){
+ String code = null;
+ for (MemberAgentLevelEnum memberAgentLevelEnum : MemberAgentLevelEnum.values()) {
+ if(memberAgentLevelEnum.getName() == name){
+ code = memberAgentLevelEnum.getCode();
+ }
+ }
+ return code;
+ }
+}
diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java
index d560d5d..e1c2865 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java
@@ -2,18 +2,13 @@
import lombok.Getter;
-/**
- *
- * 1-静态收益 2-直推奖 3-代理收益 4-排名收益 5-总监收益 6-社区点补 7-一代收益 8-提现 9-转增 10-支付 11-退款
- * @author wzy
- * @date 2021-09-24
- **/
@Getter
public enum MoneyFlowTypeEnum {
/**
- * 静态收益
+ * 市场补贴
*/
- STATIC_BONUS(1),
+ MARKET_DUBSIDIES(1),
+ STATIC_BONUS(100),
/**
* 直推奖
*/
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallMoneyFlow.java b/src/main/java/cc/mrbird/febs/mall/entity/MallMoneyFlow.java
index 5d43427..a5d8bbf 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/MallMoneyFlow.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallMoneyFlow.java
@@ -32,15 +32,19 @@
private Long rtMemberId;
/**
- * 提现状态 1-提现中2-成功 3-拒绝
+ * 提现状态 1-进行中2-成功 3-拒绝
*/
private Integer status;
+ public static final Integer STATUS_ING = 1;
+ public static final Integer STATUS_SUCCESS = 2;
+ public static final Integer STATUS_FAIL = 3;
/**
* 是否返利 1-是 2-否
*/
private Integer isReturn;
public static final Integer IS_RETURN_Y = 1;
+ public static final Integer IS_RETURN_N = 2;
/**
* 流水类型 1-余额 2-赠送积分 3-竞猜积分 4-佣金
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallOrderInfo.java b/src/main/java/cc/mrbird/febs/mall/entity/MallOrderInfo.java
index 072fd1e..8e06c2f 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/MallOrderInfo.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallOrderInfo.java
@@ -93,4 +93,6 @@
private Integer deliverType;
private Long shopId;
+ //补贴金额
+ private BigDecimal subsidyAmount;
}
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java
index 5c4787a..7840717 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java
@@ -85,4 +85,14 @@
List<MallMember> selectDirectorsOrStoreMaster(@Param("type") Integer type);
List<MallMember> selectMemberWithLevel(String level);
+
+ List<MallMember> selectByAccountLevel(@Param("accountLevel")String accountLevel);
+
+ Integer selectByRefererIdAndAccountLevel(@Param("refererId")String refererId,@Param("accountLevel") String accountLevel);
+
+ Integer selectByReferersIdAndAccountLevel(@Param("inviteId")String inviteId,@Param("accountLevel") String accountLevel);
+
+ void updateLevelById(@Param("level")String name, @Param("id")Long id);
+
+ Integer selectByReferersIdAndLevel(@Param("inviteId")String inviteId, @Param("level")String minLevel);
}
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java
index eaa05c6..37d7687 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java
@@ -37,4 +37,10 @@
BigDecimal selectCommissionIncome(@Param("type") Integer type, @Param("date") Date date, @Param("memberId") Long memebrid);
BigDecimal selectThankfulCommission(@Param("date") Date date, @Param("memberId") Long memberId);
+
+ MallMoneyFlow selectOneByMemberIdAndOrderNoAndTypeAndStatusAndIsReturn(@Param("memberId")Long memberId,
+ @Param("orderNo")String orderNo,
+ @Param("type")Integer type,
+ @Param("status")Integer status,
+ @Param("isReturn")Integer isReturn);
}
diff --git a/src/main/java/cc/mrbird/febs/mall/quartz/OrderOvertimeJob.java b/src/main/java/cc/mrbird/febs/mall/quartz/OrderOvertimeJob.java
index c9ca6a6..18f657c 100644
--- a/src/main/java/cc/mrbird/febs/mall/quartz/OrderOvertimeJob.java
+++ b/src/main/java/cc/mrbird/febs/mall/quartz/OrderOvertimeJob.java
@@ -1,11 +1,20 @@
package cc.mrbird.febs.mall.quartz;
+import cc.mrbird.febs.common.enumerates.DataDictionaryEnum;
+import cc.mrbird.febs.common.enumerates.MemberAccountLevelEnum;
+import cc.mrbird.febs.common.enumerates.MemberAgentLevelEnum;
import cc.mrbird.febs.common.enumerates.OrderStatusEnum;
+import cc.mrbird.febs.mall.entity.DataDictionaryCustom;
+import cc.mrbird.febs.mall.entity.MallMember;
import cc.mrbird.febs.mall.entity.MallOrderInfo;
+import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper;
+import cc.mrbird.febs.mall.mapper.MallMemberMapper;
import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
@@ -25,6 +34,12 @@
@Autowired
private MallOrderInfoMapper orderInfoMapper;
+ @Autowired
+ private MallMemberMapper mallMemberMapper;
+
+ @Autowired
+ private DataDictionaryCustomMapper dataDictionaryCustomMapper;
+
@Scheduled(cron = "0 0/5 * * * ? ")
public void overtimeJob() {
log.info("订单超时任务执行");
@@ -42,4 +57,84 @@
}
}
+
+ @Scheduled(cron = "0 0 1 * * ? ")
+ public void updateMemberAgentLevel() {
+ log.info("会员代理等级升级任务执行");
+ /**
+ * 获取会员信息
+ * 1、已经升级成为一星
+ */
+ /**
+ * 区代
+ * 1、自身一星
+ * 2、直推三个星级
+ * 3、团队五个星级
+ */
+ updateMemberAgentLevelByName(DataDictionaryEnum.AGENT_ONE.getType(),DataDictionaryEnum.AGENT_ONE.getCode());
+ /**
+ * 县代
+ * 1、自身2星
+ * 2、直推5个星级
+ * 3、团队50个星级
+ */
+ updateMemberAgentLevelByName(DataDictionaryEnum.AGENT_TWO.getType(),DataDictionaryEnum.AGENT_TWO.getCode());
+ updateMemberAgentLevelByName(DataDictionaryEnum.AGENT_THREE.getType(),DataDictionaryEnum.AGENT_THREE.getCode());
+ updateMemberAgentLevelByName(DataDictionaryEnum.AGENT_FOUR.getType(),DataDictionaryEnum.AGENT_FOUR.getCode());
+ updateMemberAgentLevelByName(DataDictionaryEnum.AGENT_FIVE.getType(),DataDictionaryEnum.AGENT_FIVE.getCode());
+ }
+
+ private void updateMemberAgentLevelByName(String name,String code){
+ DataDictionaryCustom agentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ name,
+ code
+ );
+ JSONObject jsonObject = JSONUtil.parseObj(agentDic.getValue());
+ //自身星级
+ String levelSelf = jsonObject.get("levelSelf").toString();
+ //直推星级数量
+ String directLevelCnt = jsonObject.get("directLevelCnt").toString();
+ //团队星级数量
+ String teamLevelCnt = jsonObject.get("teamLevelCnt").toString();
+ //两个市场均有上一个代理等级
+ String minTeamLevelCnt = jsonObject.get("minTeamLevelCnt").toString();
+ List<MallMember> agentLevelList = mallMemberMapper.selectByAccountLevel(levelSelf);
+ if(CollUtil.isNotEmpty(agentLevelList)){
+ for(MallMember mallMember : agentLevelList){
+ //有星级的直推
+ Integer directCnt = mallMemberMapper.selectByRefererIdAndAccountLevel(mallMember.getInviteId(),MemberAccountLevelEnum.NORMAL.getName());
+ //团队中星级会员数量
+ Integer teamCnt = mallMemberMapper.selectByReferersIdAndAccountLevel(mallMember.getInviteId(),MemberAccountLevelEnum.NORMAL.getName());
+ //两个市场均有上一个代理等级
+ Integer minCnt = 0;
+ if(0 < Integer.parseInt(minTeamLevelCnt)){
+ String minLevel = MemberAgentLevelEnum.AGENT_ONE.minLevel(code);
+ //获取所有直推用户
+ List<MallMember> mallMembers = mallMemberMapper.selectByRefererId(mallMember.getInviteId());
+ if(CollUtil.isNotEmpty(mallMembers) && mallMembers.size() > 2){
+ Integer levelCnt = 0;
+ for(MallMember directMember : mallMembers){
+ Integer minlevelCnt = mallMemberMapper.selectByReferersIdAndLevel(directMember.getInviteId(),minLevel);
+ if(0 < minlevelCnt){
+ levelCnt = levelCnt + 1;
+ }
+ if(levelCnt >= Integer.parseInt(minTeamLevelCnt)){
+ minCnt = 1;
+ break;
+ }
+ }
+ }
+ }else{
+ //区代不需要判断这个市场条件
+ minCnt = 1;
+ }
+ if(Integer.parseInt(directLevelCnt) <= directCnt
+ && Integer.parseInt(teamLevelCnt) <= teamCnt
+ && minCnt > 0){
+ //更新会员代理等级
+ mallMemberMapper.updateLevelById(MemberAgentLevelEnum.AGENT_ONE.getNameByCode(code),mallMember.getId());
+ }
+ }
+ }
+ }
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IAgentService.java b/src/main/java/cc/mrbird/febs/mall/service/IAgentService.java
index bccd530..59cf4e9 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IAgentService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IAgentService.java
@@ -7,4 +7,10 @@
void returnMoneyToAgent(Long orderId);
void rankReturnMoney(Long orderId);
+
+ /**
+ * 消费补贴奖励、直推返利、分享奖励直推上级、分享奖励直推上级的直推、团队管理补贴消息
+ * @param directRewardId
+ */
+ void directReward(Long directRewardId);
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IMallMoneyFlowService.java b/src/main/java/cc/mrbird/febs/mall/service/IMallMoneyFlowService.java
index 5b35700..2fe88cd 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IMallMoneyFlowService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IMallMoneyFlowService.java
@@ -15,4 +15,6 @@
void addMoneyFlow(Long memberId, BigDecimal amount, Integer type, String orderNo, Long rtMemberId, Integer flowType);
+ Long addMoneyFlow(Long memberId, String orderNo,BigDecimal amount, Integer type, Integer status, Integer isReturn,Long rtMemberId, Integer flowType,String description);
+
}
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 eb14dd2..10a8612 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
@@ -1,19 +1,14 @@
package cc.mrbird.febs.mall.service.impl;
-import cc.mrbird.febs.common.enumerates.AgentLevelEnum;
-import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum;
+import cc.mrbird.febs.common.enumerates.*;
import cc.mrbird.febs.common.utils.AppContants;
-import cc.mrbird.febs.mall.entity.AgentInfo;
-import cc.mrbird.febs.mall.entity.DataDictionaryCustom;
-import cc.mrbird.febs.mall.entity.MallMember;
-import cc.mrbird.febs.mall.entity.MallOrderInfo;
+import cc.mrbird.febs.mall.entity.*;
import cc.mrbird.febs.mall.mapper.*;
-import cc.mrbird.febs.mall.service.IAgentService;
-import cc.mrbird.febs.mall.service.IApiMallMemberService;
-import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
-import cc.mrbird.febs.mall.service.IMallAchieveService;
+import cc.mrbird.febs.mall.service.*;
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSONObject;
import jdk.nashorn.internal.ir.IfNode;
import lombok.RequiredArgsConstructor;
@@ -39,6 +34,9 @@
private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
private final MallMemberMapper memberMapper;
+ private final MallOrderInfoMapper mallOrderInfoMapper;
+ private final IMallMoneyFlowService mallMoneyFlowService;
+ private final IApiMallMemberWalletService memberWalletService;
@Override
@Transactional(rollbackFor = Exception.class)
@@ -136,7 +134,6 @@
/**
* 团队业绩是否达标
*
- * @param mallMember
* @param agentInfo
* @return
*/
@@ -161,4 +158,237 @@
public void rankReturnMoney(Long orderId) {
}
+
+ @Override
+ public void directReward(Long directRewardId) {
+ log.info("消费补贴奖励、直推返利、分享奖励直推上级、分享奖励直推上级的直推、团队管理补贴消息,ID:{}", directRewardId);
+ //获取订单信息
+ MallOrderInfo orderInfo = mallOrderInfoMapper.selectById(directRewardId);
+ if(ObjectUtil.isEmpty(orderInfo)){
+ return;
+ }
+ Integer status = orderInfo.getStatus();
+ if(OrderStatusEnum.FINISH.getValue() != status){
+ return;
+ }
+ //下单补贴金额
+ BigDecimal subsidyAmount = orderInfo.getSubsidyAmount();
+ //下单人
+ Long memberId = orderInfo.getMemberId();
+ MallMember mallMember = memberMapper.selectById(memberId);
+ /**
+ * 生成补贴的流水记录
+ * 1、待生效
+ * 2、返利对象,下单人
+ * 3、金额,补贴金额
+ */
+ Long subsidyAmountFlowId = mallMoneyFlowService.addMoneyFlow(
+ mallMember.getId(),
+ orderInfo.getOrderNo(),
+ subsidyAmount.setScale(BigDecimal.ROUND_DOWN, 2),
+ MallMoneyFlowTypeEnum.MARKET_SUBSIDIES.getCode(),
+ MallMoneyFlow.STATUS_SUCCESS,
+ MallMoneyFlow.IS_RETURN_Y,
+ mallMember.getId(),
+ FlowTypeEnum.BALANCE.getValue(),
+ MallMoneyFlowTypeEnum.MARKET_SUBSIDIES.getName()
+ );
+
+ memberWalletService.addBalance(subsidyAmount.setScale(BigDecimal.ROUND_DOWN, 2),mallMember.getId());
+
+ /**
+ * 生成直推返利的流水记录
+ * 1、待生效
+ * 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(BigDecimal.ROUND_DOWN,2);
+ BigDecimal directRewardAmount = subsidyAmount.multiply(rewardPercent).setScale(BigDecimal.ROUND_DOWN, 2);
+
+ 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(BigDecimal.ROUND_DOWN,2);
+ BigDecimal shareOneAmount = subsidyAmount.multiply(shareOne).setScale(BigDecimal.ROUND_DOWN, 2);
+ 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)){
+ DataDictionaryCustom shareTwoDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.LEVEL_TWO.getType(),
+ DataDictionaryEnum.LEVEL_TWO.getCode()
+ );
+ BigDecimal shareTwo = new BigDecimal(shareTwoDic.getValue()).multiply(new BigDecimal(0.01)).setScale(BigDecimal.ROUND_DOWN,2);
+ BigDecimal shareTwoAmount = subsidyAmount.multiply(shareTwo).setScale(BigDecimal.ROUND_DOWN, 2);
+ Long shareTwoFlowId = mallMoneyFlowService.addMoneyFlow(
+ mallMember.getId(),
+ orderInfo.getOrderNo(),
+ shareTwoAmount,
+ MallMoneyFlowTypeEnum.SHARE_REWARD_TWO.getCode(),
+ MallMoneyFlow.STATUS_SUCCESS,
+ MallMoneyFlow.IS_RETURN_Y,
+ mallMemberTwo.getId(),
+ FlowTypeEnum.BALANCE.getValue(),
+ MallMoneyFlowTypeEnum.SHARE_REWARD_TWO.getName()
+ );
+ memberWalletService.addBalance(shareTwoAmount,mallMemberTwo.getId());
+ }
+ /**
+ * 团队管理补贴
+ */
+ //下单人所有的上级
+ String referrerIds = mallMember.getReferrerIds();
+ List<String> refererIdList = StrUtil.split(referrerIds, ",", -1, true, true);
+ //下单人所有符合条件的上级-邀请码
+ ArrayList<String> refererIdListUp = new ArrayList<>();
+ //初始级别即当前下单人的级别
+ String levelStart = mallMember.getLevel();
+ for(String inviteId : refererIdList){
+ MallMember mallMemberUp = memberMapper.selectInfoByInviteId(inviteId);
+ String levelUp = mallMemberUp.getLevel();
+ //团队补贴从区代开始
+ if(!MemberAgentLevelEnum.AGENT.getName().equals(levelUp)){
+ //比较两个代理级别,同级别或者大于下单人的级别都保留
+ int compareLevel = MemberAgentLevelEnum.AGENT_ONE.compareLevel(levelUp,levelStart);
+ if(0 < compareLevel){
+ levelStart = levelUp;
+ refererIdListUp.add(inviteId);
+ }
+ }
+ }
+ if(CollUtil.isNotEmpty(refererIdListUp)){
+ for(String inviteId : refererIdList){
+ MallMember mallMemberUp = memberMapper.selectInfoByInviteId(inviteId);
+ String levelUp = mallMemberUp.getLevel();
+ //获取团队分享比例
+ BigDecimal manageSubsidyPercent = getManageSubsidyPercent(levelStart, levelUp);
+ if(manageSubsidyPercent.compareTo(BigDecimal.ZERO) > 0){
+ BigDecimal teamManageAmount = subsidyAmount.multiply(manageSubsidyPercent).setScale(BigDecimal.ROUND_DOWN, 2);
+ //生成团队分享流水
+ Long teamManageFlowId = mallMoneyFlowService.addMoneyFlow(
+ mallMember.getId(),
+ orderInfo.getOrderNo(),
+ teamManageAmount,
+ MallMoneyFlowTypeEnum.SHARE_REWARD_TWO.getCode(),
+ MallMoneyFlow.STATUS_SUCCESS,
+ MallMoneyFlow.IS_RETURN_Y,
+ mallMemberUp.getId(),
+ FlowTypeEnum.BALANCE.getValue(),
+ MallMoneyFlowTypeEnum.TEAM_REWARD.getName()
+ );
+
+ memberWalletService.addBalance(teamManageAmount,mallMemberUp.getId());
+ }
+ levelStart = levelUp;
+ }
+ }
+ }
+
+ /**
+ * 根据传入的两个级别,比较之后获取对应的团队管理奖励比例
+ * @param levelStart
+ * @param levelUp
+ * @return
+ */
+ private BigDecimal getManageSubsidyPercent(String levelStart,String levelUp){
+ BigDecimal manageSubsidyPercent = BigDecimal.ZERO;
+ String agentCodeStart = MemberAgentLevelEnum.AGENT_ONE.getCodeByName(levelStart);
+ String agentCodeUp = MemberAgentLevelEnum.AGENT_ONE.getCodeByName(levelUp);
+ int compareLevel = MemberAgentLevelEnum.AGENT_ONE.compareLevel(levelUp, levelStart);
+ //如果是平级
+ if(compareLevel == 2){
+ manageSubsidyPercent = getDicSubsidyPercent(agentCodeStart);
+ }
+ //如果不是平级
+ if(compareLevel == 1){
+ //1、初始级别不能是会员
+ //2、当前级别的上一个级别是否是levelStart,
+ // 满足,需要减去levelStart的团队管理奖励
+ String minLevel = MemberAgentLevelEnum.AGENT_ONE.minLevel(agentCodeUp);
+ if(levelStart.equals(minLevel)
+ && MemberAgentLevelEnum.AGENT.getName() != levelStart){
+ BigDecimal dicManageSubsidyPercentUp = getDicManageSubsidyPercent(agentCodeUp);
+ BigDecimal dicManageSubsidyPercentStart = getDicManageSubsidyPercent(agentCodeStart);
+ manageSubsidyPercent = dicManageSubsidyPercentUp.subtract(dicManageSubsidyPercentStart);
+ }else{
+ manageSubsidyPercent = getDicManageSubsidyPercent(agentCodeUp);
+ }
+ }
+ return manageSubsidyPercent;
+ }
+
+ /**
+ * 获取对应的团队管理奖励比例
+ * @param agentCode
+ * @return
+ */
+ private BigDecimal getDicManageSubsidyPercent(String agentCode){
+ BigDecimal manageSubsidyPercent = BigDecimal.ZERO;
+ DataDictionaryCustom agentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.AGENT_ONE.getType(),
+ agentCode
+ );
+ cn.hutool.json.JSONObject jsonObject = JSONUtil.parseObj(agentDic.getValue());
+ String manageSubsidyPercentStr = jsonObject.get("manageSubsidyPercent").toString();
+ manageSubsidyPercent = new BigDecimal(manageSubsidyPercentStr)
+ .multiply(new BigDecimal(0.01))
+ .setScale(BigDecimal.ROUND_DOWN,2);
+ return manageSubsidyPercent;
+ }
+
+ /**
+ * 获取对应的平级团队管理奖励比例
+ * @param agentCode
+ * @return
+ */
+ private BigDecimal getDicSubsidyPercent(String agentCode){
+ BigDecimal subsidyPercent = BigDecimal.ZERO;
+ DataDictionaryCustom agentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.AGENT_ONE.getType(),
+ agentCode
+ );
+ cn.hutool.json.JSONObject jsonObject = JSONUtil.parseObj(agentDic.getValue());
+ String subsidyPercentStr = jsonObject.get("manageSubsidyPercent").toString();
+ subsidyPercent = new BigDecimal(subsidyPercentStr)
+ .multiply(new BigDecimal(0.01))
+ .setScale(BigDecimal.ROUND_DOWN,2);
+ return subsidyPercent;
+ }
+
}
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 324e026..8b6aae4 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
@@ -112,7 +112,7 @@
mallMember.setAccountStatus(MallMember.ACCOUNT_STATUS_ENABLE);
mallMember.setAccountType(MallMember.ACCOUNT_TYPE_NORMAL);
mallMember.setAccountLevel(MemberAccountLevelEnum.NORMAL.getName());
- mallMember.setLevel(AgentLevelEnum.ZERO_LEVEL.name());
+ mallMember.setLevel(MemberAgentLevelEnum.AGENT.getName());
mallMember.setSex("男");
mallMember.setBindPhone(registerDto.getAccount());
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
index 113348b..54860bf 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -69,6 +69,7 @@
private final MallShoppingCartMapper mallShoppingCartMapper;
private final IApiMallMemberService memberService;
private final IMallMoneyFlowService mallMoneyFlowService;
+ private final MallMoneyFlowMapper mallMoneyFlowMapper;
private final RedisUtils redisUtils;
private final AgentProducer agentProducer;
@@ -131,7 +132,8 @@
// orderInfo.setLongitude(address.getLongitude());
orderInfo.setRemark(addOrderDto.getRemark());
orderInfo.setOrderType(addOrderDto.getOrderType());
-
+ //补贴金额
+ orderInfo.setSubsidyAmount(goods.getSubsidyAmount());
if (CollUtil.isEmpty(addOrderDto.getItems())) {
throw new FebsException("参数错误");
}
@@ -361,46 +363,22 @@
orderInfo.setPayTime(new Date());
orderInfo.setPayResult("1");
-// boolean hasTc = false;
- // 静态倍数
-// List<MallOrderItem> orderItems = this.baseMapper.getMallOrderItemByOrderId(orderInfo.getId());
-// if (CollUtil.isNotEmpty(orderItems)) {
-// for (MallOrderItem orderItem : orderItems) {
-// MallGoods mallGoods = mallGoodsMapper.selectById(orderItem.getGoodsId());
-// BigDecimal score = BigDecimal.ZERO;
-// MallGoodsSku sku = mallGoodsSkuMapper.selectById(orderItem.getSkuId());
-// if (mallGoods.getIsNormal() == 2) {
-// hasTc = true;
-// score = sku.getPresentPrice().multiply(mallGoods.getStaticMulti()).multiply(new BigDecimal(orderItem.getCnt()));
-//// BigDecimal staticMulti = mallGoods.getStaticMulti() == null ? BigDecimal.ZERO : mallGoods.getStaticMulti();
-//// score = sku.getPresentPrice().multiply(staticMulti);
-// // 普通商品也及时结算,不再10天结算
-// } else {
-// score = sku.getPresentPrice();
-// }
-//
-// if (score.compareTo(BigDecimal.ZERO) > 0) {
-// memberWalletService.add(score, member.getId(), "score");
-// mallMoneyFlowService.addMoneyFlow(member.getId(), score, MoneyFlowTypeEnum.STATIC_BONUS.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.SCORE.getValue());
-//
-// // 添加业绩
-// mallAchieveService.add(orderItem.getId());
-// }
-// }
-// }
+// mallMoneyFlowService.addMoneyFlow(member.getId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue());
+ /**
+ * 生成下单的流水记录
+ */
+ Long payFlowId = mallMoneyFlowService.addMoneyFlow(
+ member.getId(),
+ orderInfo.getOrderNo(),
+ orderInfo.getAmount().negate().setScale(BigDecimal.ROUND_DOWN, 2),
+ MallMoneyFlowTypeEnum.PAY.getCode(),
+ MallMoneyFlow.STATUS_SUCCESS,
+ MallMoneyFlow.IS_RETURN_N,
+ member.getId(),
+ FlowTypeEnum.BALANCE.getValue(),
+ MallMoneyFlowTypeEnum.PAY.getName()
+ );
- // 购买套餐后,升级为普通会员
-// if (hasTc) {
-// MallMember mallMember = memberMapper.selectById(member.getId());
-// if (AgentLevelEnum.ZERO_LEVEL.name().equals(mallMember.getLevel())) {
-// mallMember.setLevel(AgentLevelEnum.FIRST_LEVEL.name());
-// memberMapper.updateById(mallMember);
-// }
-// }
-
- mallMoneyFlowService.addMoneyFlow(member.getId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue());
-// agentProducer.sendAutoLevelUpMsg(member.getId());
-// agentProducer.sendOrderReturn(orderInfo.getId());
break;
case "4":
if (orderInfo.getOrderType() != 2) {
@@ -600,6 +578,23 @@
orderInfo.setStatus(OrderStatusEnum.FINISH.getValue());
orderInfo.setReceivingTime(new Date());
this.baseMapper.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());
+
}
@Override
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/MallMoneyFlowServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/MallMoneyFlowServiceImpl.java
index 54e1212..4519acc 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/MallMoneyFlowServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/MallMoneyFlowServiceImpl.java
@@ -49,4 +49,21 @@
public void addMoneyFlow(Long memberId, BigDecimal amount, Integer type, String orderNo, Long rtMemberId, Integer flowType) {
this.addMoneyFlow(memberId, amount, type, orderNo, null, null, rtMemberId, null, flowType, null);
}
+
+ @Override
+ public Long addMoneyFlow(Long memberId,String orderNo,BigDecimal amount, Integer type, Integer status, Integer isReturn, Long rtMemberId, Integer flowType, String description) {
+ MallMoneyFlow flow = new MallMoneyFlow();
+ flow.setMemberId(memberId);
+ flow.setOrderNo(orderNo);
+ flow.setAmount(amount);
+ flow.setType(type);
+ flow.setStatus(status);
+ flow.setIsReturn(isReturn);
+ flow.setRtMemberId(rtMemberId);
+ flow.setFlowType(flowType);
+ flow.setDescription(description);
+ this.baseMapper.insert(flow);
+ return flow.getId();
+ }
+
}
diff --git a/src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java b/src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java
index 47cee57..bf5cf07 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java
@@ -10,4 +10,5 @@
public static final String AGENT_AUTO_LEVEL_UP = "queue_agent_auto_level_up";
public static final String AGENT_RETURN_MONEY = "queue_agent_return_money";
public static final String ORDER_RETURN_MONEY = "queue_order_return_money";
+ public static final String MALL_COIN_DIRECT_REWARD = "queue_mall_coin_direct_reward";
}
diff --git a/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java b/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java
index 46c50a1..a4e09f8 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java
@@ -72,4 +72,14 @@
log.error("订单返利异常:", e);
}
}
+
+ @RabbitListener(queues = QueueConstants.MALL_COIN_DIRECT_REWARD)
+ public void directReward(Long directRewardId) {
+ log.info("消费补贴奖励、直推返利、分享奖励直推上级、分享奖励直推上级的直推、团队管理补贴消息:{}", directRewardId);
+ try {
+ agentService.directReward(directRewardId);
+ } catch (Exception e) {
+ log.error("消费奖励异常", e);
+ }
+ }
}
diff --git a/src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java b/src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java
index 90122ca..1bbae80 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java
@@ -4,6 +4,8 @@
@Getter
public enum RabbitQueueEnum {
+ //补贴奖励、直推返利、分享奖励直推上级、分享奖励直推上级的直推、团队管理补贴
+ MALL_COIN_DIRECT_REWARD("exchange_mall_coin_direct_reward", "route_key_mall_coin_direct_reward", "queue_mall_coin_direct_reward"),
DEFAULT("exchange_default", "route_key_default", "queue_default"),
diff --git a/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java b/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java
index 0ddb24b..2bef42e 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java
@@ -76,4 +76,13 @@
log.info("发送返利消息:{}", orderId);
rabbitTemplate.convertAndSend(RabbitQueueEnum.AGENT_REUTRN_MONEY.getExchange(), RabbitQueueEnum.AGENT_REUTRN_MONEY.getRoute(), orderId);
}
+
+ /**
+ * 发送直推奖励消息
+ * @param directRewardId 订单ID
+ */
+ public void sendDirectRewardMsg(@NotNull Long directRewardId) {
+ log.info("发送补贴奖励、直推返利、分享奖励直推上级、分享奖励直推上级的直推、团队管理补贴消息:{}", directRewardId);
+ rabbitTemplate.convertAndSend(RabbitQueueEnum.MALL_COIN_DIRECT_REWARD.getExchange(), RabbitQueueEnum.MALL_COIN_DIRECT_REWARD.getRoute(), directRewardId);
+ }
}
diff --git a/src/main/resources/mapper/modules/MallMemberMapper.xml b/src/main/resources/mapper/modules/MallMemberMapper.xml
index 060eb78..97e4d64 100644
--- a/src/main/resources/mapper/modules/MallMemberMapper.xml
+++ b/src/main/resources/mapper/modules/MallMemberMapper.xml
@@ -400,4 +400,35 @@
select * from mall_member
where level=#{level}
</select>
+
+ <select id="selectByAccountLevel" resultType="cc.mrbird.febs.mall.entity.MallMember">
+ select * from mall_member
+ where account_level = #{accountLevel}
+ </select>
+
+ <select id="selectByRefererIdAndAccountLevel" resultType="java.lang.Integer">
+ select count(id) from mall_member
+ where account_level != #{accountLevel}
+ and referer_id = #{refererId}
+ </select>
+
+ <select id="selectByReferersIdAndAccountLevel" resultType="java.lang.Integer">
+ select count(id) from mall_member
+ where account_level != #{accountLevel}
+ and FIND_IN_SET(#{inviteId}, referrer_ids)
+ </select>
+
+ <update id="updateLevelById">
+ update mall_member
+ set
+ level = #{level}
+ where
+ id = #{id}
+ </update>
+
+ <select id="selectByReferersIdAndLevel" resultType="java.lang.Integer">
+ select count(id) from mall_member
+ where level = #{level}
+ and FIND_IN_SET(#{inviteId}, referrer_ids)
+ </select>
</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml b/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml
index 8b00702..de38deb 100644
--- a/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml
+++ b/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml
@@ -132,4 +132,14 @@
and date_format(created_time, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d')
and type in (2,3,4)
</select>
+
+ <select id="selectOneByMemberIdAndOrderNoAndTypeAndStatusAndIsReturn" resultType="cc.mrbird.febs.mall.entity.MallMoneyFlow">
+ select a.*
+ from mall_money_flow a
+ where a.memberId = #{memberId}
+ and a.order_no = #{orderNo}
+ and a.type = #{type}
+ and a.status = #{status}
+ and a.is_return = #{isReturn}
+ </select>
</mapper>
\ No newline at end of file
--
Gitblit v1.9.1