From bc0f87d45804dd6c510c416d4cc52cd2a037363d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Thu, 9 Apr 2026 08:58:07 +0800 Subject: [PATCH] =?UTF-8?q?feat(user):=20=E6=96=B0=E5=A2=9E=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E7=AE=A1=E7=90=86=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加后台菜单相关Mapper接口和XML配置,支持菜单按钮获取、权限校验等 - 实现后台菜单服务业务逻辑,支持菜单授权树查询、菜单增删改查及启用禁用功能 - 新增用户管理Service,支持用户增删改、角色授权、密码重置及供应商账户管理 - 实现用户供应商相关业务逻辑,包括供应商账号开通、权限分配和批量导入功能 - 集成邮件发送功能,实现忘记密码邮件通知 - 完善用户角色和权限映射管理接口及逻辑,支持批量操作和事务管理 - 引入密码加密与验证机制,保证账户安全性 --- .../wms/admin/service/UserControllerService.java | 12 ++++++++++++ .../nflg/wms/repository/mapper/MenuMapper.java | 2 ++ .../repository/service/impl/MenuServiceImpl.java | 16 +++------------- .../src/main/resources/mapper/MenuMapper.xml | 9 +++++++++ 4 files changed, 26 insertions(+), 13 deletions(-) diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/UserControllerService.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/UserControllerService.java index f293b30f..7f4707b7 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/UserControllerService.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/UserControllerService.java @@ -117,6 +117,7 @@ public class UserControllerService { .setPassword(PASSWORDENCODER.encode(request.getPassword())) .setLanguageCode(request.getLanguageCode()) .setPurchasingGroup(request.getPurchasingGroup()) + .setCreateById(UserUtil.getUserId()) .setCreateBy(UserUtil.getUserName()) .setCreateTime(LocalDateTime.now()); uService.add(user); @@ -323,6 +324,7 @@ public class UserControllerService { .setRemark(remark) .setUserCode(loginName) .setPassword(PASSWORDENCODER.encode(pwd)) + .setCreateById(UserUtil.getUserId()) .setCreateBy(UserUtil.getUserName()) .setMustResetPwd(mustResetPwd) .setCreateTime(LocalDateTime.now()); @@ -770,6 +772,15 @@ public class UserControllerService { @Transactional public void addLdapUsers(List ldapUsers) { + List existUserCodes = uService.lambdaQuery() + .select(User::getUserCode) + .in(User::getUserCode, ldapUsers.stream().map(UserAddLdapQO::getUserCode).collect(Collectors.toSet())) + .list() + .stream() + .map(User::getUserCode) + .collect(Collectors.toList()); + VUtil.trueThrowBusinessError(CollectionUtil.isNotEmpty(existUserCodes)) + .throwMessage("以下用户工号已注册:" + StrUtil.join(",", existUserCodes)); List users = new ArrayList<>(); List userInteriors = new ArrayList<>(); List departments = deptService.lambdaQuery() @@ -792,6 +803,7 @@ public class UserControllerService { .setSourceId(userAddLdapQO.getDistinguishedName()) .setRemark("LDAP用户") .setLanguageCode(Constant.DEFAULT_LANGUAGE_CODE) + .setCreateById(UserUtil.getUserId()) .setCreateBy(UserUtil.getUserName()) .setCreateTime(LocalDateTime.now()); users.add(user); diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/MenuMapper.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/MenuMapper.java index f1f4e551..e03686a3 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/MenuMapper.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/MenuMapper.java @@ -22,4 +22,6 @@ public interface MenuMapper extends BaseMapper { Boolean menuIsSelected(Long roleId, Long menuId); List getAllDataForAuthorize(Long roleId); + + List getMenuIdsByRoleIds(List roleIds); } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/MenuServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/MenuServiceImpl.java index e63138ba..78d026b7 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/MenuServiceImpl.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/MenuServiceImpl.java @@ -21,7 +21,6 @@ import com.nflg.wms.common.util.VUtil; import com.nflg.wms.repository.entity.Menu; import com.nflg.wms.repository.entity.MenuButton; import com.nflg.wms.repository.entity.RoleButtonMap; -import com.nflg.wms.repository.entity.RoleMenuMap; import com.nflg.wms.repository.mapper.MenuMapper; import com.nflg.wms.repository.service.*; import jakarta.annotation.Resource; @@ -35,7 +34,6 @@ import java.util.stream.Collectors; *

* 后台-菜单 服务实现类 *

- * * @author 代码生成器生成 * @since 2025 */ @@ -51,9 +49,6 @@ public class MenuServiceImpl extends ServiceImpl implements IM @Resource private IUserRoleMapService userRoleMapService; - @Resource - private IRoleMenuMapService roleMenuMapService; - @Override public List getMenuForAuthorize(Long roleId) { List datas = lambdaQuery() @@ -70,14 +65,9 @@ public class MenuServiceImpl extends ServiceImpl implements IM @Override public List getNodeForAuthorize(Long roleId) { List nodes = baseMapper.getAllDataForAuthorize(roleId); - if (!UserUtil.getRoles().contains(Constant.SUPER_ADMIN)){ - List userRoles=userRoleMapService.getRoleList(UserUtil.getUserId()); - List menuIds =roleMenuMapService.lambdaQuery() - .in(RoleMenuMap::getRoleId, userRoles.stream().map(RoleVO::getId).collect(Collectors.toList())) - .list() - .stream() - .map(RoleMenuMap::getMenuId) - .toList(); + if (!UserUtil.getRoles().contains(Constant.SUPER_ADMIN)) { + List userRoles = userRoleMapService.getRoleList(UserUtil.getUserId()); + List menuIds = baseMapper.getMenuIdsByRoleIds(userRoles.stream().map(RoleVO::getId).collect(Collectors.toList())); nodes.removeIf(v -> !menuIds.contains(v.getId())); } List rootNodes = nodes.stream().filter(v -> diff --git a/nflg-wms-repository/src/main/resources/mapper/MenuMapper.xml b/nflg-wms-repository/src/main/resources/mapper/MenuMapper.xml index 2566b4cb..624e1f02 100644 --- a/nflg-wms-repository/src/main/resources/mapper/MenuMapper.xml +++ b/nflg-wms-repository/src/main/resources/mapper/MenuMapper.xml @@ -35,4 +35,13 @@ where "enable" = true order by sort; + +