Jelajahi Sumber

Merge remote-tracking branch 'origin/master'

by su 3 tahun lalu
induk
melakukan
4c561824ed
50 mengubah file dengan 1134 tambahan dan 278 penghapusan
  1. 0 43
      4dkankan-center-api/pom.xml
  2. 5 5
      4dkankan-center-modeling/pom.xml
  3. 7 9
      4dkankan-center-modeling/src/main/java/com/fdkankan/modeling/receiver/BuildSceneReceiver.java
  4. 1 0
      4dkankan-center-modeling/src/main/java/com/fdkankan/modeling/service/impl/SceneProServiceImpl.java
  5. 20 13
      4dkankan-center-modeling/src/main/resources/bootstrap.yml
  6. 0 18
      4dkankan-center-platform/src/main/java/com/fdkankan/TestController.java
  7. 4 3
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/agent/service/impl/AgentServiceImpl.java
  8. 41 10
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/agent/service/impl/VaildCamerasServiceImpl.java
  9. 0 110
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/aop/FeignAopInterceptor.java
  10. 10 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/common/DefaultConfig.java
  11. 13 2
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/feign/ModelingFeign.java
  12. 29 6
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/feign/SceneFeign.java
  13. 2 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/entity/CameraDetail.java
  14. 2 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/entity/Company.java
  15. 3 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/mapper/ICameraDetailMapper.java
  16. 2 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/ICameraDetailService.java
  17. 2 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/ICameraService.java
  18. 5 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/impl/CameraDetailServiceImpl.java
  19. 18 10
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/impl/CameraServiceImpl.java
  20. 3 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/ISpaceSdkService.java
  21. 22 1
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/impl/SpaceSdkServiceImpl.java
  22. 65 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/controller/api/UserAppController.java
  23. 2 2
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/agent/controller/api/AgentLoginController.java
  24. 115 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/controller/sso/SsoAppController.java
  25. 59 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/controller/sso/SsoManagerController.java
  26. 3 3
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/controller/api/SsoUserController.java
  27. 2 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/entity/User.java
  28. 2 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/entity/UserIncrement.java
  29. 29 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/request/RequestManager.java
  30. 51 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/request/RequestSdkVersion.java
  31. 2 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/IManagerService.java
  32. 3 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/IUserService.java
  33. 19 1
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/impl/ManagerServiceImpl.java
  34. 22 1
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/impl/UserServiceImpl.java
  35. 249 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/sso/AppService.java
  36. 10 21
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/LoginService.java
  37. 18 1
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/MsgService.java
  38. 4 3
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/RegisterService.java
  39. 97 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/sso/SsoManagerService.java
  40. 18 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/vo/SSOManagerVo.java
  41. 4 4
      4dkankan-center-platform/src/main/resources/bootstrap.yml
  42. 1 1
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneFileBuildServiceImpl.java
  43. 6 6
      4dkankan-center-scene/src/main/resources/logback-spring.xml
  44. 1 0
      4dkankan-common/src/main/java/com/fdkankan/common/constant/ErrorCode.java
  45. 111 0
      4dkankan-common/src/main/java/com/fdkankan/common/constant/SceneConstant.java
  46. 2 0
      4dkankan-common/src/main/java/com/fdkankan/common/user/SSOUser.java
  47. 49 0
      4dkankan-common/src/main/java/com/fdkankan/common/util/RandomUtil.java
  48. 1 1
      4dkankan-sdk-oss/src/main/java/com/fdkankan/oss/UploadUtils.java
  49. 0 2
      4dkankan-sdk-oss/src/main/resources/bootstrap.yml
  50. 0 2
      4dkankan-sdk-oss/target/classes/bootstrap.yml

+ 0 - 43
4dkankan-center-api/pom.xml

@@ -15,47 +15,4 @@
         <module>4dkankan-center-scene-api</module>
         <module>4dkankan-center-platform-api</module>
     </modules>
-
-    <properties>
-<!--        <java.version>1.8</java.version>-->
-<!--        <spring-cloud.version>2020.0.2</spring-cloud.version>-->
-<!--        <spring-cloud-alibaba.version>2020.0.RC1</spring-cloud-alibaba.version>-->
-<!--        <spring-boot.version>2.4.5</spring-boot.version>-->
-    </properties>
-
-    <dependencyManagement>
-<!--        <dependencies>-->
-<!--            <dependency>-->
-<!--                <groupId>com.fdkankan</groupId>-->
-<!--                <artifactId>4dkankan-common</artifactId>-->
-<!--                <version>2.0.0</version>-->
-<!--            </dependency>-->
-<!--            &lt;!&ndash; spring boot 依赖 &ndash;&gt;-->
-<!--            <dependency>-->
-<!--                <groupId>org.springframework.boot</groupId>-->
-<!--                <artifactId>spring-boot-dependencies</artifactId>-->
-<!--                <version>${spring-boot.version}</version>-->
-<!--                <type>pom</type>-->
-<!--                <scope>import</scope>-->
-<!--            </dependency>-->
-
-<!--            &lt;!&ndash; spring cloud 依赖 &ndash;&gt;-->
-<!--            <dependency>-->
-<!--                <groupId>org.springframework.cloud</groupId>-->
-<!--                <artifactId>spring-cloud-dependencies</artifactId>-->
-<!--                <version>${spring-cloud.version}</version>-->
-<!--                <type>pom</type>-->
-<!--                <scope>import</scope>-->
-<!--            </dependency>-->
-<!--            &lt;!&ndash; spring cloud alibaba 依赖 &ndash;&gt;-->
-<!--            <dependency>-->
-<!--                <groupId>com.alibaba.cloud</groupId>-->
-<!--                <artifactId>spring-cloud-alibaba-dependencies</artifactId>-->
-<!--                <version>${spring-cloud-alibaba.version}</version>-->
-<!--                <type>pom</type>-->
-<!--                <scope>import</scope>-->
-<!--            </dependency>-->
-<!--        </dependencies>-->
-    </dependencyManagement>
-
 </project>

+ 5 - 5
4dkankan-center-modeling/pom.xml

@@ -71,11 +71,11 @@
 			<artifactId>firebase-admin</artifactId>
 			<version>6.8.1</version>
 		</dependency>
-<!--		<dependency>-->
-<!--			<groupId>com.fdkankan</groupId>-->
-<!--			<artifactId>4dkankan-sdk-oss</artifactId>-->
-<!--			<version>1.0.0</version>-->
-<!--		</dependency>-->
+		<dependency>
+			<groupId>com.fdkankan</groupId>
+			<artifactId>4dkankan-sdk-oss</artifactId>
+			<version>1.0.0</version>
+		</dependency>
 		<dependency>
 			<groupId>com.alibaba.cloud</groupId>
 			<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>

+ 7 - 9
4dkankan-center-modeling/src/main/java/com/fdkankan/modeling/receiver/BuildSceneReceiver.java

@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.fdkankan.common.util.ComputerUtil;
+import com.fdkankan.common.util.UploadToOssUtil;
 import com.fdkankan.modeling.constants.RedisKey;
 import com.fdkankan.modeling.constants.SysConstants;
 import com.fdkankan.modeling.entity.SceneFileBuild;
@@ -18,7 +19,6 @@ import com.fdkankan.modeling.service.ISceneService;
 import com.fdkankan.modeling.utils.DingDingUtils;
 import com.fdkankan.modeling.utils.PushMsgUtil;
 import com.fdkankan.mq.message.BuildSceneMqMessage;
-import com.fdkankan.common.util.UploadToOssUtil;
 import com.fdkankan.platform.api.vo.User;
 import com.fdkankan.redis.util.RedisUtil;
 import com.fdkankan.utils.constant.ConstantFilePath;
@@ -35,7 +35,6 @@ import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;
 import org.apache.rocketmq.common.message.MessageExt;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Component;
 import org.springframework.util.CollectionUtils;
@@ -59,7 +58,6 @@ import static com.fdkankan.modeling.push.PushMessageConfig.*;
 
 @Log4j2
 @Component
