From 6113331f380808b93d757cfeebfc3f2ffa34e34b Mon Sep 17 00:00:00 2001
From: liyanqi <15181887205@163.com>
Date: 星期一, 31 十月 2022 15:51:36 +0800
Subject: [PATCH] 驾驶舱接口校验补充
---
ycl-platform/src/main/java/com/ycl/service/apiKey/impl/ApiKeyServiceImpl.java | 42 +++++++
ycl-platform/src/main/java/com/ycl/util/CheckApiUtil.java | 48 ++++++++
ycl-platform/src/main/resources/mapper/apiKey/ApiKeyMapper.xml | 19 +++
ycl-platform/src/main/java/com/ycl/controller/cockpit/enforcementEvents/EnforcementEventsController.java | 14 ++
ycl-platform/src/main/java/com/ycl/mapper/apiKey/ApiKeyMapper.java | 16 ++
ycl-common/src/main/java/com/ycl/enums/common/ResultCode.java | 6
ycl-platform/src/main/java/com/ycl/controller/cockpit/statisticsEvents/StatisticsEventsController.java | 9 +
ycl-generator/src/main/java/com/ycl/MysqlGenerator.java | 2
ycl-platform/src/main/java/com/ycl/service/apiKey/IApiKeyService.java | 24 ++++
ycl-common/src/main/java/com/ycl/utils/MD5Util.java | 102 +++++++++++++++++
ycl-common/src/main/java/com/ycl/vo/cockpit/CockpitVO.java | 10 +
ycl-platform/src/main/java/com/ycl/controller/cockpit/aiIot/AIIotController.java | 10 +
ycl-platform/src/main/java/com/ycl/entity/apiKey/ApiKey.java | 44 +++++++
13 files changed, 340 insertions(+), 6 deletions(-)
diff --git a/ycl-common/src/main/java/com/ycl/enums/common/ResultCode.java b/ycl-common/src/main/java/com/ycl/enums/common/ResultCode.java
index 05454bd..80087d0 100644
--- a/ycl-common/src/main/java/com/ycl/enums/common/ResultCode.java
+++ b/ycl-common/src/main/java/com/ycl/enums/common/ResultCode.java
@@ -31,8 +31,10 @@
LOGIN_TIMEOUT(2016, "鐧诲綍瓒呮椂,璇烽噸鏂扮櫥褰�"),
- OPERATOR_TYPE_FETCH_FAIL(3001, "鑾峰彇鎿嶄綔鍛樺け璐�");
-
+ OPERATOR_TYPE_FETCH_FAIL(3001, "鑾峰彇鎿嶄綔鍛樺け璐�"),
+ APPID_ERROR(3002, "appId閿欒"),
+ APPKEY_ERROR(3003, "appKey閿欒"),
+ SIGN_ERROR(3004,"sign閿欒");
private long code;
private String message;
diff --git a/ycl-common/src/main/java/com/ycl/utils/MD5Util.java b/ycl-common/src/main/java/com/ycl/utils/MD5Util.java
new file mode 100644
index 0000000..3fa2973
--- /dev/null
+++ b/ycl-common/src/main/java/com/ycl/utils/MD5Util.java
@@ -0,0 +1,102 @@
+package com.ycl.utils;
+
+import java.io.UnsupportedEncodingException;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * @author Lyq
+ * @version 1.0
+ * @date 2022/10/31
+ */
+public class MD5Util {
+ /**
+ * MD5鍔犲瘑瀛楃涓诧紙32浣嶅ぇ鍐欙級
+ *
+ * @param string 闇�瑕佽繘琛孧D5鍔犲瘑鐨勫瓧绗︿覆
+ * @return 鍔犲瘑鍚庣殑瀛楃涓诧紙澶у啓锛�
+ */
+ public static String md5Encrypt32Upper(String string) {
+ byte[] hash;
+ try {
+ //鍒涘缓涓�涓狹D5绠楁硶瀵硅薄锛屽苟鑾峰緱MD5瀛楄妭鏁扮粍,16*8=128浣�
+ hash = MessageDigest.getInstance("MD5").digest(string.getBytes("UTF-8"));
+ } catch (NoSuchAlgorithmException e) {
+ throw new RuntimeException("Huh, MD5 should be supported?", e);
+ } catch (UnsupportedEncodingException e) {
+ throw new RuntimeException("Huh, UTF-8 should be supported?", e);
+ }
+
+ //杞崲涓哄崄鍏繘鍒跺瓧绗︿覆
+ StringBuilder hex = new StringBuilder(hash.length * 2);
+ for (byte b : hash) {
+ if ((b & 0xFF) < 0x10) hex.append("0");
+ hex.append(Integer.toHexString(b & 0xFF));
+ }
+ return hex.toString().toUpperCase();
+ }
+
+ /**
+ * MD5鍔犲瘑瀛楃涓诧紙32浣嶅皬鍐欙級
+ *
+ * @param string 闇�瑕佽繘琛孧D5鍔犲瘑鐨勫瓧绗︿覆
+ * @return 鍔犲瘑鍚庣殑瀛楃涓诧紙灏忓啓锛�
+ */
+ public static String md5Encrypt32Lower(String string) {
+ byte[] hash;
+ try {
+ //鍒涘缓涓�涓狹D5绠楁硶瀵硅薄锛屽苟鑾峰緱MD5瀛楄妭鏁扮粍,16*8=128浣�
+ hash = MessageDigest.getInstance("MD5").digest(string.getBytes("UTF-8"));
+ } catch (NoSuchAlgorithmException e) {
+ throw new RuntimeException("Huh, MD5 should be supported?", e);
+ } catch (UnsupportedEncodingException e) {
+ throw new RuntimeException("Huh, UTF-8 should be supported?", e);
+ }
+
+ //杞崲涓哄崄鍏繘鍒跺瓧绗︿覆
+ StringBuilder hex = new StringBuilder(hash.length * 2);
+ for (byte b : hash) {
+ if ((b & 0xFF) < 0x10) hex.append("0");
+ hex.append(Integer.toHexString(b & 0xFF));
+ }
+ return hex.toString().toLowerCase();
+ }
+
+ /**
+ * 灏嗕簩杩涘埗瀛楄妭鏁扮粍杞崲涓哄崄鍏繘鍒跺瓧绗︿覆
+ *
+ * @param bytes 浜岃繘鍒跺瓧鑺傛暟缁�
+ * @return 鍗佸叚杩涘埗瀛楃涓�
+ */
+ public static String bytesToHex(byte[] bytes) {
+ StringBuffer hexStr = new StringBuffer();
+ int num;
+ for (int i = 0; i < bytes.length; i++) {
+ num = bytes[i];
+ if (num < 0) {
+ num += 256;
+ }
+ if (num < 16) {
+ hexStr.append("0");
+ }
+ hexStr.append(Integer.toHexString(num));
+ }
+ return hexStr.toString().toUpperCase();
+ }
+
+ /**
+ * Unicode涓枃缂栫爜杞崲鎴愬瓧绗︿覆
+ */
+ public static String unicodeToString(String str) {
+ Pattern pattern = Pattern.compile("(\\\\u(\\p{XDigit}{4}))");
+ Matcher matcher = pattern.matcher(str);
+ char ch;
+ while (matcher.find()) {
+ ch = (char) Integer.parseInt(matcher.group(2), 16);
+ str = str.replace(matcher.group(1), ch + "");
+ }
+ return str;
+ }
+}
diff --git a/ycl-common/src/main/java/com/ycl/vo/cockpit/CockpitVO.java b/ycl-common/src/main/java/com/ycl/vo/cockpit/CockpitVO.java
index 4007cdd..30fa4d8 100644
--- a/ycl-common/src/main/java/com/ycl/vo/cockpit/CockpitVO.java
+++ b/ycl-common/src/main/java/com/ycl/vo/cockpit/CockpitVO.java
@@ -21,6 +21,8 @@
@ApiModelProperty(value = "appKey", example = "1")
@NotBlank(message = "appKey涓嶈兘涓虹┖")
private String appKey;
+ @ApiModelProperty(value = "sign", example = "sfagjgfjgfjdgfjsgdfgsa")
+ @NotBlank(message = "sign涓嶈兘涓虹┖")
private String sign;
}
@@ -33,10 +35,14 @@
@ApiModelProperty(value = "appKey", example = "1")
@NotBlank(message = "appKey涓嶈兘涓虹┖")
private String appKey;
+ @ApiModelProperty(value = "sign", example = "sfagjgfjgfjdgfjsgdfgsa")
+ @NotBlank(message = "sign涓嶈兘涓虹┖")
private String sign;
- @ApiModelProperty(value = "寮�濮嬫椂闂达紝鏍煎紡yyyy-MM-dd hh:mm:ss")
+ @ApiModelProperty(value = "寮�濮嬫椂闂达紝鏍煎紡yyyy-MM-dd hh:mm:ss",example = "2022-10-22 13:22:22")
+ @NotBlank(message = "寮�濮嬫椂闂翠笉鑳戒负绌�")
private String beginTime;
- @ApiModelProperty(value = "缁撴潫鏃堕棿锛屾牸寮弝yyy-MM-dd hh:mm:ss")
+ @ApiModelProperty(value = "缁撴潫鏃堕棿锛屾牸寮弝yyy-MM-dd hh:mm:ss",example = "2022-10-23 13:22:22")
+ @NotBlank(message = "缁撴潫鏃堕棿涓嶈兘涓虹┖")
private String endTime;
}
}
diff --git a/ycl-generator/src/main/java/com/ycl/MysqlGenerator.java b/ycl-generator/src/main/java/com/ycl/MysqlGenerator.java
index fb96cad..3c4b34d 100644
--- a/ycl-generator/src/main/java/com/ycl/MysqlGenerator.java
+++ b/ycl-generator/src/main/java/com/ycl/MysqlGenerator.java
@@ -59,7 +59,7 @@
GlobalConfig gc = new GlobalConfig();
final String projectPath = System.getProperty("user.dir");
gc.setOutputDir(projectPath + "/ycl-generator/src/main/java");
- gc.setAuthor("zhanghua");//浣滆��
+ gc.setAuthor("lyq");//浣滆��
gc.setBaseResultMap(true); //mapper.xml 鐢熸垚 ResultMap
gc.setBaseColumnList(true); //mapper.xml 鐢熸垚 ColumnList
// gc.setSwagger2(true);
diff --git a/ycl-platform/src/main/java/com/ycl/controller/cockpit/aiIot/AIIotController.java b/ycl-platform/src/main/java/com/ycl/controller/cockpit/aiIot/AIIotController.java
index 313cac6..4d1d238 100644
--- a/ycl-platform/src/main/java/com/ycl/controller/cockpit/aiIot/AIIotController.java
+++ b/ycl-platform/src/main/java/com/ycl/controller/cockpit/aiIot/AIIotController.java
@@ -1,6 +1,7 @@
package com.ycl.controller.cockpit.aiIot;
import com.ycl.api.CommonResult;
+import com.ycl.util.CheckApiUtil;
import com.ycl.vo.cockpit.CockpitVO;
import com.ycl.vo.cockpit.aiIot.AIIotVO;
import io.swagger.annotations.Api;
@@ -10,6 +11,7 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
+import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
@@ -25,9 +27,13 @@
@RequestMapping("/api/lot")
public class AIIotController {
+ @Resource
+ private CheckApiUtil checkApiUtil;
+
@ApiOperation(value = "鐩戞祴鏁版嵁")
@GetMapping("/detection")
public CommonResult<AIIotVO.DetectionVO> detection(@Validated CockpitVO.Params1VO params) {
+ checkApiUtil.cockpit(params.getAppId(), params.getAppKey(), params.getSign(), null, null);
AIIotVO.DetectionVO detectionVO = new AIIotVO.DetectionVO();
detectionVO.setVideo(121);
detectionVO.setIndividual(20);
@@ -40,6 +46,7 @@
@ApiOperation(value = "瀹炴椂瑙嗛鐩戞帶")
@GetMapping("/video")
public CommonResult<List<AIIotVO.VideoVO>> video(@Validated CockpitVO.Params1VO params) {
+ checkApiUtil.cockpit(params.getAppId(), params.getAppKey(), params.getSign(), null, null);
List<AIIotVO.VideoVO> videoVOS = new ArrayList<>();
AIIotVO.VideoVO a = null;
for (int i = 0; i < 4; i++) {
@@ -60,6 +67,7 @@
@ApiOperation(value = "AI绠楁硶鏁堣兘")
@GetMapping("/efficiency")
public CommonResult<List<AIIotVO.EfficiencyVO>> efficiency(@Validated CockpitVO.Params2VO params) {
+ checkApiUtil.cockpit(params.getAppId(), params.getAppKey(), params.getSign(), params.getBeginTime(), params.getEndTime());
List<AIIotVO.EfficiencyVO> efficiencyVOS = new ArrayList<>();
AIIotVO.EfficiencyVO a = null;
for (int i = 0; i < 4; i++) {
@@ -75,6 +83,7 @@
@ApiOperation(value = "娓e湡鑱斿姩")
@GetMapping("/slag_car")
public CommonResult<AIIotVO.SlagCarVO> slagCar(@Validated CockpitVO.Params1VO params) {
+ checkApiUtil.cockpit(params.getAppId(), params.getAppKey(), params.getSign(), null, null);
AIIotVO.SlagCarVO slagCarVO = new AIIotVO.SlagCarVO();
slagCarVO.setCar(236);
slagCarVO.setTeam(20);
@@ -84,6 +93,7 @@
@ApiOperation(value = "AI浜嬩欢缁熻")
@GetMapping("/event_statistics")
public CommonResult<List<AIIotVO.StatisticsVO>> statistics(@Validated CockpitVO.Params2VO params) {
+ checkApiUtil.cockpit(params.getAppId(), params.getAppKey(), params.getSign(), params.getBeginTime(), params.getEndTime());
List<AIIotVO.StatisticsVO> statisticsVOS = new ArrayList<>();
List<AIIotVO.Statistics1VO> statistics1VOS = new ArrayList<>();
AIIotVO.StatisticsVO a = null;
diff --git a/ycl-platform/src/main/java/com/ycl/controller/cockpit/enforcementEvents/EnforcementEventsController.java b/ycl-platform/src/main/java/com/ycl/controller/cockpit/enforcementEvents/EnforcementEventsController.java
index 343aa77..1c19a87 100644
--- a/ycl-platform/src/main/java/com/ycl/controller/cockpit/enforcementEvents/EnforcementEventsController.java
+++ b/ycl-platform/src/main/java/com/ycl/controller/cockpit/enforcementEvents/EnforcementEventsController.java
@@ -1,6 +1,7 @@
package com.ycl.controller.cockpit.enforcementEvents;
import com.ycl.api.CommonResult;
+import com.ycl.util.CheckApiUtil;
import com.ycl.vo.cockpit.CockpitVO;
import com.ycl.vo.cockpit.enforcementEvents.EnforcementEventsVO;
import io.swagger.annotations.Api;
@@ -10,6 +11,7 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
+import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
@@ -26,16 +28,20 @@
@RestController
@RequestMapping("/api/event")
public class EnforcementEventsController {
+ @Resource
+ private CheckApiUtil checkApiUtil;
+
@ApiOperation(value = "鎵ф硶浜嬩欢缁熻")
@GetMapping("/statistics")
public CommonResult<Map<String, Object>> statistics(@Validated CockpitVO.Params2VO params) {
+ checkApiUtil.cockpit(params.getAppId(), params.getAppKey(), params.getSign(), params.getBeginTime(), params.getEndTime());
Map<String, Object> map = new HashMap<>();
EnforcementEventsVO.StatisticsEventVO eventVO = new EnforcementEventsVO.StatisticsEventVO();
eventVO.setCount(10);
eventVO.setRatio(new BigDecimal("0.69").setScale(2, RoundingMode.HALF_UP));
map.put("reported", eventVO);
map.put("disposition", eventVO);
- map.put("dispositionInTime",eventVO);
+ map.put("dispositionInTime", eventVO);
map.put("register", eventVO);
return CommonResult.success(map);
}
@@ -43,6 +49,7 @@
@ApiOperation(value = "浜嬩欢绫诲瀷")
@GetMapping("/type")
public CommonResult<EnforcementEventsVO.TypeAndSourceVO> type(@Validated CockpitVO.Params2VO params) {
+ checkApiUtil.cockpit(params.getAppId(), params.getAppKey(), params.getSign(), params.getBeginTime(), params.getEndTime());
List<EnforcementEventsVO.TypeAndSourceVO1> typeVO1s = new ArrayList<>();
EnforcementEventsVO.TypeAndSourceVO typeVO = new EnforcementEventsVO.TypeAndSourceVO();
EnforcementEventsVO.TypeAndSourceVO1 typeVO1 = null;
@@ -61,6 +68,7 @@
@ApiOperation(value = "瑙嗛鎶撴媿鍛婂彂鐐逛綅")
@GetMapping("/video")
public CommonResult<List<EnforcementEventsVO.VideoAndAreaVO>> video(@Validated CockpitVO.Params2VO params) {
+ checkApiUtil.cockpit(params.getAppId(), params.getAppKey(), params.getSign(), params.getBeginTime(), params.getEndTime());
List<EnforcementEventsVO.VideoAndAreaVO> videoVOS = new ArrayList<>();
EnforcementEventsVO.VideoAndAreaVO videoVO = null;
for (int i = 0; i < 4; i++) {
@@ -75,6 +83,7 @@
@ApiOperation(value = "浜嬩欢鏉ユ簮")
@GetMapping("/source")
public CommonResult<EnforcementEventsVO.TypeAndSourceVO> source(@Validated CockpitVO.Params2VO params) {
+ checkApiUtil.cockpit(params.getAppId(), params.getAppKey(), params.getSign(), params.getBeginTime(), params.getEndTime());
List<EnforcementEventsVO.TypeAndSourceVO1> typeVO1s = new ArrayList<>();
EnforcementEventsVO.TypeAndSourceVO typeVO = new EnforcementEventsVO.TypeAndSourceVO();
EnforcementEventsVO.TypeAndSourceVO1 typeVO1 = null;
@@ -93,6 +102,7 @@
@ApiOperation(value = "浜嬩欢鍖哄煙缁熻")
@GetMapping("/area")
public CommonResult<List<EnforcementEventsVO.VideoAndAreaVO>> area(@Validated CockpitVO.Params2VO params) {
+ checkApiUtil.cockpit(params.getAppId(), params.getAppKey(), params.getSign(), params.getBeginTime(), params.getEndTime());
List<EnforcementEventsVO.VideoAndAreaVO> videoVOS = new ArrayList<>();
EnforcementEventsVO.VideoAndAreaVO videoVO = null;
for (int i = 0; i < 4; i++) {
@@ -107,6 +117,7 @@
@ApiOperation(value = "寤惰浜嬩欢")
@GetMapping("/delay")
public CommonResult<List<EnforcementEventsVO.DelayVO>> delay(@Validated CockpitVO.Params2VO params) {
+ checkApiUtil.cockpit(params.getAppId(), params.getAppKey(), params.getSign(), params.getBeginTime(), params.getEndTime());
List<EnforcementEventsVO.DelayVO> delayVOS = new ArrayList<>();
EnforcementEventsVO.DelayVO delayVO = null;
for (int i = 0; i < 4; i++) {
@@ -122,6 +133,7 @@
@ApiOperation(value = "浜嬩欢淇℃伅")
@GetMapping("/info")
public CommonResult<EnforcementEventsVO.InfoVO> info(@Validated CockpitVO.Params2VO params) {
+ checkApiUtil.cockpit(params.getAppId(), params.getAppKey(), params.getSign(), params.getBeginTime(), params.getEndTime());
EnforcementEventsVO.InfoVO infoVO = new EnforcementEventsVO.InfoVO();
EnforcementEventsVO.EventVO eventVO = new EnforcementEventsVO.EventVO();
infoVO.setToday(5);
diff --git a/ycl-platform/src/main/java/com/ycl/controller/cockpit/statisticsEvents/StatisticsEventsController.java b/ycl-platform/src/main/java/com/ycl/controller/cockpit/statisticsEvents/StatisticsEventsController.java
index 5c5ce45..21d3745 100644
--- a/ycl-platform/src/main/java/com/ycl/controller/cockpit/statisticsEvents/StatisticsEventsController.java
+++ b/ycl-platform/src/main/java/com/ycl/controller/cockpit/statisticsEvents/StatisticsEventsController.java
@@ -1,6 +1,7 @@
package com.ycl.controller.cockpit.statisticsEvents;
import com.ycl.api.CommonResult;
+import com.ycl.util.CheckApiUtil;
import com.ycl.vo.cockpit.CockpitVO;
import com.ycl.vo.cockpit.statisticsEvents.StatisticsEventsVO;
import io.swagger.annotations.Api;
@@ -10,6 +11,7 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
+import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
@@ -24,10 +26,13 @@
@RestController
@RequestMapping("/api/data")
public class StatisticsEventsController {
+ @Resource
+ private CheckApiUtil checkApiUtil;
@ApiOperation(value = "鎵ф硶浜嬩欢")
@GetMapping("/law_enforcement_event")
public CommonResult<List<StatisticsEventsVO.LawEnforcementEventVO>> detection(@Validated CockpitVO.Params2VO params) {
+ checkApiUtil.cockpit(params.getAppId(), params.getAppKey(), params.getSign(), params.getBeginTime(), params.getEndTime());
List<StatisticsEventsVO.LawEnforcementEventVO> lawEnforcementEventVOS = new ArrayList<>();
StatisticsEventsVO.LawEnforcementEventVO a = null;
for (int i = 0; i < 4; i++) {
@@ -44,6 +49,7 @@
@ApiOperation(value = "鐗╄仈鎰熺煡")
@GetMapping("/lot")
public CommonResult<List<StatisticsEventsVO.LotVO>> lot(@Validated CockpitVO.Params1VO params) {
+ checkApiUtil.cockpit(params.getAppId(), params.getAppKey(), params.getSign(), null, null);
List<StatisticsEventsVO.LotVO> lotVOS = new ArrayList<>();
StatisticsEventsVO.LotVO a = null;
for (int i = 0; i < 4; i++) {
@@ -59,6 +65,7 @@
@ApiOperation(value = "鎵ф硶闃熶紞")
@GetMapping("/team")
public CommonResult<StatisticsEventsVO.TeamVO> team(@Validated CockpitVO.Params1VO params) {
+ checkApiUtil.cockpit(params.getAppId(), params.getAppKey(), params.getSign(), null, null);
StatisticsEventsVO.TeamVO teamVO = new StatisticsEventsVO.TeamVO();
teamVO.setAll(30);
teamVO.setAssistant(10);
@@ -72,6 +79,7 @@
@ApiOperation(value = "缃戞牸鍛�")
@GetMapping("/grid_member")
public CommonResult<List<StatisticsEventsVO.GridMemberVO>> gridMember(@Validated CockpitVO.Params1VO params) {
+ checkApiUtil.cockpit(params.getAppId(), params.getAppKey(), params.getSign(), null, null);
List<StatisticsEventsVO.GridMemberVO> gridMemberVOS = new ArrayList<>();
StatisticsEventsVO.GridMemberVO a = null;
for (int i = 0; i < 4; i++) {
@@ -87,6 +95,7 @@
@ApiOperation(value = "鎸囨暟浣撳緛")
@GetMapping("/index_signs")
public CommonResult<StatisticsEventsVO.IndexSignsVO> indexSigns(@Validated CockpitVO.Params1VO params) {
+ checkApiUtil.cockpit(params.getAppId(), params.getAppKey(), params.getSign(), null, null);
StatisticsEventsVO.IndexSignsVO indexSignsVO = new StatisticsEventsVO.IndexSignsVO();
indexSignsVO.setEvent(1);
indexSignsVO.setGridMember(20);
diff --git a/ycl-platform/src/main/java/com/ycl/entity/apiKey/ApiKey.java b/ycl-platform/src/main/java/com/ycl/entity/apiKey/ApiKey.java
new file mode 100644
index 0000000..5f9b73b
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/entity/apiKey/ApiKey.java
@@ -0,0 +1,44 @@
+package com.ycl.entity.apiKey;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author lyq
+ * @since 2022-10-31
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("ums_api_key")
+public class ApiKey implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @TableField("name")
+ private String name;
+
+ @TableField("app_id")
+ private String appId;
+
+ @TableField("app_key")
+ private String appKey;
+
+ @TableField("create_time")
+ private LocalDateTime createTime;
+
+
+}
diff --git a/ycl-platform/src/main/java/com/ycl/mapper/apiKey/ApiKeyMapper.java b/ycl-platform/src/main/java/com/ycl/mapper/apiKey/ApiKeyMapper.java
new file mode 100644
index 0000000..13d2554
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/mapper/apiKey/ApiKeyMapper.java
@@ -0,0 +1,16 @@
+package com.ycl.mapper.apiKey;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ycl.entity.apiKey.ApiKey;
+
+/**
+ * <p>
+ * Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author lyq
+ * @since 2022-10-31
+ */
+public interface ApiKeyMapper extends BaseMapper<ApiKey> {
+
+}
diff --git a/ycl-platform/src/main/java/com/ycl/service/apiKey/IApiKeyService.java b/ycl-platform/src/main/java/com/ycl/service/apiKey/IApiKeyService.java
new file mode 100644
index 0000000..4d539b4
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/service/apiKey/IApiKeyService.java
@@ -0,0 +1,24 @@
+package com.ycl.service.apiKey;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ycl.entity.apiKey.ApiKey;
+
+/**
+ * <p>
+ * 鏈嶅姟绫�
+ * </p>
+ *
+ * @author lyq
+ * @since 2022-10-31
+ */
+public interface IApiKeyService extends IService<ApiKey> {
+
+ /**
+ * 鏍¢獙apikey锛宎ppId
+ *
+ * @param appId
+ * @param appKey
+ * @param name
+ */
+ void checkIsExist(String appId, String appKey, String name);
+}
diff --git a/ycl-platform/src/main/java/com/ycl/service/apiKey/impl/ApiKeyServiceImpl.java b/ycl-platform/src/main/java/com/ycl/service/apiKey/impl/ApiKeyServiceImpl.java
new file mode 100644
index 0000000..1ee7f8a
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/service/apiKey/impl/ApiKeyServiceImpl.java
@@ -0,0 +1,42 @@
+package com.ycl.service.apiKey.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ycl.entity.apiKey.ApiKey;
+import com.ycl.enums.common.ResultCode;
+import com.ycl.exception.ApiException;
+import com.ycl.mapper.apiKey.ApiKeyMapper;
+import com.ycl.service.apiKey.IApiKeyService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+/**
+ * <p>
+ * 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author lyq
+ * @since 2022-10-31
+ */
+@Service
+public class ApiKeyServiceImpl extends ServiceImpl<ApiKeyMapper, ApiKey> implements IApiKeyService {
+ @Resource
+ private ApiKeyMapper apiKeyMapper;
+
+ @Override
+ public void checkIsExist(String appId, String appKey, String name) {
+ ApiKey apiKey = this.queryByName(name);
+ if (!appId.equals(apiKey.getAppId())) {
+ throw new ApiException(ResultCode.APPID_ERROR);
+ }
+ if (!appKey.equals(apiKey.getAppKey())) {
+ throw new ApiException(ResultCode.APPKEY_ERROR);
+ }
+ }
+
+ public ApiKey queryByName(String name) {
+ ApiKey apiKey = apiKeyMapper.selectOne(new LambdaQueryWrapper<ApiKey>().eq(ApiKey::getName, name));
+ return apiKey;
+ }
+}
diff --git a/ycl-platform/src/main/java/com/ycl/util/CheckApiUtil.java b/ycl-platform/src/main/java/com/ycl/util/CheckApiUtil.java
new file mode 100644
index 0000000..1d3b50c
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/util/CheckApiUtil.java
@@ -0,0 +1,48 @@
+package com.ycl.util;
+
+import com.ycl.enums.common.ResultCode;
+import com.ycl.exception.ApiException;
+import com.ycl.service.apiKey.IApiKeyService;
+import com.ycl.utils.MD5Util;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+
+/**
+ * @author Lyq
+ * @version 1.0
+ * @date 2022/10/31
+ */
+@Component
+public class CheckApiUtil {
+
+ @Resource
+ private IApiKeyService apiKeyService;
+
+ /**
+ * 椹鹃┒鑸�
+ *
+ * @param appId
+ * @param appKey
+ * @param sign
+ * @param name
+ * @param beginTime
+ * @param endTime
+ */
+ public void cockpit(String appId, String appKey, String sign, String beginTime, String endTime) {
+ apiKeyService.checkIsExist(appId, appKey, "椹鹃┒浠�");
+ StringBuffer sb = new StringBuffer();
+ sb.append(appId);
+ sb.append(appKey);
+ String result;
+ if (!StringUtils.isBlank(beginTime) && !StringUtils.isBlank(endTime)) {
+ sb.append(beginTime);
+ sb.append(endTime);
+ }
+ result = MD5Util.md5Encrypt32Lower(sb.toString());
+ if (!sign.equals(result)) {
+ throw new ApiException(ResultCode.SIGN_ERROR);
+ }
+ }
+}
diff --git a/ycl-platform/src/main/resources/mapper/apiKey/ApiKeyMapper.xml b/ycl-platform/src/main/resources/mapper/apiKey/ApiKeyMapper.xml
new file mode 100644
index 0000000..692db80
--- /dev/null
+++ b/ycl-platform/src/main/resources/mapper/apiKey/ApiKeyMapper.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ycl.mapper.apiKey.ApiKeyMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.ycl.entity.apiKey.ApiKey">
+ <id column="id" property="id" />
+ <result column="name" property="name" />
+ <result column="app_id" property="appId" />
+ <result column="app_key" property="appKey" />
+ <result column="create_time" property="createTime" />
+ </resultMap>
+
+ <!-- 閫氱敤鏌ヨ缁撴灉鍒� -->
+ <sql id="Base_Column_List">
+ id, name, app_id, app_key, create_time
+ </sql>
+
+</mapper>
--
Gitblit v1.8.0