From a1e484c9aaead82b449c86c5b7ca7e74b3e4a1a3 Mon Sep 17 00:00:00 2001 From: sh Date: Thu, 21 May 2026 13:45:02 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=BE=E8=A1=8C=E5=BE=AE=E4=BF=A1=E6=8A=93?= =?UTF-8?q?=E5=8F=96=E5=B2=97=E4=BD=8D=E4=BF=9D=E5=AD=98=EF=BC=8C=E5=B9=B6?= =?UTF-8?q?=E4=B8=94=E5=81=9A=E9=99=90=E6=B5=81=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cms/controller/cms/CmsJobController.java | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/CmsJobController.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/CmsJobController.java index 8355ace..94c3903 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/CmsJobController.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/CmsJobController.java @@ -20,12 +20,14 @@ import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.entity.AppUser; import com.ruoyi.common.core.domain.entity.Company; import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.SM4Utils; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.bean.BeanUtils; +import com.ruoyi.common.utils.ip.IpUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -43,6 +45,7 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Objects; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; /** @@ -71,6 +74,8 @@ public class CmsJobController extends BaseController private IJobApplyService iJobApplyService; @Autowired private IAppReviewJobService iAppReviewJobService; + @Autowired + private RedisCache redisCache; /** * 查询岗位列表 */ @@ -400,7 +405,10 @@ public class CmsJobController extends BaseController @PostMapping("/wechat") @ApiOperation("微信抓取功能调用的新增") @Anonymous - public AjaxResult wechatInsert(@RequestBody Job job) { + public AjaxResult wechatInsert(@RequestBody Job job,HttpServletRequest request) { + if (!checkLimitNoLogin(request)) { + return AjaxResult.error("操作过于频繁,一分钟内提交次数已达上限,请稍后再试"); + } // 不发布 job.setIsPublish(0); if (job.getJobContactList() == null) { @@ -418,6 +426,23 @@ public class CmsJobController extends BaseController return AjaxResult.success("此岗位已存在!"); } + /** + * 限制请求最大次数100 + * @param request + * @return + */ + public boolean checkLimitNoLogin(HttpServletRequest request) { + String ip = IpUtils.getIpAddr(request); + String ipKey = "limit:wechat:ip:" + ip; + Long ipCnt = redisCache.increment(ipKey); + if (ipCnt == null || ipCnt > 100) { + return false; + } + redisCache.expire(ipKey, 60, TimeUnit.SECONDS); + + return true; + } + /** * 通用上传请求(单个) */