用户管理增删改查全部完成
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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");
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.cxyxiaomo.epp.common.query;
|
||||
package com.cxyxiaomo.epp.PageTable.query;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -99,10 +99,10 @@
|
||||
</dependency>
|
||||
|
||||
<!-- 热部署 -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-devtools</artifactId>
|
||||
</dependency>
|
||||
<!--<dependency>-->
|
||||
<!-- <groupId>org.springframework.boot</groupId>-->
|
||||
<!-- <artifactId>spring-boot-devtools</artifactId>-->
|
||||
<!--</dependency>-->
|
||||
|
||||
</dependencies>
|
||||
|
||||
|
||||
@@ -2,14 +2,17 @@ package com.cxyxiaomo.epp.user.controller;
|
||||
|
||||
import com.alibaba.fastjson2.JSONArray;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.cxyxiaomo.epp.common.enums.EditType;
|
||||
import com.cxyxiaomo.epp.common.enums.SearchType;
|
||||
import com.cxyxiaomo.epp.PageTable.enums.AddType;
|
||||
import com.cxyxiaomo.epp.PageTable.enums.EditType;
|
||||
import com.cxyxiaomo.epp.PageTable.enums.SearchType;
|
||||
import com.cxyxiaomo.epp.PageTable.query.PageQuery;
|
||||
import com.cxyxiaomo.epp.PageTable.utils.FieldBuilder;
|
||||
import com.cxyxiaomo.epp.PageTable.utils.FieldMapperBuilder;
|
||||
import com.cxyxiaomo.epp.PageTable.utils.FieldRuleBuilder;
|
||||
import com.cxyxiaomo.epp.PageTable.utils.FieldRuleListBuilder;
|
||||
import com.cxyxiaomo.epp.common.pojo.Role;
|
||||
import com.cxyxiaomo.epp.common.pojo.User;
|
||||
import com.cxyxiaomo.epp.common.query.PageQuery;
|
||||
import com.cxyxiaomo.epp.common.response.Res;
|
||||
import com.cxyxiaomo.epp.common.utils.PageTableFieldBuilder;
|
||||
import com.cxyxiaomo.epp.common.utils.PageTableFieldMapperBuilder;
|
||||
import com.cxyxiaomo.epp.common.vo.UserVO;
|
||||
import com.cxyxiaomo.epp.user.service.RoleService;
|
||||
import com.cxyxiaomo.epp.user.service.UserService;
|
||||
@@ -66,7 +69,7 @@ public class UserController {
|
||||
*/
|
||||
@PostMapping("/rpc/getUserById")
|
||||
@ResponseBody
|
||||
public User getUserById(Long id) {
|
||||
public User getUserById(Integer id) {
|
||||
return userService.getUserById(id);
|
||||
}
|
||||
|
||||
@@ -78,7 +81,6 @@ public class UserController {
|
||||
@GetMapping("/manage/getUserList")
|
||||
@ResponseBody
|
||||
public Res getUserList(PageQuery pageQuery, UserVO userVO) {
|
||||
|
||||
// 查询分页数据
|
||||
PageHelper.startPage(pageQuery.getPageIndex(), pageQuery.getPageSize());
|
||||
List<User> userList = userService.getUserList(userVO);
|
||||
@@ -86,29 +88,82 @@ public class UserController {
|
||||
List<User> list = userPageInfo.getList();
|
||||
List<UserVO> voList = UserVO.convertFrom(list);
|
||||
|
||||
// id列 字段名(区分大小写;以VO中的变量名为准)
|
||||
// 新增、修改弹窗时,使用该列作为主键列进行操作
|
||||
String idFieldName = "id";
|
||||
|
||||
// 指定前端表格显示列
|
||||
JSONArray columns = PageTableFieldBuilder.create()
|
||||
.add("username", "username", "用户名",
|
||||
true, SearchType.INPUT,
|
||||
false, EditType.PLAIN_TEXT, null)
|
||||
.add("roleId", "roleName", "角色",
|
||||
true, SearchType.SELECT,
|
||||
true, EditType.SELECT, 0)
|
||||
.add("realname", "realname", "真实姓名",
|
||||
true, SearchType.INPUT,
|
||||
true, EditType.INPUT, "")
|
||||
.add("phoneNumber", "phoneNumber", "电话",
|
||||
true, SearchType.INPUT,
|
||||
true, EditType.INPUT, "")
|
||||
.add("idNumber", "idNumber", "身份证号",
|
||||
true, SearchType.INPUT,
|
||||
true, EditType.INPUT, "")
|
||||
.add("buildingId", "buildingId", "门栋/单元号",
|
||||
true, SearchType.INPUT,
|
||||
true, EditType.INPUT, "")
|
||||
.add("doorplate", "doorplate", "门牌号",
|
||||
true, SearchType.INPUT,
|
||||
true, EditType.INPUT, "")
|
||||
JSONArray columns = FieldBuilder.create()
|
||||
.add("username", "username", "账号", "",
|
||||
true, SearchType.INPUT, AddType.INPUT, EditType.CAN_NOT_EDIT,
|
||||
FieldBuilder.SEARCH_PLACEHOLDER_SAME_AS_FIELDNAME,
|
||||
"用户名", FieldBuilder.EDIT_PLACEHOLDER_SAME_AS_ADD_PLACEHOLDER,
|
||||
FieldRuleListBuilder.create()
|
||||
.add(FieldRuleBuilder.create("用户名").required())
|
||||
.add(FieldRuleBuilder.create("用户名").minMax(2, 10)),
|
||||
"DPD @word(2, 10)"
|
||||
)
|
||||
.add("password", "password", "密码", "",
|
||||
false, SearchType.CAN_NOT_SEARCH, AddType.INPUT, EditType.INPUT,
|
||||
null,
|
||||
"必填", "若不修改则留空",
|
||||
FieldRuleListBuilder.create()
|
||||
.add(FieldRuleBuilder.create("用户密码").minMax(2, 10)),
|
||||
"DPD @word(2, 10)"
|
||||
)
|
||||
.add("roleId", "roleName", "角色", "",
|
||||
true, SearchType.SELECT, AddType.SELECT, EditType.SELECT,
|
||||
"用户角色",
|
||||
"用户的角色", FieldBuilder.EDIT_PLACEHOLDER_SAME_AS_ADD_PLACEHOLDER,
|
||||
FieldRuleListBuilder.create()
|
||||
.add(FieldRuleBuilder.create("角色").required()),
|
||||
"DPD @pick([\"1\", \"2\", \"3\", \"4\", \"5\", \"6\"])"
|
||||
)
|
||||
.add("realname", "realname", "真实姓名", "",
|
||||
true, SearchType.INPUT, AddType.INPUT, EditType.INPUT,
|
||||
FieldBuilder.SEARCH_PLACEHOLDER_SAME_AS_FIELDNAME,
|
||||
"用户的真实姓名", FieldBuilder.EDIT_PLACEHOLDER_SAME_AS_ADD_PLACEHOLDER,
|
||||
FieldRuleListBuilder.create()
|
||||
.add(FieldRuleBuilder.create("真实姓名").required())
|
||||
.add(FieldRuleBuilder.create("真实姓名").minMax(2, 15)),
|
||||
"DPD @cword(2, 8)"
|
||||
)
|
||||
.add("phoneNumber", "phoneNumber", "电话", "",
|
||||
true, SearchType.INPUT, AddType.INPUT, EditType.INPUT,
|
||||
"电话号码",
|
||||
"支持11位手机号码、区号-7/8位座机号码", FieldBuilder.EDIT_PLACEHOLDER_SAME_AS_ADD_PLACEHOLDER,
|
||||
FieldRuleListBuilder.create()
|
||||
.add(FieldRuleBuilder.create("电话").required())
|
||||
.add(FieldRuleBuilder.create("电话").pattern("^(1[3-9]\\d{9})$|^(0\\d{2,3}-?\\d{7,8})$")),
|
||||
"DTD /^(1[3-9]\\d{9})$|^(0\\d{2,3}-?\\d{7,8})$/"
|
||||
)
|
||||
.add("idNumber", "idNumber", "身份证号", "",
|
||||
true, SearchType.INPUT, AddType.INPUT, EditType.INPUT,
|
||||
FieldBuilder.SEARCH_PLACEHOLDER_SAME_AS_FIELDNAME,
|
||||
"支持15位、18位数字、17位数字+X格式", FieldBuilder.EDIT_PLACEHOLDER_SAME_AS_ADD_PLACEHOLDER,
|
||||
FieldRuleListBuilder.create()
|
||||
.add(FieldRuleBuilder.create("身份证号").required())
|
||||
.add(FieldRuleBuilder.create("身份证号").min(15))
|
||||
.add(FieldRuleBuilder.create("身份证号").max(18))
|
||||
.add(FieldRuleBuilder.create("身份证号").pattern("^(\\d{15})$|^(\\d{18})$|^(\\d{17}(\\d|X|x))$")),
|
||||
"DTD /^(\\d{15})$|^(\\d{18})$|^(\\d{17}(\\d|X|x))$/"
|
||||
)
|
||||
.add("buildingId", "buildingId", "门栋单元", "",
|
||||
true, SearchType.INPUT, AddType.INPUT, EditType.INPUT,
|
||||
FieldBuilder.SEARCH_PLACEHOLDER_SAME_AS_FIELDNAME,
|
||||
"门栋及单元号,例如:11-05(11栋05单元)", FieldBuilder.EDIT_PLACEHOLDER_SAME_AS_ADD_PLACEHOLDER,
|
||||
FieldRuleListBuilder.create()
|
||||
.add(FieldRuleBuilder.create("门栋/单元号").minMax(2, 10)),
|
||||
"DTD /^\\d{2}-\\d{2}$/"
|
||||
)
|
||||
.add("doorplate", "doorplate", "门牌号", "",
|
||||
true, SearchType.INPUT, AddType.INPUT, EditType.INPUT,
|
||||
FieldBuilder.SEARCH_PLACEHOLDER_SAME_AS_FIELDNAME,
|
||||
"门牌号,例如:2003(20楼03户)", FieldBuilder.EDIT_PLACEHOLDER_SAME_AS_ADD_PLACEHOLDER,
|
||||
FieldRuleListBuilder.create()
|
||||
.add(FieldRuleBuilder.create("门牌号").minMax(1, 10)),
|
||||
"DTD /^\\d{4}$/"
|
||||
)
|
||||
.build();
|
||||
|
||||
// 指定需要翻译的字段
|
||||
@@ -119,7 +174,7 @@ public class UserController {
|
||||
roleMap.put(role.getId(), role.getRoleName());
|
||||
}
|
||||
// build
|
||||
JSONArray fieldMapper = PageTableFieldMapperBuilder.create()
|
||||
JSONArray fieldMapper = FieldMapperBuilder.create()
|
||||
.add("roleId", "roleName", roleMap)
|
||||
.build();
|
||||
|
||||
@@ -129,31 +184,70 @@ public class UserController {
|
||||
map.put("list", voList);
|
||||
map.put("columns", columns);
|
||||
map.put("fieldMapper", fieldMapper);
|
||||
map.put("idFieldName", idFieldName);
|
||||
|
||||
// 返回结果
|
||||
return Res.success(map);
|
||||
}
|
||||
|
||||
|
||||
@RequestMapping("/person")
|
||||
/**
|
||||
* 新增 / 编辑用户
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/manage/editUser")
|
||||
@ResponseBody
|
||||
public User person(String username) {
|
||||
return null;
|
||||
// return userService.getUserByUsername(username);
|
||||
public Res editUser(@ModelAttribute UserVO userVO, String password) {
|
||||
User user = UserVO.convertTo(userVO);
|
||||
|
||||
// 先查询用户名是否存在
|
||||
User existUser = userService.getUserByUsername(user.getUsername());
|
||||
|
||||
if (user.getId() == null || user.getId() < 1) {
|
||||
// 新增用户
|
||||
if (existUser != null) {
|
||||
return Res.error("用户名已存在,操作失败");
|
||||
}
|
||||
if (password == null || "".equals(password)) {
|
||||
return Res.error("密码不能为空");
|
||||
}
|
||||
String passwordHash = DigestUtils.sha512Hex(password);
|
||||
user.setPassword(passwordHash);
|
||||
userService.addUser(user);
|
||||
} else {
|
||||
// 修改用户
|
||||
if (existUser == null) {
|
||||
return Res.error("用户不存在,操作失败");
|
||||
}
|
||||
if (password == null || "".equals(password)) {
|
||||
user.setPassword(null);
|
||||
} else {
|
||||
String passwordHash = DigestUtils.sha512Hex(password);
|
||||
user.setPassword(passwordHash);
|
||||
}
|
||||
userService.updateUser(user);
|
||||
}
|
||||
return Res.success(true);
|
||||
}
|
||||
|
||||
@RequestMapping("/addUser")
|
||||
/**
|
||||
* 删除用户
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/manage/deleteUser")
|
||||
@ResponseBody
|
||||
public Res addUser(String username, String name, Integer role) {
|
||||
// User user = new User();
|
||||
// user.setUsername(username);
|
||||
// user.setPassword(username);
|
||||
// user.setName(name);
|
||||
// if (role == 2) {
|
||||
// user.setStu_id(username);
|
||||
// }
|
||||
// user.setRole(role);
|
||||
// return Res.success(userService.addUser(user));
|
||||
return null;
|
||||
public Res deleteUser(Integer id) {
|
||||
if (id == null || id <= 0) {
|
||||
return Res.error("用户不存在,删除失败");
|
||||
}
|
||||
// 先查询用户名是否存在
|
||||
User existUser = userService.getUserById(id);
|
||||
if (existUser == null) {
|
||||
return Res.error("用户不存在,删除失败");
|
||||
}
|
||||
boolean b = userService.deleteUser(existUser.getId());
|
||||
return Res.success(b);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,9 +13,13 @@ public interface UserDao {
|
||||
|
||||
public boolean addUser(User user);
|
||||
|
||||
public User getUserById(Long id);
|
||||
public boolean updateUser(User user);
|
||||
|
||||
public User getUserById(Integer id);
|
||||
|
||||
User getUserByUsername(String username);
|
||||
|
||||
public List<User> getUserList(UserVO userVO);
|
||||
|
||||
public boolean deleteUserById(Integer userId);
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ public class UserService {
|
||||
return userDao.getUserByUsername(username);
|
||||
}
|
||||
|
||||
public User getUserById(Long id) {
|
||||
public User getUserById(Integer id) {
|
||||
return userDao.getUserById(id);
|
||||
}
|
||||
|
||||
@@ -26,4 +26,21 @@ public class UserService {
|
||||
List<User> userList = userDao.getUserList(userVO);
|
||||
return userList;
|
||||
}
|
||||
|
||||
public boolean addUser(User user) {
|
||||
user.setId(null);
|
||||
if (user.getPermission() == null) {
|
||||
// 填充默认值
|
||||
user.setPermission("0");
|
||||
}
|
||||
return userDao.addUser(user);
|
||||
}
|
||||
|
||||
public boolean updateUser(User user) {
|
||||
return userDao.updateUser(user);
|
||||
}
|
||||
|
||||
public boolean deleteUser(Integer userId) {
|
||||
return userDao.deleteUserById(userId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,10 +4,48 @@
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.cxyxiaomo.epp.user.dao.UserDao">
|
||||
<insert id="addUser" parameterType="com.cxyxiaomo.epp.common.pojo.User">
|
||||
INSERT INTO user (username, password)
|
||||
VALUES (#{username}, #{password})
|
||||
INSERT INTO user (username, `password`, realname, id_number, phone_number, role_id, building_id, doorplate,
|
||||
permission, permission_time)
|
||||
VALUES (#{username}, #{password}, #{realname}, #{idNumber}, #{phoneNumber}, #{roleId}, #{buildingId},
|
||||
#{doorplate}, #{permission}, #{permissionTime})
|
||||
</insert>
|
||||
<select id="getUserById" parameterType="java.lang.Long" resultType="com.cxyxiaomo.epp.common.pojo.User">
|
||||
<update id="updateUser" parameterType="com.cxyxiaomo.epp.common.pojo.User">
|
||||
UPDATE user
|
||||
<set>
|
||||
<if test="username != null and username != ''">
|
||||
username = #{username},
|
||||
</if>
|
||||
<if test="password != null and password != ''">
|
||||
`password` = #{password},
|
||||
</if>
|
||||
<if test="realname != null and realname != ''">
|
||||
realname = #{realname},
|
||||
</if>
|
||||
<if test="idNumber != null and idNumber != ''">
|
||||
id_number = #{idNumber},
|
||||
</if>
|
||||
<if test="phoneNumber != null and phoneNumber != ''">
|
||||
phone_number = #{phoneNumber},
|
||||
</if>
|
||||
<if test="roleId != null">
|
||||
role_id = #{roleId},
|
||||
</if>
|
||||
<if test="buildingId != null and buildingId != ''">
|
||||
building_id = #{buildingId},
|
||||
</if>
|
||||
<if test="doorplate != null and doorplate != ''">
|
||||
doorplate = #{doorplate},
|
||||
</if>
|
||||
<if test="permission != null">
|
||||
permission = #{permission},
|
||||
</if>
|
||||
<if test="permissionTime != null">
|
||||
permission_time = #{permissionTime},
|
||||
</if>
|
||||
</set>
|
||||
WHERE id = #{id}
|
||||
</update>
|
||||
<select id="getUserById" parameterType="java.lang.Integer" resultType="com.cxyxiaomo.epp.common.pojo.User">
|
||||
SELECT *
|
||||
FROM user
|
||||
WHERE id = #{id}
|
||||
@@ -43,4 +81,10 @@
|
||||
AND doorplate LIKE concat('%',#{doorplate,jdbcType=VARCHAR},'%')
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<delete id="deleteUserById">
|
||||
DELETE
|
||||
FROM user
|
||||
WHERE id = #{userId}
|
||||
</delete>
|
||||
</mapper>
|
||||
|
||||
Reference in New Issue
Block a user