dengsixing 7 月之前
父節點
當前提交
3bf1f549f3
共有 36 個文件被更改,包括 634 次插入4204 次删除
  1. 5 2
      src/main/java/com/fdkankan/redis/constant/RedisKey.java
  2. 97 97
      src/main/java/com/fdkankan/scene/Interceptor/CheckTokenAspect.java
  3. 9 1
      src/main/java/com/fdkankan/scene/Interceptor/InitEditInfoAspect.java
  4. 172 172
      src/main/java/com/fdkankan/scene/Interceptor/ViewLogAspect.java
  5. 12 0
      src/main/java/com/fdkankan/scene/controller/BaseController.java
  6. 2 1
      src/main/java/com/fdkankan/scene/controller/OssFileMappingController.java
  7. 2 1
      src/main/java/com/fdkankan/scene/controller/SceneController.java
  8. 36 396
      src/main/java/com/fdkankan/scene/controller/SceneEditController.java
  9. 4 1
      src/main/java/com/fdkankan/scene/controller/SceneEditDrawController.java
  10. 5 0
      src/main/java/com/fdkankan/scene/entity/Scene.java
  11. 3 0
      src/main/java/com/fdkankan/scene/entity/SceneFileMapping.java
  12. 5 5
      src/main/java/com/fdkankan/scene/service/FYunFileService.java
  13. 1 1
      src/main/java/com/fdkankan/scene/service/IBoxModelService.java
  14. 2 2
      src/main/java/com/fdkankan/scene/service/ISceneDrawService.java
  15. 1 1
      src/main/java/com/fdkankan/scene/service/ISceneProService.java
  16. 1 1
      src/main/java/com/fdkankan/scene/service/ISceneUploadService.java
  17. 1 1
      src/main/java/com/fdkankan/scene/service/SceneEditInfoExtService.java
  18. 5 5
      src/main/java/com/fdkankan/scene/service/SceneEditInfoService.java
  19. 2 2
      src/main/java/com/fdkankan/scene/service/SceneFileMappingService.java
  20. 7 2
      src/main/java/com/fdkankan/scene/service/SceneService.java
  21. 11 29
      src/main/java/com/fdkankan/scene/service/impl/BoxModelServiceImpl.java
  22. 12 10
      src/main/java/com/fdkankan/scene/service/impl/FYunFileServiceImpl.java
  23. 26 90
      src/main/java/com/fdkankan/scene/service/impl/SceneDrawServiceImpl.java
  24. 36 203
      src/main/java/com/fdkankan/scene/service/impl/SceneEditInfoExtServiceImpl.java
  25. 72 2265
      src/main/java/com/fdkankan/scene/service/impl/SceneEditInfoServiceImpl.java
  26. 7 19
      src/main/java/com/fdkankan/scene/service/impl/SceneEditServiceImpl.java
  27. 11 4
      src/main/java/com/fdkankan/scene/service/impl/SceneFileMappingServiceImpl.java
  28. 44 825
      src/main/java/com/fdkankan/scene/service/impl/SceneProServiceImpl.java
  29. 23 4
      src/main/java/com/fdkankan/scene/service/impl/SceneServiceImpl.java
  30. 7 60
      src/main/java/com/fdkankan/scene/service/impl/SceneUploadServiceImpl.java
  31. 2 0
      src/main/java/com/fdkankan/scene/vo/BaseSceneParamVO.java
  32. 7 0
      src/main/java/com/fdkankan/scene/vo/SceneInfoVO.java
  33. 1 1
      src/main/resources/application-dev.yml
  34. 1 1
      src/main/resources/application-preprod.yml
  35. 1 1
      src/main/resources/application-prod.yml
  36. 1 1
      src/main/resources/application-test.yml

+ 5 - 2
src/main/java/com/fdkankan/redis/constant/RedisKey.java

