提交 17f9fbcd 作者: xiaowang

动态详情接口输出及时间类型配置

上级 3159f9b9
...@@ -7,6 +7,7 @@ import lombok.Data; ...@@ -7,6 +7,7 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
...@@ -25,11 +26,13 @@ public class CommentAndReplyVO implements Serializable { ...@@ -25,11 +26,13 @@ public class CommentAndReplyVO implements Serializable {
private Integer dynamicId; private Integer dynamicId;
@ApiModelProperty(value = "父级评论id") @ApiModelProperty(value = "父级评论id")
private Integer parentId; private Integer parentId;
@ApiModelProperty(value = "模拟用户id") @ApiModelProperty(value = "动态发布人的id(后期返回用户头像昵称信息)")
private Integer userId; private Integer userId;
@ApiModelProperty(value = "评论内容") @ApiModelProperty(value = "评论内容")
private String content; private String content;
@ApiModelProperty(value = "评论点赞数") @ApiModelProperty(value = "评论点赞数")
private Integer likesCount; private Integer likesCount;
@ApiModelProperty(value = "评论时间")
private Date createTime;
private List<CommentAndReplyVO> children; private List<CommentAndReplyVO> children;
} }
...@@ -8,6 +8,9 @@ import lombok.NoArgsConstructor; ...@@ -8,6 +8,9 @@ import lombok.NoArgsConstructor;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/** /**
* @Author LW * @Author LW
* @date 2023/5/15 10:29 * @date 2023/5/15 10:29
...@@ -40,4 +43,8 @@ public class DynamicVO implements Serializable { ...@@ -40,4 +43,8 @@ public class DynamicVO implements Serializable {
private Integer commentCount; private Integer commentCount;
@ApiModelProperty(value = "是否点赞") @ApiModelProperty(value = "是否点赞")
private Boolean likes; private Boolean likes;
@ApiModelProperty(value = "动态发布时间")
private Date dynamicPublishTime;
@ApiModelProperty(value = "评论信息")
private List<CommentAndReplyVO> commentAndReplyVO;
} }
package com.mmc.csf.release.config;
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
//Converter<S,T> S: 代表的是源,将要转换的数据类型 T:目标类型,将会转成什么数据类型
@Component
public class GlobalFormDateConvert implements Converter<String, Date> {
// 静态初始化定义日期字符串参数列表(需要转换的)
private static final List<String> paramList = new ArrayList<>();
// 静态初始化可能初夏你的日期格式
private static final String param1 = "yyyy-MM";
private static final String param2 = "yyyy-MM-dd";
private static final String param3 = "yyyy-MM-dd HH:mm";
private static final String param4 = "yyyy-MM-dd HH:mm:ss";
// 静态代码块,将日期参数加入到列表中
static {
paramList.add(param1);
paramList.add(param2);
paramList.add(param3);
paramList.add(param4);
}
// 自定义函数,将字符串转Date 参1:传入的日期字符串 参2:格式参数
public Date parseDate(String source, String format) {
System.out.println("parseDate转换日期");
Date date = null;
try {
// 日期格式转换器
DateFormat dateFormat = new SimpleDateFormat(format);
date = dateFormat.parse(source);
} catch (Exception e) {
e.printStackTrace();
}
return date;
}
// convert转换方法 ,s是将会传递过来的日期的字符串
@Override
public Date convert(String source) {
System.out.println("convert日期格式转换器");
if (StringUtils.isEmpty(source)) {
return null;
}
source = source.trim(); // 去除首尾空格
// 正则表达式判断是哪一种格式参数
if (source.matches("^\\d{4}-\\d{1,2}$")) {
return parseDate(source, paramList.get(0));
} else if (source.matches("^\\d{4}-\\d{1,2}-\\d{1,2}$")) {
return parseDate(source, paramList.get(1));
} else if (source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}$")) {
return parseDate(source, paramList.get(2));
} else if (source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}:\\d{1,2}$")) {
return parseDate(source, paramList.get(3));
} else {
throw new IllegalArgumentException("还未定义该种字符串转Date的日期转换格式 --> 【日期格式】:" + source);
}
}
}
package com.mmc.csf.release.config;
import com.fasterxml.jackson.databind.util.StdDateFormat;
import org.springframework.util.StringUtils;
import java.text.FieldPosition;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Date;
public class GlobalJsonDateConvert extends StdDateFormat {
private static final long serialVersionUID = -6738131740618766141L;
// 静态初始化final,共享
public static final GlobalJsonDateConvert instance = new GlobalJsonDateConvert();
// 覆盖parse(String)这个方法即可实现
@Override
public Date parse(String dateStr, ParsePosition pos) {
return getDate(dateStr, pos);
}
@Override
public Date parse(String dateStr) {
ParsePosition pos = new ParsePosition(0);
return getDate(dateStr, pos);
}
private Date getDate(String dateStr, ParsePosition pos) {
SimpleDateFormat sdf = null;
if (StringUtils.isEmpty(dateStr)) {
return null;
} else if (dateStr.matches("^\\d{4}-\\d{1,2}$")) {
sdf = new SimpleDateFormat("yyyy-MM");
return sdf.parse(dateStr, pos);
} else if (dateStr.matches("^\\d{4}-\\d{1,2}-\\d{1,2}$")) {
sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.parse(dateStr, pos);
} else if (dateStr.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}$")) {
sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
return sdf.parse(dateStr, pos);
} else if (dateStr.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}:\\d{1,2}$")) {
sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.parse(dateStr, pos);
} else if (dateStr.length() == 23) {
sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
return sdf.parse(dateStr, pos);
}
return super.parse(dateStr, pos);
}
@Override
public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.format(date, toAppendTo, fieldPosition);
}
@Override
public GlobalJsonDateConvert clone() {
return new GlobalJsonDateConvert();
}
}
...@@ -58,10 +58,17 @@ public class DynamicController { ...@@ -58,10 +58,17 @@ public class DynamicController {
return ResultBody.success(dynamicService.getCommentAndReply(dynamicId)); return ResultBody.success(dynamicService.getCommentAndReply(dynamicId));
} }
@ApiOperation(value = "动态详情")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = DynamicVO.class)})
@GetMapping("/dynamicDetails")
public ResultBody dynamicDetails(@RequestParam Integer dynamicId,@RequestParam Integer userId) {
return ResultBody.success(dynamicService.dynamicDetails(dynamicId,userId));
}
@ApiOperation(value = "动态列表") @ApiOperation(value = "动态列表")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = DynamicVO.class)}) @ApiResponses({@ApiResponse(code = 200, message = "OK", response = DynamicVO.class)})
@GetMapping("/dynamicList") @GetMapping("/dynamicList")
public ResultBody dynamicList(@RequestParam Integer pageNo, @RequestParam Integer pageSize, @RequestParam Integer userId) { public ResultBody dynamicList(@RequestParam Integer pageNo, @RequestParam Integer pageSize, @RequestParam Integer userId) {
return ResultBody.success(dynamicService.dynamicList(pageNo, pageSize,userId)); return ResultBody.success(dynamicService.dynamicList(pageNo, pageSize, userId));
} }
} }
...@@ -7,8 +7,6 @@ import com.mmc.csf.release.service.FlyerTrainingService; ...@@ -7,8 +7,6 @@ import com.mmc.csf.release.service.FlyerTrainingService;
import com.mmc.csf.release.flyer.vo.DronePilotLicenseVO; import com.mmc.csf.release.flyer.vo.DronePilotLicenseVO;
import com.mmc.csf.release.flyer.vo.FlightSkillsVO; import com.mmc.csf.release.flyer.vo.FlightSkillsVO;
import com.mmc.csf.release.flyer.vo.RegistrationVO; import com.mmc.csf.release.flyer.vo.RegistrationVO;
import com.mmc.csf.release.task.qo.TaskServiceQo;
import com.mmc.csf.release.task.vo.TaskServiceVO;
import io.swagger.annotations.*; import io.swagger.annotations.*;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
......
...@@ -103,4 +103,20 @@ public interface DynamicDAO { ...@@ -103,4 +103,20 @@ public interface DynamicDAO {
* @return {@link List}<{@link ForumVideoDO}> * @return {@link List}<{@link ForumVideoDO}>
*/ */
List<ForumVideoDO> listDynamicVideo(List<Integer> ids); List<ForumVideoDO> listDynamicVideo(List<Integer> ids);
/**
* 动态图片
*
* @param dynamicId 动态id
* @return {@link List}<{@link ForumImageDO}>
*/
List<ForumImageDO> dynamicPicture(Integer dynamicId);
/**
* 动态视频
*
* @param dynamicId 动态id
* @return {@link ForumVideoDO}
*/
ForumVideoDO dynamicVideo(Integer dynamicId);
} }
...@@ -88,7 +88,7 @@ public class ForumDynamicDO implements Serializable { ...@@ -88,7 +88,7 @@ public class ForumDynamicDO implements Serializable {
return DynamicVO.builder().id(id).description(description) return DynamicVO.builder().id(id).description(description)
.commentCount(commentsCount).likesCount(likesCount) .commentCount(commentsCount).likesCount(likesCount)
.lat(lat).lon(lon).location(location).title(title) .lat(lat).lon(lon).location(location).title(title)
.userId(userId).build(); .userId(userId).dynamicPublishTime(createTime).build();
} }
} }
...@@ -53,7 +53,7 @@ public interface DynamicService { ...@@ -53,7 +53,7 @@ public interface DynamicService {
* @param dynamicId 动态id * @param dynamicId 动态id
* @return {@link List}<{@link CommentVO}> * @return {@link List}<{@link CommentVO}>
*/ */
List<CommentAndReplyVO> getCommentAndReply(int dynamicId); List<CommentAndReplyVO> getCommentAndReply(Integer dynamicId);
/** /**
* 动态列表 * 动态列表
...@@ -64,4 +64,13 @@ public interface DynamicService { ...@@ -64,4 +64,13 @@ public interface DynamicService {
* @return {@link List}<{@link DynamicVO}> * @return {@link List}<{@link DynamicVO}>
*/ */
PageResult dynamicList(Integer pageNo, Integer pageSize, Integer userId); PageResult dynamicList(Integer pageNo, Integer pageSize, Integer userId);
/**
* 动态细节
*
* @param dynamicId 动态id
* @param userId 用户id
* @return {@link ResultBody}
*/
ResultBody dynamicDetails(Integer dynamicId, Integer userId);
} }
...@@ -97,7 +97,7 @@ public class DynamicServiceImpl implements DynamicService { ...@@ -97,7 +97,7 @@ public class DynamicServiceImpl implements DynamicService {
} }
@Override @Override
public List<CommentAndReplyVO> getCommentAndReply(int dynamicId) { public List<CommentAndReplyVO> getCommentAndReply(Integer dynamicId) {
// 获取评论列表 // 获取评论列表
List<CommentAndReplyVO> commentList = commentDAO.selectCommentList(dynamicId); List<CommentAndReplyVO> commentList = commentDAO.selectCommentList(dynamicId);
List<CommentAndReplyVO> topLevelComment = new ArrayList<>(); List<CommentAndReplyVO> topLevelComment = new ArrayList<>();
...@@ -155,4 +155,31 @@ public class DynamicServiceImpl implements DynamicService { ...@@ -155,4 +155,31 @@ public class DynamicServiceImpl implements DynamicService {
}).collect(Collectors.toList()); }).collect(Collectors.toList());
return PageResult.buildPage(pageNo, pageSize, count, dynamicVOList); return PageResult.buildPage(pageNo, pageSize, count, dynamicVOList);
} }
@Override
public ResultBody dynamicDetails(Integer dynamicId, Integer userId) {
// 判断此动态是否还存在
ForumDynamicDO dynamicInfo = dynamicDAO.getDynamicInfo(dynamicId);
if (dynamicInfo == null) {
return ResultBody.error("动态不存在或已删除!");
}
// 获取图片视频
List<ForumImageDO> forumImage = dynamicDAO.dynamicPicture(dynamicId);
ForumVideoDO forumVideoDO = dynamicDAO.dynamicVideo(dynamicId);
MediaVO mediaVO = new MediaVO();
if (forumVideoDO != null) {
mediaVO.setVideoUrl(forumVideoDO.getUrl());
}
if (CollectionUtils.isNotEmpty(forumImage)) {
mediaVO.setPicture(forumImage.stream().map(ForumImageDO::getUrl).collect(Collectors.toList()));
}
DynamicVO dynamicVO = dynamicInfo.buildDynamicVO();
// 设置是否点赞
boolean liked = likeDAO.isLiked(userId, dynamicId);
dynamicVO.setLikes(liked);
// 设置评论信息
dynamicVO.setCommentAndReplyVO(this.getCommentAndReply(dynamicId));
dynamicVO.setMediaVO(mediaVO);
return ResultBody.success(dynamicVO);
}
} }
...@@ -28,7 +28,8 @@ ...@@ -28,7 +28,8 @@
user_id, user_id,
dynamic_id, dynamic_id,
content, content,
likes_count likes_count,
create_time
from forum_comment from forum_comment
where dynamic_id = #{dynamicId} and is_deleted = 0 where dynamic_id = #{dynamicId} and is_deleted = 0
</select> </select>
......
...@@ -47,9 +47,11 @@ ...@@ -47,9 +47,11 @@
lat, lat,
lon, lon,
likes_count, likes_count,
comments_count comments_count,
create_time
from forum_dynamic from forum_dynamic
where id = #{dynamicId} where id = #{dynamicId}
and is_deleted = 0
</select> </select>
<select id="countDynamicList" resultType="java.lang.Integer"> <select id="countDynamicList" resultType="java.lang.Integer">
select count(*) select count(*)
...@@ -91,4 +93,20 @@ ...@@ -91,4 +93,20 @@
#{item} #{item}
</foreach> </foreach>
</select> </select>
<select id="dynamicPicture" resultType="com.mmc.csf.release.entity.ForumImageDO">
select id,
dynamic_id,
url
from forum_image
where dynamic_id = #{dynamicId}
and is_deleted = 0
</select>
<select id="dynamicVideo" resultType="com.mmc.csf.release.entity.ForumVideoDO">
select id,
dynamic_id,
url
from forum_video
where dynamic_id = #{dynamicId}
and is_deleted = 0
</select>
</mapper> </mapper>
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论