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