31.用户信息管理

用户信息管理

后台管理系统可以对所有注册用户进行统一管理。如查看用户列表,用户详情,用户发布的视频/动态等

一、分页查询用户列表(就是查询所有的用户信息)

1.ManageController


    /**
     * 用户数据分页查询
     * 请求路径:/manage/users
     * 请求方式:get
     * 请求参数:Integer page(当前页码),Integer pagesize(每页展示数)
     * 响应数据:PageResult,里面封装的是UserInfo
     */
    @GetMapping("/users")
    public ResponseEntity queryAllUserInfo(@RequestParam(defaultValue = "1") Integer page,
                                           @RequestParam(defaultValue = "10") Integer pagesize){
       PageResult pageResult =  manageService.queryAllUserInfo(page,pagesize);
       return ResponseEntity.ok(pageResult);
    }

2.ManageService

public ResponseEntity queryUserInfoByPage(Integer page, Integer pagesize) {
    //1、调用API分页查询数据列表   Ipage<UserInfo>
    IPage<UserInfo> iPage = userInfoApi.findAll(page,pagesize);
    //2、需要将Ipage转化为PageResult
    PageResult result = new PageResult(page, pagesize, iPage.getTotal(), iPage.getRecords());
    //3、构造返回值
    return ResponseEntity.ok(result);
}

3.UserInfoApiImpl

 /**
     * 后台管理系统分页查询全部用户信息分页查询
     * @param page
     * @param pagesize
     * @return
     */
    public IPage queryUserInfoByPage(Integer page, Integer pagesize) {

        Page<UserInfo> iPage = new Page<>(page,pagesize);
        Page<UserInfo> infoIPage = userInfoMapper.selectPage(iPage, null);
        return infoIPage;
    }

二、根据id查看用户详情(UserInfo)

1.ManageController


    /**
     * 根据id查看用户详情
     * 请求路径:/manage/users/:userID
     * 请求方式:get
     * 请求参数: 路径参数 Long userID(用户id)
     * 响应数据: UserInfo
     */
    @GetMapping("/users/{userID}")
    public ResponseEntity queryUserInfoById(@PathVariable("userID") Long userId){

        UserInfo userInfo = manageService.queryUserInfoById(userId);
        return ResponseEntity.ok(userInfo);
    }

2.ManageService

//根据id查询用户详情
public ResponseEntity findById(Long userId) {
    UserInfo info = userInfoApi.findById(userId);
    return ResponseEntity.ok(info);
}

三、根据用户id查询视频记录翻页列表

1.ManageController

  /**
     * 根据用户id查询视频记录翻页列表
     * 请求路径:/manage/videos
     * 请求方式:get
     * 请求参数: Integer page(当前页码), Integer pagesize(每页展示条数),Long uid(用户id)
     * 响应数据:PageResult 封装List集合Video对象
     */

    @GetMapping("/videos")
    public ResponseEntity queryVideosById(@RequestParam(defaultValue = "1") Integer page,
                                          @RequestParam(defaultValue = "10") Integer pagesize,
                                          Long uid){

       PageResult pageResult = manageService.queryVideosById(page,pagesize,uid);

       return ResponseEntity.ok(pageResult);
    }

2.ManageService


    /**
     * 根据用户id翻页查询视频记录
     * @param page
     * @param pagesize
     * @param uid
     * @return
     */
    public PageResult queryVideosById(Integer page, Integer pagesize, Long uid) {

        PageResult pageResult =videoApi.queryVideosById(page,pagesize,uid);

        return pageResult;
    }

3.VideoApiImpl


    /**
     *     //根据用户id分页查询分页列表
     * @param page
     * @param pagesize
     * @param
     * @return
     */
    public PageResult queryVideosById(Integer page, Integer pagesize, Long userId) {
        
        Criteria criteria = Criteria.where("userId").in(userId);
        Query query = Query.query(criteria);

       query.skip((page - 1) * pagesize).limit(pagesize).with(Sort.by(Sort.Order.desc("created")));


        long count = mongoTemplate.count(query, Video.class);

        List<Video> videos = mongoTemplate.find(query, Video.class);


        PageResult pageResult = new PageResult(page,pagesize,count,videos);

        return pageResult;
    }

四、根据用户id分页查询动态记录

1.ManageController

 /**
     * 根据用户id分页查询动态记录
     * 请求路径:/manage/messages
     * 请求方式:get
     *请求参数:Integer page(当前页码);Integer pagesize(每页展示数)
     *        Long uid(用户id);Integer  state(动态审核状态)
     * 响应数据:PageResult,封装的是MovementVo集合
     */
    @GetMapping("/messages")
    public ResponseEntity queryMoments(@RequestParam(defaultValue = "1") Integer page,
                                      @RequestParam(defaultValue = "10") Integer pagesize,
                                      Long uid,Integer state){
        PageResult pageResult = manageService.queryMoments(page,pagesize,uid,state);
        return ResponseEntity.ok(pageResult);

    }

2.ManageService

 /**
     * 根据用户id分页查询动态记录
     * @param page
     * @param pagesize
     * @param userId
     * @param state
     * @return
     */
    public PageResult queryMoments(Integer page, Integer pagesize, Long userId, Integer state) {
       
        //1.先根据条件查询PageResult 里面封装的有movements集合
      PageResult pageResult = movementsApi.queryMoments(page,pagesize,userId,state);

        List<Movement> movements = (List<Movement>) pageResult.getItems();

       //2.判断是否为空,为空则直接new一个PageResult返回
        if(StringUtils.isEmpty(movements)){
            return new PageResult();
        }
        //3.批量提取movement的用户id,再根据id查询用户详情
        List<Long> userIds = CollUtil.getFieldValues(movements, "userId", Long.class);
        Map<Long, UserInfo> userInfoMap = userInfoApi.batchQueryUserInfo(userIds, null);

        //4.遍历movements集合,构造vo对象
       List<MovementsVo> vos = new ArrayList<>();
        for (Movement movement : movements) {
            UserInfo userInfo = userInfoMap.get(movement.getUserId());
            if(userInfo != null){
                MovementsVo vo = MovementsVo.init(userInfo, movement);
                vos.add(vo);
            }
        }
        //5.构造返回值
      pageResult.setItems(vos);
        return pageResult;
    }

3.MovementsApiImpl

/**
     * 根据用户id分页查询动态记录
     * @param page
     * @param pagesize
     * @param userId
     * @param state
     * @return
     */
    public PageResult queryMoments(Integer page, Integer pagesize, Long userId, Integer state) {

        //1判断传入的参数是否为空,添加条件
        Query query = new Query();
       
        if(userId != null){
            query.addCriteria(Criteria.where("userId").is(userId));
        }

        if(state != null){
            query.addCriteria(Criteria.where("state").is(state));
        }
        //2.查询总数
        long count = mongoTemplate.count(query, Movement.class);


        //3.分页查询
        query.skip((page-1) * pagesize ).limit(pagesize).with(Sort.by(Sort.Order.desc("created")));
        List<Movement> movements = mongoTemplate.find(query, Movement.class);

        PageResult pageResult = new PageResult(page,pagesize,count,movements);
        return pageResult;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

糖分你俩颗~~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值