Procházet zdrojové kódy

feign 补充,统一返回拦截处理

lyhzzz před 3 roky
rodič
revize
375ded80a5

+ 4 - 0
4dkankan-center-api/4dkankan-center-scene-api/src/main/java/com/fdkankan/scene/api/feign/SceneUserSceneClient.java

@@ -50,4 +50,8 @@ public interface SceneUserSceneClient {
     @PostMapping("/updatePayStatus")
     ResultData updatePayStatus(@RequestParam(value = "num") String num ,
                                @RequestParam(value = "payStatus") Integer payStatus);
+
+    @PostMapping("/updateUserIdByCameraId")
+    ResultData updateUserIdByCameraId(@RequestParam(value = "userId")Long userId,
+                                      @RequestParam(value = "cameraId")Long cameraId);
 }

+ 3 - 6
4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/ManagerCameraService.java

@@ -296,9 +296,7 @@ public class ManagerCameraService {
             userIncrementService.unbindCamera(detailEntity.getUserId(), userIncrementEntity.getId(), true,detailEntity,userIncrementEntity);
         }
 
-//        sceneService.updateUserIdByCameraId(null, cameraId);
-//        sceneService.updateUserIdByCameraIdPro(null, cameraId);
-        //todo updateUserIdByCameraId
+        sceneUserSceneClient.updateUserIdByCameraId(null,cameraId);
 
         //删除所有相机协作信息
 
