收到点赞收藏关注留言时推送

This commit is contained in:
wangxulei
2025-01-08 16:39:35 +08:00
parent 7c57ee167f
commit 81a7e66988
20 changed files with 1144 additions and 809 deletions

View File

@@ -0,0 +1,268 @@
package com.dd.admin.business.api;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import com.dd.admin.business.author.entity.Author;
import com.dd.admin.business.author.service.AuthorService;
import com.dd.admin.business.chat.service.ChatService;
import com.dd.admin.business.file.service.FileService;
import com.dd.admin.business.follow.domain.FollowDto;
import com.dd.admin.business.follow.entity.Follow;
import com.dd.admin.business.follow.service.FollowService;
import com.dd.admin.business.note.domain.NoteDto;
import com.dd.admin.business.note.entity.Note;
import com.dd.admin.business.note.service.NoteService;
import com.dd.admin.business.noteImg.service.NoteImgService;
import com.dd.admin.business.reply.domain.ReplyDto;
import com.dd.admin.business.reply.domain.ReplyVo;
import com.dd.admin.business.reply.entity.Reply;
import com.dd.admin.business.reply.service.ReplyService;
import com.dd.admin.business.starNotes.entity.StarNotes;
import com.dd.admin.business.starNotes.service.StarNotesService;
import com.dd.admin.business.upNotes.entity.UpNotes;
import com.dd.admin.business.upNotes.service.UpNotesService;
import com.dd.admin.business.upReplys.entity.UpReplys;
import com.dd.admin.business.upReplys.service.UpReplysService;
import com.dd.admin.business.webSocket.MyWebSocketMsgHandler;
import com.dd.admin.business.webSocket.util.TioUtil;
import com.dd.admin.common.aop.operationLog.aop.OperLog;
import com.dd.admin.common.aop.operationLog.aop.OperType;
import com.dd.admin.common.exception.ApiException;
import com.dd.admin.common.model.result.ResultBean;
import com.dd.admin.common.utils.AddressUtils;
import com.dd.admin.common.utils.IPUtils;
import com.dd.admin.common.utils.SpringContextUtils;
import com.dd.admin.common.utils.StringUtil;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Lazy;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import org.tio.websocket.starter.TioWebSocketServerBootstrap;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import static com.dd.admin.common.consts.XhsConst.TRUE;
@ApiModel("用户操作类Api")
@RestController
public class AuthActionApi {
@Autowired
AuthorService authorService;
@Autowired
HttpServletRequest request;
@Autowired
NoteService noteService;
@Value("${server.port}")
String port;
@Autowired
UpNotesService upNotesService;
@Autowired
StarNotesService starNotesService;
@Autowired
FollowService followService;
@Autowired
ReplyService replyService;
@Autowired
UpReplysService upReplysService;
@Autowired
private TioWebSocketServerBootstrap bootstrap;
@ApiOperation(value = "关注博主")
@ApiOperationSupport(order = 1)
@PostMapping("/api/auth/followAuthor")
@OperLog(operModule = "关注博主",operType = OperType.ADD,operDesc = "关注博主")
public ResultBean followAuthor(@RequestBody FollowDto followDto) {
String followId = String.valueOf(request.getAttribute("authorId"));
Author follow = authorService.getById(followId);
//查看在不在点赞列表
Follow oneByFollow= followService.selectOneByFollowId(followDto.getAuthorId(), followId);
//不在证明是点赞
if(oneByFollow==null){
String authorId = followDto.getAuthorId();
Author author = authorService.getById(authorId);
oneByFollow = new Follow();
oneByFollow.setAuthorId(author.getAuthorId());
oneByFollow.setAuthorName(author.getAuthorName());
oneByFollow.setFollowId(follow.getAuthorId());
oneByFollow.setFollowName(follow.getAuthorName());
followService.save(oneByFollow);
TioUtil.sendChatMessageToUser( bootstrap.getServerGroupContext(),author.getAuthorId(),"4",oneByFollow);
}else{
throw new ApiException("已经关注过了~");
}
return ResultBean.success();
};
@ApiOperation(value = "取消关注博主")
@ApiOperationSupport(order = 1)
@PostMapping("/api/auth/cancelfollowAuthor")
@OperLog(operModule = "取消关注博主",operType = OperType.ADD,operDesc = "取消关注博主")
public ResultBean cancelfollowAuthor(@RequestBody FollowDto followDto) {
String followId = String.valueOf(request.getAttribute("authorId"));
Author follow = authorService.getById(followId);
//查看在不在关注列表
Follow oneByFollow= followService.selectOneByFollowId(followDto.getAuthorId(), followId);
//不为空证明关注过
if(oneByFollow!=null){
String authorId = followDto.getAuthorId();
Author author = authorService.getById(authorId);
oneByFollow.setAuthorId(author.getAuthorId());
oneByFollow.setAuthorName(author.getAuthorName());
oneByFollow.setFollowId(follow.getAuthorId());
oneByFollow.setFollowName(follow.getAuthorName());
followService.removeById(oneByFollow);
}else{
throw new ApiException("你还未关注博主~");
}
return ResultBean.success();
};
@ApiOperation(value = "点赞笔记")
@ApiOperationSupport(order = 1)
@PostMapping("/api/auth/upNote")
@OperLog(operModule = "点赞笔记",operType = OperType.ADD,operDesc = "点赞笔记")
public ResultBean upNote(@RequestBody NoteDto noteDto) {
String followId = String.valueOf(request.getAttribute("authorId"));
Author follow = authorService.getById(followId);
Boolean isUp = Boolean.FALSE;
//查看在不在点赞列表
UpNotes upNotes = upNotesService.selectOneByFollowId(noteDto.getNoteId(), followId);
//不在证明是点赞
if(upNotes==null){
upNotes = new UpNotes();
upNotes.setAuthorId(noteDto.getAuthorId());
upNotes.setAuthorName(noteDto.getAuthorName());
upNotes.setFollowId(follow.getAuthorId());
upNotes.setFollowName(follow.getAuthorName());
upNotes.setNoteId(noteDto.getNoteId());
upNotes.setNoteTitle(noteDto.getNoteTitle());
isUp = Boolean.TRUE;
upNotesService.save(upNotes);
//发送点赞信息
TioUtil.sendChatMessageToUser( bootstrap.getServerGroupContext(),noteDto.getAuthorId(),"1",upNotes);
}else{
//在则表示取消赞删除数据
upNotesService.removeById(upNotes);
}
return ResultBean.success(isUp);
};
@ApiOperation(value = "收藏笔记")
@ApiOperationSupport(order = 1)
@PostMapping("/api/auth/starNote")
@OperLog(operModule = "收藏笔记",operType = OperType.ADD,operDesc = "收藏笔记")
public ResultBean starNote(@RequestBody NoteDto noteDto) {
String followId = String.valueOf(request.getAttribute("authorId"));
Author follow = authorService.getById(followId);
Boolean isStar = Boolean.FALSE;
//查看在不在点赞列表
StarNotes starNotes = starNotesService.selectOneByFollowId(noteDto.getNoteId(), followId);
//不在证明是点赞
if(starNotes==null){
starNotes = new StarNotes();
starNotes.setAuthorId(noteDto.getAuthorId());
starNotes.setAuthorName(noteDto.getAuthorName());
starNotes.setFollowId(follow.getAuthorId());
starNotes.setFollowName(follow.getAuthorName());
starNotes.setNoteId(noteDto.getNoteId());
starNotes.setNoteTitle(noteDto.getNoteTitle());
isStar = Boolean.TRUE;
starNotesService.save(starNotes);
//发送点赞信息
TioUtil.sendChatMessageToUser( bootstrap.getServerGroupContext(),noteDto.getAuthorId(),"2",starNotes);
}else{
//在则表示取消赞删除数据
starNotesService.removeById(starNotes);
}
return ResultBean.success(isStar);
};
@ApiOperation(value = "点赞评论")
@ApiOperationSupport(order = 1)
@PostMapping("/api/auth/upReply")
@OperLog(operModule = "点赞评论",operType = OperType.ADD,operDesc = "点赞评论")
public ResultBean upReply(@RequestBody ReplyDto replyDto) {
String followId = String.valueOf(request.getAttribute("authorId"));
Author follow = authorService.getById(followId);
Boolean isUp = Boolean.FALSE;
//查看在不在点赞列表
UpReplys upReplys = upReplysService.selectOneByFollowId(replyDto.getReplyId(), followId);
//不在证明是点赞
if(upReplys==null){
upReplys = new UpReplys();
upReplys.setAuthorId(replyDto.getAuthorId());
upReplys.setAuthorName(replyDto.getAuthorName());
upReplys.setFollowId(follow.getAuthorId());
upReplys.setFollowName(follow.getAuthorName());
upReplys.setReplyId(replyDto.getReplyId());
upReplys.setReplyContent(replyDto.getReplayContent());
isUp = Boolean.TRUE;
upReplysService.save(upReplys);
}else{
//在则表示取消赞删除数据
upReplysService.removeById(upReplys);
}
return ResultBean.success(isUp);
};
@ApiOperation(value = "回复笔记")
@ApiOperationSupport(order = 1)
@PostMapping("/api/auth/replyNote")
@OperLog(operModule = "回复笔记",operType = OperType.ADD,operDesc = "回复笔记")
public ResultBean replyNote(@RequestBody ReplyDto replyDto) {
String authorId = String.valueOf(request.getAttribute("authorId"));
Author author = authorService.getById(authorId);
Note note = noteService.getById(replyDto.getNoteId());
if (authorId.equals(note.getAuthorId())) {
replyDto.setAuthorReplay(TRUE);
}
//如果上级pid不为空 设置 上级作者名和id
if(StringUtil.isNotEmpty(replyDto.getParentId())){
Reply parentReply = replyService.getById(replyDto.getParentId());
replyDto.setParentAuthorName(parentReply.getAuthorName());
replyDto.setParentAuthorId(parentReply.getAuthorId());
//如果top不为空 设置第二级回复的 上级作者名和id
}else if(StringUtil.isNotEmpty(replyDto.getTopParentId())){
Reply parentReply = replyService.getById(replyDto.getTopParentId());
replyDto.setParentAuthorName(parentReply.getAuthorName());
replyDto.setParentAuthorId(parentReply.getAuthorId());
//如果评论没有上级id和顶级id则回复的是笔记的作者
}else if(StringUtil.isEmpty(replyDto.getParentId())&&StringUtil.isEmpty(replyDto.getTopParentId())){
replyDto.setParentAuthorName(note.getAuthorName());
replyDto.setParentAuthorId(note.getAuthorId());
}
List<ReplyVo> replyList = replyService.selectReplyList(new ReplyDto().setNoteId(replyDto.getNoteId()));
if (CollectionUtil.isEmpty(replyList)) {
replyDto.setFirstReplay(TRUE);
}
replyDto.setNoteId(note.getNoteId());
replyDto.setNoteTitle(note.getNoteTitle());
replyDto.setAuthorId(authorId);
replyDto.setAuthorName(author.getAuthorName());
replyDto.setAvatarUrl(author.getAvatarUrl());
replyDto.setIpAddress(IPUtils.getIpAddr(request)); // 请求IP
replyDto.setIpRealAddress(AddressUtils.getRealAddress(replyDto.getIpAddress()));
Reply reply = BeanUtil.copyProperties(replyDto, Reply.class);
replyService.save(reply);
TioUtil.sendChatMessageToUser( bootstrap.getServerGroupContext(),reply.getParentAuthorId(),"3",reply);
return ResultBean.success();
}
}

