From 8014574aa8a6abe96ad1ad5bb39a2b55547c84f8 Mon Sep 17 00:00:00 2001
From: leomon <2233021400@qq.com>
Date: Wed, 04 Jun 2025 23:15:36 +0800
Subject: [PATCH] 微信小程序发送订阅消息给客户

---
 oying-system/src/main/java/com/oying/modules/message/rest/MessageSystemController.java     |   75 +++++++++++++++++++++++++++++++++++++
 oying-system/src/main/java/com/oying/modules/message/domain/dto/SendMessageRequestDto.java |   14 +++++++
 2 files changed, 88 insertions(+), 1 deletions(-)

diff --git a/oying-system/src/main/java/com/oying/modules/message/domain/dto/SendMessageRequestDto.java b/oying-system/src/main/java/com/oying/modules/message/domain/dto/SendMessageRequestDto.java
new file mode 100644
index 0000000..dce5274
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/domain/dto/SendMessageRequestDto.java
@@ -0,0 +1,14 @@
+
+package com.oying.modules.message.domain.dto;
+
+import lombok.Data;
+
+import java.util.Map;
+
+@Data
+public class SendMessageRequestDto {
+    private String touser;
+    private String template_id;
+    private String page;
+    private Map<String, Object> data;
+}
\ No newline at end of file
diff --git a/oying-system/src/main/java/com/oying/modules/message/rest/MessageSystemController.java b/oying-system/src/main/java/com/oying/modules/message/rest/MessageSystemController.java
index 0df458c..e34c508 100644
--- a/oying-system/src/main/java/com/oying/modules/message/rest/MessageSystemController.java
+++ b/oying-system/src/main/java/com/oying/modules/message/rest/MessageSystemController.java
@@ -1,16 +1,25 @@
 package com.oying.modules.message.rest;
 
+import com.alibaba.fastjson2.JSONObject;
 import com.oying.annotation.Log;
 import com.oying.modules.message.domain.MessageSystem;
+import com.oying.modules.message.domain.dto.SendMessageRequestDto;
 import com.oying.modules.message.service.MessageSystemService;
 import com.oying.modules.message.domain.dto.MessageSystemQueryCriteria;
+import com.oying.modules.system.domain.User;
+import com.oying.modules.system.domain.UserSubscribe;
+import com.oying.utils.HttpRequest;
+import lombok.Data;
 import lombok.RequiredArgsConstructor;
 
 import java.sql.Timestamp;
 import java.util.Date;
 import java.util.List;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.format.annotation.DateTimeFormat;
+import org.springframework.http.HttpMethod;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -18,10 +27,12 @@
 import org.springframework.web.bind.annotation.*;
 import io.swagger.annotations.*;
 import java.io.IOException;
+import java.util.Map;
 import javax.servlet.http.HttpServletResponse;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.oying.utils.PageResult;
-
+import com.oying.modules.security.service.WeiXinService;
+import com.oying.utils.R;
 /**
  * @author 李萌
  * @date 2025-05-20
@@ -32,7 +43,11 @@
 @RequestMapping("/api/message/messageSystem")
 public class MessageSystemController {
 
+    private static final Logger log = LoggerFactory.getLogger(MessageSystemController.class);
     private final MessageSystemService messageSystemService;
+    private final WeiXinService weiXinService;
+
+
 
 //    @ApiOperation("导出数据")
 //    @GetMapping(value = "/download")
@@ -101,5 +116,63 @@
         return new ResponseEntity<>(HttpStatus.OK);
     }
 
+    /**
+     * POST 该接口用于发送订阅消息。
+     *  data       请求参数
+     * openid     用户openId
+     * templateId 订阅模板id
+     * page       小程序跳转链接
+     */
+//    public void sendMessage(Map<String, Object> data, String openid, String templateId, String page) {
+//        JSONObject jsonObject = new JSONObject();
+//        if (wxEnabled) {
+//            String url = weiXinProperties.getSendMessage();
+//            url = url.replace("{accessToken}", getStableAccessToken());
+//            Map<String, Object> map = getSendMessageDto(data, openid, templateId, page);
+//            jsonObject = HttpRequest.exchangeJsonObject(HttpMethod.POST, url, map);
+//        } else {
+//            jsonObject.put("message", "测试环境");
+//        }
+//        User user = userService.findByOpenid(openid);
+//        UserSubscribe sub = new UserSubscribe();
+//        sub.setSubType(templateId);
+//        sub.setUserId(user.getId());
+//        sub.setOpenid(openid);
+//        sub.setUsername(user.getUsername());
+//        sub.setSendMessage(JSONObject.toJSONString(data));
+//        sub.setSubMessage(jsonObject.toJSONString());
+//        subscribeService.save(sub);
+//    }
+    //调用微信发送消息接口sendMessage
+
+    //示例
+//    {
+//        "touser": "OPENID",
+//            "template_id": "TEMPLATE_ID",
+//            "page": "index",
+//            "data":{
+//        "phrase3": {
+//            "value": "审核通过"
+//        },
+//        "name1": {
+//            "value": "订阅"
+//        },
+//        "date2": {
+//            "value": "2019-12-25 09:42"
+//        }
+//    }
+//    }
+
+    @PostMapping("/sendMessage")
+    @ApiOperation("发送订阅消息")
+    public R<SendMessageRequestDto> sendMessage(@RequestBody SendMessageRequestDto request){
+        //打印request
+        //SendMessageRequestDto(touser=OPENID, template_id=TEMPLATE_ID, page=index, data={date2={"value":"2019-12-25 09:42"}, phrase3={"value":"审核通过"}, name1={"value":"订阅"}})
+        log.info("request:{}", request);
+        weiXinService.sendMessage(request.getData(), request.getTouser(), request.getTemplate_id(), request.getPage());
+        return R.success(request);
+    }
+
+
 
 }

--
Gitblit v1.9.3