Browse Source

修改模板上传、创建场景的逻辑

hellohaidie 3 months ago
parent
commit
44604d9bf9

+ 14 - 0
src/main/java/com/lqkj/link/module/zone/domain/TemplateGeom.java

@@ -0,0 +1,14 @@
1
+package com.lqkj.link.module.zone.domain;
2
+
3
+import com.alibaba.fastjson2.JSONObject;
4
+import lombok.Getter;
5
+import lombok.Setter;
6
+
7
+import java.util.List;
8
+
9
+@Getter
10
+@Setter
11
+public class TemplateGeom {
12
+    private JSONObject init;
13
+    private List<TemplateInfo> models;
14
+}

+ 62 - 40
src/main/java/com/lqkj/link/module/zone/service/ZoneInfoService.java

@@ -4,10 +4,7 @@ import com.alibaba.fastjson2.JSON;
4
 import com.alibaba.fastjson2.JSONObject;
4
 import com.alibaba.fastjson2.JSONObject;
5
 import com.lqkj.link.module.authority.domain.UserInfo;
5
 import com.lqkj.link.module.authority.domain.UserInfo;
6
 import com.lqkj.link.module.authority.repository.UserInfoRepository;
6
 import com.lqkj.link.module.authority.repository.UserInfoRepository;
7
-import com.lqkj.link.module.zone.domain.GeomInfo;
8
-import com.lqkj.link.module.zone.domain.ModelInfo;
9
-import com.lqkj.link.module.zone.domain.TemplateInfo;
10
-import com.lqkj.link.module.zone.domain.ZoneInfo;
7
+import com.lqkj.link.module.zone.domain.*;
11
 import com.lqkj.link.module.zone.repository.GeomInfoRepository;
8
 import com.lqkj.link.module.zone.repository.GeomInfoRepository;
12
 import com.lqkj.link.module.zone.repository.ModelInfoRepository;
9
 import com.lqkj.link.module.zone.repository.ModelInfoRepository;
13
 import com.lqkj.link.module.zone.repository.ZoneInfoRepository;
10
 import com.lqkj.link.module.zone.repository.ZoneInfoRepository;
@@ -78,37 +75,59 @@ public class ZoneInfoService {
78
                 // ----model2.json 模型2材质
75
                 // ----model2.json 模型2材质
79
                 //
76
                 //
80
                 // geom.json文件总json格式:
77
                 // geom.json文件总json格式:
81
-                // [
82
-                //      {
83
-                //          "modelPath": "model1.fbx",
84
-                //          "location":[
85
-                //              {
86
-                //                  "rotation":
87
-                //                  {
88
-                //                      "x": 0,
89
-                //                      "y": 0,
90
-                //                      "z": 0,
91
-                //                      "w": 0
92
-                //                  },
93
-                //                  "translation":
94
-                //                  {
95
-                //                      "x": 0,
96
-                //                      "y": 0,
97
-                //                      "z": 0
98
-                //                  },
99
-                //                  "scale3D":
100
-                //                  {
101
-                //                      "x": 0,
102
-                //                      "y": 0,
103
-                //                      "z": 0
104
-                //                  }
105
-                //              }
106
-                //          ]
107
-                //      }
108
-                // ]
78
+                // 	{
79
+                //		"init": {
80
+                //			"rotation": {
81
+                //				"x": 0,
82
+                //				"y": 0,
83
+                //				"z": 0,
84
+                //				"w": 0
85
+                //			},
86
+                //			"translation": {
87
+                //				"x": 0,
88
+                //				"y": 0,
89
+                //				"z": 0
90
+                //			},
91
+                //			"scale3D": {
92
+                //				"x": 0,
93
+                //				"y": 0,
94
+                //				"z": 0
95
+                //			}
96
+                //		},
97
+                //		"models": [
98
+                //			{
99
+                //				"modelPath": "model1.fbx",
100
+                //				"location": [
101
+                //					{
102
+                //						"rotation": {
103
+                //							"x": 0,
104
+                //							"y": 0,
105
+                //							"z": 0,
106
+                //							"w": 0
107
+                //						},
108
+                //						"translation": {
109
+                //							"x": 0,
110
+                //							"y": 0,
111
+                //							"z": 0
112
+                //						},
113
+                //						"scale3D": {
114
+                //							"x": 0,
115
+                //							"y": 0,
116
+                //							"z": 0
117
+                //						}
118
+                //					}
119
+                //				]
120
+                //			}
121
+                //		]
122
+                //	}
109
                 Unzipper.unZipFiles(new File("." + zoneInfo.getTemplateFilePath()), "./upload/template/" + zoneInfo1.getZoneId() + "/");
123
                 Unzipper.unZipFiles(new File("." + zoneInfo.getTemplateFilePath()), "./upload/template/" + zoneInfo1.getZoneId() + "/");
110
                 String geomJsonString = Files.readString(Paths.get("./upload/template/" + zoneInfo1.getZoneId() + "/geom.json"));
124
                 String geomJsonString = Files.readString(Paths.get("./upload/template/" + zoneInfo1.getZoneId() + "/geom.json"));
111
-                List<TemplateInfo> templateInfoList = JSON.parseArray(geomJsonString, TemplateInfo.class);
125
+                TemplateGeom templateGeom = JSON.parseObject(geomJsonString, TemplateGeom.class);
126
+
127
+                zoneInfo1.setInitLocation(templateGeom.getInit());
128
+                zoneInfoRepository.save(zoneInfo1);
129
+
130
+                List<TemplateInfo> templateInfoList = templateGeom.getModels();
112
 
131
 
113
                 String modelFolderPath = "./upload/template/" + zoneInfo1.getZoneId() + "/models";
132
                 String modelFolderPath = "./upload/template/" + zoneInfo1.getZoneId() + "/models";
114
                 File modelFolder = new File(modelFolderPath);
133
                 File modelFolder = new File(modelFolderPath);
@@ -273,16 +292,19 @@ public class ZoneInfoService {
273
             result.put("msg", "不能与已有作品重名!");
292
             result.put("msg", "不能与已有作品重名!");
274
             return result;
293
             return result;
275
         }
294
         }
