From 5a436b077e881aff41d6943b8ca5b20abca1a5a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B8=B8=E7=86=9F=E5=90=B4=E5=BD=A6=E7=A5=96?= Date: Thu, 18 Jun 2026 13:22:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xujie/modules/sys/dao/SysUserDao.java | 5 +++ .../sys/service/impl/SysUserServiceImpl.java | 34 ++++++++++++++++--- src/main/resources/mapper/sys/SysRoleDao.xml | 9 ++++- src/main/resources/mapper/sys/SysUserDao.xml | 16 +++++++++ 4 files changed, 58 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/xujie/modules/sys/dao/SysUserDao.java b/src/main/java/com/xujie/modules/sys/dao/SysUserDao.java index 94dd216..2675953 100644 --- a/src/main/java/com/xujie/modules/sys/dao/SysUserDao.java +++ b/src/main/java/com/xujie/modules/sys/dao/SysUserDao.java @@ -68,5 +68,10 @@ public interface SysUserDao extends BaseMapper { @Select("SELECT u.*, us.supplier_no FROM sys_user u LEFT JOIN sys_user_supplier us ON u.user_id = us.user_id WHERE u.user_id = #{userId}") SysUserEntity getUserAndSupplierById(Long userId); + /** + * 新增用户时,写入默认工厂下BU=*的授权 - rqrq + */ + void saveUserDefaultAccessBu(@Param("username") String username, @Param("site") String site); + int removeSysUserSupplier(@Param("userIds") List userIds); } diff --git a/src/main/java/com/xujie/modules/sys/service/impl/SysUserServiceImpl.java b/src/main/java/com/xujie/modules/sys/service/impl/SysUserServiceImpl.java index ce90b42..a4f04b3 100644 --- a/src/main/java/com/xujie/modules/sys/service/impl/SysUserServiceImpl.java +++ b/src/main/java/com/xujie/modules/sys/service/impl/SysUserServiceImpl.java @@ -92,6 +92,11 @@ public class SysUserServiceImpl extends ServiceImpl i @Override @Transactional public void saveUser(SysUserEntity user) { + // 默认工厂必填校验 - rqrq + if (StringUtils.isBlank(user.getSite())) { + throw new RuntimeException("默认工厂不能为空"); + } + user.setSite(StringUtils.trim(user.getSite())); user.setCreateTime(new Date()); //sha256加密 String salt = RandomStringUtils.randomAlphanumeric(20); @@ -104,11 +109,8 @@ public class SysUserServiceImpl extends ServiceImpl i //保存用户与角色关系 sysUserRoleService.saveOrUpdate(user.getUserId(), user.getRoleIdList()); - SiteVo accessSite = new SiteVo(); - accessSite.setUsername(user.getUsername()); - accessSite.setSiteid(user.getSite()); - //保存用户工厂权限 - sysRoleDao.saveUserAccessSite(accessSite); + // 保存默认工厂及默认BU(*)权限 - rqrq + grantDefaultSiteAndBuAccess(user); //保存用户对应的供应商 baseMapper.saveUserSupplier(user); @@ -117,6 +119,10 @@ public class SysUserServiceImpl extends ServiceImpl i @Override @Transactional public void update(SysUserEntity user) { + // 更新默认工厂时做trim处理 - rqrq + if (StringUtils.isNotBlank(user.getSite())) { + user.setSite(StringUtils.trim(user.getSite())); + } if(StringUtils.isBlank(user.getPassword())){ user.setPassword(null); }else{ @@ -129,6 +135,10 @@ public class SysUserServiceImpl extends ServiceImpl i //保存用户与角色关系 sysUserRoleService.saveOrUpdate(user.getUserId(), user.getRoleIdList()); + // 用户编辑时如修改默认工厂,新增对应工厂与BU(*)权限,历史权限不删除 - rqrq + if (StringUtils.isNotBlank(user.getSite()) && StringUtils.isNotBlank(user.getUsername())) { + grantDefaultSiteAndBuAccess(user); + } SysUserEntity sysUserEntity = baseMapper.selectUserSupplierById(user.getUserId()); if (sysUserEntity != null) { //更新 @@ -139,6 +149,20 @@ public class SysUserServiceImpl extends ServiceImpl i } } + /** + * 新增/编辑用户时,确保默认工厂权限与BU(*)权限存在(幂等) - rqrq + */ + private void grantDefaultSiteAndBuAccess(SysUserEntity user) { + List exists = baseMapper.checkAccessSite(user.getSite(), user.getUsername()); + if (exists == null || exists.isEmpty()) { + SiteVo accessSite = new SiteVo(); + accessSite.setUsername(user.getUsername()); + accessSite.setSiteid(user.getSite()); + sysRoleDao.saveUserAccessSite(accessSite); + } + baseMapper.saveUserDefaultAccessBu(user.getUsername(), user.getSite()); + } + @Override @Transactional(rollbackFor = Exception.class) public void deleteBatch(Long[] userId) { diff --git a/src/main/resources/mapper/sys/SysRoleDao.xml b/src/main/resources/mapper/sys/SysRoleDao.xml index aae2e38..efb2120 100644 --- a/src/main/resources/mapper/sys/SysRoleDao.xml +++ b/src/main/resources/mapper/sys/SysRoleDao.xml @@ -8,8 +8,15 @@ select role_id from sys_role where create_user_id = #{createUserId} + INSERT INTO eam_access_site (username, site) - VALUES (#{username}, #{siteid}) + SELECT #{username}, #{siteid} + WHERE NOT EXISTS ( + SELECT 1 + FROM eam_access_site + WHERE username = #{username} + AND site = #{siteid} + ) \ No newline at end of file diff --git a/src/main/resources/mapper/sys/SysUserDao.xml b/src/main/resources/mapper/sys/SysUserDao.xml index 586304e..80d86d1 100644 --- a/src/main/resources/mapper/sys/SysUserDao.xml +++ b/src/main/resources/mapper/sys/SysUserDao.xml @@ -123,4 +123,20 @@ order by a.username + + + + INSERT INTO AccessBu (username, site, bu_no) + SELECT #{username}, b.site, b.bu_no + FROM BU b + WHERE b.site = #{site} + AND b.bu_no = '*' + AND NOT EXISTS ( + SELECT 1 + FROM AccessBu ab + WHERE ab.username = #{username} + AND ab.site = #{site} + AND ab.bu_no = '*' + ) + \ No newline at end of file