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; + } + /** * 通用上传请求(单个) */