package com.ruoyi.app.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.ruoyi.app.domain.*; import com.ruoyi.app.domain.vo.AppFamilyVo; import com.ruoyi.app.domain.vo.AppMemberVo; import com.ruoyi.app.service.*; import com.ruoyi.common.constant.HttpStatus; import com.ruoyi.common.core.page.PageDomain; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.page.TableSupport; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.sql.SqlUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.app.mapper.TbMyPublishMapper; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * 我的近况(发表) * * @author Administrator * @date 2020-10-02 */ @Service public class TbMyPublishServiceImpl extends ServiceImpl implements ITbMyPublishService { @Autowired private ITbMyPublishService publishService; @Autowired private ITbPublishImgService imgService; @Autowired private ITbPublishThumbsService thumbsService; @Autowired private ITbPublishCommentService commentService; @Autowired private ITbAppUserService userService; @Autowired private ITbMyFriendsService friendsService; protected void startPage() { PageDomain pageDomain = TableSupport.buildPageRequest(); Integer pageNum = pageDomain.getPageNum() == null ? 1 : pageDomain.getPageNum(); Integer pageSize = pageDomain.getPageSize() == null ? 10 : pageDomain.getPageSize(); if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)) { String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy()); PageHelper.startPage(pageNum, pageSize, orderBy); } } /** * 响应请求分页数据 */ @SuppressWarnings({ "rawtypes", "unchecked" }) protected TableDataInfo getDataTable(List list) { TableDataInfo rspData = new TableDataInfo(); rspData.setCode(HttpStatus.SUCCESS); rspData.setMsg("查询成功"); rspData.setRows(list); rspData.setTotal(new PageInfo(list).getTotal()); return rspData; } /** * 我的近况列表 * @param tbMyPublish * @return */ @Override public List pageList(TbMyPublish tbMyPublish) { LambdaQueryWrapper lqw = new LambdaQueryWrapper(); if (tbMyPublish.getAppUserId() != null){ lqw.eq(TbMyPublish::getAppUserId ,tbMyPublish.getAppUserId()); } if (StringUtils.isNotBlank(tbMyPublish.getContents())){ lqw.like(TbMyPublish::getContents ,tbMyPublish.getContents()); } if (StringUtils.isNotBlank(tbMyPublish.getMessage())){ lqw.eq(TbMyPublish::getMessage ,tbMyPublish.getMessage()); } if (StringUtils.isNotBlank(tbMyPublish.getDeleted())){ lqw.eq(TbMyPublish::getDeleted ,tbMyPublish.getDeleted()); } if (StringUtils.isNotBlank(tbMyPublish.getBeginTime()) && StringUtils.isNotBlank(tbMyPublish.getEndTime())) { lqw.between(TbMyPublish::getCreateTime, tbMyPublish.getBeginTime(), tbMyPublish.getEndTime()); } startPage(); List list = baseMapper.pageList(lqw); if (list.size() <= 0) { return new ArrayList<>(); } List ids = new ArrayList<>(); list.forEach(item -> { ids.add(item.getId()); }); // 族友圈中放入图片列表 点赞列表 评论列表 List imgList = imgService.list(new LambdaQueryWrapper() .in(TbPublishImg::getPublishId, ids) ); list.forEach(item -> { // 加入图片列表 List imgs = new ArrayList<>(); imgList.forEach(img -> { if (img.getPublishId().equals(item.getId())) { imgs.add(img); } }); item.setImgList(imgs); }); return list; } @Autowired private ITbFamilyService familyService; /** * 我的近况详情(登录人只能看好友和族友的点赞、评论) * @param id * @return */ @Override public TbMyPublish getPublish(Long id, Long appUserId) { TbMyPublish publish = this.getById(id); if (publish != null) { // 只能看好友和族友的点赞、评论 List fids = getMyFrientIds(appUserId); // 图片列表 List publishImgs = imgService.list(new LambdaQueryWrapper() .in(TbPublishImg::getPublishId, id) ); // 点赞列表 List thumbsList = thumbsService.selectList(new LambdaQueryWrapper() .in(TbPublishThumbs::getPublishId, id) .in(fids.size() > 0,TbPublishThumbs::getAppUserId, fids) ); // 评论列表 List commentList = commentService.selectList(new LambdaQueryWrapper() .in(TbPublishComment::getPublishId, id) .in(fids.size() > 0,TbPublishComment::getAppUserId, fids) ); //点赞数 int thumbs = this.getThumbs(id); //评论数 int comments = this.getComments(id); TbAppUser userPublish = userService.getById(publish.getAppUserId()); if (userPublish != null) { publish.setNickName(userPublish.getNickName()); publish.setAvatar(userPublish.getAvatar()); } // 如果是留念人发表 if (publish.getMessageUserId() != null) { TbAppUser user = userService.getById(publish.getMessageUserId()); if (user != null) { publish.setMessageUser(user.getNickName()); publish.setMessageUserAvatar(user.getAvatar()); } } publish.setImgList(publishImgs); publish.setCommentList(commentList); publish.setThumbsList(thumbsList); publish.setThumbs(thumbs); publish.setComments(comments); } return publish; } /** * 会员的所有近况详情 * @param id * @return */ @Override public TbMyPublish getPublish(Long id) { TbMyPublish publish = this.getById(id); if (publish != null) { Long familyId = null; TbFamilyMember member = memberService.getOne(new LambdaQueryWrapper() .eq(TbFamilyMember::getAppUserId,publish.getAppUserId()) .last("limit 1") ); if (member != null) { TbFamily family = familyService.myFamily(member.getId()); if (family != null) { familyId = family.getId(); } } // 图片列表 List publishImgs = imgService.list(new LambdaQueryWrapper() .in(TbPublishImg::getPublishId, id) ); // 点赞列表 List thumbsList = thumbsService.selectList(new LambdaQueryWrapper() .in(TbPublishThumbs::getPublishId, id) ); // 评论列表 List commentList = commentService.selectList(new LambdaQueryWrapper() .in(TbPublishComment::getPublishId, id) ); //点赞数 int thumbs = this.getThumbs(id); //评论数 int comments = this.getComments(id); TbAppUser userPublish = userService.getById(publish.getAppUserId()); if (userPublish != null) { publish.setNickName(userPublish.getNickName()); publish.setAvatar(userPublish.getAvatar()); } // 如果是留念人发表 if (publish.getMessageUserId() != null) { TbAppUser user = userService.getById(publish.getMessageUserId()); if (user != null) { publish.setMessageUser(user.getNickName()); publish.setMessageUserAvatar(user.getAvatar()); } } publish.setImgList(publishImgs); publish.setCommentList(commentList); publish.setThumbsList(thumbsList); publish.setThumbs(thumbs); publish.setComments(comments); } return publish; } @Override public boolean delPublish(List ids){ List publishList = baseMapper.selectList(new LambdaQueryWrapper() .in(TbMyPublish::getId, ids) ); if (publishList.size() > 0) { publishList.forEach(item -> { item.setDeleted("Y"); }); return publishService.updateBatchById(publishList); } return false; } /** * 获取点赞数 * @param publishId 近况id * @return */ @Override public int getThumbs(Long publishId) { int count = thumbsService.count(new LambdaQueryWrapper() .eq(TbPublishThumbs::getPublishId, publishId) ); return count; } /** * 获取评论数 * @param publishId 近况id * @return */ @Override public int getComments(Long publishId) { int count = commentService.count(new LambdaQueryWrapper() .eq(TbPublishComment::getPublishId, publishId) ); return count; } /** * 获取评论 * @param publishId * @return */ @Override public List listComment(Long publishId){ List comments = commentService.list(new LambdaQueryWrapper() .eq(TbPublishComment::getPublishId, publishId) ); if (comments.size() > 0) { List ids = new ArrayList<>(); comments.forEach(item -> { ids.add(item.getAppUserId()); }); List userList = userService.list(new LambdaQueryWrapper() .in(TbAppUser::getId,ids) ); if (userList.size() > 0) { comments.forEach(item -> { userList.forEach(user -> { if (item.getAppUserId().equals(user.getId())) { item.setAppUserUrl(user.getAvatar()); item.setAppUser(user.getNickName()); } }); }); } } return comments; } /** * 删除一条评论 * @param id * @return */ @Override public boolean delComment(Long id) { return commentService.removeById(id); } @Autowired private ITbFamilyMemberService memberService; /** * 族友圈列表 */ @Override public List selectPublish(Long appUserId, Long familyId) { startPage(); List list = baseMapper.selectPublish(appUserId); if (list.size() <= 0) { return new ArrayList<>(); } List ids = new ArrayList<>(); list.forEach(item -> { ids.add(item.getId()); }); // 只能看好友和族友的点赞、评论 List fids = getMyFrientIds(appUserId); // 族友圈中放入图片列表 点赞列表 评论列表 List imgList = imgService.list(new LambdaQueryWrapper() .in(TbPublishImg::getPublishId, ids) ); List thumbsList = thumbsService.selectList(new LambdaQueryWrapper() .in(TbPublishThumbs::getPublishId, ids) .in(fids.size() > 0,TbPublishThumbs::getAppUserId, fids) ); List commentList = commentService.selectList(new LambdaQueryWrapper() .in(TbPublishComment::getPublishId, ids) .in(fids.size() > 0,TbPublishComment::getAppUserId, fids) ); list.forEach(item -> { // 加入图片列表 List imgs = new ArrayList<>(); imgList.forEach(img -> { if (img.getPublishId().equals(item.getId())) { imgs.add(img); } }); item.setImgList(imgs); // 加入点赞列表 List thumbs = new ArrayList<>(); thumbsList.forEach(thumb -> { if (thumb.getPublishId().equals(item.getId())){ thumbs.add(thumb); } }); item.setThumbsList(thumbs); // 加入评论列表 List comments = new ArrayList<>(); commentList.forEach(comment -> { if (comment.getPublishId().equals(item.getId())){ comments.add(comment); } }); item.setCommentList(comments); }); return list; } /** * 获取好友、族友的id * @param appUserId * @return */ @Override public List getMyFrientIds(Long appUserId){ List fids = new ArrayList<>(); // 自己 fids.add(appUserId); if (appUserId != null) { // 好友列表 TbMyFriends tbMyFriends = new TbMyFriends(); tbMyFriends.setAppUserId(appUserId); tbMyFriends.setStatus("2"); List friendsList = friendsService.pageList(tbMyFriends); if (friendsList.size() > 0) { friendsList.forEach(item -> { fids.add(item.getAppUserId()); }); } } List familyIds = new ArrayList<>(); // 获取登录人所在的家族id TbFamilyMember member = memberService.getOne(new LambdaQueryWrapper() .eq(TbFamilyMember::getAppUserId,appUserId) .last("limit 1") ); if (member != null) { List familyVoList = familyService.selectByMemberId(member.getId()); if (familyVoList.size() > 0) { familyVoList.forEach(item -> { familyIds.add(item.getId()); }); // 族友列表 List memberList = memberService.myMemberList(new LambdaQueryWrapper() .in(AppMemberVo::getFamilyId, familyIds) .eq(AppMemberVo::getStatus, "2") ); if (memberList.size() > 0) { memberList.forEach(item -> { fids.add(item.getUserId()); }); } } } return fids; } }