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