View File

@@ -1,806 +0,0 @@
package com.dd.admin.business.api;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.dd.admin.business.author.entity.Author;
import com.dd.admin.business.author.service.AuthorService;
import com.dd.admin.business.chat.domain.ChatDto;
import com.dd.admin.business.chat.domain.ChatVo;
import com.dd.admin.business.chat.entity.Chat;
import com.dd.admin.business.chat.service.ChatService;
import com.dd.admin.business.file.entity.File;
import com.dd.admin.business.file.service.FileService;
import com.dd.admin.business.follow.domain.FollowDto;
import com.dd.admin.business.follow.domain.FollowVo;
import com.dd.admin.business.follow.entity.Follow;
import com.dd.admin.business.follow.service.FollowService;
import com.dd.admin.business.note.domain.NoteDto;
import com.dd.admin.business.note.domain.NoteVo;
import com.dd.admin.business.note.domain.ReplayMeVo;
import com.dd.admin.business.note.domain.UpMeVo;
import com.dd.admin.business.note.entity.Note;
import com.dd.admin.business.note.service.NoteService;
import com.dd.admin.business.noteImg.entity.NoteImg;
import com.dd.admin.business.noteImg.service.NoteImgService;
import com.dd.admin.business.reply.domain.ReplyDto;
import com.dd.admin.business.reply.domain.ReplyVo;
import com.dd.admin.business.reply.entity.Reply;
import com.dd.admin.business.reply.service.ReplyService;
import com.dd.admin.business.starNotes.domain.StarNotesDto;
import com.dd.admin.business.starNotes.domain.StarNotesVo;
import com.dd.admin.business.starNotes.entity.StarNotes;
import com.dd.admin.business.starNotes.service.StarNotesService;
import com.dd.admin.business.upNotes.domain.UpNotesDto;
import com.dd.admin.business.upNotes.domain.UpNotesVo;
import com.dd.admin.business.upNotes.entity.UpNotes;
import com.dd.admin.business.upNotes.service.UpNotesService;
import com.dd.admin.business.upReplys.entity.UpReplys;
import com.dd.admin.business.upReplys.service.UpReplysService;
import com.dd.admin.common.aop.operationLog.aop.OperLog;
import com.dd.admin.common.aop.operationLog.aop.OperType;
import com.dd.admin.common.exception.ApiException;
import com.dd.admin.common.model.result.ResultBean;
import com.dd.admin.common.utils.AddressUtils;
import com.dd.admin.common.utils.CommonUtil;
import com.dd.admin.common.utils.IPUtils;
import com.dd.admin.common.utils.StringUtil;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.validation.constraints.NotBlank;
import java.util.*;
import java.util.stream.Collectors;
import static com.dd.admin.common.consts.XhsConst.TRUE;
@RestController
public class AuthApi {
@Autowired
AuthorService authorService;
@Autowired
HttpServletRequest request;
@Autowired
NoteService noteService;
@Autowired
FileService fileService;
@Autowired
NoteImgService noteImgService;
@Value("${server.port}")
String port;
@Autowired
UpNotesService upNotesService;
@Autowired
StarNotesService starNotesService;
@Autowired
FollowService followService;
@Autowired
ReplyService replyService;
@Autowired
UpReplysService upReplysService;
@Autowired
ChatService chatService;
@ApiOperation(value = "获取所有笔记")
@ApiOperationSupport(order = 1)
@GetMapping("/api/auth/notes")
@OperLog(operModule = "获取所有笔记",operType = OperType.QUERY,operDesc = "获取所有笔记")
public ResultBean<IPage<NoteVo>> page(NoteDto noteDto) {
String followId = String.valueOf(request.getAttribute("authorId"));
noteDto.setFollowId(followId);
IPage<NoteVo> pageInfo = noteService.selectNotePage(noteDto);
return ResultBean.success(pageInfo);
}
@ApiOperation(value = "获取所有关注笔记")
@ApiOperationSupport(order = 1)
@GetMapping("/api/auth/getFollowNotes")
@OperLog(operModule = "获取所有关注笔记",operType = OperType.QUERY,operDesc = "获取所有关注笔记")
public ResultBean<IPage<NoteVo>> getFollowNotes() {
String followId = String.valueOf(request.getAttribute("authorId"));
NoteDto noteDto = new NoteDto();
noteDto.setFollowId(followId);
List<Follow> follows = followService.selectFollowListByFollowId(followId);
IPage<NoteVo> pageInfo = new IPage<NoteVo>() {
@Override
public List<OrderItem> orders() {
return null;
}
@Override
public List<NoteVo> getRecords() {
return null;
}
@Override
public IPage<NoteVo> setRecords(List<NoteVo> records) {
return null;
}
@Override
public long getTotal() {
return 0;
}
@Override
public IPage<NoteVo> setTotal(long total) {
return null;
}
@Override
public long getSize() {
return 0;
}
@Override
public IPage<NoteVo> setSize(long size) {
return null;
}
@Override
public long getCurrent() {
return 0;
}
@Override
public IPage<NoteVo> setCurrent(long current) {
return null;
}
};
if(CollectionUtil.isNotEmpty(follows)){
String authorIds = CommonUtil.getIds(follows, "authorId");
noteDto.setAuthorIds(authorIds);
pageInfo = noteService.selectNotePage(noteDto);
}
return ResultBean.success(pageInfo);
}
@ApiOperation(value = "获取所有点赞笔记")
@ApiOperationSupport(order = 1)
@GetMapping("/api/auth/getUpNotes")
@OperLog(operModule = "获取所有点赞笔记",operType = OperType.QUERY,operDesc = "获取所有点赞笔记")
public ResultBean<IPage<NoteVo>> getUpNotes() {
String followId = String.valueOf(request.getAttribute("authorId"));
NoteDto noteDto = new NoteDto();
noteDto.setFollowId(followId);
noteDto.setMyUpById(followId);
IPage<NoteVo> pageInfo = noteService.selectNotePage(noteDto);
return ResultBean.success(pageInfo);
}
@ApiOperation(value = "获取所有收藏笔记")
@ApiOperationSupport(order = 1)
@GetMapping("/api/auth/getStarNotes")
@OperLog(operModule = "获取所有收藏笔记",operType = OperType.QUERY,operDesc = "获取所有收藏笔记")
public ResultBean<IPage<NoteVo>> getStarNotes() {
String followId = String.valueOf(request.getAttribute("authorId"));
NoteDto noteDto = new NoteDto();
noteDto.setFollowId(followId);
noteDto.setMyStarById(followId);
IPage<NoteVo> pageInfo = noteService.selectNotePage(noteDto);
return ResultBean.success(pageInfo);
}
@ApiOperation(value = "获取博主信息")
@ApiOperationSupport(order = 1)
@GetMapping("/api/auth/getMine")
@OperLog(operModule = "获取当前博主信息",operType = OperType.QUERY,operDesc = "获取当前博主信息")
public ResultBean<Author> getMine() {
String authorId = String.valueOf(request.getAttribute("authorId"));
Author author = authorService.getById(authorId);
if(author.getBirth()!=null){
author.setAge(DateUtil.ageOfNow(author.getBirth()));
}
//关注我的列表
List<FollowVo> followMes = followService.selectFollowList(new FollowDto().setAuthorId(author.getAuthorId()));
List<FollowVo> myFollows = followService.selectFollowList(new FollowDto().setFollowId(author.getAuthorId()));
author.setFollow(Long.valueOf(myFollows.size()));
author.setFans(Long.valueOf(followMes.size()));
Long upAndStarTotalCount = authorService.selectAuthorUpAndStarTotalCount(authorId);
author.setUpAndStarCount(upAndStarTotalCount);
return ResultBean.success(author);
}
@ApiOperation(value = "修改我的信息")
@ApiOperationSupport(order = 1)
@PostMapping("/api/auth/updateMine")
@OperLog(operModule = "修改我的信息",operType = OperType.EDIT,operDesc = "修改我的信息")
public ResultBean<Author> updateAuthorBackGround(@RequestBody Author author) {
authorService.updateById(author);
return ResultBean.success(author);
};
@ApiOperation(value = "获取关注目标作者的所有粉丝")
@ApiOperationSupport(order = 1)
@GetMapping("/api/auth/getFollowMes")
@OperLog(operModule = "获取关注目标作者的所有粉丝",operType = OperType.QUERY,operDesc = "获取 关注目标作者的所有粉丝")
public ResultBean getFollowMes(String authorId) {
String myId = String.valueOf(request.getAttribute("authorId"));
//关注我的列表
List<FollowVo> followMes = followService.selectFollowMeList(authorId,myId);
return ResultBean.success(followMes);
}
@ApiOperation(value = "获取关注目标作者的关注的所有博主")
@ApiOperationSupport(order = 1)
@GetMapping("/api/auth/getMyFollows")
@OperLog(operModule = "getMyFollows",operType = OperType.QUERY,operDesc = "获取关注目标作者的所有粉丝")
public ResultBean getMyFollows(String authorId) {
String myId = String.valueOf(request.getAttribute("authorId"));
//关注我的列表
List<FollowVo> myFollows = followService.selectMyFollowList(authorId,myId);
return ResultBean.success(myFollows);
}
@ApiOperation(value = "获取关注目标互相关注的人")
@ApiOperationSupport(order = 1)
@GetMapping("/api/auth/getMyFriends")
@OperLog(operModule = "getMyFriends",operType = OperType.QUERY,operDesc = "获取关注目标互相关注的人")
public ResultBean getMyFriends(String authorId) {
//关注我的列表
List<FollowVo> myFollows = followService.getMyFriends(authorId);
myFollows.stream().forEach(followVo -> {
followVo.setIsFollow(Boolean.TRUE);
followVo.setIsFollowMe(Boolean.TRUE);
});
return ResultBean.success(myFollows);
}
@ApiOperation(value = "获取作者信息")
@ApiOperationSupport(order = 1)
@GetMapping("/api/auth/getAuthor")
@OperLog(operModule = "获取作者信息",operType = OperType.QUERY,operDesc = "获取作者信息")
public ResultBean<Author> getAuthor(String authorId) {
String followId = String.valueOf(request.getAttribute("authorId"));
Author author = authorService.getById(authorId);
//我是否关注过
Follow isFollow= followService.selectOneByFollowId(authorId, followId);
if(isFollow!=null){
author.setIsFollow(Boolean.TRUE);
}
//是否关注过我
Follow isFollowMe= followService.selectOneByFollowId(followId, authorId);
if(isFollowMe!=null){
author.setIsFollowMe(Boolean.TRUE);
}
//关注我的列表
List<FollowVo> followMes = followService.selectFollowList(new FollowDto().setAuthorId(author.getAuthorId()));
List<FollowVo> myFollows = followService.selectFollowList(new FollowDto().setFollowId(author.getAuthorId()));
author.setFollow(Long.valueOf(myFollows.size()));
author.setFans(Long.valueOf(followMes.size()));
author.setFollowMes(followMes);
author.setMyFollows(myFollows);
Long upAndStarTotalCount = authorService.selectAuthorUpAndStarTotalCount(authorId);
author.setUpAndStarCount(upAndStarTotalCount);
return ResultBean.success(author);
}
@ApiOperation(value = "修改头像")
@ApiOperationSupport(order = 1)
@PostMapping("/api/auth/updateAuthorAvatar")
@OperLog(operModule = "修改头像",operType = OperType.EDIT,operDesc = "修改头像")
public ResultBean<Author> updateAuthorAvatar(String fileId) {
String followId = String.valueOf(request.getAttribute("authorId"));
Author author = authorService.getById(followId);
author.setAuthorId(followId);
author.setAvatarId(fileId);
File file = fileService.selectFileByFileId(fileId);
String serverName = request.getServerName();
author.setAvatarUrl("http://" + serverName + ":" + port + file.getFilePath());
authorService.updateById(author);
return ResultBean.success(author);
};
@ApiOperation(value = "修改背景图")
@ApiOperationSupport(order = 1)
@PostMapping("/api/auth/updateAuthorBackGround")
@OperLog(operModule = "修改背景图",operType = OperType.EDIT,operDesc = "修改背景图")
public ResultBean<Author> updateAuthorBackGround(String fileId) {
String followId = String.valueOf(request.getAttribute("authorId"));
Author author = authorService.getById(followId);
author.setAuthorId(followId);
author.setBackGroundId(fileId);
File file = fileService.selectFileByFileId(fileId);
String serverName = request.getServerName();
author.setBackGroundUrl("http://" + serverName + ":" + port + file.getFilePath());
authorService.updateById(author);
return ResultBean.success(author);
};
@ApiOperation(value = "获取目标博主笔记")
@ApiOperationSupport(order = 1)
@GetMapping("/api/auth/getAuthorNotes")
@OperLog(operModule = "获取目标博主笔记",operType = OperType.QUERY,operDesc = "获取目标博主笔记")
public ResultBean<IPage<NoteVo>> getAuthorNotes(String authorId) {
String followId = String.valueOf(request.getAttribute("authorId"));
NoteDto noteDto = new NoteDto();
noteDto.setFollowId(followId);
noteDto.setAuthorId(authorId);
IPage<NoteVo> pageInfo = noteService.selectNotePage(noteDto);
return ResultBean.success(pageInfo);
}
@ApiOperation(value = "获取当前博主笔记")
@ApiOperationSupport(order = 1)
@GetMapping("/api/auth/getMineNotes")
@OperLog(operModule = "获取当前博主笔记",operType = OperType.QUERY,operDesc = "获取当前博主笔记")
public ResultBean<IPage<NoteVo>> getMineNotes() {
String authorId = String.valueOf(request.getAttribute("authorId"));
NoteDto noteDto = new NoteDto();
noteDto.setFollowId(authorId);
noteDto.setAuthorId(authorId);
IPage<NoteVo> pageInfo = noteService.selectNotePage(noteDto);
return ResultBean.success(pageInfo);
}
@ApiOperation(value = "关注博主")
@ApiOperationSupport(order = 1)
@PostMapping("/api/auth/followAuthor")
@OperLog(operModule = "关注博主",operType = OperType.ADD,operDesc = "关注博主")
public ResultBean followAuthor(@RequestBody FollowDto followDto) {
String followId = String.valueOf(request.getAttribute("authorId"));
Author follow = authorService.getById(followId);
//查看在不在点赞列表
Follow oneByFollow= followService.selectOneByFollowId(followDto.getAuthorId(), followId);
//不在证明是点赞
if(oneByFollow==null){
String authorId = followDto.getAuthorId();
Author author = authorService.getById(authorId);
oneByFollow = new Follow();
oneByFollow.setAuthorId(author.getAuthorId());
oneByFollow.setAuthorName(author.getAuthorName());
oneByFollow.setFollowId(follow.getAuthorId());
oneByFollow.setFollowName(follow.getAuthorName());
followService.save(oneByFollow);
}else{
throw new ApiException("已经关注过了~");
}
return ResultBean.success();
};
@ApiOperation(value = "取消关注博主")
@ApiOperationSupport(order = 1)
@PostMapping("/api/auth/cancelfollowAuthor")
@OperLog(operModule = "取消关注博主",operType = OperType.ADD,operDesc = "取消关注博主")
public ResultBean cancelfollowAuthor(@RequestBody FollowDto followDto) {
String followId = String.valueOf(request.getAttribute("authorId"));
Author follow = authorService.getById(followId);
//查看在不在关注列表
Follow oneByFollow= followService.selectOneByFollowId(followDto.getAuthorId(), followId);
//不为空证明关注过
if(oneByFollow!=null){
String authorId = followDto.getAuthorId();
Author author = authorService.getById(authorId);
oneByFollow.setAuthorId(author.getAuthorId());
oneByFollow.setAuthorName(author.getAuthorName());
oneByFollow.setFollowId(follow.getAuthorId());
oneByFollow.setFollowName(follow.getAuthorName());
followService.removeById(oneByFollow);
}else{
throw new ApiException("你还未关注博主~");
}
return ResultBean.success();
};
@ApiOperation(value = "点赞笔记")
@ApiOperationSupport(order = 1)
@PostMapping("/api/auth/upNote")
@OperLog(operModule = "点赞笔记",operType = OperType.ADD,operDesc = "点赞笔记")
public ResultBean upNote(@RequestBody NoteDto noteDto) {
String followId = String.valueOf(request.getAttribute("authorId"));
Author follow = authorService.getById(followId);
Boolean isUp = Boolean.FALSE;
//查看在不在点赞列表
UpNotes upNotes = upNotesService.selectOneByFollowId(noteDto.getNoteId(), followId);
//不在证明是点赞
if(upNotes==null){
upNotes = new UpNotes();
upNotes.setAuthorId(noteDto.getAuthorId());
upNotes.setAuthorName(noteDto.getAuthorName());
upNotes.setFollowId(follow.getAuthorId());
upNotes.setFollowName(follow.getAuthorName());
upNotes.setNoteId(noteDto.getNoteId());
upNotes.setNoteTitle(noteDto.getNoteTitle());
isUp = Boolean.TRUE;
upNotesService.save(upNotes);
}else{
//在则表示取消赞删除数据
upNotesService.removeById(upNotes);
}
return ResultBean.success(isUp);
};
@ApiOperation(value = "收藏笔记")
@ApiOperationSupport(order = 1)
@PostMapping("/api/auth/starNote")
@OperLog(operModule = "收藏笔记",operType = OperType.ADD,operDesc = "收藏笔记")
public ResultBean starNote(@RequestBody NoteDto noteDto) {
String followId = String.valueOf(request.getAttribute("authorId"));
Author follow = authorService.getById(followId);
Boolean isStar = Boolean.FALSE;
//查看在不在点赞列表
StarNotes starNotes = starNotesService.selectOneByFollowId(noteDto.getNoteId(), followId);
//不在证明是点赞
if(starNotes==null){
starNotes = new StarNotes();
starNotes.setAuthorId(noteDto.getAuthorId());
starNotes.setAuthorName(noteDto.getAuthorName());
starNotes.setFollowId(follow.getAuthorId());
starNotes.setFollowName(follow.getAuthorName());
starNotes.setNoteId(noteDto.getNoteId());
starNotes.setNoteTitle(noteDto.getNoteTitle());
isStar = Boolean.TRUE;
starNotesService.save(starNotes);
}else{
//在则表示取消赞删除数据
starNotesService.removeById(starNotes);
}
return ResultBean.success(isStar);
};
@ApiOperation(value = "创建笔记")
@ApiOperationSupport(order = 1)
@PostMapping("/api/auth/addNote")
@OperLog(operModule = "创建笔记",operType = OperType.ADD,operDesc = "创建笔记")
public ResultBean addNote(@RequestBody NoteDto noteDto) {
String authorId = String.valueOf(request.getAttribute("authorId"));
Author author = authorService.getById(authorId);
Note note = BeanUtil.copyProperties(noteDto, Note.class);
note.setAuthorId(author.getAuthorId());
note.setAuthorName(author.getAuthorName());
note.setAuthorAvatar(author.getAvatarUrl());
note.setIpAddress(IPUtils.getIpAddr(request)); // 请求IP
note.setIpRealAddress(AddressUtils.getRealAddress(note.getIpAddress()));
noteService.save(note);
List<String> imgs = noteDto.getImgs();
List<NoteImg> noteImgList = new ArrayList<>();
for(int i=0;i<imgs.size();i++){
NoteImg noteImg = new NoteImg();
noteImg.setAuthorId(authorId);
noteImg.setNoteId(note.getNoteId());
noteImg.setImgSort(i);
File file = fileService.selectFileByFileId(imgs.get(i));
String serverName = request.getServerName();
System.out.println(serverName);
noteImg.setImgUrl("http://" + serverName + ":" + port + file.getFilePath());
noteImgList.add(noteImg);
}
noteImgService.saveBatch(noteImgList);
Note updateNote = noteService.getById(note.getNoteId());
updateNote.setFirstPicture(noteImgList.get(0).getImgUrl());
noteService.updateById(updateNote);
return ResultBean.success();
}
@ApiOperation(value = "修改笔记")
@ApiOperationSupport(order = 1)
@PostMapping("/api/auth/updateNote")
@OperLog(operModule = "修改笔记",operType = OperType.ADD,operDesc = "修改笔记")
@Transactional
public ResultBean updateNote(@RequestBody NoteDto noteDto) {
String authorId = String.valueOf(request.getAttribute("authorId"));
Author author = authorService.getById(authorId);
Note note = BeanUtil.copyProperties(noteDto, Note.class);
note.setAuthorId(author.getAuthorId());
note.setAuthorName(author.getAuthorName());
note.setAuthorAvatar(author.getAvatarUrl());
note.setIpAddress(IPUtils.getIpAddr(request)); // 请求IP
note.setIpRealAddress(AddressUtils.getRealAddress(note.getIpAddress()));
noteService.updateById(note);
List<String> imgs = noteDto.getImgs();
List<NoteImg> noteImgList = new ArrayList<>();
for(int i=0;i<imgs.size();i++){
NoteImg noteImg = new NoteImg();
noteImg.setAuthorId(authorId);
noteImg.setNoteId(note.getNoteId());
noteImg.setImgSort(i);
File file = fileService.selectFileByFileId(imgs.get(i));
String serverName = request.getServerName();
System.out.println(serverName);
noteImg.setImgUrl("http://" + serverName + ":" + port + file.getFilePath());
noteImgList.add(noteImg);
}
noteImgService.deleteNoteImgByNoteId(note.getNoteId());
noteImgService.saveBatch(noteImgList);
Note updateNote = noteService.getById(note.getNoteId());
updateNote.setFirstPicture(noteImgList.get(0).getImgUrl());
noteService.updateById(updateNote);
return ResultBean.success();
}
@ApiOperation(value = "删除笔记")
@ApiOperationSupport(order = 1)
@PostMapping("/api/auth/deleteNote")
@OperLog(operModule = "删除笔记",operType = OperType.ADD,operDesc = "删除笔记")
@Transactional
public ResultBean deleteNote(@RequestBody NoteDto noteDto) {
String noteId = noteDto.getNoteId();
noteService.removeById(noteId);
return ResultBean.success();
}
//外层倒叙 回复正序
@ApiOperation(value = "获取笔记评论")
@ApiOperationSupport(order = 1)
@GetMapping("/api/auth/getNoteReply")
@OperLog(operModule = "获取笔记评论",operType = OperType.QUERY,operDesc = "获取笔记评论")
public ResultBean<Map> getNoteReply( ReplyDto replyDto) {
String fellowId = String.valueOf(request.getAttribute("authorId"));
String noteId = replyDto.getNoteId();
List<ReplyVo> replyList = replyService.selectReplyList(new ReplyDto().setNoteId(noteId).setFollowId(fellowId));
Integer totalCount = replyList.size();
// 先构建一个以回复ID为键回复对象为值的Map方便后续快速查找回复对象
// 构建以replyId为键ReplyVo对象为值的Map方便后续快速查找回复对象
Map<String, ReplyVo> replyMap = replyList.stream()
.collect(Collectors.toMap(ReplyVo::getReplyId, reply -> reply));
List<ReplyVo> secondLevelReplies = replyList
.stream()
.filter(reply ->
(StringUtil.isNotEmpty(reply.getParentId())||StringUtil.isNotEmpty(reply.getTopParentId()))
).sorted(Comparator.comparing(ReplyVo::getCreateTime)).collect(Collectors.toList());
secondLevelReplies.forEach(replyVo -> {
if(StringUtil.isNotEmpty(replyVo.getParentId())){
replyVo.setParentAuthorId(replyMap.get(replyVo.getParentId()).getAuthorId());
replyVo.setParentAuthorName(replyMap.get(replyVo.getParentId()).getAuthorName());
}
});
// 获取第一层回复topId为空且parentId也为空
List<ReplyVo> firstLevelReplies = replyList.stream()
.filter(reply -> reply.getTopParentId() == null && reply.getParentId() == null)
.collect(Collectors.toList());
// 将第二层回复添加到对应的第一层回复下通过topId与replyId关联
firstLevelReplies.forEach(firstLevelReply -> {
String firstLevelReplyId = firstLevelReply.getReplyId();
List<ReplyVo> relatedSecondLevelReplies = secondLevelReplies.stream()
.filter(secondLevelReply -> firstLevelReplyId.equals(secondLevelReply.getTopParentId()))
.collect(Collectors.toList());
if (firstLevelReply.getReply() == null) {
firstLevelReply.setReply(new ArrayList<>());
}
firstLevelReply.getReply().addAll(relatedSecondLevelReplies);
});
Map map = new HashMap();
map.put("totalCount",totalCount);
map.put("replys",firstLevelReplies);
return ResultBean.success(map);
}
// // 先按照parentId进行分组用于后续查找子回复
// Map<String, List<ReplyVo>> groupedByParentId = replyList.stream()
// .filter(reply -> reply.getParentId()!= null &&!reply.getParentId().isEmpty())
// .collect(Collectors.groupingBy(ReplyVo::getParentId));
//
// // 处理每一个顶级回复parentId为null的回复递归构建树形结构
// List<ReplyVo> resultList = replyList.stream()
// .filter(reply -> reply.getParentId() == null || reply.getParentId().isEmpty())
// .peek(parentReply -> {
// // 递归设置子回复列表
// setChildrenReplies(parentReply, groupedByParentId);
// })
// .collect(Collectors.toList());
// // 第一步将回复列表按照parentId进行分组key是parentIdvalue是对应的回复列表
// Map<String, List<ReplyVo>> groupedByParentId = replyList.stream()
// .filter(reply -> reply.getParentId()!= null &&!reply.getParentId().isEmpty())
// .collect(Collectors.groupingBy(ReplyVo::getParentId));
//
// // 第二步创建一个新的列表用于存放最终处理后的回复列表先将没有parentId的元素添加进去
// List<ReplyVo> resultList = replyList.stream()
// .filter(reply -> reply.getParentId() == null || reply.getParentId().isEmpty())
// .collect(Collectors.toList());
//
// // 第三步遍历没有parentId的元素将其对应的子回复列表通过parentId从分组中获取设置到Reply属性下
// resultList.forEach(parentReply -> {
// String parentId = parentReply.getReplyId();
// List<ReplyVo> childrenReplies = groupedByParentId.getOrDefault(parentId, new ArrayList<>());
// parentReply.setReply(childrenReplies);
// });
//不再无限极调用 因为前端页面我不会写。。。 采用和官方一样的@形式
private static void setChildrenReplies(ReplyVo parentReply, Map<String, List<ReplyVo>> groupedByParentId) {
String parentId = parentReply.getReplyId();
List<ReplyVo> childrenReplies = groupedByParentId.getOrDefault(parentId, new ArrayList<>());
// 遍历当前层级的子回复,递归设置它们的子回复
childrenReplies.forEach(childReply -> {
setChildrenReplies(childReply, groupedByParentId);
});
parentReply.setReply(childrenReplies);
}
@ApiOperation(value = "回复笔记")
@ApiOperationSupport(order = 1)
@PostMapping("/api/auth/replyNote")
@OperLog(operModule = "回复笔记",operType = OperType.ADD,operDesc = "回复笔记")
public ResultBean replyNote(@RequestBody ReplyDto replyDto) {
String authorId = String.valueOf(request.getAttribute("authorId"));
Author author = authorService.getById(authorId);
Note note = noteService.getById(replyDto.getNoteId());
if (authorId.equals(note.getAuthorId())) {
replyDto.setAuthorReplay(TRUE);
}
//如果上级pid不为空 设置 上级作者名和id
if(StringUtil.isNotEmpty(replyDto.getParentId())){
Reply parentReply = replyService.getById(replyDto.getParentId());
replyDto.setParentAuthorName(parentReply.getAuthorName());
replyDto.setParentAuthorId(parentReply.getAuthorId());
//如果top不为空 设置第二级回复的 上级作者名和id
}else if(StringUtil.isNotEmpty(replyDto.getTopParentId())){
Reply parentReply = replyService.getById(replyDto.getTopParentId());
replyDto.setParentAuthorName(parentReply.getAuthorName());
replyDto.setParentAuthorId(parentReply.getAuthorId());
//如果评论没有上级id和顶级id则回复的是笔记的作者
}else if(StringUtil.isEmpty(replyDto.getParentId())&&StringUtil.isEmpty(replyDto.getTopParentId())){
replyDto.setParentAuthorName(note.getAuthorName());
replyDto.setParentAuthorId(note.getAuthorId());
}
List<ReplyVo> replyList = replyService.selectReplyList(new ReplyDto().setNoteId(replyDto.getNoteId()));
if (CollectionUtil.isEmpty(replyList)) {
replyDto.setFirstReplay(TRUE);
}
replyDto.setNoteId(note.getNoteId());
replyDto.setNoteTitle(note.getNoteTitle());
replyDto.setAuthorId(authorId);
replyDto.setAuthorName(author.getAuthorName());
replyDto.setAvatarUrl(author.getAvatarUrl());
replyDto.setIpAddress(IPUtils.getIpAddr(request)); // 请求IP
replyDto.setIpRealAddress(AddressUtils.getRealAddress(replyDto.getIpAddress()));
Reply reply = BeanUtil.copyProperties(replyDto, Reply.class);
replyService.save(reply);
return ResultBean.success();
}
@ApiOperation(value = "点赞评论")
@ApiOperationSupport(order = 1)
@PostMapping("/api/auth/upReply")
@OperLog(operModule = "点赞评论",operType = OperType.ADD,operDesc = "点赞评论")
public ResultBean upReply(@RequestBody ReplyDto replyDto) {
String followId = String.valueOf(request.getAttribute("authorId"));
Author follow = authorService.getById(followId);
Boolean isUp = Boolean.FALSE;
//查看在不在点赞列表
UpReplys upReplys = upReplysService.selectOneByFollowId(replyDto.getReplyId(), followId);
//不在证明是点赞
if(upReplys==null){
upReplys = new UpReplys();
upReplys.setAuthorId(replyDto.getAuthorId());
upReplys.setAuthorName(replyDto.getAuthorName());
upReplys.setFollowId(follow.getAuthorId());
upReplys.setFollowName(follow.getAuthorName());
upReplys.setReplyId(replyDto.getReplyId());
upReplys.setReplyContent(replyDto.getReplayContent());
isUp = Boolean.TRUE;
upReplysService.save(upReplys);
}else{
//在则表示取消赞删除数据
upReplysService.removeById(upReplys);
}
return ResultBean.success(isUp);
};
@ApiOperation(value = "获取聊天记录")
@ApiOperationSupport(order = 1)
@GetMapping("/api/auth/getChatList")
@OperLog(operModule = "获取所有笔记",operType = OperType.QUERY,operDesc = "获取聊天记录")
public ResultBean<IPage<ChatVo>> getChatList( ChatDto chatDto) {
String followId = String.valueOf(request.getAttribute("authorId"));
Author follow = authorService.getById(followId);
chatDto.setToId(followId);
chatDto.setToName(follow.getAuthorName());
IPage<ChatVo> chatVoIPage = chatService.selectChatPage(chatDto);
return ResultBean.success(chatVoIPage);
}
@ApiOperation(value = "获取聊天列表")
@ApiOperationSupport(order = 1)
@GetMapping("/api/auth/getMessageList")
@OperLog(operModule = "获取聊天列表",operType = OperType.QUERY,operDesc = "获取聊天列表")
public ResultBean<List<ChatVo>> getMessageList( ChatDto chatDto) {
String followId = String.valueOf(request.getAttribute("authorId"));
List<ChatVo> chatVos = chatService.selectChatList(followId);
return ResultBean.success(chatVos);
}
@ApiOperation(value = "读取消息")
@ApiOperationSupport(order = 1)
@PostMapping("/api/auth/readAuthorMessage")
@OperLog(operModule = "读取消息",operType = OperType.OTHER,operDesc = "读取消息")
public ResultBean readAuthorMessage(String authorId) {
String loginId = String.valueOf(request.getAttribute("authorId"));
chatService.readMessage(authorId,loginId);
return ResultBean.success(loginId);
};
@ApiOperation(value = "查询我的未读消息数量")
@ApiOperationSupport(order = 1)
@GetMapping("/api/auth/getUnReadCount")
@OperLog(operModule = "查询我的未读消息数量",operType = OperType.OTHER,operDesc = "查询我的未读消息数量")
public ResultBean getUnReadCount() {
String loginId = String.valueOf(request.getAttribute("authorId"));
Integer unReadCount = chatService.selectUnReadCount(loginId);
return ResultBean.success(unReadCount);
};
@ApiOperation(value = "获取所有收藏点赞我的笔记记录")
@ApiOperationSupport(order = 1)
@GetMapping("/api/auth/getUpMeNotes")
@OperLog(operModule = "获取所有收藏点赞我的笔记记录",operType = OperType.QUERY,operDesc = "获取所有收藏点赞我的笔记记录")
public ResultBean<IPage<UpMeVo>> getUpMeNotes() {
String authorId = String.valueOf(request.getAttribute("authorId"));
IPage<UpMeVo> upMeVoIPage = noteService.selectUpMeNotes(authorId);
return ResultBean.success(upMeVoIPage);
}
@ApiOperation(value = "获取所有评论我的笔记记录")
@ApiOperationSupport(order = 1)
@GetMapping("/api/auth/getReplayMes")
@OperLog(operModule = "获取所有评论我的笔记记录",operType = OperType.QUERY,operDesc = "获取所有评论我的笔记记录")
public ResultBean<IPage<UpMeVo>> getReplayMes() {
String authorId = String.valueOf(request.getAttribute("authorId"));
IPage<ReplayMeVo> replyMeNotes = noteService.selectReplyMeNotes(authorId);
return ResultBean.success(replyMeNotes);
}
}

