山东大学软件学院项目实训——V-Track:虚拟现实环境下的远程教育和智能评估系统(五)

项目记录——week8/9/10/11

本周的主要工作还是进行系统框架的搭建,根据设计好的api搭建后端框架,实现设定功能

本篇只介绍用户管理以及角色管理,包括用户和角色的关联部分

用户管理API 概述

用户管理 API 提供了分页查询用户列表、保存用户信息、删除用户、更新用户信息、查看用户详情和更新用户密码的方法。每个 API 均包含详细的功能描述、请求方法、请求参数和响应格式,确保管理员能够高效地执行用户管理操作。

用户管理API 详细设计
  1. 分页查询用户列表

    • 描述: 分页查询用户列表。
    • 请求方法: 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);
                  }
              }
          }
      }
      
  2. 保存用户信息

    • 描述: 保存新用户信息。
    • 请求方法: 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);
      }
      
  3. 删除用户

    • 描述: 删除指定用户。
    • 请求方法: 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("操作成功");
      }
      
  4. 更新用户信息

    • 描述: 更新指定用户的信息。
    • 请求方法: 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);
      }
      

  5. 查看用户详情

    • 描述: 查看指定用户的详细信息。
    • 请求方法: 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));
      }
      

  6. 更新用户密码

    • 描述: 更新指定用户的密码。
    • 请求方法: 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 请求与响应详细说明
  1. 分页查询用户列表

    • 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
        }
      }
      

  2. 保存用户信息

    • URL: /admin/sys/user/save
    • 请求方法: POST
    • 请求参数:
      {
        "mobile": "13800000000",
        "mobilePwd": "password123",
        "rePassword": "password123"
      }
      

    • 响应示例:
      {
        "code": 200,
        "msg": "操作成功"
      }
      

  3. 删除用户

    • URL: /admin/sys/user/delete
    • 请求方法: POST
    • 请求参数:
      {
        "id": 1
      }
      

    • 响应示例:
      {
        "code": 200,
        "msg": "操作成功"
      }
      

  4. 更新用户信息

    • URL: /admin/sys/user/update
    • 请求方法: POST
    • 请求参数:
      {
        "id": 1,
        "mobile": "13800000000"
      }
      

    • 响应示例:
      {
        "code": 200,
        "msg": "操作成功"
      }
      

  5. 查看用户详情

    • URL: /admin/sys/user/view
    • 请求方法: POST
    • 请求参数:
      {
        "id": 1
      }
      

    • 响应示例:
      {
        "code": 200,
        "msg": "success",
        "data": {
          "id": 1,
          "mobile": "13800000000"
        }
      }
      

  6. 更新用户密码

    • URL: /admin/sys/user/updatePassword
    • 请求方法: POST
    • 请求参数:
      {
        "userId": 1,
        "mobilePwd": "newpassword123",
        "confirmPassword": "newpassword123"
      }
      

    • 响应示例:
      {
        "code": 200,
        "msg": "操作成功"
      }
      

角色管理API概述

角色管理API提供了一系列方法,用于分页查询角色列表、添加新角色、查看角色详情、修改角色信息以及删除角色。每个API均包括详细的功能描述、请求方法、请求参数和响应格式,确保管理员可以高效地管理角色信息。

角色管理API详细设计
  1. 分页查询角色列表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));
      }
      
  2. 添加新角色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);
      }
      
  3. 查看角色详情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));
      }
      
  4. 修改角色信息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);
      }
      
  5. 删除角色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详细设计
  1. 查询用户角色列表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<>());
      }
      
  2. 保存用户角色信息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请求与响应详细说明
  1. 查询用户角色列表

    • URL: /admin/sys/role/user/list
    • 请求方法: POST
    • 请求参数:
      {
        "userId": 123
      }
      
    • 响应示例:
      {
        "code": 200,
        "msg": "success",
        "data": [1, 2, 3]
      }
      
  2. 保存用户角色信息

    • URL: /admin/sys/role/user/save
    • 请求方法: POST
    • 请求参数:
      {
        "userId": 123,
        "roleIdList": [1, 2, 3]
      }
      
    • 响应示例:
      {
        "code": 200,
        "msg": "操作成功"
      }
      

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值