فهرست منبع

v3请求v4接口改为内网请求

dengsixing 3 سال پیش
والد
کامیت
b29842c47d

+ 0 - 72
4dkankan-center-scene/src/main/java/com/fdkankan/scene/config/V4ControllerAspect.java

@@ -1,72 +0,0 @@
-package com.fdkankan.scene.config;
-
-import java.net.InetAddress;
-import javax.servlet.http.HttpServletRequest;
-import lombok.extern.slf4j.Slf4j;
-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.stereotype.Component;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
-
-@Component
-@Aspect
-@Slf4j
-public class V4ControllerAspect {
-	// 切入点表达式
-	@Pointcut("execution(public * com.fdkankan.scene.controller.TestController.*(..))")
-	public void privilege() {
-	}
-
-	@Before("privilege()")
-	public void beforeHandler(JoinPoint pjp) throws Throwable {
-		// 定义返回参数
-		Object result = null;
-		// 获取方法参数
-		HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
-		// 请求的URL
-		String ip = getIpAddr(request);
-		log.info("客户端ip:{}", ip);
-		InetAddress localHost = InetAddress.getLocalHost();
-		String hostAddress = localHost.getHostAddress();
-		log.info("本地ip:{}", hostAddress);
-
-		String canonicalHostName = localHost.getCanonicalHostName();
-		log.info("主机名:{}", canonicalHostName);
-	}
-
-	/**
-	 * @Title: getIpAddr
-	 * @Description: 获取ip
-	 * @param request
-	 * @return
-	 * @return String 返回类型
-	 */
-	public String getIpAddr(HttpServletRequest request) {
-		String ipAddress = null;
-		ipAddress = request.getHeader("x-forwarded-for");
-		if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
-			ipAddress = request.getHeader("Proxy-Client-IP");
-		}
-		if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
-			ipAddress = request.getHeader("WL-Proxy-Client-IP");
-		}
-		if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
-			ipAddress = request.getRemoteAddr();
-		}
-
-		//对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割
-		if (ipAddress != null && ipAddress.length() > 15) { // "***.***.***.***".length()
-			// = 15
-			if (ipAddress.indexOf(",") > 0) {
-				ipAddress = ipAddress.substring(0, ipAddress.indexOf(","));
-			}
-		}
-		// 或者这样也行,对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割
-		//return ipAddress!=null&&!"".equals(ipAddress)?ipAddress.split(",")[0]:null;
-		return ipAddress;
-	}
-}
-

+ 0 - 33
4dkankan-center-scene/src/main/java/com/fdkankan/scene/controller/SceneController.java

@@ -207,39 +207,6 @@ public class SceneController extends BaseController{
         return sceneProService.getScenesBySnCode(snCode,getToken());
     }
 
-
-    /**
-     * <p>
-            场景升级
-            此接口用于V3\V4系统并存过渡期,场景升级v4做数据迁移用,待V3关闭可以删除
-     * </p>
-     * @author dengsixing
-     * @date 2022/4/21
-     * @return com.fdkankan.common.response.ResultData
-     **/
-    @PostMapping(value = "/upgradeToV4")
-    public ResultData upgradeToV4(@RequestBody @Validated UpgradeToV4ParamVO param){
-        ResultData resultData = sceneUpgradeToV4Service.upgradeToV4(param);
-        return resultData;
-    }
-
-    /**
-     * <p>
-            场景升级进度查询
-            此接口用于V3\V4系统并存过渡期,场景升级v4做数据迁移用,待V3关闭可以删除
-     * </p>
-     * @author dengsixing
-     * @date 2022/4/21
-     * @return com.fdkankan.common.response.ResultData
-     **/
-    @GetMapping(value = "/getUpgradeToV4Progress")
-    public ResultData getUpgradeToV4Progress(@RequestParam(value = "num") String num){
-        ResultData resultData = sceneUpgradeToV4Service.getUpgradeToV4Progress(num);
-        return resultData;
-    }
-
-
-
 //    /**
 //     * 获取场景详情
 //     */

