Browse Source

更新

master
常熟吴彦祖 2 days ago
parent
commit
5a436b077e
  1. 5
      src/main/java/com/xujie/modules/sys/dao/SysUserDao.java
  2. 34
      src/main/java/com/xujie/modules/sys/service/impl/SysUserServiceImpl.java
  3. 9
      src/main/resources/mapper/sys/SysRoleDao.xml
  4. 16
      src/main/resources/mapper/sys/SysUserDao.xml

5
src/main/java/com/xujie/modules/sys/dao/SysUserDao.java

@ -68,5 +68,10 @@ public interface SysUserDao extends BaseMapper<SysUserEntity> {
@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<Long> userIds);
}

34
src/main/java/com/xujie/modules/sys/service/impl/SysUserServiceImpl.java

@ -92,6 +92,11 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserDao, SysUserEntity> 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<SysUserDao, SysUserEntity> 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<SysUserDao, SysUserEntity> 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<SysUserDao, SysUserEntity> 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<SysUserDao, SysUserEntity> i
}
}
/**
* 新增/编辑用户时确保默认工厂权限与BU(*)权限存在幂等 - rqrq
*/
private void grantDefaultSiteAndBuAccess(SysUserEntity user) {
List<AccessSiteData> 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) {

9
src/main/resources/mapper/sys/SysRoleDao.xml

@ -8,8 +8,15 @@
select role_id from sys_role where create_user_id = #{createUserId}
</select>
<!-- rqrq - 新增用户工厂权限时幂等插入,避免重复冲突 -->
<insert id="saveUserAccessSite">
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}
)
</insert>
</mapper>

16
src/main/resources/mapper/sys/SysUserDao.xml

@ -123,4 +123,20 @@
</where>
order by a.username
</select>
<!-- 新增用户时,给默认工厂写入BU=*权限 - rqrq -->
<insert id="saveUserDefaultAccessBu">
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 = '*'
)
</insert>
</mapper>
Loading…
Cancel
Save