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