1
0
Code Issues Pull Requests Packages Projects Releases Wiki Activity GitHub Gitee

用户管理增删改查全部完成

This commit is contained in:
2023-03-29 17:24:27 +08:00
parent cf962a92da
commit 14907e3e26
24 changed files with 775 additions and 252 deletions

View File

@@ -0,0 +1,17 @@
package com.cxyxiaomo.epp.PageTable.enums;
public enum AddType {
CAN_NOT_ADD("plainText"),
INPUT("input"),
SELECT("select");
private final String value;
private AddType(String value) {
this.value = value;
}
public String getValue() {
return value;
}
}

View File

@@ -1,7 +1,7 @@
package com.cxyxiaomo.epp.common.enums;
package com.cxyxiaomo.epp.PageTable.enums;
public enum EditType {
PLAIN_TEXT("plainText"),
CAN_NOT_EDIT("plainText"),
INPUT("input"),
SELECT("select");

View File

@@ -1,7 +1,7 @@
package com.cxyxiaomo.epp.common.enums;
package com.cxyxiaomo.epp.PageTable.enums;
public enum SearchType {
CAN_NOT_SEARCH(null),
CAN_NOT_SEARCH("null"),
INPUT("input"),
SELECT("select");

View File

@@ -1,4 +1,4 @@
package com.cxyxiaomo.epp.common.query;
package com.cxyxiaomo.epp.PageTable.query;
import lombok.Getter;

View File

@@ -0,0 +1,85 @@
package com.cxyxiaomo.epp.PageTable.utils;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.cxyxiaomo.epp.PageTable.enums.AddType;
import com.cxyxiaomo.epp.PageTable.enums.EditType;
import com.cxyxiaomo.epp.PageTable.enums.SearchType;
public class FieldBuilder {
public final static String SEARCH_PLACEHOLDER_SAME_AS_FIELDNAME = "<SEARCH_PLACEHOLDER_SAME_AS_FIELDNAME>";
public final static String EDIT_PLACEHOLDER_SAME_AS_ADD_PLACEHOLDER = "<EDIT_PLACEHOLDER_SAME_AS_ADD_PLACEHOLDER>";
private JSONArray columns;
public static FieldBuilder create() {
FieldBuilder builder = new FieldBuilder();
builder.columns = new JSONArray();
return builder;
}
/**
* @param field 对应 POJO 中的属性名称 <br>
* 用于新增/修改弹窗 <br>
* @param prop 显示的字段名 如果需要翻译例如roleId->roleName则填写翻译后的字段 <br>
* 用于渲染表格时指定显示列 <br>
* @param fieldName 列的显示名称 <br>
* @param defaultValue 新增弹窗中的默认值 <br>
* @param showInTable <br>
* @param searchPlaceholder 搜索的placeholder <br>
* 如果为 null 则使用 fieldName <br>
* @param addPlaceholder <br>
* @param editPlaceholder <br>
* @param searchType 该筛选字段显示为什么类型 <br>
* @param addType 新增弹窗中该字段显示为什么类型 <br>
* @param editType 修改弹窗中该字段显示为什么类型 <br>
* @param fieldRuleListBuilder 提交时的表单验证 <br>
* @param mockDataPattern mock数据正则 <br>
* @return FieldBuilder
*/
public FieldBuilder add(String field, String prop, String fieldName, Object defaultValue,
Boolean showInTable, SearchType searchType, AddType addType, EditType editType,
String searchPlaceholder, String addPlaceholder, String editPlaceholder,
FieldRuleListBuilder fieldRuleListBuilder, String mockDataPattern) {
JSONObject jsonObject = new JSONObject(2);
/* 实际字段 */
// 用于筛选、增删改
jsonObject.put("field", field);
/* 表格数据 */
// 展示字段
jsonObject.put("prop", prop);
// 表格列显示名称
jsonObject.put("label", fieldName);
// 表格是否展示该字段
jsonObject.put("showInTable", showInTable);
/* 筛选 */
// 上方筛选条件
jsonObject.put("searchType", searchType.getValue());
jsonObject.put("searchPlaceholder", SEARCH_PLACEHOLDER_SAME_AS_FIELDNAME.equals(searchPlaceholder) ? fieldName : searchPlaceholder);
/* 弹窗 */
// 新增弹窗
jsonObject.put("addType", addType.getValue());
jsonObject.put("addPlaceholder", addPlaceholder);
// 修改弹窗
jsonObject.put("editType", editType.getValue());
jsonObject.put("editPlaceholder", EDIT_PLACEHOLDER_SAME_AS_ADD_PLACEHOLDER.equals(editPlaceholder) ? addPlaceholder : editPlaceholder);
// 新增/修改时的前端表单验证
jsonObject.put("validateRules", fieldRuleListBuilder.build());
// 新增弹窗 字段默认值
jsonObject.put("default", defaultValue);
jsonObject.put("mockRegex", mockDataPattern);
columns.add(jsonObject);
return this;
}
public JSONArray build() {
return columns;
}
}

View File

@@ -1,16 +1,16 @@
package com.cxyxiaomo.epp.common.utils;
package com.cxyxiaomo.epp.PageTable.utils;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import java.util.HashMap;
public class PageTableFieldMapperBuilder {
public class FieldMapperBuilder {
private JSONArray columns;
public static PageTableFieldMapperBuilder create() {
PageTableFieldMapperBuilder builder = new PageTableFieldMapperBuilder();
public static FieldMapperBuilder create() {
FieldMapperBuilder builder = new FieldMapperBuilder();
builder.columns = new JSONArray();
return builder;
}
@@ -27,7 +27,7 @@ public class PageTableFieldMapperBuilder {
// return this;
// }
public PageTableFieldMapperBuilder add(String prop, String label, HashMap mapper) {
public FieldMapperBuilder add(String prop, String label, HashMap mapper) {
JSONObject jsonObject = new JSONObject(2);
jsonObject.put("key", prop);
jsonObject.put("value", label);

View File

@@ -0,0 +1,86 @@
package com.cxyxiaomo.epp.PageTable.utils;
import com.alibaba.fastjson2.JSONObject;
/**
* Element Plus 表单验证
* GiHub refer: https://github.com/yiminghe/async-validator
*/
public class FieldRuleBuilder {
private String fieldDisplayName;
private JSONObject rules;
public static FieldRuleBuilder create(String fieldDisplayName) {
FieldRuleBuilder builder = new FieldRuleBuilder();
builder.rules = new JSONObject();
builder.fieldDisplayName = fieldDisplayName;
// 默认在 blur 时触发验证
// builder.rules.put("trigger", "blur");
builder.rules.put("trigger", "change");
return builder;
}
public FieldRuleBuilder trigger(String trigger) {
rules.put("trigger", trigger);
return this;
}
public FieldRuleBuilder message(String message) {
rules.put("message", message);
return this;
}
public FieldRuleBuilder required() {
rules.put("required", true);
rules.put("message", fieldDisplayName + "不能为空");
return this;
}
public FieldRuleBuilder pattern(String regEx) {
rules.put("pattern", regEx);
rules.put("message", fieldDisplayName + "输入不符合要求,请检查");
return this;
}
public FieldRuleBuilder number() {
rules.put("type", "number");
rules.put("message", fieldDisplayName + "必须为数字");
return this;
}
public FieldRuleBuilder min(Integer min) {
rules.put("min", min);
rules.put("message", fieldDisplayName + "过短");
return this;
}
public FieldRuleBuilder max(Integer max) {
rules.put("max", max);
rules.put("message", fieldDisplayName + "过长");
return this;
}
public FieldRuleBuilder minMax(Integer min, Integer max) {
rules.put("min", min);
rules.put("max", max);
rules.put("message", fieldDisplayName + "长度应在 " + min + "" + max + " 之间");
return this;
}
public FieldRuleBuilder length(Integer len) {
rules.put("min", len);
rules.put("max", len);
rules.put("message", fieldDisplayName + "位数不对,应为 " + len + "");
return this;
}
public FieldRuleBuilder add(String field, Object value) {
rules.put(field, value);
return this;
}
public JSONObject build() {
return rules;
}
}

View File

@@ -0,0 +1,23 @@
package com.cxyxiaomo.epp.PageTable.utils;
import com.alibaba.fastjson2.JSONArray;
public class FieldRuleListBuilder {
private JSONArray ruleList;
public static FieldRuleListBuilder create() {
FieldRuleListBuilder builder = new FieldRuleListBuilder();
builder.ruleList = new JSONArray();
return builder;
}
public FieldRuleListBuilder add(FieldRuleBuilder fieldRuleBuilder) {
ruleList.add(fieldRuleBuilder.build());
return this;
}
public JSONArray build() {
return ruleList;
}
}

View File

@@ -0,0 +1,29 @@
package com.cxyxiaomo.epp.PageTable.utils;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
public class FieldValidateBuilder {
private JSONObject validates;
public static FieldValidateBuilder create() {
FieldValidateBuilder builder = new FieldValidateBuilder();
builder.validates = new JSONObject();
return builder;
}
public FieldValidateBuilder add(String field, FieldRuleBuilder fieldRuleBuilder) {
JSONArray jsonArray = validates.getJSONArray(field);
if (jsonArray == null) {
jsonArray = new JSONArray();
}
jsonArray.add(fieldRuleBuilder.build());
validates.put(field, jsonArray);
return this;
}
public JSONObject build() {
return validates;
}
}

View File

@@ -1,4 +1,4 @@
package com.cxyxiaomo.epp.common.utils;
package com.cxyxiaomo.epp.PageTable.utils;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.BeanUtils;

View File

@@ -1,58 +0,0 @@
package com.cxyxiaomo.epp.common.utils;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.cxyxiaomo.epp.common.enums.EditType;
import com.cxyxiaomo.epp.common.enums.SearchType;
public class PageTableFieldBuilder {
private JSONArray columns;
public static PageTableFieldBuilder create() {
PageTableFieldBuilder builder = new PageTableFieldBuilder();
builder.columns = new JSONArray();
return builder;
}
/**
* @param field 对应 POJO 中的属性名称 <br>
* 用于新增/修改弹窗 <br>
* @param prop 显示的字段名 如果需要翻译例如roleId->roleName则填写翻译后的字段 <br>
* 用于渲染表格时指定显示列 <br>
* @param label 列的显示名称 <br>
* @param canSearch 该字段能否在表格上方被筛选 <br>
* @param searchType 该筛选字段显示为什么类型 <br>
* @param canEdit 该字段能否在新增/修改弹窗中被修改 <br>
* @param editType 新增/修改弹窗中该字段显示为什么类型 <br>
* @param defaultWhenAdd 新增弹窗中的默认值 <br>
* @return
*/
public PageTableFieldBuilder add(String field, String prop, String label,
Boolean canSearch, SearchType searchType,
Boolean canEdit, EditType editType, Object defaultWhenAdd) {
JSONObject jsonObject = new JSONObject(2);
// 表格数据
jsonObject.put("prop", prop);
jsonObject.put("label", label);
// 上方筛选条件
jsonObject.put("canSearch", canSearch);
jsonObject.put("searchType", searchType.getValue());
// 新增、修改弹窗
jsonObject.put("field", field);
jsonObject.put("canEdit", canEdit);
jsonObject.put("editType", editType.getValue());
// 新增弹窗 字段默认值
jsonObject.put("default", defaultWhenAdd);
columns.add(jsonObject);
return this;
}
public JSONArray build() {
return columns;
}
}

View File

@@ -45,4 +45,13 @@ public class UserVO implements Serializable {
List<UserVO> userVOList = userList.stream().map(UserVO::convertFrom).collect(Collectors.toList());
return userVOList;
}
public static User convertTo(UserVO userVO) {
if (userVO == null) {
return null;
}
User user = new User();
BeanUtils.copyProperties(userVO, user);
return user;
}
}