From 24f3b972cf932fe4247948d0239218c57c1c595a Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Wed, 31 Aug 2022 16:40:33 +0800
Subject: [PATCH] 20220822

---
 src/main/java/cc/mrbird/febs/mall/vo/RechargeWalletMessageSendVo.java   |   19 ++++++
 src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java       |   28 +++++++--
 src/main/java/cc/mrbird/febs/pay/service/IXcxPayService.java            |    7 ++
 src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java  |    5 +
 src/main/java/cc/mrbird/febs/pay/service/impl/XcxPayServiceImpl.java    |   37 ++++++++++--
 src/main/resources/mapper/modules/MallMoneyFlowMapper.xml               |    2 
 src/main/java/cc/mrbird/febs/mall/dto/RechargeWalletMessageSendDto.java |   24 ++++++++
 7 files changed, 106 insertions(+), 16 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 46fea59..7d17f65 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
@@ -5,8 +5,11 @@
 
 @Getter
 public enum DataDictionaryEnum {
-    //微信订阅模板ID,微信订单通知
+    //微信订阅模板ID,
+    // 微信订单通知
     WX_TEMPLATE_ID_ONE("WX_TEMPLATE", "WX_TEMPLATE_ID_ONE"),
+    // 充值到账通知
+    WX_TEMPLATE_ID_TWO("WX_TEMPLATE", "WX_TEMPLATE_ID_TWO"),
     //配送设置
     HOME_DELIVERY_AMOUNT("DELIVERY_SETTING", "HOME_DELIVERY_AMOUNT"),
     FRIST_COST_LEVEL("HOME_DELIVERY_SETTING", "FRIST_COST_LEVEL"),
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/RechargeWalletMessageSendDto.java b/src/main/java/cc/mrbird/febs/mall/dto/RechargeWalletMessageSendDto.java
new file mode 100644
index 0000000..266b63b
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/dto/RechargeWalletMessageSendDto.java
@@ -0,0 +1,24 @@
+package cc.mrbird.febs.mall.dto;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "RechargeWalletMessageSendDto", description = "充值到账消息通知")
+public class RechargeWalletMessageSendDto {
+
+    //交易单号
+    private String rechargeNo;
+    //充值金额
+    private String rechargeAmount;
+    //账户余额
+    private String balance;
+    //充值时间
+    private String createTime;
+    //用户openId
+    private String openId;
+    //订阅消息模版id
+    private String templateId;
+    //默认跳到小程序首页
+    private String page = "pages/home/index";
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/RechargeWalletMessageSendVo.java b/src/main/java/cc/mrbird/febs/mall/vo/RechargeWalletMessageSendVo.java
new file mode 100644
index 0000000..8ef00ee
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/RechargeWalletMessageSendVo.java
@@ -0,0 +1,19 @@
+package cc.mrbird.febs.mall.vo;
+
+import cc.mrbird.febs.pay.model.WxTemplateData;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.util.Map;
+@Data
+@ApiModel(value = "RechargeWalletMessageSendVo", description = "通知")
+public class RechargeWalletMessageSendVo {
+
+
+    private String touser;//用户openid
+    private String template_id;//订阅消息模版id
+    private String miniprogram_state="developer";//跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版
+    private String lang="zh_CN";//进入小程序查看”的语言类型,支持zh_CN(简体中文)、en_US(英文)、zh_HK(繁体中文)、zh_TW(繁体中文),默认为zh_CN
+    private String page;//默认跳到小程序首页
+    private Map<String, WxTemplateData> data;//推送文字
+}
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 93b09e9..88351ab 100644
--- a/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java
+++ b/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java
@@ -1,17 +1,18 @@
 package cc.mrbird.febs.pay.controller;
 
 import cc.mrbird.febs.common.entity.FebsResponse;
+import cc.mrbird.febs.common.enumerates.DataDictionaryEnum;
 import cc.mrbird.febs.common.enumerates.OrderDeliveryStateEnum;
 import cc.mrbird.febs.common.enumerates.OrderStatusEnum;
 import cc.mrbird.febs.common.properties.XcxProperties;
 import cc.mrbird.febs.common.utils.RedisUtils;
 import cc.mrbird.febs.common.utils.SpringContextHolder;
+import cc.mrbird.febs.mall.dto.RechargeWalletMessageSendDto;
+import cc.mrbird.febs.mall.entity.DataDictionaryCustom;
 import cc.mrbird.febs.mall.entity.MallMemberWallet;
 import cc.mrbird.febs.mall.entity.MallMoneyFlow;
 import cc.mrbird.febs.mall.entity.MallOrderInfo;
-import cc.mrbird.febs.mall.mapper.MallMemberWalletMapper;
-import cc.mrbird.febs.mall.mapper.MallMoneyFlowMapper;
-import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper;
+import cc.mrbird.febs.mall.mapper.*;
 import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
 import cc.mrbird.febs.pay.model.NotifyData;
 import cc.mrbird.febs.pay.model.OrderStateDto;
@@ -23,6 +24,7 @@
 import cc.mrbird.febs.pay.util.Signature;
 import cc.mrbird.febs.pay.util.Util;
 import cc.mrbird.febs.pay.util.WechatConfigure;
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
@@ -59,6 +61,10 @@
     MallMoneyFlowMapper mallMoneyFlowMapper;
     @Autowired
     MallMemberWalletMapper mallMemberWalletMapper;
+    @Autowired
+    MallMemberMapper mallMemberMapper;
+    @Autowired
+    DataDictionaryCustomMapper dataDictionaryCustomMapper;
     @Autowired
     RedisUtils redisUtils;
     @Autowired
@@ -125,11 +131,19 @@
                                 RoundingMode.HALF_UP);
 
                         if (ObjectUtil.isNotEmpty(mallMoneyFlow)) {
-                            log.debug("检查支付金额payMoney={},mallMoneyFlow.getPayMoney()={}", payMoney, mallMoneyFlow.getAmount());
-                            MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(memberId);
-                            if(ObjectUtil.isNotEmpty(mallMemberWallet)){
+                                log.debug("检查支付金额payMoney={},mallMoneyFlow.getPayMoney()={}", payMoney, mallMoneyFlow.getAmount());
                                 memberWalletService.addBalance(payMoney,memberId);
-                            }
+                                RechargeWalletMessageSendDto rechargeWalletMessageSendDto = new RechargeWalletMessageSendDto();
+                                rechargeWalletMessageSendDto.setRechargeNo(rechargeNo);
+                                rechargeWalletMessageSendDto.setRechargeAmount(payMoney.toString());
+
+                                MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(memberId);
+                                rechargeWalletMessageSendDto.setBalance(mallMemberWallet.getBalance().toString());
+                                rechargeWalletMessageSendDto.setCreateTime(DateUtil.now());
+                                rechargeWalletMessageSendDto.setOpenId(mallMemberMapper.selectById(memberId).getOpenId());
+                                DataDictionaryCustom dataDictionaryCustom = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.WX_TEMPLATE_ID_TWO.getType(), DataDictionaryEnum.WX_TEMPLATE_ID_TWO.getCode());
+                                rechargeWalletMessageSendDto.setTemplateId(dataDictionaryCustom.getValue());
+                                iXcxPayService.rechargeWalletMessageSend(rechargeWalletMessageSendDto);
                             threadResult.success().message("充值成功");
                         } else {
                             log.info("充值失败", attrStr);
diff --git a/src/main/java/cc/mrbird/febs/pay/service/IXcxPayService.java b/src/main/java/cc/mrbird/febs/pay/service/IXcxPayService.java
index f582915..f433b50 100644
--- a/src/main/java/cc/mrbird/febs/pay/service/IXcxPayService.java
+++ b/src/main/java/cc/mrbird/febs/pay/service/IXcxPayService.java
@@ -2,6 +2,7 @@
 
 import cc.mrbird.febs.common.entity.FebsResponse;
 import cc.mrbird.febs.mall.dto.ApiRechargeWalletDto;
+import cc.mrbird.febs.mall.dto.RechargeWalletMessageSendDto;
 import cc.mrbird.febs.mall.entity.MallOrderInfo;
 import cc.mrbird.febs.pay.model.BrandWCPayRequestData;
 import cc.mrbird.febs.pay.model.OrderStateDto;
@@ -37,4 +38,10 @@
      * 发起充值(创建预付订单)
      */
     BrandWCPayRequestData startRechargeWallet(ApiRechargeWalletDto apiRechargeWalletDto) throws Exception;
+
+
+    /**
+     * 充值到账消息
+     */
+    void rechargeWalletMessageSend(RechargeWalletMessageSendDto info);
 }
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 de55fee..bd4bd3b 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
@@ -10,6 +10,7 @@
 import cc.mrbird.febs.common.utils.RedisUtils;
 import cc.mrbird.febs.common.utils.SpringContextHolder;
 import cc.mrbird.febs.mall.dto.ApiRechargeWalletDto;
