基于java的微信小程序的实现(九)用户留言功能相关后端接口开发
2018-12-01 13:03
941 查看
版权声明:lex https://blog.csdn.net/qq_36258498/article/details/84672785
2.查询用户留言列表功能的实现
文章目录
1.用户为视频留言/回复功能
1.需求分析
我们需要前端传入Comments实体类中的相关参数,通过service的保存方法,将留言保存到数据库即可,根据Comments的参数数量来判断用户是留言还是为回复留言。
2.代码实现
dao层代码
public interface CommentsDao extends JpaRepository<Comments,String> ,JpaSpecificationExecutor<Comments> { }
service层代码
/** * 保存用户评论 * @param comments */ @Override @Transactional public void saveComments(Comments comments) { comments.setId(IdUtils.getId()); comments.setCreateTime(new Date()); commentsDao.save(comments); }
controller层代码
@ApiOperation(value = "用户评论的接口/回复用户的留言", notes = "用户评论的接口/回复用户的留言") @PostMapping(value = "/saveComments") public LexJSONResult saveComments(@RequestBody Comments comments){ videosService.saveComments(comments); return LexJSONResult.ok(); }
2.查询用户留言列表功能的实现
1.需求分析
该接口需要对该视频的所有评论进行查询,查询结果需要进行分页,需要前端将评论的页数以及视频的id作为参数传入,我们早controller层定义每页显示的页数为4,将查询到的结果已vo包装类的形式返回,因为在前端需要显示评论者的昵称,评论者的头像,以及多长时间前评论或回复的,这里我们需要封装一个时间的工具类对时间进行一下统一的处理,在vo类中加上一个新的显示时间的字段,用来存放我们处理后的时间数据,将用户的头像信息用户的昵称都作为新的字段加入vo类中,以pageResult的形式返回给前端。
2.代码实现
service层代码
/** * 分页查询全部的评论 * @param videoId * @param page * @param size * @return */ @Override public PageResult findComments(final String videoId, Integer page, Integer size) { //创建分页的条件 Pageable pageable =new PageRequest(page-1,size); //创建返回给前端的分页结果类 PageResult pageResult =new PageResult(); //创建一个用来装返回结 4000 果的集合 List<CommentsVo> rows =new ArrayList<CommentsVo>(); //根据视频的id分页查询数据,并按照创建时间降序排列 Page<Comments> commentsPage = commentsDao.findAll(new Specification<Comments>() { @Override public Predicate toPredicate(Root<Comments> root, CriteriaQuery<?> cq, CriteriaBuilder cb) { //将实体类中的videoId作为参数传入 Predicate p1 = cb.equal(root.get("videoId").as(String.class), videoId); //通过这个条件进行查询 cq.where(p1); //通过创建实现对查询结果进行降序排列 cq.orderBy(cb.desc(root.get("createTime").as(Date.class))); return cq.getRestriction(); } }, pageable); //设置当前的页数 pageResult.setPage(page); //设置总页数 pageResult.setTotalPage(commentsPage.getTotalPages()); //设置当前元素数 pageResult.setTotalElements(commentsPage.getTotalElements()); //进行数据收集,将数据拼装成需要返回给前端的vo类 for (Comments comments:commentsPage){ CommentsVo commentsVo =new CommentsVo(); //使用我们封装好的显示时间的工具类,对创建时间进行处理,使得在前端页面以xx前的形式显示 commentsVo.setTimeAgo(TimeAgoUtils.format(comments.getCreateTime())); //查询评论者的相关用户信息 Users one = usersDao.findOne(comments.getFromUserId()); //如果getToUserId不为空,说明有用户对该条评论做出了回复 if(!StringUtils.isEmpty(comments.getToUserId())){ //查询到被回复对象的信息 Users one1 = usersDao.findOne(comments.getToUserId()); //将用户的昵称封装到vo中 commentsVo.setToNickname(one1.getNickname()); } //将用户的头像信息存放到vo中 commentsVo.setFaceImage(one.getFaceImage()); //将用户的昵称存放到vo中 commentsVo.setNickname(one.getNickname()); //将查询到的comments类拷贝到vo对象中 BeanUtils.copyProperties(comments,commentsVo); //将这个对象存放近列表 rows.add(commentsVo); } //将列表结果存放到分页结果对象中 pageResult.setRows(rows); //返回分页结果对象 return pageResult; }
controller层代码
//默认每页显示数据数 private final Integer SIZE=4; @ApiOperation(value = "查询用户留言", notes = "查询用户留言") @PostMapping(value = "/findComments") public LexJSONResult findComments(String videoId,Integer page){ PageResult pageResult = videosService.findComments(videoId, page, SIZE); return LexJSONResult.ok(pageResult); }阅读更多
相关文章推荐
- 基于java的微信小程序的实现(十)用户搜索及热搜词相关功能后端实现
- 基于java的微信小程序的实现(十一)用户关注功能与查询视频发布者功能后端实现
- 微信小程序开发记账应用实战服务端之用户注册与登录基于ThinkPHP5描述
- 从零开发一款APP 二、Java Web后端注册接口的实现
- 【程序功能设计】先写一个在线留言本,实现用户的在线留言功能,留言信息存储到数据库,要求书籍数据表内容以及使用PHP编码完成。
- Java小程序之集合框架模拟数据库实现用户登录和注册功能
- 基于MongoDB数据库的Java程序实现增删改查功能
- 微信小程序Java登录流程(ssm实现具体功能和加解密隐私信息问题解决方案)
- 微信小程序开发之radio实现显示和隐藏功能
- 基于MongoDB数据库的Java程序实现增删改查功能
- [Java]Openfire插件开发心得:基于XMPP实现类Twitter功能
- Java微信开发(通过java程序获取用户个人信息)
- 微信小程序实现留言功能
- 微信公众服务号接口接入,实现开发回复功能,而非后台设置
- java微信开发高级接口----群发功能
- 微信公众账号开发接口实现 - java servlet
- 基于Node.js的微信JS-SDK后端接口实现
- 基于MongoDB数据库的Java程序实现增删改查功能
- 基于MongoDB数据库的Java程序实现增删改查功能
- 基于MongoDB数据库的Java程序实现增删改查功能