xiaoyong931011
2022-08-31 24f3b972cf932fe4247948d0239218c57c1c595a
20220822
2 files added
5 files modified
120 ■■■■ changed files
src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java 5 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/dto/RechargeWalletMessageSendDto.java 24 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/vo/RechargeWalletMessageSendVo.java 19 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java 26 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/pay/service/IXcxPayService.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/pay/service/impl/XcxPayServiceImpl.java 37 ●●●● patch | view | raw | blame | history
src/main/resources/mapper/modules/MallMoneyFlowMapper.xml 2 ●●● patch | view | raw | blame | history
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"),
src/main/java/cc/mrbird/febs/mall/dto/RechargeWalletMessageSendDto.java
New file
@@ -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";
}
src/main/java/cc/mrbird/febs/mall/vo/RechargeWalletMessageSendVo.java
New file
@@ -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;//推送文字
}
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
@@ -126,10 +132,18 @@
                        if (ObjectUtil.isNotEmpty(mallMoneyFlow)) {
                            log.debug("检查支付金额payMoney={},mallMoneyFlow.getPayMoney()={}", payMoney, mallMoneyFlow.getAmount());
                            MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(memberId);
                            if(ObjectUtil.isNotEmpty(mallMemberWallet)){
                                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);
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);
}
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()));
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>