View File

@@ -0,0 +1,175 @@
package com.dd.admin.business.api;
import cn.hutool.core.date.DateUtil;
import com.dd.admin.business.author.entity.Author;
import com.dd.admin.business.author.service.AuthorService;
import com.dd.admin.business.chat.service.ChatService;
import com.dd.admin.business.file.entity.File;
import com.dd.admin.business.file.service.FileService;
import com.dd.admin.business.follow.domain.FollowDto;
import com.dd.admin.business.follow.domain.FollowVo;
import com.dd.admin.business.follow.entity.Follow;
import com.dd.admin.business.follow.service.FollowService;
import com.dd.admin.business.note.service.NoteService;
import com.dd.admin.business.noteImg.service.NoteImgService;
import com.dd.admin.business.reply.service.ReplyService;
import com.dd.admin.business.starNotes.service.StarNotesService;
import com.dd.admin.business.upNotes.service.UpNotesService;
import com.dd.admin.business.upReplys.service.UpReplysService;
import com.dd.admin.common.aop.operationLog.aop.OperLog;
import com.dd.admin.common.aop.operationLog.aop.OperType;
import com.dd.admin.common.model.result.ResultBean;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
@ApiModel("博主类Api")
@RestController
public class AuthAuthorApi {
@Autowired
AuthorService authorService;
@Autowired
HttpServletRequest request;
@Autowired
FileService fileService;
@Value("${server.port}")
String port;
@Autowired
FollowService followService;
@ApiOperation(value = "获取博主信息")
@ApiOperationSupport(order = 1)
@GetMapping("/api/auth/getMine")
@OperLog(operModule = "获取当前博主信息",operType = OperType.QUERY,operDesc = "获取当前博主信息")
public ResultBean<Author> getMine() {
String authorId = String.valueOf(request.getAttribute("authorId"));
Author author = authorService.getById(authorId);
if(author.getBirth()!=null){
author.setAge(DateUtil.ageOfNow(author.getBirth()));
}
//关注我的列表
List<FollowVo> followMes = followService.selectFollowList(new FollowDto().setAuthorId(author.getAuthorId()));
List<FollowVo> myFollows = followService.selectFollowList(new FollowDto().setFollowId(author.getAuthorId()));
author.setFollow(Long.valueOf(myFollows.size()));
author.setFans(Long.valueOf(followMes.size()));
Long upAndStarTotalCount = authorService.selectAuthorUpAndStarTotalCount(authorId);
author.setUpAndStarCount(upAndStarTotalCount);
return ResultBean.success(author);
}
@ApiOperation(value = "获取作者信息")
@ApiOperationSupport(order = 1)
@GetMapping("/api/auth/getAuthor")
@OperLog(operModule = "获取作者信息",operType = OperType.QUERY,operDesc = "获取作者信息")
public ResultBean<Author> getAuthor(String authorId) {
String followId = String.valueOf(request.getAttribute("authorId"));
Author author = authorService.getById(authorId);
//我是否关注过
Follow isFollow= followService.selectOneByFollowId(authorId, followId);
if(isFollow!=null){
author.setIsFollow(Boolean.TRUE);
}
//是否关注过我
Follow isFollowMe= followService.selectOneByFollowId(followId, authorId);
if(isFollowMe!=null){
author.setIsFollowMe(Boolean.TRUE);
}
//关注我的列表
List<FollowVo> followMes = followService.selectFollowList(new FollowDto().setAuthorId(author.getAuthorId()));
List<FollowVo> myFollows = followService.selectFollowList(new FollowDto().setFollowId(author.getAuthorId()));
author.setFollow(Long.valueOf(myFollows.size()));
author.setFans(Long.valueOf(followMes.size()));
author.setFollowMes(followMes);
author.setMyFollows(myFollows);
Long upAndStarTotalCount = authorService.selectAuthorUpAndStarTotalCount(authorId);
author.setUpAndStarCount(upAndStarTotalCount);
return ResultBean.success(author);
}
@ApiOperation(value = "修改头像")
@ApiOperationSupport(order = 1)
@PostMapping("/api/auth/updateAuthorAvatar")
@OperLog(operModule = "修改头像",operType = OperType.EDIT,operDesc = "修改头像")
public ResultBean<Author> updateAuthorAvatar(String fileId) {
String followId = String.valueOf(request.getAttribute("authorId"));
Author author = authorService.getById(followId);
author.setAuthorId(followId);
author.setAvatarId(fileId);
File file = fileService.selectFileByFileId(fileId);
String serverName = request.getServerName();
author.setAvatarUrl("http://" + serverName + ":" + port + file.getFilePath());
authorService.updateById(author);
return ResultBean.success(author);
};
@ApiOperation(value = "修改背景图")
@ApiOperationSupport(order = 1)
@PostMapping("/api/auth/updateAuthorBackGround")
@OperLog(operModule = "修改背景图",operType = OperType.EDIT,operDesc = "修改背景图")
public ResultBean<Author> updateAuthorBackGround(String fileId) {
String followId = String.valueOf(request.getAttribute("authorId"));
Author author = authorService.getById(followId);
author.setAuthorId(followId);
author.setBackGroundId(fileId);
File file = fileService.selectFileByFileId(fileId);
String serverName = request.getServerName();
author.setBackGroundUrl("http://" + serverName + ":" + port + file.getFilePath());
authorService.updateById(author);
return ResultBean.success(author);
};
@ApiOperation(value = "修改我的信息")
@ApiOperationSupport(order = 1)
@PostMapping("/api/auth/updateMine")
@OperLog(operModule = "修改我的信息",operType = OperType.EDIT,operDesc = "修改我的信息")
public ResultBean<Author> updateAuthorBackGround(@RequestBody Author author) {
authorService.updateById(author);
return ResultBean.success(author);
};
@ApiOperation(value = "获取关注目标作者的关注的所有博主")
@ApiOperationSupport(order = 1)
@GetMapping("/api/auth/getMyFollows")
@OperLog(operModule = "getMyFollows",operType = OperType.QUERY,operDesc = "获取关注目标作者的所有粉丝")
public ResultBean getMyFollows(String authorId) {
String myId = String.valueOf(request.getAttribute("authorId"));
//关注我的列表
List<FollowVo> myFollows = followService.selectMyFollowList(authorId,myId);
return ResultBean.success(myFollows);
}
@ApiOperation(value = "获取关注目标作者的所有粉丝")
@ApiOperationSupport(order = 1)
@GetMapping("/api/auth/getFollowMes")
@OperLog(operModule = "获取关注目标作者的所有粉丝",operType = OperType.QUERY,operDesc = "获取 关注目标作者的所有粉丝")
public ResultBean getFollowMes(String authorId) {
String myId = String.valueOf(request.getAttribute("authorId"));
//关注我的列表
List<FollowVo> followMes = followService.selectFollowMeList(authorId,myId);
return ResultBean.success(followMes);
}
@ApiOperation(value = "获取关注目标互相关注的人")
@ApiOperationSupport(order = 1)
@GetMapping("/api/auth/getMyFriends")
@OperLog(operModule = "getMyFriends",operType = OperType.QUERY,operDesc = "获取关注目标互相关注的人")
public ResultBean getMyFriends(String authorId) {
//关注我的列表
List<FollowVo> myFollows = followService.getMyFriends(authorId);
myFollows.stream().forEach(followVo -> {
followVo.setIsFollow(Boolean.TRUE);
followVo.setIsFollowMe(Boolean.TRUE);
});
return ResultBean.success(myFollows);
}
}

