Procházet zdrojové kódy

新需求:作品目录加入tour.xml文件

wuweihao před 2 roky
rodič
revize
c8ba995d0d

+ 19 - 0
720yun_fd_manage/gis_common/src/main/java/com/gis/common/mapper/provider/BaseProvider.java

@@ -0,0 +1,19 @@
+package com.gis.common.mapper.provider;
+
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * Created by owen on 2022/2/9.
+ */
+@Slf4j
+public class BaseProvider {
+
+    public String selectSql(String sqlStr){
+        log.info("sqlStr: {}", sqlStr);
+        return sqlStr;
+    }
+
+
+
+}

+ 4 - 0
720yun_fd_manage/gis_mapper/src/main/java/com/gis/mapper/FodderMapper.java

@@ -1,6 +1,7 @@
 package com.gis.mapper;
 
 
+import com.gis.common.mapper.provider.BaseProvider;
 import com.gis.domain.dto.FodderPageDto;
 import com.gis.domain.dto.PageDto;
 import com.gis.domain.entity.FodderEntity;
@@ -30,4 +31,7 @@ public interface FodderMapper extends IBaseMapper<FodderEntity, Long> {
 
     @Select("select sum(file_size) from tb_fodder where is_delete=0 and user_id=#{phone} ")
     Integer countSize(String phone);
+
+    @SelectProvider(type = BaseProvider.class, method = "selectSql")
+    List<FodderEntity> batchBySceneCodes(String strSq);
 }

+ 5 - 0
720yun_fd_manage/gis_service/src/main/java/com/gis/service/FodderService.java

@@ -7,6 +7,8 @@ import com.gis.domain.dto.PageDto;
 import com.gis.domain.entity.FodderEntity;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.util.List;
+
 
 /**
  * Created by owen on 2020/3/11 0011 16:14
@@ -28,4 +30,7 @@ public interface FodderService extends IBaseService<FodderEntity, Long> {
 
 
     Result remove(Long id);
+
+    // 2022-09-15
+    List<FodderEntity> batchBySceneCodes(List<String> sceneCodes);
 }

+ 9 - 0
720yun_fd_manage/gis_service/src/main/java/com/gis/service/impl/FodderServiceImpl.java

@@ -327,6 +327,15 @@ public class FodderServiceImpl extends IBaseServiceImpl<FodderEntity, Long> impl
         return Result.success();
     }
 
+    @Override
+    public List<FodderEntity> batchBySceneCodes(List<String> sceneCodes) {
+        // 转换为字符传
+        String join = StringUtils.join(sceneCodes, "','");
+        join = "'" + join + "'";
+        String sqlStr = StrUtil.format("select * from tb_fodder where is_delete=0 and type='pano' and scene_code in ({})", join);
+        return entityMapper.batchBySceneCodes(sqlStr);
+    }
+
 
     /**
      * 2022-05-31 by owen

+ 62 - 11
720yun_fd_manage/gis_service/src/main/java/com/gis/service/impl/WorkServiceImpl.java

@@ -11,8 +11,10 @@ import com.gis.common.util.*;
 import com.gis.domain.dto.PageDto;
 import com.gis.domain.dto.SomeDataDto;
 import com.gis.domain.dto.WorkDto;
+import com.gis.domain.entity.FodderEntity;
 import com.gis.domain.entity.WorkEntity;
 import com.gis.mapper.*;
+import com.gis.service.FodderService;
 import com.gis.service.SceneService;
 import com.gis.service.WorkService;
 import com.github.pagehelper.PageHelper;
@@ -68,6 +70,9 @@ public class WorkServiceImpl extends IBaseStrServiceImpl<WorkEntity, String> imp
     @Autowired
     RedisUtil redisUtil;
 
+    @Autowired
+    FodderService fodderService;
+
 
 
 
@@ -252,7 +257,6 @@ public class WorkServiceImpl extends IBaseStrServiceImpl<WorkEntity, String> imp
         WorkEntity entity = findByIdForUpdate(id);
         if (entity == null) {
             log.error("作品已被删除,无法编辑, id: " + id);
-//            throw new BaseRuntimeException(MsgCode.e3006, "作品已被删除,无法编辑, id: " + id);
             throw new BaseRuntimeException(ErrorEnum.FAILURE_SYS_3001.code(), "作品已被删除,无法编辑, id: " + id);
         }
         try {
@@ -263,7 +267,6 @@ public class WorkServiceImpl extends IBaseStrServiceImpl<WorkEntity, String> imp
         }
         String userNameForToken = getUserNameForToken();
         if (!userNameForToken.equals(entity.getUserId())) {
-//            return Result.failure(MsgCode.e3005, "当前无操作权限");
             return Result.failure(ErrorEnum.FAILURE_SYS_3011.code(), "当前无操作权限");
         }
 
@@ -274,18 +277,50 @@ public class WorkServiceImpl extends IBaseStrServiceImpl<WorkEntity, String> imp
         }
 
         log.info("更新作品完成");
+        JSONObject someDataToJson = someDataToJson(param);
         // 保存someData.json
         editSomeData(param);
 
+        // 更新跟目录tour.xml 2022-09-15
+        updateTour(someDataToJson, id);
+
         return Result.success();
     }
 
     /**
-     * 更新作品实体信息
+     * 更新 tour.xml
+     * @param someDataToJson
+     * @param id
      */
