leomon
2025-06-05 a3fffa17c643bb96159a23880e1749c486279906
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")
@@ -44,9 +59,10 @@
    @GetMapping
    @ApiOperation("查询消息_系统")
    @PreAuthorize("@el.check('messageSystem:list')")
    public ResponseEntity<PageResult<MessageSystem>> queryMessageSystem(MessageSystemQueryCriteria criteria){
    public R<PageResult<MessageSystem>> queryMessageSystem(MessageSystemQueryCriteria criteria){
        Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize());
        return new ResponseEntity<>(messageSystemService.queryAll(criteria,page),HttpStatus.OK);
//        return new ResponseEntity<>(messageSystemService.queryAll(criteria,page),HttpStatus.OK);
        return R.success(messageSystemService.queryAll(criteria,page));
    }
//    @PostMapping
@@ -79,14 +95,15 @@
    //查询一条系统消息
    @GetMapping("/{id}")
    @ApiOperation("查询一条系统消息")
    public ResponseEntity<MessageSystem> getMessageSystem(@PathVariable Integer id){
    public R<MessageSystem> getMessageSystem(@PathVariable Integer id){
        MessageSystem messageSystem = messageSystemService.getById(id);
        return new ResponseEntity<>(messageSystem,HttpStatus.OK);
//        return new ResponseEntity<>(messageSystem,HttpStatus.OK);
        return R.success(messageSystem);
    }
    //插入一条系统消息 带两个参数start与end
    @PostMapping()
    @ApiOperation("插入一条系统消息")
    public ResponseEntity<Object> insertMessageSystem(
    public R<Object> insertMessageSystem(
            @RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date start,
            @RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date end) {
@@ -98,8 +115,73 @@
        // 调用服务层保存数据
        messageSystemService.save(messageSystem);
        return new ResponseEntity<>(HttpStatus.OK);
//        return new ResponseEntity<>(HttpStatus.OK);
        return R.success("插入成功");
    }
    /**
     * 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"
//        }
//    }
//    }
//todo  发送订阅消息   数据库暂未存储
    @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);
        try {
            weiXinService.sendMessage(request.getData(), request.getTouser(), request.getTemplate_id(), request.getPage());
            return R.success(request);
        } catch (Exception e) {
            // 如果捕获到异常,返回错误信息
            log.error("发送订阅消息失败", e);
            return R.fail(request,"发送订阅消息失败 用真实数据:" + e.getMessage());
        }
    }
}