276
-        ZoneInfo zoneInfo = new ZoneInfo(null, userInfo.getUserId(), name, null,
277
-                null, 0, new Date(), 0, 0,
295
+
296
+        ZoneInfo template = null;
297
+        if (templateId != null) {
298
+            template = zoneInfoRepository.findById(templateId).get();
299
+        }
300
+
301
+        ZoneInfo zoneInfo = new ZoneInfo(null, userInfo.getUserId(), name, template == null ? null : template.getInitLocation(),
302
+                template == null ? null : template.getThumbnail(), 0, new Date(), 0, 0,
278
                 null, null, 0);
303
                 null, null, 0);
279
         ZoneInfo newInfo = zoneInfoRepository.save(zoneInfo);
304
         ZoneInfo newInfo = zoneInfoRepository.save(zoneInfo);
280
 
305
 
281
         if (templateId != null) {
306
         if (templateId != null) {
282
             GeometryFactory geometryFactory = new GeometryFactory();
307
             GeometryFactory geometryFactory = new GeometryFactory();
283
-            ZoneInfo template = zoneInfoRepository.findById(templateId).get();
284
-            newInfo.setThumbnail(template.getThumbnail());
285
-            zoneInfoRepository.save(newInfo);
286
             if (geomInfoRepository.hasGeom(templateId)) {
308
             if (geomInfoRepository.hasGeom(templateId)) {
287
                 List<GeomInfo> geomInfoList = geomInfoRepository.findAllByZoneId(templateId);
309
                 List<GeomInfo> geomInfoList = geomInfoRepository.findAllByZoneId(templateId);
288
                 List<GeomInfo> list = new ArrayList<>();
310
                 List<GeomInfo> list = new ArrayList<>();
@@ -303,11 +325,11 @@ public class ZoneInfoService {
303
                 }
325
                 }
304
                 geomInfoRepository.saveAll(list);
326
                 geomInfoRepository.saveAll(list);
305
             }
327
             }
328
+            // 模板使用次数+1
329
+            zoneInfoRepository.addTemplateUse(templateId);
306
         }
330
         }
307
         result.put("zone", newInfo);
331
         result.put("zone", newInfo);
308
 
332
 
309
-        // 模板使用次数+1
310
-        zoneInfoRepository.addTemplateUse(templateId);
311
         return result;
333
         return result;
312
     }
334
     }
313
 
335