浏览代码

删除字段前端检查字段

wuweihao 3 年之前
父节点
当前提交
678fc1f5fb

+ 1 - 0
README.md

@@ -10,6 +10,7 @@ gis_biguiyuan  AR-碧桂园项目-文通部门
 
 # 开发进度日志
   参考:https://www.bmob.cn  微信扫码登录
+  DDL参考:https://juejin.cn/post/7056774622414372901
  2022-3-21 删除表      已完成
  2022-3-21 删除字段    未完成
  

+ 13 - 24
gis_db/src/main/java/com/gis/db/controller/FieldController.java

@@ -3,6 +3,7 @@ package com.gis.db.controller;
 import com.gis.common.base.entity.dto.PageDto;
 import com.gis.common.util.Result;
 import com.gis.db.entity.dto.FieldDto;
+import com.gis.db.entity.dto.FieldPageDto;
 import com.gis.db.entity.dto.IdsDto;
 import com.gis.db.entity.dto.TableDto;
 import com.gis.db.entity.po.FieldEntity;
@@ -24,7 +25,7 @@ import java.util.List;
  */
 @Api(tags = "db-字段关接口")
 @RestController
-@RequestMapping("db/field")
+@RequestMapping("/db/field")
 public class FieldController {
 
     @Autowired
@@ -48,32 +49,20 @@ public class FieldController {
         return entityService.delField(param);
     }
 
-    @ApiOperation(value = "测试sql")
-    @GetMapping("testSql")
-    public Result testSql(){
-        return entityService.testSql();
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    @ApiOperation(value = "测试addField")
-    @PostMapping("addField")
-    public Result addFieldTest(@RequestBody List<FieldEntity> param){
-         ddlService.addField(param, "ts_aa");
-         return Result.success();
-    }
-
-    @ApiOperation(value = "查询-列表(根据表id分页查询)")
-    @PostMapping("getFieldData/{tableId}")
-    public Result getFieldData(@PathVariable Long tableId, @Valid @RequestBody PageDto param){
-        return entityService.getFieldData(tableId, param);
+    @ApiOperation(value = "字段列表")
+    @PostMapping("/getList")
+    public Result getList(@Valid @RequestBody FieldPageDto param){
+        return entityService.getList(param);
     }
 
+//    @Transactional(rollbackFor = Exception.class)
+//    @ApiOperation(value = "测试addField")
+//    @PostMapping("addField")
+//    public Result addFieldTest(@RequestBody List<FieldEntity> param){
+//         ddlService.addField(param, "ts_aa");
+//         return Result.success();
+//    }
 
-    @ApiOperation(value = "查询-详情", notes = "tableId:表id; id:记录id")
-    @PostMapping("detail/{tableId}/{id}")
-    public Result detail(@PathVariable Long tableId, @PathVariable Long id){
-        return entityService.detail(tableId, id);
-    }
 
 
 

+ 38 - 0
gis_db/src/main/java/com/gis/db/controller/RecordController.java

@@ -0,0 +1,38 @@
+package com.gis.db.controller;
+
+import com.gis.common.base.entity.dto.PageDto;
+import com.gis.common.util.Result;
+import com.gis.db.service.FieldService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+
+/**
+ * Created by owen on 2022/4/21 0021 15:53
+ */
+@Api(tags = "db-数据")
+@RestController
+@RequestMapping("/db/record")
+public class RecordController {
+
+    @Autowired
+    FieldService fieldService;
+
+
+    @ApiOperation(value = "查询-列表(根据表id分页查询)")
+    @PostMapping("getFieldData/{tableId}")
+    public Result getFieldData(@PathVariable Long tableId, @Valid @RequestBody PageDto param){
+        return fieldService.getFieldData(tableId, param);
+    }
+
+
+    @ApiOperation(value = "查询-详情", notes = "tableId:表id; id:记录id")
+    @PostMapping("detail/{tableId}/{id}")
+    public Result detail(@PathVariable Long tableId, @PathVariable Long id){
+        return fieldService.detail(tableId, id);
+    }
+
+}

+ 18 - 0
gis_db/src/main/java/com/gis/db/entity/dto/FieldPageDto.java

@@ -0,0 +1,18 @@
+package com.gis.db.entity.dto;
+
+import com.gis.common.base.entity.dto.PageDto;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * Created by owen on 2022/3/10 0010 17:34
+ */
+@Data
+public class FieldPageDto extends PageDto {
+
+    @NotBlank(message = "表id不能为空")
+    @ApiModelProperty(value = "表id",required = true)
+    private String tableId;
+}

+ 9 - 0
gis_db/src/main/java/com/gis/db/mapper/DdlMapper.java

@@ -3,6 +3,7 @@ package com.gis.db.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
@@ -22,5 +23,13 @@ public interface DdlMapper extends BaseMapper<Object> {
 
     void delTable(@Param("tableName")String tableName);
 
+    // 批量删除字段, 但字段不存在会出异常
     void delFields(@Param("tableName")String tableName, @Param("fieldNames")List<String> fieldNames);
+
+    void delField(@Param("tableName")String tableName, @Param("fieldName")String fieldName);
+
+    // 检查字段是否存在
+    @Select("SELECT count(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME =#{tableName} AND COLUMN_NAME =#{fieldName}")
+    Integer existColumn(String tableName, String fieldName);
+
 }

+ 3 - 0
gis_db/src/main/java/com/gis/db/mapper/FieldMapper.java

@@ -7,6 +7,7 @@ import com.gis.db.entity.po.FieldEntity;
 import com.gis.db.entity.po.TableEntity;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
 import org.apache.ibatis.annotations.Update;
 import org.springframework.stereotype.Component;
 
@@ -21,4 +22,6 @@ public interface FieldMapper extends BaseMapper<FieldEntity> {
 
     Map detail(@Param("tableName") String tableName, @Param("fieldNames") List<String> fileNames, @Param("id") Long id);
 
+    @Select("SELECT b.name from sys_field a left join sys_table b on b.id=a.table_id where a.is_delete=0 and a.id=#{id}")
+    String getTableNameByFieldId(Integer id);
 }

+ 3 - 0
gis_db/src/main/java/com/gis/db/service/FieldService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.gis.common.base.entity.dto.PageDto;
 import com.gis.common.util.Result;
 import com.gis.db.entity.dto.FieldDto;
+import com.gis.db.entity.dto.FieldPageDto;
 import com.gis.db.entity.dto.IdsDto;
 import com.gis.db.entity.dto.TableDto;
 import com.gis.db.entity.po.FieldEntity;
@@ -27,4 +28,6 @@ public interface FieldService extends IService<FieldEntity> {
     void removeBatchByTableId(List<Integer>tableIds);
 
     Result delField(IdsDto param);
+
+    Result getList(FieldPageDto param);
 }

+ 17 - 0
gis_db/src/main/java/com/gis/db/service/RecordService.java

@@ -0,0 +1,17 @@
+package com.gis.db.service;
+
+import com.gis.common.base.entity.dto.PageDto;
+import com.gis.common.util.Result;
+import com.gis.db.entity.po.FieldEntity;
+
+import java.util.List;
+
+/**
+ * Created by owen on 2022/3/10 0010 17:29
+ */
+public interface RecordService {
+
+
+
+
+}

+ 62 - 28
gis_db/src/main/java/com/gis/db/service/impl/FieldServiceImpl.java

@@ -1,6 +1,5 @@
 package com.gis.db.service.impl;
 
-import cn.hutool.core.lang.Validator;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -13,6 +12,7 @@ import com.gis.common.constant.ErrorEnum;
 import com.gis.common.util.BaseUtil;
 import com.gis.common.util.Result;
 import com.gis.db.entity.dto.FieldDto;
+import com.gis.db.entity.dto.FieldPageDto;
 import com.gis.db.entity.dto.IdsDto;
 import com.gis.db.entity.po.FieldEntity;
 import com.gis.db.entity.po.TableEntity;
@@ -80,30 +80,7 @@ public class FieldServiceImpl extends ServiceImpl<FieldMapper, FieldEntity> impl
         return Result.success();
     }
 
-    @Override
-    public Result getFieldData(Long tableId, PageDto param) {
-        BaseUtil.startPage(param);
-        IPage<Map> page = new Page<>(param.getPageNum() , param.getPageSize());
-        TableEntity tableEntity = tableService.getById(tableId);
-        BaseRuntimeException.isNull(tableEntity, ErrorEnum.FAILURE_CODE_3001);
-        IPage<Map> resPage = getBaseMapper().page(tableEntity.getName(), getFileNames(tableId), page);
-
-        Map resultMap = new HashMap();
-        resultMap.put("fieldNames", getResultByTableId(tableId));
-        resultMap.put("fieldData", resPage);
-
-        return Result.success(resultMap);
-    }
-
-    @Override
-    public Result detail(Long tableId, Long id) {
-        TableEntity tableEntity = tableService.getById(tableId);
-        BaseRuntimeException.isNull(tableEntity, ErrorEnum.FAILURE_CODE_3001);
 
-        Map dataMap = getBaseMapper().detail(tableEntity.getName(), getFileNames(tableId), id);
-
-        return Result.success(dataMap);
-    }
 
     /**
      * 根据表id批量删除字段(逻辑删除)
@@ -122,6 +99,7 @@ public class FieldServiceImpl extends ServiceImpl<FieldMapper, FieldEntity> impl
 
     /**
      * todo 需要校验appId
+     * 删除字段
      * @param param
      * @return
      */
@@ -133,13 +111,43 @@ public class FieldServiceImpl extends ServiceImpl<FieldMapper, FieldEntity> impl
 
         // 删除表字段
 
+        List<Integer> ids = param.getIds();
+        List<String> fieldNames = getFieldName(ids);
 
-        List<String> fieldNames = getFieldName(param.getIds());
+        String tableName = getTableNameByFieldId(ids.get(0));
+
+        for (String name : fieldNames) {
+            // 检查字段是否存在
+            Integer integer = ddlMapper.existColumn(tableName, name);
+            if (integer > 0){
+                // 真删除字段
+                ddlMapper.delField(tableName, name);
+            }
+        }
+
+        // ddlMapper.delFields(tableName, fieldNames);
+        // 逻辑删除字段记录
+        this.removeByIds(ids);
+
+
+        return Result.success();
+    }
 
-        String tableName = "ts_cc";
-        ddlMapper.delFields(tableName, fieldNames);
+    private String getTableNameByFieldId(Integer id) {
+        return getBaseMapper().getTableNameByFieldId(id);
+    }
 
-        return null;
+    @Override
+    public Result getList(FieldPageDto param) {
+        BaseUtil.startPage(param);
+        IPage<FieldEntity> page = new Page<>(param.getPageNum() , param.getPageSize());
+        LambdaQueryWrapper<FieldEntity> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(FieldEntity::getTableId, param.getTableId());
+        String searchKey = param.getSearchKey();
+        wrapper.like(StrUtil.isNotBlank(searchKey), FieldEntity::getName, searchKey);
+        wrapper.orderByDesc(FieldEntity::getCreateTime);
+        IPage<FieldEntity> iPage = this.page(page, wrapper);
+        return Result.success(iPage);
     }
 
     private List<String> getFieldName(List<Integer> ids){
@@ -208,4 +216,30 @@ public class FieldServiceImpl extends ServiceImpl<FieldMapper, FieldEntity> impl
     }
 
 
+    @Override
+    public Result getFieldData(Long tableId, PageDto param) {
+        BaseUtil.startPage(param);
+        IPage<Map> page = new Page<>(param.getPageNum() , param.getPageSize());
+        TableEntity tableEntity = tableService.getById(tableId);
+        BaseRuntimeException.isNull(tableEntity, ErrorEnum.FAILURE_CODE_3001);
+        IPage<Map> resPage = getBaseMapper().page(tableEntity.getName(), getFileNames(tableId), page);
+
+        Map resultMap = new HashMap();
+        resultMap.put("fieldNames", getResultByTableId(tableId));
+        resultMap.put("fieldData", resPage);
+
+        return Result.success(resultMap);
+    }
+
+    @Override
+    public Result detail(Long tableId, Long id) {
+        TableEntity tableEntity = tableService.getById(tableId);
+        BaseRuntimeException.isNull(tableEntity, ErrorEnum.FAILURE_CODE_3001);
+
+        Map dataMap = getBaseMapper().detail(tableEntity.getName(), getFileNames(tableId), id);
+
+        return Result.success(dataMap);
+    }
+
+
 }

