lyhzzz 6 months ago
parent
commit
e9b398e1d4

+ 11 - 0
doc/update-2.8.1-rtk.sql

@@ -0,0 +1,11 @@
+CREATE TABLE `4dkankan_v4`.`t_rtk_update_log`  (
+                                           `id` int NOT NULL AUTO_INCREMENT,
+                                           `rtk_sn_code` varchar(255) NULL,
+                                           `fd_account` varchar(255) NULL,
+                                           `old_json_data` text NULL,
+                                           `new_json_data` varchar(255) NULL,
+                                           `rec_status` varchar(255) NULL DEFAULT 'A',
+                                           `create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
+                                           `update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+                                           PRIMARY KEY (`id`)
+);

+ 37 - 0
src/main/java/com/fdkankan/manage/controller/BaseController.java

@@ -1,8 +1,11 @@
 package com.fdkankan.manage.controller;
 
+import com.alibaba.fastjson.JSONObject;
 import com.auth0.jwt.JWT;
 import com.auth0.jwt.interfaces.DecodedJWT;
 import com.fdkankan.manage.common.ResultData;
+import com.fdkankan.manage.util.RsaUtils;
+import com.fdkankan.manage.util.RtkUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -25,6 +28,10 @@ public class BaseController {
         return request.getHeader("sign");
     }
 
+    protected String getRtkSign(){
+        return request.getHeader("rtk-sign");
+    }
+
     protected Long getUserId(){
         String token = request.getHeader("token");
         DecodedJWT jwt = JWT.decode(token);
@@ -45,4 +52,34 @@ public class BaseController {
         return true;
     }
 
+
+    public JSONObject checkRtkSign(){
+        try {
+            String sign = getRtkSign();
+            //{"time":1739007343379,"rtkSnCode":"2113213123","account":"111"}
+            String decipher = RsaUtils.decipher(sign, RtkUtils.privateKey);
+            JSONObject jsonObject = JSONObject.parseObject(decipher);
+            if(!jsonObject.containsKey("time") || !jsonObject.containsKey("rtkSnCode") || !jsonObject.containsKey("account")){
+                return null;
+            }
+            if(jsonObject.get("time") == null || jsonObject.get("rtkSnCode") == null || jsonObject.get("account") == null){
+                return null;
+            }
+            Long time = jsonObject.getLong("time");
+            if((new Date().getTime() - time)  > 1000 * 10){
+                return null;
+            }
+            return jsonObject;
+        }catch (Exception e){
+            return null;
+        }
+    }
+
+    public static void main(String[] args) {
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("account","111");
+        jsonObject.put("time",new Date().getTime());
+        jsonObject.put("rtkSnCode","2113213123");
+        System.out.println(jsonObject.toJSONString());
+    }
 }

+ 21 - 0
src/main/java/com/fdkankan/manage/controller/RtkUpdateLogController.java

@@ -0,0 +1,21 @@
+package com.fdkankan.manage.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2025-02-08
+ */
+@RestController
+@RequestMapping("/manage/rtkUpdateLog")
+public class RtkUpdateLogController {
+
+}
+

+ 54 - 0
src/main/java/com/fdkankan/manage/entity/RtkUpdateLog.java

@@ -0,0 +1,54 @@
+package com.fdkankan.manage.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2025-02-08
+ */
+@Getter
+@Setter
+@TableName("t_rtk_update_log")
+public class RtkUpdateLog implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("rtk_sn_code")
+    private String rtkSnCode;
+
+    @TableField("fd_account")
+    private String fdAccount;
+
+    @TableField("old_json_data")
+    private String oldJsonData;
+
+    @TableField("new_json_data")
+    private String newJsonData;
+
+    @TableField("rec_status")
+    @TableLogic(value = "A",delval = "I")
+    private String recStatus;
+
+    @TableField("create_time")
+    private Date createTime;
+
+    @TableField("update_time")
+    private Date updateTime;
+
+
+}

+ 1 - 1
src/main/java/com/fdkankan/manage/generate/AutoGenerate.java