-    private boolean editEntity(SomeDataDto param, WorkEntity entity) {
+    private void updateTour(JSONObject someDataToJson, String id) {
+        String scenes = someDataToJson.getString("scenes");
+        BaseRuntimeException.isBlank(scenes, null, "someData的场景码参数未空");
+        List<FodderEntity> list = fodderService.batchBySceneCodes(getSceneCodesList(scenes));
+
+        StringBuilder builder = new StringBuilder();
+        for (FodderEntity entity : list) {
+            String tour = entity.getTour();
+            builder.append(tour).append("\r\n");
+        }
+
+        String tourPath = configConstant.serverBasePath + id + "/tour.xml";
+        FileUtil.writeUtf8String(builder.toString(), tourPath);
+        log.info("作品tour.xml写入完成");
 
+        // 上传oss
+        BaseRuntimeException.isTrue(!FileUtil.isFile(tourPath), ErrorEnum.FAILURE_CODE_3103.code(), "服务器tour.xml文件不存在");
+
+        String ossKeyPath = configConstant.ossBasePath + id + "/tour.xml";
+        aliyunOssUtil.upload(tourPath, ossKeyPath);
+        log.info("tour.xml上传完成 : {}", ossKeyPath);
+    }
 
+
+
+    /**
+     * 更新作品实体信息
+     */
+    private boolean editEntity(SomeDataDto param, WorkEntity entity) {
         String someData = param.getSomeData();
         JSONObject sd = JSONObject.parseObject(someData);
         entity.setName(sd.getString("name"));
@@ -316,10 +351,32 @@ public class WorkServiceImpl extends IBaseStrServiceImpl<WorkEntity, String> imp
     }
 
     /**
+     * someDataToJson
+     * @param param someDataStr
+     * @return
+     */
+    private JSONObject someDataToJson(SomeDataDto param){
+        String someData = param.getSomeData();
+        JSONObject sd = JSONObject.parseObject(someData);
+        return sd;
+    }
+
+    /**
      * 传入参数是一个数组json字符串
      * @param param
      */
     private String getSceneCodes(String param){
+        List<String> list = getSceneCodesList(param);
+        String join = StringUtils.join(list, ",");
+        return join;
+    }
+
+    /**
+     * 场景码字符串转list
+     * @param param
+     * @return
+     */
+    private List<String> getSceneCodesList(String param){
         JSONArray array = JSONArray.parseArray(param);
         List<String> list = new ArrayList<>();
         for (Object o : array) {
@@ -327,12 +384,7 @@ public class WorkServiceImpl extends IBaseStrServiceImpl<WorkEntity, String> imp
             String sceneCode = parse.getString("sceneCode");
             list.add(sceneCode);
         }
-
-        String join = StringUtils.join(list, ",");
-
-        return join;
-
-
+        return list;
     }
 
     /**
@@ -370,7 +422,6 @@ public class WorkServiceImpl extends IBaseStrServiceImpl<WorkEntity, String> imp
 
         // 保存oss
         if (!FileUtil.isFile(saveSomeDataPath)) {
-//            Result.failure("服务器someData.json文件不存在");
             Result.failure(ErrorEnum.FAILURE_CODE_3103.code(), "服务器someData.json文件不存在");
         }