From 6304a7a293ead1576a36af1e09dd3c8688c059f2 Mon Sep 17 00:00:00 2001 From: chenbowen Date: Thu, 28 Aug 2025 17:31:23 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E8=B0=83=E6=95=B4=20e=20=E5=8A=9E?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E7=94=A8=E6=88=B7=E4=BF=A1=E6=81=AF=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E8=B0=83=E6=95=B4=E6=8E=A5=E5=8F=97=E7=9A=84=E5=B2=97?= =?UTF-8?q?=E4=BD=8D,=E7=BB=84=E7=BB=87,=E6=80=A7=E5=88=AB=E7=AD=89?= =?UTF-8?q?=E5=B1=9E=E6=80=A7=E7=9A=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sync/vo/user/UserUpdateRequestVO.java | 4 +- .../dal/dataobject/userdept/UserDeptDO.java | 4 +- .../system/service/dept/PostService.java | 8 ++++ .../system/service/dept/PostServiceImpl.java | 26 ++++++++++++- .../service/sync/UserSyncServiceImpl.java | 37 +++++++++++++++++-- .../service/userdept/UserDeptServiceImpl.java | 5 +++ 6 files changed, 75 insertions(+), 9 deletions(-) diff --git a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sync/vo/user/UserUpdateRequestVO.java b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sync/vo/user/UserUpdateRequestVO.java index c99825f1..4c10a933 100644 --- a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sync/vo/user/UserUpdateRequestVO.java +++ b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sync/vo/user/UserUpdateRequestVO.java @@ -18,14 +18,14 @@ public class UserUpdateRequestVO { private Long bimUid; @Schema(description = "用户账号") private String username; - @Schema(description = "用户密码") - private String password; @Schema(description = "昵称") private String nickname; @Schema(description = "备注") private String remark; @Schema(description = "归属部门Id列表") private Set deptIds; + @Schema(description = "所属岗位名称") + private String postName; @Schema(description = "邮箱") private String email; @Schema(description = "移动电话") diff --git a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/userdept/UserDeptDO.java b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/userdept/UserDeptDO.java index cbcbf020..b1f997ea 100644 --- a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/userdept/UserDeptDO.java +++ b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/userdept/UserDeptDO.java @@ -1,6 +1,6 @@ package cn.iocoder.yudao.module.system.dal.dataobject.userdept; -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.KeySequence; import com.baomidou.mybatisplus.annotation.TableId; @@ -20,7 +20,7 @@ import lombok.*; @Builder @NoArgsConstructor @AllArgsConstructor -public class UserDeptDO extends BaseDO { +public class UserDeptDO extends TenantBaseDO { /** * 主键ID diff --git a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/dept/PostService.java b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/dept/PostService.java index 25604ceb..5d768dc9 100644 --- a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/dept/PostService.java +++ b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/dept/PostService.java @@ -81,4 +81,12 @@ public interface PostService { */ void validatePostList(Collection ids); + /** + * 根据岗位名称获取岗位,如果不存在则创建 + * + * @param postName 岗位名称 + * @return 岗位编号 + */ + Long getOrCreatePostByName(String postName); + } diff --git a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/dept/PostServiceImpl.java b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/dept/PostServiceImpl.java index 5e568b0e..bf0cf5bf 100644 --- a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/dept/PostServiceImpl.java +++ b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/dept/PostServiceImpl.java @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.system.service.dept; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; @@ -8,10 +9,10 @@ import cn.iocoder.yudao.module.system.controller.admin.dept.vo.post.PostPageReqV import cn.iocoder.yudao.module.system.controller.admin.dept.vo.post.PostSaveReqVO; import cn.iocoder.yudao.module.system.dal.dataobject.dept.PostDO; import cn.iocoder.yudao.module.system.dal.mysql.dept.PostMapper; +import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; -import jakarta.annotation.Resource; import java.util.Collection; import java.util.Collections; import java.util.List; @@ -150,4 +151,27 @@ public class PostServiceImpl implements PostService { } }); } + + @Override + public Long getOrCreatePostByName(String postName) { + if (StrUtil.isBlank(postName)) { + return null; + } + + // 先查询是否存在同名岗位 + PostDO existingPost = postMapper.selectByName(postName); + if (existingPost != null) { + return existingPost.getId(); + } + + // 不存在则创建新岗位 + PostSaveReqVO createReqVO = new PostSaveReqVO(); + createReqVO.setName(postName); + createReqVO.setCode("E_" + postName.hashCode()); // 先使用名称做 hash + createReqVO.setSort(999); // 默认排序 + createReqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); // 默认启用 + createReqVO.setRemark("通过外部接口自动创建"); + + return createPost(createReqVO); + } } diff --git a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/sync/UserSyncServiceImpl.java b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/sync/UserSyncServiceImpl.java index 41b0a66f..e81c929f 100644 --- a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/sync/UserSyncServiceImpl.java +++ b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/sync/UserSyncServiceImpl.java @@ -1,10 +1,15 @@ package cn.iocoder.yudao.module.system.service.sync; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.system.controller.admin.sync.vo.user.*; import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserSaveReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.dept.UserPostDO; import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; import cn.iocoder.yudao.module.system.dal.dataobject.userdept.UserDeptDO; +import cn.iocoder.yudao.module.system.dal.mysql.dept.UserPostMapper; +import cn.iocoder.yudao.module.system.service.dept.PostService; import cn.iocoder.yudao.module.system.service.user.AdminUserService; import cn.iocoder.yudao.module.system.service.userdept.UserDeptService; import cn.iocoder.yudao.module.system.util.sync.SyncVerifyUtil; @@ -12,10 +17,9 @@ import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import java.beans.PropertyDescriptor; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; + +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; @Service public class UserSyncServiceImpl implements UserSyncService { @@ -23,6 +27,10 @@ public class UserSyncServiceImpl implements UserSyncService { private AdminUserService adminUserService; @Resource private UserDeptService userDeptService; + @Resource + private PostService postService; + @Resource + private UserPostMapper userPostMapper; @Override public UserCreateResponseVO createUser(UserCreateRequestVO requestVO) { @@ -101,6 +109,27 @@ public class UserSyncServiceImpl implements UserSyncService { if (requestVO.getAvatar() != null && !requestVO.getAvatar().isEmpty()) { updateReqVO.setAvatar(requestVO.getAvatar()); } + + // 处理岗位名称字段 + if (StrUtil.isNotBlank(requestVO.getPostName())) { + // 获取或创建岗位 + Long postId = postService.getOrCreatePostByName(requestVO.getPostName()); + if (postId != null) { + // 获取用户当前的岗位关系 + Set currentPostIds = convertSet(userPostMapper.selectListByUserId(user.getId()), UserPostDO::getPostId); + + // 如果用户还没有这个岗位,则添加 + if (!currentPostIds.contains(postId)) { + UserPostDO userPost = new UserPostDO(); + userPost.setUserId(user.getId()); + userPost.setPostId(postId); + userPostMapper.insert(userPost); + } + } + } + + // 中铝 e 办不会更新密码,设置默认密码 + updateReqVO.setPassword("ZLEB"); adminUserService.updateUser(updateReqVO); resp.setResultCode("0"); resp.setMessage("success"); diff --git a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/userdept/UserDeptServiceImpl.java b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/userdept/UserDeptServiceImpl.java index 657b0e66..d9beddf5 100644 --- a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/userdept/UserDeptServiceImpl.java +++ b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/userdept/UserDeptServiceImpl.java @@ -11,8 +11,10 @@ import org.springframework.validation.annotation.Validated; import java.util.Collection; import java.util.List; +import java.util.Objects; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUser; import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.USER_DEPT_NOT_EXISTS; /** @@ -104,6 +106,9 @@ public class UserDeptServiceImpl implements UserDeptService { return; } List list = BeanUtils.toBean(createReqVOList, UserDeptDO.class); + // 默认使用当前用户的租户 + Long tenantId = Objects.requireNonNull(getLoginUser()).getTenantId(); + list.forEach(item -> item.setTenantId(tenantId)); userDeptMapper.insertBatch(list); }