View File

@@ -0,0 +1,143 @@
package com.dd.admin.business.api;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.dd.admin.business.api.domain.UnReadCountBean;
import com.dd.admin.business.author.entity.Author;
import com.dd.admin.business.author.service.AuthorService;
import com.dd.admin.business.chat.domain.ChatDto;
import com.dd.admin.business.chat.domain.ChatVo;
import com.dd.admin.business.chat.service.ChatService;
import com.dd.admin.business.file.service.FileService;
import com.dd.admin.business.follow.service.FollowService;
import com.dd.admin.business.note.service.NoteService;
import com.dd.admin.business.noteImg.service.NoteImgService;
import com.dd.admin.business.reply.service.ReplyService;
import com.dd.admin.business.starNotes.service.StarNotesService;
import com.dd.admin.business.upNotes.service.UpNotesService;
import com.dd.admin.business.upReplys.service.UpReplysService;
import com.dd.admin.common.aop.operationLog.aop.OperLog;
import com.dd.admin.common.aop.operationLog.aop.OperType;
import com.dd.admin.common.model.result.ResultBean;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
@ApiModel("聊天相关Api")
@RestController
public class AuthChatApi {
@Autowired
HttpServletRequest request;
@Value("${server.port}")
String port;
@Autowired
ChatService chatService;
@Autowired
AuthorService authorService;
@Autowired
UpNotesService upNotesService;
@Autowired
StarNotesService starNotesService;
@Autowired
ReplyService replyService;
@Autowired
FollowService followService;
@ApiOperation(value = "获取消息列表")
@ApiOperationSupport(order = 1)
@GetMapping("/api/auth/getMessageList")
@OperLog(operModule = "获取消息列表",operType = OperType.QUERY,operDesc = "获取消息列表")
public ResultBean<List<ChatVo>> getMessageList(ChatDto chatDto) {
String followId = String.valueOf(request.getAttribute("authorId"));
List<ChatVo> chatVos = chatService.selectChatList(followId);
return ResultBean.success(chatVos);
}
@ApiOperation(value = "获取聊天记录")
@ApiOperationSupport(order = 1)
@GetMapping("/api/auth/getChatList")
@OperLog(operModule = "获取所有笔记",operType = OperType.QUERY,operDesc = "获取聊天记录")
public ResultBean<IPage<ChatVo>> getChatList(ChatDto chatDto) {
String followId = String.valueOf(request.getAttribute("authorId"));
Author follow = authorService.getById(followId);
chatDto.setToId(followId);
chatDto.setToName(follow.getAuthorName());
IPage<ChatVo> chatVoIPage = chatService.selectChatPage(chatDto);
return ResultBean.success(chatVoIPage);
}
@ApiOperation(value = "读取消息")
@ApiOperationSupport(order = 1)
@PostMapping("/api/auth/readAuthorMessage")
@OperLog(operModule = "读取消息",operType = OperType.OTHER,operDesc = "读取消息")
public ResultBean readAuthorMessage(String authorId) {
String loginId = String.valueOf(request.getAttribute("authorId"));
chatService.readMessage(authorId,loginId);
return ResultBean.success(loginId);
};
@ApiOperation(value = "读取点赞笔记消息")
@ApiOperationSupport(order = 2)
@PostMapping("/api/auth/readUpNotesMessage")
@OperLog(operModule = "读取点赞笔记消息", operType = OperType.OTHER, operDesc = "读取点赞笔记消息")
public ResultBean readUpNotesMessage() {
String authorId = String.valueOf(request.getAttribute("authorId"));
upNotesService.readMessage(authorId);
return ResultBean.success();
}
@ApiOperation(value = "读取收藏笔记消息")
@ApiOperationSupport(order = 3)
@PostMapping("/api/auth/readStarNotesMessage")
@OperLog(operModule = "读取收藏笔记消息", operType = OperType.OTHER, operDesc = "读取收藏笔记消息")
public ResultBean readStarNotesMessage() {
String authorId = String.valueOf(request.getAttribute("authorId"));
starNotesService.readMessage(authorId);
return ResultBean.success();
}
@ApiOperation(value = "读取回复消息")
@ApiOperationSupport(order = 4)
@PostMapping("/api/auth/readReplyMessage")
@OperLog(operModule = "读取回复消息", operType = OperType.OTHER, operDesc = "读取回复消息")
public ResultBean readReplyMessage() {
String authorId = String.valueOf(request.getAttribute("authorId"));
replyService.readMessage(authorId);
return ResultBean.success();
}
@ApiOperation(value = "读取关注消息")
@ApiOperationSupport(order = 5)
@PostMapping("/api/auth/readFollowMessage")
@OperLog(operModule = "读取关注消息", operType = OperType.OTHER, operDesc = "读取关注消息")
public ResultBean readFollowMessage() {
String authorId = String.valueOf(request.getAttribute("authorId"));
followService.readMessage(authorId);
return ResultBean.success();
}
@ApiOperation(value = "查询我的未读消息数量")
@ApiOperationSupport(order = 1)
@GetMapping("/api/auth/getUnReadCount")
@OperLog(operModule = "查询我的未读消息数量",operType = OperType.OTHER,operDesc = "查询我的未读消息数量")
public ResultBean getUnReadCount() {
String loginId = String.valueOf(request.getAttribute("authorId"));
Integer chatUnReadCount = chatService.selectUnReadCount(loginId);
Integer upNotesUnReadCount = upNotesService.selectUnReadCount(loginId);
Integer starNotesUnReadCount = starNotesService.selectUnReadCount(loginId);
Integer replyUnReadCount = replyService.selectUnReadCount(loginId);
Integer followUnReadCount = followService.selectUnReadCount(loginId);
Integer totalUnReadCount = 0;
UnReadCountBean unReadCountBean = new UnReadCountBean(chatUnReadCount,upNotesUnReadCount,starNotesUnReadCount,replyUnReadCount,followUnReadCount,totalUnReadCount);
unReadCountBean.calculateTotalUnReadCount();
return ResultBean.success(unReadCountBean);
};
}

