package com.ruoyi.api;

import com.ruoyi.api.domain.WeChatMessage;
import com.ruoyi.api.service.IWeChatMessageService;
import com.ruoyi.busi.utils.WeChatUtils;
import com.ruoyi.common.annotation.Anonymous;
import com.wechat.pay.java.core.http.HttpMethod;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@RestController
@RequestMapping("/wxMsgApi")
public class WxMsgApi {
    @Autowired
    private WeChatUtils weChatUtils;
    @Resource
    private IWeChatMessageService weChatMessageService;

    /**
     * 校验签名
     *
     * @param message {@link WeChatMessage}
     * @param request {@link HttpServletRequest}
     * @return java.lang.Object
     * @author PQZ
     * @date 12:17 2025/4/25
     **/
    @RequestMapping("/message")
    @Anonymous
    public void register(WeChatMessage message, HttpServletRequest request, HttpServletResponse response) throws IOException {
        String method = request.getMethod();
        if (HttpMethod.GET.name().equalsIgnoreCase(method)) {
            String echostr = weChatMessageService.checkSignature(message);
            response.getOutputStream().write(echostr.getBytes());
        } else if (HttpMethod.POST.name().equalsIgnoreCase(method)) {
            // 进入POST聊天处理
            // 将请求、响应的编码均设置为UTF-8（防止中文乱码）
            request.setCharacterEncoding("UTF-8");
            response.setCharacterEncoding("UTF-8");
            // 接收消息并返回消息
            String result = weChatMessageService.acceptMessage(request, response);
            // 响应消息
            PrintWriter out = response.getWriter();
            out.print(result);
            out.close();
        }
    }






}
