ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
@@ -165,7 +165,7 @@ return error("新增用户'" + user.getUserName() + "'失败,手机号码已存在"); } user.setCreateBy(getUsername()); user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); user.setPassword(SecurityUtils.encryptPassword("123456")); userService.insertUser(user); return AjaxResult.success(); } ruoyi-admin/src/main/resources/application-test.yml
@@ -193,9 +193,9 @@ accessPath: /file/ allowExt: .jpg|.png|.gif|.jpeg|.doc|.docx|.apk|.MP4|.mp4|.pdf|.PDF wx: config: appId: wxc3985a05da7d86dc secret: 5cca42633c25439613b328c08ef20cc9 conf: appId: wxe91f1af7638aa5dd secretId: a787e1a462715604e0c9528b6d8960d1 #OSS及短信配置 code: config: ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/WxLoginController.java
@@ -121,6 +121,7 @@ if (tenant==null){ // appUser.setTenantAttributes(); // appUser.setTenantType(); tenant = new TTenant(); tenant.setPhone(appletUserDecodeData.getPhoneNumber()); tenant.setAccount(appletUserDecodeData.getPhoneNumber()); tenant.setPassword(SecurityUtils.encryptPassword(appletUserDecodeData.getPhoneNumber().substring(5))); ruoyi-applet/src/main/resources/application-test.yml
@@ -193,9 +193,9 @@ accessPath: /file/ allowExt: .jpg|.png|.gif|.jpeg|.doc|.docx|.apk|.MP4|.mp4|.pdf|.PDF wx: config: appId: wxc3985a05da7d86dc secret: 5cca42633c25439613b328c08ef20cc9 conf: appId: wxe91f1af7638aa5dd secretId: a787e1a462715604e0c9528b6d8960d1 #OSS及短信配置 code: config: ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
@@ -125,8 +125,11 @@ @TableField(exist = false) private String roleName; @TableField(exist = false) private String deptName; @ApiModelProperty(value = "部门id集合") @TableField(exist = false) private List<String> deptIds; public String getRoleName() { return roleName; ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java
@@ -2,6 +2,7 @@ import java.util.List; import com.ruoyi.system.model.TDeptToUser; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import com.ruoyi.system.domain.SysUserRole; @@ -70,4 +71,6 @@ * @return 结果 */ public int deleteUserRoleInfos(@Param("roleId") Long roleId, @Param("userIds") Long[] userIds); void insertBatchUserDept(List<TDeptToUser> deptToUserList); } ruoyi-system/src/main/java/com/ruoyi/system/mapper/TDeptToUserMapper.java
@@ -2,6 +2,7 @@ import com.ruoyi.system.model.TDeptToUser; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; /** * <p> @@ -11,6 +12,14 @@ * @author xiaochen * @since 2025-02-06 */ @Mapper public interface TDeptToUserMapper extends BaseMapper<TDeptToUser> { /** * 根据用户ID删除部门用户中间表 * * @param userId 用户ID * @return 删除结果 **/ int deleteUserDeptByUserId(Long userId); } ruoyi-system/src/main/java/com/ruoyi/system/query/SysUserQuery.java
@@ -5,18 +5,20 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; @Data @ApiModel(value = "账户列表query") public class SysUserQuery extends BasePage { @ApiModelProperty(value = "姓名") private String nickName; private String nickNameAndPhone; @ApiModelProperty(value = "角色id") private Integer roleId; @ApiModelProperty(value = "手机号") private String phonenumber; @ApiModelProperty(value = "部门id集合") private List<String> deptIds; @ApiModelProperty(value = "状态 0=正常 1=停用") private String status; ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -6,8 +6,14 @@ import java.util.stream.Collectors; import javax.validation.Validator; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.common.core.domain.entity.SysDept; import com.ruoyi.system.mapper.*; import com.ruoyi.system.model.TDept; import com.ruoyi.system.model.TDeptToUser; import com.ruoyi.system.query.SysUserQuery; import com.ruoyi.system.service.TDeptToUserService; import com.ruoyi.system.vo.SysUserVO; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -27,11 +33,6 @@ import com.ruoyi.system.domain.SysPost; import com.ruoyi.system.domain.SysUserPost; import com.ruoyi.system.domain.SysUserRole; import com.ruoyi.system.mapper.SysPostMapper; import com.ruoyi.system.mapper.SysRoleMapper; import com.ruoyi.system.mapper.SysUserMapper; import com.ruoyi.system.mapper.SysUserPostMapper; import com.ruoyi.system.mapper.SysUserRoleMapper; import com.ruoyi.system.service.ISysConfigService; import com.ruoyi.system.service.ISysUserService; @@ -59,9 +60,13 @@ @Autowired private SysUserPostMapper userPostMapper; @Autowired private TDeptToUserMapper deptToUserMapper; @Autowired private ISysConfigService configService; @Autowired private TDeptMapper deptMapper; @Autowired protected Validator validator; @@ -264,7 +269,7 @@ // 新增用户信息 int rows = userMapper.insertUser(user); // 新增用户岗位关联 // insertUserPost(user); insertUserDept(user); // 新增用户与角色管理 insertUserRoleId(user); return rows; @@ -297,10 +302,10 @@ userRoleMapper.deleteUserRoleByUserId(userId); // 新增用户与角色管理 insertUserRoleId(user); // 删除用户与岗位关联 // userPostMapper.deleteUserPostByUserId(userId); // 新增用户与岗位管理 // insertUserPost(user); // 删除用户与部门关联 deptToUserMapper.deleteUserDeptByUserId(userId); // 新增用户与部门管理 insertUserDept(user); return userMapper.updateUser(user); } @@ -401,6 +406,17 @@ } /** * 新增用户角色信息 * * @param user 用户对象 */ public void insertUserDept(SysUser user) { this.insertUserDept(user.getUserId(), user.getDeptIds()); } /** * 新增用户岗位信息 * * @param user 用户对象 @@ -460,6 +476,26 @@ ur.setUserId(userId); ur.setRoleId(roleId); userRoleMapper.insertUserRole(ur); } } /** * 新增用户部门信息 * * @param userId 用户ID * @param deptIds 部门id集合 */ public void insertUserDept(Long userId, List<String> deptIds) { if (Objects.nonNull(userId) && !CollectionUtils.isEmpty(deptIds)){ List<TDeptToUser> deptToUserList = new ArrayList<>(); for (String deptId : deptIds) { // 新增用户与角色管理 TDeptToUser deptToUser = new TDeptToUser(); deptToUser.setUserId(userId); deptToUser.setDeptId(deptId); deptToUserList.add(deptToUser); } userRoleMapper.insertBatchUserDept(deptToUserList); } } @@ -628,6 +664,19 @@ public PageInfo<SysUserVO> pageList(SysUserQuery query) { PageInfo<SysUserVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); List<SysUserVO> list = userMapper.pageList(query,pageInfo); if(CollectionUtils.isEmpty(list)){ return pageInfo; } List<Long> userIds = list.stream().map(SysUserVO::getUserId).collect(Collectors.toList()); // 查询所有部门 List<TDept> depts = deptMapper.selectList(Wrappers.lambdaQuery(TDept.class)); List<TDeptToUser> tDeptToUsers = deptToUserMapper.selectList(Wrappers.lambdaQuery(TDeptToUser.class) .in(TDeptToUser::getUserId, userIds)); for (SysUserVO sysUserVO : list) { tDeptToUsers.stream().filter(tDeptToUser -> tDeptToUser.getUserId().equals(sysUserVO.getUserId())).forEach(tDeptToUser -> { sysUserVO.setDeptList(depts.stream().filter(tDept -> tDept.getId().equals(tDeptToUser.getDeptId())).map(TDept::getDeptName).collect(Collectors.toList())); }); } pageInfo.setRecords(list); return pageInfo; } ruoyi-system/src/main/java/com/ruoyi/system/vo/SysUserVO.java
@@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; @Data @ApiModel(value = "账户列表VO") public class SysUserVO extends SysUser { @@ -14,7 +16,7 @@ @ApiModelProperty(value = "单位名称") private String companyName; @ApiModelProperty(value = "部门") private String deptName; private List<String> deptList; @ApiModelProperty(value = "角色") private String roleName; ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -228,19 +228,24 @@ from sys_user u left join sys_user_role ur on u.user_id = ur.user_id left join sys_role r on r.role_id = ur.role_id left join t_dept_to_user tdtu on u.user_id = tdtu.user_id WHERE u.del_flag = 0 <if test="query.nickName != null and query.nickName != ''"> AND u.nick_name LIKE concat('%',#{query.nickName},'%') <if test="query.nickNameAndPhone != null and query.nickNameAndPhone != ''"> AND (u.nick_name LIKE concat('%',#{query.nickNameAndPhone},'%') OR u.phonenumber LIKE concat('%',#{query.nickNameAndPhone},'%')) </if> <if test="query.roleId != null"> AND r.role_id = #{query.roleId} </if> <if test="query.phonenumber != null and query.phonenumber != ''"> AND u.phonenumber LIKE concat('%',#{query.phonenumber},'%') </if> <if test="query.status != null and query.status != ''"> AND u.status = #{query.status} </if> <if test="query.deptIds != null and query.deptIds.size()>0"> AND u.user_id IN (select DISTINCT user_id from t_dept_to_user where dept_id IN <foreach collection="query.deptIds" close=")" open="(" item="deptId" separator=","> #{deptId} </foreach>) </if> ORDER BY u.create_time DESC </select> <select id="selectIdByPhone" resultType="java.lang.Long"> ruoyi-system/src/main/resources/mapper/system/SysUserRoleMapper.xml
@@ -33,6 +33,12 @@ <insert id="insertUserRole"> insert into sys_user_role(user_id, role_id) values (#{userRole.userId},#{userRole.roleId}) </insert> <insert id="insertBatchUserDept"> insert into sys_user_role(user_id, dept_id) values <foreach item="item" index="index" collection="deptToUserList" separator=","> (#{item.userId},#{item.deptId}) </foreach> </insert> <delete id="deleteUserRoleInfo" parameterType="SysUserRole"> delete from sys_user_role where user_id=#{userId} and role_id=#{roleId} ruoyi-system/src/main/resources/mapper/system/TDeptToUserMapper.xml
@@ -13,5 +13,8 @@ <sql id="Base_Column_List"> id, dept_id, user_id </sql> <delete id="deleteUserDeptByUserId"> delete from t_dept_to_user where user_id=#{userId} </delete> </mapper>