View File

@@ -0,0 +1,382 @@
package com.dd.admin.business.api;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.dd.admin.business.author.entity.Author;
import com.dd.admin.business.author.service.AuthorService;
import com.dd.admin.business.chat.domain.ChatDto;
import com.dd.admin.business.chat.domain.ChatVo;
import com.dd.admin.business.chat.entity.Chat;
import com.dd.admin.business.chat.service.ChatService;
import com.dd.admin.business.file.entity.File;
import com.dd.admin.business.file.service.FileService;
import com.dd.admin.business.follow.domain.FollowDto;
import com.dd.admin.business.follow.domain.FollowVo;
import com.dd.admin.business.follow.entity.Follow;
import com.dd.admin.business.follow.service.FollowService;
import com.dd.admin.business.note.domain.NoteDto;
import com.dd.admin.business.note.domain.NoteVo;
import com.dd.admin.business.note.domain.ReplayMeVo;
import com.dd.admin.business.note.domain.UpMeVo;
import com.dd.admin.business.note.entity.Note;
import com.dd.admin.business.note.service.NoteService;
import com.dd.admin.business.noteImg.entity.NoteImg;
import com.dd.admin.business.noteImg.service.NoteImgService;
import com.dd.admin.business.reply.domain.ReplyDto;
import com.dd.admin.business.reply.domain.ReplyVo;
import com.dd.admin.business.reply.entity.Reply;
import com.dd.admin.business.reply.service.ReplyService;
import com.dd.admin.business.starNotes.domain.StarNotesDto;
import com.dd.admin.business.starNotes.domain.StarNotesVo;
import com.dd.admin.business.starNotes.entity.StarNotes;
import com.dd.admin.business.starNotes.service.StarNotesService;
import com.dd.admin.business.upNotes.domain.UpNotesDto;
import com.dd.admin.business.upNotes.domain.UpNotesVo;
import com.dd.admin.business.upNotes.entity.UpNotes;
import com.dd.admin.business.upNotes.service.UpNotesService;
import com.dd.admin.business.upReplys.entity.UpReplys;
import com.dd.admin.business.upReplys.service.UpReplysService;
import com.dd.admin.common.aop.operationLog.aop.OperLog;
import com.dd.admin.common.aop.operationLog.aop.OperType;
import com.dd.admin.common.exception.ApiException;
import com.dd.admin.common.model.result.ResultBean;
import com.dd.admin.common.utils.AddressUtils;
import com.dd.admin.common.utils.CommonUtil;
import com.dd.admin.common.utils.IPUtils;
import com.dd.admin.common.utils.StringUtil;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.validation.constraints.NotBlank;
import java.util.*;
import java.util.stream.Collectors;
import static com.dd.admin.common.consts.XhsConst.TRUE;
@ApiModel("笔记相关Api")
@RestController
public class AuthNoteApi {
@Autowired
AuthorService authorService;
@Autowired
HttpServletRequest request;
@Autowired
NoteService noteService;
@Autowired
FileService fileService;
@Autowired
NoteImgService noteImgService;
@Value("${server.port}")
String port;
@Autowired
FollowService followService;
@Autowired
ReplyService replyService;
@ApiOperation(value = "获取所有关注笔记")
@ApiOperationSupport(order = 1)
@GetMapping("/api/auth/getFollowNotes")
@OperLog(operModule = "获取所有关注笔记",operType = OperType.QUERY,operDesc = "获取所有关注笔记")
public ResultBean<IPage<NoteVo>> getFollowNotes() {
String followId = String.valueOf(request.getAttribute("authorId"));
NoteDto noteDto = new NoteDto();
noteDto.setFollowId(followId);
List<Follow> follows = followService.selectFollowListByFollowId(followId);
IPage<NoteVo> pageInfo = new IPage<NoteVo>() {
@Override
public List<OrderItem> orders() {
return null;
}
@Override
public List<NoteVo> getRecords() {
return null;
}
@Override
public IPage<NoteVo> setRecords(List<NoteVo> records) {
return null;
}
@Override
public long getTotal() {
return 0;
}
@Override
public IPage<NoteVo> setTotal(long total) {
return null;
}
@Override
public long getSize() {
return 0;
}
@Override
public IPage<NoteVo> setSize(long size) {
return null;
}
@Override
public long getCurrent() {
return 0;
}
@Override
public IPage<NoteVo> setCurrent(long current) {
return null;
}
};
if(CollectionUtil.isNotEmpty(follows)){
String authorIds = CommonUtil.getIds(follows, "authorId");
noteDto.setAuthorIds(authorIds);
pageInfo = noteService.selectNotePage(noteDto);
}
return ResultBean.success(pageInfo);
}
@ApiOperation(value = "获取所有笔记")
@ApiOperationSupport(order = 1)
@GetMapping("/api/auth/notes")
@OperLog(operModule = "获取所有笔记",operType = OperType.QUERY,operDesc = "获取所有笔记")
public ResultBean<IPage<NoteVo>> page(NoteDto noteDto) {
String followId = String.valueOf(request.getAttribute("authorId"));
noteDto.setFollowId(followId);
IPage<NoteVo> pageInfo = noteService.selectNotePage(noteDto);
return ResultBean.success(pageInfo);
}
//外层倒叙 回复正序
@ApiOperation(value = "获取笔记评论")
@ApiOperationSupport(order = 1)
@GetMapping("/api/auth/getNoteReply")
@OperLog(operModule = "获取笔记评论",operType = OperType.QUERY,operDesc = "获取笔记评论")
public ResultBean<Map> getNoteReply( ReplyDto replyDto) {
String fellowId = String.valueOf(request.getAttribute("authorId"));
String noteId = replyDto.getNoteId();
List<ReplyVo> replyList = replyService.selectReplyList(new ReplyDto().setNoteId(noteId).setFollowId(fellowId));
Integer totalCount = replyList.size();
// 先构建一个以回复ID为键回复对象为值的Map方便后续快速查找回复对象
// 构建以replyId为键ReplyVo对象为值的Map方便后续快速查找回复对象
Map<String, ReplyVo> replyMap = replyList.stream()
.collect(Collectors.toMap(ReplyVo::getReplyId, reply -> reply));
List<ReplyVo> secondLevelReplies = replyList
.stream()
.filter(reply ->
(StringUtil.isNotEmpty(reply.getParentId())||StringUtil.isNotEmpty(reply.getTopParentId()))
).sorted(Comparator.comparing(ReplyVo::getCreateTime)).collect(Collectors.toList());
secondLevelReplies.forEach(replyVo -> {
if(StringUtil.isNotEmpty(replyVo.getParentId())){
replyVo.setParentAuthorId(replyMap.get(replyVo.getParentId()).getAuthorId());
replyVo.setParentAuthorName(replyMap.get(replyVo.getParentId()).getAuthorName());
}
});
// 获取第一层回复topId为空且parentId也为空
List<ReplyVo> firstLevelReplies = replyList.stream()
.filter(reply -> reply.getTopParentId() == null && reply.getParentId() == null)
.collect(Collectors.toList());
// 将第二层回复添加到对应的第一层回复下通过topId与replyId关联
firstLevelReplies.forEach(firstLevelReply -> {
String firstLevelReplyId = firstLevelReply.getReplyId();
List<ReplyVo> relatedSecondLevelReplies = secondLevelReplies.stream()
.filter(secondLevelReply -> firstLevelReplyId.equals(secondLevelReply.getTopParentId()))
.collect(Collectors.toList());
if (firstLevelReply.getReply() == null) {
firstLevelReply.setReply(new ArrayList<>());
}
firstLevelReply.getReply().addAll(relatedSecondLevelReplies);
});
Map map = new HashMap();
map.put("totalCount",totalCount);
map.put("replys",firstLevelReplies);
return ResultBean.success(map);
}
@ApiOperation(value = "获取目标博主笔记")
@ApiOperationSupport(order = 1)
@GetMapping("/api/auth/getAuthorNotes")
@OperLog(operModule = "获取目标博主笔记",operType = OperType.QUERY,operDesc = "获取目标博主笔记")
public ResultBean<IPage<NoteVo>> getAuthorNotes(String authorId) {
String followId = String.valueOf(request.getAttribute("authorId"));
NoteDto noteDto = new NoteDto();
noteDto.setFollowId(followId);
noteDto.setAuthorId(authorId);
IPage<NoteVo> pageInfo = noteService.selectNotePage(noteDto);
return ResultBean.success(pageInfo);
}
@ApiOperation(value = "获取当前博主笔记")
@ApiOperationSupport(order = 1)
@GetMapping("/api/auth/getMineNotes")
@OperLog(operModule = "获取当前博主笔记",operType = OperType.QUERY,operDesc = "获取当前博主笔记")
public ResultBean<IPage<NoteVo>> getMineNotes() {
String authorId = String.valueOf(request.getAttribute("authorId"));
NoteDto noteDto = new NoteDto();
noteDto.setFollowId(authorId);
noteDto.setAuthorId(authorId);
IPage<NoteVo> pageInfo = noteService.selectNotePage(noteDto);
return ResultBean.success(pageInfo);
}
@ApiOperation(value = "获取所有点赞笔记")
@ApiOperationSupport(order = 1)
@GetMapping("/api/auth/getUpNotes")
@OperLog(operModule = "获取所有点赞笔记",operType = OperType.QUERY,operDesc = "获取所有点赞笔记")
public ResultBean<IPage<NoteVo>> getUpNotes() {
String followId = String.valueOf(request.getAttribute("authorId"));
NoteDto noteDto = new NoteDto();
noteDto.setFollowId(followId);
noteDto.setMyUpById(followId);
IPage<NoteVo> pageInfo = noteService.selectNotePage(noteDto);
return ResultBean.success(pageInfo);
}
@ApiOperation(value = "获取所有收藏笔记")
@ApiOperationSupport(order = 1)
@GetMapping("/api/auth/getStarNotes")
@OperLog(operModule = "获取所有收藏笔记",operType = OperType.QUERY,operDesc = "获取所有收藏笔记")
public ResultBean<IPage<NoteVo>> getStarNotes() {
String followId = String.valueOf(request.getAttribute("authorId"));
NoteDto noteDto = new NoteDto();
noteDto.setFollowId(followId);
noteDto.setMyStarById(followId);
IPage<NoteVo> pageInfo = noteService.selectNotePage(noteDto);
return ResultBean.success(pageInfo);
}
@ApiOperation(value = "创建笔记")
@ApiOperationSupport(order = 1)
@PostMapping("/api/auth/addNote")
@OperLog(operModule = "创建笔记",operType = OperType.ADD,operDesc = "创建笔记")
public ResultBean addNote(@RequestBody NoteDto noteDto) {
String authorId = String.valueOf(request.getAttribute("authorId"));
Author author = authorService.getById(authorId);
Note note = BeanUtil.copyProperties(noteDto, Note.class);
note.setAuthorId(author.getAuthorId());
note.setAuthorName(author.getAuthorName());
note.setAuthorAvatar(author.getAvatarUrl());
note.setIpAddress(IPUtils.getIpAddr(request)); // 请求IP
note.setIpRealAddress(AddressUtils.getRealAddress(note.getIpAddress()));
noteService.save(note);
List<String> imgs = noteDto.getImgs();
List<NoteImg> noteImgList = new ArrayList<>();
for(int i=0;i<imgs.size();i++){
NoteImg noteImg = new NoteImg();
noteImg.setAuthorId(authorId);
noteImg.setNoteId(note.getNoteId());
noteImg.setImgSort(i);
File file = fileService.selectFileByFileId(imgs.get(i));
String serverName = request.getServerName();
System.out.println(serverName);
noteImg.setImgUrl("http://" + serverName + ":" + port + file.getFilePath());
noteImgList.add(noteImg);
}
noteImgService.saveBatch(noteImgList);
Note updateNote = noteService.getById(note.getNoteId());
updateNote.setFirstPicture(noteImgList.get(0).getImgUrl());
noteService.updateById(updateNote);
return ResultBean.success();
}
@ApiOperation(value = "修改笔记")
@ApiOperationSupport(order = 1)
@PostMapping("/api/auth/updateNote")
@OperLog(operModule = "修改笔记",operType = OperType.ADD,operDesc = "修改笔记")
@Transactional
public ResultBean updateNote(@RequestBody NoteDto noteDto) {
String authorId = String.valueOf(request.getAttribute("authorId"));
Author author = authorService.getById(authorId);
Note note = BeanUtil.copyProperties(noteDto, Note.class);
note.setAuthorId(author.getAuthorId());
note.setAuthorName(author.getAuthorName());
note.setAuthorAvatar(author.getAvatarUrl());
note.setIpAddress(IPUtils.getIpAddr(request)); // 请求IP
note.setIpRealAddress(AddressUtils.getRealAddress(note.getIpAddress()));
noteService.updateById(note);
List<String> imgs = noteDto.getImgs();
List<NoteImg> noteImgList = new ArrayList<>();
for(int i=0;i<imgs.size();i++){
NoteImg noteImg = new NoteImg();
noteImg.setAuthorId(authorId);
noteImg.setNoteId(note.getNoteId());
noteImg.setImgSort(i);
File file = fileService.selectFileByFileId(imgs.get(i));
String serverName = request.getServerName();
System.out.println(serverName);
noteImg.setImgUrl("http://" + serverName + ":" + port + file.getFilePath());
noteImgList.add(noteImg);
}
noteImgService.deleteNoteImgByNoteId(note.getNoteId());
noteImgService.saveBatch(noteImgList);
Note updateNote = noteService.getById(note.getNoteId());
updateNote.setFirstPicture(noteImgList.get(0).getImgUrl());
noteService.updateById(updateNote);
return ResultBean.success();
}
@ApiOperation(value = "删除笔记")
@ApiOperationSupport(order = 1)
@PostMapping("/api/auth/deleteNote")
@OperLog(operModule = "删除笔记",operType = OperType.ADD,operDesc = "删除笔记")
@Transactional
public ResultBean deleteNote(@RequestBody NoteDto noteDto) {
String noteId = noteDto.getNoteId();
noteService.removeById(noteId);
return ResultBean.success();
}
@ApiOperation(value = "获取所有收藏点赞我的笔记记录")
@ApiOperationSupport(order = 1)
@GetMapping("/api/auth/getUpMeNotes")
@OperLog(operModule = "获取所有收藏点赞我的笔记记录",operType = OperType.QUERY,operDesc = "获取所有收藏点赞我的笔记记录")
public ResultBean<IPage<UpMeVo>> getUpMeNotes() {
String authorId = String.valueOf(request.getAttribute("authorId"));
IPage<UpMeVo> upMeVoIPage = noteService.selectUpMeNotes(authorId);
return ResultBean.success(upMeVoIPage);
}
@ApiOperation(value = "获取所有评论我的笔记记录")
@ApiOperationSupport(order = 1)
@GetMapping("/api/auth/getReplayMes")
@OperLog(operModule = "获取所有评论我的笔记记录",operType = OperType.QUERY,operDesc = "获取所有评论我的笔记记录")
public ResultBean<IPage<UpMeVo>> getReplayMes() {
String authorId = String.valueOf(request.getAttribute("authorId"));
IPage<ReplayMeVo> replyMeNotes = noteService.selectReplyMeNotes(authorId);
return ResultBean.success(replyMeNotes);
}
}

