放行微信抓取岗位保存,并且做限流处理

This commit is contained in:
sh
2026-05-21 13:45:02 +08:00
parent 599103f94a
commit a1e484c9aa

View File

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