@@ -219,8 +219,11 @@ public class RedisKey {
 
     public static final String SCENE_DRAW = "scene:draw:num:%s";
 
-    public static String getNumStr(String num, Integer subgroup){
-        return num + "-" + subgroup;
+    public static String getNumStr(String num, Integer subgroup, String upTime, Integer cacheKeyHasTime){
+        if(cacheKeyHasTime == 0){
+            return num + "-" + subgroup;
+        }
+        return num + "-" + subgroup + "-" + upTime;
     }
 
 

+ 97 - 97
src/main/java/com/fdkankan/scene/Interceptor/CheckTokenAspect.java

@@ -1,97 +1,97 @@
-package com.fdkankan.scene.Interceptor;
-
-import cn.hutool.http.HttpUtil;
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import com.fdkankan.common.exception.BusinessException;
-import com.fdkankan.common.util.ThreeDESUtil;
-import com.fdkankan.common.util.UserAgentUtils;
-import com.fdkankan.common.util.WebUtil;
-import com.fdkankan.feign.TietaFeignClient;
-import com.fdkankan.feign.WS4AServiceClient;
-import com.fdkankan.scene.entity.SceneViewLog;
-import com.fdkankan.scene.service.SceneViewLogService;
-import lombok.extern.log4j.Log4j2;
-import org.aspectj.lang.JoinPoint;
-import org.aspectj.lang.annotation.Aspect;
-import org.aspectj.lang.annotation.Before;
-import org.aspectj.lang.annotation.Pointcut;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.core.annotation.Order;
-import org.springframework.stereotype.Component;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import java.io.IOException;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-
-@Log4j2
-@Aspect
-@Component
-@Order(101)
-public class CheckTokenAspect {
-
-	@Value("${spring.cloud.nacos.discovery.access-key}")
-	private String accessKey;
-
-	@Value("${tieta.checkToken.syscode}")
-	private String syscode;
-	@Value("${gateway.key:6#dPz>3F}")
-	private String gatewayKey;
-	@Value("${gateway.url}")
-	private String gatewayUrl;
-	@Resource
-	private TietaFeignClient tietaFeignClient;
-	@Autowired
-	private WS4AServiceClient ws4AServiceClient;
-	@Autowired
-	private SceneViewLogService sceneViewLogService;
-
-	@Pointcut("@annotation(com.fdkankan.scene.annotation.CheckToken)")
-	public void CheckToken() {
-	}
-
-	/**
-	 * 前置通知 用于判断用户协作场景是否有协作权限
-	 *
-	 * @param joinPoint
-	 *            切点
-	 * @throws IOException
-	 */
-	@Before("CheckToken()")
-	public void doBefore(JoinPoint joinPoint) throws Exception {
-		HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
-
-		//请求4a接口获取用户信息
-		Map<String, Object> parameter = WebUtil.getParameter(joinPoint, request);
-		String acctId = (String) parameter.get("acctId");
-		String token = (String) parameter.get("token");
-		String num = (String) parameter.get("num");
-
-		//token校验
-		JSONObject checkProwadaTokenParam = new JSONObject();
-		JSONObject params = new JSONObject();
-		params.put("SYSCODE", syscode);
-		params.put("ACCTID", acctId);
-		params.put("TOKEN", token);
-		String encode = ThreeDESUtil.encode(JSON.toJSONString(params), gatewayKey);
-		checkProwadaTokenParam.put("args", encode);
-		JSONObject result = ws4AServiceClient.checkProwadaToken(checkProwadaTokenParam);
-		log.info("场景:{},4A校验token结果:{}", num, result);
-		if(!"SUCCESS".equals(result.getString("resultStat"))){
-			throw new BusinessException(4000, "4A鉴权失败");
-		}
-		String data = result.getString("data");
-		JSONObject dataObj = JSONObject.parseObject(data);
-		if(!"0".equals(dataObj.getString("RSP"))){
-			throw new BusinessException(4000, "4A鉴权失败:" + dataObj.getString("ERRDESC"));
-		}
-	}
-
-}
+//package com.fdkankan.scene.Interceptor;
+//
+//import cn.hutool.http.HttpUtil;
+//import com.alibaba.fastjson.JSON;
+//import com.alibaba.fastjson.JSONArray;
+//import com.alibaba.fastjson.JSONObject;
+//import com.fdkankan.common.exception.BusinessException;
+//import com.fdkankan.common.util.ThreeDESUtil;
+//import com.fdkankan.common.util.UserAgentUtils;
+//import com.fdkankan.common.util.WebUtil;
+//import com.fdkankan.feign.TietaFeignClient;
+//import com.fdkankan.feign.WS4AServiceClient;
+//import com.fdkankan.scene.entity.SceneViewLog;
+//import com.fdkankan.scene.service.SceneViewLogService;
+//import lombok.extern.log4j.Log4j2;
+//import org.aspectj.lang.JoinPoint;
+//import org.aspectj.lang.annotation.Aspect;
+//import org.aspectj.lang.annotation.Before;
+//import org.aspectj.lang.annotation.Pointcut;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.beans.factory.annotation.Value;
+//import org.springframework.core.annotation.Order;
+//import org.springframework.stereotype.Component;
+//import org.springframework.web.context.request.RequestContextHolder;
+//import org.springframework.web.context.request.ServletRequestAttributes;
+//
+//import javax.annotation.Resource;
+//import javax.servlet.http.HttpServletRequest;
+//import java.io.IOException;
+//import java.util.Date;
+//import java.util.HashMap;
+//import java.util.Map;
+//
+//@Log4j2
+//@Aspect
+//@Component
+//@Order(101)
+//public class CheckTokenAspect {
+//
+//	@Value("${spring.cloud.nacos.discovery.access-key}")
+//	private String accessKey;
+//
+//	@Value("${tieta.checkToken.syscode}")
+//	private String syscode;
+//	@Value("${gateway.key:6#dPz>3F}")
+//	private String gatewayKey;
+//	@Value("${gateway.url}")
+//	private String gatewayUrl;
+//	@Resource
+//	private TietaFeignClient tietaFeignClient;
+//	@Autowired
+//	private WS4AServiceClient ws4AServiceClient;
+//	@Autowired
+//	private SceneViewLogService sceneViewLogService;
+//
+//	@Pointcut("@annotation(com.fdkankan.scene.annotation.CheckToken)")
+//	public void CheckToken() {
+//	}
+//
+//	/**
+//	 * 前置通知 用于判断用户协作场景是否有协作权限
+//	 *
+//	 * @param joinPoint
+//	 *            切点
+//	 * @throws IOException
+//	 */
+//	@Before("CheckToken()")
+//	public void doBefore(JoinPoint joinPoint) throws Exception {
+//		HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
+//
+//		//请求4a接口获取用户信息
+//		Map<String, Object> parameter = WebUtil.getParameter(joinPoint, request);
+//		String acctId = (String) parameter.get("acctId");
+//		String token = (String) parameter.get("token");
+//		String num = (String) parameter.get("num");
+//
+//		//token校验
+//		JSONObject checkProwadaTokenParam = new JSONObject();
+//		JSONObject params = new JSONObject();
+//		params.put("SYSCODE", syscode);
+//		params.put("ACCTID", acctId);
+//		params.put("TOKEN", token);
+//		String encode = ThreeDESUtil.encode(JSON.toJSONString(params), gatewayKey);
+//		checkProwadaTokenParam.put("args", encode);
+//		JSONObject result = ws4AServiceClient.checkProwadaToken(checkProwadaTokenParam);
+//		log.info("场景:{},4A校验token结果:{}", num, result);
+//		if(!"SUCCESS".equals(result.getString("resultStat"))){
+//			throw new BusinessException(4000, "4A鉴权失败");
+//		}
+//		String data = result.getString("data");
+//		JSONObject dataObj = JSONObject.parseObject(data);
+//		if(!"0".equals(dataObj.getString("RSP"))){
+//			throw new BusinessException(4000, "4A鉴权失败:" + dataObj.getString("ERRDESC"));
+//		}
+//	}
+//
+//}

+ 9 - 1
src/main/java/com/fdkankan/scene/Interceptor/InitEditInfoAspect.java

@@ -73,10 +73,18 @@ public class InitEditInfoAspect {
 		String num = (String) parameter.get("num");
 		Object subgroupObj = parameter.get("subgroup");
 		Integer subgroup = 0;
+		String upTime = (String) parameter.get("upTimeKey");
 		if(Objects.nonNull(subgroupObj)){
 			subgroup = Integer.valueOf(subgroupObj.toString());
 		}
-		List<Scene> scenes = sceneService.listByNum(num, subgroup);
+		if(StrUtil.isEmpty(upTime)){
+			List<Scene> list = sceneService.list(new LambdaQueryWrapper<Scene>().eq(Scene::getNum, num).eq(Scene::getSubgroup, 0).orderByDesc(Scene::getUpTimeKey));
+			if(CollUtil.isEmpty(list)){
+				throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
+			}
+			upTime = list.get(0).getUpTimeKey();
+		}
+		List<Scene> scenes = sceneService.list(new LambdaQueryWrapper<Scene>().eq(Scene::getNum, num).eq(Scene::getSubgroup, subgroup).eq(Scene::getUpTimeKey, upTime));
 		if(CollUtil.isEmpty(scenes)){
 			throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
 		}

+ 172 - 172
src/main/java/com/fdkankan/scene/Interceptor/ViewLogAspect.java

@@ -1,172 +1,172 @@
-package com.fdkankan.scene.Interceptor;
-
-import cn.hutool.http.HttpUtil;
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import com.fdkankan.common.util.ThreeDESUtil;
-import com.fdkankan.common.util.UserAgentUtils;
-import com.fdkankan.common.util.WebUtil;
-import com.fdkankan.common.exception.BusinessException;
-import com.fdkankan.feign.TietaFeignClient;
-import com.fdkankan.feign.WS4AServiceClient;
-import com.fdkankan.scene.entity.SceneViewLog;
-import com.fdkankan.scene.service.SceneViewLogService;
-import lombok.extern.log4j.Log4j2;
-import org.aspectj.lang.JoinPoint;
-import org.aspectj.lang.annotation.Aspect;
-import org.aspectj.lang.annotation.Before;
-import org.aspectj.lang.annotation.Pointcut;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.core.annotation.Order;
-import org.springframework.stereotype.Component;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import java.io.IOException;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-
-@Log4j2
-@Aspect
-@Component
-@Order(101)
-public class ViewLogAspect {
-
-	@Value("${spring.cloud.nacos.discovery.access-key}")
-	private String accessKey;
-
-	@Value("${tieta.checkToken.syscode}")
-	private String syscode;
-	@Value("${gateway.key:6#dPz>3F}")
-	private String gatewayKey;
-	@Value("${gateway.url}")
-	private String gatewayUrl;
-	@Resource
-	private TietaFeignClient tietaFeignClient;
-	@Autowired
-	private WS4AServiceClient ws4AServiceClient;
-	@Autowired
-	private SceneViewLogService sceneViewLogService;
-
-	@Pointcut("@annotation(com.fdkankan.scene.annotation.VrLog)")
-	public void checkCooperationPermit() {
-	}
-
-	/**
-	 * 前置通知 用于判断用户协作场景是否有协作权限
-	 *
-	 * @param joinPoint
-	 *            切点
-	 * @throws IOException
-	 */
-	@Before("checkCooperationPermit()")
-	public void doBefore(JoinPoint joinPoint) throws Exception {
-		log.info("记录日志开始");
-		HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
-		boolean mobileDevice = UserAgentUtils.isMobileDevice(request);
-		String userAgent = "pc";
-		if(mobileDevice){
-			userAgent = "mobile";
-		}
-
-		//请求4a接口获取用户信息
-		Map<String, Object> parameter = WebUtil.getParameter(joinPoint, request);
-		String acctId = (String) parameter.get("acctId");
-		String token = (String) parameter.get("token");
-		String num = (String) parameter.get("num");
-        String syscode = (String) parameter.get("syscode");
-
-		//token校验
-		JSONObject checkProwadaTokenParam = new JSONObject();
-		JSONObject params = new JSONObject();
-		params.put("SYSCODE", syscode);
-		params.put("ACCTID", acctId);
-		params.put("TOKEN", token);
-		String encode = ThreeDESUtil.encode(JSON.toJSONString(params), gatewayKey);
-		checkProwadaTokenParam.put("args", encode);
-		JSONObject result = ws4AServiceClient.checkProwadaToken(checkProwadaTokenParam);
-		log.info("场景:{},4A校验token结果:{}", num, result);
-		if(!"SUCCESS".equals(result.getString("resultStat"))){
-			throw new BusinessException(4000, "4A鉴权失败");
-		}
-		String data = result.getString("data");
-		JSONObject dataObj = JSONObject.parseObject(data);
-		if(!"0".equals(dataObj.getString("RSP"))){
-			throw new BusinessException(4000, "4A鉴权失败:" + dataObj.getString("ERRDESC"));
-		}
-		String USERCODE = dataObj.getString("USERCODE");
-//		String SERVICEID = dataObj.getString("SERVICEID");
-		String ORGCODE = dataObj.getString("ORGCODE");
-
-		//查询用户信息
-		JSONObject param2 = new JSONObject();
-		param2.put("SERVICEID", syscode);
-		param2.put("LOGINACCOUNT", USERCODE);
-		param2.put("TOKEN", token);
-		encode = ThreeDESUtil.encode(JSON.toJSONString(param2), gatewayKey);
-		Map<String, Object> param = new HashMap<>();
-		param.put("args", encode);
-		String queryLoginUserInfoResp = HttpUtil.get(gatewayUrl + "/QUERY4A/user/queryLoginUserInfo?args=" + encode);
-		result = JSON.parseObject(queryLoginUserInfoResp);
-//		result = ws4AServiceClient.queryLoginUserInfo(encode);
-		log.info("场景:{},4A查询用户信息结果:{}", num, result);
-		if(!"SUCCESS".equals(result.getString("resultStat"))){
-			throw new BusinessException(4000, "4A查询用户信息失败");
-		}
-		data = result.getString("data");
-		dataObj = JSONObject.parseObject(data);
-		if(!"0".equals(dataObj.getString("RSP"))){
-			throw new BusinessException(4000, "4A查询用户信息失败:" + dataObj.getString("ERRDESC"));
-		}
-		String nickName = dataObj.getString("LOGINNAME");
-
-		JSONObject param3 = new JSONObject();
-		param3.put("SERVICEID", syscode);
-		param3.put("QUERYMODE", "3");
-		param3.put("ORGCODE", ORGCODE);
-		param3.put("TOKEN", token);
-		encode = ThreeDESUtil.encode(JSON.toJSONString(param3), gatewayKey);
-//		result = ws4AServiceClient.queryOrgs(encode);
-		String queryOrgsResp = HttpUtil.get(gatewayUrl + "/QUERY4A/query/queryOrgs?args=" + encode);
-		result = JSON.parseObject(queryOrgsResp);
-		log.info("场景:{},4A查询用户组织结果:{}", num, result);
-		if(!"SUCCESS".equals(result.getString("resultStat"))){
-			throw new BusinessException(4000, "查询用户组织失败");
-		}
-		data = result.getString("data");
-		dataObj = JSONObject.parseObject(data);
-		if(!"0".equals(dataObj.getString("RSP"))){
-			throw new BusinessException(4000, "4A查询用户组织失败:" + dataObj.getString("ERRDESC"));
-		}
-		JSONObject ORGS = dataObj.getJSONObject("ORGS");
-		JSONArray ORG = ORGS.getJSONArray("ORG");
-		JSONObject ORG1 = ORG.getJSONObject(0);
-		String ORGNAMEPATH = ORG1.getString("ORGNAMEPATH");
-
-		//写入表
-		SceneViewLog sceneViewLog = new SceneViewLog();
-		sceneViewLog.setOrgNamePath(ORGNAMEPATH);
-		sceneViewLog.setFuncName("VR全景");
-		sceneViewLog.setFuncDesc("VR全景试图");
-		sceneViewLog.setUserName(USERCODE);
-		sceneViewLog.setNickName(nickName);
-		sceneViewLog.setCreateTime(new Date());
-		sceneViewLog.setTerminalType(userAgent);
-		sceneViewLogService.save(sceneViewLog);
-	}
-
-	public static void main(String[] args) {
-		JSONObject param2 = new JSONObject();
-		param2.put("SERVICEID", "CHNTRMS2");
-		param2.put("LOGINACCOUNT", "wx-sunql3");
-		param2.put("TOKEN", "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJSRVMiLCJpc3MiOiJXUzRBIiwiZXhwIjoxNzMzMzEwNjY1LCJOQU5PU0VDT05EIjo0MjAxNTczODIzODYyMjgzOH0.sQR4qkTeRZEOQMI-Rjck35dFswoOMYHsGSuNcXH45TI");
-		String encode = ThreeDESUtil.encode(JSON.toJSONString(param2), "6#dPz>3F");
-		System.out.println(encode);
-	}
-
-}
+//package com.fdkankan.scene.Interceptor;
+//
+//import cn.hutool.http.HttpUtil;
+//import com.alibaba.fastjson.JSON;
+//import com.alibaba.fastjson.JSONArray;
+//import com.alibaba.fastjson.JSONObject;
+//import com.fdkankan.common.util.ThreeDESUtil;
+//import com.fdkankan.common.util.UserAgentUtils;
+//import com.fdkankan.common.util.WebUtil;
+//import com.fdkankan.common.exception.BusinessException;
+//import com.fdkankan.feign.TietaFeignClient;
+//import com.fdkankan.feign.WS4AServiceClient;
+//import com.fdkankan.scene.entity.SceneViewLog;
+//import com.fdkankan.scene.service.SceneViewLogService;
+//import lombok.extern.log4j.Log4j2;
+//import org.aspectj.lang.JoinPoint;
+//import org.aspectj.lang.annotation.Aspect;
+//import org.aspectj.lang.annotation.Before;
+//import org.aspectj.lang.annotation.Pointcut;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.beans.factory.annotation.Value;
+//import org.springframework.core.annotation.Order;
+//import org.springframework.stereotype.Component;
+//import org.springframework.web.context.request.RequestContextHolder;
+//import org.springframework.web.context.request.ServletRequestAttributes;
+//
+//import javax.annotation.Resource;
+//import javax.servlet.http.HttpServletRequest;
+//import java.io.IOException;
+//import java.util.Date;
+//import java.util.HashMap;
+//import java.util.Map;
+//
+//@Log4j2
+//@Aspect
+//@Component
+//@Order(101)
+//public class ViewLogAspect {
+//
+//	@Value("${spring.cloud.nacos.discovery.access-key}")
+//	private String accessKey;
+//
+//	@Value("${tieta.checkToken.syscode}")
+//	private String syscode;
+//	@Value("${gateway.key:6#dPz>3F}")
+//	private String gatewayKey;
+//	@Value("${gateway.url}")
+//	private String gatewayUrl;
+//	@Resource
+//	private TietaFeignClient tietaFeignClient;
+//	@Autowired
+//	private WS4AServiceClient ws4AServiceClient;
+//	@Autowired
+//	private SceneViewLogService sceneViewLogService;
+//
+//	@Pointcut("@annotation(com.fdkankan.scene.annotation.VrLog)")
+//	public void checkCooperationPermit() {
+//	}
+//
+//	/**
+//	 * 前置通知 用于判断用户协作场景是否有协作权限
+//	 *
+//	 * @param joinPoint
+//	 *            切点
+//	 * @throws IOException
+//	 */
+//	@Before("checkCooperationPermit()")
+//	public void doBefore(JoinPoint joinPoint) throws Exception {
+//		log.info("记录日志开始");
+//		HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
+//		boolean mobileDevice = UserAgentUtils.isMobileDevice(request);
+//		String userAgent = "pc";
+//		if(mobileDevice){
+//			userAgent = "mobile";
+//		}
+//
+//		//请求4a接口获取用户信息
+//		Map<String, Object> parameter = WebUtil.getParameter(joinPoint, request);
+//		String acctId = (String) parameter.get("acctId");
+//		String token = (String) parameter.get("token");
+//		String num = (String) parameter.get("num");
+//        String syscode = (String) parameter.get("syscode");
+//
+//		//token校验
+//		JSONObject checkProwadaTokenParam = new JSONObject();
+//		JSONObject params = new JSONObject();
+//		params.put("SYSCODE", syscode);
+//		params.put("ACCTID", acctId);
+//		params.put("TOKEN", token);
+//		String encode = ThreeDESUtil.encode(JSON.toJSONString(params), gatewayKey);
+//		checkProwadaTokenParam.put("args", encode);
+//		JSONObject result = ws4AServiceClient.checkProwadaToken(checkProwadaTokenParam);
+//		log.info("场景:{},4A校验token结果:{}", num, result);
+//		if(!"SUCCESS".equals(result.getString("resultStat"))){
+//			throw new BusinessException(4000, "4A鉴权失败");
+//		}
+//		String data = result.getString("data");
+//		JSONObject dataObj = JSONObject.parseObject(data);
+//		if(!"0".equals(dataObj.getString("RSP"))){
+//			throw new BusinessException(4000, "4A鉴权失败:" + dataObj.getString("ERRDESC"));
+//		}
+//		String USERCODE = dataObj.getString("USERCODE");
+////		String SERVICEID = dataObj.getString("SERVICEID");
+//		String ORGCODE = dataObj.getString("ORGCODE");
+//
+//		//查询用户信息
+//		JSONObject param2 = new JSONObject();
+//		param2.put("SERVICEID", syscode);
+//		param2.put("LOGINACCOUNT", USERCODE);
+//		param2.put("TOKEN", token);
+//		encode = ThreeDESUtil.encode(JSON.toJSONString(param2), gatewayKey);
+//		Map<String, Object> param = new HashMap<>();
+//		param.put("args", encode);
+//		String queryLoginUserInfoResp = HttpUtil.get(gatewayUrl + "/QUERY4A/user/queryLoginUserInfo?args=" + encode);
+//		result = JSON.parseObject(queryLoginUserInfoResp);
+////		result = ws4AServiceClient.queryLoginUserInfo(encode);
+//		log.info("场景:{},4A查询用户信息结果:{}", num, result);
+//		if(!"SUCCESS".equals(result.getString("resultStat"))){
+//			throw new BusinessException(4000, "4A查询用户信息失败");
+//		}
+//		data = result.getString("data");
+//		dataObj = JSONObject.parseObject(data);
+//		if(!"0".equals(dataObj.getString("RSP"))){
+//			throw new BusinessException(4000, "4A查询用户信息失败:" + dataObj.getString("ERRDESC"));
+//		}
+//		String nickName = dataObj.getString("LOGINNAME");
+//
+//		JSONObject param3 = new JSONObject();
+//		param3.put("SERVICEID", syscode);
+//		param3.put("QUERYMODE", "3");
+//		param3.put("ORGCODE", ORGCODE);
+//		param3.put("TOKEN", token);
+//		encode = ThreeDESUtil.encode(JSON.toJSONString(param3), gatewayKey);
+////		result = ws4AServiceClient.queryOrgs(encode);
+//		String queryOrgsResp = HttpUtil.get(gatewayUrl + "/QUERY4A/query/queryOrgs?args=" + encode);
+//		result = JSON.parseObject(queryOrgsResp);
+//		log.info("场景:{},4A查询用户组织结果:{}", num, result);
+//		if(!"SUCCESS".equals(result.getString("resultStat"))){
+//			throw new BusinessException(4000, "查询用户组织失败");
+//		}
+//		data = result.getString("data");
+//		dataObj = JSONObject.parseObject(data);
+//		if(!"0".equals(dataObj.getString("RSP"))){
+//			throw new BusinessException(4000, "4A查询用户组织失败:" + dataObj.getString("ERRDESC"));
+//		}
+//		JSONObject ORGS = dataObj.getJSONObject("ORGS");
+//		JSONArray ORG = ORGS.getJSONArray("ORG");
+//		JSONObject ORG1 = ORG.getJSONObject(0);
+//		String ORGNAMEPATH = ORG1.getString("ORGNAMEPATH");
+//
+//		//写入表
+//		SceneViewLog sceneViewLog = new SceneViewLog();
+//		sceneViewLog.setOrgNamePath(ORGNAMEPATH);
+//		sceneViewLog.setFuncName("VR全景");
+//		sceneViewLog.setFuncDesc("VR全景试图");
+//		sceneViewLog.setUserName(USERCODE);
+//		sceneViewLog.setNickName(nickName);
+//		sceneViewLog.setCreateTime(new Date());
+//		sceneViewLog.setTerminalType(userAgent);
+//		sceneViewLogService.save(sceneViewLog);
+//	}
+//
+//	public static void main(String[] args) {
+//		JSONObject param2 = new JSONObject();
+//		param2.put("SERVICEID", "CHNTRMS2");
+//		param2.put("LOGINACCOUNT", "wx-sunql3");
+//		param2.put("TOKEN", "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJSRVMiLCJpc3MiOiJXUzRBIiwiZXhwIjoxNzMzMzEwNjY1LCJOQU5PU0VDT05EIjo0MjAxNTczODIzODYyMjgzOH0.sQR4qkTeRZEOQMI-Rjck35dFswoOMYHsGSuNcXH45TI");
+//		String encode = ThreeDESUtil.encode(JSON.toJSONString(param2), "6#dPz>3F");
+//		System.out.println(encode);
+//	}
+//
+//}

+ 12 - 0
src/main/java/com/fdkankan/scene/controller/BaseController.java

@@ -26,4 +26,16 @@ public class BaseController {
         return 0;
     }
 
+    public String getUpTime(){
+        Cookie[] cookies = request.getCookies();
+        for (Cookie cookie : cookies) {
+            String name = cookie.getName();
+            if(!name.equals("upTimeKey")){
+                continue;
+            }
+            return cookie.getValue();
+        }
+        return null;
+    }
+
 }

+ 2 - 1
src/main/java/com/fdkankan/scene/controller/OssFileMappingController.java

@@ -25,6 +25,7 @@ public class OssFileMappingController {
     @GetMapping("/**")
     public void outFileByKey2(
             @CookieValue(name = "subgroup") Integer subgroup,
+            @CookieValue(name = "upTimeKey") String upTime,
 //            @RequestParam(value = "subgroup", defaultValue = "0") Integer subgroup,
                               HttpServletRequest request,
                               HttpServletResponse response) throws IOException {
@@ -42,7 +43,7 @@ public class OssFileMappingController {
 //            }
 //            key = keyBuilder.toString();
 //        }
-        sceneService.outFileByKey2(key, subgroup, response);
+        sceneService.outFileByKey2(key, subgroup, upTime, response);
     }
 
 

+ 2 - 1
src/main/java/com/fdkankan/scene/controller/SceneController.java

@@ -73,7 +73,7 @@ public class SceneController extends BaseController{
 
     @GetMapping("/file")
     public void outFileByKey2(String key, HttpServletResponse response) throws IOException {
-        sceneService.outFileByKey2(key, null, response);
+        sceneService.outFileByKey2(key, null, null, response);
     }
 
 
@@ -85,6 +85,7 @@ public class SceneController extends BaseController{
     @PostMapping(value = "/check/key")
     public ResultData checkKey(@RequestBody @Validated SceneCheckKeyParamVO param) throws Exception {
         param.setSubgroup(this.getSubgroup());
+        param.setUpTimeKey(this.getUpTime());
         return sceneEditInfoService.checkKey(param);
     }
 

+ 36 - 396
src/main/java/com/fdkankan/scene/controller/SceneEditController.java

@@ -61,6 +61,7 @@ public class SceneEditController extends BaseController{
     @PostMapping(value = "/base/save")
     public ResultData saveScene(@RequestBody @Validated SceneEditInfoParamVO param){
         param.setSubgroup(this.getSubgroup());
+        param.setUpTimeKey(this.getUpTime());
         return ResultData.ok(sceneEditInfoService.saveScene(param));
     }
 //
@@ -91,6 +92,7 @@ public class SceneEditController extends BaseController{
     @PostMapping(value = "/saveInitialPage")
     public ResultData saveInitialPage(@RequestBody @Validated FileNameAndDataParamVO param) throws Exception {
         param.setSubgroup(this.getSubgroup());
+        param.setUpTimeKey(this.getUpTime());
         return sceneProService.saveInitialPage(param);
     }
 
@@ -105,6 +107,7 @@ public class SceneEditController extends BaseController{
     @PostMapping(value = "/tag/save")
     public ResultData saveTag(@RequestBody @Validated SaveTagsParamVO param) throws Exception {
         param.setSubgroup(this.getSubgroup());
+        param.setUpTimeKey(this.getUpTime());
         return sceneProService.addOrUpdateTag(param);
     }
 
@@ -119,6 +122,7 @@ public class SceneEditController extends BaseController{
     @PostMapping(value = "/tag/delete")
     public ResultData deleteTag(@RequestBody @Validated DeleteHotParamVO param) throws Exception {
         param.setSubgroup(this.getSubgroup());
+        param.setUpTimeKey(this.getUpTime());
         return sceneProService.deleteTag(param);
     }
 
@@ -134,7 +138,8 @@ public class SceneEditController extends BaseController{
     @PostMapping(value = "/tag/list")
     public ResultData listTags(@RequestParam(value = "num") String num) throws Exception {
         Integer subgroup = this.getSubgroup();
-        return sceneProService.listTags(num, subgroup);
+        String upTime = this.getUpTime();
+        return sceneProService.listTags(num, subgroup, upTime);
     }
 
     /**
@@ -149,6 +154,7 @@ public class SceneEditController extends BaseController{
     @PostMapping(value = "/icons/delete")
     public ResultData deleteIcons(@RequestBody @Validated DeleteHotIconParamVO param) throws Exception {
         param.setSubgroup(this.getSubgroup());
+        param.setUpTimeKey(this.getUpTime());
         return sceneProService.deleteIcons(param);
     }
 
@@ -164,6 +170,7 @@ public class SceneEditController extends BaseController{
     @PostMapping(value = "/saveRoam")
     public ResultData saveRoam(@RequestBody @Validated BaseDataParamVO param) throws Exception {
         param.setSubgroup(this.getSubgroup());
+        param.setUpTimeKey(this.getUpTime());
         return sceneProService.saveRoam(param);
     }
 
@@ -178,106 +185,9 @@ public class SceneEditController extends BaseController{
     @PostMapping(value = "/saveTagsVisible")
     public ResultData saveTagsVisible(@RequestBody @Validated SaveTagsVisibleParamVO param) throws Exception {
         param.setSubgroup(this.getSubgroup());
+        param.setUpTimeKey(this.getUpTime());
         return sceneProService.saveTagsVisible(param);
     }
-//
-//    /**
-//     * <p>
-//            下载模型
-//     * </p>
-//     * @author dengsixing
-//     * @date 2022/8/1
-//     * @param num
-//     * @return com.fdkankan.web.response.ResultData
-//     **/
-//    @CheckPermit
-//    @PostMapping(value = "/downloadModel")
-//    public ResultData downloadModel(@RequestParam("num") String num) throws Exception {
-//        return sceneProService.downloadModel(num);
-//    }
-//
-//    /**
-//     * <p>
-//            上传模型
-//     * </p>
-//     * @author dengsixing
-//     * @date 2022/8/1
-//     * @param num
-//     * @param file
-//     * @return com.fdkankan.web.response.ResultData
-//     **/
-//    @CheckPermit
-//    @PostMapping(value = "/uploadModel")
-//    public ResultData uploadModel(@RequestParam("num") String num, @RequestParam("file") MultipartFile file) throws Exception {
-//        return sceneProService.uploadModel(num, file);
-//    }
-//
-//    /**
-//     * <p>
-//     保存关联全景图
-//     * </p>
-//     * @author dengsixing
-//     * @date 2022/8/1
-//     * @param num
-//     * @param sid
-//     * @param fileName
-//     * @param file
-//     * @return com.fdkankan.web.response.ResultData
-//     **/
-//    @CheckPermit
-//    @PostMapping(value = "/linkPan/upload")
-//    public ResultData uploadLinkPan(
-//        @RequestParam(value = "num") String num,
-//        @RequestParam(value = "sid") String sid,
-//        @RequestParam(value = "fileName") String fileName,
-//        @RequestParam("file") MultipartFile file) throws Exception{
-//        return sceneEditInfoService.uploadLinkPan(num, sid, fileName, file);
-//    }
-//
-//    /**
-//     * <p>
-//     保存关联全景图
-//     * </p>
-//     * @author dengsixing
-//     * @date 2022/8/1
-//     * @param param
-//     * @return com.fdkankan.web.response.ResultData
-//     **/
-//    @CheckPermit
-//    @PostMapping(value = "/linkPan/save")
-//    public ResultData saveLinkPan(@RequestBody @Validated SaveLinkPanParamVO param) throws Exception{
-//        return sceneEditInfoService.saveLinkPan(param);
-//    }
-//
-//    /**
-//     * <p>
-//            删除场景关联
-//     * </p>
-//     * @author dengsixing
-//     * @date 2022/8/1
-//     * @param param
-//     * @return com.fdkankan.web.response.ResultData
-//     **/
-//    @CheckPermit
-//    @PostMapping(value = "/linkPan/delete")
-//    public ResultData deleteLinkPan(@RequestBody @Validated DeleteLinkPanParamVO param) throws Exception {
-//        return sceneEditInfoService.deleteLinkPan(param);
-//    }
-//
-//    /**
-//     * <p>
-//            删除场景关联图标
-//     * </p>
-//     * @author dengsixing
-//     * @date 2022/8/1
-//     * @param param
-//     * @return com.fdkankan.web.response.ResultData
-//     **/
-//    @CheckPermit
-//    @PostMapping(value = "/styles/delete")
-//    public ResultData deleteStyles(@RequestBody @Validated DeleteStylesParamVO param) throws Exception {
-//        return sceneEditInfoService.deleteStyles(param);
-//    }
 
     /**
      * <p>
@@ -291,7 +201,8 @@ public class SceneEditController extends BaseController{
     @PostMapping(value = "/linkPan/list")
     public ResultData listLinkPan(@RequestParam(value = "num") String num) throws Exception {
         Integer subgroup = this.getSubgroup();
-        return sceneEditInfoService.listLinkPan(num, subgroup);
+        String upTime = this.getUpTime();
+        return sceneEditInfoService.listLinkPan(num, subgroup, upTime);
     }
 
     /**
@@ -306,38 +217,9 @@ public class SceneEditController extends BaseController{
     @PostMapping(value = "/cad/save")
     public ResultData saveCad(@RequestBody @Validated BaseDataParamVO param) throws Exception{
         param.setSubgroup(this.getSubgroup());
+        param.setUpTimeKey(this.getUpTime());
         return sceneEditInfoService.saveCad(param);
     }
-//
-//    /**
-//     * <p>
-//     保存户型图
-//     * </p>
-//     * @author dengsixing
-//     * @date 2022/1/20
-//     * @param param
-//     * @return com.fdkankan.web.response.ResultData
-//     **/
-//    @CheckPermit
-//    @GetMapping(value = "/cad/dxf/download")
-//    public ResultData saveCadDxf(@RequestParam String num) throws Exception{
-//        return sceneEditInfoService.downloadDxf(num);
-//    }
-//
-//    /**
-//     * <p>
-//     保存户型图
-//     * </p>
-//     * @author dengsixing
-//     * @date 2022/1/20
-//     * @param param
-//     * @return com.fdkankan.web.response.ResultData
-//     **/
-//    @CheckPermit
-//    @PostMapping(value = "/cad/dxf/upload")
-//    public ResultData uploadDxf(@RequestParam MultipartFile file, @RequestParam String num) throws Exception{
-//        return sceneEditInfoService.uploadDxf(file, num);
-//    }
 
     /**
      * <p>
@@ -351,7 +233,8 @@ public class SceneEditController extends BaseController{
     @PostMapping(value = "/cad/reset")
     public ResultData resetCad(@RequestParam(value = "num") String num) throws Exception {
         Integer subgroup = this.getSubgroup();
-        return sceneEditInfoService.resetCad(num, subgroup);
+        String upTime = this.getUpTime();
+        return sceneEditInfoService.resetCad(num, subgroup, upTime);
     }
 
     /**
@@ -365,6 +248,7 @@ public class SceneEditController extends BaseController{
     @PostMapping(value = "/cad/rename")
     public ResultData renameCad(@RequestBody @Validated RenameCadParamVO param) throws IOException {
         param.setSubgroup(this.getSubgroup());
+        param.setUpTimeKey(this.getUpTime());
         return sceneEditInfoService.renameCad(param);
     }
 
@@ -381,139 +265,10 @@ public class SceneEditController extends BaseController{
     @InitEditInfo
     @GetMapping(value = "/getInfo")
     public SceneInfoVO getInfo(@Validated SceneInfoParamVO param) throws Exception{
-//        param.setSubgroup(this.getSubgroup());
         param.setReqType(SceneInfoReqType.EDIT.code());
         return sceneEditInfoService.getSceneInfo(param);
     }
-//
-//    /**
-//     * <p>
-//            上传全景图
-//     * </p>
-//     * @author dengsixing
-//     * @date 2022/2/16
-//     * @param num
-//     * @param file
-//     * @return java.util.List<java.lang.String>
-//     **/
-//    @CheckPermit
-//    @PostMapping(value = "/uploadPanorama")
-//    public ResultData uploadPanorama(@RequestParam(value = "num") String num,
-//        @RequestParam("file") MultipartFile file) throws Exception {
-//        return sceneEditInfoService.uploadPanorama(num, file);
-//    }
-//
-//    /**
-//     * <p>
-//            下载全景图
-//     * </p>
-//     * @author dengsixing
-//     * @date 2022/2/16
-//     * @return java.util.List<java.lang.String>
-//     **/
-//    @CheckPermit
-//    @PostMapping(value = "/downloadPanorama")
-//    public ResultData downloadPanorama(@RequestBody @Validated FileParamVO param) throws Exception {
-//        return sceneEditInfoService.downloadPanorama(param);
-//    }
-//
-//    /**
-//     * <p>
-//            保存视频盒子
-//     * </p>
-//     * @author dengsixing
-//     * @date 2022/2/18
-//     * @param param
-//     * @return com.fdkankan.web.response.ResultData
-//     **/
-//    @CheckPermit
-//    @PostMapping(value = "/video/box/save")
-//    public ResultData saveVideoBox(@RequestBody @Validated FileNameAndDataParamVO param) throws Exception {
-//        return sceneEditInfoService.saveVideoBox(param);
-//    }
-//
-//    /**
-//     * <p>
-//            删除视频盒子
-//     * </p>
-//     * @author dengsixing
-//     * @date 2022/2/18
-//     * @param param
-//     * @return com.fdkankan.web.response.ResultData
-//     **/
-//    @CheckPermit
-//    @PostMapping(value = "/video/box/delete")
-//    public ResultData deleteVideoBox(@RequestBody @Validated DeleteSidParamVO param) throws Exception {
-//        return sceneEditInfoService.deleteVideoBox(param);
-//    }
-//
-//    /**
-//     * <p>
-//     保存空间贴图
-//     * </p>
-//     * @author dengsixing
-//     * @date 2022/2/18
-//     * @param param
-//     * @return com.fdkankan.web.response.ResultData
-//     **/
-//    @CheckPermit
-//    @PostMapping(value = "/photo/box/save")
-//    public ResultData savePhotoBox(@RequestBody @Validated BaseDataParamVO param) throws Exception {
-//        return sceneEditInfoService.saveBoxPhoto(param);
-//    }
-//
-//    /**
-//     * <p>
-//     删除空间贴图
-//     * </p>
-//     * @author dengsixing
-//     * @date 2022/2/18
-//     * @param param
-//     * @return com.fdkankan.web.response.ResultData
-//     **/
-//    @CheckPermit
-//    @PostMapping(value = "/photo/box/delete")
-//    public ResultData deletePhotoBox(@RequestBody @Validated DeleteSidParamVO param) throws Exception {
-//        return sceneEditInfoService.deleteBoxPhoto(param);
-//    }
-//
-//
-//    /**
-//     * <p>
-//        下载视频
-//     * </p>
-//     * @author dengsixing
-//     * @date 2022/2/23
-//     * @param param
-//     * @return com.fdkankan.scene.vo.DownloadVO
-//     **/
-//    @CheckPermit
-//    @PostMapping(value = "/downloadBallScreenVideo")
-//    public DownloadVO downloadBallScreenVideo(@RequestBody @Validated BallScreenVideoParamVO param){
-//        return sceneEditInfoService.downloadBallScreenVideo(param);
-//    }
-//
-//    /**
-//     * <p>
-//            上传视频
-//     * </p>
-//     * @author dengsixing
-//     * @date 2022/2/23
-//     * @param num
-//     * @param fileName
-//     * @param file
-//     * @return com.fdkankan.web.response.ResultData
-//     **/
-//    @CheckPermit
-//    @PostMapping(value = "/uploadBallScreenVideo")
-//    public ResultData uploadBallScreenVideo(
-//            @RequestParam("num") String num,
-//            @RequestParam("fileName") String fileName,
-//            @RequestParam("file") MultipartFile file) throws Exception {
-//        return sceneEditInfoService.uploadBallScreenVideo(num, fileName, file);
-//    }
 
-//    @CheckPermit
     @RequestMapping(value = "/upload/files", method = RequestMethod.POST)
     public String uploads(@RequestParam(value = "base64",required = false) String base64,
         @RequestParam(value = "fileName",required = false) String fileName,
@@ -523,23 +278,10 @@ public class SceneEditController extends BaseController{
         @RequestParam(value = "type",required = false,defaultValue = "1") Integer type,
         @RequestParam(value = "uploadPath",required = false) String uploadPath) throws Exception {
         Integer subgroup = this.getSubgroup();
-        return sceneUploadService.uploads(base64,fileName,bizType,files,num,type,uploadPath, subgroup);
+        String upTime = this.getUpTime();
+        return sceneUploadService.uploads(base64,fileName,bizType,files,num,type,uploadPath, subgroup, upTime);
     }
 
-//    /**
-//     * <p>
-//     用户自定义上传文本内容上传
-//     * </p>
-//     * @author dengsixing
-//     * @date 2022/8/1
-//     * @param param
-//     * @return java.lang.String
-//     **/
-//    @RequestMapping(value = "/upload/content", method = RequestMethod.POST)
-//    public String uploadContent(@RequestBody @Validated UploadContentParamVO param) throws Exception {
-//        return sceneUploadService.uploadContent(param);
-//    }
-//
     /**
      * <p>
             删除文件
@@ -552,34 +294,9 @@ public class SceneEditController extends BaseController{
     @PostMapping("/delete/file")
     public ResultData delete(@RequestBody @Validated DeleteFileParamVO paramVO) throws Exception{
         paramVO.setSubgroup(this.getSubgroup());
+        paramVO.setUpTimeKey(this.getUpTime());
         return sceneUploadService.delete(paramVO);
     }
-//
-//    /**
-//     * <p>
-//     场景同步
-//     * </p>
-//     * @author dengsixing
-//     * @date 2022/8/1
-//     * @param num
-//     * @param type
-//     * @param floorPlanJson
-//     * @param ajkJson
-//     * @param cameraJson
-//     * @param files
-//     * @return com.fdkankan.web.response.ResultData
-//     **/
-//    @CheckPermit
-//    @PostMapping(value = "/sceneSync")
-//    public ResultData sceneSync(
-//        @RequestParam("num") String num,
-//        @RequestParam(value = "type", defaultValue = "ajk") String type,
-//        @RequestParam("floorPlanJson") String floorPlanJson,
-//        @RequestParam("ajkJson") String ajkJson,
-//        @RequestParam("cameraJson") String cameraJson,
-//        @RequestParam("files") MultipartFile[] files) throws Exception{
-//        return sceneEditInfoService.sceneSync(num, type, floorPlanJson, ajkJson, cameraJson, files);
-//    }
 
     /**
      * <p>
@@ -592,27 +309,8 @@ public class SceneEditController extends BaseController{
      **/
     @PostMapping(value = "/getAuth")
     public SceneAuthVO getAuth(@RequestParam("num") String num) throws Exception{
-//        Integer subgroup = this.getSubgroup();
         return sceneEditService.getAuth(num);
     }
-//
-//    /**
-//     * <p>
-//            上传国际化文件
-//     * </p>
-//     * @author dengsixing
-//     * @date 2022/4/11
-//     * @param param
-//     * @return com.fdkankan.web.response.ResultData
-//     **/
-//    @PostMapping(value = "/locales")
-//    public ResultData locales(@RequestBody @Validated LocalesParamVO param) throws Exception {
-//        if("pro".equals(env)){
-//            throw new BusinessException(ErrorCode.HAVE_NO_RIGHT);
-//        }
-//        return sceneEditService.locales(param);
-//    }
-//
     /**
      * <p>
      保存导览
@@ -624,6 +322,7 @@ public class SceneEditController extends BaseController{
     @PostMapping(value = "/tour/save")
     public ResultData saveTour(@RequestBody @Validated BaseDataParamVO param) throws Exception{
         param.setSubgroup(this.getSubgroup());
+        param.setUpTimeKey(this.getUpTime());
         return sceneEditService.saveTour(param);
     }
 
@@ -639,19 +338,10 @@ public class SceneEditController extends BaseController{
     @PostMapping(value = "/tour/delete")
     public ResultData deleteTour(@RequestBody @Validated BaseSceneParamVO param) throws Exception{
         param.setSubgroup(this.getSubgroup());
+        param.setUpTimeKey(this.getUpTime());
         return sceneEditService.deleteTour(param);
     }
 
-//    @PostMapping(value = "/tour/video/upload")
-//    public ResultData uploadTourVideo(@RequestParam("num") String num, @RequestParam("file") MultipartFile file) throws Exception {
-//        return downloadTourVideoService.uploadTourVideo(num, file);
-//    }
-//
-//    @PostMapping(value = "/tour/video/download")
-//    public ResultData downloadTourVideo(@RequestParam("num") String num) throws Exception {
-//        return downloadTourVideoService.downloadTourVideo(num);
-//    }
-
     /**
      * <p>
      添加马赛克
@@ -664,6 +354,7 @@ public class SceneEditController extends BaseController{
     @PostMapping(value = "/mosaics/add")
     public ResultData addMosaics(@RequestBody @Validated BaseDataParamVO param) throws Exception{
         param.setSubgroup(this.getSubgroup());
+        param.setUpTimeKey(this.getUpTime());
         return sceneEditInfoService.addMosaics(param);
     }
 
@@ -679,6 +370,7 @@ public class SceneEditController extends BaseController{
     @PostMapping(value = "/mosaics/delete")
     public ResultData deleteMosaics(@RequestBody @Validated DeleteMosaicParamVO param) throws Exception{
         param.setSubgroup(this.getSubgroup());
+        param.setUpTimeKey(this.getUpTime());
         return sceneEditInfoService.deleteMosaics(param);
     }
 
@@ -694,7 +386,8 @@ public class SceneEditController extends BaseController{
     @PostMapping(value = "/mosaics/list")
     public ResultData getMosaicList(@RequestBody @Validated BaseSceneParamVO param) throws Exception{
         param.setSubgroup(this.getSubgroup());
-        return ResultData.ok(sceneEditInfoService.getMosaicList(param.getNum(), param.getSubgroup()));
+        param.setUpTimeKey(this.getUpTime());
+        return ResultData.ok(sceneEditInfoService.getMosaicList(param.getNum(), param.getSubgroup(), param.getUpTimeKey()));
     }
 
     /**
@@ -709,6 +402,7 @@ public class SceneEditController extends BaseController{
     @PostMapping(value = "/waterMark/add")
     public ResultData addWaterMark(@RequestBody @Validated BaseFileParamVO param) throws Exception{
         param.setSubgroup(this.getSubgroup());
+        param.setUpTimeKey(this.getUpTime());
         return sceneEditInfoService.addWaterMark(param);
     }
 
@@ -724,6 +418,7 @@ public class SceneEditController extends BaseController{
     @PostMapping(value = "/waterMark/delete")
     public ResultData deleteWaterMark(@RequestBody @Validated BaseFileParamVO param) throws Exception{
         param.setSubgroup(this.getSubgroup());
+        param.setUpTimeKey(this.getUpTime());
         return sceneEditInfoService.deleteWaterMark(param);
     }
 
@@ -736,6 +431,7 @@ public class SceneEditController extends BaseController{
     @PostMapping(value = "/filter/save")
     public ResultData saveFilter(@RequestBody @Validated SaveFiltersParamVO param) throws Exception{
         param.setSubgroup(this.getSubgroup());
+        param.setUpTimeKey(this.getUpTime());
         return sceneEditInfoService.saveFilter(param);
     }
 
@@ -748,36 +444,9 @@ public class SceneEditController extends BaseController{
     @PostMapping(value = "/filter/list")
     public ResultData listFilter(@RequestBody @Validated BaseSceneParamVO param) throws Exception{
         param.setSubgroup(this.getSubgroup());
+        param.setUpTimeKey(this.getUpTime());
         return sceneEditInfoService.listFilter(param);
     }
-//
-//    /**
-//     * <p>
-//     添加监控
-//     * </p>
-//     * @author dengsixing
-//     * @date 2022/9/20
-//     * @param param
-//     * @return com.fdkankan.common.response.ResultData
-//     **/
-//    @CheckPermit
-//    @PostMapping("/surveillance/save")
-//    ResultData saveSurveillance(@RequestBody @Validated SurveillanceParamVO param) throws Exception {
-//        return surveillanceService.saveSurveillance(param);
-//    }
-//
-//    @CheckPermit
-//    @PostMapping("/surveillance/delete")
-//    public ResultData deleteSurveillance(@RequestBody @Validated BaseSidParamVO param) throws IOException {
-//        return surveillanceService.deleteSurveillance(param);
-//    }
-//
-//    @CheckPermit
-//    @PostMapping("/surveillance/list")
-//    public ResultData listSurveillance(@RequestBody @Validated BaseSceneParamVO param){
-//        return ResultData.ok(surveillanceService.listSurveillance(param.getNum()));
-//    }
-//
     /**
      * <p>
      上传空间模型
@@ -793,7 +462,7 @@ public class SceneEditController extends BaseController{
         @RequestParam(value = "num") String num,
         @RequestParam(value = "sid") String sid,
         @RequestParam(value = "file") MultipartFile file) throws Exception {
-        return boxModelService.uploadBoxModel(num, this.getSubgroup(), sid, file);
+        return boxModelService.uploadBoxModel(num, this.getSubgroup(), this.getUpTime(),  sid, file);
     }
 
     /**
@@ -806,6 +475,7 @@ public class SceneEditController extends BaseController{
     @PostMapping("/model/box/save")
     public ResultData saveBoxModel(@RequestBody @Validated BaseJsonDataParamVO param) throws Exception {
         param.setSubgroup(this.getSubgroup());
+        param.setUpTimeKey(this.getUpTime());
         return boxModelService.saveBoxModel(param);
     }
 
@@ -818,26 +488,10 @@ public class SceneEditController extends BaseController{
      **/
     @PostMapping("/model/box/delete")
     public ResultData delBoxModel(@RequestBody @Validated DeleteSidParamVO param) throws Exception {
+        param.setSubgroup(this.getSubgroup());
+        param.setUpTimeKey(this.getUpTime());
         return boxModelService.deleteBoxModel(param);
     }
-//
-//    /**
-//     * 上传二维码和分享的logo
-//     * @return
-//     */
-//    @PostMapping(value = "/uploadShareLogo")
-//    public ResultData uploadShareLogo(@RequestParam("num") String num, @RequestParam("file") MultipartFile file) throws Exception {
-//        return scenePlusService.uploadShareLogo(num, file);
-//    }
-//
-//    /**
-//     * 获取编辑器版本信息
-//     * @return
-//     */
-//    @GetMapping("/getServiceUpTip")
-//    public ResultData getServiceUpTip(){
-//        return sceneEditService.getServiceUpTip();
-//    }
 
     /**
      * 保存或者修改指示牌
@@ -847,6 +501,7 @@ public class SceneEditController extends BaseController{
     @PostMapping("/billboards/save")
     public ResultData saveBillboards(@RequestBody @Validated BaseJsonArrayParamVO param) throws Exception {
         param.setSubgroup(this.getSubgroup());
+        param.setUpTimeKey(this.getUpTime());
         return sceneEditInfoExtService.saveBillboards(param);
     }
 
@@ -858,6 +513,7 @@ public class SceneEditController extends BaseController{
     @PostMapping("/billboards/delete")
     public ResultData deleteBillboards(@RequestBody @Validated DeleteSidListParamVO param) throws Exception {
         param.setSubgroup(this.getSubgroup());
+        param.setUpTimeKey(this.getUpTime());
         return sceneEditInfoExtService.deleteBillboards(param);
     }
 
@@ -869,6 +525,7 @@ public class SceneEditController extends BaseController{
     @PostMapping("/billboards/list")
     public ResultData deleteBillboards(@RequestBody @Validated BaseSceneParamVO param) throws Exception {
         param.setSubgroup(this.getSubgroup());
+        param.setUpTimeKey(this.getUpTime());
         return ResultData.ok(sceneEditInfoExtService.listBillboards(param));
     }
 
@@ -881,26 +538,9 @@ public class SceneEditController extends BaseController{
     @PostMapping("/billboards/styles/delete")
     public ResultData deleteBillboards(@RequestBody @Validated DeleteStylesParamVO param) throws Exception {
         param.setSubgroup(this.getSubgroup());
+        param.setUpTimeKey(this.getUpTime());
         return ResultData.ok(sceneEditInfoExtService.deleteBillboardsStyles(param));
     }
-//
-//    @CheckPermit
-//    @PostMapping(value = "/cutModel/save")
-//    public ResultData saveCutModel(@RequestBody @Validated BaseJsonArrayParamVO param) throws Exception {
-//        return cutModelService.saveCutModel(param);
-//    }
-//
-//    @CheckPermit
-//    @PostMapping(value = "/cutModel/list")
-//    public ResultData listCutModel(@RequestBody @Validated BaseSceneParamVO param) throws Exception {
-//        return ResultData.ok(cutModelService.listCutModel(param));
-//    }
-//
-//    @CheckPermit
-//    @PostMapping(value = "/cutModel/delete")
-//    public ResultData deleteCutModel(@RequestBody @Validated DeleteSidListParamVO param) throws Exception {
-//        return cutModelService.deleteCutModel(param);
-//    }
 
 
 

+ 4 - 1
src/main/java/com/fdkankan/scene/controller/SceneEditDrawController.java

@@ -23,12 +23,14 @@ public class SceneEditDrawController extends BaseController{
     @GetMapping(value = "/list")
     public ResultData listSceneDraw(@RequestParam("num") String num) throws Exception {
         Integer subgroup = this.getSubgroup();
-        return ResultData.ok(sceneDrawService.listSceneDraw(num, subgroup));
+        String upTime = this.getUpTime();
+        return ResultData.ok(sceneDrawService.listSceneDraw(num, subgroup, upTime));
     }
 
     @PostMapping(value = "/save")
     public ResultData saveSceneDraw(@RequestBody @Validated BaseJsonArrayParamVO param) throws Exception {
         param.setSubgroup(this.getSubgroup());
+        param.setUpTimeKey(this.getUpTime());
         sceneDrawService.saveSceneDraw(param);
         return ResultData.ok();
     }
@@ -36,6 +38,7 @@ public class SceneEditDrawController extends BaseController{
     @PostMapping(value = "/delete")
     public ResultData deleteSceneDraw(@RequestBody @Validated DeleteSidListParamVO param) throws Exception {
         param.setSubgroup(this.getSubgroup());
+        param.setUpTimeKey(this.getUpTime());
         sceneDrawService.deleteSceneDraw(param);
         return ResultData.ok();
     }

+ 5 - 0
src/main/java/com/fdkankan/scene/entity/Scene.java

@@ -78,6 +78,11 @@ public class Scene extends Model<Scene> {
     @TableField("EXTINGUISHER")
     private Integer extinguisher;
 
+    @TableField("UP_TIME_KEY")
+    private String upTimeKey;
+
+    @TableField("CACHE_KEY_HAS_TIME")
+    private Integer cacheKeyHasTime;
 
 
     @Override

+ 3 - 0
src/main/java/com/fdkankan/scene/entity/SceneFileMapping.java

@@ -44,6 +44,9 @@ public class SceneFileMapping extends Model<SceneFileMapping> {
     @TableField("SUBGROUP")
     private Integer subgroup;
 
+    @TableField("UP_TIME")
+    private String upTime;
+
 
     @Override
     public Serializable pkVal() {

+ 5 - 5
src/main/java/com/fdkankan/scene/service/FYunFileService.java

@@ -4,14 +4,14 @@ import java.io.IOException;
 
 public interface FYunFileService {
 
-    String getFileContent(String key, Integer subgroup) throws IOException;
+    String getFileContent(String key, Integer subgroup, String upTime) throws IOException;
 
-    void uploadFile(String num, Integer subgroup, byte[] data, String key);
+    void uploadFile(String num, Integer subgroup, String upTime, byte[] data, String key);
 
-    void uploadFile(String num, Integer subgroup, String path, String key);
+    void uploadFile(String num, Integer subgroup, String upTime, String path, String key);
 
-    void deleteFile(String num, Integer subgroup, String key);
+    void deleteFile(String num, Integer subgroup, String upTime, String key);
 
-    String downloadFile(String num, Integer subgroup, String key, String dir, String fileName);
+    String downloadFile(String num, Integer subgroup, String upTime, String key, String dir, String fileName);
 
 }

+ 1 - 1
src/main/java/com/fdkankan/scene/service/IBoxModelService.java

@@ -23,7 +23,7 @@ public interface IBoxModelService {
      * @return ResutData
      * @throws Exception
      */
-    ResultData uploadBoxModel(String num, Integer subgroup, String sid, MultipartFile file) throws Exception;
+    ResultData uploadBoxModel(String num, Integer subgroup, String upTime, String sid, MultipartFile file) throws Exception;
 
     ResultData saveBoxModel(BaseJsonDataParamVO param) throws Exception;
 

+ 2 - 2
src/main/java/com/fdkankan/scene/service/ISceneDrawService.java

@@ -11,10 +11,10 @@ public interface ISceneDrawService {
 
     void saveSceneDraw(BaseJsonArrayParamVO param) throws Exception;
 
-    List<JSONObject> listSceneDraw(String num, Integer subgroup) throws Exception;
+    List<JSONObject> listSceneDraw(String num, Integer subgroup, String upTime) throws Exception;
 
     void deleteSceneDraw(DeleteSidListParamVO param) throws Exception;
 
-    void publicSceneDraw(String sceneNum, Integer subgroup) throws IOException;
+    void publicSceneDraw(String sceneNum, Integer subgroup, String upTime, Integer cacheKeyHasTime) throws IOException;
 
 }

+ 1 - 1
src/main/java/com/fdkankan/scene/service/ISceneProService.java

@@ -21,7 +21,7 @@ public interface ISceneProService{
 
     ResultData deleteIcons(DeleteHotIconParamVO param) throws Exception;
 
-    ResultData listTags(String num, Integer subgroup) throws Exception;
+    ResultData listTags(String num, Integer subgroup, String upTime) throws Exception;
 
     ResultData saveRoam(BaseDataParamVO param) throws Exception;
 

+ 1 - 1
src/main/java/com/fdkankan/scene/service/ISceneUploadService.java

@@ -15,7 +15,7 @@ import org.springframework.web.multipart.MultipartFile;
 public interface ISceneUploadService{
 
     String uploads(String imgData, String fileName,String blzType,MultipartFile[] files,
-        String sceneCode, Integer type, String uploadPath, Integer subgroup) throws Exception;
+        String sceneCode, Integer type, String uploadPath, Integer subgroup, String upTime) throws Exception;
 
     ResultData delete(DeleteFileParamVO param) throws Exception;
 //

+ 1 - 1
src/main/java/com/fdkankan/scene/service/SceneEditInfoExtService.java

@@ -22,7 +22,7 @@ public interface SceneEditInfoExtService extends IService<SceneEditInfoExt> {
 
     SceneEditInfoExt getByEditInfoId(long editInfoId);
 
-    void updateToursByNum(String num, Integer subgroup, Integer tours);
+    void updateToursByNum(String num, Integer subgroup, String upTime, Integer tours);
 
     ResultData saveBillboards(BaseJsonArrayParamVO param) throws Exception;
 

+ 5 - 5
src/main/java/com/fdkankan/scene/service/SceneEditInfoService.java

@@ -38,7 +38,7 @@ public interface SceneEditInfoService extends IService<SceneEditInfo> {
 //
 //    ResultData downloadDxf(String num) throws Exception;
 
-    ResultData resetCad(String num, Integer subgroup) throws IOException;
+    ResultData resetCad(String num, Integer subgroup, String upTime) throws IOException;
 
     ResultData renameCad(RenameCadParamVO param) throws IOException;
 //
@@ -46,13 +46,13 @@ public interface SceneEditInfoService extends IService<SceneEditInfo> {
 
     void upgradeVersionAndImgVersionById(Long id);
 
-    void upgradeSceneJsonVersion(String num, Integer subgroup, int version, Integer imgVersion) throws IOException ;
+    void upgradeSceneJsonVersion(String num, Integer subgroup, String upTime, Integer cacheKeyHasTime, int version, Integer imgVersion) throws IOException ;
 //
 //    ResultData uploadPanorama(String num, MultipartFile file) throws Exception;
 //
 //    ResultData downloadPanorama(FileParamVO param) throws Exception;
 
-    void saveTagsToSceneEditInfo(String num, Integer subgroup, SceneEditInfo sceneEditInfo);
+    void saveTagsToSceneEditInfo(String num, Integer subgroup, String upTime, Integer cacheKeyHasTime, SceneEditInfo sceneEditInfo);
 //
 //    ResultData saveVideoBox(FileNameAndDataParamVO param) throws Exception;
 //
@@ -78,7 +78,7 @@ public interface SceneEditInfoService extends IService<SceneEditInfo> {
 //
 //    ResultData saveLinkPan(SaveLinkPanParamVO param) throws Exception;
 
-    ResultData listLinkPan(String num, Integer subgroup) throws Exception;
+    ResultData listLinkPan(String num, Integer subgroup, String upTime) throws Exception;
 //
 //    ResultData deleteLinkPan(DeleteLinkPanParamVO param) throws Exception;
 //
@@ -86,7 +86,7 @@ public interface SceneEditInfoService extends IService<SceneEditInfo> {
 
     ResultData deleteMosaics(DeleteMosaicParamVO param) throws Exception;
 
-    List<JSONObject> getMosaicList(String num, Integer subgroup) throws Exception;
+    List<JSONObject> getMosaicList(String num, Integer subgroup, String upTime) throws Exception;
 
     ResultData addWaterMark(BaseFileParamVO param) throws Exception;
 

+ 2 - 2
src/main/java/com/fdkankan/scene/service/SceneFileMappingService.java

@@ -13,8 +13,8 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface SceneFileMappingService extends IService<SceneFileMapping> {
 
-    SceneFileMapping getByKey(String key, Integer subgroup);
+    SceneFileMapping getByKey(String key, Integer subgroup, String upTime);
 
-    void delByNumAndKey(String num, Integer subgroup, String key);
+    void delByNumAndKey(String num, Integer subgroup, String upTime, String key);
 
 }

+ 7 - 2
src/main/java/com/fdkankan/scene/service/SceneService.java

@@ -13,6 +13,7 @@ import javax.websocket.server.PathParam;
 import java.io.IOException;
 import java.net.MalformedURLException;
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -28,12 +29,16 @@ public interface SceneService extends IService<Scene> {
 
     ResponseEntity<Resource> outFileByKey(String key, HttpServletResponse response) throws IOException;
 
-    void outFileByKey2(String key, Integer subgroup, HttpServletResponse response) throws IOException;
+    void outFileByKey2(String key, Integer subgroup, String upTime, HttpServletResponse response) throws IOException;
 
-    Scene getByNum(String num, Integer subgroup);
+    Scene getByNum(String num, Integer subgroup, String upTime);
 
     List<Scene> listByNum(String num, Integer subgroup);
 
     List<Scene> listByStationcode(String stationCode);
 
+    Map<String, String> listByNumLast3(String num);
+
+
+
 }

+ 11 - 29
src/main/java/com/fdkankan/scene/service/impl/BoxModelServiceImpl.java

@@ -10,48 +10,30 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.fdkankan.common.constant.ConstantFilePath;
 import com.fdkankan.common.constant.ErrorCode;
 import com.fdkankan.common.constant.OperationType;
-import com.fdkankan.common.constant.ServerCode;
 import com.fdkankan.common.constant.UploadFilePath;
 import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.util.ComputerUtil;
 import com.fdkankan.common.util.FileUtils;
 import com.fdkankan.common.util.OBJToGLBUtil;
-import com.fdkankan.fyun.face.FYunFileServiceInterface;
-import com.fdkankan.model.constants.ConstantFilePath;
-import com.fdkankan.model.constants.UploadFilePath;
-import com.fdkankan.model.utils.ComputerUtil;
 import com.fdkankan.scene.bean.BoxModelBean;
 import com.fdkankan.scene.bean.ResultData;
 import com.fdkankan.scene.entity.Scene;
 import com.fdkankan.scene.entity.SceneEditInfo;
-import com.fdkankan.scene.entity.ScenePlus;
-import com.fdkankan.scene.entity.ScenePlusExt;
 import com.fdkankan.scene.service.FYunFileService;
 import com.fdkankan.scene.service.IBoxModelService;
-import com.fdkankan.scene.service.ISceneEditInfoService;
-import com.fdkankan.scene.service.IScenePlusExtService;
-import com.fdkankan.scene.service.IScenePlusService;
 import com.fdkankan.scene.service.SceneEditInfoService;
 import com.fdkankan.scene.service.SceneService;
 import com.fdkankan.scene.vo.BaseJsonDataParamVO;
 import com.fdkankan.scene.vo.DeleteSidParamVO;
-import com.fdkankan.web.response.ResultData;
 import com.google.common.collect.Lists;
-import java.io.File;
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.Calendar;
-import java.util.Comparator;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Objects;
-import java.util.Set;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
+import java.io.File;
+import java.util.*;
 
 /**
  * <p>
@@ -73,9 +55,9 @@ public class BoxModelServiceImpl implements IBoxModelService {
     private SceneEditInfoService sceneEditInfoService;
 
     @Override
-    public ResultData uploadBoxModel(String num, Integer subgroup, String sid, MultipartFile file) throws Exception {
+    public ResultData uploadBoxModel(String num, Integer subgroup, String upTime, String sid, MultipartFile file) throws Exception {
 
-        Scene scenePlus = scenePlusService.getByNum(num, subgroup);
+        Scene scenePlus = scenePlusService.getByNum(num, subgroup, upTime);
         if(Objects.isNull(scenePlus)){
             throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
         }
@@ -115,7 +97,7 @@ public class BoxModelServiceImpl implements IBoxModelService {
         }
 
         //上传glb
-        fYunFileService.uploadFile(num, scenePlus.getSubgroup(), glbPath, String.format(UploadFilePath.USER_VIEW_PATH, num) + "boxModels/" + sid + ".glb");
+        fYunFileService.uploadFile(num, scenePlus.getSubgroup(), upTime, glbPath, String.format(UploadFilePath.USER_VIEW_PATH, num) + "boxModels/" + sid + ".glb");
 
         return ResultData.ok(sid + ".glb");
     }
@@ -132,14 +114,14 @@ public class BoxModelServiceImpl implements IBoxModelService {
         if(StrUtil.isEmpty(sid)){
             throw new BusinessException(ErrorCode.PARAM_REQUIRED);
         }
-        Scene scenePlus = scenePlusService.getByNum(param.getNum(), param.getSubgroup());
+        Scene scenePlus = scenePlusService.getByNum(param.getNum(), param.getSubgroup(), param.getUpTimeKey());
         if(Objects.isNull(scenePlus))
             throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
 
         SceneEditInfo sceneEditInfo = sceneEditInfoService.getByScenePlusId(scenePlus.getId());
 
         //生成boxVideos数据
-        String boxPhotos = this.createBoxModels(param.getNum(), param.getSubgroup(), sid, data, sceneEditInfo, OperationType.ADDORUPDATE.code());
+        String boxPhotos = this.createBoxModels(param.getNum(), param.getSubgroup(), param.getUpTimeKey(), sid, data, sceneEditInfo, OperationType.ADDORUPDATE.code());
 
         //更新数据库
         this.updateBoxModels(sceneEditInfo, boxPhotos);
@@ -150,14 +132,14 @@ public class BoxModelServiceImpl implements IBoxModelService {
     @Override
     public ResultData deleteBoxModel(DeleteSidParamVO param) throws Exception {
 
-        Scene scenePlus = scenePlusService.getByNum(param.getNum(), param.getSubgroup());
+        Scene scenePlus = scenePlusService.getByNum(param.getNum(), param.getSubgroup(), param.getUpTimeKey());
         if(Objects.isNull(scenePlus))
             throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
 
         SceneEditInfo sceneEditInfo = sceneEditInfoService.getByScenePlusId(scenePlus.getId());
 
         //根据sid移除json
-        String boxModels = this.createBoxModels(param.getNum(), param.getSubgroup(), param.getSid(), null, sceneEditInfo, OperationType.DELETE.code());
+        String boxModels = this.createBoxModels(param.getNum(), param.getSubgroup(), param.getUpTimeKey(),  param.getSid(), null, sceneEditInfo, OperationType.DELETE.code());
 
         //写数据库
         this.updateBoxModels(sceneEditInfo, boxModels);
@@ -172,7 +154,7 @@ public class BoxModelServiceImpl implements IBoxModelService {
             .eq(SceneEditInfo::getId, sceneEditInfo.getId()));
     }
 
-    private String createBoxModels(String num, Integer subgroup, String sid, JSONObject data, SceneEditInfo sceneEditInfo, int type){
+    private String createBoxModels(String num, Integer subgroup, String upTime, String sid, JSONObject data, SceneEditInfo sceneEditInfo, int type){
 
         String boxModels = null;
         if(sceneEditInfo != null){
@@ -202,7 +184,7 @@ public class BoxModelServiceImpl implements IBoxModelService {
             if(CollUtil.isNotEmpty(deleteFile))
                 deleteFile.stream().forEach(key -> {
                     try {
-                        fYunFileService.deleteFile(num, subgroup, key);
+                        fYunFileService.deleteFile(num, subgroup, upTime, key);
                     } catch (Exception e) {
                         log.warn("oss删除文件失败,key:{}", key);
                     }

+ 12 - 10
src/main/java/com/fdkankan/scene/service/impl/FYunFileServiceImpl.java

@@ -31,8 +31,8 @@ public class FYunFileServiceImpl implements FYunFileService {
 
 
     @Override
-    public String getFileContent(String key, Integer subgroup) throws IOException {
-        SceneFileMapping sceneFileMapping = sceneFileMappingService.getByKey(key, subgroup);
+    public String getFileContent(String key, Integer subgroup, String upTime) throws IOException {
+        SceneFileMapping sceneFileMapping = sceneFileMappingService.getByKey(key, subgroup, upTime);
         if(Objects.isNull(sceneFileMapping)){
             return null;
         }
@@ -44,13 +44,13 @@ public class FYunFileServiceImpl implements FYunFileService {
     }
 
     @Override
-    public void uploadFile(String num, Integer subgroup, byte[] data, String key) {
+    public void uploadFile(String num, Integer subgroup, String upTime, byte[] data, String key) {
         String suffix = "." + FileUtil.getSuffix(key);
         File tempFile = FileUtil.createTempFile(UUID.fastUUID().toString(), suffix, new File("/temp"), true);
         FileUtil.writeBytes(data, tempFile);
         Map<String, String> mapping = fdfsUtil.uploadFile(tempFile.getAbsolutePath());
         //添加记录
-        SceneFileMapping sceneFileMapping =  sceneFileMappingService.getByKey(key, subgroup);
+        SceneFileMapping sceneFileMapping =  sceneFileMappingService.getByKey(key, subgroup, upTime);
         if(Objects.isNull(sceneFileMapping)){
             sceneFileMapping = new SceneFileMapping();
         }
@@ -59,14 +59,15 @@ public class FYunFileServiceImpl implements FYunFileService {
         sceneFileMapping.setUrl(mapping.get("http_url"));
         sceneFileMapping.setKey(key);
         sceneFileMapping.setSubgroup(subgroup);
+        sceneFileMapping.setUpTime(upTime);
         sceneFileMappingService.saveOrUpdate(sceneFileMapping);
     }
 
     @Override
-    public void uploadFile(String num, Integer subgroup, String path, String key) {
+    public void uploadFile(String num, Integer subgroup, String upTime, String path, String key) {
         Map<String, String> mapping = fdfsUtil.uploadFile(path);
         //添加记录
-        SceneFileMapping sceneFileMapping =  sceneFileMappingService.getByKey(key,subgroup);
+        SceneFileMapping sceneFileMapping =  sceneFileMappingService.getByKey(key,subgroup,upTime);
         if(Objects.isNull(sceneFileMapping)){
             sceneFileMapping = new SceneFileMapping();
         }
@@ -75,12 +76,13 @@ public class FYunFileServiceImpl implements FYunFileService {
         sceneFileMapping.setUrl(mapping.get("http_url"));
         sceneFileMapping.setKey(key);
         sceneFileMapping.setSubgroup(subgroup);
+        sceneFileMapping.setUpTime(upTime);
         sceneFileMappingService.saveOrUpdate(sceneFileMapping);
     }
 
     @Override
-    public void deleteFile(String num, Integer subgroup, String key) {
-        sceneFileMappingService.delByNumAndKey(num, subgroup, key);
+    public void deleteFile(String num, Integer subgroup, String upTime, String key) {
+        sceneFileMappingService.delByNumAndKey(num, subgroup, upTime, key);
     }
 
     public static void main(String[] args) {
@@ -90,8 +92,8 @@ public class FYunFileServiceImpl implements FYunFileService {
     }
 
     @Override
-    public String downloadFile(String num, Integer subgroup, String key, String dir, String fileName) {
-        SceneFileMapping sceneFileMapping = sceneFileMappingService.getByKey(key, subgroup);
+    public String downloadFile(String num, Integer subgroup, String upTime, String key, String dir, String fileName) {
+        SceneFileMapping sceneFileMapping = sceneFileMappingService.getByKey(key, subgroup,upTime);
         if(Objects.isNull(sceneFileMapping)){
             return null;
         }

+ 26 - 90
src/main/java/com/fdkankan/scene/service/impl/SceneDrawServiceImpl.java

@@ -47,22 +47,23 @@ public class SceneDrawServiceImpl implements ISceneDrawService {
     @Override
     public void saveSceneDraw(BaseJsonArrayParamVO param) throws Exception {
 
-        Scene scenePlus = sceneService.getByNum(param.getNum(), param.getSubgroup());
+        Scene scenePlus = sceneService.getByNum(param.getNum(), param.getSubgroup(), param.getUpTimeKey());
 
-        this.addOrUpdate(param.getNum(), param.getSubgroup(), param.getData());
+        //设置redis缓存
+        this.addOrUpdate(param.getNum(), param.getSubgroup(), param.getUpTimeKey(), scenePlus.getCacheKeyHasTime(), param.getData());
 
         //保存数据库
         SceneEditInfoExt sceneEditInfoExt = sceneEditInfoExtService.getByScenePlusId(scenePlus.getId());
-        this.updateDb(param.getNum(), param.getSubgroup(), scenePlus.getId());
+        this.updateDb(param.getNum(), param.getSubgroup(), param.getUpTimeKey(), scenePlus.getCacheKeyHasTime(), scenePlus.getId());
 
         sceneEditInfoService.upgradeVersionById(sceneEditInfoExt.getEditInfoId());
 
-        this.publicSceneDraw(param.getNum(), param.getSubgroup());
+        this.publicSceneDraw(param.getNum(), param.getSubgroup(), param.getUpTimeKey(), scenePlus.getCacheKeyHasTime());
     }
 
-    private void updateDb(String num, Integer subgroup, Long scenePlusId){
+    private void updateDb(String num, Integer subgroup, String upTime, Integer cacheKeyHasTime, Long scenePlusId){
         //查询缓存是否包含热点数据
-        String key = String.format(RedisKey.SCENE_DRAW, RedisKey.getNumStr(num, subgroup));
+        String key = String.format(RedisKey.SCENE_DRAW, RedisKey.getNumStr(num, subgroup, upTime, cacheKeyHasTime));
         Map<String, String> map = redisClient.hmget(key);
         boolean hasSceneDraw= false;
         for (Map.Entry<String, String> tagMap : map.entrySet()) {
@@ -80,7 +81,7 @@ public class SceneDrawServiceImpl implements ISceneDrawService {
                         .eq(SceneEditInfoExt::getScenePlusId,scenePlusId));
     }
 
-    private void addOrUpdate(String num, Integer subgroup, List<JSONObject> data) throws Exception{
+    private void addOrUpdate(String num, Integer subgroup, String upTime, Integer cacheKeyHasTime, List<JSONObject> data) throws Exception{
         Map<String, String> addOrUpdateMap = new HashMap<>();
         int i = 0;
         for (JSONObject jsonObject : data) {
@@ -88,91 +89,29 @@ public class SceneDrawServiceImpl implements ISceneDrawService {
             addOrUpdateMap.put(jsonObject.getString("sid"), JSON.toJSONString(jsonObject));
         }
 
-//        this.syncFileToRedis(num);
-
         //处理新增和修改数据
-        this.addOrUpdateHandler(num, subgroup, addOrUpdateMap);
+        this.addOrUpdateHandler(num, subgroup, upTime, cacheKeyHasTime, addOrUpdateMap);
     }
 
-    private void addOrUpdateHandler(String num, Integer subgroup, Map<String, String> addOrUpdateMap){
+    private void addOrUpdateHandler(String num, Integer subgroup, String upTime, Integer cacheKeyHasTime, Map<String, String> addOrUpdateMap){
         if(CollUtil.isEmpty(addOrUpdateMap))
             return;
 
         //批量写入缓存
-        String key = String.format(RedisKey.SCENE_DRAW, RedisKey.getNumStr(num, subgroup));
+        String key = String.format(RedisKey.SCENE_DRAW, RedisKey.getNumStr(num, subgroup, upTime, cacheKeyHasTime));
         redisClient.hmset(key, addOrUpdateMap);
 
-        //写入本地文件,作为备份
-//        this.writeFile(num);
     }
 
-//    private void writeFile(String num){
-//        String lockKey = String.format(RedisLockKey.LOCK_SCENE_DRAW, num);
-//        String lockVal = cn.hutool.core.lang.UUID.randomUUID().toString();
-//        boolean lock = redisLockUtil.lock(lockKey, lockVal, RedisKey.EXPIRE_TIME_1_MINUTE);
-//        if(!lock){
-//            return;
-//        }
-//        try{
-//            String dataKey = String.format(RedisKey.SCENE_DRAW, num);
-//            String sceneDrawJsonPath = String.format(ConstantFilePath.SCENE_USER_PATH_V4, num) + SCENE_DRAW_JSON_NAME;
-//            if(!redisUtil.hasKey(dataKey)){
-//                FileUtil.del(sceneDrawJsonPath);
-//                return;
-//            }
-//            Map<String, String> map = redisUtil.hmget(dataKey);
-//            List<JSONObject>  list = map.entrySet().stream().map(entry->JSON.parseObject(entry.getValue())).collect(Collectors.toList());
-//            FileUtil.writeUtf8String(JSON.toJSONString(list), sceneDrawJsonPath);
-//        }finally {
-//            redisLockUtil.unlockLua(lockKey, lockVal);
-//        }
-//    }
-
-//    private void syncFileToRedis(String num) throws Exception{
-//
-//        String key = String.format(RedisKey.SCENE_DRAW, num);
-//        boolean exist = redisUtil.hasKey(key);
-//        if(exist){
-//            return;
-//        }
-//        String lockKey = String.format(RedisLockKey.LOCK_SCENE_DRAW, num);
-//        String lockVal = cn.hutool.core.lang.UUID.randomUUID().toString();
-//        boolean lock = redisLockUtil.lock(lockKey, lockVal, RedisKey.EXPIRE_TIME_1_MINUTE);
-//        if(!lock){
-//            throw new BusinessException(ErrorCode.SYSTEM_BUSY);
-//        }
-//        try{
-//            exist = redisUtil.hasKey(key);
-//            if(exist){
-//                return;
-//            }
-//            String sceneDrawFilePath = String.format(ConstantFilePath.SCENE_USER_PATH_V4, num) + SCENE_DRAW_JSON_NAME;
-//            String sceneDrawData = FileUtils.readUtf8String(sceneDrawFilePath);
-//            if(StrUtil.isEmpty(sceneDrawData)){
-//                return;
-//            }
-//            JSONArray tagsArr = JSON.parseArray(sceneDrawData);
-//            if(CollUtil.isEmpty(tagsArr)){
-//                return;
-//            }
-//            Map<String, String> map = new HashMap<>();
-//            for (Object o : tagsArr) {
-//                JSONObject jo = (JSONObject)o;
-//                map.put(jo.getString("sid"), jo.toJSONString());
-//            }
-//            redisUtil.hmset(key, map);
-//        }finally {
-//            redisLockUtil.unlockLua(lockKey, lockVal);
-//        }
-//    }
-
     @Override
-    public List<JSONObject> listSceneDraw(String num, Integer subgroup) throws Exception {
+    public List<JSONObject> listSceneDraw(String num, Integer subgroup, String upTime) throws Exception {
+
+        Scene scenePlus = sceneService.getByNum(num, subgroup, upTime);
+
         List<JSONObject> tags = new ArrayList<>();
-//        this.syncFileToRedis(num);
 
         //获取裁剪模型数据
-        String key = String.format(RedisKey.SCENE_DRAW, RedisKey.getNumStr(num, subgroup));
+        String key = String.format(RedisKey.SCENE_DRAW, RedisKey.getNumStr(num, subgroup, upTime, scenePlus.getCacheKeyHasTime()));
         List<String> list = redisClient.hgetValues(key);
         if(CollUtil.isNotEmpty(list)){
             List<TagBean> sortList = list.stream().map(str -> {
@@ -192,28 +131,25 @@ public class SceneDrawServiceImpl implements ISceneDrawService {
 
     @Override
     public void deleteSceneDraw(DeleteSidListParamVO param) throws Exception {
-        Scene scenePlus = sceneService.getByNum(param.getNum(), param.getSubgroup());
+        Scene scenePlus = sceneService.getByNum(param.getNum(), param.getSubgroup(), param.getUpTimeKey());
         List<String> deleteSidList = param.getSidList();
-//        this.syncFileToRedis(param.getNum());
         //处理删除状态数据
-        this.deleteCache(param.getNum(), param.getSubgroup(), deleteSidList);
-        //写入本地文件,作为备份
-//        this.writeFile(param.getNum());
+        this.deleteCache(param.getNum(), param.getSubgroup(), param.getUpTimeKey(), scenePlus.getCacheKeyHasTime(), deleteSidList);
         //保存数据库
         SceneEditInfoExt sceneEditInfoExt = sceneEditInfoExtService.getByScenePlusId(scenePlus.getId());
-        this.updateDb(param.getNum(), param.getSubgroup(), scenePlus.getId());
+        this.updateDb(param.getNum(), param.getSubgroup(), param.getUpTimeKey(), scenePlus.getCacheKeyHasTime(), scenePlus.getId());
         sceneEditInfoService.upgradeVersionById(sceneEditInfoExt.getEditInfoId());
 
-        this.publicSceneDraw(param.getNum(), param.getSubgroup());
+        this.publicSceneDraw(param.getNum(), param.getSubgroup(), param.getUpTimeKey(), scenePlus.getCacheKeyHasTime());
     }
 
-    private List<String> deleteCache(String num, Integer subgroup, List<String> deleteSidList) {
+    private List<String> deleteCache(String num, Integer subgroup, String upTime, Integer cacheKeyHasTime, List<String> deleteSidList) {
         if(CollUtil.isEmpty(deleteSidList)){
             return null;
         }
 
         //从redis中加载热点数据
-        String key = String.format(RedisKey.SCENE_DRAW, RedisKey.getNumStr(num, subgroup));
+        String key = String.format(RedisKey.SCENE_DRAW, RedisKey.getNumStr(num, subgroup, upTime, cacheKeyHasTime));
         List<String> deletDataList = redisClient.hMultiGet(key, deleteSidList);
         if(CollUtil.isNotEmpty(deletDataList)){
             redisClient.hdel(key, deleteSidList);
@@ -222,15 +158,15 @@ public class SceneDrawServiceImpl implements ISceneDrawService {
     }
 
     @Override
-    public void publicSceneDraw(String sceneNum, Integer subgroup) throws IOException {
-        String Key = String.format(RedisKey.SCENE_DRAW, RedisKey.getNumStr(sceneNum, subgroup));
+    public void publicSceneDraw(String sceneNum, Integer subgroup, String upTime, Integer cacheKeyHasTime) throws IOException {
+        String Key = String.format(RedisKey.SCENE_DRAW, RedisKey.getNumStr(sceneNum, subgroup, upTime, cacheKeyHasTime));
         String userEditPath = String.format(UploadFilePath.USER_VIEW_PATH, sceneNum) + SCENE_DRAW_JSON_NAME;
         List<String> list = redisClient.hgetValues(Key);
         if(CollUtil.isEmpty(list)){
-            fYunFileService.deleteFile(sceneNum, subgroup, userEditPath);
+            fYunFileService.deleteFile(sceneNum, subgroup, upTime, userEditPath);
             return;
         }
         List<JSONObject> collect = list.stream().map(str -> JSON.parseObject(str)).collect(Collectors.toList());
-        fYunFileService.uploadFile(sceneNum, subgroup, JSON.toJSONString(collect).getBytes(), userEditPath);
+        fYunFileService.uploadFile(sceneNum, subgroup, upTime, JSON.toJSONString(collect).getBytes(), userEditPath);
     }
 }

+ 36 - 203
src/main/java/com/fdkankan/scene/service/impl/SceneEditInfoExtServiceImpl.java

@@ -18,9 +18,11 @@ import com.fdkankan.scene.bean.TagBean;
 import com.fdkankan.scene.entity.Scene;
 import com.fdkankan.scene.entity.SceneEditInfo;
 import com.fdkankan.scene.entity.SceneEditInfoExt;
-import com.fdkankan.scene.entity.SceneFileMapping;
 import com.fdkankan.scene.mapper.SceneEditInfoExtMapper;
-import com.fdkankan.scene.service.*;
+import com.fdkankan.scene.service.FYunFileService;
+import com.fdkankan.scene.service.SceneEditInfoExtService;
+import com.fdkankan.scene.service.SceneEditInfoService;
+import com.fdkankan.scene.service.SceneService;
 import com.fdkankan.scene.vo.BaseJsonArrayParamVO;
 import com.fdkankan.scene.vo.BaseSceneParamVO;
 import com.fdkankan.scene.vo.DeleteSidListParamVO;
@@ -47,20 +49,12 @@ import java.util.stream.Collectors;
 public class SceneEditInfoExtServiceImpl extends ServiceImpl<SceneEditInfoExtMapper, SceneEditInfoExt> implements SceneEditInfoExtService {
     @Autowired
     private SceneService scenePlusService;
-//    @Autowired
-//    private IScenePlusExtService scenePlusExtService;
     @Autowired
     private SceneEditInfoService sceneEditInfoService;
     @Resource
     private RedisClient redisClient;
-//    @Autowired
-//    private RedisLockUtil redisLockUtil;
     @Autowired
     private FYunFileService fYunFileService;
-//    @Autowired
-//    private ISceneUploadService sceneUploadService;
-    @Autowired
-    private SceneFileMappingService sceneFileMappingService;
 
     @Override
     public SceneEditInfoExt getByScenePlusId(long scenePlusId) {
@@ -73,8 +67,8 @@ public class SceneEditInfoExtServiceImpl extends ServiceImpl<SceneEditInfoExtMap
     }
 
     @Override
-    public void updateToursByNum(String num, Integer subgroup, Integer tours) {
-        Scene scenePlus = scenePlusService.getByNum(num, subgroup);
+    public void updateToursByNum(String num, Integer subgroup, String upTime, Integer tours) {
+        Scene scenePlus = scenePlusService.getByNum(num, subgroup, upTime);
         if(Objects.isNull(scenePlus)){
             throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
         }
@@ -87,28 +81,24 @@ public class SceneEditInfoExtServiceImpl extends ServiceImpl<SceneEditInfoExtMap
 
     @Override
     public ResultData saveBillboards(BaseJsonArrayParamVO param) throws Exception {
-        Scene scenePlus = scenePlusService.getByNum(param.getNum(), param.getSubgroup());
+        Scene scenePlus = scenePlusService.getByNum(param.getNum(), param.getSubgroup(), param.getUpTimeKey());
 
-        this.addOrUpdateBillboards(param.getNum(), param.getSubgroup(), param.getData());
+        this.addOrUpdateBillboards(param.getNum(), param.getSubgroup(), param.getUpTimeKey(), scenePlus.getCacheKeyHasTime(), param.getData());
 
-        this.addOrUpdateBillboardsStyles(param.getNum(), param.getSubgroup(), param.getStyles());
+        this.addOrUpdateBillboardsStyles(param.getNum(), param.getSubgroup(), param.getUpTimeKey(), scenePlus.getCacheKeyHasTime(), param.getStyles());
 
         //保存数据库
         SceneEditInfoExt sceneEditInfoExt = this.getByScenePlusId(scenePlus.getId());
-        this.updateBillboards(param.getNum(), param.getSubgroup(),  sceneEditInfoExt);
-//        this.updateById(sceneEditInfoExt);
+        this.updateBillboards(param.getNum(), param.getSubgroup(), param.getUpTimeKey(), scenePlus.getCacheKeyHasTime(), sceneEditInfoExt);
 
-        this.publicBillboardData(param.getNum(), param.getSubgroup());
+        this.publicBillboardData(param.getNum(), param.getSubgroup(), param.getUpTimeKey(), scenePlus.getCacheKeyHasTime());
 
         sceneEditInfoService.upgradeVersionById(sceneEditInfoExt.getEditInfoId());
 
-
         return ResultData.ok();
     }
 
-    private void addOrUpdateBillboardsStyles(String num, Integer subgroup, List<JSONObject> styles) throws Exception{
-
-//        this.syncBillboardsStylesFromFileToRedis(num);
+    private void addOrUpdateBillboardsStyles(String num, Integer subgroup, String upTime, Integer cacheKeyHasTime, List<JSONObject> styles) throws Exception{
 
         if(CollUtil.isEmpty(styles)){
             return;
@@ -123,72 +113,26 @@ public class SceneEditInfoExtServiceImpl extends ServiceImpl<SceneEditInfoExtMap
             styleMap.put(id, style.toJSONString());
         });
 
-        String key = String.format(RedisKey.SCENE_BILLBOARDS_STYLES, RedisKey.getNumStr(num, subgroup));
+        String key = String.format(RedisKey.SCENE_BILLBOARDS_STYLES, RedisKey.getNumStr(num, subgroup, upTime, cacheKeyHasTime));
         redisClient.hmset(key, styleMap);
 
-        //写入本地文件,作为备份
-//        this.writeBillboardStylesJson(num);
     }
 
-//    private void syncBillboardsStylesFromFileToRedis(String num) throws Exception{
-//
-//        String key = String.format(RedisKey.SCENE_BILLBOARDS_STYLES, num);
-//        boolean exist = redisUtil.hasKey(key);
-//        if(exist){
-//            return;
-//        }
-//        String lockKey = String.format(RedisLockKey.LOCK_BILLBOARDS_STYLES_SYNC, num);
-//        String lockVal = cn.hutool.core.lang.UUID.randomUUID().toString();
-//        boolean lock = redisLockUtil.lock(lockKey, lockVal, RedisKey.EXPIRE_TIME_1_MINUTE);
-//        if(!lock){
-//            throw new BusinessException(ErrorCode.SYSTEM_BUSY);
-//        }
-//        try{
-//            exist = redisUtil.hasKey(key);
-//            if(exist){
-//                return;
-//            }
-//            String stylesPath = String.format(ConstantFilePath.SCENE_USER_PATH_V4, num);
-//            String stylesData = FileUtils.readUtf8String(stylesPath + "billboards-styles.json");
-//            if(StrUtil.isEmpty(stylesData)){
-//                return;
-//            }
-//            JSONArray stylesArr = JSON.parseArray(stylesData);
-//            if(CollUtil.isEmpty(stylesArr)){
-//                return;
-//            }
-//            Map<String, String> styleMap = new HashMap<>();
-//            for (Object style : stylesArr) {
-//                JSONObject styleObj = (JSONObject)style;
-//                String id = styleObj.getString("sid");
-//                styleMap.put(id, styleObj.toJSONString());
-//            }
-//            redisUtil.hmset(key, styleMap);
-//        }finally {
-//            redisLockUtil.unlockLua(lockKey, lockVal);
-//        }
-//
-//    }
 
     @Override
     public ResultData deleteBillboards(DeleteSidListParamVO param) throws Exception {
-        Scene scenePlus = scenePlusService.getByNum(param.getNum(), param.getSubgroup());
+        Scene scenePlus = scenePlusService.getByNum(param.getNum(), param.getSubgroup(), param.getUpTimeKey());
 
         List<String> deleteSidList = param.getSidList();
 
-//        this.syncBillboardsFromFileToRedis(param.getNum());
-
         //处理删除状态数据
-        this.deleteBillboardsHandler(param.getNum(), param.getSubgroup(), deleteSidList);
-
-        //写入本地文件,作为备份
-//        this.writeBillboardJson(param.getNum());
+        this.deleteBillboardsHandler(param.getNum(), param.getSubgroup(), param.getUpTimeKey(), scenePlus.getCacheKeyHasTime(), deleteSidList);
 
-        this.publicBillboardData(param.getNum(), param.getSubgroup());
+        this.publicBillboardData(param.getNum(), param.getSubgroup(), param.getUpTimeKey(), scenePlus.getCacheKeyHasTime());
 
         //保存数据库
         SceneEditInfoExt sceneEditInfoExt = this.getByScenePlusId(scenePlus.getId());
-        this.updateBillboards(param.getNum(), param.getSubgroup(), sceneEditInfoExt);
+        this.updateBillboards(param.getNum(), param.getSubgroup(), param.getUpTimeKey(), scenePlus.getCacheKeyHasTime(), sceneEditInfoExt);
         sceneEditInfoService.upgradeVersionById(sceneEditInfoExt.getEditInfoId());
 
         return ResultData.ok();
@@ -200,12 +144,10 @@ public class SceneEditInfoExtServiceImpl extends ServiceImpl<SceneEditInfoExtMap
         JSONObject result = new JSONObject();
         List<JSONObject> tags = new ArrayList<>();
         List<JSONObject> styles = new ArrayList<>();
-        Scene scenePlus = scenePlusService.getByNum(param.getNum(), param.getSubgroup());
-
-//        this.syncBillboardsFromFileToRedis(param.getNum());
+        Scene scenePlus = scenePlusService.getByNum(param.getNum(), param.getSubgroup(), param.getUpTimeKey());
 
         //获取指示牌数据
-        String key = String.format(RedisKey.SCENE_BILLBOARDS, RedisKey.getNumStr(param.getNum(), param.getSubgroup()));
+        String key = String.format(RedisKey.SCENE_BILLBOARDS, RedisKey.getNumStr(param.getNum(), param.getSubgroup(), param.getUpTimeKey(), scenePlus.getCacheKeyHasTime()));
         List<String> list = redisClient.hgetValues(key);
         if(CollUtil.isNotEmpty(list)){
             List<TagBean> sortList = list.stream().map(str -> {
@@ -222,8 +164,7 @@ public class SceneEditInfoExtServiceImpl extends ServiceImpl<SceneEditInfoExtMap
         result.put("tags", tags);
 
         //获取图标数据
-//        this.syncBillboardsStylesFromFileToRedis(param.getNum());
-        key = String.format(RedisKey.SCENE_BILLBOARDS_STYLES, RedisKey.getNumStr(param.getNum(), param.getSubgroup()));
+        key = String.format(RedisKey.SCENE_BILLBOARDS_STYLES, RedisKey.getNumStr(param.getNum(), param.getSubgroup(), param.getUpTimeKey(), scenePlus.getCacheKeyHasTime()));
         List<String> sytlelist = redisClient.hgetValues(key);
         if(CollUtil.isNotEmpty(sytlelist)){
             List<TagBean> stileSortList = sytlelist.stream().map(str -> {
@@ -242,13 +183,13 @@ public class SceneEditInfoExtServiceImpl extends ServiceImpl<SceneEditInfoExtMap
         return result;
     }
 
-    private void deleteBillboardsHandler(String num, Integer subgroup,  List<String> deleteSidList) throws Exception {
+    private void deleteBillboardsHandler(String num, Integer subgroup, String upTime, Integer cacheKeyHasTime, List<String> deleteSidList) throws Exception {
         if(CollUtil.isEmpty(deleteSidList)){
             return;
         }
 
         //从redis中加载热点数据
-        String key = String.format(RedisKey.SCENE_BILLBOARDS, RedisKey.getNumStr(num, subgroup));
+        String key = String.format(RedisKey.SCENE_BILLBOARDS, RedisKey.getNumStr(num, subgroup, upTime, cacheKeyHasTime));
         List<String> deletDataList = redisClient.hMultiGet(key, deleteSidList);
         if(CollUtil.isEmpty(deletDataList))
             return;
@@ -256,7 +197,7 @@ public class SceneEditInfoExtServiceImpl extends ServiceImpl<SceneEditInfoExtMap
         redisClient.hdel(key, deleteSidList);
     }
 
-    private void addOrUpdateBillboards(String num, Integer subgroup, List<JSONObject> data) throws Exception{
+    private void addOrUpdateBillboards(String num, Integer subgroup, String upTime, Integer cacheKeyHasTime, List<JSONObject> data) throws Exception{
         Map<String, String> addOrUpdateMap = new HashMap<>();
         int i = 0;
         for (JSONObject jsonObject : data) {
@@ -264,125 +205,22 @@ public class SceneEditInfoExtServiceImpl extends ServiceImpl<SceneEditInfoExtMap
             addOrUpdateMap.put(jsonObject.getString("sid"), JSON.toJSONString(jsonObject));
         }
 
-//        this.syncBillboardsFromFileToRedis(num);
-
         //处理新增和修改数据
-        this.addOrUpdateBillboardsHandler(num, subgroup, addOrUpdateMap);
+        this.addOrUpdateBillboardsHandler(num, subgroup, upTime, cacheKeyHasTime, addOrUpdateMap);
     }
-//
-//    /**
-//     * <p>
-//     保证指示牌数据安全性,当redis宕机导致热点数据丢失时,可以从文件中读取,恢复到redis
-//     * </p>
-//     * @author dengsixing
-//     * @date 2022/3/3
-//     **/
-//    private void syncBillboardsFromFileToRedis(String num) throws Exception{
-//
-//        String key = String.format(RedisKey.SCENE_BILLBOARDS, num);
-//        boolean exist = redisUtil.hasKey(key);
-//        if(exist){
-//            return;
-//        }
-//        String lockKey = String.format(RedisLockKey.LOCK_BILLBOARDS_SYNC, num);
-//        String lockVal = cn.hutool.core.lang.UUID.randomUUID().toString();
-//        boolean lock = redisLockUtil.lock(lockKey, lockVal, RedisKey.EXPIRE_TIME_1_MINUTE);
-//        if(!lock){
-//            throw new BusinessException(ErrorCode.SYSTEM_BUSY);
-//        }
-//        try{
-//            exist = redisUtil.hasKey(key);
-//            if(exist){
-//                return;
-//            }
-//            String billboardsFilePath = String.format(ConstantFilePath.SCENE_USER_PATH_V4, num) + "billboards.json";
-//            String billboardsData = FileUtils.readUtf8String(billboardsFilePath);
-//            if(StrUtil.isEmpty(billboardsData)){
-//                return;
-//            }
-//            JSONArray tagsArr = JSON.parseArray(billboardsData);
-//            if(CollUtil.isEmpty(tagsArr)){
-//                return;
-//            }
-//            Map<String, String> map = new HashMap<>();
-//            for (Object o : tagsArr) {
-//                JSONObject jo = (JSONObject)o;
-//                map.put(jo.getString("sid"), jo.toJSONString());
-//            }
-//            redisUtil.hmset(key, map);
-//        }finally {
-//            redisLockUtil.unlockLua(lockKey, lockVal);
-//        }
-//    }
-//
-    private void addOrUpdateBillboardsHandler(String num, Integer subgroup, Map<String, String> addOrUpdateMap){
+    private void addOrUpdateBillboardsHandler(String num, Integer subgroup, String upTime, Integer cacheKeyHasTime,  Map<String, String> addOrUpdateMap){
         if(CollUtil.isEmpty(addOrUpdateMap))
             return;
 
         //批量写入缓存
-        String key = String.format(RedisKey.SCENE_BILLBOARDS, RedisKey.getNumStr(num, subgroup));
+        String key = String.format(RedisKey.SCENE_BILLBOARDS, RedisKey.getNumStr(num, subgroup, upTime, cacheKeyHasTime));
         redisClient.hmset(key, addOrUpdateMap);
 
-        //写入本地文件,作为备份
-//        this.writeBillboardJson(num);
     }
-//
-//    /**
-//     * <p>
-//     热点数据保存
-//
-//     * </p>
-//     * @author dengsixing
-//     * @date 2022/3/3
-//     *
-//     **/
-//    private void writeBillboardJson(String num){
-//        String lockKey = String.format(RedisLockKey.LOCK_BILLBOARDS_SYNC, num);
-//        String lockVal = cn.hutool.core.lang.UUID.randomUUID().toString();
-//        boolean lock = redisLockUtil.lock(lockKey, lockVal, RedisKey.EXPIRE_TIME_1_MINUTE);
-//        if(!lock){
-//            return;
-//        }
-//        try{
-//            String dataKey = String.format(RedisKey.SCENE_BILLBOARDS, num);
-//            String hotJsonPath = String.format(ConstantFilePath.SCENE_USER_PATH_V4, num) + "billboards.json";
-//            if(!redisUtil.hasKey(dataKey)){
-//                FileUtil.del(hotJsonPath);
-//                return;
-//            }
-//            Map<String, String> billboardMap = redisUtil.hmget(dataKey);
-//            List<JSONObject>  billboardList = billboardMap.entrySet().stream().map(entry->JSON.parseObject(entry.getValue())).collect(Collectors.toList());
-//            FileUtil.writeUtf8String(JSON.toJSONString(billboardList), hotJsonPath);
-//        }finally {
-//            redisLockUtil.unlockLua(lockKey, lockVal);
-//        }
-//    }
-//
-//    private void writeBillboardStylesJson(String num){
-//        String lockKey = String.format(RedisLockKey.LOCK_BILLBOARDS_STYLES_SYNC, num);
-//        String lockVal = cn.hutool.core.lang.UUID.randomUUID().toString();
-//        boolean lock = redisLockUtil.lock(lockKey, lockVal, RedisKey.EXPIRE_TIME_1_MINUTE);
-//        if(!lock){
-//            return;
-//        }
-//        try{
-//            String dataKey = String.format(RedisKey.SCENE_BILLBOARDS_STYLES, num);
-//            String stylesPath = String.format(ConstantFilePath.SCENE_USER_PATH_V4, num) + "billboards-styles.json";
-//            if(!redisUtil.hasKey(dataKey)){
-//                FileUtil.del(stylesPath);
-//                return;
-//            }
-//            Map<String, String> billboardStylesMap = redisUtil.hmget(dataKey);
-//            List<JSONObject>  billboardStyleList = billboardStylesMap.entrySet().stream().map(entry->JSON.parseObject(entry.getValue())).collect(Collectors.toList());
-//            FileUtil.writeUtf8String(JSON.toJSONString(billboardStyleList), stylesPath);
-//        }finally {
-//            redisLockUtil.unlockLua(lockKey, lockVal);
-//        }
-//    }
-
-    private void updateBillboards(String num, Integer subgroup, SceneEditInfoExt sceneEditInfoExt){
+
+    private void updateBillboards(String num, Integer subgroup, String upTime, Integer cacheKeyHasTime, SceneEditInfoExt sceneEditInfoExt){
         //查询缓存是否包含热点数据
-        String key = String.format(RedisKey.SCENE_BILLBOARDS, RedisKey.getNumStr(num, subgroup));
+        String key = String.format(RedisKey.SCENE_BILLBOARDS, RedisKey.getNumStr(num, subgroup, upTime, cacheKeyHasTime));
         Map<String, String> billboardsMap = redisClient.hmget(key);
         boolean hashBillboards= false;
         for (Map.Entry<String, String> tagMap : billboardsMap.entrySet()) {
@@ -398,36 +236,31 @@ public class SceneEditInfoExtServiceImpl extends ServiceImpl<SceneEditInfoExtMap
         this.updateById(sceneEditInfoExt);
     }
 
-    private void publicBillboardData(String sceneNum, Integer subgroup) throws IOException {
-        String Key = String.format(RedisKey.SCENE_BILLBOARDS, RedisKey.getNumStr(sceneNum, subgroup));
+    private void publicBillboardData(String sceneNum, Integer subgroup, String upTime, Integer cacheKeyHasTime) throws IOException {
+        String Key = String.format(RedisKey.SCENE_BILLBOARDS, RedisKey.getNumStr(sceneNum, subgroup, upTime, cacheKeyHasTime));
         String userEditPath = String.format(UploadFilePath.USER_VIEW_PATH, sceneNum) + "billboards.json";
         List<String> list = redisClient.hgetValues(Key);
         if(CollUtil.isEmpty(list)){
-            fYunFileService.deleteFile(sceneNum, subgroup, userEditPath);
+            fYunFileService.deleteFile(sceneNum, subgroup, upTime, userEditPath);
             return;
         }
         List<JSONObject> collect = list.stream().map(str -> JSON.parseObject(str)).collect(Collectors.toList());
-        fYunFileService.uploadFile(sceneNum, subgroup, JSON.toJSONString(collect).getBytes(), userEditPath);
+        fYunFileService.uploadFile(sceneNum, subgroup, upTime, JSON.toJSONString(collect).getBytes(), userEditPath);
     }
 
 
     @Override
     public ResultData deleteBillboardsStyles(DeleteStylesParamVO param) throws Exception {
-        Scene scenePlus = scenePlusService.getByNum(param.getNum(), param.getSubgroup());
+        Scene scenePlus = scenePlusService.getByNum(param.getNum(), param.getSubgroup(), param.getUpTimeKey());
         if (scenePlus == null)
             throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
 
         List<String> sidList = param.getSidList();
 
-//        this.syncBillboardsStylesFromFileToRedis(param.getNum());
-
-        String key = String.format(RedisKey.SCENE_BILLBOARDS_STYLES, RedisKey.getNumStr(param.getNum(), param.getSubgroup()));
+        String key = String.format(RedisKey.SCENE_BILLBOARDS_STYLES, RedisKey.getNumStr(param.getNum(), param.getSubgroup(), param.getUpTimeKey(), scenePlus.getCacheKeyHasTime()));
         List<String> deleteList = redisClient.hMultiGet(key, sidList);
         redisClient.hdel(key, sidList);
 
-        //写入本地文件,作为备份
-//        this.writeBillboardStylesJson(param.getNum());
-
         //删除oss文件
         List<String> deleteFileList = deleteList.stream().map(str -> {
             JSONObject parse = JSON.parseObject(str);
@@ -436,7 +269,7 @@ public class SceneEditInfoExtServiceImpl extends ServiceImpl<SceneEditInfoExtMap
 
         deleteFileList.stream().forEach(v->{
             String fileKey = String.format(UploadFilePath.USER_VIEW_PATH, param.getNum()) + v;
-            fYunFileService.deleteFile(param.getNum(), param.getSubgroup(), fileKey);
+            fYunFileService.deleteFile(param.getNum(), param.getSubgroup(), param.getUpTimeKey(), fileKey);
         });
 
         return ResultData.ok();

File diff suppressed because it is too large
+ 72 - 2265
src/main/java/com/fdkankan/scene/service/impl/SceneEditInfoServiceImpl.java


+ 7 - 19
src/main/java/com/fdkankan/scene/service/impl/SceneEditServiceImpl.java

@@ -83,17 +83,12 @@ public class SceneEditServiceImpl implements ISceneEditService {
 
     @Override
     public SceneAuthVO getAuth(String num){
-//        Scene scenePlus = scenePlusService.getByNum(num, subgroup);
-//        if(Objects.isNull(scenePlus)){
-//            throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
-//        }
         SceneAuthVO sceneAuthVO = new SceneAuthVO();
         sceneAuthVO.setExclude(new ArrayList<>());
         sceneAuthVO.setInclude(new ArrayList<>());
         sceneAuthVO.setCompany(null);
         sceneAuthVO.setIsExpired(false);
         sceneAuthVO.setIsVip(true);
-
         return sceneAuthVO;
     }
 
@@ -106,27 +101,27 @@ public class SceneEditServiceImpl implements ISceneEditService {
 
     @Override
     public ResultData saveTour(BaseDataParamVO param) throws IOException {
-        Scene scenePlus = scenePlusService.getByNum(param.getNum(), param.getSubgroup());
+        Scene scenePlus = scenePlusService.getByNum(param.getNum(), param.getSubgroup(), param.getUpTimeKey());
         if(Objects.isNull(scenePlus)){
             throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
         }
         String key = String.format(UploadFilePath.USER_VIEW_PATH, param.getNum()) + "tour.json";
-        fYunFileService.uploadFile(param.getNum(), param.getSubgroup(), param.getData().getBytes(StandardCharsets.UTF_8), key);
+        fYunFileService.uploadFile(param.getNum(), param.getSubgroup(), param.getUpTimeKey(), param.getData().getBytes(StandardCharsets.UTF_8), key);
 
-        sceneEditInfoExtService.updateToursByNum(param.getNum(), param.getSubgroup(), CommonStatus.YES.code());
+        sceneEditInfoExtService.updateToursByNum(param.getNum(), param.getSubgroup(), param.getUpTimeKey(), CommonStatus.YES.code());
 
         return ResultData.ok();
     }
 
     @Override
     public ResultData deleteTour(BaseSceneParamVO param) throws Exception {
-        Scene scenePlus = scenePlusService.getByNum(param.getNum(), param.getSubgroup());
+        Scene scenePlus = scenePlusService.getByNum(param.getNum(), param.getSubgroup(), param.getUpTimeKey());
         if(Objects.isNull(scenePlus)){
             throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
         }
         String userEditPath = String.format(UploadFilePath.USER_VIEW_PATH, param.getNum());
         String tourJsonPath = userEditPath + "tour.json";
-        String tourJson = fYunFileService.getFileContent(tourJsonPath, param .getSubgroup());
+        String tourJson = fYunFileService.getFileContent(tourJsonPath, param .getSubgroup(), param.getUpTimeKey());
         JSONArray tours = JSON.parseArray(tourJson);
         if(CollUtil.isNotEmpty(tours)){
             List<String> fileNames = new ArrayList<>();
@@ -155,18 +150,11 @@ public class SceneEditServiceImpl implements ISceneEditService {
                 }
             }
 
-            //批量删除资源文件
-//            if(CollUtil.isNotEmpty(fileNames)){
-//                sceneUploadService.delete(
-//                    DeleteFileParamVO.builder()
-//                        .num(param.getNum()).bizType("tour").fileNames(fileNames)
-//                        .build());
-//            }
         }
         //删除tour.json文件
-        sceneFileMappingService.delByNumAndKey(param.getNum(), param.getSubgroup(), tourJsonPath);
+        sceneFileMappingService.delByNumAndKey(param.getNum(), param.getSubgroup(), param.getUpTimeKey(), tourJsonPath);
 
-        sceneEditInfoExtService.updateToursByNum(param.getNum(), param.getSubgroup(), CommonStatus.NO.code());
+        sceneEditInfoExtService.updateToursByNum(param.getNum(), param.getSubgroup(), param.getUpTimeKey(), CommonStatus.NO.code());
 
         return ResultData.ok();
     }

+ 11 - 4
src/main/java/com/fdkankan/scene/service/impl/SceneFileMappingServiceImpl.java

@@ -21,12 +21,19 @@ import org.springframework.stereotype.Service;
 public class SceneFileMappingServiceImpl extends ServiceImpl<SceneFileMappingMapper, SceneFileMapping> implements SceneFileMappingService {
 
     @Override
-    public void delByNumAndKey(String num, Integer subgroup, String key) {
-        this.remove(new LambdaQueryWrapper<SceneFileMapping>().eq(SceneFileMapping::getNum, num).eq(SceneFileMapping::getKey, key).eq(SceneFileMapping::getSubgroup, subgroup));
+    public void delByNumAndKey(String num, Integer subgroup, String key, String upTime) {
+        this.remove(new LambdaQueryWrapper<SceneFileMapping>()
+                .eq(SceneFileMapping::getNum, num)
+                .eq(SceneFileMapping::getKey, key)
+                .eq(SceneFileMapping::getSubgroup, subgroup)
+                .eq(SceneFileMapping::getUpTime,upTime));
     }
 
     @Override
-    public SceneFileMapping getByKey(String key, Integer subgroup) {
-        return this.getOne(new LambdaQueryWrapper<SceneFileMapping>().eq(SceneFileMapping::getKey, key).eq(SceneFileMapping::getSubgroup, subgroup));
+    public SceneFileMapping getByKey(String key, Integer subgroup, String upTime) {
+        return this.getOne(new LambdaQueryWrapper<SceneFileMapping>()
+                .eq(SceneFileMapping::getKey, key)
+                .eq(SceneFileMapping::getSubgroup, subgroup)
+                .eq(SceneFileMapping::getUpTime, upTime));
     }
 }

File diff suppressed because it is too large
+ 44 - 825
src/main/java/com/fdkankan/scene/service/impl/SceneProServiceImpl.java


+ 23 - 4
src/main/java/com/fdkankan/scene/service/impl/SceneServiceImpl.java

@@ -1,6 +1,8 @@
 package com.fdkankan.scene.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
@@ -40,6 +42,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -108,8 +111,8 @@ public class SceneServiceImpl extends ServiceImpl<SceneMapper, Scene> implements
     }
 
     @Override
-    public void outFileByKey2(String key, Integer subgroup, HttpServletResponse response) throws IOException {
-        SceneFileMapping one = sceneFileMappingService.getOne(new LambdaQueryWrapper<SceneFileMapping>().eq(SceneFileMapping::getKey, key).eq(SceneFileMapping::getSubgroup, subgroup));
+    public void outFileByKey2(String key, Integer subgroup, String upTime, HttpServletResponse response) throws IOException {
+        SceneFileMapping one = sceneFileMappingService.getOne(new LambdaQueryWrapper<SceneFileMapping>().eq(SceneFileMapping::getKey, key).eq(SceneFileMapping::getSubgroup, subgroup).eq(SceneFileMapping::getUpTime, upTime));
         if(Objects.isNull(one)){
             response.setStatus(HttpServletResponse.SC_NOT_FOUND);
         }else{
@@ -160,8 +163,15 @@ public class SceneServiceImpl extends ServiceImpl<SceneMapper, Scene> implements
     }
 
     @Override
-    public Scene getByNum(String num, Integer subgroup) {
-        return this.getOne(new LambdaQueryWrapper<Scene>().eq(Scene::getNum, num).eq(Scene::getSubgroup, subgroup));
+    public Scene getByNum(String num, Integer subgroup, String upTime) {
+        if(StrUtil.isNotEmpty(upTime)){
+            return this.getOne(new LambdaQueryWrapper<Scene>().eq(Scene::getNum, num).eq(Scene::getSubgroup, subgroup).eq(Scene::getUpTimeKey, upTime));
+        }
+        List<Scene> list = this.list(new LambdaQueryWrapper<Scene>().eq(Scene::getNum, num).eq(Scene::getSubgroup, subgroup).orderByDesc(Scene::getUpTimeKey));
+        if(CollUtil.isEmpty(list)){
+            return null;
+        }
+        return list.get(0);
     }
 
     @Override
@@ -173,4 +183,13 @@ public class SceneServiceImpl extends ServiceImpl<SceneMapper, Scene> implements
     public List<Scene> listByStationcode(String stationCode) {
         return this.list(new LambdaQueryWrapper<Scene>().eq(Scene::getStationcode, stationCode).eq(Scene::getSubgroup, 0));
     }
+
+    @Override
+    public Map<String, String> listByNumLast3(String num) {
+        List<Scene> list = this.list(new LambdaQueryWrapper<Scene>().eq(Scene::getNum, num).eq(Scene::getSubgroup, 0).orderByDesc(Scene::getUpTime).last("limit 3"));
+        if(CollUtil.isEmpty(list)){
+            return null;
+        }
+        return list.stream().collect(Collectors.toMap(v -> v.getUpTimeKey(), v-> DateUtil.formatDateTime(DateUtil.parse(v.getUpTimeKey(), DatePattern.PURE_DATETIME_PATTERN))));
+    }
 }

+ 7 - 60
src/main/java/com/fdkankan/scene/service/impl/SceneUploadServiceImpl.java

@@ -50,7 +50,7 @@ public class SceneUploadServiceImpl implements ISceneUploadService {
 
     @Override
     public String uploads(String imgData,String fileName,String blzType,MultipartFile[] files,
-        String sceneCode,Integer type, String uploadPath, Integer subgroup) throws Exception{
+        String sceneCode,Integer type, String uploadPath, Integer subgroup, String upTime) throws Exception{
 
         List<MultipartFile> multipartFiles = new ArrayList<>();
         if(StringUtils.isNotBlank(imgData)){
@@ -60,12 +60,12 @@ public class SceneUploadServiceImpl implements ISceneUploadService {
         if(files !=null && files.length >0){
             multipartFiles.addAll(Arrays.asList(files));
         }
-        return this.uploadFiles(fileName,blzType,multipartFiles,sceneCode,type,uploadPath, subgroup);
+        return this.uploadFiles(fileName,blzType,multipartFiles,sceneCode,type,uploadPath, subgroup, upTime);
     }
 
     @Override
     public ResultData delete(DeleteFileParamVO param) throws Exception {
-        Scene scenePlus = sceneService.getByNum(param.getNum(), param.getSubgroup());
+        Scene scenePlus = sceneService.getByNum(param.getNum(), param.getSubgroup(), param.getUpTimeKey());
         if(Objects.isNull(scenePlus)){
             throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
         }
@@ -79,21 +79,21 @@ public class SceneUploadServiceImpl implements ISceneUploadService {
             hasDelete.add(fileName);
             String key = userEditPath + fileName;
             filePaths.add(key);
-            fYunFileService.deleteFile(param.getNum(), param.getSubgroup(), key);
+            fYunFileService.deleteFile(param.getNum(), param.getSubgroup(), param.getUpTimeKey(), key);
         }
 
         return ResultData.ok();
     }
 
     public String uploadFiles(String sendFileName,String bizType,List<MultipartFile> files,
-        String num, Integer type, String uploadPath, Integer subgroup) throws Exception{
+        String num, Integer type, String uploadPath, Integer subgroup, String upTime) throws Exception{
         if (StrUtil.isEmpty(num))
             throw new BusinessException(ErrorCode.PARAM_REQUIRED, "num");
         if(CollUtil.isEmpty(files))
             throw new BusinessException(ErrorCode.PARAM_REQUIRED, "files");
         if(StrUtil.isEmpty(bizType))
             throw new BusinessException(ErrorCode.PARAM_REQUIRED, "bizType");
-        Scene scene = sceneService.getByNum(num, subgroup);
+        Scene scene = sceneService.getByNum(num, subgroup, upTime);
         if(Objects.isNull(scene))
             throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
 
@@ -119,13 +119,12 @@ public class SceneUploadServiceImpl implements ISceneUploadService {
 
             String key = StrUtil.isNotBlank(uploadPath) ? uploadPath : (String.format(UploadFilePath.USER_VIEW_PATH , num) + realFileName);
 
-            fYunFileService.uploadFile(num, subgroup, path, key);
+            fYunFileService.uploadFile(num, subgroup, upTime, path, key);
 
             urlList.add(realFileName);
 
             FileUtil.del(path);
 
-            //添加记录
         }
         StringBuilder returnString = new StringBuilder();
         for (String res : urlList) {
@@ -137,56 +136,4 @@ public class SceneUploadServiceImpl implements ISceneUploadService {
         return returnString.toString();
     }
 
-//    private void updateFileByPreFix(String sceneCode, String blzType, String bucket) {
-//        LambdaQueryWrapper<SceneUpload> queryWrapper = new LambdaQueryWrapper<>();
-//        queryWrapper.eq(SceneUpload::getNum,sceneCode)
-//                .eq(SceneUpload::getBizType,blzType);
-//        List<SceneUpload> list = this.list(queryWrapper);
-//
-//        if(list != null && list.size() >0){
-//            for (SceneUpload sceneUpload : list) {
-//                try {
-//                    fYunFileService.deleteFile(bucket, sceneUpload.getFilePath());
-//                    this.removeEntity(sceneUpload);
-//                }catch (Exception e){
-//                    log.error(sceneUpload.getFilePath()+"删除oss文件失败",e);
-//                }
-//            }
-//        }
-//    }
-//
-//    private void removeEntity(SceneUpload sceneUpload) {
-//        sceneUpload.setRecStatus(RecStatus.VALID.code());
-//        this.updateById(sceneUpload);
-//    }
-//
-//    private void saveData(String sceneCode, String ossPath, String bizType,Long userId) {
-//        SceneUpload sceneUpload = new SceneUpload();
-//        sceneUpload.setNum(sceneCode);
-//        sceneUpload.setFilePath(ossPath);
-//        sceneUpload.setBizType(bizType);
-//        sceneUpload.setUploadUser(userId);
-//        this.save(sceneUpload);
-//    }
-//
-//    @Override
-//    public String uploadContent(UploadContentParamVO param) throws Exception {
-//
-//        String ossPath = param.getOssPath();
-//        String fileName = ossPath.substring(ossPath.lastIndexOf("/") + 1);
-//        if(StrUtil.isEmpty(fileName)){
-//            throw new BusinessException(ErrorCode.FAILURE_CODE_7012);
-//        }
-//        String suffix = fileName.substring(fileName.lastIndexOf("."));
-//        if(StrUtil.isEmpty(suffix)){
-//            throw new BusinessException(ErrorCode.FAILURE_CODE_7012);
-//        }
-//
-//        File tempFile = File.createTempFile(UUID.randomUUID().toString(), suffix);
-//        cn.hutool.core.io.FileUtil.writeString(param.getContent(), tempFile, StandardCharsets.UTF_8);
-//        fYunFileService.uploadFile(param.getBucket(), tempFile.getPath(), param.getOssPath());
-//        tempFile.deleteOnExit();
-//
-//        return this.ossUrlPrefix + param.getOssPath();
-//    }
 }

+ 2 - 0
src/main/java/com/fdkankan/scene/vo/BaseSceneParamVO.java

@@ -22,4 +22,6 @@ public class BaseSceneParamVO {
 
     private Integer subgroup;
 
+    private String upTimeKey;
+
 }

+ 7 - 0
src/main/java/com/fdkankan/scene/vo/SceneInfoVO.java

@@ -29,6 +29,8 @@ import java.util.Map;
 @AllArgsConstructor
 public class SceneInfoVO {
 
+    private Long id;
+
     /**
      * 场景码
      */
@@ -273,6 +275,9 @@ public class SceneInfoVO {
 
     List<Map<String, String>> entityList;
 
+    //历史时间
+    Map<String, String> historyList;
+
 //    @DateTimeFormat(pattern = "yyyy-MM-dd")
     @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
     private Date algorithmTime;
@@ -289,6 +294,8 @@ public class SceneInfoVO {
 
     private String deviceAddress;
 
+    private String upTimeKey;
+
 
 
 

+ 1 - 1
src/main/resources/application-dev.yml

@@ -46,7 +46,7 @@ tieta:
   serverName: scene
   checkToken:
     syscode: CHNTZCGL_ZCSZHGL
-  device-address: http://10.180.145.97:5068
+  device-address: http://10.180.41.34:9528
 
 redis:
   host: http://10.180.22.54:8081

+ 1 - 1
src/main/resources/application-preprod.yml

@@ -47,7 +47,7 @@ tieta:
   serverName: scene
   checkToken:
     syscode: CHNTZCGL_ZCSZHGL
-  device-address: http://10.161.32.174:5068
+  device-address: http://10.38.52.26:9528
 
 redis:
   host: http://10.34.53.34:8081

+ 1 - 1
src/main/resources/application-prod.yml

@@ -47,7 +47,7 @@ tieta:
   serverName: scene
   checkToken:
     syscode: CHNTZCGL_ZCSZHGL
-  device-address: http://3d.chinatowercom.cn:5068
+  device-address: http://res2.chinatowercom.cn:19528
 
 redis:
   host: http://192.168.53.243:8081

+ 1 - 1
src/main/resources/application-test.yml

@@ -47,7 +47,7 @@ tieta:
   serverName: scene
   checkToken:
     syscode: CHNTZCGL_ZCSZHGL
-  device-address: http://10.190.134.142:5068
+  device-address: http://10.190.107.146:29528
 
 redis:
   host: http://10.190.22.99:8081