From 25e11ad9bc9409dd1c7d3eff7c68a0ac3caee845 Mon Sep 17 00:00:00 2001 From: Charles7c Date: Sat, 11 Mar 2023 00:26:18 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=9A=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=90=8E=E7=AB=AF=E5=85=AC=E5=85=B1=20CRUD=20=E7=BB=84?= =?UTF-8?q?=E4=BB=B6-=E4=BF=AE=E6=94=B9=E6=8E=A5=E5=8F=A3=EF=BC=8C?= =?UTF-8?q?=E5=B0=86=20id=20=E4=BB=8E=E8=AF=B7=E6=B1=82=E4=BD=93=E6=8F=90?= =?UTF-8?q?=E5=8F=96=E5=88=B0=E8=B7=AF=E5=BE=84=E5=8F=98=E9=87=8F=EF=BC=8C?= =?UTF-8?q?=E6=9B=B4=E7=AC=A6=E5=90=88=20RESTful=20=E9=A3=8E=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cnadmin/common/base/BaseController.java | 10 ++++--- .../cnadmin/common/base/BaseRequest.java | 12 -------- .../cnadmin/common/base/BaseService.java | 4 ++- .../cnadmin/common/base/BaseServiceImpl.java | 30 +++---------------- .../system/service/impl/DeptServiceImpl.java | 12 ++++---- .../system/service/impl/MenuServiceImpl.java | 8 ++--- .../system/service/impl/RoleServiceImpl.java | 17 +++++------ .../system/service/impl/UserServiceImpl.java | 11 ++++--- continew-admin-ui/src/api/system/dept.ts | 4 +-- continew-admin-ui/src/api/system/menu.ts | 4 +-- continew-admin-ui/src/api/system/role.ts | 4 +-- continew-admin-ui/src/api/system/user.ts | 4 +-- .../src/views/system/dept/index.vue | 20 +++++++------ .../src/views/system/menu/index.vue | 20 +++++++------ .../src/views/system/role/index.vue | 20 +++++++------ .../src/views/system/user/index.vue | 20 +++++++------ .../system/UserCenterController.java | 3 +- 17 files changed, 89 insertions(+), 114 deletions(-) diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/base/BaseController.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/base/BaseController.java index 02ed886e..621eeb1d 100644 --- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/base/BaseController.java +++ b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/base/BaseController.java @@ -144,7 +144,7 @@ public abstract class BaseController, V, D, Q, @Operation(summary = "新增数据") @ResponseBody @PostMapping - protected R add(@Validated(BaseRequest.Add.class) @RequestBody C request) { + protected R add(@Validated @RequestBody C request) { this.checkPermission("add"); Long id = baseService.add(request); return R.ok("新增成功", id); @@ -155,14 +155,16 @@ public abstract class BaseController, V, D, Q, * * @param request * 修改信息 + * @param id + * ID * @return / */ @Operation(summary = "修改数据") @ResponseBody - @PutMapping - protected R update(@Validated(BaseRequest.Update.class) @RequestBody C request) { + @PutMapping("/{id}") + protected R update(@Validated @RequestBody C request, @PathVariable Long id) { this.checkPermission("update"); - baseService.update(request); + baseService.update(request, id); return R.ok("修改成功"); } diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/base/BaseRequest.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/base/BaseRequest.java index 687bfc7d..86575396 100644 --- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/base/BaseRequest.java +++ b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/base/BaseRequest.java @@ -18,14 +18,10 @@ package top.charles7c.cnadmin.common.base; import java.io.Serializable; -import javax.validation.constraints.NotNull; -import javax.validation.constraints.Null; import javax.validation.groups.Default; import lombok.Data; -import io.swagger.v3.oas.annotations.media.Schema; - /** * Request 基类 * @@ -37,14 +33,6 @@ public class BaseRequest implements Serializable { private static final long serialVersionUID = 1L; - /** - * ID - */ - @Schema(description = "ID") - @Null(message = "新增时,ID 必须为空", groups = Add.class) - @NotNull(message = "修改时,ID 不能为空", groups = Update.class) - private Long id; - /** * 分组校验-创建 */ diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/base/BaseService.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/base/BaseService.java index ab3bee9f..913ca36c 100644 --- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/base/BaseService.java +++ b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/base/BaseService.java @@ -100,8 +100,10 @@ public interface BaseService { * * @param request * 修改信息 + * @param id + * ID */ - void update(C request); + void update(C request, Long id); /** * 删除 diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/base/BaseServiceImpl.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/base/BaseServiceImpl.java index bf9405a4..c7d31051 100644 --- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/base/BaseServiceImpl.java +++ b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/base/BaseServiceImpl.java @@ -28,9 +28,6 @@ import org.springframework.transaction.annotation.Transactional; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.core.metadata.TableInfo; -import com.baomidou.mybatisplus.core.metadata.TableInfoHelper; -import com.baomidou.mybatisplus.core.toolkit.Assert; import com.baomidou.mybatisplus.core.toolkit.ReflectionKit; import cn.hutool.core.bean.BeanUtil; @@ -75,7 +72,7 @@ import top.charles7c.cnadmin.common.util.validate.CheckUtils; * @author Charles7c * @since 2023/1/26 21:52 */ -public abstract class BaseServiceImpl, T, V, D, Q, C extends BaseRequest> +public abstract class BaseServiceImpl, T extends BaseDO, V, D, Q, C extends BaseRequest> implements BaseService { @Autowired @@ -84,14 +81,12 @@ public abstract class BaseServiceImpl, T, V, D, Q, C ext private final Class entityClass; private final Class voClass; private final Class detailVoClass; - private final String entityIdName; public BaseServiceImpl() { this.entityClass = (Class)ReflectionKit.getSuperClassGenericType(this.getClass(), BaseServiceImpl.class, 1); this.voClass = (Class)ReflectionKit.getSuperClassGenericType(this.getClass(), BaseServiceImpl.class, 2); this.detailVoClass = (Class)ReflectionKit.getSuperClassGenericType(this.getClass(), BaseServiceImpl.class, 3); - this.entityIdName = this.currentEntityIdName(); } @Override @@ -178,19 +173,15 @@ public abstract class BaseServiceImpl, T, V, D, Q, C ext if (request == null) { return 0L; } - // 保存信息 T entity = BeanUtil.copyProperties(request, entityClass); baseMapper.insert(entity); - TableInfo tableInfo = TableInfoHelper.getTableInfo(entityClass); - Object idValue = tableInfo.getPropertyValue(entity, entityIdName); - return Convert.toLong(idValue); + return entity.getId(); } @Override @Transactional(rollbackFor = Exception.class) - public void update(C request) { - Object idValue = ReflectUtil.getFieldValue(request, entityIdName); - T entity = this.getById(idValue); + public void update(C request, Long id) { + T entity = this.getById(id); BeanUtil.copyProperties(request, entity, CopyOptions.create().ignoreNullValue()); baseMapper.updateById(entity); } @@ -258,17 +249,4 @@ public abstract class BaseServiceImpl, T, V, D, Q, C ext detailVO.setUpdateUserString(ExceptionUtils.exToNull(() -> userService.getNicknameById(updateUser))); } } - - /** - * 获取实体类 ID 名称 - * - * @return 实体类 ID 名称 - */ - private String currentEntityIdName() { - TableInfo tableInfo = TableInfoHelper.getTableInfo(entityClass); - Assert.notNull(tableInfo, "error: can not execute. because can not find cache of TableInfo for entity!"); - String keyProperty = tableInfo.getKeyProperty(); - Assert.notEmpty(keyProperty, "error: can not execute. because can not find column for id from entity!"); - return keyProperty; - } } diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/DeptServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/DeptServiceImpl.java index 98c2710a..0268ff7d 100644 --- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/DeptServiceImpl.java +++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/DeptServiceImpl.java @@ -61,7 +61,7 @@ public class DeptServiceImpl extends BaseServiceImpl isExists, String.format("新增失败,'%s'已存在", name)); request.setStatus(DisEnableStatusEnum.ENABLE); @@ -73,20 +73,20 @@ public class DeptServiceImpl extends BaseServiceImpl isExists, String.format("修改失败,'%s'已存在", name)); - DeptDO oldDept = baseMapper.selectById(request.getId()); + DeptDO oldDept = baseMapper.selectById(id); // 更新祖级列表 if (!Objects.equals(oldDept.getParentId(), request.getParentId())) { DeptDO newParentDept = baseMapper.selectById(request.getParentId()); CheckUtils.throwIfNull(newParentDept, "上级部门不存在"); request.setAncestors(String.format("%s,%s", newParentDept.getAncestors(), request.getParentId())); - this.updateChildrenAncestors(request.getId(), request.getAncestors(), oldDept.getAncestors()); + this.updateChildrenAncestors(id, request.getAncestors(), oldDept.getAncestors()); } - super.update(request); + super.update(request, id); } @Override diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/MenuServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/MenuServiceImpl.java index 6e68780f..969319be 100644 --- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/MenuServiceImpl.java +++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/MenuServiceImpl.java @@ -50,7 +50,7 @@ public class MenuServiceImpl extends BaseServiceImpl isExists, String.format("新增失败,'%s'已存在", title)); request.setStatus(DisEnableStatusEnum.ENABLE); @@ -59,12 +59,12 @@ public class MenuServiceImpl extends BaseServiceImpl isExists, String.format("修改失败,'%s'已存在", title)); - super.update(request); + super.update(request, id); } @Override diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/RoleServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/RoleServiceImpl.java index 33fb22cd..e7ff7a84 100644 --- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/RoleServiceImpl.java +++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/RoleServiceImpl.java @@ -65,9 +65,9 @@ public class RoleServiceImpl extends BaseServiceImpl this.checkNameExists(name, request.getId()), String.format("新增失败,'%s'已存在", name)); + CheckUtils.throwIf(() -> this.checkNameExists(name, null), String.format("新增失败,'%s'已存在", name)); String code = request.getCode(); - CheckUtils.throwIf(() -> this.checkCodeExists(code, request.getId()), String.format("新增失败,'%s'已存在", code)); + CheckUtils.throwIf(() -> this.checkCodeExists(code, null), String.format("新增失败,'%s'已存在", code)); // 新增信息 request.setStatus(DisEnableStatusEnum.ENABLE); @@ -81,19 +81,18 @@ public class RoleServiceImpl extends BaseServiceImpl this.checkNameExists(name, request.getId()), String.format("修改失败,'%s'已存在", name)); + CheckUtils.throwIf(() -> this.checkNameExists(name, id), String.format("修改失败,'%s'已存在", name)); String code = request.getCode(); - CheckUtils.throwIf(() -> this.checkCodeExists(code, request.getId()), String.format("修改失败,'%s'已存在", code)); + CheckUtils.throwIf(() -> this.checkCodeExists(code, id), String.format("修改失败,'%s'已存在", code)); // 更新信息 - super.update(request); - Long roleId = request.getId(); + super.update(request, id); // 保存角色和菜单关联 - roleMenuService.save(request.getMenuIds(), roleId); + roleMenuService.save(request.getMenuIds(), id); // 保存角色和部门关联 - roleDeptService.save(request.getDeptIds(), roleId); + roleDeptService.save(request.getDeptIds(), id); } @Override diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/UserServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/UserServiceImpl.java index ed81cc9e..9df420d8 100644 --- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/UserServiceImpl.java +++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/UserServiceImpl.java @@ -75,7 +75,7 @@ public class UserServiceImpl extends BaseServiceImpl isExists, String.format("新增失败,'%s'已存在", username)); // 新增信息 @@ -91,16 +91,15 @@ public class UserServiceImpl extends BaseServiceImpl isExists, String.format("修改失败,'%s'已存在", username)); // 更新信息 - super.update(request); - Long userId = request.getId(); + super.update(request, id); // 保存用户和角色关联 - userRoleService.save(request.getRoleIds(), userId); + userRoleService.save(request.getRoleIds(), id); } @Override diff --git a/continew-admin-ui/src/api/system/dept.ts b/continew-admin-ui/src/api/system/dept.ts index 3979afd2..b1bce977 100644 --- a/continew-admin-ui/src/api/system/dept.ts +++ b/continew-admin-ui/src/api/system/dept.ts @@ -40,8 +40,8 @@ export function addDept(req: DeptRecord) { return axios.post(BASE_URL, req); } -export function updateDept(req: DeptRecord) { - return axios.put(BASE_URL, req); +export function updateDept(req: DeptRecord, id: string) { + return axios.put(`${BASE_URL}/${id}`, req); } export function deleteDept(ids: string | Array) { diff --git a/continew-admin-ui/src/api/system/menu.ts b/continew-admin-ui/src/api/system/menu.ts index ffca539c..67d5cdab 100644 --- a/continew-admin-ui/src/api/system/menu.ts +++ b/continew-admin-ui/src/api/system/menu.ts @@ -48,8 +48,8 @@ export function addMenu(req: MenuRecord) { return axios.post(BASE_URL, req); } -export function updateMenu(req: MenuRecord) { - return axios.put(BASE_URL, req); +export function updateMenu(req: MenuRecord, id: string) { + return axios.put(`${BASE_URL}/${id}`, req); } export function deleteMenu(ids: string | Array) { diff --git a/continew-admin-ui/src/api/system/role.ts b/continew-admin-ui/src/api/system/role.ts index 9807f34a..7dd713db 100644 --- a/continew-admin-ui/src/api/system/role.ts +++ b/continew-admin-ui/src/api/system/role.ts @@ -50,8 +50,8 @@ export function addRole(req: RoleRecord) { return axios.post(BASE_URL, req); } -export function updateRole(req: RoleRecord) { - return axios.put(BASE_URL, req); +export function updateRole(req: RoleRecord, id: string) { + return axios.put(`${BASE_URL}/${id}`, req); } export function deleteRole(ids: string | Array) { diff --git a/continew-admin-ui/src/api/system/user.ts b/continew-admin-ui/src/api/system/user.ts index 385a89da..6e284381 100644 --- a/continew-admin-ui/src/api/system/user.ts +++ b/continew-admin-ui/src/api/system/user.ts @@ -55,8 +55,8 @@ export function addUser(req: UserRecord) { return axios.post(BASE_URL, req); } -export function updateUser(req: UserRecord) { - return axios.put(BASE_URL, req); +export function updateUser(req: UserRecord, id: string) { + return axios.put(`${BASE_URL}/${id}`, req); } export function deleteUser(ids: string | Array) { diff --git a/continew-admin-ui/src/views/system/dept/index.vue b/continew-admin-ui/src/views/system/dept/index.vue index 92aa8237..4e5a81a0 100644 --- a/continew-admin-ui/src/views/system/dept/index.vue +++ b/continew-admin-ui/src/views/system/dept/index.vue @@ -431,7 +431,7 @@ proxy.$refs.formRef.validate((valid: any) => { if (!valid) { if (form.value.id !== undefined) { - updateDept(form.value).then((res) => { + updateDept(form.value, form.value.id).then((res) => { handleCancel(); getList(); proxy.$message.success(res.msg); @@ -559,14 +559,16 @@ * @param record 记录信息 */ const handleChangeStatus = (record: DeptRecord) => { - const tip = record.status === 1 ? '启用' : '禁用'; - updateDept(record) - .then(() => { - proxy.$message.success(`${tip}成功`); - }) - .catch(() => { - record.status = record.status === 1 ? 2 : 1; - }); + if (record.id) { + const tip = record.status === 1 ? '启用' : '禁用'; + updateDept(record, record.id) + .then(() => { + proxy.$message.success(`${tip}成功`); + }) + .catch(() => { + record.status = record.status === 1 ? 2 : 1; + }); + } }; /** diff --git a/continew-admin-ui/src/views/system/menu/index.vue b/continew-admin-ui/src/views/system/menu/index.vue index a3eab6c5..20a3ec22 100644 --- a/continew-admin-ui/src/views/system/menu/index.vue +++ b/continew-admin-ui/src/views/system/menu/index.vue @@ -482,7 +482,7 @@ proxy.$refs.formRef.validate((valid: any) => { if (!valid) { if (form.value.id !== undefined) { - updateMenu(form.value).then((res) => { + updateMenu(form.value, form.value.id).then((res) => { handleCancel(); getList(); proxy.$message.success(res.msg); @@ -596,14 +596,16 @@ * @param record 记录信息 */ const handleChangeStatus = (record: MenuRecord) => { - const tip = record.status === 1 ? '启用' : '禁用'; - updateMenu(record) - .then(() => { - proxy.$message.success(`${tip}成功`); - }) - .catch(() => { - record.status = record.status === 1 ? 2 : 1; - }); + if (record.id) { + const tip = record.status === 1 ? '启用' : '禁用'; + updateMenu(record, record.id) + .then(() => { + proxy.$message.success(`${tip}成功`); + }) + .catch(() => { + record.status = record.status === 1 ? 2 : 1; + }); + } }; /** diff --git a/continew-admin-ui/src/views/system/role/index.vue b/continew-admin-ui/src/views/system/role/index.vue index feb70143..1b9f54b2 100644 --- a/continew-admin-ui/src/views/system/role/index.vue +++ b/continew-admin-ui/src/views/system/role/index.vue @@ -625,7 +625,7 @@ if (form.value.id !== undefined) { form.value.menuIds = getMenuAllCheckedKeys(); form.value.deptIds = getDeptAllCheckedKeys(); - updateRole(form.value).then((res) => { + updateRole(form.value, form.value.id).then((res) => { handleCancel(); getList(); proxy.$message.success(res.msg); @@ -731,14 +731,16 @@ * @param record 记录信息 */ const handleChangeStatus = (record: RoleRecord) => { - const tip = record.status === 1 ? '启用' : '禁用'; - updateRole(record) - .then(() => { - proxy.$message.success(`${tip}成功`); - }) - .catch(() => { - record.status = record.status === 1 ? 2 : 1; - }); + if (record.id) { + const tip = record.status === 1 ? '启用' : '禁用'; + updateRole(record, record.id) + .then(() => { + proxy.$message.success(`${tip}成功`); + }) + .catch(() => { + record.status = record.status === 1 ? 2 : 1; + }); + } }; /** diff --git a/continew-admin-ui/src/views/system/user/index.vue b/continew-admin-ui/src/views/system/user/index.vue index 2aa5a896..0166b15f 100644 --- a/continew-admin-ui/src/views/system/user/index.vue +++ b/continew-admin-ui/src/views/system/user/index.vue @@ -695,7 +695,7 @@ proxy.$refs.formRef.validate((valid: any) => { if (!valid) { if (form.value.id !== undefined) { - updateUser(form.value).then((res) => { + updateUser(form.value, form.value.id).then((res) => { handleCancel(); getList(); proxy.$message.success(res.msg); @@ -825,14 +825,16 @@ * @param record 记录信息 */ const handleChangeStatus = (record: UserRecord) => { - const tip = record.status === 1 ? '启用' : '禁用'; - updateUser(record) - .then(() => { - proxy.$message.success(`${tip}成功`); - }) - .catch(() => { - record.status = record.status === 1 ? 2 : 1; - }); + if (record.id) { + const tip = record.status === 1 ? '启用' : '禁用'; + updateUser(record, record.id) + .then(() => { + proxy.$message.success(`${tip}成功`); + }) + .catch(() => { + record.status = record.status === 1 ? 2 : 1; + }); + } }; /** diff --git a/continew-admin-webapi/src/main/java/top/charles7c/cnadmin/webapi/controller/system/UserCenterController.java b/continew-admin-webapi/src/main/java/top/charles7c/cnadmin/webapi/controller/system/UserCenterController.java index 2165d7d0..ee31e6e5 100644 --- a/continew-admin-webapi/src/main/java/top/charles7c/cnadmin/webapi/controller/system/UserCenterController.java +++ b/continew-admin-webapi/src/main/java/top/charles7c/cnadmin/webapi/controller/system/UserCenterController.java @@ -74,9 +74,8 @@ public class UserCenterController { @PatchMapping("/basic/info") public R updateBasicInfo(@Validated @RequestBody UpdateBasicInfoRequest updateBasicInfoRequest) { UserRequest userRequest = new UserRequest(); - userRequest.setId(LoginHelper.getUserId()); BeanUtil.copyProperties(updateBasicInfoRequest, userRequest); - userService.update(userRequest); + userService.update(userRequest, LoginHelper.getUserId()); return R.ok("修改成功"); }