Browse Source

调整元宇宙坐标

sunkean 3 years ago
parent
commit
98bc1348e0

+ 29 - 0
src/main/java/com/izouma/nineth/converter/CoordinateConverter.java

@@ -0,0 +1,29 @@
+package com.izouma.nineth.converter;
+
+
+import com.alibaba.fastjson.JSON;
+import com.izouma.nineth.dto.CoordinateDTO;
+import org.apache.commons.lang3.StringUtils;
+
+import javax.persistence.AttributeConverter;
+import javax.persistence.Converter;
+
+@Converter
+public class CoordinateConverter implements AttributeConverter<CoordinateDTO, String> {
+
+    @Override
+    public String convertToDatabaseColumn(CoordinateDTO fileObject) {
+        if (fileObject != null)
+            return JSON.toJSONString(fileObject);
+        return null;
+    }
+
+    @Override
+    public CoordinateDTO convertToEntityAttribute(String s) {
+        if (StringUtils.isNotEmpty(s)) {
+            return JSON.parseObject(s, CoordinateDTO.class);
+        }
+        return null;
+    }
+}
+

+ 6 - 4
src/main/java/com/izouma/nineth/domain/MetaSpatialInfo.java

@@ -1,5 +1,7 @@
 package com.izouma.nineth.domain;
 
+import com.izouma.nineth.converter.CoordinateConverter;
+import com.izouma.nineth.dto.CoordinateDTO;
 import com.izouma.nineth.enums.MetaRegionEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -7,6 +9,7 @@ import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
+import javax.persistence.Convert;
 import javax.persistence.Entity;
 
 @Data
@@ -28,9 +31,8 @@ public class MetaSpatialInfo extends BaseEntity {
     @ApiModelProperty("空间大小")
     private int size;
 
-    @ApiModelProperty("区域内坐标x轴")
-    private String axisX;
+    @ApiModelProperty("区域内坐标")
+    @Convert(converter = CoordinateConverter.class)
+    private CoordinateDTO coordinate;
 
-    @ApiModelProperty("区域内坐标y轴")
-    private String axisY;
 }

+ 5 - 1
src/main/java/com/izouma/nineth/dto/BuildingPosDTO.java

@@ -1,12 +1,15 @@
 package com.izouma.nineth.dto;
 
 
+import com.izouma.nineth.converter.CoordinateConverter;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
+import javax.persistence.Convert;
+
 @Data
 @AllArgsConstructor
 @NoArgsConstructor
