zoujiajian 10 месяцев назад
Родитель
Сommit
1e2f95469c

+ 10 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/FrontProblemCollectRecord.java

@@ -1,5 +1,7 @@
 package com.cyksj.model.entity;
 package com.cyksj.model.entity;
 
 
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.ejlchina.searcher.bean.DbIgnore;
 import lombok.Getter;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.Setter;
 
 
@@ -23,4 +25,12 @@ public class FrontProblemCollectRecord extends BaseEntity{
 	 * 操作
 	 * 操作
 	 */
 	 */
 	private String handle;
 	private String handle;
+
+	@DbIgnore
+	@TableField(exist = false)
+	private Long timestamp;
+
+	@DbIgnore
+	@TableField(exist = false)
+	private String sign;
 }
 }

+ 12 - 0
netflix-service/src/main/java/com/cyksj/service/verify/ApiVerifyService.java

@@ -0,0 +1,12 @@
+package com.cyksj.service.verify;
+
+/**
+ * 项目名: yhlxj11111111
+ * 文件名: ApiVerifyService
+ * 创建者: JavaZou
+ * 创建时间:2025/10/22 18:00
+ */
+public interface ApiVerifyService {
+
+	Boolean verifyApiDo(String params) throws Exception;
+}

+ 40 - 0
netflix-service/src/main/java/com/cyksj/service/verify/impl/ApiVerifyServiceImpl.java

@@ -0,0 +1,40 @@
+package com.cyksj.service.verify.impl;
+
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONObject;
+import com.cyksj.common.util.Jsons;
+import com.cyksj.common.util.SignatureUtils;
+import com.cyksj.service.verify.ApiVerifyService;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+
+/**
+ * 项目名: yhlxj11111111
+ * 文件名: ApiVerifyServiceImpl
+ * 创建者: JavaZou
+ * 创建时间:2025/10/22 18:01
+ */
+@Service
+public class ApiVerifyServiceImpl implements ApiVerifyService {
+	public static final String SIGN_SECRET = "xmR7XvKbPeShVmYq3t5w9z$C&FHx@McQ";
+
+	@Override
+	public Boolean verifyApiDo(String params) throws Exception {
+		JSONObject jsonObject = Jsons.parseObject(params, JSONObject.class);
+		String sign = jsonObject.getStr("sign");
+		if (StrUtil.isEmpty(sign)) {
+			return Boolean.FALSE;
+		}
+		Long timestamp = jsonObject.getLong("timestamp");
+		//1s内
+		if (System.currentTimeMillis() - timestamp > 1000) {
+			return Boolean.FALSE;
+		}
+		String bsign = SignatureUtils.generateSignature(Map.of("timestamp", timestamp.toString()), SIGN_SECRET);
+		if (!StrUtil.equals(bsign, sign)) {
+			return Boolean.FALSE;
+		}
+		return Boolean.TRUE;
+	}
+}

+ 11 - 3
netflix-web/src/main/java/com/cyksj/web/controller/sys/FrontProblemCollectRecordController.java

@@ -1,10 +1,12 @@
 package com.cyksj.web.controller.sys;
 package com.cyksj.web.controller.sys;
 
 
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.core.util.StrUtil;
+import com.cyksj.common.util.Jsons;
 import com.cyksj.dto.Result;
 import com.cyksj.dto.Result;
 import com.cyksj.enums.GatewayResponse;
 import com.cyksj.enums.GatewayResponse;
 import com.cyksj.mapper.manage.sys.FrontProblemCollectRecordMapper;
 import com.cyksj.mapper.manage.sys.FrontProblemCollectRecordMapper;
 import com.cyksj.model.entity.FrontProblemCollectRecord;
 import com.cyksj.model.entity.FrontProblemCollectRecord;
+import com.cyksj.service.verify.ApiVerifyService;
 import com.ejlchina.searcher.BeanSearcher;
 import com.ejlchina.searcher.BeanSearcher;
 import com.ejlchina.searcher.SearchResult;
 import com.ejlchina.searcher.SearchResult;
 import com.ejlchina.searcher.util.MapUtils;
 import com.ejlchina.searcher.util.MapUtils;
@@ -29,8 +31,14 @@ public class FrontProblemCollectRecordController {
 
 
 	private final BeanSearcher beanSearcher;
 	private final BeanSearcher beanSearcher;
 
 
-	@PostMapping
-	public Result saveProblem(@RequestBody FrontProblemCollectRecord record) {
+	private final ApiVerifyService apiVerifyService;
+
+	@PostMapping("/save")
+	public Result saveProblem(@RequestBody FrontProblemCollectRecord record) throws Exception {
+		Boolean b = apiVerifyService.verifyApiDo(Jsons.toJson(record));
+		if (!b) {
+			return GatewayResponse.SUCCESS.newBuilder().toResult();
+		}
 		String errorMsg = record.getErrorMsg();
 		String errorMsg = record.getErrorMsg();
 		String track = record.getTrack();
 		String track = record.getTrack();
 		String handle = record.getHandle();
 		String handle = record.getHandle();
@@ -56,7 +64,7 @@ public class FrontProblemCollectRecordController {
 	/**
 	/**
 	 * 列表
 	 * 列表
 	 */
 	 */
-	@GetMapping
+	@GetMapping("/get/list")
 	public Result<SearchResult<FrontProblemCollectRecord>> getRecords() {
 	public Result<SearchResult<FrontProblemCollectRecord>> getRecords() {
 		SearchResult<FrontProblemCollectRecord> search = beanSearcher.search(FrontProblemCollectRecord.class, MapUtils.flatBuilder(request.getParameterMap()).build());
 		SearchResult<FrontProblemCollectRecord> search = beanSearcher.search(FrontProblemCollectRecord.class, MapUtils.flatBuilder(request.getParameterMap()).build());
 		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
 		return GatewayResponse.SUCCESS.newBuilder().toResult(search);