@@ -18,7 +18,7 @@ public class AutoGenerate {
         String path =System.getProperty("user.dir");
 
         generate(path,"manage", getTables(new String[]{
-                "t_manage_agent_log"
+                "t_rtk_update_log"
         }));
 
 //        generate(path,"goods", getTables(new String[]{

+ 30 - 5
src/main/java/com/fdkankan/manage/inner/controller/InnerController.java

@@ -2,16 +2,14 @@ package com.fdkankan.manage.inner.controller;
 
 import cn.hutool.extra.servlet.ServletUtil;
 import cn.hutool.log.Log;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.fdkankan.common.util.SecurityUtil;
 import com.fdkankan.manage.common.CacheUtil;
 import com.fdkankan.manage.common.ResultCode;
 import com.fdkankan.manage.common.ResultData;
 import com.fdkankan.manage.controller.BaseController;
-import com.fdkankan.manage.entity.RtkAccount;
-import com.fdkankan.manage.entity.RtkDevice;
-import com.fdkankan.manage.entity.RtkInfo;
-import com.fdkankan.manage.entity.RtkUseLog;
+import com.fdkankan.manage.entity.*;
 import com.fdkankan.manage.exception.BusinessException;
 import com.fdkankan.manage.service.*;
 import com.fdkankan.manage.util.RsaUtils;
@@ -88,6 +86,8 @@ public class InnerController extends BaseController {
     IRtkDeviceService rtkDeviceService;
     @Autowired
     IRtkUseLogService rtkUseLogService;
+    @Autowired
+    IRtkUpdateLogService rtkUpdateLogService;
 
     /**
      * 相机开启rtk获取账号
@@ -143,6 +143,14 @@ public class InnerController extends BaseController {
      */
     @GetMapping("/infoByTk/{rtkSnCode}")
     public synchronized ResultData infoByTk(@PathVariable String rtkSnCode){
+        JSONObject jsonObject = checkRtkSign();
+        if(jsonObject == null){
+            throw new BusinessException(ResultCode.RTK_TOKEN_ERROR);
+        }
+        String string = jsonObject.getString("rtkSnCode");
+        if(!string.equals(rtkSnCode)){
+            throw new BusinessException(ResultCode.RTK_TOKEN_ERROR);
+        }
         if(StringUtils.isBlank(rtkSnCode)){
             throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
         }
@@ -157,10 +165,20 @@ public class InnerController extends BaseController {
 
     @PostMapping("/updateRtkInfo")
     public ResultData updateRtkInfo(@RequestBody RtkInfo param){
-
         if(StringUtils.isNotBlank(param.getRtkSnCode())){
             throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
         }
+
+        JSONObject jsonObject = checkRtkSign();
+        if(jsonObject == null){
+            throw new BusinessException(ResultCode.RTK_TOKEN_ERROR);
+        }
+        String string = jsonObject.getString("rtkSnCode");
+        if(!string.equals(param.getRtkSnCode())){
+            throw new BusinessException(ResultCode.RTK_TOKEN_ERROR);
+        }
+        String account = jsonObject.getString("account");
+
         RtkDevice rtkDevice = rtkDeviceService.getByRtkSnCode(param.getRtkSnCode());
         if(rtkDevice == null){
             throw new BusinessException(ResultCode.RTK_SN_CODE_NOT_EXIT);
@@ -168,6 +186,7 @@ public class InnerController extends BaseController {
         if(rtkDevice.getAccountType() == 0){    //账号池
             throw new BusinessException(ResultCode.RTK_UPDATE_ERROR);
         }
+
         LambdaUpdateWrapper<RtkDevice> wrapper = new LambdaUpdateWrapper<>();
         wrapper.eq(RtkDevice::getId,rtkDevice.getId());
         wrapper.set(RtkDevice::getUserName,param.getUserName());
@@ -178,6 +197,12 @@ public class InnerController extends BaseController {
         wrapper.set(RtkDevice::getFailureTime,null);
         rtkDeviceService.update(wrapper);
 
+        RtkUpdateLog rtkUpdateLog = new RtkUpdateLog();
+        rtkUpdateLog.setRtkSnCode(param.getRtkSnCode());
+        rtkUpdateLog.setFdAccount(account);
+        rtkUpdateLog.setOldJsonData(JSONObject.toJSONString(rtkDevice));
+        rtkUpdateLog.setNewJsonData(JSONObject.toJSONString(rtkDeviceService.getById(rtkDevice.getId())));
+        rtkUpdateLogService.save(rtkUpdateLog);
         return ResultData.ok();
     }
 }

+ 18 - 0
src/main/java/com/fdkankan/manage/mapper/IRtkUpdateLogMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.manage.mapper;
+
+import com.fdkankan.manage.entity.RtkUpdateLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2025-02-08
+ */
+@Mapper
+public interface IRtkUpdateLogMapper extends BaseMapper<RtkUpdateLog> {
+
+}

+ 16 - 0
src/main/java/com/fdkankan/manage/service/IRtkUpdateLogService.java

@@ -0,0 +1,16 @@
+package com.fdkankan.manage.service;
+
+import com.fdkankan.manage.entity.RtkUpdateLog;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2025-02-08
+ */
+public interface IRtkUpdateLogService extends IService<RtkUpdateLog> {
+
+}

+ 20 - 0
src/main/java/com/fdkankan/manage/service/impl/RtkUpdateLogServiceImpl.java

@@ -0,0 +1,20 @@
+package com.fdkankan.manage.service.impl;
+
+import com.fdkankan.manage.entity.RtkUpdateLog;
+import com.fdkankan.manage.mapper.IRtkUpdateLogMapper;
+import com.fdkankan.manage.service.IRtkUpdateLogService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2025-02-08
+ */
+@Service
+public class RtkUpdateLogServiceImpl extends ServiceImpl<IRtkUpdateLogMapper, RtkUpdateLog> implements IRtkUpdateLogService {
+
+}

+ 2 - 2
src/main/java/com/fdkankan/manage/util/RsaUtils.java

@@ -32,8 +32,8 @@ public class RsaUtils {
 	public static void main(String[] args) {
 		RsaUtils rsa = new RsaUtils();
 		KeyPairInfo keyPair = getKeyPair();
-		//String publicKey = keyPair.getPublicKey();
-		//String privateKey = keyPair.getPrivateKey();
+		String publicKey = keyPair.getPublicKey();
+		String privateKey = keyPair.getPrivateKey();
 		System.out.println("公钥:"+publicKey);
 		System.out.println("私钥:"+privateKey);
 

File diff suppressed because it is too large
+ 7 - 0
src/main/java/com/fdkankan/manage/util/RtkUtils.java


+ 5 - 0
src/main/resources/mapper/manage/RtkUpdateLogMapper.xml

@@ -0,0 +1,5 @@
+<?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.fdkankan.manage.mapper.IRtkUpdateLogMapper">
+
+</mapper>