jc 3 months ago
parent
commit
e211cd4733

+ 3 - 3
src/main/java/com/zt/Main.java

@@ -18,11 +18,11 @@ public class Main {
     private static final String APP_ID = "your_app_id";
     private static final String APP_ID = "your_app_id";
     private static final String BASE_URL = "http://localhost:8088/api";
     private static final String BASE_URL = "http://localhost:8088/api";
     public static void main(String[] args) {
     public static void main(String[] args) {
-        String reqId = "unique_req_id";
+        String reqId = "123";
         String reqTime = "1";
         String reqTime = "1";
-        String goodsId = "12345";
+        String goodsId = "1";
         Integer amount = 2;
         Integer amount = 2;
-        Double price = 99.9;
+        Double price = 1.0;
         String mobile = "13800000000";
         String mobile = "13800000000";
         String nowDate = DateUtil.format(new Date(), "yyyy-MM-dd");
         String nowDate = DateUtil.format(new Date(), "yyyy-MM-dd");
 
 

+ 0 - 38
src/main/java/com/zt/common/pojo/Shoop.java

@@ -1,38 +0,0 @@
-package com.zt.common.pojo;
-
-import com.fasterxml.jackson.annotation.JsonFormat;
-import jakarta.validation.constraints.*;
-import lombok.Data;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.util.Date;
-
-/**
- * @Date 2025/3/29 10:38
- * @Author neko
- **/
-@Data
-public class Shoop {
-    @NotBlank(message = "appId不能为空")
-    private String appId;
-    @NotBlank(message = "签名不能为空")
-    private String sign;
-    @NotNull(message = "时间不能为空")
-    private Long reqTime;
-    @NotNull(message = "商品id不能为空")
-    private Long goodsId;
-    @NotNull(message = "商品数量不能为空")
-    @Min(value = 1, message = "商品数量大于0")
-    private Long amount;
-    @NotNull(message = "价格不能为空")
-    @DecimalMin(value = "0", message = "价格大于0")
-    @DecimalMax(value = "9999", message = "价格小于9999")
-    private Double price;
-    @NotNull(message = "手机号不能为空")
-    @Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号格式不正确")
-    private String mobile;
-    @NotNull(message = "日期格不能为空")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone ="GMT+8")
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private Date NewDate;
-}

+ 14 - 2
src/main/java/com/zt/common/utils/SingUtil.java

@@ -1,7 +1,9 @@
 package com.zt.common.utils;
 package com.zt.common.utils;
 
 
 import cn.hutool.crypto.digest.DigestUtil;
 import cn.hutool.crypto.digest.DigestUtil;
+import org.springframework.util.DigestUtils;
 
 
+import java.nio.charset.StandardCharsets;
 import java.util.Date;
 import java.util.Date;
 
 
 /**
 /**
@@ -10,15 +12,25 @@ import java.util.Date;
  **/
  **/
 
 
 public class SingUtil {
 public class SingUtil {
-    private static final String APP_KEY = "your_app_key";
+    private static final String APP_KEY = "iiii";
 
 
     public static String generateSign(String appId, String goodsId, String reqId, String reqTime) {
     public static String generateSign(String appId, String goodsId, String reqId, String reqTime) {
         String content = appId + goodsId + reqId + reqTime + APP_KEY;
         String content = appId + goodsId + reqId + reqTime + APP_KEY;
+        System.out.println(appId);
+        System.out.println(goodsId);
+        System.out.println(reqId);
+        System.out.println(reqTime);
+        System.out.println("----***----"+content);
+
         return DigestUtil.md5Hex(content);
         return DigestUtil.md5Hex(content);
     }
     }
 
 
     public static boolean verifySign(String appId, String goodsId, String reqId, String reqTime, String sign) {
     public static boolean verifySign(String appId, String goodsId, String reqId, String reqTime, String sign) {
-        String generatedSign = generateSign(appId, goodsId, reqId, reqTime);
+        String generatedSign = DigestUtil.md5Hex((appId + goodsId + reqId + reqTime).getBytes(StandardCharsets.UTF_8));
+//        String generatedSign = DigestUtils.md5DigestAsHex((appId+goodsId+reqId+reqTime).getBytes(StandardCharsets.UTF_8));
+        System.out.println("----+++++----"+generatedSign);
+        System.out.println("----///----"+sign);
+//        return generatedSign.equals(sign);
         return generatedSign.equals(sign);
         return generatedSign.equals(sign);
     }
     }
 }
 }

+ 21 - 19
src/main/java/com/zt/controller/ApiController.java

@@ -1,12 +1,17 @@
 package com.zt.controller;
 package com.zt.controller;
 
 
+import cn.hutool.crypto.digest.DigestUtil;
 import com.zt.common.pojo.CeShi;
 import com.zt.common.pojo.CeShi;
+import com.zt.common.utils.Result;
 import jakarta.validation.Valid;
 import jakarta.validation.Valid;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.http.ResponseEntity;
+import org.springframework.util.DigestUtils;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 import com.zt.common.utils.SingUtil;
 import com.zt.common.utils.SingUtil;
 
 
+import java.nio.charset.StandardCharsets;
+
 /**
 /**
  * @Date 2025/3/31 15:27
  * @Date 2025/3/31 15:27
  * @Author neko
  * @Author neko
@@ -16,33 +21,30 @@ import com.zt.common.utils.SingUtil;
 public class ApiController {
 public class ApiController {
     @PostMapping("/interface1")
     @PostMapping("/interface1")
     public ResponseEntity<String> interface1(@RequestHeader("reqId") String reqId, @Valid @RequestBody CeShi params) {
     public ResponseEntity<String> interface1(@RequestHeader("reqId") String reqId, @Valid @RequestBody CeShi params) {
-        if (!SingUtil.verifySign(params.getAppId(), params.getGoodsId(), reqId, params.getReqTime(), params.getSign())) {
+//        String s = DigestUtils.md5DigestAsHex((params.getAppId()+params.getGoodsId()+reqId+params.getReqTime()).getBytes(StandardCharsets.UTF_8));
+        String s = DigestUtil.md5Hex((params.getAppId()+params.getGoodsId()+reqId+params.getReqTime()).getBytes(StandardCharsets.UTF_8));
+        if (!SingUtil.verifySign(params.getAppId(), params.getGoodsId(), reqId, params.getReqTime(), s )) {
+//            System.err.println(SingUtil.verifySign(params.getAppId(), params.getGoodsId(), reqId, params.getReqTime(), s ));
             return new ResponseEntity<>("签名验证失败", HttpStatus.BAD_REQUEST);
             return new ResponseEntity<>("签名验证失败", HttpStatus.BAD_REQUEST);
         }
         }
+        System.out.println(Result.OK(params));
         return new ResponseEntity<>("接口一处理成功", HttpStatus.OK);
         return new ResponseEntity<>("接口一处理成功", HttpStatus.OK);
     }
     }
 
 
     @GetMapping("/interface2")
     @GetMapping("/interface2")
-    public ResponseEntity<String> interface2(@RequestHeader("reqId") String reqId,
-                                             @RequestParam("appId") String appId,
-                                             @RequestParam("sign") String sign,
-                                             @RequestParam("reqTime") String reqTime,
-                                             @RequestParam("goodsId") String goodsId,
-                                             @RequestParam("amount") Integer amount,
-                                             @RequestParam("price") Double price,
-                                             @RequestParam("mobile") String mobile,
-                                             @RequestParam("nowDate") String nowDate) {
+    public ResponseEntity<String> interface2(@RequestHeader("reqId") String reqId,@Valid CeShi ceShi) {
         CeShi params = new CeShi();
         CeShi params = new CeShi();
-        params.setAppId(appId);
-        params.setSign(sign);
-        params.setReqTime(reqTime);
-        params.setGoodsId(goodsId);
-        params.setAmount(amount);
-        params.setPrice(price);
-        params.setMobile(mobile);
-        params.setNowDate(nowDate);
+        params.setAppId(ceShi.getAppId());
+        params.setSign(ceShi.getSign());
+        params.setReqTime(ceShi.getReqTime());
+        params.setGoodsId(ceShi.getGoodsId());
+        params.setAmount(ceShi.getAmount());
+        params.setPrice(ceShi.getPrice());
+        params.setMobile(ceShi.getMobile());
+        params.setNowDate(ceShi.getNowDate());
 
 
-        if (!SingUtil.verifySign(appId, goodsId, reqId, reqTime, sign)) {
+        String s = DigestUtil.md5Hex((params.getAppId()+params.getGoodsId()+reqId+params.getReqTime()).getBytes(StandardCharsets.UTF_8));
+        if (!SingUtil.verifySign(ceShi.getAppId(), ceShi.getGoodsId(), reqId, ceShi.getReqTime(), s)) {
             return new ResponseEntity<>("签名验证失败", HttpStatus.BAD_REQUEST);
             return new ResponseEntity<>("签名验证失败", HttpStatus.BAD_REQUEST);
         }
         }
         return new ResponseEntity<>("接口二处理成功", HttpStatus.OK);
         return new ResponseEntity<>("接口二处理成功", HttpStatus.OK);

+ 0 - 48
src/main/java/com/zt/controller/Test1.java

@@ -1,48 +0,0 @@
-package com.zt.controller;
-
-import com.zt.common.pojo.Shoop;
-import com.zt.common.utils.Result;
-import jakarta.validation.Valid;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.util.DigestUtils;
-import org.springframework.web.bind.annotation.*;
-
-import java.nio.charset.StandardCharsets;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * @Date 2025/3/29 10:37
- * @Author neko
- **/
-@RestController
-@RequestMapping("/test1")
-@Slf4j
-public class Test1 {
-    @RequestMapping("inter")
-    public Result inter(@RequestHeader("redId") String redId, @Valid @RequestBody Shoop shoop){
-        System.out.println(redId);
-        String md5pwd = DigestUtils.md5DigestAsHex((shoop.getAppId()+shoop.getGoodsId()+redId+shoop.getReqTime()).getBytes(StandardCharsets.UTF_8));
-        System.out.println(md5pwd);
-        Map<String, Object> map = new HashMap<>();
-        map.put("code", "200");
-        map.put("msg", "操作成功");
-        map.put("data", shoop);
-
-//        return map.toString()+redId;
-        return new Result(200,"操作成功",map);
-    }
-
-    @RequestMapping("inter2")
-    public Result inter2(@RequestHeader("redId") String redId,@Valid Shoop shoop){
-        log.info("redId:{}",redId);
-        Map<String, Object> map = new HashMap<>();
-        map.put("code", "200");
-        map.put("msg", "操作成功");
-        map.put("data", shoop);
-//        return map.toString();
-        return new Result(200,"操作成功",map);
-    }
-
-
-}

+ 0 - 47
src/main/java/com/zt/controller/Text2.java

@@ -1,47 +0,0 @@
-package com.zt.controller;
-
-import cn.hutool.json.JSONUtil;
-import com.zt.common.pojo.Shoop;
-import com.zt.common.utils.Result;
-import org.springframework.util.DigestUtils;
-import org.springframework.web.bind.annotation.RequestParam;
-
-import java.net.http.HttpRequest;
-import java.net.http.HttpResponse;
-import java.nio.charset.StandardCharsets;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.time.LocalDateTime;
-import java.time.ZoneId;
-import java.time.format.DateTimeFormatter;
-import java.util.Date;
-import java.util.logging.SimpleFormatter;
-
-/**
- * @Date 2025/3/31 9:44
- * @Author neko
- **/
-public class Text2 {
-    private static final String BASE_URL = "http://localhost:8088/api";
-    public static void main(String[] args) throws ParseException {
-        String appId = "1";
-        String reqId = "123";
-        Integer reqTime = 1;
-        Integer goodsId = 1;
-        String sign = DigestUtils.md5DigestAsHex((appId+goodsId+reqId+reqTime).getBytes(StandardCharsets.UTF_8));
-        Shoop shoop = new Shoop();
-        shoop.setAppId(appId);
-        shoop.setSign(sign);
-        shoop.setGoodsId(Long.valueOf(goodsId));
-        shoop.setReqTime(Long.valueOf(reqTime));
-        shoop.setAmount(1L);
-        shoop.setPrice(1.0);
-        shoop.setMobile("18803602213");
-        String dateString = "2025-03-31 12:12:12";
-        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        Date date = dateFormat.parse(dateString);
-        shoop.setNewDate(date);
-        System.out.println(Result.OK(shoop));
-
-    }
-}

+ 8 - 38
src/test/java/com/zt/Text.java

@@ -1,5 +1,7 @@
 package com.zt;
 package com.zt;
 
 
+import cn.hutool.crypto.digest.DigestUtil;
+
 import java.util.Deque;
 import java.util.Deque;
 import java.util.LinkedList;
 import java.util.LinkedList;
 
 
@@ -8,42 +10,10 @@ import java.util.LinkedList;
  * @Author neko
  * @Author neko
  **/
  **/
 public class Text {
 public class Text {
-//    public int[] maxSlidingWindow(int[] nums, int k) {
-//        if (nums == null || k <= 0) {
-//            return new int[0];
-//        }
-//        int n = nums.length;
-//        int[] result = new int[n - k + 1];
-//        int resultIndex = 0;
-//        // 存储数组的索引
-//        Deque<Integer> deque = new LinkedList<>();
-//
-//        for (int i = 0; i < n; i++) {
-//            // 移除超出窗口范围的元素
-//            while (!deque.isEmpty() && deque.peekFirst() < i - k + 1) {
-//                deque.pollFirst();
-//            }
-//            // 移除队列中比当前元素小的元素
-//            while (!deque.isEmpty() && nums[deque.peekLast()] < nums[i]) {
-//                deque.pollLast();
-//            }
-//            // 将当前元素的索引加入队列
-//            deque.offerLast(i);
-//            // 当窗口大小达到 k 时,记录最大值
-//            if (i >= k - 1) {
-//                result[resultIndex++] = nums[deque.peekFirst()];
-//            }
-//        }
-//        return result;
-//    }
-//
-//    public static void main(String[] args) {
-//        SlidingWindowMaximum solution = new SlidingWindowMaximum();
-//        int[] nums = {1, 3, -1, -3, 5, 3, 6, 7};
-//        int k = 3;
-//        int[] result = solution.maxSlidingWindow(nums, k);
-//        for (int num : result) {
-//            System.out.print(num + " ");
-//        }
-//    }
+    public static void main(String[] args) {
+        String s = DigestUtil.md5Hex("123");
+        String b = DigestUtil.md5Hex("123");
+        System.out.println(s);
+        System.out.println(b);
+    }
 }
 }