+import cc.mrbird.febs.mall.dto.RechargeWalletMessageSendDto;
 import cc.mrbird.febs.mall.entity.DataDictionaryCustom;
 import cc.mrbird.febs.mall.entity.MallMember;
 import cc.mrbird.febs.mall.entity.MallOrderInfo;
@@ -18,6 +19,7 @@
 import cc.mrbird.febs.mall.mapper.MallMemberMapper;
 import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper;
 import cc.mrbird.febs.mall.service.IMallMoneyFlowService;
+import cc.mrbird.febs.mall.vo.RechargeWalletMessageSendVo;
 import cc.mrbird.febs.pay.model.*;
 import cc.mrbird.febs.pay.service.IXcxPayService;
 import cc.mrbird.febs.pay.util.WechatConfigure;
@@ -94,6 +96,28 @@
     }
 
     @Override
+    public void rechargeWalletMessageSend(RechargeWalletMessageSendDto info) {
+        RestTemplate restTemplate = new RestTemplate();
+        String url =  WechatConfigure.SEND_INFO_URL  + redisUtils.get(WechatConfigure.WX_ACCESS_TOKEN_REDIS_KEY);
+        //拼接推送的模版
+        RechargeWalletMessageSendVo orderStateMsgVo = new RechargeWalletMessageSendVo();
+        orderStateMsgVo.setTouser(info.getOpenId());//用户的openId
+        orderStateMsgVo.setTemplate_id(info.getTemplateId());//订阅消息模板id
+        orderStateMsgVo.setPage(info.getPage());
+        Map<String, WxTemplateData> m = new HashMap<>(4);
+        m.put("character_string1", new WxTemplateData(info.getRechargeNo()));
+        m.put("amount3", new WxTemplateData(info.getRechargeAmount()));
+        m.put("amount4", new WxTemplateData(info.getBalance()));
+        m.put("date5", new WxTemplateData(info.getCreateTime()));
+        orderStateMsgVo.setData(m);
+        String s = JSONUtil.toJsonStr(orderStateMsgVo);
+        log.info(s);
+        ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, orderStateMsgVo, String.class);
+        log.info(responseEntity.getBody());
+
+    }
+
+    @Override
     public BrandWCPayRequestData startPayment(MallOrderInfo mallOrderInfo) throws Exception {
         BigDecimal unit = new BigDecimal("100");
         BigDecimal money = new BigDecimal(mallOrderInfo.getAmount().toString());
@@ -122,12 +146,11 @@
         orderStateMsgVo.setTouser(info.getOpenId());//用户的openId
         orderStateMsgVo.setTemplate_id(info.getTemplateId());//订阅消息模板id
         orderStateMsgVo.setPage(info.getPage());
-        Map<String, WxTemplateData> m = new HashMap<>(5);
-        m.put("character_string1", new WxTemplateData(info.getOrderNo()));
-        m.put("thing9", new WxTemplateData(info.getGoodsName()));
-        m.put("phrase2", new WxTemplateData(info.getOrderState()));
-        m.put("thing13", new WxTemplateData(info.getAddressArea()));
-        m.put("thing16", new WxTemplateData(info.getTakeCode()));
+        Map<String, WxTemplateData> m = new HashMap<>(4);
+        m.put("character_string2", new WxTemplateData(info.getOrderNo()));
+        m.put("thing11", new WxTemplateData(info.getGoodsName()));
+        m.put("amount1", new WxTemplateData(info.getAmount()));
+        m.put("character_string9", new WxTemplateData(info.getTakeCode()));
         orderStateMsgVo.setData(m);
         String s = JSONUtil.toJsonStr(orderStateMsgVo);
         log.info(s);
@@ -172,7 +195,7 @@
         orderStateMsgVo.setTouser(info.getOpenId());//用户的openId
         orderStateMsgVo.setTemplate_id(info.getTemplateId());//订阅消息模板id
         orderStateMsgVo.setPage(info.getPage());
-        Map<String, WxTemplateData> m = new HashMap<>(5);
+        Map<String, WxTemplateData> m = new HashMap<>(4);
         m.put("character_string2", new WxTemplateData(info.getOrderNo()));
         m.put("thing11", new WxTemplateData(info.getGoodsName()));
         m.put("amount1", new WxTemplateData(info.getAmount()));
diff --git a/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml b/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml
index f94d009..9089ced 100644
--- a/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml
+++ b/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml
@@ -134,6 +134,6 @@
 
     <select id="selectOneByOrderNoAndMemberId" resultType="cc.mrbird.febs.mall.entity.MallMoneyFlow">
         select a.* from mall_money_flow a
-        where a.order_no = #{} and a.member_id = #{memberId}
+        where a.order_no = #{rechargeNo} and a.member_id = #{memberId}
     </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.1