Răsfoiți Sursa

feat: 发微信通知demo

wrj 1 an în urmă
părinte
comite
d1a682a308

+ 41 - 0
nightFragrance-admin/src/main/java/com/ylx/web/controller/massage/TJsController.java

@@ -1,5 +1,7 @@
 package com.ylx.web.controller.massage;
 
+import cn.binarywang.wx.miniapp.api.WxMaService;
+import cn.binarywang.wx.miniapp.bean.WxMaSubscribeMessage;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ylx.common.annotation.Log;
@@ -19,13 +21,17 @@ import com.ylx.massage.utils.LocationUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import me.chanjar.weixin.common.error.WxErrorException;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.*;
 
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -50,6 +56,12 @@ public class TJsController extends BaseController {
     @Resource
     private TWxUserService wxUserService;
 
+    @Autowired
+    private WxMaService wxMaService;
+
+    @Value("${wx.template_id_1}")
+    private String msgTemplateId1;
+
 
     /**
      * 添加技师申请
@@ -243,4 +255,33 @@ public class TJsController extends BaseController {
             return R.fail("系统异常");
         }
     }
+
+    @ApiOperation("通知")
+    @RequestMapping(value = "/tongzhi", method = RequestMethod.GET)
+    public boolean sendSubscribeMessage(String openId) {
+        String page="pages/index/index"; // 应该是消息点击后跳转页面
+        WxMaSubscribeMessage message = new WxMaSubscribeMessage();
+        message.setTemplateId(msgTemplateId1);
+        message.setToUser(openId);
+        message.setPage(page);
+        List<WxMaSubscribeMessage.MsgData> subscribeDataList = new ArrayList<>();
+        WxMaSubscribeMessage.MsgData subscribeData = new WxMaSubscribeMessage.MsgData();
+        subscribeData.setName("key1"); // 你在小程序自定义的key(比如“商家名称”)
+        subscribeData.setValue("夜来香"); //key对应的内容
+
+        WxMaSubscribeMessage.MsgData msgData = new WxMaSubscribeMessage.MsgData();
+        msgData.setName("key2");
+        msgData.setValue("你好,f");
+        //添加你配置要且要展示的内容
+        subscribeDataList.add(subscribeData);
+
+        message.setData(subscribeDataList);
+        try {
+            wxMaService.getMsgService().sendSubscribeMsg(message);
+            return true;
+        } catch (WxErrorException e) {
+            log.error("发送小程序订阅消息失败,errCode:{},errMsg:{}", e.getError().getErrorCode(), e.getError().getErrorMsg());
+        }
+        return false;
+    }
 }

+ 8 - 4
nightFragrance-admin/src/main/resources/application-dev.yml

@@ -204,11 +204,11 @@ fare:
 wx:
   base-url: https://api.weixin.qq.com/
   # AppID(小程序ID)
-  app-id: wxb2ae0f4ee11e8705
-#  app-id: wxe8661ef542cd963c
+#  app-id: wxb2ae0f4ee11e8705
+  app-id: wxe8661ef542cd963c
   # AppSecret(小程序密钥)
-  app-secret: 28504227c2662cfb1b39a5baf750bb59
-#  app-secret: 7439a36812c1850d060567bce51159ec
+#  app-secret: 28504227c2662cfb1b39a5baf750bb59
+  app-secret: 7439a36812c1850d060567bce51159ec
   # 商户号
   mch-id: 1675015090
   # 商户秘钥
@@ -224,6 +224,10 @@ wx:
   # 微信平台证书
   plat-form-path: D:/1675015090_20240424_cert/plateForm.pem
 
+  #通知类型1
+  template_id_1: KPo5KM1R-_A6iBWOZpnA_J1w7ybORWboYqJX-PN0diQ
+  #通知类型2
+  wx.miniapp.msg.template_id_2: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
   msgDataFormat: JSON
 # 防止XSS攻击
 xss:

+ 10 - 2
nightFragrance-massage/src/main/java/com/ylx/massage/service/impl/TOrderServiceImpl.java

@@ -23,6 +23,7 @@ import com.ylx.massage.service.*;
 import com.ylx.massage.utils.DateTimeUtils;
 import com.ylx.massage.utils.MassageUtil;
 import com.ylx.massage.utils.OrderNumberGenerator;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.compress.utils.Lists;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -39,6 +40,7 @@ import java.util.stream.Collectors;
  * 订单表 服务实现类
  */
 @Service
+@Slf4j
 public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> implements TOrderService {
 
     @Resource
@@ -167,7 +169,14 @@ public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> impleme
 
     @Override
     public void payNotifyOrder(String outTradeNo) {
-        TOrder orderNew = this.getByNo(outTradeNo);
+        //查询未支付的订单
+        LambdaQueryWrapper<TOrder> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(TOrder::getOrderNo, outTradeNo).eq(TOrder::getnStatus, OrderStatusEnum.WAIT_PAY.getCode());
+        TOrder orderNew = this.getOne(queryWrapper);
+        if (orderNew == null) {
+            log.error("订单 {} 未支付状态不存在",outTradeNo);
+            return;
+        }
         TWxUser user = wxUserService.getByOpenId(orderNew.getcOpenId());
         orderPayManage(user, orderNew);
     }
@@ -376,7 +385,6 @@ public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> impleme
         tConsumptionLog.setBillType(BillTypeEnum.DISTRIBUTION.getCode());
         tConsumptionLog.setNote("分销收益");
         consumptionLogService.save(tConsumptionLog);
-
     }
 
     /**