提交 e1e9d6d9 作者: xiaowang

论坛相关

上级 7debfc0d
......@@ -8,6 +8,8 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @Author LW
*
......@@ -25,11 +27,14 @@ public class DynamicInfoDTO {
private String description;
@ApiModelProperty(value = "图片/视频")
private MediaVO mediaVO;
private List<MediaVO> mediaVO;
@ApiModelProperty(value = "show: 0显示 1隐藏")
private Integer show;
@ApiModelProperty(value = "发布动态用户信息")
private UserBaseInfoVO userBaseInfo;
@ApiModelProperty(value = "用户id")
private Integer userAccountId;
}
......@@ -10,22 +10,29 @@ import java.io.Serializable;
/**
* @Author LW
* @date 2023/6/19 11:12
* 概要:
*
* @date 2023/6/19 11:12 概要:
*/
@Data
public class DynamicQO implements Serializable {
@ApiModelProperty(value = "关键字", required = true,example = "作者")
private String keyword;
@ApiModelProperty(value = "页码", required = true,example = "1")
@NotNull(message = "页码不能为空", groups = { Page.class })
@Min(value = 1, groups = Page.class)
private Integer pageNo;
@ApiModelProperty(value = "每页显示数", required = true,example = "10")
@NotNull(message = "每页显示数不能为空", groups = { Page.class })
@Min(value = 1, groups = Page.class)
private Integer pageSize;
public void buildCurrentPage() {
this.pageNo = (pageNo - 1) * pageSize;
}
@ApiModelProperty(value = "关键字", required = false, example = "作者")
private String keyword;
@ApiModelProperty(value = "页码", required = true, example = "1")
@NotNull(
message = "页码不能为空",
groups = {Page.class})
@Min(value = 1, groups = Page.class)
private Integer pageNo;
@ApiModelProperty(value = "每页显示数", required = true, example = "10")
@NotNull(
message = "每页显示数不能为空",
groups = {Page.class})
@Min(value = 1, groups = Page.class)
private Integer pageSize;
public void buildCurrentPage() {
this.pageNo = (pageNo - 1) * pageSize;
}
}
......@@ -12,29 +12,28 @@ import java.util.List;
/**
* @Author LW
* @date 2023/5/15 10:29
* 概要:评论信息参数
*
* @date 2023/5/15 10:29 概要:评论信息参数
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class CommentAndReplyVO implements Serializable {
@ApiModelProperty(value = "评论id")
private Integer id;
@ApiModelProperty(value = "动态id")
private Integer dynamicId;
@ApiModelProperty(value = "父级评论id")
private Integer parentId;
@ApiModelProperty(value = "动态发布人的id")
private Integer userId;
@ApiModelProperty(value = "用户信息")
private UserBaseInfoVO userBaseInfoVO;
@ApiModelProperty(value = "评论内容")
private String content;
@ApiModelProperty(value = "评论点赞数")
private Integer likesCount;
@ApiModelProperty(value = "评论时间")
private Date createTime;
private List<CommentAndReplyVO> children;
@ApiModelProperty(value = "评论id")
private Integer id;
@ApiModelProperty(value = "用户信息")
private UserBaseInfoVO userBaseInfoVO;
@ApiModelProperty(value = "评论内容")
private String content;
@ApiModelProperty(value = "评论点赞数")
private Integer likesCount;
@ApiModelProperty(value = "评论时间")
private Date createTime;
private List<CommentAndReplyVO> children;
}
......@@ -10,20 +10,20 @@ import java.io.Serializable;
/**
* @Author LW
* @date 2023/5/15 10:29
* 概要:评论信息参数
*
* @date 2023/5/15 10:29 概要:评论信息参数
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class CommentVO implements Serializable {
@ApiModelProperty(value = "评论id")
private Integer id;
@ApiModelProperty(value = "动态id")
private Integer dynamicId;
@ApiModelProperty(value = "父级评论id(不传则是评论动态 传了则是回复评论)")
private Integer parentId;
@ApiModelProperty(value = "评论内容")
private String content;
@ApiModelProperty(value = "根节点路径")
private String rootPath;
@ApiModelProperty(value = "动态id")
private Integer dynamicId;
@ApiModelProperty(value = "评论内容")
private String content;
}
......@@ -13,38 +13,50 @@ import java.util.List;
/**
* @Author LW
* @date 2023/5/15 10:29
* 概要:动态信息参数
*
* @date 2023/5/15 10:29 概要:动态信息参数
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class DynamicVO implements Serializable {
@ApiModelProperty(value = "发布动态用户信息")
private UserBaseInfoVO userBaseInfo;
@ApiModelProperty(value = "动态id")
private Integer id;
@ApiModelProperty(value = "动态标题")
private String title;
@ApiModelProperty(value = "动态描述")
private String description;
@ApiModelProperty(value = "位置信息")
private String location;
@ApiModelProperty(value = "纬度")
private BigDecimal lat;
@ApiModelProperty(value = "经度")
private BigDecimal lon;
@ApiModelProperty(value = "图片/视频")
private MediaVO mediaVO;
@ApiModelProperty(value = "点赞数")
private Integer likesCount;
@ApiModelProperty(value = "评论数")
private Integer commentCount;
@ApiModelProperty(value = "是否点赞")
private Boolean likes;
@ApiModelProperty(value = "动态发布时间")
private Date dynamicPublishTime;
@ApiModelProperty(value = "评论信息")
private List<CommentAndReplyVO> commentAndReplyVO;
@ApiModelProperty(value = "发布动态用户信息")
private UserBaseInfoVO userBaseInfo;
@ApiModelProperty(value = "用户id")
private Integer userAccountId;
@ApiModelProperty(value = "动态id")
private Integer id;
@ApiModelProperty(value = "动态描述")
private String description;
@ApiModelProperty(value = "位置信息")
private String location;
@ApiModelProperty(value = "纬度")
private BigDecimal lat;
@ApiModelProperty(value = "经度")
private BigDecimal lon;
@ApiModelProperty(value = "媒体资源")
private List<MediaVO> mediaVO;
@ApiModelProperty(value = "点赞数")
private Integer likesCount;
@ApiModelProperty(value = "评论数")
private Integer commentCount;
@ApiModelProperty(value = "是否点赞")
private Boolean likes;
@ApiModelProperty(value = "动态发布时间")
private Date dynamicPublishTime;
@ApiModelProperty(value = "评论信息")
private List<DynamicVO> commentAndReplyVO;
}
......@@ -2,24 +2,25 @@ package com.mmc.csf.release.forum.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
/**
* @Author LW
* @date 2023/5/16 10:42
* 概要:图片或影像
*
* @date 2023/5/16 10:42 概要:图片或影像
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class MediaVO implements Serializable {
@ApiModelProperty("图片")
private List<String> picture;
@ApiModelProperty("视频")
private String videoUrl;
@ApiModelProperty("url")
private String url;
@ApiModelProperty("类型: 0:图片 1:视频")
private Integer type;
}
......@@ -9,23 +9,25 @@ import java.io.Serializable;
/**
* @Author LW
* @date 2023/5/29 15:30
* 概要:
*
* @date 2023/5/29 15:30 概要:
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class UserBaseInfoVO implements Serializable {
@ApiModelProperty(value = "用户id")
private Integer id;
@ApiModelProperty(value = "用户昵称")
private String nickName;
@ApiModelProperty(value = "用户头像")
private String userImg;
@ApiModelProperty(value = "用户名称")
private String userName;
@ApiModelProperty(value = "手机号")
private String phone;
@ApiModelProperty(value = "UID")
private String uid;
@ApiModelProperty(value = "用户昵称")
private String nickName;
@ApiModelProperty(value = "用户头像")
private String userImg;
@ApiModelProperty(value = "用户名称")
private String userName;
@ApiModelProperty(value = "手机号")
private String phone;
@ApiModelProperty(value = "UID")
private String uid;
}
package com.mmc.csf.release.controller;
import com.mmc.csf.common.util.web.ResultBody;
import com.mmc.csf.release.forum.vo.CommentAndReplyVO;
import com.mmc.csf.release.forum.vo.CommentVO;
import com.mmc.csf.release.forum.vo.DynamicVO;
import com.mmc.csf.release.service.DynamicService;
......@@ -13,63 +12,53 @@ import javax.servlet.http.HttpServletRequest;
/**
* @Author LW
* @date 2023/5/15 10:29
* 概要:动态信息控制层
*
* @date 2023/5/15 10:29 概要:动态信息控制层
*/
@Api(tags = {"web-小程序-论坛社区-模块"})
@RestController
@RequestMapping("/dynamic")
public class DynamicController extends BaseController {
@Resource
private DynamicService dynamicService;
@Resource private DynamicService dynamicService;
@ApiOperation(value = "动态发布")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@PostMapping("/publish")
public ResultBody publishDynamic(@RequestBody DynamicVO dynamicVO, HttpServletRequest request) {
return dynamicService.insertDynamic(dynamicVO,this.getUserLoginInfoFromRedis(request).getUserAccountId());
}
@ApiOperation(value = "动态发布")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@PostMapping("/publish")
public ResultBody publishDynamic(@RequestBody DynamicVO dynamicVO, HttpServletRequest request) {
return dynamicService.insertDynamic(
dynamicVO, this.getUserLoginInfoFromRedis(request).getUserAccountId());
}
@ApiOperation(value = "点赞或取消点赞")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@GetMapping("/likeOrCancel")
public ResultBody likeOrCancel(HttpServletRequest request, @ApiParam(value = "动态id") @RequestParam Integer dynamicId) {
return dynamicService.likeDynamic(this.getUserLoginInfoFromRedis(request).getUserAccountId(), dynamicId);
}
@ApiOperation(value = "点赞或取消点赞")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@GetMapping("/likeOrCancel")
public ResultBody likeOrCancel(
HttpServletRequest request, @ApiParam(value = "动态id") @RequestParam Integer dynamicId) {
return dynamicService.likeDynamic(
this.getUserLoginInfoFromRedis(request).getUserAccountId(), dynamicId);
}
@ApiOperation(value = "评论动态或回复评论")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@PostMapping("/comment")
public ResultBody commentDynamic(@RequestBody CommentVO commentVO,HttpServletRequest request) {
return dynamicService.commentDynamic(commentVO,this.getUserLoginInfoFromRedis(request).getUserAccountId());
}
@ApiOperation(value = "评论动态或回复评论")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@PostMapping("/comment")
public ResultBody commentDynamic(@RequestBody CommentVO commentVO, HttpServletRequest request) {
return dynamicService.commentDynamic(
commentVO, this.getUserLoginInfoFromRedis(request).getUserAccountId());
}
@ApiOperation(value = "删除评论")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@DeleteMapping("/removeComment")
public ResultBody removeComment(@RequestParam Integer id) {
return dynamicService.deleteComment(id);
}
@ApiOperation(value = "删除评论")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@DeleteMapping("/removeComment")
public ResultBody removeComment(@RequestParam Integer id) {
return dynamicService.deleteComment(id);
}
@ApiOperation(value = "根据动态查看评论")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = CommentAndReplyVO.class)})
@GetMapping("/byDynamic")
public ResultBody getCommentsByDynamic(@RequestParam Integer dynamicId, HttpServletRequest request) {
return ResultBody.success(dynamicService.getCommentAndReply(dynamicId, request));
}
@ApiOperation(value = "动态详情")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = DynamicVO.class)})
@GetMapping("/dynamicDetails")
public ResultBody dynamicDetails(@RequestParam Integer dynamicId,HttpServletRequest request) {
return dynamicService.dynamicDetails(dynamicId,this.getUserLoginInfoFromRedis(request).getUserAccountId(), request);
}
@ApiOperation(value = "动态列表")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = DynamicVO.class)})
@GetMapping("/dynamicList")
public ResultBody dynamicList(@RequestParam Integer pageNo, @RequestParam Integer pageSize,HttpServletRequest request) {
return ResultBody.success(dynamicService.dynamicList(pageNo, pageSize, this.getUserLoginInfoFromRedis(request).getUserAccountId(), request));
}
@ApiOperation(value = "动态详情")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = DynamicVO.class)})
@GetMapping("/dynamicDetails")
public ResultBody dynamicDetails(@RequestParam Integer dynamicId, HttpServletRequest request) {
return dynamicService.dynamicDetails(
dynamicId, this.getUserLoginInfoFromRedis(request).getUserAccountId(), request);
}
}
package com.mmc.csf.release.dao;
import com.mmc.csf.release.entity.forum.ForumDynamicDO;
import com.mmc.csf.release.forum.vo.CommentAndReplyVO;
import com.mmc.csf.release.forum.vo.CommentVO;
import org.apache.ibatis.annotations.Mapper;
......@@ -9,52 +10,61 @@ import java.util.List;
/**
* @Author LW
* @date 2023/5/15 10:29
* 概要:动态评论数据访问层
*
* @date 2023/5/15 10:29 概要:动态评论数据访问层
*/
@Mapper
public interface CommentDAO {
/**
* 插入评论
*
* @param userId 用户id
* @param dynamicId 动态id
* @param content 内容
*/
void insertComment(@Param("userId") int userId, @Param("dynamicId") int dynamicId, @Param("content") String content);
/**
* 删除评论
*
* @param id id
* @return int
*/
int deleteComment(int id);
/**
* 插入回复评论
*
* @param userId 用户id
* @param dynamicId 动态id
* @param content 内容
* @param parentId 父id
*/
void insertReplyComment(@Param("userId") int userId, @Param("dynamicId") int dynamicId, @Param("content") String content, @Param("parentId") Integer parentId);
/**
* 查询评论列表
*
* @param dynamicId 动态id
* @return {@link List}<{@link CommentAndReplyVO}>
*/
List<CommentAndReplyVO> selectCommentList(@Param("dynamicId") Integer dynamicId);
/**
* 查询子评论列表
*
* @param parentIds 父id
* @return {@link List}<{@link CommentVO}>
*/
List<CommentVO> selectSubCommentList(List<Integer> parentIds);
/**
* 插入评论
*
* @param userId 用户id
* @param dynamicId 动态id
* @param content 内容
*/
void insertComment(
@Param("userId") int userId,
@Param("dynamicId") int dynamicId,
@Param("content") String content);
/**
* 删除评论
*
* @param id id
* @return int
*/
int deleteComment(int id);
/**
* 插入回复评论
*
* @param userId 用户id
* @param dynamicId 动态id
* @param content 内容
* @param parentId 父id
*/
void insertReplyComment(
@Param("userId") int userId,
@Param("dynamicId") int dynamicId,
@Param("content") String content,
@Param("parentId") Integer parentId);
/**
* 查询评论列表
*
* @param dynamicId 动态id
* @return {@link List}<{@link CommentAndReplyVO}>
*/
List<CommentAndReplyVO> selectCommentList(@Param("dynamicId") Integer dynamicId);
/**
* 查询子评论列表
*
* @param parentIds 父id
* @return {@link List}<{@link CommentVO}>
*/
List<CommentVO> selectSubCommentList(List<Integer> parentIds);
List<ForumDynamicDO> findByRoot(Integer dynamicId);
}
package com.mmc.csf.release.dao;
import com.mmc.csf.release.entity.forum.ForumDynamicDO;
import com.mmc.csf.release.entity.forum.ForumImageDO;
import com.mmc.csf.release.entity.forum.ForumResourceDO;
import com.mmc.csf.release.entity.forum.ForumVideoDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
......@@ -92,9 +92,9 @@ public interface DynamicDAO {
* 列表动态图片
*
* @param ids id
* @return {@link List}<{@link ForumImageDO}>
* @return {@link List}<{@link ForumResourceDO}>
*/
List<ForumImageDO> listDynamicPicture(List<Integer> ids);
List<ForumResourceDO> listDynamicPicture(List<Integer> ids);
/**
* 动态视频列表
......@@ -108,9 +108,9 @@ public interface DynamicDAO {
* 动态图片
*
* @param dynamicId 动态id
* @return {@link List}<{@link ForumImageDO}>
* @return {@link List}<{@link ForumResourceDO}>
*/
List<ForumImageDO> dynamicPicture(Integer dynamicId);
List<ForumResourceDO> dynamicPicture(Integer dynamicId);
/**
* 动态视频
......@@ -119,4 +119,11 @@ public interface DynamicDAO {
* @return {@link ForumVideoDO}
*/
ForumVideoDO dynamicVideo(Integer dynamicId);
void insertResource(
@Param("dynamicId") Integer dynamicId, @Param("type") int type, @Param("url") String url);
List<ForumResourceDO> listDynamicResources(Integer dynamicId);
List<ForumDynamicDO> getDynamicComment(String dynamicId);
}
package com.mmc.csf.release.entity.common;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* @Author LW
*
* @date 2023/6/21 10:47 概要:基础实体
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class BaseDO implements Serializable {
private Integer id;
private Date createTime;
private Date updateTime;
private Integer deleted;
}
package com.mmc.csf.release.entity.forum;
import com.mmc.csf.release.entity.common.BaseDO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* 评论表(ForumCommentDO)实体类
......@@ -18,22 +18,13 @@ import java.util.Date;
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
public class ForumCommentDO implements Serializable {
public class ForumCommentDO extends BaseDO implements Serializable {
private static final long serialVersionUID = 768897358613182410L;
/** 评论id */
private Integer id;
/** 用户id,外键,关联user表 */
private Integer userId; // todo userAccountId
private Integer userAccountId;
/** 动态id,外键,关联dynamic表 */
private Integer dynamicId;
/** 评论内容 */
private String content;
/** 点赞数量 */
private Integer likesCount;
/** 创建时间 */
private Date createTime;
/** 修改时间 */
private Date updateTime;
/** 是否删除,0表示未删除,1表示已删除 */
private Integer deleted;
}
package com.mmc.csf.release.entity.forum;
import com.mmc.csf.release.entity.common.BaseDO;
import com.mmc.csf.release.forum.dto.DynamicInfoDTO;
import com.mmc.csf.release.forum.vo.DynamicVO;
import lombok.AllArgsConstructor;
......@@ -9,7 +10,6 @@ import lombok.experimental.Accessors;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* 动态信息表(ForumDynamicDO)实体类
......@@ -21,16 +21,12 @@ import java.util.Date;
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
public class ForumDynamicDO implements Serializable {
public class ForumDynamicDO extends BaseDO implements Serializable {
private static final long serialVersionUID = 570379773690905364L;
/** 主键,自增长 */
private Integer id;
/** 版本字段pid */
private Integer pid; // todo 修改为 version
/** 动态标题 */
private String title; // todo 删除
/** 版本字段 */
private Integer version;
/** 发布用户ID */
private Integer userId; // todo 改userAccountId
private Integer userAccountId;
/** 动态描述 */
private String description;
/** 发布动态具体位置 */
......@@ -43,15 +39,10 @@ public class ForumDynamicDO implements Serializable {
private Integer likesCount;
/** 评论数 */
private Integer commentsCount;
/** 创建时间 */
private Date createTime;
/** 修改时间 */
private Date updateTime;
/** 是否删除,默认为0表示未删除 */
private Integer deleted;
/** 记录父节点id */
private String rootPath;
public ForumDynamicDO(DynamicVO dynamicVO) {
this.title = dynamicVO.getTitle();
this.description = dynamicVO.getDescription();
this.location = dynamicVO.getLocation();
this.lat = dynamicVO.getLat();
......@@ -60,19 +51,30 @@ public class ForumDynamicDO implements Serializable {
public DynamicVO buildDynamicVO() {
return DynamicVO.builder()
.id(id)
.id(this.getId())
.userAccountId(userAccountId)
.description(description)
.commentCount(commentsCount)
.likesCount(likesCount)
.lat(lat)
.lon(lon)
.location(location)
.title(title)
.dynamicPublishTime(createTime)
.dynamicPublishTime(this.getCreateTime())
.build();
}
public DynamicInfoDTO buildDynamicInfoDTO() {
return DynamicInfoDTO.builder().id(id).description(description).show(deleted).build();
return DynamicInfoDTO.builder()
.id(this.getId())
.userAccountId(userAccountId)
.description(description)
.show(this.getDeleted())
.build();
}
public void defaultInfo() {
this.lon = null;
this.lat = null;
this.location = null;
}
}
package com.mmc.csf.release.entity.forum;
import com.mmc.csf.release.forum.vo.MediaVO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
......@@ -9,7 +10,7 @@ import java.io.Serializable;
import java.util.Date;
/**
* 动态图片表(ForumImageDO)实体类
* 动态图片表(ForumResourceDO)实体类
*
* @author lw
* @since 2023-05-16 09:57:50
......@@ -18,18 +19,20 @@ import java.util.Date;
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
public class ForumImageDO implements Serializable {
public class ForumResourceDO implements Serializable {
private static final long serialVersionUID = 678578415154893126L;
/** 主键,自增长 */
private Integer id; // todo 删除
/** 动态ID,必填 */
private Integer dynamicId;
/** 图片URL,必填 */
private String url;
private String resourceUrl;
/** 创建时间 */
private Date createTime;
/** 修改时间 */
private Date updateTime;
/** 是否删除,默认为0表示未删除 */
private Integer deleted; // todo 删除
/** 类型 */
private Integer type;
public MediaVO buildMedia() {
return MediaVO.builder().type(type).url(resourceUrl).build();
}
}
package com.mmc.csf.release.enums;
/**
* @Author LW
*
* @date 2023/6/21 17:15 概要:论坛枚举
*/
public enum ForumEnum {
PICTURE(0, "图片"),
VIDEO(1, "视频");
private Integer code;
private String name;
ForumEnum(Integer code, String name) {
this.code = code;
this.name = name;
}
public void setCode(Integer code) {
this.code = code;
}
public Integer getCode() {
return this.code;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
}
package com.mmc.csf.release.service;
import com.mmc.csf.common.util.page.PageResult;
import com.mmc.csf.common.util.web.ResultBody;
import com.mmc.csf.release.forum.vo.CommentAndReplyVO;
import com.mmc.csf.release.forum.vo.CommentVO;
import com.mmc.csf.release.forum.vo.DynamicVO;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
/**
* @Author LW
* @date 2023/5/15 10:29
* 概要:动态信息service层
*
* @date 2023/5/15 10:29 概要:动态信息service层
*/
public interface DynamicService {
/**
* 插入动态
*
* @param dynamicVO 动态
* @return {@link ResultBody}
*/
ResultBody insertDynamic(DynamicVO dynamicVO,Integer userAccountId);
/**
* 点赞动态
*
* @param userId 用户id
* @param dynamicId 动态id
* @return {@link ResultBody}
*/
ResultBody likeDynamic(Integer userId, Integer dynamicId);
/**
* 评论动态
*
* @param commentVO 评论信息
* @return {@link ResultBody}
*/
ResultBody commentDynamic(CommentVO commentVO,Integer userAccountId);
/**
* 删除评论
*
* @param id id
* @return {@link ResultBody}
*/
ResultBody deleteComment(Integer id);
/**
* 根据动态查看评论
*
* @param dynamicId 动态id
* @param request
* @return {@link List}<{@link CommentVO}>
*/
List<CommentAndReplyVO> getCommentAndReply(Integer dynamicId, HttpServletRequest request);
/**
* 动态列表
*
* @param pageNo 页面
* @param pageSize 页面大小
* @param userId
* @param request
* @return {@link List}<{@link DynamicVO}>
*/
PageResult dynamicList(Integer pageNo, Integer pageSize, Integer userId, HttpServletRequest request);
/**
* 动态细节
*
* @param dynamicId 动态id
* @param userId 用户id
* @return {@link ResultBody}
*/
ResultBody dynamicDetails(Integer dynamicId, Integer userId, HttpServletRequest request);
/**
* 插入动态
*
* @param dynamicVO 动态
* @return {@link ResultBody}
*/
ResultBody insertDynamic(DynamicVO dynamicVO, Integer userAccountId);
/**
* 点赞动态
*
* @param userId 用户id
* @param dynamicId 动态id
* @return {@link ResultBody}
*/
ResultBody likeDynamic(Integer userId, Integer dynamicId);
/**
* 评论动态
*
* @param commentVO 评论信息
* @return {@link ResultBody}
*/
ResultBody commentDynamic(CommentVO commentVO, Integer userAccountId);
/**
* 删除评论
*
* @param id id
* @return {@link ResultBody}
*/
ResultBody deleteComment(Integer id);
/**
* 动态细节
*
* @param dynamicId 动态id
* @param userId 用户id
* @return {@link ResultBody}
*/
ResultBody dynamicDetails(Integer dynamicId, Integer userId, HttpServletRequest request);
}
......@@ -2,18 +2,16 @@ package com.mmc.csf.release.service.impl;
import com.mmc.csf.common.util.page.PageResult;
import com.mmc.csf.infomation.dto.UserAccountSimpleDTO;
import com.mmc.csf.release.auth.qo.BUserAccountQO;
import com.mmc.csf.release.auth.qo.UserAccountQO;
import com.mmc.csf.release.constant.TokenConstant;
import com.mmc.csf.release.dao.BackstageForumDao;
import com.mmc.csf.release.dao.DynamicDAO;
import com.mmc.csf.release.entity.forum.ForumDynamicDO;
import com.mmc.csf.release.entity.forum.ForumImageDO;
import com.mmc.csf.release.entity.forum.ForumResourceDO;
import com.mmc.csf.release.entity.forum.ForumVideoDO;
import com.mmc.csf.release.feign.UserAppApi;
import com.mmc.csf.release.forum.dto.DynamicInfoDTO;
import com.mmc.csf.release.forum.qo.DynamicQO;
import com.mmc.csf.release.forum.vo.MediaVO;
import com.mmc.csf.release.forum.vo.UserBaseInfoVO;
import com.mmc.csf.release.service.BackstageForumService;
import org.apache.commons.collections4.CollectionUtils;
......@@ -47,7 +45,7 @@ public class BackstageForumServiceImpl implements BackstageForumService {
userAccountQO.setKeyword(dynamic.getKeyword());
// 获取筛选的用户id
List<UserAccountSimpleDTO> userAccountSimpleDTOS =
userAppApi.feignListAppUserAccount(userAccountQO, request.getHeader(TokenConstant.TOKEN));
userAppApi.feignListAppUserAccount(userAccountQO, request.getHeader(TokenConstant.TOKEN));
if (CollectionUtils.isNotEmpty(userAccountSimpleDTOS)) {
// 获取用户id
userIds =
......@@ -71,20 +69,20 @@ public class BackstageForumServiceImpl implements BackstageForumService {
List<Integer> ids =
dynamicList.stream().map(ForumDynamicDO::getId).collect(Collectors.toList());
// 根据id集合查询图片
List<ForumImageDO> forumImageList = dynamicDAO.listDynamicPicture(ids);
Map<Integer, List<ForumImageDO>> ImageMap =
forumImageList.stream().collect(Collectors.groupingBy(ForumImageDO::getDynamicId));
List<ForumResourceDO> forumImageList = dynamicDAO.listDynamicPicture(ids);
Map<Integer, List<ForumResourceDO>> ImageMap =
forumImageList.stream().collect(Collectors.groupingBy(ForumResourceDO::getDynamicId));
// 获取视频信息
List<ForumVideoDO> forumVideoList = dynamicDAO.listDynamicVideo(ids);
// 获取查询到的列表用户信息
// 获取用户信息
Set<Integer> ListUserIds =
dynamicList.stream().map(ForumDynamicDO::getUserId).collect(Collectors.toSet());
dynamicList.stream().map(ForumDynamicDO::getUserAccountId).collect(Collectors.toSet());
List<Integer> userIdList = new ArrayList<>(ListUserIds);
UserAccountQO accountQO = new UserAccountQO();
accountQO.setUserIds(userIdList);
List<UserAccountSimpleDTO> userAccountSimpleList =
userAppApi.feignListAppUserAccount(accountQO, request.getHeader(TokenConstant.TOKEN));
userAppApi.feignListAppUserAccount(accountQO, request.getHeader(TokenConstant.TOKEN));
Map<Integer, UserAccountSimpleDTO> userAccountInfoMap =
userAccountSimpleList.stream()
.collect(Collectors.toMap(UserAccountSimpleDTO::getId, Function.identity()));
......@@ -93,23 +91,10 @@ public class BackstageForumServiceImpl implements BackstageForumService {
.map(
d -> {
DynamicInfoDTO dynamicInfoDTO = d.buildDynamicInfoDTO();
MediaVO mediaVO = new MediaVO();
if (CollectionUtils.isNotEmpty(ImageMap.get(d.getId()))) {
mediaVO.setPicture(
ImageMap.get(d.getId()).stream()
.map(ForumImageDO::getUrl)
.collect(Collectors.toList()));
}
for (ForumVideoDO forumVideoDO : forumVideoList) {
if (forumVideoDO.getDynamicId().equals(d.getId())) {
mediaVO.setVideoUrl(forumVideoDO.getUrl());
break;
}
}
UserAccountSimpleDTO userAccountSimpleDTO = userAccountInfoMap.get(d.getUserId());
UserAccountSimpleDTO userAccountSimpleDTO =
userAccountInfoMap.get(d.getUserAccountId());
if (userAccountSimpleDTO != null) {
UserBaseInfoVO userBaseInfoVO = new UserBaseInfoVO();
userBaseInfoVO.setId(d.getUserId());
userBaseInfoVO.setNickName(userAccountSimpleDTO.getNickName());
userBaseInfoVO.setUserImg(userAccountSimpleDTO.getUserImg());
userBaseInfoVO.setUserName(userAccountSimpleDTO.getUserName());
......@@ -117,7 +102,6 @@ public class BackstageForumServiceImpl implements BackstageForumService {
userBaseInfoVO.setUid(userAccountSimpleDTO.getUid());
dynamicInfoDTO.setUserBaseInfo(userBaseInfoVO);
}
dynamicInfoDTO.setMediaVO(mediaVO);
return dynamicInfoDTO;
})
.collect(Collectors.toList());
......
......@@ -14,8 +14,12 @@
</insert>
<insert id="insertDynamic" keyProperty="id" useGeneratedKeys="true"
parameterType="com.mmc.csf.release.entity.forum.ForumDynamicDO">
INSERT INTO forum_dynamic(title, user_id, description, location, lat, lon)
VALUES (#{title}, #{userId}, #{description}, #{location}, #{lat}, #{lon})
INSERT INTO forum_dynamic(user_account_id, description, location, lat, lon, root_path)
VALUES (#{userAccountId}, #{description}, #{location}, #{lat}, #{lon}, #{rootPath})
</insert>
<insert id="insertResource">
insert into forum_resource(dynamic_id, resource_url, `type`)
values (#{dynamicId}, #{url}, #{type})
</insert>
<update id="updateDynamicLikeCount">
update forum_dynamic
......@@ -40,9 +44,9 @@
</update>
<select id="getDynamicInfo" resultType="com.mmc.csf.release.entity.forum.ForumDynamicDO">
select id,
pid,
title,
user_id,
version,
user_account_id,
root_path,
description,
location,
lat,
......@@ -77,7 +81,7 @@
LIMIT #{itemIndex}, #{pageSize}
</select>
<select id="listDynamicPicture" resultType="com.mmc.csf.release.entity.forum.ForumImageDO">
<select id="listDynamicPicture" resultType="com.mmc.csf.release.entity.forum.ForumResourceDO">
select id, url , dynamic_id
from forum_image
where
......@@ -95,7 +99,7 @@
#{item}
</foreach>
</select>
<select id="dynamicPicture" resultType="com.mmc.csf.release.entity.forum.ForumImageDO">
<select id="dynamicPicture" resultType="com.mmc.csf.release.entity.forum.ForumResourceDO">
select id,
dynamic_id,
url
......@@ -111,4 +115,28 @@
where dynamic_id = #{dynamicId}
and is_deleted = 0
</select>
<select id="listDynamicResources" resultType="com.mmc.csf.release.entity.forum.ForumResourceDO">
select resource_url,
`type`,
create_time,
update_time
from forum_resource
where dynamic_id = #{dynamicId}
</select>
<select id="getDynamicComment" resultType="com.mmc.csf.release.entity.forum.ForumDynamicDO">
select id,
version,
user_account_id,
root_path,
description,
location,
lat,
lon,
likes_count,
comments_count,
create_time
from forum_dynamic
where root_path = #{dynamicId}
and is_deleted = 0
</select>
</mapper>
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论