浏览代码

返回值, 校验字段

wuweihao 3 年之前
父节点
当前提交
8baf2a1566

+ 3 - 0
gis_admin/src/main/java/com/gis/admin/controller/ExceptionController.java

@@ -94,6 +94,9 @@ public class ExceptionController {
         return Result.failure(60002, e.getCause().getMessage());
     }
 
+
+
+
     /**
      * ConstraintViolationException
      */

+ 37 - 3
gis_common/src/main/java/com/gis/common/util/RegexUtil.java

@@ -8,6 +8,9 @@ import org.junit.Test;
 
 import java.util.Arrays;
 import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
 /**
  * Created by owen on 2021/11/18 0011 16:16
  * 字符串过滤
@@ -58,13 +61,44 @@ public class RegexUtil {
     }
 
 
+    //判断字符串是不是以数字开头
+    public static boolean isStartWithNumber(String str) {
+        Pattern pattern = Pattern.compile("[0-9]*");
+        Matcher isNum = pattern.matcher(str.charAt(0)+"");
+        if (!isNum.matches()) {
+            return false;
+        }
+        return true;
+    }
+
+
+    /**
+     * 只能输入由数字、26个英文字母或者下划线组成的字符串:"^\w+$"
+     * 正确返回:false
+     */
+
+    public static boolean isCharacter(String str) {
+        Pattern pattern = Pattern.compile("^\\w+$");
+        Matcher isNum = pattern.matcher(str);
+        if (isNum.matches()) {
+            return false;
+        }
+        return true;
+    }
+
+
+
+
+
+
+
     @Test
     public void test(){
-        String regEx = "12,15,+ delete";
-        regSql(regEx);
+        String regEx = "a1111a!!a";
+        System.out.println(isCharacter(regEx));
 
 
-}
+    }
 
 
 }

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

@@ -9,6 +9,7 @@ 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.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;

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

@@ -4,12 +4,20 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Pattern;
+import java.io.Serializable;
 
 /**
  * Created by owen on 2022/3/10 0010 21:01
  */
 @Data
