【7.4.0】【org】更新当前用户信息的组织机构id

dev-7.4.0-sync
fengshuonan 2023-04-17 18:53:26 +08:00
parent 1af33de150
commit cec3d45217
3 changed files with 107 additions and 0 deletions

View File

@ -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<HrOrganizationDTO> 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<>();
}
}

View File

@ -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;
}
}

View File

@ -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;
}