@@ -318,10 +316,9 @@ public class ManagerCameraService {
         if(!bind){
             throw new BusinessException(ErrorCode.ERROR_MSG);
         }
+        sceneUserSceneClient.updateUserIdByCameraId(userEntity.getId(),cameraId);
         return ServerCode.SUCCESS.message();
-        //sceneService.updateUserIdByCameraId(userEntity.getId(), cameraId);
-        //sceneService.updateUserIdByCameraIdPro(userEntity.getId(), cameraId);
-        //todo updateUserIdByCameraId
+
     }
 
     public String manageSpace(RequestCamera param) {

+ 6 - 11
4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/impl/DeviceServiceImpl.java

@@ -20,6 +20,7 @@ import com.fdkankan.platform.user.request.RequestCamera;
 import com.fdkankan.platform.user.service.IUserIncrementService;
 import com.fdkankan.platform.user.service.IUserService;
 import com.fdkankan.platform.user.vo.ResponseCamera;
+import com.fdkankan.scene.api.feign.SceneUserSceneClient;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -43,6 +44,8 @@ public class DeviceServiceImpl implements IDeviceService {
     private IGoodsService goodsService;
     @Autowired
     private IUserIncrementService userIncrementService;
+    @Autowired
+    private SceneUserSceneClient sceneUserSceneClient;
 
 
     @Override
@@ -162,12 +165,7 @@ public class DeviceServiceImpl implements IDeviceService {
         }
         cameraDetailService.bind(cameraEntity.getId(), userEntity.getId());
 
-        if (cameraDetailEntity.getCameraType() == 0){
-            //result = sceneService.updateUserIdByCameraId(null, cameraEntity.getId());
-            //todo updateUserIdByCameraId
-        }else {
-            //result = sceneService.updateUserIdByCameraIdPro(null, cameraEntity.getId());
-        }
+        sceneUserSceneClient.updateUserIdByCameraId(null,cameraEntity.getId());
         return ServerCode.SUCCESS.message();
     }
 
@@ -200,11 +198,8 @@ public class DeviceServiceImpl implements IDeviceService {
         }
 
         cameraDetailService.bind(cameraEntity.getId(), userEntity.getId());
-//        Result result = sceneService.updateUserIdByCameraIdPro(userEntity.getId(), cameraEntity.getId());
-//        if (result.getCode() == Result.CODE_FAILURE){
-//            throw new Exception(LoginConstant.ERROR_MSG);
-//        }
-        //todo updateUserIdByCameraIdPro
+
+        sceneUserSceneClient.updateUserIdByCameraId(userEntity.getId(), cameraEntity.getId());
 
         ResponseCameraApp responseCamera = new ResponseCameraApp();
         responseCamera.setChildName(cameraEntity.getChildName());

+ 11 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/feign/UserSceenFeign.java

@@ -32,6 +32,8 @@ public class UserSceenFeign {
     ISceneEditInfoService sceneEditInfoService;
     @Autowired
     ISceneService sceneService;
+    @Autowired
+    ISceneProService sceneProService;
 
     @PostMapping("/getSceneCnt")
     ResultData<SceneCntDTO> getSceneCnt(@RequestParam(value = "userId") Long userId, Long cameraId){
@@ -98,5 +100,14 @@ public class UserSceenFeign {
         sceneService.updatePayStatus(num,payStatus);
         return ResultData.ok();
     }
+
+    @PostMapping("/updateUserIdByCameraId")
+    ResultData updateUserIdByCameraId(@RequestParam(value = "userId")Long userId,
+                                      @RequestParam(value = "cameraId")Long cameraId) throws Exception{
+
+        sceneService.updateUserIdByCameraId(userId,cameraId);
+        sceneProService.updateUserIdByCameraId(userId,cameraId);
+        return ResultData.ok();
+    }
 }
 

+ 44 - 0
4dkankan-common/src/main/java/com/fdkankan/common/config/ResultStatusDecoder.java

@@ -0,0 +1,44 @@
+package com.fdkankan.common.config;
+
+import com.alibaba.cloud.commons.io.IOUtils;
+import com.alibaba.fastjson.JSONObject;
+import com.fdkankan.common.constant.ServerCode;
+import com.fdkankan.common.exception.BusinessException;
+import com.fdkankan.common.response.ResultData;
+import feign.Response;
+import feign.codec.Decoder;
+import lombok.extern.slf4j.Slf4j;
+
+import java.io.IOException;
+import java.lang.reflect.Type;
+import java.nio.charset.StandardCharsets;
+import java.util.Objects;
+
+@Slf4j
+public final class ResultStatusDecoder implements Decoder {
+
+    public static final String CONTENT_KEY = "content";
+    final Decoder delegate;
+
+    public ResultStatusDecoder(Decoder delegate) {
+        Objects.requireNonNull(delegate, "Decoder must not be null. ");
+        this.delegate = delegate;
+    }
+
+    @Override
+    public Object decode(Response response, Type type) throws IOException {
+        // 判断是否返回参数是否是异常
+        String resultStr = IOUtils.toString(response.body().asInputStream(), StandardCharsets.UTF_8);
+        log.info("feign调用返回,result msg ->{}",resultStr);
+        try {
+            ResultData resultData = JSONObject.parseObject(resultStr, ResultData.class);
+            if(resultData.getCode() != ServerCode.SUCCESS.code()){
+                throw new BusinessException(resultData.getCode(),resultData.getMessage());
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        // 回写body
+        return delegate.decode(response.toBuilder().body(resultStr, StandardCharsets.UTF_8).build(), type);
+    }
+}

+ 23 - 0
4dkankan-common/src/main/java/com/fdkankan/common/config/SupportAutoConfiguration.java

@@ -0,0 +1,23 @@
+package com.fdkankan.common.config;
+
+
+import feign.codec.Decoder;
+import feign.optionals.OptionalDecoder;
+import org.springframework.beans.factory.ObjectFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
+import org.springframework.cloud.openfeign.support.ResponseEntityDecoder;
+import org.springframework.cloud.openfeign.support.SpringDecoder;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class SupportAutoConfiguration {
+    @Autowired
+    private ObjectFactory<HttpMessageConverters> messageConverters;
+
+    @Bean
+    public Decoder feignDecoder() {
+        return new ResultStatusDecoder(new OptionalDecoder(new ResponseEntityDecoder(new SpringDecoder(this.messageConverters))));
+    }
+}