yanghui
2022-11-29 06cfdb225233a2e8c67f21e130ee0bda67e2cc34
#feat 发送订阅消息
6个文件已修改
155 ■■■■■ 已修改文件
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/constants/Constants.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/user/SysUserVO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/WxUtil.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopFlowerOrderDeliveryServiceImpl.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopFlowerOrderServiceImpl.java 49 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopFlowerRefundOrderServiceImpl.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/constants/Constants.java
@@ -261,4 +261,9 @@
     * 天府通办解密私钥
     * */
    public static final String PRIVATE_KEY="MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAJJuFUH/4m9H5hCCzxtd9BxpjWlG9gbejqiJpV0XJKaU1V7xDBJasswxPY7Zc15RoxWClPoKPwKrbWKm49dgBJebJq5xd4sLCSbboxRkKxpRiJHMZ4LJjYa5h9Ei9RyfoUzqGHqH4UrDy3m3IwPiP19cIBqoU50shyQf92ZpcGZhAgMBAAECgYEAiadU8pODoUs82x6tZbPALQmJN4PO+wwznfqv6sA74yGdKECAMazz0oMjtGt1SiCCqFD2jcweCftvvELZg3mvNg1V0vRQRD1ZCA8HDp8DXm20d11K3+RX39tR4KgyyM3HsSEhkUDujMxKIpYjyiB5iEtV7Ja9bZ2fROszq+mUIqUCQQDQQf6vWRMLBqfnDcU77vuDGOhXbjkF2ytLxLW3fbKaW3GWvC3n93zPM+mcvWSXgkl448+jFjpMktm1Vn+w+YX3AkEAs/+bbRbod6AcVbLu8C5E44qDRoRpu+LF7Cphp8tlSAIRjm2yGP5acMWGRUtH9MF2QJYPF0PgDzdmUSVqWnCAZwJBALnSuRri4wAKn1SmT+ALfLZcSiyBODZGeppv2ijw6qWahH8YR+ncRaxoyMFHqPMbmM1akJIXqktbGREaLnPOIb8CQQCdJycJaL3Qa98xR4dr9cm5rF6PO96g5w6M8jfO6ztjUkMHymh7f99wpFRlvaN2Y06edyV315ARWPohEPy5N44zAkBlLuDHLm1TkTTAfdlL5r2OcdjpaJYloTdn05Mp3+J+w1zTX8k6Mz8lFZtLUcoMeTfQ9rm/+u2KwxS8NljtSZWH";
    /**
     * 花城小程序appid
     */
    public static final String HC_APP_ID = "wx118de8a734d269f0";
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/user/SysUserVO.java
@@ -60,6 +60,9 @@
    private Integer isPartymember;
    private String imageUrl;
    @ApiModelProperty(value = "微信小程序唯一标识")
    private String openid;
    /**
     * 用户类型(用户类型 1 小程序 2 运营平台 3 社区平台 5 商家后台 6 网格综治APP 7 网格综治后台 8大屏 9城管后台 10一键报警app)
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/WxUtil.java
@@ -738,6 +738,7 @@
        paras.add(new TemplateParam("thing2", "您有一个订单已发货"));
        paras.add(new TemplateParam("thing3", logisticsCompany));
        paras.add(new TemplateParam("character_string4",logisticsNo));
        paras.add(new TemplateParam("character_string5",orderNo));
        paras.add(new TemplateParam("time6",deliverTime));
        subscribeDTO.setTemplateParamList(paras);
        try {
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopFlowerOrderDeliveryServiceImpl.java
@@ -1,10 +1,12 @@
package com.panzhihua.service_community.service.impl;
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.panzhihua.common.constants.Constants;
import com.panzhihua.common.model.dtos.shop.ComShopFlowerOrderDeliveryDTO;
import com.panzhihua.common.model.dtos.shop.PageComFlowerOrderDeliveryDTO;
import com.panzhihua.common.model.dtos.shop.PageComFlowerOrderListDTO;
@@ -13,15 +15,21 @@
import com.panzhihua.common.model.vos.community.convenient.ConvenientElevatingPointVO;
import com.panzhihua.common.model.vos.shop.ComShopFlowerOrderDeliveryVO;
import com.panzhihua.common.model.vos.shop.ComShopFlowerOrderPageVO;
import com.panzhihua.common.model.vos.user.SysUserVO;
import com.panzhihua.common.service.user.UserService;
import com.panzhihua.common.utlis.OrderNoUtils;
import com.panzhihua.common.utlis.WxUtil;
import com.panzhihua.service_community.dao.ComShopFlowerOrderDAO;
import com.panzhihua.service_community.dao.ComShopFlowerOrderDeliveryDAO;
import com.panzhihua.service_community.dao.ConvenientElevatingPointDAO;
import com.panzhihua.service_community.entity.SysUser;
import com.panzhihua.service_community.model.dos.ComShopFlowerOrderDO;
import com.panzhihua.service_community.model.dos.ComShopFlowerOrderDeliveryDO;
import com.panzhihua.service_community.model.dos.ConvenientElevatingPointDO;
import com.panzhihua.service_community.service.ComShopFlowerOrderDeliveryService;
import com.panzhihua.service_community.util.WxMaConfiguration;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.error.WxErrorException;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -30,6 +38,7 @@
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import static java.util.Objects.nonNull;
@@ -47,7 +56,10 @@
    private ComShopFlowerOrderDAO comShopFlowerOrderDAO;
    @Resource
    private ConvenientElevatingPointDAO convenientElevatingPointDAO;
    @Resource
    private WxMaConfiguration wxMaConfiguration;
    @Resource
    private UserService userService;
    @Override
    @Transactional(rollbackFor = Exception.class)
@@ -66,6 +78,24 @@
            List<Long> orderIds = comShopFlowerOrderDeliveryDTO.getOrderIds();
            if (CollUtil.isNotEmpty(orderIds)){
                comShopFlowerOrderDAO.updateOrder(orderIds,deliveryId,comShopFlowerOrderDeliveryDO.getDeliveryNo(), ComShopFlowerOrderDO.status.psz,comShopFlowerOrderDeliveryDO.getDeliveryTime());
                //订单配送通知
                WxMaService maService = wxMaConfiguration.getMaService(Constants.HC_APP_ID);
                List<ComShopFlowerOrderDO> comShopFlowerOrderDOS = comShopFlowerOrderDAO.selectList(new LambdaQueryWrapper<ComShopFlowerOrderDO>().in(ComShopFlowerOrderDO::getId, orderIds));
                for (ComShopFlowerOrderDO comShopFlowerOrderDO : comShopFlowerOrderDOS) {
                    Long userId = comShopFlowerOrderDO.getUserId();
                    R userOpenId = userService.getUserOpenId(userId);
                    if (R.isOk(userOpenId)) {
                        String openid = userOpenId.getData().toString();
                        try {
                            WxUtil.sendStartShipping(openid,maService.getAccessToken(),comShopFlowerOrderDO.getOrderNo());
                        } catch (WxErrorException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
        }
        return R.ok();
@@ -87,6 +117,21 @@
        int update = this.baseMapper.updateById(comShopFlowerOrderDeliveryDO);
        if (update > 0){
            comShopFlowerOrderDAO.updateOrderStatus(comShopFlowerOrderDeliveryDO.getId(),comShopFlowerOrderDeliveryDO.getServiceTime(),ComShopFlowerOrderDO.status.dsh);
            WxMaService maService = wxMaConfiguration.getMaService(Constants.HC_APP_ID);
            List<ComShopFlowerOrderDO> comShopFlowerOrderDOS = comShopFlowerOrderDAO.selectList(new LambdaQueryWrapper<ComShopFlowerOrderDO>().eq(ComShopFlowerOrderDO::getDeliveryId, id));
            for (ComShopFlowerOrderDO comShopFlowerOrderDO : comShopFlowerOrderDOS) {
                Long userId = comShopFlowerOrderDO.getUserId();
                R userOpenId = userService.getUserOpenId(userId);
                if (R.isOk(userOpenId)) {
                    String openid = userOpenId.getData().toString();
                    try {
                        WxUtil.sendService(openid,maService.getAccessToken(),comShopFlowerOrderDeliveryDO.getPointName());
                    } catch (WxErrorException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
        return  R.ok();
    }
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopFlowerOrderServiceImpl.java
@@ -1,26 +1,32 @@
package com.panzhihua.service_community.service.impl;
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.panzhihua.common.constants.Constants;
import com.panzhihua.common.model.dtos.shop.*;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.community.convenient.ConvenientElevatingPointVO;
import com.panzhihua.common.model.vos.community.convenient.ConvenientMerchantVO;
import com.panzhihua.common.model.vos.shop.*;
import com.panzhihua.common.utlis.DateUtils;
import com.panzhihua.common.utlis.OrderNoUtils;
import com.panzhihua.common.utlis.StringUtils;
import com.panzhihua.common.utlis.WxPayUtils;
import com.panzhihua.common.model.vos.user.SysUserVO;
import com.panzhihua.common.service.user.UserService;
import com.panzhihua.common.utlis.*;
import com.panzhihua.common.utlis.wx.WXPayUtil;
import com.panzhihua.service_community.dao.*;
import com.panzhihua.service_community.model.dos.*;
import com.panzhihua.service_community.service.ComShopFlowerOrderService;
import com.panzhihua.service_community.util.WxMaConfiguration;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.error.WxErrorException;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@@ -71,6 +77,10 @@
    private ComShopFlowerRefundOrderDAO comShopFlowerRefundOrderDAO;
    @Resource
    private ComShopFlowerOrderDeliveryDAO comShopFlowerOrderDeliveryDAO;
    @Resource
    private WxMaConfiguration wxMaConfiguration;
    @Resource
    private UserService userService;
    @Value("${hcMin.app.isTest}")
@@ -693,6 +703,17 @@
            if (inserted != 1) {
                log.error("订单发货日志保存错误");
            }
            //发货通知
            WxMaService maService = wxMaConfiguration.getMaService(Constants.HC_APP_ID);
            R userOpenId = userService.getUserOpenId(comShopOrderDO.getUserId());
            if (R.isOk(userOpenId)) {
                String openid = userOpenId.getData().toString();
                try {
                    WxUtil.sendDeliverGoodsNotice(openid,maService.getAccessToken(),orderShipDTO.getLogisticsCompany(),orderShipDTO.getLogisticsNo(),comShopOrderDO.getOrderNo(), DateUtil.format(new Date(), "yyyy-MM-dd HH:mm"));
                } catch (WxErrorException e) {
                    e.printStackTrace();
                }
            }
            return R.ok("发货成功");
        }
        return R.fail("发货失败!");
@@ -833,6 +854,9 @@
        List<ComShopFlowerOrderGoodsDO> orderGoodsList =
                comShopFlowerOrderGoodsDAO.selectList(new QueryWrapper<ComShopFlowerOrderGoodsDO>().lambda()
                        .eq(ComShopFlowerOrderGoodsDO::getOrderNo, shopOrderDO.getOrderNo()));
        ConvenientMerchantDO storeDO = convenientMerchantDAO.selectById(shopOrderDO.getStoreId());
        if (!orderGoodsList.isEmpty()) {
            int goodsNub = 0;
            for (ComShopFlowerOrderGoodsDO orderGood : orderGoodsList) {
@@ -855,7 +879,6 @@
            }
            // 更新店铺销量以及销售额
            ConvenientMerchantDO storeDO = convenientMerchantDAO.selectById(shopOrderDO.getStoreId());
            if (storeDO != null) {
                storeDO.setSale(storeDO.getSale() + goodsNub);
                storeDO.setSaleVolume(storeDO.getSaleVolume().add(shopOrderDO.getTotalAmount()));
@@ -885,6 +908,21 @@
        orderPayDO.setOrderId(shopOrderDO.getId());
        orderPayDO.setPayType(ComShopFlowerOrderPayDO.payType.zf);
        comShopFlowerOrderPayDAO.insert(orderPayDO);
        if (nonNull(storeDO)){
            WxMaService maService = wxMaConfiguration.getMaService(Constants.HC_APP_ID);
            R sysUserVOR = userService.getSysUserVOByPhone(storeDO.getMobilePhone());
            if (R.isOk(sysUserVOR)) {
                SysUserVO sysUserVO = JSONObject.parseObject(JSONObject.toJSONString(sysUserVOR.getData()), SysUserVO.class);
                try {
                    WxUtil.sendNewOrderNotice(sysUserVO.getOpenid(),maService.getAccessToken(),shopOrderDO.getOrderNo(),
                            shopOrderDO.getDeliveryType()==1?"拼单订单":"快递订单",orderGoodsList.get(0).getGoodsName(),
                            shopOrderDO.getTotalAmount().toString(),DateUtil.format(shopOrderDO.getCreateAt(),"yyyy-MM-dd HH:mm"));
                } catch (WxErrorException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    /**
@@ -999,7 +1037,6 @@
        //退款申请
        Integer refundOrder = comShopFlowerRefundOrderDAO.selectCountByStoreId(storeId);
        retMap.put("refundOrder", refundOrder);
        return R.ok(retMap);
    }
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopFlowerRefundOrderServiceImpl.java
@@ -1,10 +1,14 @@
package com.panzhihua.service_community.service.impl;
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.panzhihua.common.constants.Constants;
import com.panzhihua.common.model.dtos.shop.ComShopFlowerRefundOrderDTO;
import com.panzhihua.common.model.dtos.shop.ComShopOrderQueryDTO;
import com.panzhihua.common.model.dtos.shop.PageComOrderRefundDTO;
@@ -13,13 +17,18 @@
import com.panzhihua.common.model.vos.shop.ComShopFlowerOrderGoodsVO;
import com.panzhihua.common.model.vos.shop.ComShopFlowerRefundOrderVO;
import com.panzhihua.common.model.vos.shop.ComShopOrderCountVO;
import com.panzhihua.common.model.vos.user.SysUserVO;
import com.panzhihua.common.service.user.UserService;
import com.panzhihua.common.utlis.OrderNoUtils;
import com.panzhihua.common.utlis.WxPayUtils;
import com.panzhihua.common.utlis.WxUtil;
import com.panzhihua.common.utlis.wx.WXPayUtil;
import com.panzhihua.service_community.dao.*;
import com.panzhihua.service_community.model.dos.*;
import com.panzhihua.service_community.service.ComShopFlowerRefundOrderService;
import com.panzhihua.service_community.util.WxMaConfiguration;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.error.WxErrorException;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@@ -62,11 +71,14 @@
    private ComShopFlowerOrderGoodsDAO comShopFlowerOrderGoodsDAO;
    @Resource
    private ComShopFlowerGoodsDAO comShopFlowerGoodsDAO;
    @Resource
    private ComShopFlowerGoodsAttrDAO comShopFlowerGoodsAttrDAO;
    @Resource
    private ConvenientMerchantDAO convenientMerchantDAO;
    @Resource
    private WxMaConfiguration wxMaConfiguration;
    @Resource
    private UserService userService;
    @Override
@@ -80,6 +92,18 @@
        comShopFlowerRefundOrderDO.setStatus(ComShopFlowerRefundOrderDO.status.clz);
        comShopFlowerRefundOrderDO.setDeleteStatus(ComShopFlowerRefundOrderDO.deleteStatus.no);
        this.baseMapper.insert(comShopFlowerRefundOrderDO);
        //商家接受退款信息
        ConvenientMerchantVO convenientMerchantVO = convenientMerchantDAO.selectMerchantById(comShopFlowerRefundOrderDTO.getStoreId());
        WxMaService maService = wxMaConfiguration.getMaService(Constants.HC_APP_ID);
        R sysUserVOR = userService.getSysUserVOByPhone(convenientMerchantVO.getMobilePhone());
        if (R.isOk(sysUserVOR)) {
            SysUserVO sysUserVO = JSONObject.parseObject(JSONObject.toJSONString(sysUserVOR.getData()), SysUserVO.class);
            try {
                WxUtil.sendNewRefundOrderNotice(sysUserVO.getOpenid(),maService.getAccessToken(),refundOrderNo,comShopFlowerRefundOrderDO.getRefundAmount().toString(),DateUtil.format(comShopFlowerRefundOrderDO.getRefundTime(),"yyyy-MM-dd HH:mm"));
            } catch (WxErrorException e) {
                e.printStackTrace();
            }
        }
        return R.ok();
    }
@@ -128,7 +152,8 @@
        if (Objects.isNull(comShopFlowerRefundOrderDO)) {
            return R.fail("不存在该退款订单");
        }
        } ComShopFlowerOrderDO comShopFlowerOrderDO = comShopFlowerOrderDAO.selectById(comShopFlowerRefundOrderDO.getOrderId());
        if (ComShopFlowerRefundOrderDO.handleResult.agree.equals(comShopFlowerRefundOrderDTO.getHandleResult())) {
            //处理退款事宜
            comShopFlowerRefundOrderDO.setRefundTime(new Date());
@@ -137,7 +162,6 @@
            //微信处理退款
            try {
                String refundNo = WXPayUtil.generateNonceStr();
                ComShopFlowerOrderDO comShopFlowerOrderDO = comShopFlowerOrderDAO.selectById(comShopFlowerRefundOrderDO.getOrderId());
                String refundStr = WxPayUtils.refund(appid, mchId, comShopFlowerOrderDO.getOrderNo(), comShopFlowerRefundOrderDO.getPayAmount(),
                        comShopFlowerRefundOrderDO.getPayAmount(), refundNo, isTest);
                log.info("退款请求接口返回参数:{}" , refundStr);
@@ -167,6 +191,9 @@
                        //更新订单状态
                        comShopFlowerOrderDO.setStatus(ComShopFlowerOrderDO.status.ytk);
                        comShopFlowerOrderDAO.updateById(comShopFlowerOrderDO);
                        //退款成功发送消息
                        sendRefundNotice(comShopFlowerRefundOrderDO, comShopFlowerOrderDO,"商家同意退款");
                    }else {
                        //退款失败
                        comShopFlowerRefundOrderDO.setStatus(ComShopFlowerRefundOrderDO.status.tksb);
@@ -174,6 +201,8 @@
                        // 添加订单支付记录表
                        orderPayDO.setPayStatus(ComShopFlowerOrderPayDO.payStatus.no);
                        orderPayDO.setRefundStatus(ComShopFlowerOrderPayDO.refundStatus.tksb);
                        //退款失败发送消息
                        sendRefundNotice(comShopFlowerRefundOrderDO, comShopFlowerOrderDO,"微信退款失败");
                    }
                    comShopFlowerOrderPayDAO.insert(orderPayDO);
                }
@@ -186,11 +215,26 @@
            comShopFlowerRefundOrderDO.setHandleTime(new Date());
            comShopFlowerRefundOrderDO.setStatus(ComShopFlowerRefundOrderDO.status.tksb);
            comShopFlowerRefundOrderDO.setHandleResult(ComShopFlowerRefundOrderDO.handleResult.refuse);
            //拒绝退款发送消息
            sendRefundNotice(comShopFlowerRefundOrderDO, comShopFlowerOrderDO,"商家拒绝退款");
        }
        this.baseMapper.updateById(comShopFlowerRefundOrderDO);
        return R.ok();
    }
    private void sendRefundNotice(ComShopFlowerRefundOrderDO comShopFlowerRefundOrderDO, ComShopFlowerOrderDO comShopFlowerOrderDO,String msg) {
        WxMaService maService = wxMaConfiguration.getMaService(Constants.HC_APP_ID);
        R userOpenId = userService.getUserOpenId(comShopFlowerOrderDO.getUserId());
        if (R.isOk(userOpenId)) {
            String openid = userOpenId.getData().toString();
            try {
                WxUtil.sendRefundNotice(openid,maService.getAccessToken(),comShopFlowerRefundOrderDO.getRefundOrderNo(),comShopFlowerRefundOrderDO.getRefundAmount().toString(),msg);
            } catch (WxErrorException e) {
                e.printStackTrace();
            }
        }
    }
    @Override
    public R selectCountGroupStatus(Long storeId){
        String[] statusStr = {"clz","tkcg","tksb","yqx","tkz"};