项目记录——week8/9/10/11
本周的主要工作还是进行系统框架的搭建,根据设计好的api搭建后端框架,实现设定功能
本篇只介绍用户管理以及角色管理,包括用户和角色的关联部分
用户管理API 概述
用户管理 API 提供了分页查询用户列表、保存用户信息、删除用户、更新用户信息、查看用户详情和更新用户密码的方法。每个 API 均包含详细的功能描述、请求方法、请求参数和响应格式,确保管理员能够高效地执行用户管理操作。
用户管理API 详细设计
-
分页查询用户列表
- 描述: 分页查询用户列表。
- 请求方法: POST
- 请求参数:
AdminSysUserPageReq
包含当前页码和每页记录数。 - 响应格式: 返回用户分页列表。
- 示例代码:
public Result<Page<AdminSysUserPageResp>> listForPage(AdminSysUserPageReq req) { SysUserExample example = new SysUserExample(); Criteria c = example.createCriteria(); if (StringUtils.hasText(req.getMobile())) { c.andMobileEqualTo(req.getMobile()); } example.setOrderByClause(" sort asc, id desc "); Page<SysUser> page = dao.page(req.getPageCurrent(), req.getPageSize(), example); Page<AdminSysUserPageResp> respPage = PageUtil.transform(page, AdminSysUserPageResp.class); if (CollUtil.isNotEmpty(respPage.getList())) { List<Long> userIdList = respPage.getList().stream().map(AdminSysUserPageResp::getId).collect(Collectors.toList()); List<SysRoleUser> roleUserList = sysRoleUserDao.listByUserIds(userIdList); if (CollUtil.isNotEmpty(roleUserList)) { List<Long> roles = roleUserList.stream().map(SysRoleUser::getRoleId).collect(Collectors.toList()); List<SysRole> roleList = sysRoleDao.listByIds(roles); extracted(respPage, roleUserList, roleList); } } return Result.success(respPage); } private void extracted(Page<AdminSysUserPageResp> respPage, List<SysRoleUser> roleUserList, List<SysRole> roleList) { if (CollUtil.isNotEmpty(roleList)) { Map<Long, String> roleNameMap = roleList.stream().collect(Collectors.toMap(SysRole::getId, SysRole::getRoleName)); Map<Long, List<Long>> map = roleUserList.stream().collect(Collectors.groupingBy(SysRoleUser::getUserId, Collectors.mapping(SysRoleUser::getRoleId, Collectors.toList()))); for (AdminSysUserPageResp resp : respPage.getList()) { List<Long> roleIdList = map.get(resp.getId()); if (CollUtil.isNotEmpty(roleIdList)) { List<String> roleNameList = new ArrayList<>(); for (Long roleId : roleIdList) { roleNameList.add(roleNameMap.get(roleId)); } resp.setRoleNameList(roleNameList); } } } }
-
保存用户信息
- 描述: 保存新用户信息。
- 请求方法: POST
- 请求参数:
AdminSysUserSaveReq
包含用户信息。 - 响应格式: 返回操作结果。
- 示例代码:
public Result<String> save(AdminSysUserSaveReq req) { if (!req.getMobilePwd().equals(req.getRePassword())) { return Result.error("密码不一致"); } SysUser sysUser = dao.getByMobile(req.getMobile()); if (ObjectUtil.isNotNull(sysUser)) { return Result.error("用户已添加成管理员"); } SysUser record = BeanUtil.copyProperties(req, SysUser.class); record.setMobileSalt(IdUtil.simpleUUID()); record.setMobilePsw(SHA1Util.getSign(record.getMobileSalt() + req.getMobilePwd())); int results = dao.save(record); if (results > 0) { return Result.success("操作成功"); } return Result.error(ResultEnum.SYSTEM_SAVE_FAIL); }
-
删除用户
- 描述: 删除指定用户。
- 请求方法: POST
- 请求参数:
AdminSysUserDeleteReq
包含用户ID。 - 响应格式: 返回操作结果。
- 示例代码:
@Transactional public Result<String> delete(AdminSysUserDeleteReq req) { if (req.getId() == null) { return Result.error("主键ID不能为空"); } // 1、删除用户所有角色 sysRoleUserDao.deleteByUserId(req.getId()); // 2、删除用户 dao.deleteById(req.getId()); return Result.success("操作成功"); }
-
更新用户信息
- 描述: 更新指定用户的信息。
- 请求方法: POST
- 请求参数:
AdminSysUserUpdateReq
包含更新后的用户信息。 - 响应格式: 返回操作结果。
- 示例代码:
public Result<String> update(AdminSysUserUpdateReq req) { if (req.getId() == null) { return Result.error("主键ID不能为空"); } SysUser sysUser = dao.getById(req.getId()); if (ObjectUtil.isNull(sysUser)) { return Result.error("找不到管理员信息"); } SysUser record = BeanUtil.copyProperties(req, SysUser.class); int results = dao.updateById(record); if (results > 0) { return Result.success("操作成功"); } return Result.error(ResultEnum.SYSTEM_UPDATE_FAIL); }
-
查看用户详情
- 描述: 查看指定用户的详细信息。
- 请求方法: POST
- 请求参数:
AdminSysUserViewReq
包含用户ID。 - 响应格式: 返回用户详情。
- 示例代码:
public Result<AdminSysUserViewResp> view(AdminSysUserViewReq req) { if (req.getId() == null) { return Result.error("主键ID不能为空"); } SysUser sysUser = dao.getById(req.getId()); if (ObjectUtil.isNull(sysUser)) { return Result.error("管理员不存在"); } return Result.success(BeanUtil.copyProperties(sysUser, AdminSysUserViewResp.class)); }
-
更新用户密码
- 描述: 更新指定用户的密码。
- 请求方法: POST
- 请求参数:
AdminSysUserUpdatePasswordReq
包含用户ID和新密码信息。 - 响应格式: 返回操作结果。
- 示例代码:
public Result<String> updatePassword(AdminSysUserUpdatePasswordReq req) { if (req.getUserId() == null) { return Result.error("用户ID不能为空,请重试"); } if (StringUtils.isEmpty(req.getMobilePwd())) { return Result.error("新密码不能为空,请重试"); } if (StringUtils.isEmpty(req.getConfirmPassword())) { return Result.error("确认密码不能为空,请重试"); } if (!req.getConfirmPassword().equals(req.getMobilePwd())) { return Result.error("密码不一致,请重试"); } SysUser record = new SysUser(); record.setId(req.getUserId()); record.setMobileSalt(IdUtil.simpleUUID()); record.setMobilePsw(SHA1Util.getSign(record.getMobileSalt() + req.getMobilePwd())); dao.updateById(record); return Result.success("操作成功"); }
API 请求与响应详细说明
-
分页查询用户列表
- URL:
/admin/sys/user/listForPage
- 请求方法: POST
- 请求参数:
{ "pageCurrent": 1, "pageSize": 10, "mobile": "13800000000" }
- 响应示例:
{ "code": 200, "msg": "success", "data": { "list": [ { "id": 1, "mobile": "13800000000", "roleNameList": ["管理员"] } ], "total": 1, "pageCurrent": 1, "pageSize": 10 } }
- URL:
-
保存用户信息
- URL:
/admin/sys/user/save
- 请求方法: POST
- 请求参数:
{ "mobile": "13800000000", "mobilePwd": "password123", "rePassword": "password123" }
- 响应示例:
{ "code": 200, "msg": "操作成功" }
- URL:
-
删除用户
- URL:
/admin/sys/user/delete
- 请求方法: POST
- 请求参数:
{ "id": 1 }
- 响应示例:
{ "code": 200, "msg": "操作成功" }
- URL:
-
更新用户信息
- URL:
/admin/sys/user/update
- 请求方法: POST
- 请求参数:
{ "id": 1, "mobile": "13800000000" }
- 响应示例:
{ "code": 200, "msg": "操作成功" }
- URL:
-
查看用户详情
- URL:
/admin/sys/user/view
- 请求方法: POST
- 请求参数:
{ "id": 1 }
- 响应示例:
{ "code": 200, "msg": "success", "data": { "id": 1, "mobile": "13800000000" } }
- URL:
-
更新用户密码
- URL:
/admin/sys/user/updatePassword
- 请求方法: POST
- 请求参数:
{ "userId": 1, "mobilePwd": "newpassword123", "confirmPassword": "newpassword123" }
- 响应示例:
{ "code": 200, "msg": "操作成功" }
- URL:
角色管理API概述
角色管理API提供了一系列方法,用于分页查询角色列表、添加新角色、查看角色详情、修改角色信息以及删除角色。每个API均包括详细的功能描述、请求方法、请求参数和响应格式,确保管理员可以高效地管理角色信息。
角色管理API详细设计
-
分页查询角色列表API
- 描述: 分页查询角色列表。
- 请求方法: POST
- 请求参数:
AdminSysRolePageReq
包含分页查询参数。 - 响应格式: 返回
Page<AdminSysRolePageResp>
角色分页查询结果。 - 示例代码:
public Result<Page<AdminSysRolePageResp>> listForPage(AdminSysRolePageReq req) { SysRoleExample example = new SysRoleExample(); Criteria c = example.createCriteria(); if (StringUtils.hasText(req.getRoleName())) { c.andRoleNameEqualTo(req.getRoleName()); } if (req.getStatusId() != null) { c.andStatusIdEqualTo(req.getStatusId()); } example.setOrderByClause("sort asc, id desc"); Page<SysRole> page = dao.page(req.getPageCurrent(), req.getPageSize(), example); return Result.success(PageUtil.transform(page, AdminSysRolePageResp.class)); }
-
添加新角色API
- 描述: 添加新的角色。
- 请求方法: POST
- 请求参数:
AdminSysRoleSaveReq
包含新角色的信息。 - 响应格式: 返回操作结果的状态信息。
- 示例代码:
public Result<String> save(AdminSysRoleSaveReq req) { if (StringUtils.isEmpty(req.getRoleName())) { return Result.error("角色名称不能为空"); } SysRole record = BeanUtil.copyProperties(req, SysRole.class); int results = dao.save(record); if (results > 0) { return Result.success("操作成功"); } return Result.error(ResultEnum.SYSTEM_SAVE_FAIL); }
-
查看角色详情API
- 描述: 查看角色的详细信息。
- 请求方法: POST
- 请求参数:
AdminSysRoleViewReq
包含角色ID。 - 响应格式: 返回
AdminSysRoleViewResp
角色详细信息。 - 示例代码:
public Result<AdminSysRoleViewResp> view(AdminSysRoleViewReq req) { if (req.getId() == null) { return Result.error("角色ID不能为空"); } SysRole record = dao.getById(req.getId()); if (ObjectUtil.isNull(record)) { return Result.error("找不到角色信息"); } return Result.success(BeanUtil.copyProperties(record, AdminSysRoleViewResp.class)); }
-
修改角色信息API
- 描述: 修改角色信息。
- 请求方法: POST
- 请求参数:
AdminSysRoleUpdateReq
包含角色修改信息。 - 响应格式: 返回操作结果的状态信息。
- 示例代码:
public Result<String> update(AdminSysRoleUpdateReq req) { if (req.getId() == null) { return Result.error("角色ID不能为空"); } SysRole record = BeanUtil.copyProperties(req, SysRole.class); int results = dao.updateById(record); if (results > 0) { return Result.success("操作成功"); } return Result.error(ResultEnum.SYSTEM_UPDATE_FAIL); }
-
删除角色API
- 描述: 删除角色信息。
- 请求方法: POST
- 请求参数:
AdminSysRoleDeleteReq
包含角色ID。 - 响应格式: 返回操作结果的状态信息。
- 示例代码:
@Transactional(rollbackFor = Exception.class) public Result<String> delete(AdminSysRoleDeleteReq req) { if (StringUtils.isEmpty(req.getId())) { return Result.error("角色ID不能为空"); } // 删除角色下的菜单 sysMenuRoleDao.deleteByRoleId(req.getId()); // 删除角色 int results = dao.deleteById(req.getId()); if (results > 0) { return Result.success("操作成功"); } return Result.error(ResultEnum.SYSTEM_DELETE_FAIL); }
角色用户关联API概述
角色用户关联API提供了查询用户角色列表和保存用户角色信息的方法。每个API均包括详细的功能描述、请求方法、请求参数和响应格式,确保管理员可以高效地管理用户和角色的关联信息。
角色用户关联API详细设计
-
查询用户角色列表API
- 描述: 查询指定用户的角色列表。
- 请求方法: POST
- 请求参数:
AdminSysRoleUserListReq
包含用户ID。 - 响应格式: 返回
List<Long>
角色ID列表。 - 示例代码:
public Result<List<Long>> list(AdminSysRoleUserListReq req) { if (req.getUserId() == null) { return Result.error("用户ID不能为空"); } List<SysRoleUser> list = dao.listByUserId(req.getUserId()); if (CollectionUtil.isNotEmpty(list)) { List<Long> roleIdList = list.stream().map(SysRoleUser::getRoleId).collect(Collectors.toList()); return Result.success(roleIdList); } return Result.success(new ArrayList<>()); }
-
保存用户角色信息API
- 描述: 保存指定用户的角色信息。
- 请求方法: POST
- 请求参数:
AdminSysRoleUserSaveReq
包含用户ID和角色ID列表。 - 响应格式: 返回操作结果的状态信息。
- 示例代码:
@Transactional(rollbackFor = Exception.class) public Result<String> save(AdminSysRoleUserSaveReq req) { if (req.getUserId() == null) { return Result.error("用户ID不能为空"); } // 先删除旧的角色 dao.deleteByUserId(req.getUserId()); // 再新增 if (CollectionUtil.isNotEmpty(req.getRoleIdList())) { for (Long roleId : req.getRoleIdList()) { SysRoleUser sysRoleUser = new SysRoleUser(); sysRoleUser.setRoleId(roleId); sysRoleUser.setUserId(req.getUserId()); dao.save(sysRoleUser); } } return Result.success("操作成功"); }
API请求与响应详细说明
-
查询用户角色列表
- URL:
/admin/sys/role/user/list
- 请求方法: POST
- 请求参数:
{ "userId": 123 }
- 响应示例:
{ "code": 200, "msg": "success", "data": [1, 2, 3] }
- URL:
-
保存用户角色信息
- URL:
/admin/sys/role/user/save
- 请求方法: POST
- 请求参数:
{ "userId": 123, "roleIdList": [1, 2, 3] }
- 响应示例:
{ "code": 200, "msg": "操作成功" }
- URL: