From fe00af0129ea00d7b3e33af06ab8f48acaf0389c Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Mon, 13 Feb 2023 13:31:22 +0800
Subject: [PATCH] 普通用户充值固定金额后,自动升级成为合伙人

---
 src/main/java/cc/mrbird/febs/mall/dto/ApiRechargeWalletDto.java              |    3 +++
 src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java            |    7 +++++++
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAgentServiceImpl.java  |    4 +++-
 src/main/resources/mapper/modules/MallAgentRecordMapper.xml                  |   11 +++++++++++
 src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java       |    2 ++
 src/main/java/cc/mrbird/febs/pay/service/impl/XcxPayServiceImpl.java         |    2 +-
 src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java         |    2 ++
 src/main/java/cc/mrbird/febs/mall/mapper/MallAgentRecordMapper.java          |    4 ++++
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java |   22 ++++++++++++++++++++++
 9 files changed, 55 insertions(+), 2 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 928a949..b8210ab 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
@@ -8,6 +8,8 @@
     //微信订阅模板ID,
     // 微信订单通知
 //    WX_TEMPLATE_ID_ONE("WX_TEMPLATE", "WX_TEMPLATE_ID_ONE"),
+    // 成为合伙人的充值金额
+    PRICE_AMOUNT("AGENT_PRICE", "PRICE_AMOUNT"),
     // 充值到账通知
     WX_TEMPLATE_ID_TWO("WX_TEMPLATE", "WX_TEMPLATE_ID_TWO"),
     // 提货通知
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/ApiRechargeWalletDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiRechargeWalletDto.java
index fc8ea85..93b35e2 100644
--- a/src/main/java/cc/mrbird/febs/mall/dto/ApiRechargeWalletDto.java
+++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiRechargeWalletDto.java
@@ -10,6 +10,9 @@
 @ApiModel(value = "ApiRechargeWalletDto", description = "余额充值接收类")
 public class ApiRechargeWalletDto {
 
+    @ApiModelProperty(value = "1:普通充值 2:合伙人充值", example = "10")
+    private Integer type;
+
     @ApiModelProperty(value = "充值金额", example = "10")
     private BigDecimal amount;
 
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallAgentRecordMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallAgentRecordMapper.java
index 5e3b8cf..7cc7f02 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallAgentRecordMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallAgentRecordMapper.java
@@ -11,4 +11,8 @@
     MallAgentRecord selectByMemberIdAndState(@Param("memberId")Long memberId, @Param("state")Integer applyIng);
 
     IPage<MallAgentRecord> selectMallAgentRecordListInPage(Page<MallAgentRecord> page, @Param("record")MallAgentRecord mallAgentRecord);
+
+    void updateStateByMemberId(@Param("memberId")Long memberId);
+
+    void deleteByMemberIdAndState(@Param("memberId")Long memberId, @Param("state")Integer applyIng);
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java b/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java
index e07d737..8de90c2 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java
@@ -75,4 +75,6 @@
     FebsResponse xcxOpen(ApiXcxOpenDto apiXcxOpenDto);
 
     FebsResponse rechargeWallet(ApiRechargeWalletDto apiRechargeWalletDto);
+
+    void updateMemberAgent(Long memberId);
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAgentServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAgentServiceImpl.java
index 94ab94b..d9e4b82 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAgentServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAgentServiceImpl.java
@@ -12,6 +12,8 @@
 import cc.mrbird.febs.mall.mapper.MallMemberMapper;
 import cc.mrbird.febs.mall.service.IApiMallAgentService;
 import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -36,7 +38,7 @@
         //判断用户是否正在申请
         MallAgentRecord mallAgentRecord = mallAgentRecordMapper.selectByMemberIdAndState(memberId,MallAgentRecord.APPLY_ING);
         if(ObjectUtil.isNotEmpty(mallAgentRecord)){
-            return new FebsResponse().fail().message("用户已申请");
+            mallAgentRecordMapper.deleteByMemberIdAndState(memberId,MallAgentRecord.APPLY_ING);
         }
 
         MallAgentRecord mallAgentRecordNew = MallAgentRecordConversion.INSTANCE.dtoToEntity(apiAgentApplyDto);
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 053e033..6404772 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
@@ -741,6 +741,18 @@
         if(BigDecimal.ZERO.compareTo(amount)>0){
             return new FebsResponse().fail().message("请输入正确的充值金额");
         }
+        Integer type = apiRechargeWalletDto.getType();
+        if(2 == type){
+            //成为合伙人的充值金额
+            DataDictionaryCustom agentPriceDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.PRICE_AMOUNT.getType(),
+                    DataDictionaryEnum.PRICE_AMOUNT.getCode());
+            String agentPrice = agentPriceDic.getValue();
+            BigDecimal price = new BigDecimal(agentPrice);
+            if(price.compareTo(amount) != 0){
+                return new FebsResponse().fail().message("成为合伙人的金额为"+agentPrice);
+            }
+        }
+
         apiRechargeWalletDto.setMemberId(memberId);
         BrandWCPayRequestData brandWCPayRequestData = null;
         try {
@@ -756,6 +768,16 @@
         return new FebsResponse().success().data(map).message("充值即将到账");
     }
 