View File

@@ -0,0 +1,28 @@
package com.dd.admin.business.api.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UnReadCountBean {
private Integer chatUnReadCount;
private Integer upNotesUnReadCount;
private Integer starNotesUnReadCount;
private Integer replyUnReadCount;
private Integer followUnReadCount;
private Integer totalUnReadCount;
// 自定义方法,用于计算总数量(也可以在构造函数等其他地方调用此方法来计算总和)
public void calculateTotalUnReadCount() {
int chatCount = chatUnReadCount!= null? chatUnReadCount : 0;
int upNotesCount = upNotesUnReadCount!= null? upNotesUnReadCount : 0;
int starNotesCount = starNotesUnReadCount!= null? starNotesUnReadCount : 0;
int replyCount = replyUnReadCount!= null? replyUnReadCount : 0;
int followCount = followUnReadCount!= null? followUnReadCount : 0;
totalUnReadCount = chatCount + upNotesCount + starNotesCount + replyCount + followCount;
}
}

View File

@@ -27,5 +27,6 @@ public interface ChatService extends IService<Chat> {
List<ChatVo> selectChatList(String authorId);
void readMessage(String authorId,String loginId);
//未读聊天消息的数量
Integer selectUnReadCount(String authorId);
}

View File

@@ -33,6 +33,9 @@ public interface FollowService extends IService<Follow> {
List<FollowVo> selectMyFollowList( String authorId,String targetId);
List<FollowVo> selectFollowMeList(String authorId,String targetId);
List<FollowVo> getMyFriends(String authorId);
//未读聊天消息的数量
Integer selectUnReadCount(String authorId);
void readMessage(String authorId);
}

