一、用户管理 【若依权限管理系统(用户管理)】权限管理子系统中最直接的权限控制对象是用户,我们要控制用户对资源的访问权限
核心业务分析
这里的用户为系统管理员添加的用户,是系统管理员,管理员在添加这个账户,会为账户设置一些基础信息,例如一般会给一个默认密码,第一次登陆以后会提示用户修改初始化密码。
用户列表分页数据查询实现
业务分析 点击用户管理时,基于页码值查询当前页用户数据并进行呈现,本次分页查询依托与分页插件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
})
}
推荐阅读
- 线程池是怎么回收空闲线程的(如果你认为有定时任务,那你就错了!)
- Java重载和重写的区别
- 服务器|登录会话模型实战
- 学习|移动端测试的学习
- java|Spring security 集成 JustAuth 实现第三方授权登录
- 通俗易懂的JUC源码剖析-ThreadLocal/InheritableThreadLocal
- 软件研发|揭开JS无埋点技术的神秘面纱
- Mysql|详解DAO类(数据库操作对象)
- elementui|java基于Springboot+vue的宠物销售商城网站 elementui