-@ConditionalOnProperty(name = "rabbitmq.queue.enable",havingValue = "true")
 public class BuildSceneReceiver implements MessageListenerConcurrently {
 
     @Autowired
@@ -87,12 +85,12 @@ public class BuildSceneReceiver implements MessageListenerConcurrently {
     @Value("${oss.type}")
     private String ossType;
 
-    @Value("${oss.url.prefix}")
+    @Value("${prefix.ali}")
     private String prefixAli;
 
 
     @Resource
-    private UploadToOssUtil uploadUtils;
+    private UploadToOssUtil uploadToOssUtil;
 
     @Override
     public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgExt,
@@ -269,7 +267,7 @@ public class BuildSceneReceiver implements MessageListenerConcurrently {
                 //计算模型并返回需要上传oss的文件集合
                 map = ComputerUtil.computer(projectNum, path, buildType);
 
-                uploadUtils.uploadMulFiles(map);
+                uploadToOssUtil.uploadMulFiles(map);
                 log.info("双目上完oss结束修改数据:"+projectNum);
                 sceneService.updateTime(projectNum, space, payStatus);
             } else {
@@ -366,7 +364,7 @@ public class BuildSceneReceiver implements MessageListenerConcurrently {
                     map.put(path + File.separator + "capture/Up2.txt", "data/data" + projectNum + "/Up2.txt");
                 }
 
-                uploadUtils.uploadMulFiles(map);
+                uploadToOssUtil.uploadMulFiles(map);
                 payStatus = 1;
 
                 File spaceFile = null;
@@ -645,11 +643,11 @@ public class BuildSceneReceiver implements MessageListenerConcurrently {
                     statusJson.put("thumb", scene.getThumb());
                     statusJson.put("payStatus", sceneProExt.getPayStatus());
                     FileUtils.writeFile(ConstantFilePath.SCENE_PATH+"data/data"+projectNum+File.separator+"status.json", statusJson.toString());
-                    uploadUtils.upload(ConstantFilePath.SCENE_PATH+"data/data"+projectNum+File.separator+"status.json",
+                    uploadToOssUtil.upload(ConstantFilePath.SCENE_PATH+"data/data"+projectNum+File.separator+"status.json",
                             "data/data"+projectNum+File.separator+"status.json");
 
                     //上送日志
-                    uploadUtils.upload(sceneProExt.getDataSource()+File.separator+"console.log",
+                    uploadToOssUtil.upload(sceneProExt.getDataSource()+File.separator+"console.log",
                             "build_log/"+scene.getSceneCode()+File.separator+"console.log");
 
 

+ 1 - 0
4dkankan-center-modeling/src/main/java/com/fdkankan/modeling/service/impl/SceneProServiceImpl.java

@@ -59,6 +59,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         this.updateById(scenePro);
 
         sceneProExt.setSceneStatus(-2);
+        sceneProExt.setPayStatus(payStatus);
         sceneProExt.setSpace(space);
         sceneProExt.setComputeTime(computeTime);
         sceneProExtService.updateById(sceneProExt);

+ 20 - 13
4dkankan-center-modeling/src/main/resources/bootstrap.yml

@@ -7,19 +7,26 @@ spring:
         server-addr: 192.168.0.47:8848
         file-extension: yaml
         namespace: 4dkankan-dev
-        extension-configs[0]:
-          data-id: common-redis-config.yaml
-          group: DEFAULT_GROUP
-          refresh: true
-        extension-configs[1]:
-          data-id: common-mq-config.yaml
-          group: DEFAULT_GROUP
-          refresh: true
-        extension-configs[2]:
-          data-id: oss-modeling-config.yaml
-          group: DEFAULT_GROUP
-          refresh: true
+        extension-configs:
+          - data-id: 4dkankan-center-modeling.yaml
+            group: DEFAULT_GROUP
+            refresh: true
+        shared-configs:
+          - data-id: redis-config.yaml
+            group: DEFAULT_GROUP
+            refresh: true
+
+          - data-id: common-mq-config.yaml
+            group: DEFAULT_GROUP
+            refresh: true
+
+          - data-id: oss-config.yaml
+            group: DEFAULT_GROUP
+            refresh: true
+
+          - data-id: other-config.yaml
+            group: DEFAULT_GROUP
+            refresh: true
       discovery:
         server-addr: 192.168.0.47:8848
         namespace: 4dkankan-dev
-

+ 0 - 18
4dkankan-center-platform/src/main/java/com/fdkankan/TestController.java

@@ -1,18 +0,0 @@
-package com.fdkankan;
-
-//import com.fdkankan.common.rocketmq.producer.MqSendMessage;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.annotation.Resource;
-
-@RestController
-public class TestController {
-//    @Resource
-//    MqSendMessage mqSendMessage;
-//    @GetMapping("/send")
-//    private String sendTest(){
-//        mqSendMessage.sendMessage("hello");
-//        return "success";
-//    }
-}

+ 4 - 3
4dkankan-center-platform/src/main/java/com/fdkankan/platform/agent/service/impl/AgentServiceImpl.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.common.constant.LoginType;
 import com.fdkankan.platform.agent.entity.Agent;
 import com.fdkankan.platform.agent.mapper.IAgentMapper;
 import com.fdkankan.platform.agent.request.RequestAgent;
@@ -20,6 +21,7 @@ import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.util.JwtUtil;
 import com.fdkankan.common.util.PasswordUtils;
 import com.fdkankan.common.util.SsoUtil;
+import com.fdkankan.platform.common.DefaultConfig;
 import com.fdkankan.platform.goods.entity.Camera;
 import com.fdkankan.platform.goods.entity.CameraDetail;
 import com.fdkankan.platform.goods.service.ICameraDetailService;
@@ -82,9 +84,8 @@ public class AgentServiceImpl extends ServiceImpl<IAgentMapper, Agent> implement
             throw new BusinessException(ErrorCode.PASSWORD_ERROR);
         }
         String key = SsoUtil.PREFIX_CACHE_AGENT + agent.getAgentId();
-        redisTemplate.delete(key);
-        String token = JwtUtil.createJWT(-1, key,"agent");
-        redisTemplate.opsForValue().set(key,token,21600, TimeUnit.SECONDS);
+        String token = JwtUtil.createJWT(-1, key, LoginType.AGENT.name());
+        redisTemplate.opsForValue().set(key,token, DefaultConfig.USER_EXPIRE_TIME, DefaultConfig.DEFAULT_TIME_UNIT);
         JSONObject obj = new JSONObject();
         obj.put("token", token);
         return obj;

+ 41 - 10
4dkankan-center-platform/src/main/java/com/fdkankan/platform/agent/service/impl/VaildCamerasServiceImpl.java

@@ -4,17 +4,15 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.fdkankan.platform.agent.entity.VaildCameras;
-import com.fdkankan.platform.agent.mapper.IVaildCamerasMapper;
-import com.fdkankan.platform.agent.service.IVaildCamerasService;
-import com.fdkankan.common.constant.CameraConstant;
-import com.fdkankan.common.constant.ConstantFilePath;
-import com.fdkankan.common.constant.ErrorCode;
+import com.fdkankan.common.constant.*;
 import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.util.AesUtil;
 import com.fdkankan.common.util.FileUtil;
 import com.fdkankan.common.util.FileUtils;
 import com.fdkankan.common.util.RSAEncrypt;
+import com.fdkankan.platform.agent.entity.VaildCameras;
+import com.fdkankan.platform.agent.mapper.IVaildCamerasMapper;
+import com.fdkankan.platform.agent.service.IVaildCamerasService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Value;
@@ -45,8 +43,6 @@ public class VaildCamerasServiceImpl extends ServiceImpl<IVaildCamerasMapper, Va
     @Override
     public HashMap<String,Object> getVaildCameras(String file, String companyName) throws Exception{
         if(StringUtils.isEmpty(file) || StringUtils.isEmpty(companyName)){
-            log.info("file:" + file);
-            log.info("companyName:" + companyName);
             throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
         }
         List<VaildCameras> vaildCamerasEntityList = getListByCompanyName(companyName);
@@ -94,17 +90,52 @@ public class VaildCamerasServiceImpl extends ServiceImpl<IVaildCamerasMapper, Va
 
     @Override
     public String addVaildCameras(String macId, String wifiName, String companyName) {
-        return null;
+        if(StringUtils.isEmpty(macId) || StringUtils.isEmpty(companyName)){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        String regex = "^[a-z0-9A-Z#]+$";
+        if(!macId.matches(regex) || macId.length() != 25 || macId.indexOf("#") != 12){
+            throw new BusinessException(SceneConstant.FAILURE_CODE_5012, SceneConstant.FAILURE_MSG_5012);
+        }
+        VaildCameras vaildCamerasEntity = this.getByCompanyNameAndDevicemac(companyName, macId);
+        if(vaildCamerasEntity != null){
+            throw new BusinessException(CameraConstant.FAILURE_6001);
+        }
+        vaildCamerasEntity = new VaildCameras();
+        vaildCamerasEntity.setDevicemac(macId);
+        vaildCamerasEntity.setWifiName(wifiName);
+        vaildCamerasEntity.setCompanyName(companyName);
+        this.save(vaildCamerasEntity);
+        return ServerCode.SUCCESS.message();
     }
 
     @Override
     public String deleteVaildCameras(String macId, String companyName) {
-        return null;
+        if(StringUtils.isEmpty(macId) || StringUtils.isEmpty(companyName)){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        VaildCameras vaildCamerasEntity = this.getByCompanyNameAndDevicemac(companyName, macId);
+        if(vaildCamerasEntity != null){
+            this.removeById(vaildCamerasEntity);
+        }
+        return ServerCode.SUCCESS.message();
     }
 
+
+
     public List<VaildCameras> getListByCompanyName(String companyName){
         QueryWrapper<VaildCameras> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().eq(VaildCameras::getCompanyName,companyName);
         return this.list(queryWrapper);
     }
+    public VaildCameras getByCompanyNameAndDevicemac(String companyName,String devicemac){
+        QueryWrapper<VaildCameras> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(VaildCameras::getCompanyName,companyName);
+        queryWrapper.lambda().eq(VaildCameras::getDevicemac,devicemac);
+        List<VaildCameras> list = this.list(queryWrapper);
+        if(list == null || list.size() <= 0){
+            return null;
+        }
+        return list.get(0);
+    }
 }

+ 0 - 110
4dkankan-center-platform/src/main/java/com/fdkankan/platform/aop/FeignAopInterceptor.java

@@ -1,110 +0,0 @@
-package com.fdkankan.platform.aop;
-
-import org.aspectj.lang.ProceedingJoinPoint;
-import org.aspectj.lang.annotation.Around;
-import org.aspectj.lang.annotation.Aspect;
-import org.aspectj.lang.annotation.Pointcut;
-import org.aspectj.lang.reflect.MethodSignature;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Component;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
-
-import javax.servlet.http.HttpServletRequest;
-import java.util.Enumeration;
-
-@Component // 将对象交由spring进行管理
-@Aspect // 代表此类为一个切面类
-public class FeignAopInterceptor {
-	/** 初始化日志打印 */
-	public static final Logger log = LoggerFactory.getLogger("feignVisitLog");
-
-	// 切入点表达式
-	@Pointcut("execution(public * com.fdkankan.platform.feign.*.*.*(..))")
-	public void privilege() {
-	}
-
-	@Around("privilege()")
-	public Object around(ProceedingJoinPoint pjp) throws Throwable {
-
-		// 获取类名
-		String className = pjp.getTarget().getClass().getName();// pjp.getTarget().getClass().getSimpleName();
-		// 获取执行的方法名称
-		String methodName = pjp.getSignature().getName();
-		// 获取参数名称
-		String[] parameterNamesArgs = ((MethodSignature) pjp.getSignature()).getParameterNames();
-		// 定义返回参数
-		Object result = null;
-		// 获取方法参数
-		Object[] args = pjp.getArgs();
-		HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
-		// 请求的URL
-		String requestURL = request.getRequestURL().toString();
-		String ip = getIpAddr(request);
-
-		StringBuffer paramsBuf = new StringBuffer();
-		// 获取请求参数集合并进行遍历拼接
-		for (int i = 0; i < args.length; i++) {
-			if (paramsBuf.length() > 0) {
-				paramsBuf.append("|");
-			}
-			paramsBuf.append(parameterNamesArgs[i]).append(" = ").append(args[i]);
-		}
-		StringBuffer headerBuf = new StringBuffer();
-		Enumeration<String> headerNames = request.getHeaderNames();
-		while (headerNames.hasMoreElements()) {
-			String key = (String) headerNames.nextElement();
-			String value = request.getHeader(key);
-			if (headerBuf.length() > 0) {
-				headerBuf.append("|");
-			}
-			headerBuf.append(key).append("=").append(value);
-		}
-
-		// 打印请求参数参数
-		// 记录开始时间
-		long start = System.currentTimeMillis();
-
-		log.info("请求| ip:{} | 请求接口:{} | 请求类:{} | 方法 :{} | 参数:{} | 请求header:{}|请求时间 :{}", ip, requestURL, className, methodName, paramsBuf.toString(),
-				headerBuf.toString(), start);
-		// 执行目标方法
-		result = pjp.proceed();
-		// 获取执行完的时间 打印返回报文
-		log.info("返回| 请求接口:{}| 方法 :{} | 请求时间:{} | 处理时间:{} 毫秒 | 返回结果 :{}", requestURL, methodName, start, (System.currentTimeMillis() - start), result);
-		return result;
-	}
-
-	/**
-	 * @Title: getIpAddr
-	 * @Description: 获取ip
-	 * @param request
-	 * @return
-	 * @return String 返回类型
-	 */
-	public String getIpAddr(HttpServletRequest request) {
-		String ipAddress = null;
-		ipAddress = request.getHeader("x-forwarded-for");
-		if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
-			ipAddress = request.getHeader("Proxy-Client-IP");
-		}
-		if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
-			ipAddress = request.getHeader("WL-Proxy-Client-IP");
-		}
-		if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
-			ipAddress = request.getRemoteAddr();
-		}
-
-// 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割
-		if (ipAddress != null && ipAddress.length() > 15) { // "***.***.***.***".length()
-			// = 15
-			if (ipAddress.indexOf(",") > 0) {
-				ipAddress = ipAddress.substring(0, ipAddress.indexOf(","));
-			}
-		}
-		// 或者这样也行,对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割
-//return ipAddress!=null&&!"".equals(ipAddress)?ipAddress.split(",")[0]:null;
-		return ipAddress;
-	}
-}
-

+ 10 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/common/DefaultConfig.java

@@ -0,0 +1,10 @@
+package com.fdkankan.platform.common;
+
+import java.util.concurrent.TimeUnit;
+
+public class DefaultConfig {
+    public static final int DEFAULT_EXPIRE_TIME = 7200;  // redis默认过期时间,单位/秒, 60*60*2=2H, 两小时
+    public static final TimeUnit DEFAULT_TIME_UNIT = TimeUnit.SECONDS; //redis默认过期时间单位
+    public static final int CAMERA_EXPIRE_TIME = 604800;  // 相机登陆7天有效期
+    public static final int USER_EXPIRE_TIME = 21600;  // agent用户有效期
+}

+ 13 - 2
4dkankan-center-platform/src/main/java/com/fdkankan/platform/feign/ModelingFeign.java

@@ -4,6 +4,8 @@ import com.fdkankan.platform.user.entity.User;
 import com.fdkankan.platform.user.entity.UserIncrement;
 import com.fdkankan.platform.user.service.IUserIncrementService;
 import com.fdkankan.platform.user.service.IUserService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -17,6 +19,8 @@ import org.springframework.web.bind.annotation.RestController;
 @RequestMapping("/feign")
 public class ModelingFeign {
 
+    private static Logger log = LoggerFactory.getLogger("feignVisitLog");
+
     @Autowired
     private IUserService userService;
     @Autowired
@@ -24,11 +28,18 @@ public class ModelingFeign {
 
     @PostMapping("/getUserByName")
     public User getUserByName(@RequestParam(value = "userName", required = false) String userName) {
-        return userService.getUserByUserName(userName);
+        log.info("modeling服务调用:getUserByName,参数:userName:{},",userName);
+        User entity = userService.getUserByUserName(userName);
+        log.info("modeling服务调用:getUserByName,返回:{}",entity);
+        return entity;
     }
     @PostMapping("/getUserIncrementByCameraId")
     public UserIncrement getUserIncrementByCameraId(@RequestParam(value = "cameraId", required = false) Long cameraId) {
-        return userIncrementService.getByCameraId(cameraId);
+        log.info("modeling服务调用:getUserIncrementByCameraId,参数:cameraId:{},",cameraId);
+        UserIncrement entity = userIncrementService.getByCameraId(cameraId);
+        log.info("modeling服务调用:getUserIncrementByCameraId,返回:{}",entity);
+        return entity;
     }
 
 }
+

+ 29 - 6
4dkankan-center-platform/src/main/java/com/fdkankan/platform/feign/SceneFeign.java

@@ -8,6 +8,8 @@ import com.fdkankan.platform.goods.service.ICameraDetailService;
 import com.fdkankan.platform.goods.service.ICameraService;
 import com.fdkankan.platform.goods.service.ICompanyService;
 import com.fdkankan.platform.user.service.IUserService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -21,6 +23,8 @@ import org.springframework.web.bind.annotation.RestController;
 @RequestMapping("/feign")
 public class SceneFeign {
 
+    private static Logger log = LoggerFactory.getLogger("feignVisitLog");
+
     @Autowired
     private ICameraService cameraService;
     @Autowired
@@ -32,31 +36,50 @@ public class SceneFeign {
 
     @PostMapping("/getCameraByChildName")
     public Camera getCameraByChildName(@RequestParam(value = "childName", required = false) String childName) {
-        return cameraService.getByChildName(childName);
+        log.info("scene服务调用:getCameraByChildName,参数:childName:{},",childName);
+        Camera camera = cameraService.getByChildName(childName);
+        log.info("scene服务调用:getCameraByChildName,返回:{}",camera);
+        return camera;
     }
 
     @PostMapping("/getCameraDetailByCameraId")
     public CameraDetail getCameraDetailByCameraId(@RequestParam(value = "cameraId", required = false) Long cameraId) {
-        return cameraDetailService.getByCameraId(cameraId);
+        log.info("scene服务调用:getCameraDetailByCameraId,参数:cameraId:{},",cameraId);
+        CameraDetail detail = cameraDetailService.getByCameraId(cameraId);
+        log.info("scene服务调用:getCameraDetailByCameraId,返回:{}",detail);
+        return detail;
     }
 
     @PostMapping("/updateCameraDetailByCameraIdAndSpace")
     public CameraDetail updateCameraDetailByCameraIdAndSpace(@RequestParam(value = "cameraId", required = false) Long cameraId,
                                                              @RequestParam(value = "space", required = false) Long space) {
-        return cameraDetailService.updateCameraDetailByCameraIdAndSpace(cameraId,space);
+        log.info("scene服务调用:updateCameraDetailByCameraIdAndSpace,参数:cameraId:{},space:{},",cameraId,space);
+        CameraDetail detail = cameraDetailService.updateCameraDetailByCameraIdAndSpace(cameraId,space);
+        log.info("scene服务调用:updateCameraDetailByCameraIdAndSpace,返回:{}",detail);
+        return detail;
     }
 
     @PostMapping("/getCameraBySnCode")
     public Camera getCameraBySnCode(@RequestParam(value = "snCode", required = false) String snCode) {
-        return cameraService.getBySnCode(snCode);
+        log.info("scene服务调用:getCameraBySnCode,参数:snCode:{},",snCode);
+        Camera detail = cameraService.getBySnCode(snCode);
+        log.info("scene服务调用:getCameraBySnCode,返回:{}",detail);
+        return detail;
     }
     @PostMapping("/getSSOUserByUserId")
     public SSOUser getSSOUserByUserId(@RequestParam(value = "userId", required = false) Long userId) {
-        return userService.getSSOUserByUserId(userId);
+        log.info("scene服务调用:getSSOUserByUserId,参数:userId:{},",userId);
+        SSOUser ssoUser =  userService.getSSOUserByUserId(userId);
+        log.info("scene服务调用:getSSOUserByUserId,返回:{}",ssoUser);
+        return ssoUser;
     }
     @PostMapping("/getCompanyById")
     public Company getCompanyById(@RequestParam(value = "companyId", required = false) Long companyId) {
-        return companyService.getById(companyId);
+        log.info("scene服务调用: getCompanyById,参数:companyId:{},",companyId);
+        Company entity = companyService.getById(companyId);
+        log.info("scene服务调用: getCompanyById,返回:{}",entity);
+        return entity;
     }
 
 }
+

+ 2 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/entity/CameraDetail.java

@@ -3,6 +3,7 @@ package com.fdkankan.platform.goods.entity;
 import com.baomidou.mybatisplus.annotation.*;
 import lombok.Getter;
 import lombok.Setter;
+import lombok.ToString;
 
 import java.io.Serializable;
 import java.util.Date;
@@ -17,6 +18,7 @@ import java.util.Date;
  */
 @Getter
 @Setter
+@ToString
 @TableName("t_camera_detail")
 public class CameraDetail implements Serializable {
 

+ 2 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/entity/Company.java

@@ -3,6 +3,7 @@ package com.fdkankan.platform.goods.entity;
 import com.baomidou.mybatisplus.annotation.*;
 import lombok.Getter;
 import lombok.Setter;
+import lombok.ToString;
 
 import java.io.Serializable;
 import java.util.Date;
@@ -17,6 +18,7 @@ import java.util.Date;
  */
 @Getter
 @Setter
+@ToString
 @TableName("t_company")
 public class Company implements Serializable {
 

+ 3 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/mapper/ICameraDetailMapper.java

@@ -28,4 +28,7 @@ public interface ICameraDetailMapper extends BaseMapper<CameraDetail> {
     @Select("SELECT type as cameraType,count(1) as cameraTypenum FROM t_camera_detail " +
             "WHERE user_id = #{userId}  GROUP BY type ")
     List<CameraDetailNumEntity> selectTypeNumAll(@Param("userId") Long userId);
+
+    @Select(" SELECT sum(balance) FROM t_camera_detail WHERE user_id = #{userId} AND REC_STATUS = 'A' ")
+    long getSumBalanceByUserId(@Param("userId") Long userId);
 }

+ 2 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/ICameraDetailService.java

@@ -48,4 +48,6 @@ public interface ICameraDetailService extends IService<CameraDetail> {
     void bind(Long userId, Long cameraId);
 
     CameraDetail updateCameraDetailByCameraIdAndSpace(Long cameraId, Long space);
+
+    Long getSumBalanceByUserId(Long userId);
 }

+ 2 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/ICameraService.java

@@ -40,4 +40,6 @@ public interface ICameraService extends IService<Camera> {
     List<Camera> findLikeChildName(String trim);
 
     Camera getBySnCode(String snCode);
+
+    Camera getByChildNameAndChildPassword(String appUserName, String appPassword);
 }

+ 5 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/impl/CameraDetailServiceImpl.java

@@ -391,4 +391,9 @@ public class CameraDetailServiceImpl extends ServiceImpl<ICameraDetailMapper, Ca
         }
         return cameraDetail;
     }
+
+    @Override
+    public Long getSumBalanceByUserId(Long userId) {
+        return cameraDetailMapper.getSumBalanceByUserId(userId);
+    }
 }

+ 18 - 10
4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/impl/CameraServiceImpl.java

@@ -98,11 +98,7 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
     public Camera getByChildName(String childName){
         QueryWrapper<Camera> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().eq(Camera::getChildName,childName);
-        List<Camera> list = this.list(queryWrapper);
-        if(list == null || list.size()<=0){
-            return null;
-        }
-        return list.get(0);
+        return this.getEntityByQuery(queryWrapper);
     }
 
     @Override
@@ -246,11 +242,7 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
     public Camera getBySnCode(String snCode) {
         QueryWrapper<Camera> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().eq(Camera::getSnCode,snCode);
-        List<Camera> list = this.list(queryWrapper);
-        if(list == null || list.size()<=0){
-            return null;
-        }
-        return list.get(0);
+        return this.getEntityByQuery(queryWrapper);
     }
 
     @Override
@@ -306,6 +298,22 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
     }
 
     @Override
+    public Camera getByChildNameAndChildPassword(String appUserName, String appPassword) {
+        QueryWrapper<Camera> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(Camera::getChildName,appUserName);
+        queryWrapper.lambda().eq(Camera::getChildPassword,appPassword);
+        return this.getEntityByQuery(queryWrapper);
+    }
+
+    private Camera getEntityByQuery(QueryWrapper<Camera> queryWrapper ){
+        List<Camera> list = this.list(queryWrapper);
+        if(list == null || list.size() <= 0){
+            return null;
+        }
+        return list.get(0);
+    }
+
+    @Override
     public HSSFWorkbook export(String token, HttpServletResponse response) throws Exception {
 
         String fileName = "我的相机";

+ 3 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/ISpaceSdkService.java

@@ -1,7 +1,9 @@
 package com.fdkankan.platform.order.service;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fdkankan.platform.order.entity.SpaceSdk;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.platform.user.request.RequestSdkVersion;
 
 /**
  * <p>
@@ -13,4 +15,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface ISpaceSdkService extends IService<SpaceSdk> {
 
+    Page<SpaceSdk> getPageByParam(RequestSdkVersion param);
 }

+ 22 - 1
4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/impl/SpaceSdkServiceImpl.java

@@ -1,9 +1,14 @@
 package com.fdkankan.platform.order.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fdkankan.platform.order.entity.SpaceSdk;
 import com.fdkankan.platform.order.mapper.ISpaceSdkMapper;
 import com.fdkankan.platform.order.service.ISpaceSdkService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.platform.user.request.RequestSdkVersion;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 
 /**
@@ -17,4 +22,20 @@ import org.springframework.stereotype.Service;
 @Service
 public class SpaceSdkServiceImpl extends ServiceImpl<ISpaceSdkMapper, SpaceSdk> implements ISpaceSdkService {
 
+    @Override
+    public Page<SpaceSdk> getPageByParam(RequestSdkVersion param) {
+        LambdaQueryWrapper<SpaceSdk> queryWrapper = Wrappers.lambdaQuery();
+        if(param.getStatus()!=null){
+            queryWrapper.eq(SpaceSdk::getStatus,param.getStatus());
+        }
+        if(StringUtils.isNotEmpty(param.getSearchKey()) && !param.getSearchKey().equals("%")){
+            queryWrapper.like(SpaceSdk::getVersion,param.getSearchKey());
+        }
+        if(StringUtils.isNotEmpty(param.getPlatformType())){
+            queryWrapper.like(SpaceSdk::getPlatformType,param.getPlatformType());
+        }
+        queryWrapper.orderByDesc(SpaceSdk::getIsTop,SpaceSdk::getPublishTime);
+        Page<SpaceSdk> page = new Page<>(param.getPageNum(),param.getPageSize());
+        return this.page(page, queryWrapper);
+    }
 }

+ 65 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/controller/api/UserAppController.java

@@ -0,0 +1,65 @@
+package com.fdkankan.platform.user.controller.api;
+
+import com.fdkankan.platform.user.request.RequestUser;
+import com.fdkankan.platform.user.service.sso.AppService;
+import com.fdkankan.platform.user.vo.ResponseUser;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 个人中心-app模块
+ */
+@RestController
+@RequestMapping("/api/app/user/")
+public class UserAppController {
+
+    @Autowired
+    private AppService appService;
+
+    /**
+     * app修改密码
+     */
+    @PostMapping(value = "/changePassword")
+    public String changePassword(@RequestBody RequestUser user) throws Exception {
+        return appService.resetPassword(user);
+    }
+
+    /**
+     * app上传头像
+     * head         用户头像
+     * phoneNum     用户名(手机号)
+     * @return
+     */
+    @PostMapping(value = "/uploadHead")
+    public String uploadHead(@RequestBody RequestUser user) throws Exception {
+        return appService.uploadHead(user);
+    }
+    /**
+     * 获取账号点数
+     * phoneNum     用户名(手机号)
+     * @return
+     */
+    @PostMapping(value = "/getSubPointsFromUserName")
+    public Long getSubPointsFromUserName(@RequestBody RequestUser user) throws Exception {
+        return appService.getSubPointsFromUserName(user);
+    }
+    /**
+     * 获取用户信息
+     * phoneNum     用户名(手机号)
+     * cameraType    相机类型,1双目,4八目  9:转台
+     * @return
+     */
+    @PostMapping(value = "/getUserInfo")
+    public ResponseUser getUserInfo(@RequestBody RequestUser user) throws Exception {
+        return appService.getUserInfo(user);
+    }
+    /**
+     * 更改昵称
+     * nickName     昵称
+     * phoneNum     用户名(手机号)
+     */
+    @PostMapping(value = "/updateNickName")
+    public String updateNickName(@RequestBody RequestUser user) throws Exception {
+        return appService.updateNickName(user);
+    }
+}

+ 2 - 2
4dkankan-center-platform/src/main/java/com/fdkankan/platform/agent/controller/api/AgentLoginController.java

@@ -1,4 +1,4 @@
-package com.fdkankan.platform.agent.controller.api;
+package com.fdkankan.platform.user.controller.sso;
 
 import com.alibaba.fastjson.JSONObject;
 import com.fdkankan.platform.agent.request.RequestAgent;
@@ -18,7 +18,7 @@ import javax.annotation.Resource;
  */
 @RestController
 @RequestMapping("/api/sso/agent")
-public class AgentLoginController  {
+public class SsoAgentController {
 
     @Autowired
     private IAgentService agentService;

+ 115 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/controller/sso/SsoAppController.java

@@ -0,0 +1,115 @@
+package com.fdkankan.platform.user.controller.sso;
+
+import com.fdkankan.platform.user.request.RequestUser;
+import com.fdkankan.platform.user.service.sso.AppService;
+import com.fdkankan.platform.user.vo.ResponseUser;
+import com.fdkankan.platform.user.vo.SSOUserVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.HashMap;
+
+/**
+ * 登陆管理-app登陆模块
+ */
+@RestController
+@RequestMapping("/api/sso/app")
+public class SsoAppController {
+
+    @Autowired
+    private AppService appService;
+
+    /**
+     * APP扫码登录
+     * appUserName      相机设备码
+     * appPassword      相机密码
+     * uuid  uuid
+     * @return
+     */
+    @PostMapping(value = "/login")
+    public String qrCodeLogin(@RequestBody RequestUser user) throws Exception {
+        return appService.qrCodeLogin(user);
+    }
+
+    /**
+     * App登录
+     * appUserName      相机设备码
+     * appPassword      相机密码
+     * @return
+     */
+    @PostMapping(value = "/login2")
+    public HashMap<String, String> passwordLogin(@RequestBody RequestUser user) throws Exception {
+        return appService.passwordLogin(user);
+    }
+    /**
+     * 用户名登录
+     * phoneNum      手机号
+     * cameraType    相机类型,1双目,4八目
+     * password      密码
+     * @return
+     */
+    @PostMapping(value = "/userLogin")
+    public SSOUserVo userNameLogin(@RequestBody RequestUser user) throws Exception {
+        return appService.userNameLogin(user);
+    }
+    /**
+     * 验证码登陆
+     * phoneNum      手机号
+     * cameraType    相机类型,1双目,4八目
+     * msgAuthCode   验证码
+     */
+    @PostMapping(value = "/quickLogin")
+    public SSOUserVo quickLogin(@RequestBody RequestUser user) throws Exception {
+        return appService.quickLogin(user);
+    }
+    /**
+     * 登出
+     */
+    @PostMapping(value = "/logout")
+    public String logout(@RequestHeader String token) throws Exception {
+        return appService.logout(token);
+    }
+    /**
+     * app注册
+     * phoneNum      用户名
+     * password      密码
+     * msgAuthCode   验证码
+     * nickName     昵称
+     * country      国家
+     * @return
+     */
+    @PostMapping(value = "/register")
+    public String register(@RequestBody RequestUser user) throws Exception {
+        return appService.register(user);
+    }
+    /**
+     * app获取随机昵称
+     * @return
+     */
+    @PostMapping(value = "/getNickName")
+    public ResponseUser getRandomNickName() throws Exception {
+        return appService.getRandomNickName();
+    }
+    /**
+     * app检验用户名
+     * appUserName      app用户昵称
+     * @return
+     */
+    @PostMapping(value = "/checkUserName")
+    public String checkUserName(@RequestBody RequestUser user) throws Exception {
+        return appService.checkUserName(user);
+    }
+    /**
+     * app修改密码
+     * password      用户密码
+     * phoneNum      用户名(手机号)
+     * msgAuthCode      手机验证码
+     * @return
+     */
+    @PostMapping(value = "/resetPassword")
+    public String resetPassword(@RequestBody RequestUser user) throws Exception {
+        return appService.resetPassword(user);
+    }
+
+
+}

+ 59 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/controller/sso/SsoManagerController.java

@@ -0,0 +1,59 @@
+package com.fdkankan.platform.user.controller.sso;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fdkankan.platform.order.entity.SpaceSdk;
+import com.fdkankan.platform.user.request.RequestManager;
+import com.fdkankan.platform.user.request.RequestSdkVersion;
+import com.fdkankan.platform.user.service.sso.SsoManagerService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 登陆管理-app登陆模块
+ */
+@RestController
+@RequestMapping("/api/sso/manager")
+public class SsoManagerController {
+
+    @Autowired
+    private SsoManagerService ssoManagerService;
+
+    /**
+     * 管理员登录
+     * userName      手机号
+     * password      密码
+     * @return
+     */
+    @PostMapping(value = "/login")
+    public JSONObject login(@RequestBody RequestManager param) throws Exception {
+        return ssoManagerService.login(param);
+    }
+    /**
+     * 追溯后台管理登陆
+     * userName      手机号
+     * password      密码
+     * @return
+     */
+    @PostMapping(value = "/companyLogin")
+    public JSONObject companyLogin(@RequestBody RequestManager param) throws Exception {
+        return ssoManagerService.companyLogin(param);
+    }
+    /**
+     * 登出
+     */
+    @PostMapping(value = "/logout")
+    public String logout(@RequestHeader String token) throws Exception {
+        return ssoManagerService.logout(token);
+    }
+    /**
+     * 获取sdk列表
+     * @return
+     */
+    @PostMapping(value = "/space/list")
+    public Page<SpaceSdk> spaceList(@RequestBody RequestSdkVersion param) throws Exception {
+        return ssoManagerService.spaceList(param);
+    }
+
+
+}

+ 3 - 3
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/controller/api/SsoUserController.java

@@ -1,4 +1,4 @@
-package com.fdkankan.platform.user.controller.api;
+package com.fdkankan.platform.user.controller.sso;
 
 import com.alibaba.fastjson.JSONObject;
 import com.fdkankan.common.constant.ErrorCode;
@@ -7,8 +7,8 @@ import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.platform.user.entity.User;
 import com.fdkankan.platform.user.request.RequestUser;
 import com.fdkankan.platform.user.service.IUserService;
-import com.fdkankan.platform.user.service.LoginService;
-import com.fdkankan.platform.user.service.MsgService;
+import com.fdkankan.platform.user.service.sso.LoginService;
+import com.fdkankan.platform.user.service.sso.MsgService;
 import com.fdkankan.platform.user.vo.SSOUserVo;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;

+ 2 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/entity/User.java

@@ -3,6 +3,7 @@ package com.fdkankan.platform.user.entity;
 import com.baomidou.mybatisplus.annotation.*;
 import lombok.Getter;
 import lombok.Setter;
+import lombok.ToString;
 
 import java.io.Serializable;
 import java.util.Date;
@@ -17,6 +18,7 @@ import java.util.Date;
  */
 @Getter
 @Setter
+@ToString
 @TableName("t_user")
 public class User implements Serializable {
 

+ 2 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/entity/UserIncrement.java

@@ -3,6 +3,7 @@ package com.fdkankan.platform.user.entity;
 import com.baomidou.mybatisplus.annotation.*;
 import lombok.Getter;
 import lombok.Setter;
+import lombok.ToString;
 
 import java.io.Serializable;
 import java.util.Date;
@@ -17,6 +18,7 @@ import java.util.Date;
  */
 @Getter
 @Setter
+@ToString
 @TableName("t_user_increment")
 public class UserIncrement implements Serializable {
 

+ 29 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/request/RequestManager.java

@@ -0,0 +1,29 @@
+package com.fdkankan.platform.user.request;
+
+import com.fdkankan.common.request.RequestBase;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class RequestManager extends RequestBase implements Serializable {
+
+    private static final long serialVersionUID = -5024048396577407229L;
+
+    private Long id;
+
+    private String userName;
+
+    private String password;
+
+    private String newPassword;
+
+    private String confirmPwd;
+
+    private String nickname;
+
+    private Long agentFrameworkId;
+
+    private Long managerRoleId;
+
+}

+ 51 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/request/RequestSdkVersion.java

@@ -0,0 +1,51 @@
+package com.fdkankan.platform.user.request;
+
+import com.fdkankan.common.request.RequestBase;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+public class RequestSdkVersion extends RequestBase implements Serializable {
+
+    private static final long serialVersionUID = 2345798398902100085L;
+
+    /**
+     * 版本
+     */
+    private String version;
+
+    /**
+     * 版本说明
+     */
+    private String imprint;
+
+
+    private Date publishTime;
+
+    /**
+     * 是否置顶 1 -置顶  0-不置顶
+     */
+
+    private Integer isTop;
+
+    /**
+     * 状态 0 - 未发布 1 -发布  2-下架
+     */
+
+    private Integer status;
+
+    /**
+     * 1 : Unity  2: UE4
+     */
+
+    private String platformType;
+
+    private Long id;
+
+    private String searchKey;
+
+
+
+}

+ 2 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/IManagerService.java

@@ -16,4 +16,6 @@ import java.util.List;
 public interface IManagerService extends IService<Manager> {
 
     List<Manager> getByFrameworkId(Long parentId);
+
+    Manager getByUserName(String userName);
 }

+ 3 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/IUserService.java

@@ -39,6 +39,7 @@ public interface IUserService extends IService<User> {
     SSOUserVo getUserInfoByUser(Integer cameraType, User dbUser, String token);
 
     ResponseUser getUserInfoByParam(RequestUser user, String token);
+    ResponseUser getUserInfoBySsoUserVo(SSOUserVo ssoUserVo) ;
 
     String uploadHead(RequestUser user,String token)throws Exception;
 
@@ -79,4 +80,6 @@ public interface IUserService extends IService<User> {
     String sceneResourceByCameraId(RequestCamera camera);
 
     SSOUser getSSOUserByUserId(Long userId);
+
+    SSOUser getByNickName(String nickName);
 }

+ 19 - 1
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/impl/ManagerServiceImpl.java

@@ -20,10 +20,28 @@ import java.util.List;
 @Service
 public class ManagerServiceImpl extends ServiceImpl<IManagerMapper, Manager> implements IManagerService {
 
+    QueryWrapper<Manager> queryWrapper;
+
     @Override
     public List<Manager> getByFrameworkId(Long parentId) {
-        QueryWrapper<Manager> queryWrapper = new QueryWrapper<>();
+        queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().eq(Manager::getAgentFrameworkId,parentId);
         return  this.list(queryWrapper);
     }
+
+    @Override
+    public Manager getByUserName(String userName) {
+        queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(Manager::getUsername,userName);
+        return getEntityByQuery(queryWrapper);
+    }
+
+
+    private Manager getEntityByQuery(QueryWrapper<Manager> queryWrapper){
+        List<Manager> list = this.list(queryWrapper);
+        if(list == null || list.size() <= 0 ){
+            return null;
+        }
+        return list.get(0);
+    }
 }

+ 22 - 1
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/impl/UserServiceImpl.java

@@ -23,7 +23,7 @@ import com.fdkankan.platform.user.request.RequestUser;
 import com.fdkankan.platform.user.service.IReceiverInfoService;
 import com.fdkankan.platform.user.service.IUserIncrementService;
 import com.fdkankan.platform.user.service.IUserService;
-import com.fdkankan.platform.user.service.RegisterService;
+import com.fdkankan.platform.user.service.sso.RegisterService;
 import com.fdkankan.platform.user.vo.ReceiverInfoVo;
 import com.fdkankan.platform.user.vo.ResponseCamera;
 import com.fdkankan.platform.user.vo.ResponseUser;
@@ -142,6 +142,15 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, User> implements I
         vo.setIncrementBindNum(incrementBindCount);
         return vo;
     }
+    @Override
+    public ResponseUser getUserInfoBySsoUserVo(SSOUserVo ssoUserVo) {
+        ResponseUser vo = ssoUserVo.getResponseUser();
+        Integer incrementCount = userIncrementService.getCountByUserId(vo.getId(),0);
+        Integer incrementBindCount = userIncrementService.getCountBindByUserId(vo.getId());
+        vo.setIncrementNum(incrementCount);
+        vo.setIncrementBindNum(incrementBindCount);
+        return vo;
+    }
 
     @Override
     public String uploadHead(RequestUser param,String token) throws Exception{
@@ -452,4 +461,16 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, User> implements I
         User user = this.getById(userId);
         return this.getSsoUserByUserName(user,user.getUserName());
     }
+
+    @Override
+    public SSOUser getByNickName(String nickName) {
+        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(User ::getNickName,nickName);
+        List<User> list = this.list(queryWrapper);
+        if(list == null || list.size()<=0){
+            return null;
+        }
+        User user = list.get(0);
+        return  this.getSsoUserByUserName(user,user.getUserName());
+    }
 }

+ 249 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/sso/AppService.java

@@ -0,0 +1,249 @@
+package com.fdkankan.platform.user.service.sso;
+
+import com.fdkankan.common.constant.*;
+import com.fdkankan.common.exception.BusinessException;
+import com.fdkankan.common.user.SSOUser;
+import com.fdkankan.common.util.JwtUtil;
+import com.fdkankan.common.util.RandomUtil;
+import com.fdkankan.common.util.SecurityUtil;
+import com.fdkankan.common.util.SsoUtil;
+import com.fdkankan.common.validation.Variable;
+import com.fdkankan.platform.common.DefaultConfig;
+import com.fdkankan.platform.goods.entity.Camera;
+import com.fdkankan.platform.goods.entity.CameraDetail;
+import com.fdkankan.platform.goods.service.ICameraDetailService;
+import com.fdkankan.platform.goods.service.ICameraService;
+import com.fdkankan.platform.user.entity.User;
+import com.fdkankan.platform.user.request.RequestUser;
+import com.fdkankan.platform.user.service.IUserService;
+import com.fdkankan.platform.user.vo.ResponseUser;
+import com.fdkankan.platform.user.vo.SSOUserVo;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.Set;
+
+@Service
+public class AppService {
+    private static Logger log = LoggerFactory.getLogger("programLog");
+
+    @Autowired
+    private ICameraService cameraService;
+    @Autowired
+    private ICameraDetailService cameraDetailService;
+    @Autowired
+    private IUserService userService;
+    @Autowired
+    private MsgService msgService;
+    @Autowired
+    private RegisterService registerService;
+    @Resource
+    private RedisTemplate<String,String> redisTemplate;
+
+    public String qrCodeLogin(RequestUser user) {
+        if(StringUtils.isEmpty(user.getAppUserName()) || StringUtils.isEmpty(user.getAppPassword())
+                || StringUtils.isEmpty(user.getUuid())){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        Camera dbCameraEntity = cameraService.getByChildNameAndChildPassword(user.getAppUserName(),user.getAppPassword());
+        if (dbCameraEntity == null){
+            throw new BusinessException(CameraConstant.FAILURE_6003);
+        }
+        CameraDetail entity = cameraDetailService.getByCameraId(dbCameraEntity.getId());
+        if (entity == null ){
+            throw new BusinessException(AppConstant.FAILURE_CODE_4012, AppConstant.FAILURE_MSG_4012);
+        }
+        redisTemplate.opsForValue().set(user.getUuid(),user.getAppUserName(), DefaultConfig.DEFAULT_EXPIRE_TIME, DefaultConfig.DEFAULT_TIME_UNIT);
+        return ServerCode.SUCCESS.message();
+    }
+
+    public HashMap<String, String> passwordLogin(RequestUser user) {
+        if(StringUtils.isEmpty(user.getAppUserName()) || StringUtils.isEmpty(user.getAppPassword())){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        Camera cameraEntity = cameraService.getByChildNameAndChildPassword(user.getAppUserName(),user.getAppPassword());
+        if (cameraEntity == null){
+            throw new BusinessException(ErrorCode.PASSWORD_ERROR);
+        }
+        String token = JwtUtil.createJWT(-1, cameraEntity.getChildName(), LoginType.APP.name());
+        String key = SsoUtil.PREFIX_CACHE_CAMERA + cameraEntity.getChildName();
+        redisTemplate.opsForValue().set(key, token, DefaultConfig.CAMERA_EXPIRE_TIME,DefaultConfig.DEFAULT_TIME_UNIT);
+        HashMap<String,String> obj = new HashMap<>();
+        obj.put("token", token);
+        return obj;
+    }
+
+    public SSOUserVo userNameLogin(RequestUser user) {
+        User dbUser = userService.getUserByUserName(user.getPhoneNum());
+        SSOUser ssoUser = userService.getSsoUserByUserName(dbUser,user.getPhoneNum());
+        if(ssoUser == null){
+            throw new BusinessException(ErrorCode.USER_NOT_EXIST);
+        }
+        String passwordCode = SecurityUtil.MD5(user.getPassword());
+        if (!passwordCode.equals(ssoUser.getPassword())){
+            throw new BusinessException(ErrorCode.PASSWORD_ERROR);
+        }
+        return this.setRedisToken(ssoUser,dbUser,user.getCameraType());
+    }
+
+    public SSOUserVo quickLogin(RequestUser user) {
+        User dbUser = msgService.checkMsgAuth(user);
+        SSOUser ssoUser = userService.getSsoUserByUserName(dbUser,user.getPhoneNum());
+        if(ssoUser == null){
+            throw new BusinessException(ErrorCode.USER_NOT_EXIST);
+        }
+        redisTemplate.delete(SsoUtil.PREFIX_MSG_AUTH_CODE + user.getPhoneNum());
+        return this.setRedisToken(ssoUser,dbUser,user.getCameraType());
+    }
+
+    private SSOUserVo setRedisToken(SSOUser ssoUser,User userEntity,Integer CameraType){
+        String key = SsoUtil.PREFIX_CACHE_CAMERA + ssoUser.getUserName();
+        String token = JwtUtil.createJWT(-1, ssoUser.getUserName(),LoginType.APP.name());
+        redisTemplate.opsForValue().set(key, token, DefaultConfig.USER_EXPIRE_TIME,DefaultConfig.DEFAULT_TIME_UNIT);
+        Integer cameraType = CameraType == null ? 4 : CameraType;
+        return userService.getUserInfoByUser(cameraType, userEntity, token);
+    }
+
+    public String logout(String token) {
+        String userName = JwtUtil.getUsername(token);
+        if(redisTemplate.hasKey(SsoUtil.PREFIX_CACHE_CAMERA + userName)){
+            redisTemplate.delete(SsoUtil.PREFIX_CACHE_CAMERA + userName);
+        }
+        return ServerCode.SUCCESS.message();
+    }
+
+    public String register(RequestUser user) {
+        user.setConfirmPwd(user.getPassword());
+        registerService.register(user);
+        return ServerCode.SUCCESS.message();
+    }
+
+    public ResponseUser getRandomNickName() {
+        String nickName = null;
+
+        while(nickName == null){
+            nickName = "mob" + RandomUtil.generateShortUuid();
+            SSOUser ssoUser = userService.getByNickName(nickName);
+            if(ssoUser != null){
+                nickName = null;
+                log.info("昵称已存在:" + nickName);
+            }
+        }
+        ResponseUser vo = new ResponseUser();
+        vo.setNickName(nickName);
+        log.info("获取的随机昵称:" + nickName);
+        return vo;
+    }
+
+    public String checkUserName(RequestUser user) {
+        if(StringUtils.isEmpty(user.getAppUserName())){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+
+        User dbUser = userService.getUserByUserName(user.getAppUserName());
+        if(dbUser != null){
+            throw new BusinessException(ErrorCode.PHONE_EXIST);
+        }
+        return ServerCode.SUCCESS.message();
+    }
+
+    public String resetPassword(RequestUser user) {
+        if(StringUtils.isEmpty(user.getPhoneNum()) || StringUtils.isEmpty(user.getPassword()) ||
+                StringUtils.isEmpty(user.getMsgAuthCode())){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+
+        //正则判断密码是否符合规则(8位以上并且数字英文组合)
+        if(!user.getPassword().matches(ConstantRegex.PASSWORD_REGEX)){
+            throw new BusinessException(ErrorCode.PASSWORD_VIOLATION);
+        }
+
+        User userEntity = userService.getUserByUserName(user.getPhoneNum());
+        if(userEntity == null){
+            throw new BusinessException(ErrorCode.USER_NOT_EXIST);
+        }
+
+        //验证码校验
+        String codeValue = redisTemplate.opsForValue().get(SsoUtil.PREFIX_MSG_AUTH_CODE + user.getPhoneNum());
+        if (StringUtils.isEmpty(codeValue)){
+            throw new BusinessException(ErrorCode.V_CODE_ERROR);
+        }
+        if (!codeValue.equals(user.getMsgAuthCode())){
+            throw new BusinessException(ErrorCode.V_CODE_ERROR);
+        }
+        userEntity.setPassword(SecurityUtil.MD5(user.getPassword()));
+        redisTemplate.delete(SsoUtil.PREFIX_MSG_AUTH_CODE + user.getPhoneNum());
+        if(!userService.updateById(userEntity)){
+            throw new BusinessException(ErrorCode.ERROR_MSG);
+        }
+        registerService.removeAllToken(user.getPhoneNum());
+        return ServerCode.SUCCESS.message();
+    }
+
+    public String uploadHead(RequestUser user) {
+        if(StringUtils.isEmpty(user.getPhoneNum()) || StringUtils.isEmpty(user.getHead())){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+
+        User userEntity = userService.getUserByUserName(user.getPhoneNum());
+        if(userEntity == null){
+            throw new BusinessException(ErrorCode.USER_NOT_EXIST);
+        }
+
+        userEntity.setHead(user.getHead() + "?t=" + System.currentTimeMillis());
+        if(!userService.updateById(userEntity)){
+            throw new BusinessException(ErrorCode.ERROR_MSG);
+        }
+        return ServerCode.SUCCESS.message();
+    }
+
+    public Long getSubPointsFromUserName(RequestUser user) {
+        if(StringUtils.isEmpty(user.getPhoneNum())){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        User userEntity = userService.getUserByUserName(user.getPhoneNum());
+        if(userEntity == null){
+            throw new BusinessException(ErrorCode.USER_NOT_EXIST);
+        }
+        return cameraDetailService.getSumBalanceByUserId(userEntity.getId());
+    }
+
+    public ResponseUser getUserInfo(RequestUser user) {
+        if(StringUtils.isEmpty(user.getPhoneNum())){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        User userEntity = userService.getUserByUserName(user.getPhoneNum());
+        if(userEntity == null){
+            throw new BusinessException(ErrorCode.USER_NOT_EXIST);
+        }
+        Integer cameraType = user.getCameraType() == null ? 4 : user.getCameraType();
+        SSOUserVo ssoUserVo = userService.getUserInfoByUser(cameraType, userEntity, "");
+        return userService.getUserInfoBySsoUserVo(ssoUserVo);
+    }
+
+    public String updateNickName(RequestUser user) {
+        if (StringUtils.isEmpty(user.getNickName()) || StringUtils.isEmpty(user.getPhoneNum())){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        //检验昵称敏感词
+        Set<String> set = Variable.sensitiveWord.getSensitiveWord(user.getNickName(), 1);
+        if (set != null && set.size() > 0){
+            throw new BusinessException(ErrorCode.NICKNAME_ERROR);
+        }
+        User userEntity = userService.getUserByUserName(user.getPhoneNum());
+        if(userEntity == null){
+            throw new BusinessException(ErrorCode.USER_NOT_EXIST);
+        }
+        userEntity.setNickName(user.getNickName());
+        if(!userService.updateById(userEntity)){
+            throw new BusinessException(ErrorCode.ERROR_MSG);
+        }
+        return ServerCode.SUCCESS.message();
+    }
+}

+ 10 - 21
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/LoginService.java

@@ -1,9 +1,10 @@
-package com.fdkankan.platform.user.service;
+package com.fdkankan.platform.user.service.sso;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.fdkankan.common.constant.ConstantFilePath;
 import com.fdkankan.common.constant.ErrorCode;
+import com.fdkankan.common.constant.LoginType;
 import com.fdkankan.common.constant.ServerCode;
 import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.util.*;
@@ -12,6 +13,7 @@ import com.fdkankan.platform.user.common.util.MatrixToImageWriterUtil;
 import com.fdkankan.common.user.SSOUser;
 import com.fdkankan.platform.user.entity.User;
 import com.fdkankan.platform.user.request.RequestUser;
+import com.fdkankan.platform.user.service.IUserService;
 import com.fdkankan.platform.user.vo.SSOUserVo;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -27,9 +29,11 @@ public class LoginService {
     @Resource
     private RedisTemplate<String,String> redisTemplate;
     @Autowired
-    private  IUserService userService;
+    private IUserService userService;
     @Autowired
     private SSOLoginHelper ssoLoginHelper;
+    @Autowired
+    private MsgService msgService;
     @Value("${main.url}")
     private String mainUrl;
 
@@ -52,23 +56,9 @@ public class LoginService {
 
 
     public SSOUserVo quickLogin(RequestUser param) {
-        if(StringUtils.isEmpty(param.getPhoneNum()) || StringUtils.isEmpty(param.getMsgAuthCode())){
-            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
-        }
-        //验证码校验
-        String codeValue = redisTemplate.opsForValue().get(SsoUtil.PREFIX_MSG_AUTH_CODE + param.getPhoneNum());
-        if (StringUtils.isEmpty(codeValue)){
-            throw new BusinessException(ErrorCode.V_CODE_ERROR);
-        }
-        if (!codeValue.equals(param.getMsgAuthCode())){
-            throw new BusinessException(ErrorCode.V_CODE_ERROR);
-        }
-        User dbUser = userService.getUserByUserName(param.getPhoneNum());
+        User dbUser = msgService.checkMsgAuth(param);
         SSOUser ssoUser = userService.getSsoUserByUserName(dbUser,param.getPhoneNum());
-        if(ssoUser == null){
-            throw new BusinessException(ErrorCode.USER_NOT_EXIST);
-        }
-        String token = JwtUtil.createJWT(-1, ssoUser.getUserName(),"user");
+        String token = JwtUtil.createJWT(-1, ssoUser.getUserName(), LoginType.USER.name());
         ssoLoginHelper.login(token, ssoUser);
         removeTimeOutToken(param.getPhoneNum(),token);
         return  userService.getUserInfoByUser( param.getCameraType(), dbUser,token);
@@ -170,7 +160,7 @@ public class LoginService {
         SSOUser dbUser = new SSOUser();
         dbUser.setUserName(childName);
 
-        String token = JwtUtil.createJWT(-1, childName,"user");
+        String token = JwtUtil.createJWT(-1, childName,LoginType.USER.name());
         ssoLoginHelper.login(token, dbUser);
 
         JSONObject object = new JSONObject();
@@ -189,8 +179,7 @@ public class LoginService {
         if (!passwordCode.equals(ssoUser.getPassword())){
             throw new BusinessException(ErrorCode.PASSWORD_ERROR);
         }
-
-        String token = JwtUtil.createJWT(-1, ssoUser.getUserName(),"user");
+        String token = JwtUtil.createJWT(-1, ssoUser.getUserName(),LoginType.USER.name());
         ssoLoginHelper.login(token, ssoUser);
         return token;
     }

+ 18 - 1
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/MsgService.java

@@ -1,4 +1,4 @@
-package com.fdkankan.platform.user.service;
+package com.fdkankan.platform.user.service.sso;
 
 import com.fdkankan.common.constant.ErrorCode;
 import com.fdkankan.common.constant.ServerCode;
@@ -7,7 +7,9 @@ import com.fdkankan.common.sms.SendMailAcceUtils;
 import com.fdkankan.common.sms.SmsService;
 import com.fdkankan.common.util.PatternUtils;
 import com.fdkankan.common.util.SsoUtil;
+import com.fdkankan.platform.user.entity.User;
 import com.fdkankan.platform.user.request.RequestUser;
+import com.fdkankan.platform.user.service.IUserService;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -89,4 +91,19 @@ public class MsgService {
         redisTemplate.opsForValue().set(SsoUtil.PREFIX_MSG_AUTH_CODE + param.getPhoneNum(), code, 300, TimeUnit.SECONDS);
         return ServerCode.SUCCESS.message();
     }
+
+    public User checkMsgAuth(RequestUser user){
+        if(StringUtils.isEmpty(user.getPhoneNum()) || org.apache.commons.lang.StringUtils.isEmpty(user.getMsgAuthCode())){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        String codeValue = redisTemplate.opsForValue().get(SsoUtil.PREFIX_MSG_AUTH_CODE + user.getPhoneNum());
+        //验证码校验
+        if (StringUtils.isEmpty(codeValue)){
+            throw new BusinessException(ErrorCode.V_CODE_ERROR);
+        }
+        if (!codeValue.equals(user.getMsgAuthCode())){
+            throw new BusinessException(ErrorCode.V_CODE_ERROR);
+        }
+        return  userService.getUserByUserName(user.getPhoneNum());
+    }
 }

+ 4 - 3
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/RegisterService.java

@@ -1,4 +1,4 @@
-package com.fdkankan.platform.user.service;
+package com.fdkankan.platform.user.service.sso;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
@@ -14,6 +14,7 @@ import com.fdkankan.common.validation.Variable;
 import com.fdkankan.common.user.SSOLoginHelper;
 import com.fdkankan.platform.user.entity.User;
 import com.fdkankan.platform.user.request.RequestUser;
+import com.fdkankan.platform.user.service.IUserService;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -32,7 +33,7 @@ public class RegisterService {
     @Resource
     private RedisTemplate<String,String> redisTemplate;
     @Autowired
-    private  IUserService userService;
+    private IUserService userService;
     @Autowired
     private SSOLoginHelper ssoLoginHelper;
 
@@ -114,7 +115,7 @@ public class RegisterService {
         return ServerCode.SUCCESS.message();
     }
 
-    private void removeAllToken(String phone){
+    public void removeAllToken(String phone){
         //删除缓存
         redisTemplate.delete(SsoUtil.PREFIX_MSG_AUTH_CODE + phone);
         JSONArray tokenArray = new JSONArray();

+ 97 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/sso/SsoManagerService.java

@@ -0,0 +1,97 @@
+package com.fdkankan.platform.user.service.sso;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fdkankan.common.constant.ErrorCode;
+import com.fdkankan.common.constant.LoginType;
+import com.fdkankan.common.constant.ServerCode;
+import com.fdkankan.common.exception.BusinessException;
+import com.fdkankan.common.util.Base64Converter;
+import com.fdkankan.common.util.JwtUtil;
+import com.fdkankan.common.util.PasswordUtils;
+import com.fdkankan.common.util.SsoUtil;
+import com.fdkankan.platform.common.DefaultConfig;
+import com.fdkankan.platform.order.entity.SpaceSdk;
+import com.fdkankan.platform.order.service.ISpaceSdkService;
+import com.fdkankan.platform.user.entity.Manager;
+import com.fdkankan.platform.user.request.RequestManager;
+import com.fdkankan.platform.user.request.RequestSdkVersion;
+import com.fdkankan.platform.user.service.IManagerService;
+import com.fdkankan.platform.user.vo.SSOManagerVo;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+@Service
+public class SsoManagerService {
+
+    @Autowired
+    private IManagerService managerService;
+    @Autowired
+    private ISpaceSdkService spaceSdkService;
+    @Resource
+    private RedisTemplate<String,String> redisTemplate;
+
+    public JSONObject login(RequestManager param) {
+        SSOManagerVo managerEntity = getVoByUserName(param.getUserName());
+        if (managerEntity == null){
+            throw new BusinessException(ErrorCode.USER_NOT_EXIST);
+        }
+        if(managerEntity.getIsCompany() != 0){
+            throw new BusinessException(ErrorCode.NOT_PERMISSION);
+        }
+      return this.loginCommon(param,managerEntity);
+    }
+
+    public JSONObject companyLogin(RequestManager param) {
+        SSOManagerVo managerEntity = getVoByUserName(param.getUserName());
+        if (managerEntity == null){
+            throw new BusinessException(ErrorCode.USER_NOT_EXIST);
+        }
+        if(managerEntity.getIsCompany() != 1){
+            throw new BusinessException(ErrorCode.NOT_PERMISSION);
+        }
+        return this.loginCommon(param,managerEntity);
+    }
+
+    private JSONObject loginCommon(RequestManager param, SSOManagerVo managerEntity){
+        //对前端传的密码解密
+        String password = Base64Converter.decode(Base64Converter.subText(param.getPassword()));
+        param.setPassword(password);
+        String encryptPwd = PasswordUtils.encrypt(param.getUserName(), param.getPassword(), PasswordUtils.getStaticSalt());
+        if (!encryptPwd.equals(managerEntity.getPassword())){
+            throw new BusinessException(ErrorCode.PASSWORD_ERROR);
+        }
+        String key = SsoUtil.PREFIX_CACHE_MANAGER + managerEntity.getUserName();
+        String token = JwtUtil.createJWT(-1, key, LoginType.MANAGER.name());
+        redisTemplate.opsForValue().set(key, token, DefaultConfig.USER_EXPIRE_TIME,DefaultConfig.DEFAULT_TIME_UNIT);
+        JSONObject obj = new JSONObject();
+        obj.put("token", token);
+        return obj;
+    }
+
+    public String logout(String token) {
+        String userName = JwtUtil.getUsername(token);
+        if (redisTemplate.hasKey(userName)){
+            redisTemplate.delete(userName);
+        }
+        return ServerCode.SUCCESS.message();
+    }
+
+    public Page<SpaceSdk> spaceList(RequestSdkVersion param) {
+        return spaceSdkService.getPageByParam(param);
+    }
+
+    private SSOManagerVo getVoByUserName(String userName){
+        SSOManagerVo vo = null;
+        Manager manager = managerService.getByUserName(userName);
+        if(manager!=null){
+            vo = new SSOManagerVo();
+            BeanUtils.copyProperties(manager,vo);
+        }
+        return vo;
+    }
+}

+ 18 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/vo/SSOManagerVo.java

@@ -0,0 +1,18 @@
+package com.fdkankan.platform.user.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class SSOManagerVo implements Serializable {
+
+    private static final long serialVersionUID = -5887311592557530658L;
+
+    private String userName;
+
+    private String password;
+
+    private Integer isCompany;
+
+}

+ 4 - 4
4dkankan-center-platform/src/main/resources/bootstrap.yml

@@ -7,10 +7,10 @@ spring:
         server-addr: 192.168.0.47:8848
         file-extension: yaml
         namespace: 4dkankan-dev
-#        extension-configs:
-#          - data-id: 4dkankan-center-platform.yaml
-#            group: DEFAULT_GROUP
-#            refresh: true
+        extension-configs:
+          - data-id: 4dkankan-center-platform.yaml
+            group: DEFAULT_GROUP
+            refresh: true
         shared-configs:
           - data-id: common-redis-config.yaml
             group: DEFAULT_GROUP

+ 1 - 1
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneFileBuildServiceImpl.java

@@ -587,7 +587,7 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
 
     @Override
     public ResultData turntableUploadSuccess(String params) throws Exception {
-        log.info("uploadSuccessBuild-params: " + params);
+        log.info("turntableUploadSuccess-params: " + params);
         if (StringUtils.isEmpty(params)) {
             throw new BusinessException(ErrorCode.PARAM_REQUIRED);
         }

+ 6 - 6
4dkankan-center-scene/src/main/resources/logback-spring.xml

@@ -38,7 +38,7 @@
 		<file>${log.path}/log_debug.log</file>
 		<!--日志文件输出格式 -->
 		<encoder>
-			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}[%L] - %msg%n</pattern>
 			<charset>UTF-8</charset> <!-- 设置字符集 -->
 		</encoder>
 		<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
@@ -66,7 +66,7 @@
 		<file>${log.path}/log_info.log</file>
 		<!--日志文件输出格式 -->
 		<encoder>
-			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}[%L] - %msg%n</pattern>
 			<charset>UTF-8</charset>
 		</encoder>
 		<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
@@ -94,7 +94,7 @@
 		<file>${log.path}/log_warn.log</file>
 		<!--日志文件输出格式 -->
 		<encoder>
-			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}[%L] - %msg%n</pattern>
 			<charset>UTF-8</charset> <!-- 此处设置字符集 -->
 		</encoder>
 		<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
@@ -122,7 +122,7 @@
 		<file>${log.path}/log_error.log</file>
 		<!--日志文件输出格式 -->
 		<encoder>
-			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}[%L] - %msg%n</pattern>
 			<charset>UTF-8</charset> <!-- 此处设置字符集 -->
 		</encoder>
 		<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
@@ -148,7 +148,7 @@
 		<file>${log.path}/program/log_program.log</file>
 		<!--日志文件输出格式 -->
 		<encoder>
-			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}[%L] - %msg%n</pattern>
 			<charset>UTF-8</charset> <!-- 此处设置字符集 -->
 		</encoder>
 		<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
@@ -176,7 +176,7 @@
 		<file>${log.path}/visit/log_visit.log</file>
 		<!--日志文件输出格式 -->
 		<encoder>
-			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}[%L] - %msg%n</pattern>
 			<charset>UTF-8</charset> <!-- 此处设置字符集 -->
 		</encoder>
 		<!-- 日志记录器的滚动策略,按日期,按大小记录 -->

+ 1 - 0
4dkankan-common/src/main/java/com/fdkankan/common/constant/ErrorCode.java

@@ -37,6 +37,7 @@ public enum ErrorCode {
     CAMERA_NOT_OWN(40026, "不能将相机分配给自己"),
     CAMERA_GIVEN(40027, "当前相机已被授权,请选择另外相机绑定"),
     FILE_NOT_EXIST(40027, "需要上传或使用的文件不存在"),
+    NOT_PERMISSION(40027, "登录失败,账号无权访问"),
 
 
 

+ 111 - 0
4dkankan-common/src/main/java/com/fdkankan/common/constant/SceneConstant.java

@@ -0,0 +1,111 @@
+
+package com.fdkankan.common.constant;
+
+// 5001-6000 场景状态码
+public class SceneConstant {
+
+    public static final int FAILURE_CODE_5001 = 5001;
+    public static final String FAILURE_MSG_5001 = "modeldata.json为空";
+
+    public static final int FAILURE_CODE_5002 = 5002;
+    public static final String FAILURE_MSG_5002 = "order值为空";
+
+    public static final int FAILURE_CODE_5003 = 5003;
+    public static final String FAILURE_MSG_5003 = "guideSid或order值为空";
+
+    public static final int FAILURE_CODE_5004 = 5004;
+    public static final String FAILURE_MSG_5004 = "guideSid或guideName值为空";
+
+    public static final int FAILURE_CODE_5005 = 5005;
+    public static final String FAILURE_MSG_5005 = "场景为空";
+
+    public static final int FAILURE_CODE_5006 = 5006;
+    public static final String FAILURE_MSG_5006 = "余额不足";
+
+    public static final int FAILURE_CODE_5007 = 5007;
+    public static final String FAILURE_MSG_5007 = "非八目场景";
+
+    public static final int FAILURE_CODE_5008 = 5008;
+    public static final String FAILURE_MSG_5008 = "该场景已经被封存,无法删除";
+
+    public static final int FAILURE_CODE_5009 = 5009;
+    public static final String FAILURE_MSG_5009 = "场景被删除";
+
+	public static final int FAILURE_CODE_5010 = 5010;
+    public static final String FAILURE_MSG_5010 = "场景不属于该相机";
+
+    public static final int FAILURE_CODE_5011 = 5011;
+    public static final String FAILURE_MSG_5011 = "创建";
+
+    public static final int FAILURE_CODE_5012 = 5012;
+    public static final String FAILURE_MSG_5012 = "数据不正常";
+
+    public static final int FAILURE_CODE_5013 = 5013;
+    public static final String FAILURE_MSG_5013 = "场景对应的用户名为空";
+
+    public static final int FAILURE_CODE_5014 = 5014;
+    public static final String FAILURE_MSG_5014 = "该用户无权操作该场景";
+
+    public static final int FAILURE_CODE_5015 = 5015;
+    public static final String FAILURE_MSG_5015 = "该场景不属于当前登录账号";
+
+    public static final int FAILURE_CODE_5016 = 5016;
+    public static final String FAILURE_MSG_5016 = "热点外链场景不对";
+
+    public static final int FAILURE_CODE_5017 = 5017;
+    public static final String FAILURE_MSG_5017 = "*上传模型失败,请参照右侧教程";
+
+    public static final int FAILURE_CODE_5018 = 5018;
+    public static final String FAILURE_MSG_5018 = "zip文件只能有一层目录或无目录";
+
+    public static final int FAILURE_CODE_5019 = 5019;
+    public static final String FAILURE_MSG_5019 = "必须有且仅有一个obj和mtl文件";
+
+    public static final int FAILURE_CODE_5020 = 5020;
+    public static final String FAILURE_MSG_5020 = "贴图需控制在1.5M以内,obj文件需要控制在20M以内。";
+
+    public static final int FAILURE_CODE_5021 = 5021;
+    public static final String FAILURE_MSG_5021 = "场景密钥不正确";
+
+    public static final int FAILURE_CODE_5022 = 5022;
+    public static final String FAILURE_MSG_5022 = "上传文件格式,名称不一致";
+
+    public static final int FAILURE_CODE_5023 = 5023;
+    public static final String FAILURE_MSG_5023 = "上传文件格式不正确,只能是jpg或mp4格式";
+
+    public static final int FAILURE_CODE_5024 = 5024;
+    public static final String FAILURE_MSG_5024 = "有场景打包中,请稍后重试";
+
+    public static final int FAILURE_CODE_5025 = 5025;
+    public static final String FAILURE_MSG_5025 = "数据包不存在,请先打成zip包";
+
+    public static final int FAILURE_CODE_5026 = 5026;
+    public static final String FAILURE_MSG_5026 = "上传的压缩包类型不正确";
+
+    public static final int FAILURE_CODE_5027 = 5027;
+    public static final String FAILURE_MSG_5027 = "文件夹不存在";
+
+    public static final int FAILURE_CODE_5028 = 5028;
+    public static final String FAILURE_MSG_5028 = "无权修改该文件夹";
+
+    public static final int FAILURE_CODE_5029 = 5029;
+    public static final String FAILURE_MSG_5029 = "场景下载失败,请稍后重试";
+
+    public static final int FAILURE_CODE_5030 = 5030;
+    public static final String FAILURE_MSG_5030 = "同级文件夹名称不能重复";
+
+    public static final int FAILURE_CODE_5031 = 5031;
+    public static final String FAILURE_MSG_5031 = "场景打包中不能重复操作";
+
+    public static final int FAILURE_CODE_5032 = 5032;
+    public static final String FAILURE_MSG_5032 = "三维家打包记录不存在";
+
+    public static final int FAILURE_CODE_5033 = 5033;
+    public static final String FAILURE_MSG_5033 = "该场景正在计算中";
+
+    public static final int FAILURE_CODE_5034 = 5034;
+    public static final String FAILURE_MSG_5034 = "该场景已封存";
+
+    public static final int FAILURE_CODE_5035 = 5035;
+    public static final String FAILURE_MSG_5035 = "任务已存在";
+}

+ 2 - 0
4dkankan-common/src/main/java/com/fdkankan/common/user/SSOUser.java

@@ -1,11 +1,13 @@
 package com.fdkankan.common.user;
 
 import lombok.Data;
+import lombok.ToString;
 
 import java.io.Serializable;
 import java.util.Set;
 
 @Data
+@ToString
 public class SSOUser implements Serializable {
 
     private static final long serialVersionUID = -2560069033053679931L;

+ 49 - 0
4dkankan-common/src/main/java/com/fdkankan/common/util/RandomUtil.java

@@ -0,0 +1,49 @@
+package com.fdkankan.common.util;
+
+import java.util.Random;
+import java.util.UUID;
+
+public class RandomUtil {
+    public static String[] chars = new String[] { "a", "b", "c", "d", "e", "f",
+            "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s",
+            "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5",
+            "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I",
+            "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V",
+            "W", "X", "Y", "Z" };
+
+    public static String generateShortUuid() {
+        StringBuffer shortBuffer = new StringBuffer();
+        String uuid = UUID.randomUUID().toString().replace("-", "");
+        int index = 0;
+        for (int i = 0; i < 10; i++) {
+            index = i;
+            if(index >= 8){
+                index = i % 8;
+                uuid = UUID.randomUUID().toString().replace("-", "");
+            }
+            String str = uuid.substring(index * 4, index * 4 + 4);
+            int x = Integer.parseInt(str, 16);
+            shortBuffer.append(chars[x % 0x3E]);
+        }
+        return shortBuffer.toString();
+
+    }
+
+    /**
+     * 获取随机字符串(相机sn码)
+     *
+     * @param num
+     * @return
+     */
+    public static String getRandomNum(Integer num) {
+        String base = "0123456789ABCDEF";
+        Random random = new Random();
+        StringBuffer sb = new StringBuffer();
+        for (int i = 0; i < num; i++) {
+            int number = random.nextInt(base.length());
+            sb.append(base.charAt(number));
+        }
+        return sb.toString();
+    }
+
+}

+ 1 - 1
4dkankan-sdk-oss/src/main/java/com/fdkankan/oss/UploadUtils.java

@@ -25,7 +25,7 @@ public class UploadUtils {
     @Value("${oss.secrey}")
     private String secrey;
 
-    @Value("${oss.bucket}")
+    @Value("${oss.bucket.bucket}")
     private String bucket;
 
     public void upload(String filePath, String key1) {

+ 0 - 2
4dkankan-sdk-oss/src/main/resources/bootstrap.yml

@@ -1,2 +0,0 @@
-oss:
-  type: oss

+ 0 - 2
4dkankan-sdk-oss/target/classes/bootstrap.yml

@@ -1,2 +0,0 @@
-oss:
-  type: oss