View File

@@ -1,8 +1,10 @@
package com.dd.admin.business.follow.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dd.admin.business.starNotes.entity.StarNotes;
import com.dd.admin.business.upNotes.entity.UpNotes;
import com.dd.admin.common.model.PageFactory;
import com.dd.admin.business.follow.entity.Follow;
@@ -66,4 +68,19 @@ public class FollowServiceImpl extends ServiceImpl<FollowMapper, Follow> impleme
return baseMapper.getMyFriends(authorId);
}
@Override
public Integer selectUnReadCount(String authorId) {
LambdaQueryWrapper<Follow> queryWrapper = new LambdaQueryWrapper();
queryWrapper.eq(Follow::getAuthorId,authorId);
queryWrapper.ne(Follow::getFollowId,authorId);
queryWrapper.eq(Follow::getMessageStatus,0);
return baseMapper.selectCount(queryWrapper);
}
@Override
public void readMessage(String authorId) {
LambdaUpdateWrapper<Follow> queryWrapper = new LambdaUpdateWrapper();
queryWrapper.eq(Follow::getAuthorId,authorId);
queryWrapper.set(Follow::getMessageStatus,1);
this.update(queryWrapper);
}
}

View File

@@ -23,4 +23,8 @@ public interface ReplyService extends IService<Reply> {
//回复表-列表
List<ReplyVo> selectReplyList(ReplyDto replyDto);
//未读聊天消息的数量
Integer selectUnReadCount(String authorId);
void readMessage(String authorId);
}

