新增自定义数据
This commit is contained in:
parent
3ea7791fda
commit
b55f243f74
@ -0,0 +1,40 @@
|
|||||||
|
package com.cm.common.plugin.controller.apis.dynamic.form;
|
||||||
|
|
||||||
|
import com.cm.common.base.AbstractController;
|
||||||
|
import com.cm.common.constants.ISystemConstant;
|
||||||
|
import com.cm.common.plugin.service.dynamic.IDynamicDataService;
|
||||||
|
import com.cm.common.result.ErrorResult;
|
||||||
|
import com.cm.common.result.SuccessResult;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import io.swagger.annotations.ApiResponse;
|
||||||
|
import io.swagger.annotations.ApiResponses;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* When you feel like quitting. Think about why you started
|
||||||
|
* 当你想要放弃的时候,想想当初你为何开始
|
||||||
|
*
|
||||||
|
* @ClassName: DynamicDataController
|
||||||
|
* @Description: 动态数据
|
||||||
|
* @Author: WangGeng
|
||||||
|
* @Date: 2019/12/4 15:23
|
||||||
|
* @Version: 1.0
|
||||||
|
**/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping(ISystemConstant.API_PREFIX + "/dynamicdata")
|
||||||
|
public class DynamicDataController extends AbstractController {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IDynamicDataService dynamicDataService;
|
||||||
|
|
||||||
|
@ApiOperation(value = "保存动态数据", notes = "保存动态数据接口")
|
||||||
|
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
||||||
|
@PostMapping("savedynamicdata/{tableName}")
|
||||||
|
public SuccessResult saveDynamicData(@PathVariable("tableName") String tableName, @RequestBody Map<String, Object> params) {
|
||||||
|
return dynamicDataService.saveDynamicData(tableName, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -11,10 +11,9 @@ import io.swagger.annotations.ApiOperation;
|
|||||||
import io.swagger.annotations.ApiResponse;
|
import io.swagger.annotations.ApiResponse;
|
||||||
import io.swagger.annotations.ApiResponses;
|
import io.swagger.annotations.ApiResponses;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import java.util.Map;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* When you feel like quitting. Think about why you started
|
* When you feel like quitting. Think about why you started
|
||||||
|
@ -0,0 +1,20 @@
|
|||||||
|
package com.cm.common.plugin.dao.dynamic;
|
||||||
|
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* When you feel like quitting. Think about why you started
|
||||||
|
* 当你想要放弃的时候,想想当初你为何开始
|
||||||
|
*
|
||||||
|
* @ClassName: IDynamicDataDao
|
||||||
|
* @Description: 动态数据
|
||||||
|
* @Author: WangGeng
|
||||||
|
* @Date: 2019/12/4 16:38
|
||||||
|
* @Version: 1.0
|
||||||
|
**/
|
||||||
|
@Repository
|
||||||
|
public class IDynamicDataDao {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -1,9 +1,12 @@
|
|||||||
package com.cm.common.plugin.dao.dynamic;
|
package com.cm.common.plugin.dao.dynamic;
|
||||||
|
|
||||||
import com.cm.common.exception.SaveException;
|
import com.cm.common.exception.SaveException;
|
||||||
|
import com.cm.common.exception.SearchException;
|
||||||
import com.cm.common.exception.UpdateException;
|
import com.cm.common.exception.UpdateException;
|
||||||
|
import com.cm.common.plugin.pojo.dtos.dynamic.DynamicFormDTO;
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -34,4 +37,13 @@ public interface IDynamicFormDao {
|
|||||||
* @throws UpdateException
|
* @throws UpdateException
|
||||||
*/
|
*/
|
||||||
void updateDynamicForm(Map<String, Object> params) throws UpdateException;
|
void updateDynamicForm(Map<String, Object> params) throws UpdateException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 动态表单详情
|
||||||
|
*
|
||||||
|
* @param tableName
|
||||||
|
* @return
|
||||||
|
* @throws SearchException
|
||||||
|
*/
|
||||||
|
List<DynamicFormDTO> listDynamicForm(String tableName) throws SearchException;
|
||||||
}
|
}
|
||||||
|
@ -2,9 +2,11 @@ package com.cm.common.plugin.dao.dynamic;
|
|||||||
|
|
||||||
import com.cm.common.exception.SearchException;
|
import com.cm.common.exception.SearchException;
|
||||||
import com.cm.common.exception.UpdateException;
|
import com.cm.common.exception.UpdateException;
|
||||||
|
import com.cm.common.plugin.pojo.dtos.database.table.TableColumnDTO;
|
||||||
import com.cm.common.plugin.pojo.dtos.database.table.TableDTO;
|
import com.cm.common.plugin.pojo.dtos.database.table.TableDTO;
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -27,6 +29,22 @@ public interface IDynamicTableDao {
|
|||||||
*/
|
*/
|
||||||
void createTable(String createTableSQL) throws UpdateException;
|
void createTable(String createTableSQL) throws UpdateException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 加列
|
||||||
|
*
|
||||||
|
* @param toString
|
||||||
|
* @throws UpdateException
|
||||||
|
*/
|
||||||
|
void saveTableColumn(String toString) throws UpdateException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改列属性
|
||||||
|
*
|
||||||
|
* @param toString
|
||||||
|
* @throws UpdateException
|
||||||
|
*/
|
||||||
|
void updateTableColumnType(String toString) throws UpdateException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过表名获取表
|
* 通过表名获取表
|
||||||
*
|
*
|
||||||
@ -35,4 +53,13 @@ public interface IDynamicTableDao {
|
|||||||
* @throws SearchException
|
* @throws SearchException
|
||||||
*/
|
*/
|
||||||
TableDTO getTableByTableName(String tableName) throws SearchException;
|
TableDTO getTableByTableName(String tableName) throws SearchException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 表详情
|
||||||
|
*
|
||||||
|
* @param tableName
|
||||||
|
* @return
|
||||||
|
* @throws SearchException
|
||||||
|
*/
|
||||||
|
List<TableColumnDTO> listTableColumns(String tableName) throws SearchException;
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,33 @@
|
|||||||
|
package com.cm.common.plugin.enums.dynamic;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* When you feel like quitting. Think about why you started
|
||||||
|
* 当你想要放弃的时候,想想当初你为何开始
|
||||||
|
*
|
||||||
|
* @ClassName: FieldRequireTypeEnum
|
||||||
|
* @Description: 字段校验类型
|
||||||
|
* @Author: WangGeng
|
||||||
|
* @Date: 2019/12/4 17:29
|
||||||
|
* @Version: 1.0
|
||||||
|
**/
|
||||||
|
public enum FieldRequireTypeEnum {
|
||||||
|
NONE("none"),
|
||||||
|
REQUIRED("required"),
|
||||||
|
PHONE("phone"),
|
||||||
|
EMAIL("email"),
|
||||||
|
URL("url"),
|
||||||
|
NUMBER("number"),
|
||||||
|
DATE("date"),
|
||||||
|
IDENTITY("identity"),
|
||||||
|
CUSTOM("custom");
|
||||||
|
|
||||||
|
private String value;
|
||||||
|
|
||||||
|
FieldRequireTypeEnum(String value) {
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getValue() {
|
||||||
|
return value == null ? "" : value;
|
||||||
|
}
|
||||||
|
}
|
@ -1,6 +1,4 @@
|
|||||||
package com.cm.common.plugin.enums.dynamicform;
|
package com.cm.common.plugin.enums.dynamic;
|
||||||
|
|
||||||
import com.google.inject.internal.util.$AbstractMapEntry;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* When you feel like quitting. Think about why you started
|
* When you feel like quitting. Think about why you started
|
@ -0,0 +1,171 @@
|
|||||||
|
package com.cm.common.plugin.pojo.dtos.dynamic;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* When you feel like quitting. Think about why you started
|
||||||
|
* 当你想要放弃的时候,想想当初你为何开始
|
||||||
|
*
|
||||||
|
* @ClassName: DynamicFormDTO
|
||||||
|
* @Description: 动态表单
|
||||||
|
* @Author: WangGeng
|
||||||
|
* @Date: 2019/12/4 16:58
|
||||||
|
* @Version: 1.0
|
||||||
|
**/
|
||||||
|
@ApiModel
|
||||||
|
public class DynamicFormDTO {
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "id", value = "id")
|
||||||
|
private String id;
|
||||||
|
@ApiModelProperty(name = "tableName", value = "表名")
|
||||||
|
private String tableName;
|
||||||
|
@ApiModelProperty(name = "fieldName", value = "字段")
|
||||||
|
private String fieldName;
|
||||||
|
@ApiModelProperty(name = "fieldExplain", value = "字段说明")
|
||||||
|
private String fieldExplain;
|
||||||
|
@ApiModelProperty(name = "fieldType", value = "字段类型")
|
||||||
|
private String fieldType;
|
||||||
|
@ApiModelProperty(name = "fieldDefault", value = "字段默认")
|
||||||
|
private String fieldDefault;
|
||||||
|
@ApiModelProperty(name = "dictionaryId", value = "字典")
|
||||||
|
private String dictionaryId;
|
||||||
|
@ApiModelProperty(name = "verifyType", value = "校验类型")
|
||||||
|
private String verifyType;
|
||||||
|
@ApiModelProperty(name = "verifyRegular", value = "校验正则")
|
||||||
|
private String verifyRegular;
|
||||||
|
@ApiModelProperty(name = "fieldSort", value = "字段排序")
|
||||||
|
private Integer fieldSort;
|
||||||
|
@ApiModelProperty(name = "listShow", value = "列表显示")
|
||||||
|
private Integer listShow;
|
||||||
|
@ApiModelProperty(name = "formShow", value = "表单显示")
|
||||||
|
private Integer formShow;
|
||||||
|
|
||||||
|
public String getId() {
|
||||||
|
return id == null ? "" : id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(String id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTableName() {
|
||||||
|
return tableName == null ? "" : tableName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTableName(String tableName) {
|
||||||
|
this.tableName = tableName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFieldName() {
|
||||||
|
return fieldName == null ? "" : fieldName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFieldName(String fieldName) {
|
||||||
|
this.fieldName = fieldName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFieldExplain() {
|
||||||
|
return fieldExplain == null ? "" : fieldExplain;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFieldExplain(String fieldExplain) {
|
||||||
|
this.fieldExplain = fieldExplain;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFieldType() {
|
||||||
|
return fieldType == null ? "" : fieldType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFieldType(String fieldType) {
|
||||||
|
this.fieldType = fieldType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFieldDefault() {
|
||||||
|
return fieldDefault == null ? "" : fieldDefault;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFieldDefault(String fieldDefault) {
|
||||||
|
this.fieldDefault = fieldDefault;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDictionaryId() {
|
||||||
|
return dictionaryId == null ? "" : dictionaryId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDictionaryId(String dictionaryId) {
|
||||||
|
this.dictionaryId = dictionaryId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getVerifyType() {
|
||||||
|
return verifyType == null ? "" : verifyType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setVerifyType(String verifyType) {
|
||||||
|
this.verifyType = verifyType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getVerifyRegular() {
|
||||||
|
return verifyRegular == null ? "" : verifyRegular;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setVerifyRegular(String verifyRegular) {
|
||||||
|
this.verifyRegular = verifyRegular;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getFieldSort() {
|
||||||
|
return fieldSort;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFieldSort(Integer fieldSort) {
|
||||||
|
this.fieldSort = fieldSort;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getListShow() {
|
||||||
|
return listShow;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setListShow(Integer listShow) {
|
||||||
|
this.listShow = listShow;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getFormShow() {
|
||||||
|
return formShow;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFormShow(Integer formShow) {
|
||||||
|
this.formShow = formShow;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
final StringBuilder sb = new StringBuilder("{");
|
||||||
|
sb.append("\"id\":\"")
|
||||||
|
.append(id).append('\"');
|
||||||
|
sb.append(",\"tableName\":\"")
|
||||||
|
.append(tableName).append('\"');
|
||||||
|
sb.append(",\"fieldName\":\"")
|
||||||
|
.append(fieldName).append('\"');
|
||||||
|
sb.append(",\"fieldExplain\":\"")
|
||||||
|
.append(fieldExplain).append('\"');
|
||||||
|
sb.append(",\"fieldType\":\"")
|
||||||
|
.append(fieldType).append('\"');
|
||||||
|
sb.append(",\"fieldDefault\":\"")
|
||||||
|
.append(fieldDefault).append('\"');
|
||||||
|
sb.append(",\"dictionaryId\":\"")
|
||||||
|
.append(dictionaryId).append('\"');
|
||||||
|
sb.append(",\"verifyType\":\"")
|
||||||
|
.append(verifyType).append('\"');
|
||||||
|
sb.append(",\"verifyRegular\":\"")
|
||||||
|
.append(verifyRegular).append('\"');
|
||||||
|
sb.append(",\"fieldSort\":")
|
||||||
|
.append(fieldSort);
|
||||||
|
sb.append(",\"listShow\":")
|
||||||
|
.append(listShow);
|
||||||
|
sb.append(",\"formShow\":")
|
||||||
|
.append(formShow);
|
||||||
|
sb.append('}');
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,30 @@
|
|||||||
|
package com.cm.common.plugin.service.dynamic;
|
||||||
|
|
||||||
|
import com.cm.common.exception.SaveException;
|
||||||
|
import com.cm.common.exception.SearchException;
|
||||||
|
import com.cm.common.result.SuccessResult;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* When you feel like quitting. Think about why you started
|
||||||
|
* 当你想要放弃的时候,想想当初你为何开始
|
||||||
|
*
|
||||||
|
* @ClassName: IDynamicDataService
|
||||||
|
* @Description: 动态数据
|
||||||
|
* @Author: WangGeng
|
||||||
|
* @Date: 2019/12/4 16:35
|
||||||
|
* @Version: 1.0
|
||||||
|
**/
|
||||||
|
public interface IDynamicDataService {
|
||||||
|
/**
|
||||||
|
* 保存动态数据
|
||||||
|
*
|
||||||
|
* @param tableName
|
||||||
|
* @param params
|
||||||
|
* @return
|
||||||
|
* @throws SearchException
|
||||||
|
* @throws SaveException
|
||||||
|
*/
|
||||||
|
SuccessResult saveDynamicData(String tableName, Map<String, Object> params) throws SearchException, SaveException;
|
||||||
|
}
|
@ -1,9 +1,14 @@
|
|||||||
package com.cm.common.plugin.service.dynamic;
|
package com.cm.common.plugin.service.dynamic;
|
||||||
|
|
||||||
import com.cm.common.exception.SaveException;
|
import com.cm.common.exception.SaveException;
|
||||||
|
import com.cm.common.exception.SearchException;
|
||||||
|
import com.cm.common.plugin.pojo.dtos.dynamic.DynamicFormDTO;
|
||||||
import com.cm.common.plugin.pojo.vos.dynamicform.DynamicFormVO;
|
import com.cm.common.plugin.pojo.vos.dynamicform.DynamicFormVO;
|
||||||
import com.cm.common.result.SuccessResult;
|
import com.cm.common.result.SuccessResult;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* When you feel like quitting. Think about why you started
|
* When you feel like quitting. Think about why you started
|
||||||
* 当你想要放弃的时候,想想当初你为何开始
|
* 当你想要放弃的时候,想想当初你为何开始
|
||||||
@ -20,7 +25,16 @@ public interface IDynamicFormService {
|
|||||||
*
|
*
|
||||||
* @param dynamicFormVO
|
* @param dynamicFormVO
|
||||||
* @return
|
* @return
|
||||||
* @throws SaveException
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
SuccessResult saveDynamicForm(DynamicFormVO dynamicFormVO) throws Exception;
|
SuccessResult saveDynamicForm(DynamicFormVO dynamicFormVO) throws Exception;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 动态表单详情
|
||||||
|
*
|
||||||
|
* @param tableName
|
||||||
|
* @return
|
||||||
|
* @throws SearchException
|
||||||
|
*/
|
||||||
|
List<DynamicFormDTO> listDynamicForm(String tableName) throws SearchException;
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ package com.cm.common.plugin.service.dynamic;
|
|||||||
|
|
||||||
import com.cm.common.exception.SaveException;
|
import com.cm.common.exception.SaveException;
|
||||||
import com.cm.common.exception.SearchException;
|
import com.cm.common.exception.SearchException;
|
||||||
|
import com.cm.common.exception.UpdateException;
|
||||||
import com.cm.common.plugin.pojo.dtos.database.table.TableColumnDTO;
|
import com.cm.common.plugin.pojo.dtos.database.table.TableColumnDTO;
|
||||||
import com.cm.common.plugin.pojo.dtos.database.table.TableDTO;
|
import com.cm.common.plugin.pojo.dtos.database.table.TableDTO;
|
||||||
import com.cm.common.plugin.pojo.vos.database.table.TableColumnVO;
|
import com.cm.common.plugin.pojo.vos.database.table.TableColumnVO;
|
||||||
@ -22,6 +23,11 @@ import java.util.Map;
|
|||||||
**/
|
**/
|
||||||
public interface IDynamicTableService {
|
public interface IDynamicTableService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 动态表前缀
|
||||||
|
*/
|
||||||
|
String DYNAMIC_TABLE_PREFIX = "dynamic_";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 建表
|
* 建表
|
||||||
*
|
*
|
||||||
@ -37,7 +43,7 @@ public interface IDynamicTableService {
|
|||||||
* @param tableColumnVO
|
* @param tableColumnVO
|
||||||
* @throws SaveException
|
* @throws SaveException
|
||||||
*/
|
*/
|
||||||
void saveTableColumn(String tableName, TableColumnVO tableColumnVO) throws SaveException;
|
void saveTableColumn(String tableName, TableColumnVO tableColumnVO) throws UpdateException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改表列类型
|
* 修改表列类型
|
||||||
@ -59,10 +65,10 @@ public interface IDynamicTableService {
|
|||||||
/**
|
/**
|
||||||
* 表详情
|
* 表详情
|
||||||
*
|
*
|
||||||
* @param params
|
* @param tableName
|
||||||
* @return
|
* @return
|
||||||
* @throws SearchException
|
* @throws SearchException
|
||||||
*/
|
*/
|
||||||
List<TableColumnDTO> listTableColumns(Map<String, Object> params) throws SearchException;
|
List<TableColumnDTO> listTableColumns(String tableName) throws SearchException;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,102 @@
|
|||||||
|
package com.cm.common.plugin.service.dynamic.impl;
|
||||||
|
|
||||||
|
import com.cm.common.base.AbstractService;
|
||||||
|
import com.cm.common.exception.ParamsException;
|
||||||
|
import com.cm.common.exception.SaveException;
|
||||||
|
import com.cm.common.exception.SearchException;
|
||||||
|
import com.cm.common.plugin.dao.dynamic.IDynamicDataDao;
|
||||||
|
import com.cm.common.plugin.enums.dynamic.FieldRequireTypeEnum;
|
||||||
|
import com.cm.common.plugin.pojo.dtos.database.table.TableColumnDTO;
|
||||||
|
import com.cm.common.plugin.pojo.dtos.dynamic.DynamicFormDTO;
|
||||||
|
import com.cm.common.plugin.service.dynamic.IDynamicDataService;
|
||||||
|
import com.cm.common.plugin.service.dynamic.IDynamicFormService;
|
||||||
|
import com.cm.common.plugin.service.dynamic.IDynamicTableService;
|
||||||
|
import com.cm.common.result.SuccessResult;
|
||||||
|
import com.cm.common.utils.WStringUtil;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* When you feel like quitting. Think about why you started
|
||||||
|
* 当你想要放弃的时候,想想当初你为何开始
|
||||||
|
*
|
||||||
|
* @ClassName: DynamicDataServiceImpl
|
||||||
|
* @Description: 动态数据
|
||||||
|
* @Author: WangGeng
|
||||||
|
* @Date: 2019/12/4 16:35
|
||||||
|
* @Version: 1.0
|
||||||
|
**/
|
||||||
|
@Service
|
||||||
|
public class DynamicDataServiceImpl extends AbstractService implements IDynamicDataService {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IDynamicDataDao dynamicDataDao;
|
||||||
|
@Autowired
|
||||||
|
private IDynamicFormService dynamicFormService;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SuccessResult saveDynamicData(String tableName, Map<String, Object> params) throws SearchException, SaveException {
|
||||||
|
List<DynamicFormDTO> dynamicFormDTOs = dynamicFormService.listDynamicForm(tableName);
|
||||||
|
requireData(params, dynamicFormDTOs);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 验证数据
|
||||||
|
*
|
||||||
|
* @param params
|
||||||
|
* @param dynamicFormDTOs
|
||||||
|
*/
|
||||||
|
private void requireData(Map<String, Object> params, List<DynamicFormDTO> dynamicFormDTOs) {
|
||||||
|
for (Map.Entry<String, Object> entry : params.entrySet()) {
|
||||||
|
String key = entry.getKey();
|
||||||
|
Object value = entry.getValue();
|
||||||
|
for (DynamicFormDTO dynamicFormDTO : dynamicFormDTOs) {
|
||||||
|
// 表单显示,并且字段相同,有校验类型则校验参数
|
||||||
|
if (dynamicFormDTO.getFormShow() == 1
|
||||||
|
&& StringUtils.equals(key, dynamicFormDTO.getFieldName())
|
||||||
|
&& !StringUtils.equals(FieldRequireTypeEnum.NONE.getValue(), dynamicFormDTO.getVerifyType())) {
|
||||||
|
if (StringUtils.equals(FieldRequireTypeEnum.REQUIRED.getValue(), dynamicFormDTO.getVerifyType())) {
|
||||||
|
if (value == null || StringUtils.isBlank(value.toString())) {
|
||||||
|
throw new ParamsException(String.format("%s不能为空", key));
|
||||||
|
}
|
||||||
|
} else if (StringUtils.equals(FieldRequireTypeEnum.PHONE.getValue(), dynamicFormDTO.getVerifyType())) {
|
||||||
|
if (value == null || StringUtils.isBlank(value.toString())) {
|
||||||
|
throw new ParamsException(String.format("%s不能为空", key));
|
||||||
|
}
|
||||||
|
} else if (StringUtils.equals(FieldRequireTypeEnum.EMAIL.getValue(), dynamicFormDTO.getVerifyType())) {
|
||||||
|
if (value == null || StringUtils.isBlank(value.toString())) {
|
||||||
|
throw new ParamsException(String.format("%s不能为空", key));
|
||||||
|
}
|
||||||
|
} else if (StringUtils.equals(FieldRequireTypeEnum.URL.getValue(), dynamicFormDTO.getVerifyType())) {
|
||||||
|
if (value == null || StringUtils.isBlank(value.toString())) {
|
||||||
|
throw new ParamsException(String.format("%s不能为空", key));
|
||||||
|
}
|
||||||
|
} else if (StringUtils.equals(FieldRequireTypeEnum.NUMBER.getValue(), dynamicFormDTO.getVerifyType())) {
|
||||||
|
if (value == null || StringUtils.isBlank(value.toString())) {
|
||||||
|
throw new ParamsException(String.format("%s不能为空", key));
|
||||||
|
}
|
||||||
|
} else if (StringUtils.equals(FieldRequireTypeEnum.DATE.getValue(), dynamicFormDTO.getVerifyType())) {
|
||||||
|
if (value == null || StringUtils.isBlank(value.toString())) {
|
||||||
|
throw new ParamsException(String.format("%s不能为空", key));
|
||||||
|
}
|
||||||
|
} else if (StringUtils.equals(FieldRequireTypeEnum.IDENTITY.getValue(), dynamicFormDTO.getVerifyType())) {
|
||||||
|
if (value == null || StringUtils.isBlank(value.toString())) {
|
||||||
|
throw new ParamsException(String.format("%s不能为空", key));
|
||||||
|
}
|
||||||
|
} else if (StringUtils.equals(FieldRequireTypeEnum.CUSTOM.getValue(), dynamicFormDTO.getVerifyType())) {
|
||||||
|
if (value == null || StringUtils.isBlank(value.toString())) {
|
||||||
|
throw new ParamsException(String.format("%s不能为空", key));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,12 +1,14 @@
|
|||||||
package com.cm.common.plugin.service.dynamic.impl;
|
package com.cm.common.plugin.service.dynamic.impl;
|
||||||
|
|
||||||
import com.cm.common.base.AbstractService;
|
import com.cm.common.base.AbstractService;
|
||||||
|
import com.cm.common.exception.SaveException;
|
||||||
|
import com.cm.common.exception.SearchException;
|
||||||
import com.cm.common.plugin.dao.dynamic.IDynamicFormDao;
|
import com.cm.common.plugin.dao.dynamic.IDynamicFormDao;
|
||||||
import com.cm.common.plugin.enums.database.table.ColumnDataTypeEnum;
|
import com.cm.common.plugin.enums.database.table.ColumnDataTypeEnum;
|
||||||
import com.cm.common.plugin.enums.dynamicform.FieldTypeEnum;
|
import com.cm.common.plugin.enums.dynamic.FieldTypeEnum;
|
||||||
import com.cm.common.plugin.pojo.dtos.database.table.TableColumnDTO;
|
import com.cm.common.plugin.pojo.dtos.database.table.TableColumnDTO;
|
||||||
import com.cm.common.plugin.pojo.dtos.database.table.TableDTO;
|
import com.cm.common.plugin.pojo.dtos.database.table.TableDTO;
|
||||||
import com.cm.common.plugin.pojo.vos.database.DatabaseVO;
|
import com.cm.common.plugin.pojo.dtos.dynamic.DynamicFormDTO;
|
||||||
import com.cm.common.plugin.pojo.vos.database.table.TableColumnVO;
|
import com.cm.common.plugin.pojo.vos.database.table.TableColumnVO;
|
||||||
import com.cm.common.plugin.pojo.vos.database.table.TableVO;
|
import com.cm.common.plugin.pojo.vos.database.table.TableVO;
|
||||||
import com.cm.common.plugin.pojo.vos.dynamicform.DynamicFormFieldVO;
|
import com.cm.common.plugin.pojo.vos.dynamicform.DynamicFormFieldVO;
|
||||||
@ -52,11 +54,16 @@ public class DynamicFormServiceImpl extends AbstractService implements IDynamicF
|
|||||||
saveDynamicFormInfo(dynamicFormVO);
|
saveDynamicFormInfo(dynamicFormVO);
|
||||||
} else {
|
} else {
|
||||||
LOG.debug("表存在,更新表字段信息");
|
LOG.debug("表存在,更新表字段信息");
|
||||||
updateDynamicFormInfo(tableDTO.getTableName(), dynamicFormVO);
|
updateDynamicFormInfo(StringUtils.removeStart(tableDTO.getTableName(), IDynamicTableService.DYNAMIC_TABLE_PREFIX), dynamicFormVO);
|
||||||
}
|
}
|
||||||
return new SuccessResult();
|
return new SuccessResult();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<DynamicFormDTO> listDynamicForm(String tableName) throws SearchException {
|
||||||
|
return dynamicFormDao.listDynamicForm(tableName);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 保存动态表单信息
|
* 保存动态表单信息
|
||||||
*
|
*
|
||||||
@ -89,9 +96,7 @@ public class DynamicFormServiceImpl extends AbstractService implements IDynamicF
|
|||||||
*/
|
*/
|
||||||
private void updateDynamicFormInfo(String tableName, DynamicFormVO dynamicFormVO) throws Exception {
|
private void updateDynamicFormInfo(String tableName, DynamicFormVO dynamicFormVO) throws Exception {
|
||||||
List<DynamicFormFieldVO> dynamicFormFields = dynamicFormVO.getDynamicFormFields();
|
List<DynamicFormFieldVO> dynamicFormFields = dynamicFormVO.getDynamicFormFields();
|
||||||
Map<String, Object> params = getHashMap(1);
|
List<TableColumnDTO> tableColumnDTOs = dynamicTableService.listTableColumns(tableName);
|
||||||
params.put("tableName", tableName);
|
|
||||||
List<TableColumnDTO> tableColumnDTOs = dynamicTableService.listTableColumns(params);
|
|
||||||
List<DynamicFormFieldVO> saveDynamicFormField = new ArrayList<>(0);
|
List<DynamicFormFieldVO> saveDynamicFormField = new ArrayList<>(0);
|
||||||
List<DynamicFormFieldVO> updateDynamicFormField = new ArrayList<>(0);
|
List<DynamicFormFieldVO> updateDynamicFormField = new ArrayList<>(0);
|
||||||
for (DynamicFormFieldVO dynamicFormFieldVO : dynamicFormFields) {
|
for (DynamicFormFieldVO dynamicFormFieldVO : dynamicFormFields) {
|
||||||
@ -112,6 +117,7 @@ public class DynamicFormServiceImpl extends AbstractService implements IDynamicF
|
|||||||
TableColumnVO tableColumnVO = getTableColumn(dynamicFormFieldVO);
|
TableColumnVO tableColumnVO = getTableColumn(dynamicFormFieldVO);
|
||||||
dynamicTableService.updateTableColumnType(tableName, tableColumnVO);
|
dynamicTableService.updateTableColumnType(tableName, tableColumnVO);
|
||||||
}
|
}
|
||||||
|
Map<String, Object> params = getHashMap(0);
|
||||||
LOG.debug("新增表字段信息");
|
LOG.debug("新增表字段信息");
|
||||||
for (DynamicFormFieldVO dynamicFormFieldVO : saveDynamicFormField) {
|
for (DynamicFormFieldVO dynamicFormFieldVO : saveDynamicFormField) {
|
||||||
params = HashMapUtil.beanToMap(dynamicFormFieldVO);
|
params = HashMapUtil.beanToMap(dynamicFormFieldVO);
|
||||||
@ -137,7 +143,7 @@ public class DynamicFormServiceImpl extends AbstractService implements IDynamicF
|
|||||||
private int checkTableColumn(DynamicFormFieldVO dynamicFormFieldVO, List<TableColumnDTO> tableColumnDTOs) {
|
private int checkTableColumn(DynamicFormFieldVO dynamicFormFieldVO, List<TableColumnDTO> tableColumnDTOs) {
|
||||||
for (TableColumnDTO tableColumnDTO : tableColumnDTOs) {
|
for (TableColumnDTO tableColumnDTO : tableColumnDTOs) {
|
||||||
if (StringUtils.equals(WStringUtil.lowerUpper2UnderLine(dynamicFormFieldVO.getFieldName()), tableColumnDTO.getColumnName())) {
|
if (StringUtils.equals(WStringUtil.lowerUpper2UnderLine(dynamicFormFieldVO.getFieldName()), tableColumnDTO.getColumnName())) {
|
||||||
if (isSameType(dynamicFormFieldVO.getFieldType(), tableColumnDTO.getColumnType())) {
|
if (isSameType(dynamicFormFieldVO.getFieldType(), tableColumnDTO.getDataType())) {
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
return -1;
|
return -1;
|
||||||
@ -151,48 +157,38 @@ public class DynamicFormServiceImpl extends AbstractService implements IDynamicF
|
|||||||
* 字段类型是否相同
|
* 字段类型是否相同
|
||||||
*
|
*
|
||||||
* @param fieldType
|
* @param fieldType
|
||||||
* @param columnType
|
* @param dataType
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
private boolean isSameType(String fieldType, String columnType) {
|
private boolean isSameType(String fieldType, String dataType) {
|
||||||
if (StringUtils.equals(FieldTypeEnum.STRING.getValue(), fieldType) && StringUtils.equals(ColumnDataTypeEnum.VARCHAR.getDataType(), columnType)) {
|
if (StringUtils.equals(FieldTypeEnum.STRING.getValue(), fieldType) && StringUtils.equals(ColumnDataTypeEnum.VARCHAR.getDataType(), dataType)) {
|
||||||
return true;
|
return true;
|
||||||
} else if (StringUtils.equals(FieldTypeEnum.DATETIME.getValue(), fieldType) && StringUtils.equals(ColumnDataTypeEnum.DATETIME.getDataType(), columnType)) {
|
} else if (StringUtils.equals(FieldTypeEnum.DATETIME.getValue(), fieldType) && StringUtils.equals(ColumnDataTypeEnum.DATETIME.getDataType(), dataType)) {
|
||||||
return true;
|
return true;
|
||||||
} else if (StringUtils.equals(FieldTypeEnum.DATE.getValue(), fieldType) && StringUtils.equals(ColumnDataTypeEnum.DATE.getDataType(), columnType)) {
|
} else if (StringUtils.equals(FieldTypeEnum.DATE.getValue(), fieldType) && StringUtils.equals(ColumnDataTypeEnum.DATE.getDataType(), dataType)) {
|
||||||
return true;
|
return true;
|
||||||
} else if (StringUtils.equals(FieldTypeEnum.NUMBER.getValue(), fieldType) && StringUtils.equals(ColumnDataTypeEnum.INT.getDataType(), columnType)) {
|
} else if (StringUtils.equals(FieldTypeEnum.NUMBER.getValue(), fieldType) && StringUtils.equals(ColumnDataTypeEnum.INT.getDataType(), dataType)) {
|
||||||
return true;
|
return true;
|
||||||
} else if (StringUtils.equals(FieldTypeEnum.DOUBLE.getValue(), fieldType) && StringUtils.equals(ColumnDataTypeEnum.DOUBLE.getDataType(), columnType)) {
|
} else if (StringUtils.equals(FieldTypeEnum.DOUBLE.getValue(), fieldType) && StringUtils.equals(ColumnDataTypeEnum.DOUBLE.getDataType(), dataType)) {
|
||||||
return true;
|
return true;
|
||||||
} else if (StringUtils.equals(FieldTypeEnum.TEXTAREA.getValue(), fieldType) && StringUtils.equals(ColumnDataTypeEnum.TEXT.getDataType(), columnType)) {
|
} else if (StringUtils.equals(FieldTypeEnum.TEXTAREA.getValue(), fieldType) && StringUtils.equals(ColumnDataTypeEnum.TEXT.getDataType(), dataType)) {
|
||||||
return true;
|
return true;
|
||||||
} else if (StringUtils.equals(FieldTypeEnum.RICH_TEXT.getValue(), fieldType) && StringUtils.equals(ColumnDataTypeEnum.LONGTEXT.getDataType(), columnType)) {
|
} else if (StringUtils.equals(FieldTypeEnum.RICH_TEXT.getValue(), fieldType) && StringUtils.equals(ColumnDataTypeEnum.LONGTEXT.getDataType(), dataType)) {
|
||||||
return true;
|
return true;
|
||||||
} else if (StringUtils.equals(FieldTypeEnum.SELECT.getValue(), fieldType) && StringUtils.equals(ColumnDataTypeEnum.CHAR.getDataType(), columnType)) {
|
} else if (StringUtils.equals(FieldTypeEnum.SELECT.getValue(), fieldType) && StringUtils.equals(ColumnDataTypeEnum.CHAR.getDataType(), dataType)) {
|
||||||
return true;
|
return true;
|
||||||
} else if (StringUtils.equals(FieldTypeEnum.CHECKBOX.getValue(), fieldType) && StringUtils.equals(ColumnDataTypeEnum.TEXT.getDataType(), columnType)) {
|
} else if (StringUtils.equals(FieldTypeEnum.CHECKBOX.getValue(), fieldType) && StringUtils.equals(ColumnDataTypeEnum.TEXT.getDataType(), dataType)) {
|
||||||
return true;
|
return true;
|
||||||
} else if (StringUtils.equals(FieldTypeEnum.RADIO.getValue(), fieldType) && StringUtils.equals(ColumnDataTypeEnum.CHAR.getDataType(), columnType)) {
|
} else if (StringUtils.equals(FieldTypeEnum.RADIO.getValue(), fieldType) && StringUtils.equals(ColumnDataTypeEnum.CHAR.getDataType(), dataType)) {
|
||||||
return true;
|
return true;
|
||||||
} else if (StringUtils.equals(FieldTypeEnum.SELECT_USER.getValue(), fieldType) && StringUtils.equals(ColumnDataTypeEnum.TEXT.getDataType(), columnType)) {
|
} else if (StringUtils.equals(FieldTypeEnum.SELECT_USER.getValue(), fieldType) && StringUtils.equals(ColumnDataTypeEnum.TEXT.getDataType(), dataType)) {
|
||||||
return true;
|
return true;
|
||||||
} else if (StringUtils.equals(FieldTypeEnum.SELECT_DEPARTMENT.getValue(), fieldType) && StringUtils.equals(ColumnDataTypeEnum.TEXT.getDataType(), columnType)) {
|
} else if (StringUtils.equals(FieldTypeEnum.SELECT_DEPARTMENT.getValue(), fieldType) && StringUtils.equals(ColumnDataTypeEnum.TEXT.getDataType(), dataType)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取数据库连接
|
|
||||||
*
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
private DatabaseVO getDataBase() {
|
|
||||||
DatabaseVO databaseVO = new DatabaseVO();
|
|
||||||
return databaseVO;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取建表的列
|
* 获取建表的列
|
||||||
*
|
*
|
||||||
|
@ -3,6 +3,7 @@ package com.cm.common.plugin.service.dynamic.impl;
|
|||||||
import com.cm.common.base.AbstractService;
|
import com.cm.common.base.AbstractService;
|
||||||
import com.cm.common.exception.SaveException;
|
import com.cm.common.exception.SaveException;
|
||||||
import com.cm.common.exception.SearchException;
|
import com.cm.common.exception.SearchException;
|
||||||
|
import com.cm.common.exception.UpdateException;
|
||||||
import com.cm.common.plugin.dao.dynamic.IDynamicTableDao;
|
import com.cm.common.plugin.dao.dynamic.IDynamicTableDao;
|
||||||
import com.cm.common.plugin.enums.database.table.ColumnDataTypeEnum;
|
import com.cm.common.plugin.enums.database.table.ColumnDataTypeEnum;
|
||||||
import com.cm.common.plugin.enums.database.table.ColumnIsNullableEnum;
|
import com.cm.common.plugin.enums.database.table.ColumnIsNullableEnum;
|
||||||
@ -42,23 +43,25 @@ public class DynamicTableServiceImpl extends AbstractService implements IDynamic
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void saveTableColumn(String tableName, TableColumnVO tableColumnVO) throws SaveException {
|
public void saveTableColumn(String tableName, TableColumnVO tableColumnVO) throws UpdateException {
|
||||||
|
StringBuilder saveTableColumnSQL = new StringBuilder(String.format("ALTER TABLE `%s%s` ADD COLUMN ", DYNAMIC_TABLE_PREFIX, WStringUtil.lowerUpper2UnderLine(tableName))).append(getSaveColumnSql(tableColumnVO));
|
||||||
|
dynamicTableDao.saveTableColumn(saveTableColumnSQL.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateTableColumnType(String tableName, TableColumnVO tableColumnVO) {
|
public void updateTableColumnType(String tableName, TableColumnVO tableColumnVO) {
|
||||||
|
StringBuilder updateTableColumnTypeSQL = new StringBuilder(String.format("ALTER TABLE `%s%s` MODIFY ", DYNAMIC_TABLE_PREFIX, WStringUtil.lowerUpper2UnderLine(tableName))).append(getSaveColumnSql(tableColumnVO));
|
||||||
|
dynamicTableDao.updateTableColumnType(updateTableColumnTypeSQL.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TableDTO getTableByTableName(String tableName) throws SearchException {
|
public TableDTO getTableByTableName(String tableName) throws SearchException {
|
||||||
return dynamicTableDao.getTableByTableName(tableName);
|
return dynamicTableDao.getTableByTableName(String.format("%s%s", DYNAMIC_TABLE_PREFIX, WStringUtil.lowerUpper2UnderLine(tableName)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<TableColumnDTO> listTableColumns(Map<String, Object> params) throws SearchException {
|
public List<TableColumnDTO> listTableColumns(String tableName) throws SearchException {
|
||||||
return null;
|
return dynamicTableDao.listTableColumns(String.format("%s%s", DYNAMIC_TABLE_PREFIX, WStringUtil.lowerUpper2UnderLine(tableName)));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -70,7 +73,7 @@ public class DynamicTableServiceImpl extends AbstractService implements IDynamic
|
|||||||
*/
|
*/
|
||||||
private String getSaveTableSQL(String tableName, List<TableColumnVO> tableColumns) {
|
private String getSaveTableSQL(String tableName, List<TableColumnVO> tableColumns) {
|
||||||
String underLineTableName = WStringUtil.lowerUpper2UnderLine(tableName);
|
String underLineTableName = WStringUtil.lowerUpper2UnderLine(tableName);
|
||||||
StringBuilder sql = new StringBuilder("CREATE TABLE `").append(tableName).append("`(");
|
StringBuilder sql = new StringBuilder("CREATE TABLE `").append(DYNAMIC_TABLE_PREFIX).append(WStringUtil.lowerUpper2UnderLine(tableName)).append("`(");
|
||||||
sql.append("`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键',");
|
sql.append("`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键',");
|
||||||
sql.append(String.format("`%s_id` CHAR(36) NOT NULL COMMENT '主键',", underLineTableName));
|
sql.append(String.format("`%s_id` CHAR(36) NOT NULL COMMENT '主键',", underLineTableName));
|
||||||
for (TableColumnVO tableColumn : tableColumns) {
|
for (TableColumnVO tableColumn : tableColumns) {
|
||||||
@ -103,6 +106,8 @@ public class DynamicTableServiceImpl extends AbstractService implements IDynamic
|
|||||||
columnSql.append(String.format("`%s` DOUBLE(%d, %d)", WStringUtil.lowerUpper2UnderLine(tableColumn.getColumnName()), tableColumn.getColumnLength(), tableColumn.getColumnFloatLength()));
|
columnSql.append(String.format("`%s` DOUBLE(%d, %d)", WStringUtil.lowerUpper2UnderLine(tableColumn.getColumnName()), tableColumn.getColumnLength(), tableColumn.getColumnFloatLength()));
|
||||||
} else if (StringUtils.equals(tableColumn.getDataType(), ColumnDataTypeEnum.BIGINT.getDataType())) {
|
} else if (StringUtils.equals(tableColumn.getDataType(), ColumnDataTypeEnum.BIGINT.getDataType())) {
|
||||||
columnSql.append(String.format("`%s` BIGINT(%d)", WStringUtil.lowerUpper2UnderLine(tableColumn.getColumnName()), tableColumn.getColumnLength()));
|
columnSql.append(String.format("`%s` BIGINT(%d)", WStringUtil.lowerUpper2UnderLine(tableColumn.getColumnName()), tableColumn.getColumnLength()));
|
||||||
|
} else if (StringUtils.equals(tableColumn.getDataType(), ColumnDataTypeEnum.CHAR.getDataType())) {
|
||||||
|
columnSql.append(String.format("`%s` CHAR(%d)", WStringUtil.lowerUpper2UnderLine(tableColumn.getColumnName()), tableColumn.getColumnLength()));
|
||||||
} else if (StringUtils.equals(tableColumn.getDataType(), ColumnDataTypeEnum.DATE.getDataType())) {
|
} else if (StringUtils.equals(tableColumn.getDataType(), ColumnDataTypeEnum.DATE.getDataType())) {
|
||||||
columnSql.append(String.format("`%s` DATE", WStringUtil.lowerUpper2UnderLine(tableColumn.getColumnName()), tableColumn.getColumnLength()));
|
columnSql.append(String.format("`%s` DATE", WStringUtil.lowerUpper2UnderLine(tableColumn.getColumnName()), tableColumn.getColumnLength()));
|
||||||
} else if (StringUtils.equals(tableColumn.getDataType(), ColumnDataTypeEnum.DATETIME.getDataType())) {
|
} else if (StringUtils.equals(tableColumn.getDataType(), ColumnDataTypeEnum.DATETIME.getDataType())) {
|
||||||
|
@ -2,6 +2,21 @@
|
|||||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
<mapper namespace="com.cm.common.plugin.dao.dynamic.IDynamicFormDao">
|
<mapper namespace="com.cm.common.plugin.dao.dynamic.IDynamicFormDao">
|
||||||
|
|
||||||
|
<resultMap id="dynamicFormDTO" type="com.cm.common.plugin.pojo.dtos.dynamic.DynamicFormDTO">
|
||||||
|
<id property="id" column="id"/>
|
||||||
|
<result property="tableName" column="table_name"/>
|
||||||
|
<result property="fieldName" column="field_name"/>
|
||||||
|
<result property="fieldExplain" column="field_explain"/>
|
||||||
|
<result property="fieldType" column="field_type"/>
|
||||||
|
<result property="fieldDefault" column="field_default"/>
|
||||||
|
<result property="dictionaryId" column="dictionary_id"/>
|
||||||
|
<result property="verifyType" column="verify_type"/>
|
||||||
|
<result property="verifyRegular" column="verify_regular"/>
|
||||||
|
<result property="fieldSort" column="field_sort"/>
|
||||||
|
<result property="listShow" column="list_show"/>
|
||||||
|
<result property="formShow" column="form_show"/>
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
<!-- 保存动态表单 -->
|
<!-- 保存动态表单 -->
|
||||||
<insert id="saveDynamicForm" parameterType="map">
|
<insert id="saveDynamicForm" parameterType="map">
|
||||||
INSERT INTO dynamic_form(
|
INSERT INTO dynamic_form(
|
||||||
@ -48,4 +63,14 @@
|
|||||||
field_name = #{fieldName}
|
field_name = #{fieldName}
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
|
<!-- 动态表单详情 -->
|
||||||
|
<select id="listDynamicForm" parameterType="string" resultMap="dynamicFormDTO">
|
||||||
|
SELECT
|
||||||
|
*
|
||||||
|
FROM
|
||||||
|
dynamic_form
|
||||||
|
WHERE
|
||||||
|
table_name = #{_parameter}
|
||||||
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
@ -3,8 +3,23 @@
|
|||||||
<mapper namespace="com.cm.common.plugin.dao.dynamic.IDynamicTableDao">
|
<mapper namespace="com.cm.common.plugin.dao.dynamic.IDynamicTableDao">
|
||||||
|
|
||||||
<resultMap id="tableDTO" type="com.cm.common.plugin.pojo.dtos.database.table.TableDTO">
|
<resultMap id="tableDTO" type="com.cm.common.plugin.pojo.dtos.database.table.TableDTO">
|
||||||
<result column="tableSchema" />
|
<result column="tableSchema" property="tableSchema"/>
|
||||||
<result column="tableName"/>
|
<result column="tableName" property="tableName"/>
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
<resultMap id="tableColumnDTO" type="com.cm.common.plugin.pojo.dtos.database.table.TableColumnDTO">
|
||||||
|
<result column="columnName" property="columnName"/>
|
||||||
|
<result column="columnDefault" property="columnDefault"/>
|
||||||
|
<result column="isNullable" property="isNullable"/>
|
||||||
|
<result column="dataType" property="dataType"/>
|
||||||
|
<result column="characterMaximumLength" property="characterMaximumLength"/>
|
||||||
|
<result column="numericPrecision" property="numericPrecision"/>
|
||||||
|
<result column="numericScale" property="numericScale"/>
|
||||||
|
<result column="datetimePrecision" property="datetimePrecision"/>
|
||||||
|
<result column="columnType" property="columnType"/>
|
||||||
|
<result column="columnKey" property="columnKey"/>
|
||||||
|
<result column="columnComment" property="columnComment"/>
|
||||||
|
<result column="extra" property="extra"/>
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
<!-- 建表 -->
|
<!-- 建表 -->
|
||||||
@ -12,6 +27,16 @@
|
|||||||
${_parameter}
|
${_parameter}
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
|
<!-- 加列 -->
|
||||||
|
<update id="saveTableColumn" parameterType="string">
|
||||||
|
${_parameter}
|
||||||
|
</update>
|
||||||
|
|
||||||
|
<!-- 修改列属性 -->
|
||||||
|
<update id="updateTableColumnType" parameterType="string">
|
||||||
|
${_parameter}
|
||||||
|
</update>
|
||||||
|
|
||||||
<!-- 通过表名获取表 -->
|
<!-- 通过表名获取表 -->
|
||||||
<select id="getTableByTableName" parameterType="string" resultMap="tableDTO">
|
<select id="getTableByTableName" parameterType="string" resultMap="tableDTO">
|
||||||
SELECT
|
SELECT
|
||||||
@ -25,4 +50,27 @@
|
|||||||
`TABLE_NAME` = #{_parameter}
|
`TABLE_NAME` = #{_parameter}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<!-- 表详情 -->
|
||||||
|
<select id="listTableColumns" parameterType="string" resultMap="tableColumnDTO">
|
||||||
|
SELECT
|
||||||
|
COLUMN_NAME columnName,
|
||||||
|
COLUMN_DEFAULT columnDefault,
|
||||||
|
IS_NULLABLE isNullable,
|
||||||
|
DATA_TYPE dataType,
|
||||||
|
CHARACTER_MAXIMUM_LENGTH characterMaximumLength,
|
||||||
|
NUMERIC_PRECISION numericPrecision,
|
||||||
|
NUMERIC_SCALE numericScale,
|
||||||
|
DATETIME_PRECISION datetimePrecision,
|
||||||
|
COLUMN_TYPE columnType,
|
||||||
|
COLUMN_KEY columnKey,
|
||||||
|
COLUMN_COMMENT columnComment,
|
||||||
|
EXTRA extra
|
||||||
|
FROM
|
||||||
|
`information_schema`.`COLUMNS`
|
||||||
|
WHERE
|
||||||
|
`TABLE_SCHEMA`= (SELECT database())
|
||||||
|
AND
|
||||||
|
`TABLE_NAME`= #{_parameter}
|
||||||
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
100
cloud-common/src/main/java/com/cm/common/utils/RegexUtil.java
Normal file
100
cloud-common/src/main/java/com/cm/common/utils/RegexUtil.java
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
package com.cm.common.utils;
|
||||||
|
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* When you feel like quitting. Think about why you started
|
||||||
|
* 当你想要放弃的时候,想想当初你为何开始
|
||||||
|
*
|
||||||
|
* @ClassName: RegexUtil
|
||||||
|
* @Description: 正则校验工具类
|
||||||
|
* @Author: WangGeng
|
||||||
|
* @Date: 2019/12/4 18:13
|
||||||
|
* @Version: 1.0
|
||||||
|
**/
|
||||||
|
public class RegexUtil {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 手机
|
||||||
|
*/
|
||||||
|
private static final Pattern PATTERN_PHONE = Pattern.compile("^1\\d{10}$");
|
||||||
|
/**
|
||||||
|
* 邮箱
|
||||||
|
*/
|
||||||
|
private static final Pattern PATTERN_EMAIL = Pattern.compile("^([a-zA-Z0-9_\\.\\-])+\\@(([a-zA-Z0-9\\-])+\\.)+([a-zA-Z0-9]{2,4})+$");
|
||||||
|
/**
|
||||||
|
* 邮箱
|
||||||
|
*/
|
||||||
|
private static final Pattern PATTERN_URL = Pattern.compile("(^#)|(^http(s*):\\/\\/[^\\s]+)");
|
||||||
|
/**
|
||||||
|
* 日期格式
|
||||||
|
*/
|
||||||
|
private static final Pattern PATTERN_DATE = Pattern.compile("^(\\d{4})[-\\/](\\d{1}|0\\d{1}|1[0-2])([-\\/](\\d{1}|0\\d{1}|[1-2][0-9]|3[0-1]))*$");
|
||||||
|
/**
|
||||||
|
* 身份证
|
||||||
|
*/
|
||||||
|
private static final Pattern PATTERN_IDENTITY = Pattern.compile("(^\\d{15}$)|(^\\d{17}(x|X|\\d)$)");
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 判断电话
|
||||||
|
*
|
||||||
|
* @param input
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static boolean isPhone(String input) {
|
||||||
|
return PATTERN_PHONE.matcher(input).matches();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 判断邮箱
|
||||||
|
*
|
||||||
|
* @param input
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static boolean isEmail(String input) {
|
||||||
|
return PATTERN_PHONE.matcher(input).matches();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 判断URL
|
||||||
|
*
|
||||||
|
* @param input
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static boolean isUrl(String input) {
|
||||||
|
return PATTERN_PHONE.matcher(input).matches();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 判断日期
|
||||||
|
*
|
||||||
|
* @param input
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static boolean isDate(String input) {
|
||||||
|
return PATTERN_PHONE.matcher(input).matches();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 判断身份证
|
||||||
|
*
|
||||||
|
* @param input
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static boolean isIdentity(String input) {
|
||||||
|
return PATTERN_PHONE.matcher(input).matches();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自定义判断
|
||||||
|
*
|
||||||
|
* @param customPattern
|
||||||
|
* @param input
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static boolean isMatch(Pattern customPattern, String input) {
|
||||||
|
return customPattern.matcher(input).matches();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user