dengsixing 3 år sedan
förälder
incheckning
a4d421944e

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

@@ -3,14 +3,13 @@ package com.fdkankan.scene.controller;
 
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fdkankan.common.constant.SceneInfoReqType;
 import com.fdkankan.common.response.ResultData;
 import com.fdkankan.common.response.ResultData;
 import com.fdkankan.scene.service.*;
 import com.fdkankan.scene.service.*;
 import com.fdkankan.scene.vo.*;
 import com.fdkankan.scene.vo.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
-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.RestController;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -49,8 +48,9 @@ public class SceneController {
     /**
     /**
      * 获取场景详情
      * 获取场景详情
      */
      */
-    @PostMapping(value = "/getInfo")
-    public SceneInfoVO getInfo(@RequestBody SceneInfoParamVO param){
+    @GetMapping(value = "/getInfo")
+    public SceneInfoVO getInfo(@Validated SceneInfoParamVO param){
+        param.setReqType(SceneInfoReqType.VIEW.code());
         return sceneEditInfoService.getSceneInfo(param);
         return sceneEditInfoService.getSceneInfo(param);
     }
     }
 
 

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

@@ -1,5 +1,6 @@
 package com.fdkankan.scene.controller;
 package com.fdkankan.scene.controller;
 
 
+import com.fdkankan.common.constant.SceneInfoReqType;
 import com.fdkankan.common.controller.BaseController;
 import com.fdkankan.common.controller.BaseController;
 import com.fdkankan.scene.service.ISceneEditInfoService;
 import com.fdkankan.scene.service.ISceneEditInfoService;
 import com.fdkankan.scene.service.ISceneProService;
 import com.fdkankan.scene.service.ISceneProService;
@@ -48,8 +49,8 @@ public class SceneEditController extends BaseController {
      * @return com.fdkankan.common.response.ResultData
      * @return com.fdkankan.common.response.ResultData
      **/
      **/
     @PostMapping(value = "/saveScene")
     @PostMapping(value = "/saveScene")
-    public SceneEditInfoVO saveSceneEditInfo(@RequestBody @Validated SceneEditInfoParamVO param){
-        return sceneEditInfoService.saveSceneEditInfo(param);
+    public SceneEditInfoVO saveScene(@RequestBody @Validated SceneEditInfoParamVO param){
+        return sceneEditInfoService.saveScene(param);
     }
     }
 
 
     /**
     /**
@@ -604,4 +605,13 @@ public class SceneEditController extends BaseController {
         return sceneEditInfoService.saveUpload(param);
         return sceneEditInfoService.saveUpload(param);
     }
     }
 
 
+    /**
+     * 获取场景详情
+     */
+    @GetMapping(value = "/getInfo")
+    public SceneInfoVO getInfo(@Validated SceneInfoParamVO param){
+        param.setReqType(SceneInfoReqType.EDIT.code());
+        return sceneEditInfoService.getSceneInfo(param);
+    }
+
 }
 }

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

@@ -11,7 +11,7 @@ import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.MultipartFile;
 
 
 @RestController
 @RestController
-@RequestMapping("/api/scene/upload")
+@RequestMapping("/api/scene/edit/upload")
 public class SceneUploadController extends BaseController {
 public class SceneUploadController extends BaseController {
 
 
     @Autowired
     @Autowired

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

@@ -16,7 +16,7 @@ import org.springframework.web.bind.annotation.RequestBody;
  */
  */
 public interface ISceneEditInfoService extends IService<SceneEditInfo> {
 public interface ISceneEditInfoService extends IService<SceneEditInfo> {
 
 
-    SceneEditInfoVO saveSceneEditInfo(SceneEditInfoParamVO param);
+    SceneEditInfoVO saveScene(SceneEditInfoParamVO param);
 
 
     SceneEditInfo getBySceneProId(long sceneProId);
     SceneEditInfo getBySceneProId(long sceneProId);
 
 

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

@@ -5,10 +5,7 @@ import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.fdkankan.common.constant.ConstantFilePath;
-import com.fdkankan.common.constant.ErrorCode;
-import com.fdkankan.common.constant.FileBizType;
-import com.fdkankan.common.constant.TbStatus;
+import com.fdkankan.common.constant.*;
 import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.response.ResultData;
 import com.fdkankan.common.response.ResultData;
 import com.fdkankan.fyun.oss.UploadToOssUtil;
 import com.fdkankan.fyun.oss.UploadToOssUtil;
@@ -26,8 +23,13 @@ import com.fdkankan.scene.service.ISceneEditInfoService;
 import com.fdkankan.scene.service.ISceneProService;
 import com.fdkankan.scene.service.ISceneProService;
 import com.fdkankan.scene.vo.*;
 import com.fdkankan.scene.vo.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
 import java.util.Calendar;
 import java.util.Calendar;
 import java.util.Objects;
 import java.util.Objects;
 
 
@@ -42,6 +44,8 @@ import java.util.Objects;
 @Service
 @Service
 public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper, SceneEditInfo> implements ISceneEditInfoService {
 public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper, SceneEditInfo> implements ISceneEditInfoService {
 
 
+    @Value("${oss.bucket:4dkankan}")
+    private String bucket;
     @Autowired
     @Autowired
     private ISceneEditControlsService sceneEditControlsService;
     private ISceneEditControlsService sceneEditControlsService;
     @Autowired
     @Autowired
@@ -53,7 +57,7 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper,
 
 
 
 
     @Override
     @Override
-    public SceneEditInfoVO saveSceneEditInfo(SceneEditInfoParamVO param) {
+    public SceneEditInfoVO saveScene(SceneEditInfoParamVO param) {
 
 
         ScenePro scenePro = sceneProService.findBySceneNum(param.getNum());
         ScenePro scenePro = sceneProService.findBySceneNum(param.getNum());
         if(Objects.isNull(scenePro)){
         if(Objects.isNull(scenePro)){
@@ -138,15 +142,29 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper,
 
 
     @Override
     @Override
     public SceneInfoVO getSceneInfo(SceneInfoParamVO param) {
     public SceneInfoVO getSceneInfo(SceneInfoParamVO param) {
-        //如果是查看页面请求,查redis
-        if(Objects.isNull(param.getReqType()) || param.getReqType() == 2){
-            String sceneJson = redisUtil.get(String.format(RedisKey.SCENE_JSON, param.getNum()));
-            SceneInfoVO sceneInfoVO = JSON.parseObject(sceneJson, SceneInfoVO.class);
-            return sceneInfoVO;
+        SceneInfoReqType sceneInfoReqType = SceneInfoReqType.get(param.getReqType());
+        switch (sceneInfoReqType){
+            //如果是编辑页面请求,查数据库
+            case EDIT:
+                return this.getSceneInfo4Edit(param.getNum());
+            //如果是查看页面请求,查redis
+            case VIEW:
+                return this.getSceneInfo4View(param.getNum());
         }
         }
+        return null;
+    }
 
 
-        //如果是编辑页面请求,查数据库
-        ScenePro scenePro = sceneProService.findBySceneNum(param.getNum());
+    /**
+     * <p>
+            编辑页面获取场景详情信息
+     * </p>
+     * @author dengsixing
+     * @date 2022/1/21
+     * @param num
+     * @return com.fdkankan.scene.vo.SceneInfoVO
+     **/
+    private SceneInfoVO getSceneInfo4Edit(String num){
+        ScenePro scenePro = sceneProService.findBySceneNum(num);
         if(Objects.isNull(scenePro)){
         if(Objects.isNull(scenePro)){
             throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
             throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
         }
         }
@@ -154,7 +172,46 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper,
         SceneEditControls sceneEditControls = sceneEditControlsService.getBySceneEditId(sceneEditInfo.getId());
         SceneEditControls sceneEditControls = sceneEditControlsService.getBySceneEditId(sceneEditInfo.getId());
         SceneInfoVO sceneInfoVO = BeanUtil.copyProperties(sceneEditInfo, SceneInfoVO.class);
         SceneInfoVO sceneInfoVO = BeanUtil.copyProperties(sceneEditInfo, SceneInfoVO.class);
         sceneInfoVO.setControls(BeanUtil.copyProperties(sceneEditControls, SceneEditControlsVO.class));
         sceneInfoVO.setControls(BeanUtil.copyProperties(sceneEditControls, SceneEditControlsVO.class));
-        sceneInfoVO.setNum(param.getNum());
+        sceneInfoVO.setNum(num);
+
+        return sceneInfoVO;
+    }
+
+    /**
+     * <p>
+     查看页面获取场景详情信息
+     * </p>
+     * @author dengsixing
+     * @date 2022/1/21
+     * @param num
+     * @return com.fdkankan.scene.vo.SceneInfoVO
+     **/
+    private SceneInfoVO getSceneInfo4View(String num){
+        String sceneJson = redisUtil.get(String.format(RedisKey.SCENE_JSON, num));
+        SceneInfoVO sceneInfoVO = null;
+        //先查询redis
+        if(StrUtil.isNotEmpty(sceneJson)){
+            sceneInfoVO = JSON.parseObject(sceneJson, SceneInfoVO.class);
+            return sceneInfoVO;
+        }
+
+        //如果redis没找到,从scene.json中获取
+        String objectName = String.format(ConstantFilePath.SCENE_VIEW_DATA_DATA_SCENEJSON, num);
+        InputStream objectContent = uploadToOssUtil.getObjectContent(bucket, objectName);
+        if(Objects.isNull(objectContent))
+            return null;
+        StringBuilder contentJson = new StringBuilder();
+        try(BufferedReader reader = new BufferedReader(new InputStreamReader(objectContent))){
+            while (true) {
+                String line = reader.readLine();
+                if (line == null) break;
+                contentJson.append(line);
+            }
+            sceneInfoVO = JSON.parseObject(contentJson.toString(), SceneInfoVO.class);
+        } catch (IOException e) {
+            log.error("读取scene.json文件流失败", e);
+            throw new BusinessException(ErrorCode.SYSTEM_BUSY);
+        }
 
 
         return sceneInfoVO;
         return sceneInfoVO;
     }
     }

+ 11 - 4
4dkankan-common/src/main/java/com/fdkankan/common/exception/GlobalExceptionHandler.java

@@ -6,6 +6,7 @@ import com.fdkankan.common.constant.ServerCode;
 import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.response.ResultData;
 import com.fdkankan.common.response.ResultData;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.validation.BindException;
 import org.springframework.validation.BindingResult;
 import org.springframework.validation.BindingResult;
 import org.springframework.validation.FieldError;
 import org.springframework.validation.FieldError;
 import org.springframework.validation.ObjectError;
 import org.springframework.validation.ObjectError;
@@ -38,9 +39,15 @@ public class GlobalExceptionHandler {
      * 校验错误拦截处理
      * 校验错误拦截处理
      */
      */
     @ResponseBody
     @ResponseBody
-    @ExceptionHandler(MethodArgumentNotValidException.class)
-    public ResultData validationBodyException(MethodArgumentNotValidException exception) {
-        BindingResult result = exception.getBindingResult();
+    @ExceptionHandler({BindException.class,MethodArgumentNotValidException.class})
+    public ResultData validationBodyException(Exception exception) {
+        BindingResult result = null;
+        if(exception instanceof MethodArgumentNotValidException){
+            result = ((MethodArgumentNotValidException) exception).getBindingResult();
+        }
+        if(exception instanceof BindException){
+            result = ((BindException) exception).getBindingResult();
+        }
         String message = "";
         String message = "";
         if (result.hasErrors()) {
         if (result.hasErrors()) {
             List<ObjectError> errors = result.getAllErrors();
             List<ObjectError> errors = result.getAllErrors();
@@ -48,7 +55,6 @@ public class GlobalExceptionHandler {
                 errors.forEach(p -> {
                 errors.forEach(p -> {
                     FieldError fieldError = (FieldError) p;
                     FieldError fieldError = (FieldError) p;
                     log.error("参数校验错误:类:{},字段:{},错误信息:{}",fieldError.getObjectName(), fieldError.getField(), fieldError.getDefaultMessage());
                     log.error("参数校验错误:类:{},字段:{},错误信息:{}",fieldError.getObjectName(), fieldError.getField(), fieldError.getDefaultMessage());
-
                 });
                 });
                 if (errors.size() > 0) {
                 if (errors.size() > 0) {
                     FieldError fieldError = (FieldError) errors.get(0);
                     FieldError fieldError = (FieldError) errors.get(0);
@@ -59,6 +65,7 @@ public class GlobalExceptionHandler {
         return ResultData.error(ErrorCode.PARAM_FORMAT_ERROR.code(), message);
         return ResultData.error(ErrorCode.PARAM_FORMAT_ERROR.code(), message);
     }
     }
 
 
+
     /**
     /**
      * 处理业务异常
      * 处理业务异常
      */
      */