浏览代码

更新表命名、授权

wuweihao 3 年之前
父节点
当前提交
373abdf02f

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

@@ -1,6 +1,6 @@
 server.port=8023
 
-spring.profiles.active=sit
+spring.profiles.active=dev
 
 # \u9879\u76EE\u540D\u79F0
 #project.en=age_storage

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

@@ -27,7 +27,7 @@ public class FieldController {
 
     @Transactional(rollbackFor = Exception.class)
     @ApiOperation(value = "添加表字段")
-    @PostMapping("add")
+    @PostMapping("/add")
     public Result addField(@Valid @RequestBody List<FieldDto> param){
         return entityService.addField(param);
     }
@@ -35,7 +35,7 @@ public class FieldController {
 
     @Transactional(rollbackFor = Exception.class)
     @ApiOperation(value = "删除表字段", notes = "字段id,允许多个")
-    @PostMapping("delField")
+    @PostMapping("/delField")
     public Result delField(@Valid @RequestBody IdsDto param){
         return entityService.delField(param);
     }

+ 2 - 2
gis_db/src/main/java/com/gis/db/controller/ProjectController.java

@@ -44,10 +44,10 @@ public class ProjectController {
         return Result.success(entityService.getById(id));
     }
 
-    @ApiOperation(value = "删除")
+    @ApiOperation(value = "删除", notes = "会删除对用的表")
     @PostMapping("/remove/{id}")
     public Result remove(@PathVariable Long id){
-        return Result.success(entityService.removeById(id));
+        return entityService.del(id);
     }
 
 

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

@@ -15,5 +15,5 @@ public class IdsDto {
 
     @NotNull(message = "id不能为空")
     @ApiModelProperty(value = "id",required = true)
-    private List<Integer> ids;
+    private List<Long> ids;
 }

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

@@ -19,11 +19,16 @@ public class TableEntity extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "表名")
     private String name ;
 
+    @ApiModelProperty(value = "表名, 命名规则 t_ + 项目id + 表id")
+    private String nameTable ;
+
     @ApiModelProperty(value = "备注")
     private String remark;
 
     @ApiModelProperty(value = "项目id")
     private String projectId;
+
+
 }
 
 

+ 5 - 2
gis_db/src/main/java/com/gis/db/mapper/TableMapper.java

@@ -5,13 +5,16 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.gis.db.entity.po.TableEntity;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
 import org.springframework.stereotype.Component;
 
 @Component
 @Mapper
 public interface TableMapper extends BaseMapper<TableEntity> {
 
-    @Select("SELECT b.name, b.id from sys_field a left join sys_table b on b.id=a.table_id where a.is_delete=0 and a.id=#{id}")
-    TableEntity getTableByFieldId(Integer id);
+    @Select("SELECT b.name_table, b.id from sys_field a left join sys_table b on b.id=a.table_id where a.is_delete=0 and a.id=#{id}")
+    TableEntity getTableByFieldId(Long id);
 
+    @Update("UPDATE sys_table set is_delete=1, update_time=NOW() where project_id=#{projectId}")
+    void delByProjectId(Long projectId);
 }

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

@@ -8,6 +8,7 @@ import com.gis.db.entity.po.FieldEntity;
 import com.gis.db.entity.po.TableEntity;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -27,7 +28,7 @@ public interface FieldService extends IService<FieldEntity> {
     Result delField(IdsDto param);
 
     /**字段-批量删除*/
-    void removeBatchByTableId(List<Integer>tableIds);
+    void removeBatchByTableId(List<Long>tableIds);
 
 
 
@@ -48,4 +49,5 @@ public interface FieldService extends IService<FieldEntity> {
 
     /**数据-上传文件*/
     Result upload(MultipartFile file, String tableName);
+
 }

+ 1 - 0
gis_db/src/main/java/com/gis/db/service/ProjectService.java

@@ -15,4 +15,5 @@ public interface ProjectService extends IService<ProjectEntity> {
 
     Result saveEntity(ProjectDto param);
 
+    Result del(Long id);
 }

+ 9 - 2
gis_db/src/main/java/com/gis/db/service/TableService.java

@@ -22,12 +22,19 @@ public interface TableService extends IService<TableEntity> {
 
     Result removes(IdsDto ids);
 
-    List<String> getTableNameByTableId(List<Integer> tableIds);
+    List<String> getTableNameByTableId(List<Long> tableIds);
 
     String getTableName(String tableId);
 
-    TableEntity getTableByFieldId(Integer integer);
+    TableEntity getTableByFieldId(Long integer);
 
     /**表-添加字段*/
     void addField(List<FieldEntity> param, String tableName);
+
+    List<TableEntity> findByProjectId(Long id);
+
+    /**表-批量删除表*/
+    void delTables(List<String> tableNames);
+
+    void delByProjectId(Long id);
 }

+ 12 - 13
gis_db/src/main/java/com/gis/db/service/impl/FieldServiceImpl.java

@@ -83,14 +83,16 @@ public class FieldServiceImpl extends ServiceImpl<FieldMapper, FieldEntity> impl
             entity.setCreatorId(baseService.getUserId());
             list.add(entity);
             tableId = dto.getTableId();
+//            this.save(entity);
         }
         TableEntity tableEntity = tableService.getById(tableId);
         BaseRuntimeException.isNull(tableEntity, ErrorEnum.FAILURE_CODE_3001);
 
