提交 17f9fbcd 作者: xiaowang

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

上级 3159f9b9
......@@ -7,6 +7,7 @@ import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
......@@ -25,11 +26,13 @@ public class CommentAndReplyVO implements Serializable {
private Integer dynamicId;
@ApiModelProperty(value = "父级评论id")
private Integer parentId;
@ApiModelProperty(value = "模拟用户id")
@ApiModelProperty(value = "动态发布人的id(后期返回用户头像昵称信息)")
private Integer userId;
@ApiModelProperty(value = "评论内容")
private String content;
@ApiModelProperty(value = "评论点赞数")
private Integer likesCount;
@ApiModelProperty(value = "评论时间")
private Date createTime;
private List<CommentAndReplyVO> children;
}
......@@ -8,6 +8,9 @@ import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* @Author LW
* @date 2023/5/15 10:29
......@@ -40,4 +43,8 @@ public class DynamicVO implements Serializable {
private Integer commentCount;
@ApiModelProperty(value = "是否点赞")
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 {
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 = "动态列表")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = DynamicVO.class)})
@GetMapping("/dynamicList")
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;
import com.mmc.csf.release.flyer.vo.DronePilotLicenseVO;
import com.mmc.csf.release.flyer.vo.FlightSkillsVO;
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 org.springframework.web.bind.annotation.*;
......
......@@ -103,4 +103,20 @@ public interface DynamicDAO {
* @return {@link List}<{@link ForumVideoDO}>
*/
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 {
return DynamicVO.builder().id(id).description(description)
.commentCount(commentsCount).likesCount(likesCount)
.lat(lat).lon(lon).location(location).title(title)
.userId(userId).build();
.userId(userId).dynamicPublishTime(createTime).build();
}
}
......@@ -53,7 +53,7 @@ public interface DynamicService {
* @param dynamicId 动态id
* @return {@link List}<{@link CommentVO}>
*/
List<CommentAndReplyVO> getCommentAndReply(int dynamicId);
List<CommentAndReplyVO> getCommentAndReply(Integer dynamicId);
/**
* 动态列表
......@@ -64,4 +64,13 @@ public interface DynamicService {
* @return {@link List}<{@link DynamicVO}>
*/
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 {
}
@Override
public List<CommentAndReplyVO> getCommentAndReply(int dynamicId) {
public List<CommentAndReplyVO> getCommentAndReply(Integer dynamicId) {
// 获取评论列表
List<CommentAndReplyVO> commentList = commentDAO.selectCommentList(dynamicId);
List<CommentAndReplyVO> topLevelComment = new ArrayList<>();
......@@ -155,4 +155,31 @@ public class DynamicServiceImpl implements DynamicService {
}).collect(Collectors.toList());
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 @@
user_id,
dynamic_id,
content,
likes_count
likes_count,
create_time
from forum_comment
where dynamic_id = #{dynamicId} and is_deleted = 0
</select>
......
......@@ -47,9 +47,11 @@
lat,
lon,
likes_count,
comments_count
comments_count,
create_time
from forum_dynamic
where id = #{dynamicId}
and is_deleted = 0
</select>
<select id="countDynamicList" resultType="java.lang.Integer">
select count(*)
......@@ -91,4 +93,20 @@
#{item}
</foreach>
</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>
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论