Browse Source

Merge branch 'tk-kz'

# Conflicts:
#	src/main/java/com/fdkankan/ucenter/controller/inner/InnerController.java
#	src/main/java/com/fdkankan/ucenter/service/IInnerService.java
#	src/main/java/com/fdkankan/ucenter/service/impl/InnerServiceImpl.java
lyhzzz 10 months ago
parent
commit
c5bdd5d925

+ 22 - 0
src/main/java/com/fdkankan/ucenter/controller/inner/InnerController.java

@@ -6,7 +6,12 @@ import com.fdkankan.common.util.SecurityUtil;
 import com.fdkankan.ucenter.annotation.CheckInnerApiPermit;
 import com.fdkankan.ucenter.common.BaseController;
 import com.fdkankan.ucenter.common.Result;
+import com.fdkankan.ucenter.common.ResultData;
+import com.fdkankan.ucenter.constant.LoginConstant;
+import com.fdkankan.ucenter.entity.User;
 import com.fdkankan.ucenter.service.IInnerService;
+import com.fdkankan.ucenter.service.IUserService;
+import com.fdkankan.ucenter.service.impl.LoginService;
 import com.fdkankan.ucenter.vo.request.CameraDetailParam;
 import com.fdkankan.ucenter.vo.request.CameraParam;
 import com.fdkankan.ucenter.vo.request.SceneParam;
@@ -35,6 +40,10 @@ public class InnerController extends BaseController {
 
     @Autowired
     private IInnerService innerService;
+    @Autowired
+    IUserService userService;
+    @Autowired
+    LoginService loginService;
 
     /**
      * 根据场景码获取token
@@ -108,6 +117,19 @@ public class InnerController extends BaseController {
         return Result.success(innerService.getCameraDetail(snCode));
     }
 
+    @GetMapping("/getTokenByUserName/{userName}")
+    public Result getTokenByUserName(@PathVariable String userName){
+        Boolean flag = innerService.checkSign(getSign());
+        if(!flag){
+            throw new BusinessException(-1,"签名失败");
+        }
+        User user = userService.getByUserName(userName);
+        if(user == null){
+            throw new BusinessException(LoginConstant.FAILURE_CODE_3015, LoginConstant.FAILURE_MSG_3015);
+        }
+        return Result.success(loginService.login(user));
+    }
+
     @PostMapping(value = "/getSceneBySnCode")
     public Result getSceneSnCode( @RequestBody SceneParam param) {
         if(StringUtils.isBlank(param.getSnCode())){

+ 2 - 0
src/main/java/com/fdkankan/ucenter/service/IInnerService.java

@@ -29,4 +29,6 @@ public interface IInnerService {
     Object getCameraDetail(String snCode);
 
     Object getSceneBySnCode(SceneParam param);
+
+    Boolean checkSign(String sign);
 }

+ 51 - 0
src/main/java/com/fdkankan/ucenter/service/impl/InnerServiceImpl.java

@@ -1,11 +1,18 @@
 package com.fdkankan.ucenter.service.impl;
 
+import cn.hutool.core.util.HexUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.crypto.SecureUtil;
+import cn.hutool.crypto.SmUtil;
+import cn.hutool.crypto.asymmetric.KeyType;
+import cn.hutool.crypto.asymmetric.SM2;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.fdkankan.common.constant.ErrorCode;
 import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.util.JwtUtil;
+import com.fdkankan.common.util.SecurityUtil;
 import com.fdkankan.fyun.face.FYunFileServiceInterface;
 import com.fdkankan.redis.constant.RedisKey;
 import com.fdkankan.redis.util.RedisUtil;
@@ -17,9 +24,11 @@ import com.fdkankan.ucenter.entity.*;
 import com.fdkankan.ucenter.service.*;
 import com.fdkankan.ucenter.vo.RelicsSceneInitQueueDTO;
 import com.fdkankan.ucenter.vo.request.SceneParam;
+import com.fdkankan.ucenter.util.RsaUtils;
 import com.fdkankan.ucenter.vo.response.LaserSceneInfoVo;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -27,6 +36,9 @@ import java.io.File;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
+import java.security.KeyPair;
+import java.security.PrivateKey;
+import java.util.Date;
 import java.util.Objects;
 import java.util.stream.Collectors;
 
@@ -223,6 +235,45 @@ public class InnerServiceImpl implements IInnerService {
     }
 
     @Override
+    public Boolean checkSign(String sign) {
+        try {
+            if(StringUtils.isBlank(sign)){
+                return false;
+            }
+            String deTxt = RsaUtils.decipher(sign, RsaUtils.privateKey);
+            if(StringUtils.isBlank(deTxt)){
+                return false;
+            }
+            JSONObject jsonObject = JSONObject.parseObject(deTxt);
+            String appId = jsonObject.getString("appId");
+            Long timestamp = jsonObject.getLong("timestamp");
+            if(StringUtils.isBlank(appId) || timestamp == null){
+                return false;
+            }
+            if(!appId.equals("ucenter")){
+                return false;
+            }
+            Long time = new Date().getTime();
+            if(time -timestamp >1000 * 30){
+                return false;
+            }
+            return true;
+        }catch (Exception e){
+            log.info("checkSign-error:{}",sign,e);
+            return false;
+        }
+
+    }
+
+    public static void main(String[] args) {
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("appId","ucenter");
+        jsonObject.put("timestamp",new Date().getTime());
+        System.out.println(jsonObject);
+    }
+
+
+    @Override
     public Object getSceneBySnCode(SceneParam param) {
         Camera camera = cameraService.getBySnCode(param.getSnCode());
         if(camera == null ){

File diff suppressed because it is too large
+ 314 - 0
src/main/java/com/fdkankan/ucenter/util/RsaUtils.java