@@ -17,7 +20,8 @@ public class BuildingPosDTO {
     private Long itemId;
 
     @ApiModelProperty("位置信息")
-    private String pos;
+    @Convert(converter = CoordinateConverter.class)
+    private CoordinateDTO coordinate;
 
     @ApiModelProperty("旋转值")
     private String rotateCount;

+ 20 - 0
src/main/java/com/izouma/nineth/dto/CoordinateDTO.java

@@ -0,0 +1,20 @@
+package com.izouma.nineth.dto;
+
+
+import io.swagger.annotations.ApiModel;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@ApiModel("元宇宙坐标")
+public class CoordinateDTO {
+
+    private String x;
+
+    private String y;
+
+    private String z;
+}

+ 2 - 1
src/main/java/com/izouma/nineth/repo/MetaSpatialInfoRepo.java

@@ -1,6 +1,7 @@
 package com.izouma.nineth.repo;
 
 import com.izouma.nineth.domain.MetaSpatialInfo;
+import com.izouma.nineth.dto.CoordinateDTO;
 import com.izouma.nineth.enums.MetaRegionEnum;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
@@ -17,7 +18,7 @@ public interface MetaSpatialInfoRepo extends JpaRepository<MetaSpatialInfo, Long
     @Transactional
     void softDelete(Long id);
 
-    MetaSpatialInfo findByRegionAndAxisXAndAxisYAndDel(MetaRegionEnum region, String axisX, String axisY, boolean del);
+    MetaSpatialInfo findByRegionAndCoordinateAndDel(MetaRegionEnum region, CoordinateDTO coordinate, boolean del);
 
     List<MetaSpatialInfo> findAllByUserIdAndDel(Long userId, boolean del);
 

+ 1 - 1
src/main/java/com/izouma/nineth/web/MetaSpatialInfoController.java

@@ -27,7 +27,7 @@ public class MetaSpatialInfoController extends BaseController {
     //@PreAuthorize("hasRole('ADMIN')")
     @PostMapping("/save")
     public MetaSpatialInfo save(@RequestBody MetaSpatialInfo record) {
-        MetaSpatialInfo metaSpatialInfo = metaSpatialInfoRepo.findByRegionAndAxisXAndAxisYAndDel(record.getRegion(), record.getAxisX(), record.getAxisY(), false);
+        MetaSpatialInfo metaSpatialInfo = metaSpatialInfoRepo.findByRegionAndCoordinateAndDel(record.getRegion(), record.getCoordinate(), false);
         if (Objects.nonNull(metaSpatialInfo) && !Objects.equals(metaSpatialInfo.getId(), record.getId())) {
             throw new BusinessException("当前区域内已经存在该坐标的空间");
         }

+ 20 - 9
src/main/vue/src/views/MetaSpatialInfoEdit.vue

@@ -27,11 +27,14 @@
 							</el-option>
 						</el-select>
 					</el-form-item>
-					<el-form-item prop="axisX" label="区域内坐标x轴">
-						<el-input v-model="formData.axisX"> </el-input>
+					<el-form-item prop="x" label="区域内坐标x轴">
+						<el-input v-model="formData.x"> </el-input>
 					</el-form-item>
-					<el-form-item prop="axisY" label="区域内坐标y轴">
-						<el-input v-model="formData.axisY"> </el-input>
+					<el-form-item prop="y" label="区域内坐标y轴">
+						<el-input v-model="formData.y"> </el-input>
+					</el-form-item>
+                    <el-form-item prop="z" label="区域内坐标z轴">
+						<el-input v-model="formData.z"> </el-input>
 					</el-form-item>
 					<el-form-item prop="sale" label="挂售">
 						<el-switch v-model="formData.sale"> </el-switch>
@@ -62,6 +65,11 @@ export default {
 			this.$http
 				.get('metaSpatialInfo/get/' + this.$route.query.id)
 				.then(res => {
+                    if (res.coordinate) {
+                        res.x = res.coordinate.x
+                        res.y = res.coordinate.y
+                        res.z = res.coordinate.z
+                    }
 					this.formData = res;
 				})
 				.catch(e => {
@@ -82,24 +90,24 @@ export default {
 						trigger: 'blur'
 					}
 				],
-				axisX: [
+				x: [
 					{
 						required: true,
 						message: '请输入区域内坐标x轴',
 						trigger: 'blur'
 					}
 				],
-				axisY: [
+				y: [
 					{
 						required: true,
 						message: '请输入区域内坐标y轴',
 						trigger: 'blur'
 					}
 				],
-				sale: [
+                z: [
 					{
 						required: true,
-						message: '请输入状态',
+						message: '请输入区域内坐标z轴',
 						trigger: 'blur'
 					}
 				],
@@ -143,7 +151,10 @@ export default {
 		},
 		submit() {
 			let data = { ...this.formData };
-            console.log(data)
+            data.coordinate = {x:this.formData.x, y:this.formData.y, z:this.formData.z}
+            delete data.x
+            delete data.y
+            delete data.z
 			this.saving = true;
 			this.$http
 				.post('/metaSpatialInfo/save', data, { body: 'json' })

+ 5 - 2
src/main/vue/src/views/MetaSpatialInfoList.vue

@@ -45,8 +45,11 @@
 			<el-table-column v-if="multipleMode" align="center" type="selection" width="50"> </el-table-column>
 			<el-table-column prop="id" label="ID" width="100"> </el-table-column>
 			<el-table-column prop="region" label="所属区域" :formatter="regionFormatter"> </el-table-column>
-			<el-table-column prop="axisX" label="区域内坐标x轴"> </el-table-column>
-			<el-table-column prop="axisY" label="区域内坐标y轴"> </el-table-column>
+			<el-table-column prop="coordinate" label="区域内坐标">
+                <template slot-scope="{ row }">
+					{{ 'x=' + row.coordinate.x + ' , ' + 'y=' + row.coordinate.y + ' , ' + 'z=' + row.coordinate.z }} 
+				</template>
+            </el-table-column>
 			<el-table-column prop="sale" label="状态">
 				<template slot-scope="{ row }">
 					{{ row.sale ? '可售' : '未售' }}