View File

@@ -1,7 +1,11 @@
package com.dd.admin.business.reply.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dd.admin.business.starNotes.entity.StarNotes;
import com.dd.admin.business.upNotes.entity.UpNotes;
import com.dd.admin.common.model.PageFactory;
import com.dd.admin.business.reply.entity.Reply;
import com.dd.admin.business.reply.mapper.ReplyMapper;
@@ -33,4 +37,23 @@ public class ReplyServiceImpl extends ServiceImpl<ReplyMapper, Reply> implements
public List<ReplyVo> selectReplyList(ReplyDto replyDto) {
return baseMapper.selectReplyList(replyDto);
}
@Override
public Integer selectUnReadCount(String authorId) {
LambdaQueryWrapper<Reply> queryWrapper = new LambdaQueryWrapper();
queryWrapper.eq(Reply::getParentAuthorId,authorId);
queryWrapper.ne(Reply::getAuthorId,authorId);
queryWrapper.eq(Reply::getMessageStatus,0);
return baseMapper.selectCount(queryWrapper);
}
@Override
public void readMessage(String authorId) {
LambdaUpdateWrapper<Reply> queryWrapper = new LambdaUpdateWrapper();
queryWrapper.eq(Reply::getParentAuthorId,authorId);
queryWrapper.ne(Reply::getAuthorId,authorId);
queryWrapper.set(Reply::getMessageStatus,1);
this.update(queryWrapper);
}
}

View File

@@ -29,5 +29,8 @@ public interface StarNotesService extends IService<StarNotes> {
StarNotes selectOneByFollowId(String noteId, String followId);
//未读聊天消息的数量
Integer selectUnReadCount(String authorId);
void readMessage(String authorId);
}

View File

@@ -1,6 +1,7 @@
package com.dd.admin.business.starNotes.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dd.admin.business.upNotes.entity.UpNotes;
@@ -44,4 +45,21 @@ public class StarNotesServiceImpl extends ServiceImpl<StarNotesMapper, StarNotes
return this.getOne(queryWrapper);
}
@Override
public Integer selectUnReadCount(String authorId) {
LambdaQueryWrapper<StarNotes> queryWrapper = new LambdaQueryWrapper();
queryWrapper.eq(StarNotes::getAuthorId,authorId);
queryWrapper.eq(StarNotes::getMessageStatus,0);
return baseMapper.selectCount(queryWrapper);
}
@Override
public void readMessage(String authorId) {
LambdaUpdateWrapper<StarNotes> queryWrapper = new LambdaUpdateWrapper();
queryWrapper.eq(StarNotes::getAuthorId,authorId);
queryWrapper.ne(StarNotes::getFollowId,authorId);
queryWrapper.set(StarNotes::getMessageStatus,1);
this.update(queryWrapper);
}
}

View File

@@ -27,4 +27,8 @@ public interface UpNotesService extends IService<UpNotes> {
UpNotes selectOneByFollowId(String noteId ,String followId);
//未读聊天消息的数量
Integer selectUnReadCount(String authorId);
void readMessage(String authorId);
}

View File

@@ -1,8 +1,10 @@
package com.dd.admin.business.upNotes.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dd.admin.business.chat.entity.Chat;
import com.dd.admin.common.model.PageFactory;
import com.dd.admin.business.upNotes.entity.UpNotes;
import com.dd.admin.business.upNotes.mapper.UpNotesMapper;
@@ -47,4 +49,21 @@ public class UpNotesServiceImpl extends ServiceImpl<UpNotesMapper, UpNotes> impl
queryWrapper.eq(UpNotes::getFollowId,followId);
return this.getOne(queryWrapper);
}
@Override
public Integer selectUnReadCount(String authorId) {
LambdaQueryWrapper<UpNotes> queryWrapper = new LambdaQueryWrapper();
queryWrapper.eq(UpNotes::getAuthorId,authorId);
queryWrapper.eq(UpNotes::getMessageStatus,0);
return baseMapper.selectCount(queryWrapper);
}
@Override
public void readMessage(String authorId) {
LambdaUpdateWrapper<UpNotes> queryWrapper = new LambdaUpdateWrapper();
queryWrapper.eq(UpNotes::getAuthorId,authorId);
queryWrapper.ne(UpNotes::getFollowId,authorId);
queryWrapper.set(UpNotes::getMessageStatus,1);
this.update(queryWrapper);
}
}

View File

@@ -1 +1 @@
package com.dd.admin.business.webSocket;
package com.dd.admin.business.webSocket;

View File

@@ -0,0 +1 @@
package com.dd.admin.business.webSocket;

View File

@@ -1 +1 @@
package com.dd.admin.business.webSocket.handler;
package com.dd.admin.business.webSocket.handler;

View File

@@ -1 +1 @@
package com.dd.admin.business.webSocket.util;
package com.dd.admin.business.webSocket.util;

View File

@@ -0,0 +1,52 @@
package com.dd.admin.common.utils;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
@Component("springContextUtils")
public class SpringContextUtils implements ApplicationContextAware {
/**
* Spring应用上下文环境
*/
private static ApplicationContext applicationContext;
/**
* 实现ApplicationContextAware接口的回调方法设置上下文环境
*
* @param applicationContext
*/
@Override
public void setApplicationContext(ApplicationContext applicationContext) {
applicationContext = applicationContext;
}
/**
* @return ApplicationContext
*/
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
/**
* 获取对象
*
* @param name
* @return Object
* @throws BeansException
*/
public static Object getBean(String name) throws BeansException {
return applicationContext.getBean(name);
}
/**
* 根据class获取对应的bean对象
* @param clz
* @return
*/
public static Object getBean(Class<?> clz){
return applicationContext.getBean(clz);
}
}