+    @Override
+    public void updateMemberAgent(Long memberId) {
+        mallAgentRecordMapper.updateStateByMemberId(memberId);
+
+        //更新用户表中的LEVEL
+        MallMember mallMember = this.baseMapper.selectById(memberId);
+        mallMember.setLevel(AgentLevelEnum.FIRST_LEVEL.name());
+        this.baseMapper.updateById(mallMember);
+    }
+
     private  String getXcxLoginUrl(String code) {
         String wechatLoginUrl =xcxProperties.getWecharLoginUrl();
         return String.format(wechatLoginUrl, xcxProperties.getXcxAppid(), xcxProperties.getXcxSecret(), code);
diff --git a/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java b/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java
index 011abe4..61e816c 100644
--- a/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java
+++ b/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java
@@ -13,6 +13,7 @@
 import cc.mrbird.febs.mall.entity.MallMoneyFlow;
 import cc.mrbird.febs.mall.entity.MallOrderInfo;
 import cc.mrbird.febs.mall.mapper.*;
+import cc.mrbird.febs.mall.service.IApiMallMemberService;
 import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
 import cc.mrbird.febs.pay.model.NotifyData;
 import cc.mrbird.febs.pay.model.OrderStateDto;
@@ -69,6 +70,8 @@
     RedisUtils redisUtils;
     @Autowired
     private IApiMallMemberWalletService memberWalletService;
+    @Autowired
+    private IApiMallMemberService mallMemberService;
 
     @Autowired
     private IXcxPayService iXcxPayService;
@@ -109,6 +112,7 @@
                 attrStr = data.getAttach();
                 JSONObject jsonObject = JSONUtil.parseObj(attrStr);
                 String rechargeNo = (String) jsonObject.get("rechargeNo");
+                Integer type = (Integer) jsonObject.get("type");
                 Long memberId = Long.parseLong(jsonObject.get("memberId").toString());
                 // 检验订单状态
                 MallMoneyFlow mallMoneyFlow = mallMoneyFlowMapper.selectOneByOrderNoAndMemberId(rechargeNo,memberId);
@@ -132,6 +136,9 @@
 
                         if (ObjectUtil.isNotEmpty(mallMoneyFlow)) {
                             log.debug("检查支付金额payMoney={},mallMoneyFlow.getPayMoney()={}", payMoney, mallMoneyFlow.getAmount());
+                            if(2 == type){
+                                mallMemberService.updateMemberAgent(memberId);
+                            }
                             memberWalletService.addBalance(payMoney,memberId);
                             mallMoneyFlow.setStatus(2);
                             mallMoneyFlowMapper.updateById(mallMoneyFlow);
diff --git a/src/main/java/cc/mrbird/febs/pay/service/impl/XcxPayServiceImpl.java b/src/main/java/cc/mrbird/febs/pay/service/impl/XcxPayServiceImpl.java
index 1c65d04..7f848cc 100644
--- a/src/main/java/cc/mrbird/febs/pay/service/impl/XcxPayServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/pay/service/impl/XcxPayServiceImpl.java
@@ -80,7 +80,7 @@
         MallMember mallMember = mallMemberMapper.selectById(apiRechargeWalletDto.getMemberId());
         String rechargeNo = "CZ_"+MallUtils.getOrderNum();
         Boolean debug = xcxProperties.getDebug();
-        String attrStr = "{'rechargeNo':"+rechargeNo+",'memberId':"+mallMember.getId()+"}";
+        String attrStr = "{'rechargeNo':"+rechargeNo+",'memberId':"+mallMember.getId()+",'type':"+apiRechargeWalletDto.getType()+"}";
         if (debug) {
             payData = weixinServiceUtil.createRechargeWallet("[测试]" + productNames, rechargeNo,
                     1, mallMember.getOpenId(), attrStr);
diff --git a/src/main/resources/mapper/modules/MallAgentRecordMapper.xml b/src/main/resources/mapper/modules/MallAgentRecordMapper.xml
index a9fb76e..5234f22 100644
--- a/src/main/resources/mapper/modules/MallAgentRecordMapper.xml
+++ b/src/main/resources/mapper/modules/MallAgentRecordMapper.xml
@@ -31,4 +31,15 @@
         GROUP BY a.id order by a.CREATED_TIME desc
     </select>
 
+    <update id="updateStateByMemberId">
+        update mall_agent_record
+        set state = 2
+        where member_id = #{memberId}
+    </update>
+
+    <delete id="deleteByMemberIdAndState">
+        delete from mall_agent_record
+        where member_id = #{memberId} and state = #{state}
+    </delete>
+
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.1