若依权限管理系统(用户管理)

一、用户管理 【若依权限管理系统(用户管理)】权限管理子系统中最直接的权限控制对象是用户,我们要控制用户对资源的访问权限
核心业务分析
这里的用户为系统管理员添加的用户,是系统管理员,管理员在添加这个账户,会为账户设置一些基础信息,例如一般会给一个默认密码,第一次登陆以后会提示用户修改初始化密码。
用户列表分页数据查询实现
业务分析 点击用户管理时,基于页码值查询当前页用户数据并进行呈现,本次分页查询依托与分页插件pagehelper进行实现。
服务端设计及实现 创建SysUser类型,基于此类型的对象封装用户信息

public class SysUser extends BaseEntity { private static final long serialVersionUID = 1L; /** 用户ID */ @Excel(name = "用户序号", cellType = ColumnType.NUMERIC, prompt = "用户编号") private Long userId; /** 部门ID */ @Excel(name = "部门编号", type = Type.IMPORT) private Long deptId; /** 用户账号 */ @Excel(name = "登录名称") private String userName; /** 用户昵称 */ @Excel(name = "用户名称") private String nickName; /** 用户邮箱 */ @Excel(name = "用户邮箱") private String email; /** 手机号码 */ @Excel(name = "手机号码") private String phonenumber; /** 用户性别 */ @Excel(name = "用户性别", readConverterExp = "0=男,1=女,2=未知") private String sex; /** 用户头像 */ private String avatar; /** 密码 */ private String password; /** 盐加密 */ private String salt; /** 帐号状态(0正常 1停用) */ @Excel(name = "帐号状态", readConverterExp = "0=正常,1=停用") private String status; /** 删除标志(0代表存在 2代表删除) */ private String delFlag; /** 最后登录IP */ @Excel(name = "最后登录IP", type = Type.EXPORT) private String loginIp; /** 最后登录时间 */ @Excel(name = "最后登录时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", type = Type.EXPORT) private Date loginDate; /** 部门对象 */ @Excels({ @Excel(name = "部门名称", targetAttr = "deptName", type = Type.EXPORT), @Excel(name = "部门负责人", targetAttr = "leader", type = Type.EXPORT) }) private SysDept dept; /** 角色对象 */ private List roles; /** 角色组 */ private Long[] roleIds; /** 岗位组 */ private Long[] postIds;

Dao接口及方法设计 第一步:创建SysUserMapper接口及方法设计,用与实现分页查询,关键代码如下:
@Mapper public interface SysUserMapper { /** * 根据条件分页查询用户列表 * * @param sysUser 用户信息 * @return 用户信息集合信息 */ public List selectUserList(SysUser sysUser); }

第二步:创建SysUserMapper映射文件SysUserMapper.xml并添加分页查询sql映射,关键代码如下:
select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader from sys_user u left join sys_dept d on u.dept_id = d.dept_id where u.del_flag = '0' AND u.user_name like concat('%', #{userName}, '%') AND u.status = #{status} AND u.phonenumber like concat('%', #{phonenumber}, '%') AND date_format(u.create_time,'%y%m%d') > = date_format(#{params.beginTime},'%y%m%d') AND date_format(u.create_time,'%y%m%d') < = date_format(#{params.endTime},'%y%m%d') AND (u.dept_id = #{deptId} OR u.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE find_in_set(#{deptId}, ancestors) )) ${params.dataScope}

Service接口及方式设计 第一步:创建ISysUserService接口并添加用户分页查询方法,关键代码如下:
public interface ISysUserService { /** * 根据条件分页查询用户列表 * * @param user 用户信息 * @return 用户信息集合信息 */ public List selectUserList(SysUser user);

第二步:创建ISysUserServiceImpl实现类并重写用户分页查询方法,关键代码如下:
@Service public class SysUserServiceImpl implements ISysUserService { private static final Logger log = LoggerFactory.getLogger(SysUserServiceImpl.class); @Autowired private SysUserMapper userMapper; /** * 根据条件分页查询用户列表 * * @param user 用户信息 * @return 用户信息集合信息 */ @Override @DataScope(deptAlias = "d", userAlias = "u") public List selectUserList(SysUser user) { return userMapper.selectUserList(user); } }

Controller类及方法实现 第一步:创建SysUserControlle类并添加处理分页查询请求的方法,继承 BaseController类
@RestController @RequestMapping("/system/user") public class SysUserController extends BaseController { @Autowired private ISysUserService userService; /** * 获取用户列表 */ @PreAuthorize("@ss.hasPermi('system:user:list')") @GetMapping("/list") public TableDataInfo list(SysUser user) { startPage(); List list =userService.selectUserList(user); return getDataTable(list); }

public class BaseController { protected final Logger logger = LoggerFactory.getLogger(this.getClass()); /** * 设置请求分页数据 */ protected void startPage() { PageDomain pageDomain = TableSupport.buildPageRequest(); Integer pageNum = pageDomain.getPageNum(); Integer pageSize = pageDomain.getPageSize(); if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)) { String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy()); PageHelper.startPage(pageNum, pageSize, orderBy); } }

前端设计及实现 查询用户列表的请求方式以及访问路径
// 查询用户列表 export function listUser(query) { return request({ url: '/system/user/list', method: 'get', params: query }) }

    推荐阅读