+ 1 - 1
4dkankan-center-scene/src/main/java/com/fdkankan/scene/controller/SceneEditController.java

@@ -889,7 +889,7 @@ public class SceneEditController extends BaseController {
      */
     @PostMapping(value = "/getAuth")
     public SceneAuthVO getAuth(BaseSceneParamVO param) throws Exception{
-        return sceneEditService.getAuth(param);
+        return sceneEditService.getAuth(param, this.getToken());
     }
 
     /**

+ 62 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/controller/V3Controller.java

@@ -0,0 +1,62 @@
+package com.fdkankan.scene.controller;
+
+import com.fdkankan.common.controller.BaseController;
+import com.fdkankan.common.response.ResultData;
+import com.fdkankan.scene.service.ISceneUpgradeToV4Service;
+import com.fdkankan.scene.vo.UpgradeToV4ParamVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * TODO
+ * </p>
+ *
+ * @author dengsixing
+ * @since 2022/5/20
+ **/
+@RestController
+@RequestMapping("/service-v3/scene")
+public class V3Controller extends BaseController {
+
+    @Autowired
+    private ISceneUpgradeToV4Service sceneUpgradeToV4Service;
+
+    /**
+     * <p>
+     场景升级
+     此接口用于V3\V4系统并存过渡期,场景升级v4做数据迁移用,待V3关闭可以删除
+     * </p>
+     * @author dengsixing
+     * @date 2022/4/21
+     * @return com.fdkankan.common.response.ResultData
+     **/
+    @PostMapping(value = "/upgradeToV4")
+    public ResultData upgradeToV4(@RequestBody @Validated UpgradeToV4ParamVO param){
+        ResultData resultData = sceneUpgradeToV4Service.upgradeToV4(param);
+        return resultData;
+    }
+
+    /**
+     * <p>
+     场景升级进度查询
+     此接口用于V3\V4系统并存过渡期,场景升级v4做数据迁移用,待V3关闭可以删除
+     * </p>
+     * @author dengsixing
+     * @date 2022/4/21
+     * @return com.fdkankan.common.response.ResultData
+     **/
+    @GetMapping(value = "/getUpgradeToV4Progress")
+    public ResultData getUpgradeToV4Progress(@RequestParam(value = "num") String num){
+        ResultData resultData = sceneUpgradeToV4Service.getUpgradeToV4Progress(num);
+        return resultData;
+    }
+
+
+}

+ 11 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/httpclient/FdkankanMiniClient.java

@@ -2,6 +2,7 @@ package com.fdkankan.scene.httpclient;
 
 import com.dtflys.forest.annotation.Body;
 import com.dtflys.forest.annotation.Get;
+import com.dtflys.forest.annotation.Header;
 import com.dtflys.forest.annotation.Post;
 import com.dtflys.forest.annotation.Retry;
 import com.dtflys.forest.annotation.Success;
@@ -13,8 +14,10 @@ import com.fdkankan.common.response.Result;
 import com.fdkankan.scene.bean.CameraBean;
 import com.fdkankan.scene.bean.UserIncrementBean;
 import com.fdkankan.scene.callback.FdkkMiniReqSuccessCondition;
+import com.fdkankan.scene.entity.SceneProV3;
 import java.io.File;
 import java.io.InputStream;
+import java.util.Map;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.multipart.MultipartFile;
@@ -44,4 +47,12 @@ public interface FdkankanMiniClient {
     @Retry(maxRetryCount = "3", maxRetryInterval = "100")
     Result<CameraBean> getCameraByCameraId(@Var("url") String url, OnSuccess<Result> onSuccess, OnError onError);
 
+    @Get(url="{url}")
+    @Retry(maxRetryCount = "3", maxRetryInterval = "100")
+    Result<SceneProV3> getSceneProByNum(@Var("url") String url, OnSuccess<Result> onSuccess, OnError onError);
+
+    @Post(url="{url}")
+    @Retry(maxRetryCount = "3", maxRetryInterval = "100")
+    Result<Map<String, Object>> getIsLogin(@Var("url") String url, @Header("token") String token, OnSuccess<Result> onSuccess, OnError onError);
+
 }

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

@@ -19,7 +19,7 @@ import org.springframework.web.bind.annotation.RequestBody;
  **/
 public interface ISceneEditService {
 
-    SceneAuthVO getAuth(BaseSceneParamVO param) throws Exception;
+    SceneAuthVO getAuth(BaseSceneParamVO param, String token) throws Exception;
 
     ResultData locales(LocalesParamVO param) throws Exception;
 

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

@@ -48,6 +48,7 @@ import com.fdkankan.scene.entity.SceneEditInfoExt;
 import com.fdkankan.scene.entity.ScenePlus;
 import com.fdkankan.scene.entity.ScenePlusExt;
 import com.fdkankan.scene.entity.ScenePro;
+import com.fdkankan.scene.entity.SceneProV3;
 import com.fdkankan.scene.factory.FloorLogoHandlerFactory;
 import com.fdkankan.scene.factory.MusicHandlerFactory;
 import com.fdkankan.scene.factory.ScreenshotHandlerFactory;
@@ -363,6 +364,27 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper,
     @Override
     public SceneInfoVO getSceneInfo(@Var SceneInfoParamVO param) throws Exception{
         SceneInfoReqType sceneInfoReqType = SceneInfoReqType.get(param.getReqType());
+        // TODO: 2022/5/19 请求v3的接口,获取场景的状态 待v3停机后要换成v4d的逻辑-------------------------start
+        String url = fkankanMiniHost + "/api-v4/getSceneProByNum?num=" + param.getNum();
+        Result<SceneProV3> result = fdkankanMiniClient
+            .getSceneProByNum(url, new FdkkMiniReqSuccessCallback(),
+                new FdkkMiniReqErrorCallback());
+        SceneProV3 sceneProV3 = result.getData();
+        if(sceneProV3 == null || sceneProV3.getId() == null){
+            throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
+        }
+        if(sceneProV3.getRecStatus().equals("I")){
+            throw new BusinessException(ErrorCode.FAILURE_CODE_5009);
+        }
+        if(SceneStatus.SUCCESS.code() != sceneProV3.getStatus()
+            && SceneStatus.NO_DISPLAY.code() != sceneProV3.getStatus()){
+            throw new BusinessException(ErrorCode.FAILURE_CODE_5033);
+        }
+        if(PayStatus.PAY.code() != sceneProV3.getPayStatus()){
+            throw new BusinessException(ErrorCode.FAILURE_CODE_5034);
+        }
+
+        // TODO: 2022/5/19 请求v3的接口,获取场景的状态 待v3停机后要换成v4d的逻辑-------------------------send
         switch (sceneInfoReqType){
             //如果是编辑页面请求,查数据库
             case EDIT:
@@ -450,7 +472,7 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper,
         if(Objects.isNull(cameraId)){
             return;
         }
-        String url = fkankanMiniHost + "/api/user/camera/getDataSyncByCameraId?cameraId=" + cameraId;
+        String url = fkankanMiniHost + "/api-v4/getDataSyncByCameraId?cameraId=" + cameraId;
         Result<String> dataSyncResult = fdkankanMiniClient
             .getDataSyncType(url, new FdkkMiniReqSuccessCallback(), new FdkkMiniReqErrorCallback());
         sceneInfoVO.setDataSync(dataSyncResult.getMsg());

+ 16 - 33
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneEditServiceImpl.java

@@ -42,6 +42,7 @@ import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -84,7 +85,7 @@ public class SceneEditServiceImpl implements ISceneEditService {
     private FdkankanMiniClient fdkankanMiniClient;
 
     @Override
-    public SceneAuthVO getAuth(BaseSceneParamVO param) throws Exception{
+    public SceneAuthVO getAuth(BaseSceneParamVO param, String token) throws Exception{
 
         ScenePlus scenePlus = scenePlusService.getOne(
             new LambdaQueryWrapper<ScenePlus>().eq(ScenePlus::getNum, param.getNum())
@@ -130,40 +131,22 @@ public class SceneEditServiceImpl implements ISceneEditService {
 //            }
 //        }
         // TODO: 2022/4/25 v3v4共存过渡期结束需要删除,恢复上面注释内容 ------------------------------------------start
-        String url = fkankanMiniHost + "/api/user/increment/findByCameraId?cameraId=" + scenePlus.getCameraId();
-        Result<UserIncrementBean> userIncrementResult =
-            fdkankanMiniClient.getUserIncrementByCameraId(
-                url, new FdkkMiniReqSuccessCallback(), new FdkkMiniReqErrorCallback());
-        UserIncrementBean userIncrement = userIncrementResult.getData();
-        if(userIncrement != null){
-            if(userIncrement.getIsExpired() == 0){
-                isVip = true;
-            }
-            if(userIncrement.getIsExpired() == 1){
-                isExpired  = true;
-            }
-        }else{
-            url = fkankanMiniHost + "/api/user/camera/getCameraByCameraId?cameraId=" + scenePlus.getCameraId();
-            Result<CameraBean> cameraResult =
-                fdkankanMiniClient.getCameraByCameraId(
-                    url,new FdkkMiniReqSuccessCallback(), new FdkkMiniReqErrorCallback());
-            CameraBean camera = cameraResult.getData();
-            if(camera == null || Objects.isNull(camera.getId())){
-                throw new BusinessException(ServerCode.FEIGN_REQUEST_FAILD);
-            }
-            Date date = DateUtil.parse("2021-09-09 00:00:00", DateExtUtil.dateStyle);
-            //非07批次的放开
-            String pc = camera.getSnCode().substring(0,2);
-            if(!pc.equals("07") ){
-                if(camera.getCreateTime()!=null && date.after(camera.getCreateTime())){
-                    isVip = true;
-                    isExpired  = false;
-                }
-            }
-        }
+        String url = fkankanMiniHost + "/api/scene/isLogin?num=" + param.getNum();
+        Result<Map<String, Object>> isLoginResult = fdkankanMiniClient
+            .getIsLogin(url, token, new FdkkMiniReqSuccessCallback(),
+                new FdkkMiniReqErrorCallback());
+        Map<String, Object> data = isLoginResult.getData();
+        isVip = (boolean)data.get("isIncrement");
+        isExpired = (boolean)data.get("isExpired");
+        Integer company = data.get("company") == null ? null : (int)data.get("company");
         // TODO: 2022/4/25 v3v4共存过渡期结束需要删除,恢复上面注释内容 ------------------------------------------end
 
-        return SceneAuthVO.builder().isExpired(isExpired).isVip(isVip).build();
+        return SceneAuthVO.builder()
+            .isExpired(isExpired).isVip(isVip)
+            .company(company)
+            .exclude(data.get("exclude"))
+            .include(data.get("include"))
+            .build();
     }
 
     @Override

+ 7 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/vo/SceneAuthVO.java

@@ -1,6 +1,7 @@
 package com.fdkankan.scene.vo;
 
 import com.alibaba.fastjson.annotation.JSONField;
+import java.util.List;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
@@ -34,6 +35,12 @@ public class SceneAuthVO {
      */
     private boolean isVip;
 
+    private Integer company;
+
+    private Object exclude;
+
+    private Object include;
+
     public void setIsExpired(boolean isExpired){
         this.isExpired = isExpired;
     }