-public class FieldDto {
+public class FieldDto implements Serializable {
+
+
+    /**
+     * 字段不能数字开头
+     * 只能输入由数字、26个英文字母或者下划线组成的字符串:"^\w+$"
+     */
 
     @NotBlank(message = "字段名称不能为空")
     @ApiModelProperty(value = "字段名称",required = true)

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

@@ -21,5 +21,5 @@ public class TableDto {
 
     @NotBlank(message = "项目id不能为空")
     @ApiModelProperty(value = "项目id",required = true)
-    private String projectId;
+    private Long projectId;
 }

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

@@ -5,6 +5,7 @@ import com.gis.common.base.entity.po.BaseEntity;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import javax.validation.constraints.Pattern;
 import java.io.Serializable;
 
 /**
@@ -18,6 +19,7 @@ import java.io.Serializable;
 public class FieldEntity extends BaseEntity implements Serializable {
 
     private static final long serialVersionUID = 8038899042742684776L;
+
     @ApiModelProperty(value = "字段名称")
     private String name ;
 

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

@@ -26,7 +26,7 @@ public class TableEntity extends BaseEntity implements Serializable {
     private String remark;
 
     @ApiModelProperty(value = "项目id")
-    private String projectId;
+    private Long projectId;
 
 
 }

+ 3 - 5
gis_db/src/main/java/com/gis/db/mapper/DdlMapper.java

@@ -1,10 +1,7 @@
 package com.gis.db.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Delete;
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Param;
-import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.*;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
@@ -35,7 +32,8 @@ public interface DdlMapper extends BaseMapper<Object> {
     @Select("SELECT count(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME =#{tableName} AND COLUMN_NAME =#{fieldName}")
     Integer existColumn(String tableName, String fieldName);
 
-    Integer insertRecord(@Param("tableName")String tableName, @Param("fieldNames")List<String> fieldNames, @Param("fieldData")List<Object> fieldData);
+    void insertRecord(@Param("tableName")String tableName, @Param("fieldNames")List<String> fieldNames, @Param("fieldData")List<Object> fieldData);
+
 
     void updateRecord(@Param("tableName")String tableName, @Param("id")String id, @Param("fieldData") Map<String, Object> fieldData);
 

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

@@ -32,6 +32,8 @@ public interface FieldMapper extends BaseMapper<FieldEntity> {
 
     Map detail(@Param("tableName") String tableName, @Param("fieldNames") List<String> fileNames, @Param("id") Long id);
 
+    Map findByUuid(@Param("tableName") String tableName, @Param("fieldNames") List<String> fileNames, @Param("uuid") String uuid);
+
     @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);
 }

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

@@ -10,6 +10,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 /**
  * Created by owen on 2022/3/10 0010 17:29
@@ -35,6 +36,9 @@ public interface FieldService extends IService<FieldEntity> {
     /**数据-详情*/
     Result detail(Long tableId, Long id);
 
+    /**数据-详情*/
+    Map findByUuid(String tableId, String uuid);
+
     /**数据-列表*/
     Result getList(FieldPageDto param);
 

+ 31 - 6
gis_db/src/main/java/com/gis/db/service/impl/FieldServiceImpl.java

@@ -1,5 +1,6 @@
 package com.gis.db.service.impl;
 
+import cn.hutool.core.lang.Validator;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -13,6 +14,7 @@ import com.gis.common.base.service.IBaseService;
 import com.gis.common.constant.ErrorEnum;
 import com.gis.common.util.BaseUtil;
 import com.gis.common.util.RedisUtil;
+import com.gis.common.util.RegexUtil;
 import com.gis.common.util.Result;
 import com.gis.db.entity.dto.FieldDto;
 import com.gis.db.entity.dto.FieldPageDto;
@@ -76,11 +78,15 @@ public class FieldServiceImpl extends ServiceImpl<FieldMapper, FieldEntity> impl
         ArrayList<FieldEntity> list = new ArrayList<>();
         for (FieldDto dto : param) {
 
+
+            String name = dto.getName();
+            // 校验字符
+            checkName(name);
             // 驼峰转下划线
             String underLineCase = StrUtil.toUnderlineCase(dto.getName());
             dto.setName(underLineCase);
 
-            BaseRuntimeException.isTrue(isExistByTableIdAndName(dto.getTableId(), dto.getName()), null, "字段重复添加");
+            BaseRuntimeException.isTrue(isExistByTableIdAndName(dto.getTableId(), name), null, "字段重复添加");
             entity = new FieldEntity();
             BeanUtils.copyProperties(dto, entity);
             entity.setCreatorId(baseService.getUserId());
@@ -104,6 +110,14 @@ public class FieldServiceImpl extends ServiceImpl<FieldMapper, FieldEntity> impl
         return Result.success();
     }
 
+
+    private void checkName(String str){
+        boolean character = RegexUtil.isCharacter(str);
+        BaseRuntimeException.isTrue(character, null, "字段不能包含中文或非法字符");
+        boolean startWithNumber = RegexUtil.isStartWithNumber(str);
+        BaseRuntimeException.isTrue(startWithNumber, null, "字段不能以数字开头");
+    }
+
     @Override
     public Result testSql() {
         String sql = "alter table ts_aa add age_1 varchar(255)";
@@ -199,7 +213,8 @@ public class FieldServiceImpl extends ServiceImpl<FieldMapper, FieldEntity> impl
         Map<String, Object> record = param.getRecord();
         // 固定添加这两个字段值
         record.put("creator_id", userId);
-        record.put("uuid", IdUtil.simpleUUID());
+        String uuid = IdUtil.simpleUUID();
+        record.put("uuid", uuid);
         // 字段
         List<String> fieldList = new ArrayList<>();
         // 字段对应的值
@@ -210,13 +225,13 @@ public class FieldServiceImpl extends ServiceImpl<FieldMapper, FieldEntity> impl
 
         }
 
-        Integer id = ddlMapper.insertRecord(tableName, fieldList, fieldData);
-        log.info("返回值id: {}", id);
+       ddlMapper.insertRecord(tableName, fieldList, fieldData);
 
         //查询新增数据 todo
-//        this.detail(tableId, )
+        Map res = this.findByUuid(tableId, uuid);
+
 
-        return Result.success(id);
+        return Result.success(res);
     }
 
     @Override
@@ -366,5 +381,15 @@ public class FieldServiceImpl extends ServiceImpl<FieldMapper, FieldEntity> impl
         return Result.success(dataMap);
     }
 
+    @Override
+    public Map findByUuid(String tableId, String uuid) {
+        TableEntity tableEntity = tableService.getById(tableId);
+        BaseRuntimeException.isNull(tableEntity, ErrorEnum.FAILURE_CODE_3001);
+
+        Map dataMap = getBaseMapper().findByUuid(tableEntity.getNameTable(), getFileNames(Long.valueOf(tableId)), uuid);
+
+        return dataMap;
+    }
+
 
 }

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

@@ -14,7 +14,7 @@
           PRIMARY KEY (`id`)
         ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = #{remark}
     </insert>
-    <insert id="insertRecord" parameterType="int" useGeneratedKeys="true" keyProperty="id">
+    <insert id="insertRecord" >
         insert into ${tableName} (
         <foreach collection="fieldNames" index="index" item="name" separator=",">
             ${name}

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

@@ -22,4 +22,13 @@
         </foreach>
         from ${tableName} where id=#{id}
     </select>
+
+
+    <select id="findByUuid" resultType="java.util.Map">
+        select
+        <foreach collection="fieldNames" index="index" item="name" separator=",">
+            ${name}
+        </foreach>
+        from ${tableName} where uuid=#{uuid}
+    </select>
 </mapper>