+ 43 - 0
gis_db/src/main/java/com/gis/db/service/impl/RecordServiceImpl.java

@@ -0,0 +1,43 @@
+package com.gis.db.service.impl;
+
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.gis.common.base.entity.dto.PageDto;
+import com.gis.common.base.exception.BaseRuntimeException;
+import com.gis.common.constant.ErrorEnum;
+import com.gis.common.util.BaseUtil;
+import com.gis.common.util.Result;
+import com.gis.db.entity.po.FieldEntity;
+import com.gis.db.entity.po.TableEntity;
+import com.gis.db.mapper.DdlMapper;
+import com.gis.db.service.DdlService;
+import com.gis.db.service.FieldService;
+import com.gis.db.service.RecordService;
+import com.gis.db.service.TableService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created by owen on 2022/3/10 0010 17:29
+ */
+@Slf4j
+@Service
+public class RecordServiceImpl implements RecordService {
+
+    @Autowired
+    TableService tableService;
+
+    @Autowired
+    FieldService fieldService;
+
+
+
+
+
+}

+ 8 - 2
gis_db/src/main/resources/mybatis-mapper/DdlMapper.xml

@@ -25,10 +25,16 @@
         DROP TABLE IF EXISTS ${tableName}
     </delete>
 
+
     <delete id="delFields">
-      ALTER TABLE ${tableName}
+        ALTER TABLE ${tableName}
         <foreach collection="fieldNames" index="index" item="name" separator=",">
-           DROP ${name}
+            DROP ${name}
         </foreach>
     </delete>
+
+    <delete id="delField">
+        ALTER TABLE ${tableName}  DROP IF EXISTS ${fieldName}
+    </delete>
+
 </mapper>