基于java的微信小程序的实现(十一)用户关注功能与查询视频发布者功能后端实现
2018-12-01 15:53
1026 查看
版权声明:lex https://blog.csdn.net/qq_36258498/article/details/84674452
2.查询视频发布者信息接口
文章目录
1.关注/取消关注功能实现
1.需求分析
对于用户关注和取消关注的相逻辑和点赞和取消点赞的逻辑都是一致,就不做详细说明了
2.代码实现
dao层
public interface UsersFansDao extends JpaRepository<UsersFans,String>,JpaSpecificationExecutor<UsersFans> { }
service层
/** * 用户关注他人 * @param id * @param fansId */ @Override @Transactional public void follow(String id, String fansId) { //保存用户和粉丝关系表 UsersFans usersFans =new UsersFans(); usersFans.setId(IdUtils.getId()); usersFans.setUserId(id); usersFans.setFanId(fansId); usersFansDao.save(usersFans); //添加该用户的粉丝数 Users one = usersDao.findOne(id); one.setFansCounts(one.getFansCounts()+1); usersDao.save(one); //添加登陆者的关注数 Users daoOne = usersDao.findOne(fansId); daoOne.setFollowCounts(daoOne.getFansCounts()+1); usersDao.save(daoOne); } /** * 取消关注 * @param id * @param fansId */ @Override public void unfollow(String id, String fansId) { List<UsersFans> usersFansList = findByUserIdAndFansId(id, fansId); UsersFans usersFans = usersFansList.get(0); usersFansDao.delete(usersFans.getId()); Users one = usersDao.findOne(id); one.setFansCounts(one.getFansCounts()-1); usersDao.save(one); Users daoOne = usersDao.findOne(fansId); daoOne.setFollowCounts(daoOne.getFansCounts()-1); usersDao.save(daoOne); } /** * 查询用户是否被关注 * @param id * @param fansId * @return */ @Override public Boolean findIsFollowed(String id, String fansId) { List<UsersFans> usersFansList = findByUserIdAndFansId(id, fansId); if (usersFansList.size()==0){ return false; }else { return true; } } /** * 根基用户id个粉丝id精确查询用户和粉丝关系 * @param id * @param fansId * @return */ @Transactional List<UsersFans> findByUserIdAndFansId(final String id, final String fansId){ return usersFansDao.findAll(new Specification<UsersFans>() { @Override public Predicate toPredicate(Root root, CriteriaQuery cq, CriteriaBuilder cb) { Predicate p1 = cb.equal(root.get("userId").as(String.class), id); Predicate p2 = cb.equal(root.get("fanId").as(String.class), fansId); Predicate[] predicate = new Predicate[]{p1, p2}; return cb.and(predicate); } }); }
controller 查看用户是否被登录者关注的逻辑应该放到个人信息查找的逻辑中执行,所以在原来的个人信息查询接口中进行扩展,前端多传入一个参数也就是我们登录者的id命名为fansId,查询个人信息接口中定义一个你默认为false的值,如果fansId不不为空就调用findIsFollowed查看登陆者与该用户是否存在关注的关系,如果有就将定义的值赋值为true,我们需要在返回的userVO中在新添加一个布尔值得followed字段。
@ApiOperation(value = "用户信息查询", notes = "用户信息查询的接口") @PostMapping("/findUserInfo") public LexJSONResult findUserInfo(String id,String fansId){ Boolean followed=false; if (!StringUtils.isEmpty(fansId)){ followed = userService.findIsFollowed(id, fansId); } Users users= userService.findUserInfo(id); UsersVo usersVo=new UsersVo(); BeanUtils.copyProperties(users,usersVo); usersVo.setFollowed(followed); return LexJSONResult.ok(usersVo); }
2.查询视频发布者信息接口
1.需求分析
用户在视频列表首页点击某个视频的时候会调用到该接口,我们需要前端传3个参数,分别为当前登陆者的id,该视频的id,视频发布者的id,根据传入的登陆者id和视频的id去调用之前编写好的查询是否点赞的方法,返回一个布尔值,通过视频发布者的id去查询users表中查询该用户得相关信息,创建一个新的vo类将user实体类和一个布尔值代表该视频是否被点赞封装起来,返回给前端。
2.代码实现
封装的vo包装类
@Data public class PublishVo { private Users users; private Boolean isLike; }
controller代码
@ApiOperation(value = "查询视频发布者信息", notes = "查询视频发布者信息") @PostMapping("/findPublish") public LexJSONResult findPublish(String id,String videoId,String publishId){ //查询视频发布者的信息 Users userInfo = userService.findUserInfo(publishId); userInfo.setPassword(""); //查询该用户是否给该视频点赞 Boolean b = userService.findUserIsLike(id, videoId); PublishVo publishVo =new PublishVo(); publishVo.setUsers(userInfo); publishVo.setIsLike(b); return LexJSONResult.ok(publishVo); }阅读更多
相关文章推荐
- 字符串处理是许多程序中非常重要的一部分,它们可以用于文本显示,数据表示,查找键和很多目的.在Unix下,用户可以使用正则表达式的强健功能实现这些 目的,从Java1.4起,Java核心API就引入了java.util.regex程序包,它是一种有价值的基础
- 基于MongoDB数据库的Java程序实现增删改查功能
- 基于MongoDB数据库的Java程序实现增删改查功能
- 基于MongoDB数据库的Java程序实现增删改查功能
- 基于MongoDB数据库的Java程序实现增删改查功能
- Java小程序之集合框架模拟数据库实现用户登录和注册功能
- 基于MongoDB数据库的Java程序实现增删改查功能
- 基于MongoDB数据库的Java程序实现增删改查功能
- 基于MongoDB数据库的Java程序实现增删改查功能
- 【微信小程序】登录功能实现及讲解(获取用户唯一标识)
- Android实战简易教程<二十四>(基于Baas的用户表查询功能实现!)
- 基于MongoDB数据库的Java程序实现增删改查功能
- Android实战简易教程-第二十四枪(基于Baas的用户表查询功能实现!)
- 基于MongoDB数据库的Java程序实现增删改查功能
- 基于MongoDB数据库的Java程序实现增删改查功能
- 基于MongoDB数据库的Java程序实现增删改查功能
- [Java] 用泛型数组实现基于控制台的航班信息查询|增添程序
- 微信小程序 vidao实现视频播放和弹幕的功能
- 微信小程序 开发之快递查询功能的实现
- 微信小程序基于本地缓存实现点赞功能的方法