leomon
2025-06-04 8014574aa8a6abe96ad1ad5bb39a2b55547c84f8
微信小程序发送订阅消息给客户
1 files added
1 files modified
89 ■■■■■ changed files
oying-system/src/main/java/com/oying/modules/message/domain/dto/SendMessageRequestDto.java 14 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/message/rest/MessageSystemController.java 75 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/message/domain/dto/SendMessageRequestDto.java
New file
@@ -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;
}
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);
    }
}