瀏覽代碼

完成删除表功能

wuweihao 3 年之前
父節點
當前提交
9b63bfb5b4
共有 33 個文件被更改,包括 956 次插入178 次删除
  1. 6 0
      README.md
  2. 1 0
      gis_admin/src/main/java/com/gis/admin/shiro/ShiroConfig.java
  3. 2 10
      gis_admin/src/main/java/com/gis/admin/shiro/ShiroRealm.java
  4. 8 0
      gis_application/pom.xml
  5. 1 1
      gis_application/src/main/resources/application.properties
  6. 0 25
      gis_bb/src/main/java/com/gis/aaController.java
  7. 0 26
      gis_biguiyuan/pom.xml
  8. 0 30
      gis_biguiyuan/src/main/java/com/gis/aa/controller/ArEnterController.java
  9. 0 22
      gis_biguiyuan/src/main/java/com/gis/aa/entity/dto/ArEnterDto.java
  10. 0 25
      gis_biguiyuan/src/main/java/com/gis/aa/entity/po/ArEnterEntity.java
  11. 0 10
      gis_biguiyuan/src/main/java/com/gis/aa/service/ArEnterService.java
  12. 99 1
      gis_common/src/main/java/com/gis/common/base/exception/BaseRuntimeException.java
  13. 54 0
      gis_common/src/main/java/com/gis/common/constant/ErrorEnum.java
  14. 6 6
      gis_common/src/main/java/com/gis/common/util/Result.java
  15. 71 0
      gis_db/src/main/java/com/gis/db/controller/FieldController.java
  16. 47 0
      gis_db/src/main/java/com/gis/db/controller/TableController.java
  17. 35 0
      gis_db/src/main/java/com/gis/db/entity/dto/FieldDto.java
  18. 20 0
      gis_db/src/main/java/com/gis/db/entity/dto/IdsDto.java
  19. 25 0
      gis_db/src/main/java/com/gis/db/entity/dto/TableDto.java
  20. 44 0
      gis_db/src/main/java/com/gis/db/entity/po/FieldEntity.java
  21. 31 0
      gis_db/src/main/java/com/gis/db/entity/po/TableEntity.java
  22. 24 0
      gis_db/src/main/java/com/gis/db/mapper/DdlMapper.java
  23. 22 0
      gis_db/src/main/java/com/gis/db/mapper/FieldMapper.java
  24. 3 5
      gis_biguiyuan/src/main/java/com/gis/aa/mapper/ArEnterMapper.java
  25. 17 0
      gis_db/src/main/java/com/gis/db/service/DdlService.java
  26. 27 0
      gis_db/src/main/java/com/gis/db/service/FieldService.java
  27. 24 0
      gis_db/src/main/java/com/gis/db/service/TableService.java
  28. 37 0
      gis_db/src/main/java/com/gis/db/service/impl/DdlServiceImpl.java
  29. 173 0
      gis_db/src/main/java/com/gis/db/service/impl/FieldServiceImpl.java
  30. 124 0
      gis_db/src/main/java/com/gis/db/service/impl/TableServiceImpl.java
  31. 27 0
      gis_db/src/main/resources/mybatis-mapper/DdlMapper.xml
  32. 21 0
      gis_db/src/main/resources/mybatis-mapper/FieldMapper.xml
  33. 7 17
      pom.xml

+ 6 - 0
README.md

@@ -4,3 +4,9 @@
 gis_biguiyuan  AR-碧桂园项目-文通部门
 111
 
+
+
+
+
+# 开发进度日志
+ 2022-3-21 完成删除表功能

+ 1 - 0
gis_admin/src/main/java/com/gis/admin/shiro/ShiroConfig.java

