diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/request/UpdateUserRoleRequest.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/request/UpdateUserRoleRequest.java new file mode 100644 index 00000000..6462b77f --- /dev/null +++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/request/UpdateUserRoleRequest.java @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2022-present Charles7c Authors. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package top.charles7c.cnadmin.system.model.request; + +import java.io.Serializable; +import java.util.List; + +import javax.validation.constraints.NotEmpty; + +import lombok.Data; + +import io.swagger.v3.oas.annotations.media.Schema; + +/** + * 修改用户角色信息 + * + * @author Charles7c + * @since 2023/2/24 23:05 + */ +@Data +@Schema(description = "修改用户角色信息") +public class UpdateUserRoleRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 角色 ID 列表 + */ + @Schema(description = "所属角色") + @NotEmpty(message = "所属角色不能为空") + private List roleIds; +} diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/request/UserRequest.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/request/UserRequest.java index 5246db22..7600fa88 100644 --- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/request/UserRequest.java +++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/request/UserRequest.java @@ -18,10 +18,7 @@ package top.charles7c.cnadmin.system.model.request; import java.util.List; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; -import javax.validation.constraints.Null; -import javax.validation.constraints.Pattern; +import javax.validation.constraints.*; import lombok.Data; @@ -106,12 +103,14 @@ public class UserRequest extends BaseRequest { /** * 部门 ID */ - @Schema(description = "部门 ID") + @Schema(description = "所属部门") + @NotNull(message = "所属部门不能为空") private Long deptId; /** * 角色 ID 列表 */ - @Schema(description = "角色 ID 列表") + @Schema(description = "所属角色") + @NotEmpty(message = "所属角色不能为空") private List roleIds; } diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/UserService.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/UserService.java index f75fdea4..05c4d24b 100644 --- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/UserService.java +++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/UserService.java @@ -23,6 +23,7 @@ import org.springframework.web.multipart.MultipartFile; import top.charles7c.cnadmin.common.base.BaseService; import top.charles7c.cnadmin.system.model.entity.UserDO; import top.charles7c.cnadmin.system.model.query.UserQuery; +import top.charles7c.cnadmin.system.model.request.UpdateUserRoleRequest; import top.charles7c.cnadmin.system.model.request.UserRequest; import top.charles7c.cnadmin.system.model.vo.UserDetailVO; import top.charles7c.cnadmin.system.model.vo.UserVO; @@ -79,6 +80,24 @@ public interface UserService extends BaseService deptIds) { return super.lambdaQuery().in(UserDO::getDeptId, deptIds).count(); diff --git a/continew-admin-ui/src/api/system/user.ts b/continew-admin-ui/src/api/system/user.ts index 51872373..0b888c58 100644 --- a/continew-admin-ui/src/api/system/user.ts +++ b/continew-admin-ui/src/api/system/user.ts @@ -61,3 +61,15 @@ export function updateUser(req: UserRecord) { export function deleteUser(ids: number | Array) { return axios.delete(`${BASE_URL}/${ids}`); } + +export function resetPassword(id: number) { + return axios.patch(`${BASE_URL}/${id}/password`); +} + +export interface UpdateUserRoleReq { + roleIds?: Array; +} + +export function updateUserRole(req: UpdateUserRoleReq, id: number) { + return axios.patch(`${BASE_URL}/${id}/role`, req); +} diff --git a/continew-admin-ui/src/assets/icons/svg/privacy.svg b/continew-admin-ui/src/assets/icons/svg/privacy.svg new file mode 100644 index 00000000..5018c5e3 --- /dev/null +++ b/continew-admin-ui/src/assets/icons/svg/privacy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/continew-admin-ui/src/assets/icons/svg/reference.svg b/continew-admin-ui/src/assets/icons/svg/reference.svg new file mode 100644 index 00000000..84728213 --- /dev/null +++ b/continew-admin-ui/src/assets/icons/svg/reference.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/continew-admin-ui/src/assets/style/global.less b/continew-admin-ui/src/assets/style/global.less index 24773193..d8868779 100644 --- a/continew-admin-ui/src/assets/style/global.less +++ b/continew-admin-ui/src/assets/style/global.less @@ -121,6 +121,10 @@ body { } } +.arco-form-item-layout-inline { + margin-right: 15px; +} + fieldset { padding: 15px 15px 0 15px; margin-bottom: 15px; diff --git a/continew-admin-ui/src/views/system/user/index.vue b/continew-admin-ui/src/views/system/user/index.vue index a19c06a4..0228f2bf 100644 --- a/continew-admin-ui/src/views/system/user/index.vue +++ b/continew-admin-ui/src/views/system/user/index.vue @@ -3,7 +3,7 @@ - + @@ -308,6 +331,32 @@ + + + + + + + + + ([ { label: '启用', value: 1 }, @@ -550,6 +602,20 @@ }); }; + /** + * 打开分配角色对话框 + * + * @param id ID + */ + const toUpdateRole = (id: number) => { + reset(); + getRoleOptions(); + getUser(id).then((res) => { + form.value = res.data; + userRoleVisible.value = true; + }); + }; + /** * 查询角色列表 */ @@ -591,7 +657,7 @@ phone: undefined, description: '', status: 1, - roleIds: [], + roleIds: [] as Array, deptId: undefined, }; proxy.$refs.formRef?.resetFields(); @@ -602,7 +668,9 @@ */ const handleCancel = () => { visible.value = false; - proxy.$refs.formRef.resetFields(); + userRoleVisible.value = false; + proxy.$refs.formRef?.resetFields(); + proxy.$refs.userRoleFormRef?.resetFields(); }; /** @@ -628,6 +696,23 @@ }); }; + /** + * 修改用户角色 + */ + const handleUpdateUserRole = () => { + proxy.$refs.userRoleFormRef.validate((valid: any) => { + if (!valid && form.value.userId !== undefined) { + updateUserRole({ roleIds: form.value.roleIds }, form.value.userId).then( + (res) => { + handleCancel(); + getList(); + proxy.$message.success(res.msg); + } + ); + } + }); + }; + /** * 查看详情 * @@ -684,6 +769,17 @@ }); }; + /** + * 重置密码 + * + * @param id ID + */ + const handleResetPassword = (id: number) => { + resetPassword(id).then((res) => { + proxy.$message.success(res.msg); + }); + }; + /** * 已选择的数据行发生改变时触发 * diff --git a/continew-admin-webapi/src/main/java/top/charles7c/cnadmin/webapi/controller/system/UserController.java b/continew-admin-webapi/src/main/java/top/charles7c/cnadmin/webapi/controller/system/UserController.java index 2954d0dd..5a5cb5cf 100644 --- a/continew-admin-webapi/src/main/java/top/charles7c/cnadmin/webapi/controller/system/UserController.java +++ b/continew-admin-webapi/src/main/java/top/charles7c/cnadmin/webapi/controller/system/UserController.java @@ -16,9 +16,12 @@ package top.charles7c.cnadmin.webapi.controller.system; +import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PatchMapping; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; @@ -28,6 +31,7 @@ import top.charles7c.cnadmin.common.base.BaseRequest; import top.charles7c.cnadmin.common.consts.Constants; import top.charles7c.cnadmin.common.model.vo.R; import top.charles7c.cnadmin.system.model.query.UserQuery; +import top.charles7c.cnadmin.system.model.request.UpdateUserRoleRequest; import top.charles7c.cnadmin.system.model.request.UserRequest; import top.charles7c.cnadmin.system.model.vo.UserDetailVO; import top.charles7c.cnadmin.system.model.vo.UserVO; @@ -40,6 +44,7 @@ import top.charles7c.cnadmin.system.service.UserService; * @since 2023/2/20 21:00 */ @Tag(name = "用户管理 API") +@Validated @RestController @CrudRequestMapping("/system/user") public class UserController extends BaseController { @@ -49,4 +54,18 @@ public class UserController extends BaseController