From cec3d45217fcac35a7088c9e12db40c9b3b75748 Mon Sep 17 00:00:00 2001 From: fengshuonan Date: Mon, 17 Apr 2023 18:53:26 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=907.4.0=E3=80=91=E3=80=90org=E3=80=91?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=BD=93=E5=89=8D=E7=94=A8=E6=88=B7=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E7=9A=84=E7=BB=84=E7=BB=87=E6=9C=BA=E6=9E=84id?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../user/controller/SysUserOrgController.java | 44 +++++++++++++++++++ .../user/enums/SysUserOrgExceptionEnum.java | 36 +++++++++++++++ .../user/pojo/request/SysUserOrgRequest.java | 27 ++++++++++++ 3 files changed, 107 insertions(+) create mode 100644 kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/enums/SysUserOrgExceptionEnum.java create mode 100644 kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/pojo/request/SysUserOrgRequest.java diff --git a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/controller/SysUserOrgController.java b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/controller/SysUserOrgController.java index 9c6af3abd..e1717cb9b 100644 --- a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/controller/SysUserOrgController.java +++ b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/controller/SysUserOrgController.java @@ -24,13 +24,23 @@ */ package cn.stylefeng.roses.kernel.system.modular.user.controller; +import cn.stylefeng.roses.kernel.auth.api.SessionManagerApi; +import cn.stylefeng.roses.kernel.auth.api.context.LoginContext; +import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser; import cn.stylefeng.roses.kernel.rule.enums.ResBizTypeEnum; +import cn.stylefeng.roses.kernel.rule.exception.base.ServiceException; +import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest; import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData; import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData; import cn.stylefeng.roses.kernel.scanner.api.annotation.ApiResource; import cn.stylefeng.roses.kernel.scanner.api.annotation.GetResource; +import cn.stylefeng.roses.kernel.scanner.api.annotation.PostResource; import cn.stylefeng.roses.kernel.system.api.pojo.organization.HrOrganizationDTO; +import cn.stylefeng.roses.kernel.system.modular.user.enums.SysUserOrgExceptionEnum; +import cn.stylefeng.roses.kernel.system.modular.user.pojo.request.SysUserOrgRequest; import cn.stylefeng.roses.kernel.system.modular.user.service.SysUserOrgService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; @@ -49,6 +59,9 @@ public class SysUserOrgController { @Resource private SysUserOrgService sysUserOrgService; + @Resource + private SessionManagerApi sessionManagerApi; + /** * 获取当前登录用户所在组织机构列表 * @@ -61,4 +74,35 @@ public class SysUserOrgController { return new SuccessResponseData<>(userCompanyList); } + /** + * 更新当前用户信息的组织机构id + * + * @author fengshuonan + * @since 2023/4/17 17:08 + */ + @PostResource(name = "更新当前用户信息的组织机构id", path = "/sysUserOrg/updateUserOrg", requiredPermission = false) + public ResponseData updateUserOrg(@RequestBody @Validated(BaseRequest.edit.class) SysUserOrgRequest sysUserOrgRequest) { + + LoginUser loginUser = LoginContext.me().getLoginUser(); + loginUser.setOrganizationId(sysUserOrgRequest.getOrgId()); + + // 判断当前用户是否有对应组织机构对的id + boolean orgIdRightFlag = false; + List userCompanyList = sysUserOrgService.getUserCompanyList(); + for (HrOrganizationDTO hrOrganizationDTO : userCompanyList) { + if (sysUserOrgRequest.getOrgId().equals(hrOrganizationDTO.getOrgId())) { + orgIdRightFlag = true; + break; + } + } + if (!orgIdRightFlag) { + throw new ServiceException(SysUserOrgExceptionEnum.CANT_CHANGE_ORG_ID); + } + + // 更新会话信息 + sessionManagerApi.updateSession(LoginContext.me().getToken(), loginUser); + + return new SuccessResponseData<>(); + } + } diff --git a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/enums/SysUserOrgExceptionEnum.java b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/enums/SysUserOrgExceptionEnum.java new file mode 100644 index 000000000..1e358c6e7 --- /dev/null +++ b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/enums/SysUserOrgExceptionEnum.java @@ -0,0 +1,36 @@ +package cn.stylefeng.roses.kernel.system.modular.user.enums; + +import cn.stylefeng.roses.kernel.rule.constants.RuleConstants; +import cn.stylefeng.roses.kernel.rule.exception.AbstractExceptionEnum; +import lombok.Getter; + +/** + * 用户机构异常 + * + * @author fengshuonan + * @since 2023/4/17 18:51 + */ +@Getter +public enum SysUserOrgExceptionEnum implements AbstractExceptionEnum { + + /** + * 无法切换用户组织机构,组织机构id无效 + */ + CANT_CHANGE_ORG_ID(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + "10001", "无法切换用户组织机构,组织机构id无效"); + + /** + * 错误编码 + */ + private final String errorCode; + + /** + * 提示用户信息 + */ + private final String userTip; + + SysUserOrgExceptionEnum(String errorCode, String userTip) { + this.errorCode = errorCode; + this.userTip = userTip; + } + +} \ No newline at end of file diff --git a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/pojo/request/SysUserOrgRequest.java b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/pojo/request/SysUserOrgRequest.java new file mode 100644 index 000000000..b61ff7e95 --- /dev/null +++ b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/pojo/request/SysUserOrgRequest.java @@ -0,0 +1,27 @@ +package cn.stylefeng.roses.kernel.system.modular.user.pojo.request; + +import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; +import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.validation.constraints.NotNull; + +/** + * 用户组织机构修改的封装 + * + * @author fengshuonan + * @since 2023/4/17 18:44 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class SysUserOrgRequest extends BaseRequest { + + /** + * 更新用户的组织机构id + */ + @ChineseDescription("更新用户的组织机构id") + @NotNull(message = "组织机构id不能为空", groups = edit.class) + private Long orgId; + +}