@@ -72,6 +72,7 @@ public class ShiroConfig {
         filterChainDefinitionMap.put("/test/**", "anon");
         filterChainDefinitionMap.put("/api/**", "anon");
         filterChainDefinitionMap.put("/web/**", "anon");
+        filterChainDefinitionMap.put("/db/**", "anon");
 
         filterChainDefinitionMap.put("/", "anon");
         filterChainDefinitionMap.put("/doc.html", "anon");

+ 2 - 10
gis_admin/src/main/java/com/gis/admin/shiro/ShiroRealm.java

@@ -36,25 +36,17 @@ import java.util.Set;
 @Component
 @Slf4j
 public class ShiroRealm extends AuthorizingRealm {
-//	@Lazy
-//    @Resource
-//    private CommonAPI commonAPI;
 
-//    @Lazy
-//    @Resource
-//    private RedisUtil redisUtil;
 
     @Resource
     HttpServletRequest request;
 
-//    @Autowired
-//    SysResourceService sysResourceService;
+
 
     @Autowired
     SysUserService sysUserService;
 
-//    @Autowired
-//    RedisTemplate<String, String> redisTemplate;
+
 
     @Autowired
     ConfigConstant configConstant;

+ 8 - 0
gis_application/pom.xml

@@ -18,11 +18,19 @@
             <artifactId>gis_admin</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>com.gis</groupId>
+            <artifactId>gis_db</artifactId>
+        </dependency>
+
 
         <dependency>
             <groupId>com.gis</groupId>
             <artifactId>gis_cms</artifactId>
         </dependency>
+
+
+
     </dependencies>
 
     <build>

+ 1 - 1
gis_application/src/main/resources/application.properties

@@ -32,7 +32,7 @@ mybatis-plus.configuration.call-setters-on-nulls=true
 mybatis-plus.global-config.db-config.logic-delete-value=1
 mybatis-plus.global-config.db-config.logic-not-delete-value=0
 mybatis-plus.global-config.db-config.logic-delete-field = isDelete
-mybatis-plus.mapper-locations=classpath*:/mybatis/mappers/**.xml
+mybatis-plus.mapper-locations=classpath*:/mybatis-mapper/**.xml
 
 
 

+ 0 - 25
gis_bb/src/main/java/com/gis/aaController.java

@@ -1,25 +0,0 @@
-package com.gis;
-
-import com.gis.common.util.Result;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * Created by owen on 2022/1/13 0013 20:02
- */
-@Slf4j
-@Api(tags = "22222")
-@RestController
-@RequestMapping("web/sss")
-public class aaController {
-
-    @ApiOperation(value = "1111列表")
-    @GetMapping
-    public Result list() {
-        return Result.success("111111111");
-    }
-}

+ 0 - 26
gis_biguiyuan/pom.xml

@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>age_project_api</artifactId>
-        <groupId>com.gis</groupId>
-        <version>1.0.0</version>
-    </parent>
-
-    <modelVersion>4.0.0</modelVersion>
-    <artifactId>gis_biguiyuan</artifactId>
-    <packaging>jar</packaging>
-
-
-
-    <dependencies>
-        <dependency>
-            <groupId>com.gis</groupId>
-            <artifactId>gis_admin</artifactId>
-        </dependency>
-
-    </dependencies>
-
-
-</project>

+ 0 - 30
gis_biguiyuan/src/main/java/com/gis/aa/controller/ArEnterController.java

@@ -1,30 +0,0 @@
-package com.gis.aa.controller;
-
-import com.gis.common.util.Result;
-import com.gis.aa.service.ArEnterService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * Created by owen on 2022/1/13 0013 19:14
- */
-@Slf4j
-@Api(tags = "33333图片管理")
-@RestController
-@RequestMapping("web/aa")
-public class ArEnterController {
-
-    @Autowired
-    ArEnterService arEnterService;
-
-    @ApiOperation(value = "1111列表")
-    @GetMapping
-    public Result list() {
-        return Result.success(arEnterService.list());
-    }
-}

+ 0 - 22
gis_biguiyuan/src/main/java/com/gis/aa/entity/dto/ArEnterDto.java

@@ -1,22 +0,0 @@
-package com.gis.aa.entity.dto;
-
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-
-/**
- * Created by owen on 2022/1/13 0013 18:10
- * 碧桂园-进入成功/失败 记录表
- */
-@Data
-public class ArEnterDto {
-
-
-    @ApiModelProperty(value = "类型:error, success")
-    private String type;
-
-    @ApiModelProperty(value = "设备id(代表用户)")
-    private String deviceId ;
-
-
-}

+ 0 - 25
gis_biguiyuan/src/main/java/com/gis/aa/entity/po/ArEnterEntity.java

@@ -1,25 +0,0 @@
-package com.gis.aa.entity.po;
-
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.gis.common.base.entity.po.BaseEntity;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-
-/**
- * Created by owen on 2022/1/13 0013 18:10
- * 碧桂园-进入成功/失败 记录表
- */
-@Data
-@TableName(value = "ar_enter")
-public class ArEnterEntity extends BaseEntity {
-
-
-    @ApiModelProperty(value = "类型:error, success")
-    private String type;
-
-    @ApiModelProperty(value = "设备id(代表用户)")
-    private String deviceId ;
-
-
-}

+ 0 - 10
gis_biguiyuan/src/main/java/com/gis/aa/service/ArEnterService.java

@@ -1,10 +0,0 @@
-package com.gis.aa.service;
-
-import com.gis.aa.entity.po.ArEnterEntity;
-import com.gis.common.base.service.BaseService;
-
-/**
- * Created by owen on 2022/1/13 0013 19:11
- */
-public interface ArEnterService extends BaseService<ArEnterEntity> {
-}

+ 99 - 1
gis_common/src/main/java/com/gis/common/base/exception/BaseRuntimeException.java

@@ -1,5 +1,15 @@
 package com.gis.common.base.exception;
 
+import cn.hutool.core.util.StrUtil;
+import com.gis.common.constant.ErrorEnum;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+
+
+/**
+ *  2022-3-15 by owen
+ */
 public class BaseRuntimeException extends RuntimeException{
 
     private static final long serialVersionUID = -1518945670203783450L;
@@ -8,15 +18,26 @@ public class BaseRuntimeException extends RuntimeException{
 
     public BaseRuntimeException(String msg){
         super(msg);
+        this.code = -1;
         this.msg = msg;
     }
 
+    /**
+     *
+     * @param code 允许为null
+     * @param msg
+     */
     public BaseRuntimeException(Integer code, String msg){
         super(msg);
-        this.code = code;
+        this.code = code == null? -1 : code;
         this.msg = msg;
     }
 
+    public BaseRuntimeException(ErrorEnum errorEnum){
+        this.code = errorEnum.code();
+        this.msg = errorEnum.message();
+    }
+
     public Integer getCode() {
         return code;
     }
@@ -32,4 +53,81 @@ public class BaseRuntimeException extends RuntimeException{
     public void setMsg(String msg) {
         this.msg = msg;
     }
+
+
+    public static void isNull(Object obj, Integer code, String msg){
+        if (obj == null){
+            getExc(code, msg);
+        }
+    }
+
+    public static void isBlank(Object obj, Integer code, String msg){
+        if (obj == null){
+            getExc(code, msg);
+        }
+
+        if (obj instanceof String || StrUtil.isBlank(obj.toString())){
+            getExc(code, msg);
+        }
+
+    }
+
+    public static void isNull(Object obj, ErrorEnum errorEnum){
+        if (obj == null){
+            getExc(errorEnum.code(), errorEnum.message());
+        }
+    }
+
+    public static void isBlank(Object obj, ErrorEnum errorEnum){
+        Integer code = errorEnum.code();
+        String msg = errorEnum.message();
+        if (obj == null){
+            getExc(code, msg);
+        }
+
+        if (obj instanceof String || StrUtil.isBlank(obj.toString())){
+            getExc(code, msg);
+        }
+
+    }
+
+    /**
+     *
+     * @param obj true 存在抛异常
+     * @param errorEnum
+     */
+    public static void isHas(boolean obj, ErrorEnum errorEnum){
+        if (obj){
+            getExc(errorEnum.code(), errorEnum.message());
+        }
+    }
+
+    /**
+     *
+     * @param obj 存在抛异常
+     * @param code 允许为null
+     * @param msg
+     */
+    public static void isHas(boolean obj, Integer code, String msg){
+        if (obj){
+            getExc(code, msg);
+        }
+    }
+
+    private static void  getExc(Integer code, String msg){
+        throw new BaseRuntimeException(code, msg);
+    }
+
+    /**
+     *
+     * @param obj 集合
+     * @param errorEnum
+     */
+    public static void isEmpty(List obj, ErrorEnum errorEnum){
+        if (CollectionUtils.isEmpty(obj)){
+            getExc(errorEnum.code(), errorEnum.message());
+        }
+    }
+
+
 }

+ 54 - 0
gis_common/src/main/java/com/gis/common/constant/ErrorEnum.java

@@ -0,0 +1,54 @@
+package com.gis.common.constant;
+
+/**
+ * Created by owen on 2022/3/10 0010 14:47
+ */
+public enum ErrorEnum {
+
+    FAILURE_sys_2001(2001, "缺少必要参数"),
+    FAILURE_SYS_2010(2010, "表名重复"),
+    FAILURE_SYS_2011(2011, "字段为空"),
+
+
+    FAILURE_CODE_3001(3001, "缺少必要参数"),
+    FAILURE_CODE_3002(3002, "访问异常!"),
+    FAILURE_CODE_3003(3003, "非法访问!"),
+    FAILURE_CODE_3004(3004, "用户未登录"),
+    FAILURE_CODE_3005(3005, "验证码已过期"),
+    FAILURE_CODE_3006(3006, "验证码错误"),
+    FAILURE_CODE_3007(3007, "昵称已存在"),
+    FAILURE_CODE_3008(3008, "该手机已被注册"),
+    FAILURE_CODE_3009(3009, "两次输入的密码不一致"),
+    FAILURE_CODE_3010(3010, "昵称长度错误"),
+    FAILURE_CODE_3011(3011, "密码需要包含英文大小写、数字,长度8-16字符"),
+    FAILURE_CODE_3012(3012, "昵称包含敏感词"),
+    FAILURE_CODE_3013(3013, "手机号码格式错误"),
+    FAILURE_CODE_3014(3014, "账号或密码不正确"),
+    FAILURE_CODE_3015(3015, "用户不存在"),
+    FAILURE_CODE_3016(3016, "登录失败,账号无权访问"),
+    FAILURE_CODE_3017(3017, "空文件"),
+    FAILURE_CODE_3018(3018, "需要上传或使用的文件不存在"),
+
+
+    ;
+
+    private Integer code;
+    private String message;
+
+    private ErrorEnum(Integer code, String message) {
+        this.code = code;
+        this.message = message;
+    }
+
+    public Integer code() {
+        return code;
+    }
+
+    public String message() {
+        return message;
+    }
+
+    public String formatMessage(Object... args){
+        return String.format(message, args);
+    }
+}

+ 6 - 6
gis_common/src/main/java/com/gis/common/util/Result.java

@@ -1,5 +1,6 @@
 package com.gis.common.util;
 
+import com.gis.common.constant.ErrorEnum;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.Data;
@@ -22,7 +23,6 @@ public class Result<T> implements Serializable {
     public static int CODE_SUCCESS = 0;
     public static int CODE_FAILURE = -1;
     public static String[] NOOP = new String[]{};
-//    public static LocalDateTime dataTime = LocalDateTime.now();
 
     /**
      * 处理状态:0: 成功, 1: 失败
@@ -98,9 +98,9 @@ public class Result<T> implements Serializable {
         return failure(CODE_FAILURE, msg);
     }
 
-//    @Override
-//    public String toString() {
-//        return "JsonResult [code=" + code + ", msg=" + msg + ", data="
-//                + data + ", timestamp="+ timestamp + "]";
-//    }
+
+    public static Result failure(ErrorEnum param) {
+        return new Result(param.code(), param.message(), NOOP , LocalDateTime.now());
+    }
+
 }

+ 71 - 0
gis_db/src/main/java/com/gis/db/controller/FieldController.java

@@ -0,0 +1,71 @@
+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.TableDto;
+import com.gis.db.entity.po.FieldEntity;
+import com.gis.db.service.DdlService;
+import com.gis.db.service.FieldService;
+import com.gis.db.service.TableService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * Created by owen on 2022/3/10 0010 17:09
+ */
+@Api(tags = "db-字段关接口")
+@RestController
+@RequestMapping("db/field")
+public class FieldController {
+
+    @Autowired
+    FieldService entityService;
+
+    @Autowired
+    DdlService ddlService;
+
+    @Transactional(rollbackFor = Exception.class)
+    @ApiOperation(value = "添加表字段")
+    @PostMapping("add")
+    public Result addField(@Valid @RequestBody List<FieldDto> param){
+        return entityService.addField(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 = "查询-详情", notes = "tableId:表id; id:记录id")
+    @PostMapping("detail/{tableId}/{id}")
+    public Result detail(@PathVariable Long tableId, @PathVariable Long id){
+        return entityService.detail(tableId, id);
+    }
+
+
+
+}

+ 47 - 0
gis_db/src/main/java/com/gis/db/controller/TableController.java

@@ -0,0 +1,47 @@
+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.IdsDto;
+import com.gis.db.entity.dto.TableDto;
+import com.gis.db.service.TableService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+
+/**
+ * Created by owen on 2022/3/10 0010 17:09
+ */
+@Api(tags = "db-表相关接口")
+@RestController
+@RequestMapping("db/table")
+public class TableController {
+
+    @Autowired
+    TableService tableService;
+
+    @Transactional(rollbackFor = Exception.class)
+    @ApiOperation(value = "新增表")
+    @PostMapping("createTable")
+    public Result createTable(@Valid @RequestBody TableDto param){
+        return tableService.createTable(param);
+    }
+
+    @ApiOperation(value = "列表")
+    @PostMapping("getList")
+    public Result getList(@Valid @RequestBody PageDto param){
+        return tableService.getList(param);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @ApiOperation(value = "删除表(支持批量删除)")
+    @PostMapping("removes")
+    public Result removes(@RequestBody IdsDto ids){
+        return tableService.removes(ids);
+    }
+
+}

+ 35 - 0
gis_db/src/main/java/com/gis/db/entity/dto/FieldDto.java

@@ -0,0 +1,35 @@
+package com.gis.db.entity.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * Created by owen on 2022/3/10 0010 21:01
+ */
+@Data
+public class FieldDto {
+
+    @NotBlank(message = "字段名称不能为空")
+    @ApiModelProperty(value = "字段名称",required = true)
+    private String name ;
+
+    @NotBlank(message = "备注不能为空")
+    @ApiModelProperty(value = "备注",required = true)
+    private String remark;
+
+    @NotBlank(message = "字段类型不能为空")
+    @ApiModelProperty(value = "字段类型:int,datetime,varchar",required = true)
+    private String type;
+
+    @NotBlank(message = "表名id不能为空")
+    @ApiModelProperty(value = "表名id",required = true)
+    private Long tableId;
+
+    @ApiModelProperty(value = "字段长度")
+    private Integer length;
+
+    @ApiModelProperty(value = "搜索字段; 1:是,0:否(默认) ")
+    private Integer isQuery;
+}

+ 20 - 0
gis_db/src/main/java/com/gis/db/entity/dto/IdsDto.java

@@ -0,0 +1,20 @@
+package com.gis.db.entity.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ * Created by owen on 2022/3/10 0010 17:34
+ */
+@Data
+public class IdsDto {
+
+
+    @NotNull(message = "id不能为空")
+    @ApiModelProperty(value = "id",required = true)
+    private List<Integer> ids;
+}

+ 25 - 0
gis_db/src/main/java/com/gis/db/entity/dto/TableDto.java

@@ -0,0 +1,25 @@
+package com.gis.db.entity.dto;
+
+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 TableDto {
+
+    @NotBlank(message = "表名不能为空")
+    @ApiModelProperty(value = "表名: 非中文字符",required = true)
+    private String name ;
+
+    @NotBlank(message = "备注不能为空")
+    @ApiModelProperty(value = "备注",required = true)
+    private String remark;
+
+    @NotBlank(message = "应用id不能为空")
+    @ApiModelProperty(value = "应用id",required = true)
+    private String appId;
+}

+ 44 - 0
gis_db/src/main/java/com/gis/db/entity/po/FieldEntity.java

@@ -0,0 +1,44 @@
+package com.gis.db.entity.po;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.gis.common.base.entity.po.BaseEntity;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * Created by owen on 2022/3/10 0010 17:19
+ *
+ * 字段表
+ * name,tableId:复合索引
+ */
+@Data
+@TableName(value = "sys_field")
+public class FieldEntity extends BaseEntity implements Serializable {
+
+    private static final long serialVersionUID = 8038899042742684776L;
+    @ApiModelProperty(value = "字段名称")
+    private String name ;
+
+    @ApiModelProperty(value = "备注")
+    private String remark;
+
+    @ApiModelProperty(value = "字段类型:int,datetime,varchar")
+    private String type;
+
+    @ApiModelProperty(value = "表名id")
+    private Long tableId;
+
+    @ApiModelProperty(value = "字段长度")
+    private Integer length;
+
+    @ApiModelProperty(value = "搜索字段; 1:是,0:否")
+    private Integer isQuery;
+
+
+}
+
+
+
+

+ 31 - 0
gis_db/src/main/java/com/gis/db/entity/po/TableEntity.java

@@ -0,0 +1,31 @@
+package com.gis.db.entity.po;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.gis.common.base.entity.po.BaseEntity;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * Created by owen on 2022/3/10 0010 17:19
+ * 表名
+ */
+@Data
+@TableName(value = "sys_table")
+public class TableEntity extends BaseEntity implements Serializable {
+    private static final long serialVersionUID = -4366253604959487088L;
+
+    @ApiModelProperty(value = "表名")
+    private String name ;
+
+    @ApiModelProperty(value = "备注")
+    private String remark;
+
+    @ApiModelProperty(value = "应用id")
+    private String appId;
+}
+
+
+
+

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

@@ -0,0 +1,24 @@
+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.springframework.stereotype.Component;
+
+import java.util.List;
+
+
+/**
+ * Created by owen on 2022/3/10 0010 19:12
+ */
+@Component
+@Mapper
+public interface DdlMapper extends BaseMapper<Object> {
+
+    /**表名需要独立出来*/
+    void createTable(@Param("tableName")String tableName, @Param("remark")String remark);
+
+    void updateSql(String param);
+
+    void delTable(@Param("tableName")String tableName);
+}

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

@@ -0,0 +1,22 @@
+package com.gis.db.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+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.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+@Component
+@Mapper
+public interface FieldMapper extends BaseMapper<FieldEntity> {
+
+    IPage<Map> page(@Param("tableName") String tableName, @Param("fieldNames") List<String> fieldNames, IPage<Map> page);
+
+    Map detail(@Param("tableName") String tableName, @Param("fieldNames") List<String> fileNames, @Param("id") Long id);
+}

+ 3 - 5
gis_biguiyuan/src/main/java/com/gis/aa/mapper/ArEnterMapper.java

@@ -1,15 +1,13 @@
-package com.gis.aa.mapper;
+package com.gis.db.mapper;
 
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.gis.aa.entity.po.ArEnterEntity;
+import com.gis.db.entity.po.TableEntity;
 import org.apache.ibatis.annotations.Mapper;
 import org.springframework.stereotype.Component;
 
 @Component
 @Mapper
-public interface ArEnterMapper extends BaseMapper<ArEnterEntity> {
-
-
+public interface TableMapper extends BaseMapper<TableEntity> {
 
 }

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

@@ -0,0 +1,17 @@
+package com.gis.db.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.gis.common.util.Result;
+import com.gis.db.entity.dto.TableDto;
+import com.gis.db.entity.po.FieldEntity;
+import com.gis.db.entity.po.TableEntity;
+
+import java.util.List;
+
+/**
+ * Created by owen on 2022/3/10 0010 17:29
+ */
+public interface DdlService  {
+
+    void addField(List<FieldEntity> param, String tableName);
+}

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

@@ -0,0 +1,27 @@
+package com.gis.db.service;
+
+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.TableDto;
+import com.gis.db.entity.po.FieldEntity;
+import com.gis.db.entity.po.TableEntity;
+
+import java.util.List;
+
+/**
+ * Created by owen on 2022/3/10 0010 17:29
+ */
+public interface FieldService extends IService<FieldEntity> {
+
+    Result addField(List<FieldDto> param);
+
+    Result testSql();
+
+    Result getFieldData(Long tableId, PageDto param);
+
+    Result detail(Long tableId, Long id);
+
+    void removeBatchByTableId(List<Integer>tableIds);
+}

+ 24 - 0
gis_db/src/main/java/com/gis/db/service/TableService.java

@@ -0,0 +1,24 @@
+package com.gis.db.service;
+
+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.IdsDto;
+import com.gis.db.entity.dto.TableDto;
+import com.gis.db.entity.po.TableEntity;
+
+import java.util.List;
+
+/**
+ * Created by owen on 2022/3/10 0010 17:29
+ */
+public interface TableService extends IService<TableEntity> {
+
+    Result createTable(TableDto param);
+
+    Result getList(PageDto param);
+
+    Result removes(IdsDto ids);
+
+    List<String> getTableNameByTableId(List<Integer> tableIds);
+}

+ 37 - 0
gis_db/src/main/java/com/gis/db/service/impl/DdlServiceImpl.java

@@ -0,0 +1,37 @@
+package com.gis.db.service.impl;
+
+import cn.hutool.core.util.StrUtil;
+import com.gis.db.entity.po.FieldEntity;
+import com.gis.db.mapper.DdlMapper;
+import com.gis.db.service.DdlService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * Created by owen on 2022/3/10 0010 17:29
+ */
+@Slf4j
+@Service
+public class DdlServiceImpl  implements DdlService {
+
+    @Autowired
+    DdlMapper ddlMapper;
+
+
+    @Override
+    public void addField(List<FieldEntity> param, String tableName) {
+        for (FieldEntity entity : param) {
+            String sql = StrUtil.format("alter table {} add {} {}({}) COMMENT '{}' ; ",
+                    tableName, entity.getName(), entity.getType(), entity.getLength(), entity.getRemark());
+            log.info("sqlStr: {}", sql);
+            ddlMapper.updateSql(sql);
+        }
+
+
+    }
+
+
+}

+ 173 - 0
gis_db/src/main/java/com/gis/db/service/impl/FieldServiceImpl.java

@@ -0,0 +1,173 @@
+package com.gis.db.service.impl;
+
+import cn.hutool.core.lang.Validator;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+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.dto.FieldDto;
+import com.gis.db.entity.po.FieldEntity;
+import com.gis.db.entity.po.TableEntity;
+import com.gis.db.mapper.DdlMapper;
+import com.gis.db.mapper.FieldMapper;
+import com.gis.db.service.DdlService;
+import com.gis.db.service.FieldService;
+import com.gis.db.service.TableService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+
+/**
+ * Created by owen on 2022/3/10 0010 17:29
+ */
+@Slf4j
+@Service
+public class FieldServiceImpl extends ServiceImpl<FieldMapper, FieldEntity> implements FieldService {
+
+    @Autowired
+    DdlService ddlService;
+
+    @Autowired
+    TableService tableService;
+
+    @Autowired
+    DdlMapper ddlMapper;
+
+    @Override
+    public Result addField(List<FieldDto> param) {
+
+        FieldEntity entity ;
+        Long tableId = null;
+        ArrayList<FieldEntity> list = new ArrayList<>();
+        for (FieldDto dto : param) {
+            BaseRuntimeException.isHas(isExistByTableIdAndName(dto.getTableId(), dto.getName()), null, "字段重复添加");
+            entity = new FieldEntity();
+            BeanUtils.copyProperties(dto, entity);
+            list.add(entity);
+            tableId = dto.getTableId();
+        }
+        TableEntity tableEntity = tableService.getById(tableId);
+        BaseRuntimeException.isNull(tableEntity, ErrorEnum.FAILURE_CODE_3001);
+
+        this.saveBatch(list);
+
+        // 添加字段到表
+        ddlService.addField(list, tableEntity.getName());
+
+
+        return Result.success();
+    }
+
+    @Override
+    public Result testSql() {
+        //alter table ts_aa add age varchar(255);
+        String sql = "alter table ts_aa add age_1 varchar(255)";
+//        ddlMapper.updateSql(sql);
+        return Result.success();
+    }
+
+    @Override
+    public Result getFieldData(Long tableId, PageDto param) {
+        BaseUtil.startPage(param);
+        IPage<Map> page = new Page<>(param.getPageNum() , param.getPageSize());
+//        List<String> strs = Arrays.asList("id", "age_2", "age_1");
+//        String tableName = "ts_aa";
+        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批量删除字段(逻辑删除)
+     * @param tableIds
+     */
+    @Override
+    public void removeBatchByTableId(List<Integer> tableIds) {
+        for (Integer tableId : tableIds) {
+            LambdaUpdateWrapper<FieldEntity> updateWrapper = new LambdaUpdateWrapper<>();
+            updateWrapper.eq(FieldEntity::getTableId, tableId);
+            updateWrapper.set(FieldEntity::getIsDelete, 1);
+            this.update(updateWrapper);
+        }
+    }
+
+    /**
+     * 判断该表是否已添加过字段
+     * @return
+     */
+    private Boolean isExistByTableIdAndName(Long tableId, String filedName){
+        LambdaQueryWrapper<FieldEntity> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(FieldEntity::getTableId, tableId);
+        wrapper.eq(FieldEntity::getName, filedName);
+        long count = this.count(wrapper);
+        return count != 0;
+    }
+
+    private List<FieldEntity> findByTableId(Long tableId){
+        LambdaQueryWrapper<FieldEntity> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(FieldEntity::getTableId, tableId);
+        List<FieldEntity> list = this.list(wrapper);
+        BaseRuntimeException.isEmpty(list, ErrorEnum.FAILURE_SYS_2011);
+        return list;
+    }
+
+    // 获取字段名称
+    private List<String> getFileNames(Long tableId){
+        List<FieldEntity> list = findByTableId(tableId);
+        ArrayList<String> fileNames = new ArrayList<>();
+        for (FieldEntity entity : list) {
+            fileNames.add(entity.getName());
+        }
+        fileNames.add("id");
+        fileNames.add("create_time");
+        fileNames.add("update_time");
+        fileNames.add("creator_id");
+        return fileNames;
+    }
+
+
+
+    private Map getResultByTableId(Long tableId){
+        List<FieldEntity> list = findByTableId(tableId);
+
+        Map filedMap = new HashMap();
+        for (FieldEntity entity : list) {
+            filedMap.put(entity.getName(), entity.getType());
+        }
+
+        // 添加默认字段: 使用数据库下划线命名
+        filedMap.put("id", "int");
+        filedMap.put("create_time", "date");
+        filedMap.put("update_time", "date");
+        filedMap.put("creator_id", "int");
+
+        return filedMap;
+    }
+
+
+}

+ 124 - 0
gis_db/src/main/java/com/gis/db/service/impl/TableServiceImpl.java

@@ -0,0 +1,124 @@
+package com.gis.db.service.impl;
+
+import cn.hutool.core.collection.CollectionUtil;
+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.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gis.common.base.entity.dto.PageDto;
+import com.gis.common.base.entity.po.BaseEntity;
+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.dto.IdsDto;
+import com.gis.db.entity.dto.TableDto;
+import com.gis.db.entity.po.TableEntity;
+import com.gis.db.mapper.DdlMapper;
+import com.gis.db.mapper.TableMapper;
+import com.gis.db.service.FieldService;
+import com.gis.db.service.TableService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.validation.constraints.NotNull;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+
+/**
+ * Created by owen on 2022/3/10 0010 17:29
+ */
+@Slf4j
+@Service
+public class TableServiceImpl extends ServiceImpl<TableMapper, TableEntity> implements TableService {
+
+    @Autowired
+    DdlMapper ddlMapper;
+
+    @Autowired
+    FieldService fieldService;
+
+    @Override
+    public Result createTable(TableDto param) {
+
+        // 检查表名唯一性
+        BaseRuntimeException.isHas(isExistByName(param.getName()), ErrorEnum.FAILURE_SYS_2010);
+        TableEntity entity = new TableEntity();
+        BeanUtils.copyProperties(param, entity);
+        this.save(entity);
+
+        // 建表
+        ddlMapper.createTable(param.getName(), param.getRemark());
+
+        return Result.success();
+    }
+
+    @Override
+    public Result getList(PageDto param) {
+        BaseUtil.startPage(param);
+        IPage<TableEntity> page = new Page<>(param.getPageNum() , param.getPageSize());
+        LambdaQueryWrapper<TableEntity> wrapper = new LambdaQueryWrapper<>();
+        wrapper.orderByDesc(BaseEntity::getCreateTime);
+        IPage<TableEntity> iPage = this.page(page, wrapper);
+
+        return Result.success(iPage);
+    }
+
+    @Override
+    public Result removes(IdsDto param) {
+
+
+        // 删除表
+        List<Integer> tableIds = param.getIds();
+        List<String> tableNames = this.getTableNameByTableId(tableIds);
+
+        // 删除表数据
+        this.delTables(tableNames);
+
+        // 删除字段
+        fieldService.removeBatchByTableId(tableIds);
+
+        return Result.success(tableNames);
+    }
+
+
+    private void delTables(List<String> tableNames){
+        for (String tableName : tableNames) {
+            log.info("del table: {}", tableName);
+            ddlMapper.delTable(tableName);
+        }
+
+    }
+
+
+    @Override
+    public List<String> getTableNameByTableId(List<Integer> tableIds) {
+        LambdaQueryWrapper<TableEntity> wrapper = new LambdaQueryWrapper<>();
+        // in只接受整数类型, 不接受字符串
+        wrapper.select(TableEntity::getName).in(TableEntity::getId, tableIds);
+        List<Object> list = this.listObjs(wrapper);
+        log.info("表名:{}", list);
+        return (ArrayList) list;
+    }
+
+    /**
+     * 判断表面是否存在
+     * @param name
+     * @return
+     */
+    private Boolean isExistByName(String name){
+
+        BaseRuntimeException.isHas(Validator.hasChinese(name), null, "不能含有中文字符");
+        LambdaQueryWrapper<TableEntity> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(TableEntity::getName, name);
+        long count = this.count(wrapper);
+        return count != 0;
+    }
+}

+ 27 - 0
gis_db/src/main/resources/mybatis-mapper/DdlMapper.xml

@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.gis.db.mapper.DdlMapper">
+
+
+    <insert id="createTable" parameterType="com.gis.db.entity.dto.TableDto">
+          CREATE TABLE ${tableName}  (
+          `id` bigint(10) NOT NULL AUTO_INCREMENT COMMENT 'id',
+          `create_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',
+          `is_delete` int(1) NULL DEFAULT 0 COMMENT '状态,0:激活,1:删除',
+          `update_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '更新时间',
+          `creator_id` int(10) NULL DEFAULT NULL COMMENT '创建者id',
+          PRIMARY KEY (`id`)
+        ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = #{remark}
+    </insert>
+
+
+    <update id="updateSql">
+        ${param}
+    </update>
+
+
+
+    <delete id="delTable">
+        DROP TABLE IF EXISTS ${tableName}
+    </delete>
+</mapper>

+ 21 - 0
gis_db/src/main/resources/mybatis-mapper/FieldMapper.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.gis.db.mapper.FieldMapper">
+
+
+    <select id="page" resultType="java.util.Map">
+        select
+        <foreach collection="fieldNames" index="index" item="name" separator=",">
+            ${name}
+        </foreach>
+        from ${tableName} order by create_time desc
+    </select>
+
+    <select id="detail" resultType="java.util.Map">
+        select
+        <foreach collection="fieldNames" index="index" item="name" separator=",">
+            ${name}
+        </foreach>
+        from ${tableName} where id=#{id}
+    </select>
+</mapper>

+ 7 - 17
pom.xml

@@ -21,8 +21,7 @@
     <module>gis_admin</module>
     <module>gis_application</module>
     <module>gis_cms</module>
-    <!--<module>gis_biguiyuan</module>-->
-    <!--<module>gis_bb</module>-->
+    <module>gis_db</module>
   </modules>
 
 
@@ -33,7 +32,6 @@
     <java.version>1.8</java.version>
     <spring.boot.version>2.3.4.RELEASE</spring.boot.version>
     <gis.version>1.0.0</gis.version>
-    <!--<druid.version>1.1.14</druid.version>-->
     <druid.version>1.2.6</druid.version>
     <hutool.version>5.3.3</hutool.version>
     <pinyin4j.version>2.5.1</pinyin4j.version>
@@ -78,23 +76,15 @@
 
       <dependency>
         <groupId>com.gis</groupId>
-        <artifactId>gis_cms</artifactId>
+        <artifactId>gis_db</artifactId>
         <version>${gis.version}</version>
       </dependency>
 
-      <!--<dependency>-->
-        <!--<groupId>com.gis</groupId>-->
-        <!--<artifactId>gis_biguiyuan</artifactId>-->
-        <!--<version>${gis.version}</version>-->
-      <!--</dependency>-->
-
-      <!--<dependency>-->
-        <!--<groupId>com.gis</groupId>-->
-        <!--<artifactId>gis_bb</artifactId>-->
-        <!--<version>${gis.version}</version>-->
-      <!--</dependency>-->
-
-
+      <dependency>
+        <groupId>com.gis</groupId>
+        <artifactId>gis_cms</artifactId>
+        <version>${gis.version}</version>
+      </dependency>
 
 
       <!-- springboot -->