-        this.saveBatch(list);
+        this.saveBatch(list, 20);
+//        this.saveOrUpdateBatch(list, 20);
 
         // 添加字段到表
-        tableService.addField(list, tableEntity.getName());
+        tableService.addField(list, tableEntity.getNameTable());
 
         // 删除缓存
         String fieldTableKey = FIELD_TABLE_KEY+tableId;
@@ -113,8 +115,8 @@ public class FieldServiceImpl extends ServiceImpl<FieldMapper, FieldEntity> impl
      * @param tableIds
      */
     @Override
-    public void removeBatchByTableId(List<Integer> tableIds) {
-        for (Integer tableId : tableIds) {
+    public void removeBatchByTableId(List<Long> tableIds) {
+        for (Long tableId : tableIds) {
             LambdaUpdateWrapper<FieldEntity> updateWrapper = new LambdaUpdateWrapper<>();
             updateWrapper.eq(FieldEntity::getTableId, tableId);
             updateWrapper.set(FieldEntity::getIsDelete, 1);
@@ -131,18 +133,14 @@ public class FieldServiceImpl extends ServiceImpl<FieldMapper, FieldEntity> impl
     @Override
     public Result delField(IdsDto param) {
 
-
-        // todo 校验appId
-
         // 删除表字段
-        List<Integer> ids = param.getIds();
+        List<Long> ids = param.getIds();
         List<String> fieldNames = getFieldName(ids);
 
-//        String tableName = getTableNameByFieldId(ids.get(0));
 
         TableEntity tableEntity = tableService.getTableByFieldId(ids.get(0));
         BaseRuntimeException.isNull(tableEntity, null, "该表不存在");
-        String tableName = tableEntity.getName();
+        String tableName = tableEntity.getNameTable();
         Long tableId = tableEntity.getId();
 
         for (String name : fieldNames) {
@@ -151,6 +149,7 @@ public class FieldServiceImpl extends ServiceImpl<FieldMapper, FieldEntity> impl
             if (integer > 0){
                 // 真删除字段
                 ddlMapper.delField(tableName, name);
+                log.info("删除字段: {}", name);
             }
         }
 
@@ -238,7 +237,7 @@ public class FieldServiceImpl extends ServiceImpl<FieldMapper, FieldEntity> impl
         return null;
     }
 
-    private List<String> getFieldName(List<Integer> ids){
+    private List<String> getFieldName(List<Long> ids){
         List<FieldEntity> entityList = this.listByIds(ids);
         List<String> filedNames = new ArrayList<>();
         for (FieldEntity entity : entityList) {
@@ -340,7 +339,7 @@ public class FieldServiceImpl extends ServiceImpl<FieldMapper, FieldEntity> impl
         BaseRuntimeException.isNull(tableEntity, ErrorEnum.FAILURE_CODE_3001);
 
         List<String> searchField = getSearchField(tableId);
-        IPage<Map> resPage = getBaseMapper().page(tableEntity.getName(), searchField, param.getSearchKey(), page);
+        IPage<Map> resPage = getBaseMapper().page(tableEntity.getNameTable(), searchField, param.getSearchKey(), page);
 
         Map resultMap = new HashMap();
         resultMap.put("fieldNames", gertFieldListByTableId(tableId));
@@ -354,7 +353,7 @@ public class FieldServiceImpl extends ServiceImpl<FieldMapper, FieldEntity> impl
         TableEntity tableEntity = tableService.getById(tableId);
         BaseRuntimeException.isNull(tableEntity, ErrorEnum.FAILURE_CODE_3001);
 
-        Map dataMap = getBaseMapper().detail(tableEntity.getName(), getFileNames(tableId), id);
+        Map dataMap = getBaseMapper().detail(tableEntity.getNameTable(), getFileNames(tableId), id);
 
         return Result.success(dataMap);
     }

+ 55 - 11
gis_db/src/main/java/com/gis/db/service/impl/ProjectServiceImpl.java

@@ -17,14 +17,19 @@ import com.gis.common.util.EncryptUtils;
 import com.gis.common.util.Result;
 import com.gis.db.entity.dto.ProjectDto;
 import com.gis.db.entity.po.ProjectEntity;
+import com.gis.db.entity.po.TableEntity;
 import com.gis.db.mapper.ProjectMapper;
+import com.gis.db.service.FieldService;
 import com.gis.db.service.ProjectService;
+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.ArrayList;
 import java.util.Arrays;
+import java.util.List;
 
 
 /**
@@ -43,6 +48,12 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, ProjectEntity
     @Autowired
     SysUserService userService;
 
+    @Autowired
+    TableService tableService;
+
+    @Autowired
+    FieldService fieldService;
+
 
     @Override
     public Result pageList(PageDto param) {
@@ -50,11 +61,16 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, ProjectEntity
         IPage<ProjectEntity> page = new Page<>(param.getPageNum() , param.getPageSize());
         LambdaQueryWrapper<ProjectEntity> wrapper = new LambdaQueryWrapper<>();
         // 授权才能看到响应的项目
+
+        Long userId = baseService.getUserId();
         if (baseService.getIsAdmin()==0){
-            SysUserEntity entity = userService.cacheById(baseService.getUserId());
+            SysUserEntity entity = userService.cacheById(userId);
             // inSql以字符串形式传入
-            wrapper.inSql(ProjectEntity::getId, entity.getProjectIds());
+            wrapper.eq(ProjectEntity::getCreatorId, userId).or();
+            String projectIds = entity.getProjectIds();
+            wrapper.inSql(StrUtil.isNotBlank(projectIds), ProjectEntity::getId, projectIds);
         }
+
         String searchKey = param.getSearchKey();
         wrapper.like(StrUtil.isNotBlank(searchKey), ProjectEntity::getName, searchKey);
         wrapper.orderByDesc(ProjectEntity::getCreateTime);
@@ -84,20 +100,48 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, ProjectEntity
         if (flag){
             Long projectId = entity.getId();
             createAppId(projectId);
-            // 授权项目
-            SysUserEntity userEntity = userService.getById(userId);
-            String projectIds = userEntity.getProjectIds();
-            if (StrUtil.isNotBlank(projectIds)){
-                projectIds  = projectIds + "," + projectId;
-            } else {
-                projectIds = projectId.toString();
-            }
-            userService.authProject(projectIds, userId.toString());
+//            // 授权项目
+//            SysUserEntity userEntity = userService.getById(userId);
+//            String projectIds = userEntity.getProjectIds();
+//            if (StrUtil.isNotBlank(projectIds)){
+//                projectIds  = projectIds + "," + projectId;
+//            } else {
+//                projectIds = projectId.toString();
+//            }
+//            userService.authProject(projectIds, userId.toString());
 
         }
         return Result.success(entity);
     }
 
+    @Override
+    public Result del(Long id) {
+        ProjectEntity entity = this.getById(id);
+        if (entity == null) {
+            return Result.success();
+        }
+
+        // 删除逻辑
+        List<TableEntity> tables = tableService.findByProjectId(id);
+        ArrayList<String> tableNames = new ArrayList<>();
+        ArrayList<Long> tableIds = new ArrayList<>();
+        for (TableEntity table : tables) {
+            tableNames.add(table.getNameTable());
+            tableIds.add(table.getId());
+        }
+
+        // 物理删除对用的表
+        tableService.delTables(tableNames);
+        // 删除表记录
+        tableService.delByProjectId(id);
+        // 删除字段记录
+        fieldService.removeBatchByTableId(tableIds);
+
+        // 删除项目记录
+        this.removeById(entity);
+        return Result.success();
+    }
+
     private String createAppId(Long id) {
         try {
             String appId = EncryptUtils.desEncrypt(APP_SALT + id);

+ 28 - 11
gis_db/src/main/java/com/gis/db/service/impl/TableServiceImpl.java

@@ -58,24 +58,36 @@ public class TableServiceImpl extends ServiceImpl<TableMapper, TableEntity> impl
 
     }
 
+    @Override
+    public List<TableEntity> findByProjectId(Long projectId) {
+        LambdaQueryWrapper<TableEntity> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(TableEntity::getProjectId, projectId);
+        return this.list(wrapper);
+    }
+
 
     @Override
     public Result createTable(TableDto param) {
 
         // 驼峰转下划线
         String underLineCase = StrUtil.toUnderlineCase(param.getName());
-        // 以t_创建表名
-        param.setName("t_" + underLineCase);
+        // 以t_创建表名 规则:t_ + 项目id + tableId
+        param.setName(underLineCase);
 
         // 检查表名唯一性
-        BaseRuntimeException.isTrue(isExistByName(param.getName()), ErrorEnum.FAILURE_SYS_2010);
+//        BaseRuntimeException.isTrue(isExistByName(param.getName()), ErrorEnum.FAILURE_SYS_2010);
         TableEntity entity = new TableEntity();
         BeanUtils.copyProperties(param, entity);
         entity.setCreatorId(baseService.getUserId());
         this.save(entity);
 
+        // 更新数据库表名 规则:t_ + 项目id + tableId
+        String nameTable = "t_" + entity.getProjectId() + "_" + entity.getId();
+        entity.setNameTable(nameTable);
+        this.updateById(entity);
+
         // 建表
-        ddlMapper.createTable(param.getName(), param.getRemark());
+        ddlMapper.createTable(nameTable, param.getRemark());
 
         return Result.success();
     }
@@ -97,7 +109,7 @@ public class TableServiceImpl extends ServiceImpl<TableMapper, TableEntity> impl
     public Result removes(IdsDto param) {
 
         // 删除表
-        List<Integer> tableIds = param.getIds();
+        List<Long> tableIds = param.getIds();
         List<String> tableNames = this.getTableNameByTableId(tableIds);
 
         // 真删除表
@@ -111,8 +123,8 @@ public class TableServiceImpl extends ServiceImpl<TableMapper, TableEntity> impl
         return Result.success(tableNames);
     }
 
-
-    private void delTables(List<String> tableNames){
+    @Override
+    public void delTables(List<String> tableNames){
         for (String tableName : tableNames) {
             log.info("del table: {}", tableName);
             ddlMapper.delTable(tableName);
@@ -120,12 +132,17 @@ public class TableServiceImpl extends ServiceImpl<TableMapper, TableEntity> impl
 
     }
 
+    @Override
+    public void delByProjectId(Long projectId) {
+        baseMapper.delByProjectId(projectId);
+    }
+
 
     @Override
-    public List<String> getTableNameByTableId(List<Integer> tableIds) {
+    public List<String> getTableNameByTableId(List<Long> tableIds) {
         LambdaQueryWrapper<TableEntity> wrapper = new LambdaQueryWrapper<>();
         // in只接受整数类型, 不接受字符串
-        wrapper.select(TableEntity::getName).in(TableEntity::getId, tableIds);
+        wrapper.select(TableEntity::getNameTable).in(TableEntity::getId, tableIds);
         List<Object> list = this.listObjs(wrapper);
         log.info("表名:{}", list);
         return (ArrayList) list;
@@ -135,14 +152,14 @@ public class TableServiceImpl extends ServiceImpl<TableMapper, TableEntity> impl
     public String getTableName(String tableId) {
         TableEntity entity = this.getById(tableId);
         BaseRuntimeException.isNull(entity, null, "该表不存在");
-        String name = entity.getName();
+        String name = entity.getNameTable();
         BaseRuntimeException.isBlank(name, null, "表名为空, 请检查");
 
         return name;
     }
 
     @Override
-    public TableEntity getTableByFieldId(Integer fieldId) {
+    public TableEntity getTableByFieldId(Long fieldId) {
         return baseMapper.getTableByFieldId(fieldId);
     }