diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java index 15b95d2..ce2154f 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java @@ -17,8 +17,10 @@ import com.ruoyi.system.api.domain.SysDept; import com.ruoyi.system.api.domain.SysRole; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.model.LoginUser; +import com.ruoyi.system.domain.SysUserDatasource; import com.ruoyi.system.service.*; import org.apache.commons.lang3.ArrayUtils; +import org.apache.commons.math3.analysis.function.Add; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.CollectionUtils; import org.springframework.validation.annotation.Validated; @@ -62,6 +64,9 @@ public class SysUserController extends BaseController { @Autowired private RedisService redisService; + @Autowired + private ISysUserDatasourceService sysUserDatasourceService; + /** * 获取用户列表 */ @@ -180,6 +185,9 @@ public class SysUserController extends BaseController { ajax.put("posts", postService.selectPostAll()); if (StringUtils.isNotNull(userId)) { SysUser sysUser = userService.selectUserById(userId); + //获取用户匹配的数据源ID + String s = GetDataSourceIdByUserId(sysUser); + sysUser.setDatasourceId(s); ajax.put(AjaxResult.DATA_TAG, sysUser); ajax.put("postIds", postService.selectPostListByUserId(userId)); ajax.put("roleIds", sysUser.getRoles().stream().map(SysRole::getRoleId).collect(Collectors.toList())); @@ -204,9 +212,19 @@ public class SysUserController extends BaseController { return error("新增用户'" + user.getUserName() + "'失败,用户数据源不可为空"); } System.out.println("用户:"+user.getUserName()+"数据源ID:"+user.getDatasourceId()); - user.setCreateBy(SecurityUtils.getUsername()); - user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); - return toAjax(userService.insertUser(user)); + try { + user.setCreateBy(SecurityUtils.getUsername()); + user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); + int i = userService.insertUser(user); + if(i>0){ + //获取用户ID + SysUser sysUser = userService.selectUserByUserName(user.getUserName()); + AddDataSourceByUserId(sysUser.getUserId(), user.getDatasourceId()); + } + return AjaxResult.success(); + }catch (Exception ex){ + return AjaxResult.error(ex.getMessage()); + } } /** @@ -228,6 +246,9 @@ public class SysUserController extends BaseController { return error("修改用户'" + user.getUserName() + "'失败,用户数据源不可为空"); } System.out.println("用户:"+user.getUserName()+"数据源ID:"+user.getDatasourceId()); + if(DeleteDataSourceByUserId(user.getUserId())){ + AddDataSourceByUserId(user.getUserId(),user.getDatasourceId()); + } user.setUpdateBy(SecurityUtils.getUsername()); return toAjax(userService.updateUser(user)); } @@ -321,4 +342,75 @@ public class SysUserController extends BaseController { CacheConstants.REFRESH_TIME, TimeUnit.MINUTES); return success(); } + + /** + * 根据用户ID获取数据源ID + * @param sysUser + * @return + */ + public String GetDataSourceIdByUserId(SysUser sysUser){ + try { + //获取用户数据源 + SysUserDatasource sysUserDatasource = new SysUserDatasource(); + sysUserDatasource.setUserId(sysUser.getUserId().toString()); + List sysUserDatasources = sysUserDatasourceService.selectSysUserDatasourceList(sysUserDatasource); + + Set dataSourceSet = sysUserDatasources.stream() + .map(SysUserDatasource::getDatasourceId) + .collect(Collectors.toSet()); + + String dataSourceStr = dataSourceSet.stream() + .map(String::valueOf) + .collect(Collectors.joining(",")); + return dataSourceStr; + }catch (Exception ex){ + logger.error("根据用户ID获取数据源ID异常:"+ex.getMessage()); + return ""; + } + } + + /** + * 根据用户ID删除数据源ID + * @param userId + */ + public boolean DeleteDataSourceByUserId(Long userId){ + boolean result = false; + try{ + SysUserDatasource sysUserDatasource = new SysUserDatasource(); + sysUserDatasource.setUserId(userId.toString()); + List sysUserDatasources = sysUserDatasourceService.selectSysUserDatasourceList(sysUserDatasource); + if(sysUserDatasources!=null){ + Long[] ageArray = sysUserDatasources.stream() + .map(SysUserDatasource::getId) + .toArray(Long[]::new); + int i = sysUserDatasourceService.deleteSysUserDatasourceByIds(ageArray); + if (i>0){ + result = true; + } + } + }catch (Exception ex){ + logger.error("用户数据源清除异常:"+ex.getMessage()); + } + return result; + } + + /** + * 保存用户数据源ID + * @param userId + * @param dataSourceIds + */ + public void AddDataSourceByUserId(Long userId,String dataSourceIds){ + try{ + + String[] split = dataSourceIds.split(","); + for (String dataSourceId : split) { + SysUserDatasource sysUserDatasource = new SysUserDatasource(); + sysUserDatasource.setDatasourceId(dataSourceId); + sysUserDatasource.setUserId(userId.toString()); + int i = sysUserDatasourceService.insertSysUserDatasource(sysUserDatasource); + } + }catch (Exception ex){ + logger.error("保存用户数据源异常:"+ex.getMessage()); + } + } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java index 6a0c02c..a86efff 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java @@ -242,24 +242,10 @@ public class SysUserServiceImpl implements ISysUserService { insertUserPost(user); // 新增用户与角色管理 insertUserRole(user); - // 加园区权限 - insertUserDB(user); + return rows; } - public void insertUserDB(SysUser user) { - // 新增用户与园区数据源 - SysDatasource qo = new SysDatasource(); - qo.setDeptId(user.getDeptId());// - List dbs = sysDatasourceMapper.selectDBListByDept(qo); - List list = new ArrayList(); - for (SysDatasource db : dbs) { - SysDatasource ur = new SysDatasource(); - ur.setUserId(user.getUserId().toString()); - ur.setDatasourceId(db.getId()); - list.add(ur); - } - sysDatasourceMapper.batchUserDB(list); - } + /** * 注册用户信息 * @@ -292,7 +278,7 @@ public class SysUserServiceImpl implements ISysUserService { // 删除用户与数据源关联 userPostMapper.deleteUserDBByUserId(userId); // 加园区权限 - insertUserDB(user); + //insertUserDB(user); return userMapper.updateUser(user); }