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); } }