Files
wxSend/src/main/java/cn/van333/wxsend/business/controller/WXController.java
2023-11-29 18:02:09 +08:00

220 lines
8.5 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package cn.van333.wxsend.business.controller;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.van333.wxsend.aop.annotation.RateLimiter;
import cn.van333.wxsend.business.model.R;
import cn.van333.wxsend.business.service.LogService;
import cn.van333.wxsend.util.TokenUtil;
import cn.van333.wxsend.enums.WXMessageType;
import cn.van333.wxsend.util.WxSendUtil;
import cn.van333.wxsend.util.request.MessageRequest;
import cn.van333.wxsend.util.SourceForQLUtil;
import com.alibaba.fastjson2.JSON;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
/**
* @author Leo
* @version 1.0
* @create 2023/10/07 0007 下午 02:25
* @description
*/
@RestController
@RequestMapping("/wx")
public class WXController {
private static final Logger logger = LoggerFactory.getLogger(LogService.class);
@RequestMapping(value = "/send")
@ResponseBody
@RateLimiter(time = 1, count = 60)
public R send(@RequestBody MessageRequest message) throws Exception {
logger.info(message.toString());
if (!TokenUtil.checkToken(message.getVanToken())) {
return R.error("vanToken无效");
}
if (!StrUtil.isAllNotEmpty(message.getTitle(), message.getText())) {
return R.error("缺少标题和内容");
}
if (StrUtil.isEmpty(message.getMessageType())) {
return R.error("缺少消息类型");
}
if (ObjectUtil.isEmpty(WXMessageType.valueOf(message.getMessageType()))) {
return R.error("消息类型不存在");
}
String result = WxSendUtil.sendNotify(message.getTitle(), message.getText(), message.getTouser(), WXMessageType.valueOf(message.getMessageType()));
return R.ok(result);
}
/**
* @description 会获取不到vanToken 和 touser
* source 代表来源,因为有四个青龙面板,所以需要区分
*
* @param message
* @return cn.van333.wxsend.business.model.R
* @throws
* */
@RequestMapping(value = "/send/ql")
@ResponseBody
@RateLimiter(time = 5, count = 60)
public R sendToQL(HttpServletRequest request, @RequestBody MessageRequest message) throws Exception {
logger.info("message 打印---{}",JSON.toJSONString(message));
String vanToken = request.getHeader("vanToken");
if (StrUtil.isEmpty(vanToken)) {
return R.error("vanToken为空");
}
if (!TokenUtil.checkToken(vanToken)) {
return R.error("vanToken无效");
}
String source = request.getHeader("source");
if (StrUtil.isEmpty(source)) {
return R.error("来源为空");
}
if (!StrUtil.isAllNotEmpty(message.getTitle(), message.getText())) {
return R.error("缺少标题和内容");
}
logger.info("vanToken 打印---{}",vanToken);
logger.info("source 打印---{}",source);
String sourceForQL = SourceForQLUtil.transferSource(source);
if (!StrUtil.isAllNotEmpty(message.getTitle(), message.getText())) {
return R.error("缺少标题和内容");
}
String result = WxSendUtil.sendNotify("("+sourceForQL+") "+message.getTitle(), message.getText(), message.getTouser(), WXMessageType.QL);
logger.info("result 打印---{}",result);
return R.ok(result);
}
@RequestMapping(value = "/send/qh")
@ResponseBody
@RateLimiter(time = 1, count = 60)
public R sendToQH(@RequestBody MessageRequest message) throws Exception {
logger.info(message.toString());
if (!TokenUtil.checkToken(message.getVanToken())) {
return R.error("vanToken无效");
}
if (!StrUtil.isAllNotEmpty(message.getTitle(), message.getText())) {
return R.error("缺少标题和内容");
}
String result = WxSendUtil.sendNotify(message.getTitle(), message.getText(), message.getTouser(), WXMessageType.QH);
return R.ok(result);
}
@RequestMapping(value = "/send/mt")
@ResponseBody
@RateLimiter(time = 10, count = 60)
public R sendToMT(@RequestBody MessageRequest message) throws Exception {
logger.info(message.toString());
if (!TokenUtil.checkToken(message.getVanToken())) {
return R.error("vanToken无效");
}
if (!StrUtil.isAllNotEmpty(message.getTitle(), message.getText())) {
return R.error("缺少标题和内容");
}
String result = WxSendUtil.sendNotify(message.getTitle(), message.getText(), message.getTouser(), WXMessageType.MT);
return R.ok(result);
}
@RequestMapping(value = "/send/imt")
@ResponseBody
@RateLimiter(time = 1, count = 60)
public R sendToIMT(@RequestBody MessageRequest message) throws Exception {
logger.info(message.toString());
if (!TokenUtil.checkToken(message.getVanToken())) {
return R.error("vanToken无效");
}
if (!StrUtil.isAllNotEmpty(message.getTitle(), message.getText())) {
return R.error("缺少标题和内容");
}
String result = WxSendUtil.sendNotify(message.getTitle(), message.getText(), message.getTouser(), WXMessageType.IMT);
return R.ok(result);
}
@RequestMapping(value = "/send/ty")
@ResponseBody
@RateLimiter(time = 10, count = 60)
public R sendToTY(@RequestBody MessageRequest message) throws Exception {
logger.info(message.toString());
if (!TokenUtil.checkToken(message.getVanToken())) {
return R.error("vanToken无效");
}
if (!StrUtil.isAllNotEmpty(message.getTitle(), message.getText())) {
return R.error("缺少标题和内容");
}
String result = WxSendUtil.sendNotify(message.getTitle(), message.getText(), message.getTouser(), WXMessageType.TY);
return R.ok(result);
}
@RequestMapping(value = "/send/lf")
@ResponseBody
@RateLimiter(time = 5, count = 60)
public R sendToLF(HttpServletRequest request, @RequestBody MessageRequest message) throws Exception {
logger.info("message 打印---{}",JSON.toJSONString(message));
String vanToken = request.getHeader("vanToken");
if (StrUtil.isEmpty(vanToken)) {
return R.error("vanToken为空");
}
if (!TokenUtil.checkToken(vanToken)) {
return R.error("vanToken无效");
}
String source = request.getHeader("source");
if (StrUtil.isEmpty(source)) {
return R.error("来源为空");
}
if (!StrUtil.isAllNotEmpty(message.getTitle(), message.getText())) {
return R.error("缺少标题和内容");
}
logger.info("vanToken 打印---{}",vanToken);
logger.info("source 打印---{}",source);
String sourceForQL = SourceForQLUtil.transferSource(source);
if (!StrUtil.isAllNotEmpty(message.getTitle(), message.getText())) {
return R.error("缺少标题和内容");
}
String result = WxSendUtil.sendNotify("("+sourceForQL+") "+message.getTitle(), message.getText(), message.getTouser(), WXMessageType.LF);
logger.info("result 打印---{}",result);
return R.ok(result);
}
@RequestMapping(value = "/send/jd")
@ResponseBody
@RateLimiter(time = 5, count = 60)
public R sendToJD(HttpServletRequest request, @RequestBody MessageRequest message) throws Exception {
logger.info("message 打印---{}",JSON.toJSONString(message));
String vanToken = request.getHeader("vanToken");
if (StrUtil.isEmpty(vanToken)) {
return R.error("vanToken为空");
}
if (!TokenUtil.checkToken(vanToken)) {
return R.error("vanToken无效");
}
String source = request.getHeader("source");
if (StrUtil.isEmpty(source)) {
return R.error("来源为空");
}
if (!StrUtil.isAllNotEmpty(message.getTitle(), message.getText())) {
return R.error("缺少标题和内容");
}
logger.info("vanToken 打印---{}",vanToken);
logger.info("source 打印---{}",source);
String sourceForQL = SourceForQLUtil.transferSource(source);
if (!StrUtil.isAllNotEmpty(message.getTitle(), message.getText())) {
return R.error("缺少标题和内容");
}
String result = WxSendUtil.sendNotify("("+sourceForQL+") "+message.getTitle(), message.getText(), message.getTouser(), WXMessageType.JD);
logger.info("result 打印---{}",result);
return R.ok(result);
}
}