提交 a5b94054 作者: xiaowang 提交者: 余乾开

小小优化

上级 16d3e183
package com.mmc.csf.release.forum.dto;
import com.mmc.csf.release.forum.vo.MediaVO;
import com.mmc.csf.release.forum.vo.UserBaseInfoVO;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author LW
*
* @date 2023/6/19 14:25 概要:
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class DynamicInfoDTO {
@ApiModelProperty(value = "动态id")
private Integer id;
@ApiModelProperty(value = "动态描述")
private String description;
@ApiModelProperty(value = "图片/视频")
private MediaVO mediaVO;
@ApiModelProperty(value = "show: 0显示 1隐藏")
private Integer show;
@ApiModelProperty(value = "发布动态用户信息")
private UserBaseInfoVO userBaseInfo;
}
package com.mmc.csf.release.forum.qo;
import com.mmc.csf.release.model.group.Page;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* @Author LW
* @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;
}
}
...@@ -22,4 +22,10 @@ public class UserBaseInfoVO implements Serializable { ...@@ -22,4 +22,10 @@ public class UserBaseInfoVO implements Serializable {
private String nickName; private String nickName;
@ApiModelProperty(value = "用户头像") @ApiModelProperty(value = "用户头像")
private String userImg; 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.dto.DynamicInfoDTO;
import com.mmc.csf.release.forum.qo.DynamicQO;
import com.mmc.csf.release.service.BackstageForumService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
/**
* @Author LW
*
* @date 2023/6/19 10:44 概要:
*/
@Api(tags = {"后台-论坛管理-模块"})
@RestController
@RequestMapping("/backstage/forum")
public class BackstageForumController {
@Autowired BackstageForumService backstageForumService;
@ApiOperation(value = "动态列表")
@PostMapping("/listDynamic")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = DynamicInfoDTO.class)})
public ResultBody<DynamicInfoDTO> listDynamic(
@RequestBody DynamicQO dynamic, HttpServletRequest request) {
return ResultBody.success(backstageForumService.listDynamic(dynamic, request));
}
}
package com.mmc.csf.release.dao;
import com.mmc.csf.release.entity.forum.ForumDynamicDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @Author LW
*
* @date 2023/6/19 10:50 概要:
*/
@Mapper
public interface BackstageForumDao {
int countDynamic(@Param("ids") List<Integer> ids);
List<ForumDynamicDO> listDynamicInfo(
@Param("ids") List<Integer> ids,
@Param("pageNo") int pageNo,
@Param("pageSize") Integer pageSize);
}
package com.mmc.csf.release.dao; package com.mmc.csf.release.dao;
import com.mmc.csf.release.entity.ForumDynamicDO; import com.mmc.csf.release.entity.forum.ForumDynamicDO;
import com.mmc.csf.release.entity.ForumImageDO; import com.mmc.csf.release.entity.forum.ForumImageDO;
import com.mmc.csf.release.entity.ForumVideoDO; import com.mmc.csf.release.entity.forum.ForumVideoDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
...@@ -10,113 +10,113 @@ import java.util.List; ...@@ -10,113 +10,113 @@ import java.util.List;
/** /**
* @Author LW * @Author LW
* @date 2023/5/15 10:29 *
* 概要:动态信息数据访问层 * @date 2023/5/15 10:29 概要:动态信息数据访问层
*/ */
@Mapper @Mapper
public interface DynamicDAO { public interface DynamicDAO {
/** /**
* 插入动态 * 插入动态
* *
* @param forumDynamicDO 论坛动态信息 * @param forumDynamicDO 论坛动态信息
* @return {@link ForumDynamicDO} * @return {@link ForumDynamicDO}
*/ */
void insertDynamic(ForumDynamicDO forumDynamicDO); void insertDynamic(ForumDynamicDO forumDynamicDO);
/** /**
* 插入图片 * 插入图片
* *
* @param dynamicId 动态id * @param dynamicId 动态id
* @param url url * @param url url
*/ */
void insertPicture(@Param("dynamicId") Integer dynamicId, @Param("url") String url); void insertPicture(@Param("dynamicId") Integer dynamicId, @Param("url") String url);
/** /**
* 插入视频 * 插入视频
* *
* @param dynamicId 动态id * @param dynamicId 动态id
* @param videoUrl 视频网址 * @param videoUrl 视频网址
*/ */
void insertVideo(@Param("dynamicId") Integer dynamicId, @Param("videoUrl") String videoUrl); void insertVideo(@Param("dynamicId") Integer dynamicId, @Param("videoUrl") String videoUrl);
/** /**
* 更新动态点赞数量 * 更新动态点赞数量
* *
* @param dynamicId 动态id * @param dynamicId 动态id
* @param pid pid * @param pid pid
*/ */
void updateDynamicLikeCount(@Param("dynamicId") Integer dynamicId, @Param("pid") Integer pid); void updateDynamicLikeCount(@Param("dynamicId") Integer dynamicId, @Param("pid") Integer pid);
/** /**
* 得到动态信息 * 得到动态信息
* *
* @param dynamicId 动态id * @param dynamicId 动态id
* @return {@link ForumDynamicDO} * @return {@link ForumDynamicDO}
*/ */
ForumDynamicDO getDynamicInfo(Integer dynamicId); ForumDynamicDO getDynamicInfo(Integer dynamicId);
/** /**
* 动态点赞数减 * 动态点赞数减
* *
* @param dynamicId 动态id * @param dynamicId 动态id
* @param pid pid * @param pid pid
*/ */
void updateSubDynamicLikeCount(Integer dynamicId, Integer pid); void updateSubDynamicLikeCount(Integer dynamicId, Integer pid);
/** /**
* 更新动态评论数 * 更新动态评论数
* *
* @param dynamicId 动态id * @param dynamicId 动态id
* @param pid pid * @param pid pid
*/ */
void updateDynamicCommentCount(Integer dynamicId, Integer pid); void updateDynamicCommentCount(Integer dynamicId, Integer pid);
/** /**
* 动态列表计数 * 动态列表计数
* *
* @return int * @return int
*/ */
int countDynamicList(); int countDynamicList();
/** /**
* 动态列表 * 动态列表
* *
* @param itemIndex 项指数 * @param itemIndex 项指数
* @param pageSize 页面大小 * @param pageSize 页面大小
* @return {@link List}<{@link ForumDynamicDO}> * @return {@link List}<{@link ForumDynamicDO}>
*/ */
List<ForumDynamicDO> dynamicList(int itemIndex, Integer pageSize); List<ForumDynamicDO> dynamicList(int itemIndex, Integer pageSize);
/** /**
* 列表动态图片 * 列表动态图片
* *
* @param ids id * @param ids id
* @return {@link List}<{@link ForumImageDO}> * @return {@link List}<{@link ForumImageDO}>
*/ */
List<ForumImageDO> listDynamicPicture(List<Integer> ids); List<ForumImageDO> listDynamicPicture(List<Integer> ids);
/** /**
* 动态视频列表 * 动态视频列表
* *
* @param ids id * @param ids id
* @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 * @param dynamicId 动态id
* @return {@link List}<{@link ForumImageDO}> * @return {@link List}<{@link ForumImageDO}>
*/ */
List<ForumImageDO> dynamicPicture(Integer dynamicId); List<ForumImageDO> dynamicPicture(Integer dynamicId);
/** /**
* 动态视频 * 动态视频
* *
* @param dynamicId 动态id * @param dynamicId 动态id
* @return {@link ForumVideoDO} * @return {@link ForumVideoDO}
*/ */
ForumVideoDO dynamicVideo(Integer dynamicId); ForumVideoDO dynamicVideo(Integer dynamicId);
} }
package com.mmc.csf.release.dao; package com.mmc.csf.release.dao;
import com.mmc.csf.release.entity.forum.ForumDynamicDO;
import com.mmc.csf.release.entity.ForumDynamicDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
...@@ -9,45 +8,45 @@ import java.util.List; ...@@ -9,45 +8,45 @@ import java.util.List;
/** /**
* @Author LW * @Author LW
* @date 2023/5/15 10:29 *
* 概要:点赞信息数据访问层 * @date 2023/5/15 10:29 概要:点赞信息数据访问层
*/ */
@Mapper @Mapper
public interface LikeDAO { public interface LikeDAO {
/** /**
* 插入点赞信息 * 插入点赞信息
* *
* @param userId 用户id * @param userId 用户id
* @param dynamicId 动态id * @param dynamicId 动态id
*/ */
void insertLike(@Param("userId") int userId, @Param("dynamicId") int dynamicId); void insertLike(@Param("userId") int userId, @Param("dynamicId") int dynamicId);
/** /**
* 删除点赞信息 * 删除点赞信息
* *
* @param userId 用户id * @param userId 用户id
* @param dynamicId 动态id * @param dynamicId 动态id
* @return int * @return int
*/ */
int deleteLike(@Param("userId") int userId, @Param("dynamicId") int dynamicId); int deleteLike(@Param("userId") int userId, @Param("dynamicId") int dynamicId);
/** /**
* 是否是点赞过的 * 是否是点赞过的
* *
* @param userId 用户id * @param userId 用户id
* @param dynamicId 动态id * @param dynamicId 动态id
* @return boolean * @return boolean
*/ */
boolean isLiked(@Param("userId") int userId, @Param("dynamicId") int dynamicId); boolean isLiked(@Param("userId") int userId, @Param("dynamicId") int dynamicId);
/** /**
* 点赞数 * 点赞数
* *
* @param dynamicId 动态id * @param dynamicId 动态id
* @return int * @return int
*/ */
int getLikesCount(int dynamicId); int getLikesCount(int dynamicId);
List<ForumDynamicDO> selectLiked(Integer userId, List<Integer> ids); List<ForumDynamicDO> selectLiked(Integer userId, List<Integer> ids);
} }
package com.mmc.csf.release.dao; package com.mmc.csf.release.dao;
import com.mmc.csf.release.entity.store.DummyFlyerDO;
import com.mmc.csf.release.entity.DummyFlyerDO; import com.mmc.csf.release.entity.store.DummyUavDO;
import com.mmc.csf.release.entity.DummyUavDO; import com.mmc.csf.release.entity.store.MaintainDO;
import com.mmc.csf.release.entity.MaintainDO; import com.mmc.csf.release.entity.store.WebsiteInfoDO;
import com.mmc.csf.release.entity.WebsiteInfoDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import java.util.List; import java.util.List;
/** /**
* @Author LW * @Author LW
* @date 2022/4/21 19:21 *
* 概要: * @date 2022/4/21 19:21 概要:
*/ */
@Mapper @Mapper
public interface WebsiteDao { public interface WebsiteDao {
int countDummyFlyer(); int countDummyFlyer();
List<DummyFlyerDO> listDummyFlyer(Double lon, Double lat, Integer pageNo, Integer pageSize);
int countDummyUav(); List<DummyFlyerDO> listDummyFlyer(Double lon, Double lat, Integer pageNo, Integer pageSize);
List<DummyUavDO> listDummyUav(Double lon, Double lat, Integer pageNo, Integer pageSize); int countDummyUav();
int countMaintain(); List<DummyUavDO> listDummyUav(Double lon, Double lat, Integer pageNo, Integer pageSize);
List<MaintainDO> listMaintain(Double lon, Double lat, Integer pageNo, Integer pageSize); int countMaintain();
List<WebsiteInfoDO> getWebsiteList(Double lon, Double lat, Integer pageNo, Integer pageSize); List<MaintainDO> listMaintain(Double lon, Double lat, Integer pageNo, Integer pageSize);
int countWebsiteList(); List<WebsiteInfoDO> getWebsiteList(Double lon, Double lat, Integer pageNo, Integer pageSize);
int countWebsiteList();
} }
package com.mmc.csf.release.entity; package com.mmc.csf.release.entity.forum;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
...@@ -19,38 +19,21 @@ import java.util.Date; ...@@ -19,38 +19,21 @@ import java.util.Date;
@NoArgsConstructor @NoArgsConstructor
@Accessors(chain = true) @Accessors(chain = true)
public class ForumCommentDO implements Serializable { public class ForumCommentDO implements Serializable {
private static final long serialVersionUID = 768897358613182410L; private static final long serialVersionUID = 768897358613182410L;
/** /** 评论id */
* 评论id private Integer id;
*/ /** 用户id,外键,关联user表 */
private Integer id; private Integer userId; // todo userAccountId
/** /** 动态id,外键,关联dynamic表 */
* 用户id,外键,关联user表 private Integer dynamicId;
*/ /** 评论内容 */
private Integer userId; private String content;
/** /** 点赞数量 */
* 动态id,外键,关联dynamic表 private Integer likesCount;
*/ /** 创建时间 */
private Integer dynamicId; private Date createTime;
/** /** 修改时间 */
* 评论内容 private Date updateTime;
*/ /** 是否删除,0表示未删除,1表示已删除 */
private String content; private Integer deleted;
/**
* 点赞数量
*/
private Integer likesCount;
/**
* 创建时间
*/
private Date createTime;
/**
* 修改时间
*/
private Date updateTime;
/**
* 是否删除,0表示未删除,1表示已删除
*/
private Integer deleted;
} }
package com.mmc.csf.release.entity; package com.mmc.csf.release.entity.forum;
import com.mmc.csf.release.forum.dto.DynamicInfoDTO;
import com.mmc.csf.release.forum.vo.DynamicVO; import com.mmc.csf.release.forum.vo.DynamicVO;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
...@@ -21,73 +22,57 @@ import java.util.Date; ...@@ -21,73 +22,57 @@ import java.util.Date;
@NoArgsConstructor @NoArgsConstructor
@Accessors(chain = true) @Accessors(chain = true)
public class ForumDynamicDO implements Serializable { public class ForumDynamicDO implements Serializable {
private static final long serialVersionUID = 570379773690905364L; private static final long serialVersionUID = 570379773690905364L;
/** /** 主键,自增长 */
* 主键,自增长 private Integer id;
*/ /** 版本字段pid */
private Integer id; private Integer pid; // todo 修改为 version
/** /** 动态标题 */
* 版本字段pid private String title; // todo 删除
*/ /** 发布用户ID */
private Integer pid; private Integer userId; // todo 改userAccountId
/** /** 动态描述 */
* 动态标题 private String description;
*/ /** 发布动态具体位置 */
private String title; private String location;
/** /** 发布动态纬度 */
* 发布用户ID private BigDecimal lat;
*/ /** 发布动态经度 */
private Integer userId; private BigDecimal lon;
/** /** 点赞数 */
* 动态描述 private Integer likesCount;
*/ /** 评论数 */
private String description; private Integer commentsCount;
/** /** 创建时间 */
* 发布动态具体位置 private Date createTime;
*/ /** 修改时间 */
private String location; private Date updateTime;
/** /** 是否删除,默认为0表示未删除 */
* 发布动态纬度 private Integer deleted;
*/
private BigDecimal lat;
/**
* 发布动态经度
*/
private BigDecimal lon;
/**
* 点赞数
*/
private Integer likesCount;
/**
* 评论数
*/
private Integer commentsCount;
/**
* 创建时间
*/
private Date createTime;
/**
* 修改时间
*/
private Date updateTime;
/**
* 是否删除,默认为0表示未删除
*/
private Integer deleted;
public ForumDynamicDO(DynamicVO dynamicVO) { public ForumDynamicDO(DynamicVO dynamicVO) {
this.title = dynamicVO.getTitle(); this.title = dynamicVO.getTitle();
this.description = dynamicVO.getDescription(); this.description = dynamicVO.getDescription();
this.location = dynamicVO.getLocation(); this.location = dynamicVO.getLocation();
this.lat = dynamicVO.getLat(); this.lat = dynamicVO.getLat();
this.lon = dynamicVO.getLon(); this.lon = dynamicVO.getLon();
} }
public DynamicVO buildDynamicVO() { public DynamicVO buildDynamicVO() {
return DynamicVO.builder().id(id).description(description) return DynamicVO.builder()
.commentCount(commentsCount).likesCount(likesCount) .id(id)
.lat(lat).lon(lon).location(location).title(title) .description(description)
.dynamicPublishTime(createTime).build(); .commentCount(commentsCount)
} .likesCount(likesCount)
} .lat(lat)
.lon(lon)
.location(location)
.title(title)
.dynamicPublishTime(createTime)
.build();
}
public DynamicInfoDTO buildDynamicInfoDTO() {
return DynamicInfoDTO.builder().id(id).description(description).show(deleted).build();
}
}
package com.mmc.csf.release.entity; package com.mmc.csf.release.entity.forum;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
...@@ -19,31 +19,17 @@ import java.util.Date; ...@@ -19,31 +19,17 @@ import java.util.Date;
@NoArgsConstructor @NoArgsConstructor
@Accessors(chain = true) @Accessors(chain = true)
public class ForumImageDO implements Serializable { public class ForumImageDO implements Serializable {
private static final long serialVersionUID = 678578415154893126L; private static final long serialVersionUID = 678578415154893126L;
/** /** 主键,自增长 */
* 主键,自增长 private Integer id; // todo 删除
*/ /** 动态ID,必填 */
private Integer id; private Integer dynamicId;
/** /** 图片URL,必填 */
* 动态ID,必填 private String url;
*/ /** 创建时间 */
private Integer dynamicId; private Date createTime;
/** /** 修改时间 */
* 图片URL,必填 private Date updateTime;
*/ /** 是否删除,默认为0表示未删除 */
private String url; private Integer deleted; // todo 删除
/**
* 创建时间
*/
private Date createTime;
/**
* 修改时间
*/
private Date updateTime;
/**
* 是否删除,默认为0表示未删除
*/
private Integer deleted;
} }
package com.mmc.csf.release.entity; package com.mmc.csf.release.entity.forum;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
...@@ -19,23 +19,13 @@ import java.util.Date; ...@@ -19,23 +19,13 @@ import java.util.Date;
@NoArgsConstructor @NoArgsConstructor
@Accessors(chain = true) @Accessors(chain = true)
public class ForumLikeDO implements Serializable { public class ForumLikeDO implements Serializable {
private static final long serialVersionUID = 980171641026737097L; private static final long serialVersionUID = 980171641026737097L;
/** /** 点赞id */
* 点赞id private Integer id;
*/ /** 用户id,外键,关联user表 */
private Integer id; private Integer userId;
/** /** 动态id,外键,关联dynamic表 */
* 用户id,外键,关联user表 private Integer dynamicId;
*/ /** 创建时间 */
private Integer userId; private Date createTime;
/**
* 动态id,外键,关联dynamic表
*/
private Integer dynamicId;
/**
* 创建时间
*/
private Date createTime;
} }
package com.mmc.csf.release.entity; package com.mmc.csf.release.entity.forum;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
...@@ -19,31 +19,17 @@ import java.util.Date; ...@@ -19,31 +19,17 @@ import java.util.Date;
@NoArgsConstructor @NoArgsConstructor
@Accessors(chain = true) @Accessors(chain = true)
public class ForumVideoDO implements Serializable { public class ForumVideoDO implements Serializable {
private static final long serialVersionUID = -50745508548714291L; private static final long serialVersionUID = -50745508548714291L;
/** /** 主键,自增长 */
* 主键,自增长 private Integer id;
*/ /** 动态ID,必填 */
private Integer id; private Integer dynamicId;
/** /** 视频URL,必填 */
* 动态ID,必填 private String url;
*/ /** 创建时间 */
private Integer dynamicId; private Date createTime;
/** /** 修改时间 */
* 视频URL,必填 private Date updateTime;
*/ /** 是否删除,默认为0表示未删除 */
private String url; private Integer deleted;
/**
* 创建时间
*/
private Date createTime;
/**
* 修改时间
*/
private Date updateTime;
/**
* 是否删除,默认为0表示未删除
*/
private Integer deleted;
} }
package com.mmc.csf.release.entity; package com.mmc.csf.release.entity.store;
import com.mmc.csf.web.dto.DummyFlyerDTO; import com.mmc.csf.web.dto.DummyFlyerDTO;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
......
package com.mmc.csf.release.entity; package com.mmc.csf.release.entity.store;
import com.mmc.csf.web.dto.DummyUavDTO; import com.mmc.csf.web.dto.DummyUavDTO;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
......
package com.mmc.csf.release.entity; package com.mmc.csf.release.entity.store;
import com.mmc.csf.web.dto.MaintainDTO; import com.mmc.csf.web.dto.MaintainDTO;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
...@@ -18,26 +18,32 @@ import java.math.BigDecimal; ...@@ -18,26 +18,32 @@ import java.math.BigDecimal;
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
public class MaintainDO implements Serializable { public class MaintainDO implements Serializable {
private static final long serialVersionUID = -53401640557659711L; private static final long serialVersionUID = -53401640557659711L;
private Integer id;
private String name;
private String address;
private Double lon;
private Double lat;
private Double distance; private Integer id;
private String name;
private String address;
public MaintainDTO buildMaintainDTO() { private Double lon;
this.distance = this.distance == null ? 0 : (BigDecimal.valueOf(this.distance).setScale(2, BigDecimal.ROUND_HALF_DOWN)).doubleValue();
return MaintainDTO.builder().name(name).address(address).lon(this.lon).lat(this.lat).distance(this.distance / 1000).build();
}
} private Double lat;
private Double distance;
public MaintainDTO buildMaintainDTO() {
this.distance =
this.distance == null
? 0
: (BigDecimal.valueOf(this.distance).setScale(2, BigDecimal.ROUND_HALF_DOWN))
.doubleValue();
return MaintainDTO.builder()
.name(name)
.address(address)
.lon(this.lon)
.lat(this.lat)
.distance(this.distance / 1000)
.build();
}
}
package com.mmc.csf.release.entity; package com.mmc.csf.release.entity.store;
import com.mmc.csf.web.dto.WebsiteRangeDTO; import com.mmc.csf.web.dto.WebsiteRangeDTO;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
...@@ -10,23 +10,32 @@ import java.math.BigDecimal; ...@@ -10,23 +10,32 @@ import java.math.BigDecimal;
/** /**
* @Author LW * @Author LW
* @date 2022/4/21 20:09 *
* 概要: * @date 2022/4/21 20:09 概要:
*/ */
@Data @Data
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public class WebsiteInfoDO implements Serializable { public class WebsiteInfoDO implements Serializable {
private Integer id; private Integer id;
private String name; private String name;
private String address; private String address;
private Double lat; private Double lat;
private Double lon; private Double lon;
private Double distance; private Double distance;
public WebsiteRangeDTO buildWebsiteRangeDTO() {
public WebsiteRangeDTO buildWebsiteRangeDTO() { this.distance =
this.distance = this.distance == null ? 0 : (BigDecimal.valueOf(this.distance).setScale(2, BigDecimal.ROUND_HALF_DOWN)).doubleValue(); this.distance == null
return WebsiteRangeDTO.builder().name(name).address(address).lon(this.lon).lat(this.lat).distance(this.distance / 1000).build(); ? 0
} : (BigDecimal.valueOf(this.distance).setScale(2, BigDecimal.ROUND_HALF_DOWN))
.doubleValue();
return WebsiteRangeDTO.builder()
.name(name)
.address(address)
.lon(this.lon)
.lat(this.lat)
.distance(this.distance / 1000)
.build();
}
} }
package com.mmc.csf.release.service;
import com.mmc.csf.common.util.page.PageResult;
import com.mmc.csf.release.forum.qo.DynamicQO;
import javax.servlet.http.HttpServletRequest;
/**
* @Author LW
*
* @date 2023/6/19 10:47 概要:
*/
public interface BackstageForumService {
PageResult listDynamic(DynamicQO dynamic, HttpServletRequest request);
}
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.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.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;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* @Author LW
*
* @date 2023/6/19 10:47 概要:
*/
@Service
public class BackstageForumServiceImpl implements BackstageForumService {
@Autowired BackstageForumDao backstageForumDao;
@Autowired DynamicDAO dynamicDAO;
@Autowired UserAppApi userAppApi;
@Override
public PageResult listDynamic(DynamicQO dynamic, HttpServletRequest request) {
List<Integer> userIds = null;
if (dynamic.getKeyword() != null) {
BUserAccountQO bUserAccountQO = new BUserAccountQO();
bUserAccountQO.setKeyword(dynamic.getKeyword());
// 获取筛选的用户id
List<UserAccountSimpleDTO> userAccountSimpleDTOS =
userAppApi.feignListBAccountPage(bUserAccountQO, request.getHeader(TokenConstant.TOKEN));
if (CollectionUtils.isNotEmpty(userAccountSimpleDTOS)) {
// 获取用户id
userIds =
userAccountSimpleDTOS.stream()
.map(UserAccountSimpleDTO::getId)
.collect(Collectors.toList());
}
if (userIds == null) {
return PageResult.buildPage(dynamic.getPageNo(), dynamic.getPageSize(), 0);
}
}
int count = backstageForumDao.countDynamic(userIds);
if (count == 0) {
return PageResult.buildPage(dynamic.getPageNo(), dynamic.getPageSize(), count);
}
int itemIndex = (dynamic.getPageNo() - 1) * dynamic.getPageSize();
// 获取动态信息
List<ForumDynamicDO> dynamicList =
backstageForumDao.listDynamicInfo(userIds, itemIndex, dynamic.getPageSize());
// 动态id集合
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<ForumVideoDO> forumVideoList = dynamicDAO.listDynamicVideo(ids);
// 获取查询到的列表用户信息
// 获取用户信息
Set<Integer> ListUserIds =
dynamicList.stream().map(ForumDynamicDO::getUserId).collect(Collectors.toSet());
List<Integer> userIdList = new ArrayList<>(ListUserIds);
BUserAccountQO accountQO = new BUserAccountQO();
accountQO.setUserIds(userIdList);
List<UserAccountSimpleDTO> userAccountSimpleList =
userAppApi.feignListBAccountPage(accountQO, request.getHeader(TokenConstant.TOKEN));
Map<Integer, UserAccountSimpleDTO> userAccountInfoMap =
userAccountSimpleList.stream()
.collect(Collectors.toMap(UserAccountSimpleDTO::getId, Function.identity()));
List<DynamicInfoDTO> list =
dynamicList.stream()
.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());
if (userAccountSimpleDTO != null) {
UserBaseInfoVO userBaseInfoVO = new UserBaseInfoVO();
userBaseInfoVO.setId(d.getUserId());
userBaseInfoVO.setNickName(userAccountSimpleDTO.getNickName());
userBaseInfoVO.setUserImg(userAccountSimpleDTO.getUserImg());
userBaseInfoVO.setUserName(userAccountSimpleDTO.getUserName());
userBaseInfoVO.setPhone(userAccountSimpleDTO.getPhoneNum());
userBaseInfoVO.setUid(userAccountSimpleDTO.getUid());
dynamicInfoDTO.setUserBaseInfo(userBaseInfoVO);
}
dynamicInfoDTO.setMediaVO(mediaVO);
return dynamicInfoDTO;
})
.collect(Collectors.toList());
return PageResult.buildPage(dynamic.getPageNo(), dynamic.getPageSize(), count, list);
}
}
...@@ -8,9 +8,9 @@ import com.mmc.csf.release.constant.TokenConstant; ...@@ -8,9 +8,9 @@ import com.mmc.csf.release.constant.TokenConstant;
import com.mmc.csf.release.dao.CommentDAO; import com.mmc.csf.release.dao.CommentDAO;
import com.mmc.csf.release.dao.DynamicDAO; import com.mmc.csf.release.dao.DynamicDAO;
import com.mmc.csf.release.dao.LikeDAO; import com.mmc.csf.release.dao.LikeDAO;
import com.mmc.csf.release.entity.ForumDynamicDO; import com.mmc.csf.release.entity.forum.ForumDynamicDO;
import com.mmc.csf.release.entity.ForumImageDO; import com.mmc.csf.release.entity.forum.ForumImageDO;
import com.mmc.csf.release.entity.ForumVideoDO; import com.mmc.csf.release.entity.forum.ForumVideoDO;
import com.mmc.csf.release.feign.UserAppApi; import com.mmc.csf.release.feign.UserAppApi;
import com.mmc.csf.release.forum.vo.*; import com.mmc.csf.release.forum.vo.*;
import com.mmc.csf.release.service.DynamicService; import com.mmc.csf.release.service.DynamicService;
...@@ -27,201 +27,220 @@ import java.util.stream.Collectors; ...@@ -27,201 +27,220 @@ import java.util.stream.Collectors;
/** /**
* @Author LW * @Author LW
* @date 2023/5/15 10:29 *
* 概要:动态信息实现层 * @date 2023/5/15 10:29 概要:动态信息实现层
*/ */
@Service @Service
public class DynamicServiceImpl implements DynamicService { public class DynamicServiceImpl implements DynamicService {
@Resource @Resource private DynamicDAO dynamicDAO;
private DynamicDAO dynamicDAO; @Resource private LikeDAO likeDAO;
@Resource @Resource private CommentDAO commentDAO;
private LikeDAO likeDAO; @Autowired private UserAppApi userAppApi;
@Resource
private CommentDAO commentDAO;
@Autowired
private UserAppApi userAppApi;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public ResultBody insertDynamic(DynamicVO dynamicVO,Integer userAccountId) { public ResultBody insertDynamic(DynamicVO dynamicVO, Integer userAccountId) {
// 插入动态基本信息 // 插入动态基本信息
ForumDynamicDO forumDynamicDO = new ForumDynamicDO(dynamicVO); ForumDynamicDO forumDynamicDO = new ForumDynamicDO(dynamicVO);
forumDynamicDO.setUserId(userAccountId); forumDynamicDO.setUserId(userAccountId);
dynamicDAO.insertDynamic(forumDynamicDO); dynamicDAO.insertDynamic(forumDynamicDO);
// 插入动态图片或视频 // 插入动态图片或视频
MediaVO mediaVO = dynamicVO.getMediaVO(); MediaVO mediaVO = dynamicVO.getMediaVO();
// 插入图片 // 插入图片
if (CollectionUtils.isNotEmpty(mediaVO.getPicture())) { if (CollectionUtils.isNotEmpty(mediaVO.getPicture())) {
for (String url : mediaVO.getPicture()) { for (String url : mediaVO.getPicture()) {
dynamicDAO.insertPicture(forumDynamicDO.getId(), url); dynamicDAO.insertPicture(forumDynamicDO.getId(), url);
} }
}
// 插入视频
if (mediaVO.getVideoUrl() != null) {
dynamicDAO.insertVideo(forumDynamicDO.getId(), mediaVO.getVideoUrl());
}
return ResultBody.success("动态发布成功");
} }
// 插入视频
@Override if (mediaVO.getVideoUrl() != null) {
public ResultBody likeDynamic(Integer userId, Integer dynamicId) { dynamicDAO.insertVideo(forumDynamicDO.getId(), mediaVO.getVideoUrl());
// 获取动态信息
ForumDynamicDO forumDynamicDO = dynamicDAO.getDynamicInfo(dynamicId);
if (!likeDAO.isLiked(userId, dynamicId)) {
likeDAO.insertLike(userId, dynamicId);
dynamicDAO.updateDynamicLikeCount(dynamicId, forumDynamicDO.getPid());
} else {
likeDAO.deleteLike(userId, dynamicId);
dynamicDAO.updateSubDynamicLikeCount(dynamicId, forumDynamicDO.getPid());
}
return ResultBody.success();
} }
return ResultBody.success("动态发布成功");
}
@Override @Override
@Transactional(rollbackFor = Exception.class) public ResultBody likeDynamic(Integer userId, Integer dynamicId) {
public ResultBody commentDynamic(CommentVO commentVO,Integer userAccountId) { // 获取动态信息
ForumDynamicDO forumDynamicDO = dynamicDAO.getDynamicInfo(commentVO.getDynamicId()); ForumDynamicDO forumDynamicDO = dynamicDAO.getDynamicInfo(dynamicId);
if (forumDynamicDO == null) { if (!likeDAO.isLiked(userId, dynamicId)) {
return ResultBody.error("动态不存在或已删除"); likeDAO.insertLike(userId, dynamicId);
} dynamicDAO.updateDynamicLikeCount(dynamicId, forumDynamicDO.getPid());
if (commentVO.getParentId() == null) { } else {
commentDAO.insertComment(userAccountId, commentVO.getDynamicId(), commentVO.getContent()); likeDAO.deleteLike(userId, dynamicId);
} else { dynamicDAO.updateSubDynamicLikeCount(dynamicId, forumDynamicDO.getPid());
commentDAO.insertReplyComment(userAccountId, commentVO.getDynamicId(), commentVO.getContent(), commentVO.getParentId());
}
dynamicDAO.updateDynamicCommentCount(commentVO.getDynamicId(), forumDynamicDO.getPid());
return ResultBody.success();
} }
return ResultBody.success();
}
@Override @Override
public ResultBody deleteComment(Integer id) { @Transactional(rollbackFor = Exception.class)
commentDAO.deleteComment(id); public ResultBody commentDynamic(CommentVO commentVO, Integer userAccountId) {
return ResultBody.success(); ForumDynamicDO forumDynamicDO = dynamicDAO.getDynamicInfo(commentVO.getDynamicId());
if (forumDynamicDO == null) {
return ResultBody.error("动态不存在或已删除");
}
if (commentVO.getParentId() == null) {
commentDAO.insertComment(userAccountId, commentVO.getDynamicId(), commentVO.getContent());
} else {
commentDAO.insertReplyComment(
userAccountId, commentVO.getDynamicId(), commentVO.getContent(), commentVO.getParentId());
} }
dynamicDAO.updateDynamicCommentCount(commentVO.getDynamicId(), forumDynamicDO.getPid());
return ResultBody.success();
}
@Override
public ResultBody deleteComment(Integer id) {
commentDAO.deleteComment(id);
return ResultBody.success();
}
@Override @Override
public List<CommentAndReplyVO> getCommentAndReply(Integer dynamicId, HttpServletRequest request) { public List<CommentAndReplyVO> getCommentAndReply(Integer dynamicId, HttpServletRequest request) {
// 获取评论列表 // 获取评论列表
List<CommentAndReplyVO> commentList = commentDAO.selectCommentList(dynamicId); List<CommentAndReplyVO> commentList = commentDAO.selectCommentList(dynamicId);
commentList = commentList.stream().peek(d -> { commentList =
UserAccountSimpleDTO userAccountSimpleDTO = userAppApi.feignGetUserSimpleInfo(d.getUserId(), request.getHeader(TokenConstant.TOKEN)); commentList.stream()
UserBaseInfoVO userBaseInfoVO = new UserBaseInfoVO(); .peek(
userBaseInfoVO.setId(d.getUserId()); d -> {
userBaseInfoVO.setNickName(userAccountSimpleDTO.getNickName()); UserAccountSimpleDTO userAccountSimpleDTO =
userBaseInfoVO.setUserImg(userAccountSimpleDTO.getUserImg()); userAppApi.feignGetUserSimpleInfo(
d.setUserBaseInfoVO(userBaseInfoVO); d.getUserId(), request.getHeader(TokenConstant.TOKEN));
}).collect(Collectors.toList()); UserBaseInfoVO userBaseInfoVO = new UserBaseInfoVO();
List<CommentAndReplyVO> topLevelComment = new ArrayList<>(); userBaseInfoVO.setId(d.getUserId());
Map<Integer, CommentAndReplyVO> commentMap = new HashMap<>(); userBaseInfoVO.setNickName(userAccountSimpleDTO.getNickName());
// 将每个数据模型对象添加到Map中,以便在递归过程中查找它们的父母 userBaseInfoVO.setUserImg(userAccountSimpleDTO.getUserImg());
for (CommentAndReplyVO comment : commentList) { d.setUserBaseInfoVO(userBaseInfoVO);
comment.setChildren(new ArrayList<>()); })
commentMap.put(comment.getId(), comment); .collect(Collectors.toList());
} List<CommentAndReplyVO> topLevelComment = new ArrayList<>();
// 构建树结构 Map<Integer, CommentAndReplyVO> commentMap = new HashMap<>();
for (CommentAndReplyVO comment : commentList) { // 将每个数据模型对象添加到Map中,以便在递归过程中查找它们的父母
if (comment.getParentId() == 0) { for (CommentAndReplyVO comment : commentList) {
topLevelComment.add(comment); comment.setChildren(new ArrayList<>());
} else { commentMap.put(comment.getId(), comment);
CommentAndReplyVO parent = commentMap.get(comment.getParentId());
parent.getChildren().add(comment);
}
}
return topLevelComment;
} }
// 构建树结构
for (CommentAndReplyVO comment : commentList) {
if (comment.getParentId() == 0) {
topLevelComment.add(comment);
} else {
CommentAndReplyVO parent = commentMap.get(comment.getParentId());
parent.getChildren().add(comment);
}
}
return topLevelComment;
}
@Override @Override
public PageResult dynamicList(Integer pageNo, Integer pageSize, Integer userId, HttpServletRequest request) { public PageResult dynamicList(
int count = dynamicDAO.countDynamicList(); Integer pageNo, Integer pageSize, Integer userId, HttpServletRequest request) {
if (count == 0) { int count = dynamicDAO.countDynamicList();
return PageResult.buildPage(pageNo, pageSize, 0); if (count == 0) {
} return PageResult.buildPage(pageNo, pageSize, 0);
int itemIndex = (pageNo - 1) * pageSize; }
List<ForumDynamicDO> forumDynamicList = dynamicDAO.dynamicList(itemIndex, pageSize); int itemIndex = (pageNo - 1) * pageSize;
// 动态id集合 List<ForumDynamicDO> forumDynamicList = dynamicDAO.dynamicList(itemIndex, pageSize);
List<Integer> ids = forumDynamicList.stream().map(ForumDynamicDO::getId).collect(Collectors.toList()); // 动态id集合
// 根据id集合查询图片 List<Integer> ids =
List<ForumImageDO> forumImageList = dynamicDAO.listDynamicPicture(ids); forumDynamicList.stream().map(ForumDynamicDO::getId).collect(Collectors.toList());
Map<Integer, List<ForumImageDO>> ImageMap = forumImageList.stream().collect(Collectors.groupingBy(ForumImageDO::getDynamicId)); // 根据id集合查询图片
// 获取视频信息 List<ForumImageDO> forumImageList = dynamicDAO.listDynamicPicture(ids);
List<ForumVideoDO> forumVideoList = dynamicDAO.listDynamicVideo(ids); Map<Integer, List<ForumImageDO>> ImageMap =
// 获取用户信息 forumImageList.stream().collect(Collectors.groupingBy(ForumImageDO::getDynamicId));
Set<Integer> userIds = forumDynamicList.stream().map(ForumDynamicDO::getUserId).collect(Collectors.toSet()); // 获取视频信息
List<Integer> userIdList = new ArrayList<>(userIds); List<ForumVideoDO> forumVideoList = dynamicDAO.listDynamicVideo(ids);
BUserAccountQO bUserAccountQO = new BUserAccountQO(); // 获取用户信息
bUserAccountQO.setUserIds(userIdList); Set<Integer> userIds =
// 解决bug forumDynamicList.stream().map(ForumDynamicDO::getUserId).collect(Collectors.toSet());
List<UserAccountSimpleDTO> userAccountSimpleDTOS = userAppApi.feignListBAccountPage(bUserAccountQO, request.getHeader(TokenConstant.TOKEN)); List<Integer> userIdList = new ArrayList<>(userIds);
Map<Integer, UserAccountSimpleDTO> userAccountInfoMap = userAccountSimpleDTOS.stream().collect(Collectors.toMap(UserAccountSimpleDTO::getId, Function.identity())); BUserAccountQO bUserAccountQO = new BUserAccountQO();
//获取liked信息 bUserAccountQO.setUserIds(userIdList);
List<ForumDynamicDO> forumDynamicDOS = likeDAO.selectLiked(userId, ids); // 解决bug
List<DynamicVO> dynamicVOList = forumDynamicList.stream() List<UserAccountSimpleDTO> userAccountSimpleDTOS =
.map(d -> { userAppApi.feignListBAccountPage(bUserAccountQO, request.getHeader(TokenConstant.TOKEN));
MediaVO mediaVO = new MediaVO(); Map<Integer, UserAccountSimpleDTO> userAccountInfoMap =
if (CollectionUtils.isNotEmpty(ImageMap.get(d.getId()))) { userAccountSimpleDTOS.stream()
mediaVO.setPicture(ImageMap.get(d.getId()).stream().map(ForumImageDO::getUrl).collect(Collectors.toList())); .collect(Collectors.toMap(UserAccountSimpleDTO::getId, Function.identity()));
} // 获取liked信息
for (ForumVideoDO forumVideoDO : forumVideoList) { List<ForumDynamicDO> forumDynamicDOS = likeDAO.selectLiked(userId, ids);
if (forumVideoDO.getDynamicId().equals(d.getId())) { List<DynamicVO> dynamicVOList =
mediaVO.setVideoUrl(forumVideoDO.getUrl()); forumDynamicList.stream()
break; .map(
} d -> {
} MediaVO mediaVO = new MediaVO();
DynamicVO dynamicVO = d.buildDynamicVO(); if (CollectionUtils.isNotEmpty(ImageMap.get(d.getId()))) {
UserAccountSimpleDTO userAccountSimpleDTO = userAccountInfoMap.get(d.getUserId()); mediaVO.setPicture(
if (userAccountSimpleDTO != null){ ImageMap.get(d.getId()).stream()
UserBaseInfoVO userBaseInfoVO = new UserBaseInfoVO(); .map(ForumImageDO::getUrl)
userBaseInfoVO.setId(d.getUserId()); .collect(Collectors.toList()));
userBaseInfoVO.setNickName(userAccountSimpleDTO.getNickName()); }
userBaseInfoVO.setUserImg(userAccountSimpleDTO.getUserImg()); for (ForumVideoDO forumVideoDO : forumVideoList) {
dynamicVO.setUserBaseInfo(userBaseInfoVO); if (forumVideoDO.getDynamicId().equals(d.getId())) {
mediaVO.setVideoUrl(forumVideoDO.getUrl());
break;
} }
dynamicVO.setMediaVO(mediaVO); }
// 设置是否点赞 DynamicVO dynamicVO = d.buildDynamicVO();
for (ForumDynamicDO forumDynamicDO : forumDynamicDOS) { UserAccountSimpleDTO userAccountSimpleDTO = userAccountInfoMap.get(d.getUserId());
if (forumDynamicDO.getId().equals(d.getId())){ if (userAccountSimpleDTO != null) {
dynamicVO.setLikes(true); UserBaseInfoVO userBaseInfoVO = new UserBaseInfoVO();
break; userBaseInfoVO.setId(d.getUserId());
}else { userBaseInfoVO.setNickName(userAccountSimpleDTO.getNickName());
dynamicVO.setLikes(false); userBaseInfoVO.setUserImg(userAccountSimpleDTO.getUserImg());
} dynamicVO.setUserBaseInfo(userBaseInfoVO);
}
dynamicVO.setMediaVO(mediaVO);
// 设置是否点赞
for (ForumDynamicDO forumDynamicDO : forumDynamicDOS) {
if (forumDynamicDO.getId().equals(d.getId())) {
dynamicVO.setLikes(true);
break;
} else {
dynamicVO.setLikes(false);
} }
return dynamicVO; }
}).collect(Collectors.toList()); return dynamicVO;
return PageResult.buildPage(pageNo, pageSize, count, dynamicVOList); })
} .collect(Collectors.toList());
return PageResult.buildPage(pageNo, pageSize, count, dynamicVOList);
}
@Override @Override
public ResultBody dynamicDetails(Integer dynamicId, Integer userId, HttpServletRequest request) { public ResultBody dynamicDetails(Integer dynamicId, Integer userId, HttpServletRequest request) {
// 判断此动态是否还存在 // 判断此动态是否还存在
ForumDynamicDO dynamicInfo = dynamicDAO.getDynamicInfo(dynamicId); ForumDynamicDO dynamicInfo = dynamicDAO.getDynamicInfo(dynamicId);
if (dynamicInfo == null) { if (dynamicInfo == null) {
return ResultBody.error("动态不存在或已删除!"); return ResultBody.error("动态不存在或已删除!");
} }
// 获取图片视频 // 获取图片视频
List<ForumImageDO> forumImage = dynamicDAO.dynamicPicture(dynamicId); List<ForumImageDO> forumImage = dynamicDAO.dynamicPicture(dynamicId);
ForumVideoDO forumVideoDO = dynamicDAO.dynamicVideo(dynamicId); ForumVideoDO forumVideoDO = dynamicDAO.dynamicVideo(dynamicId);
MediaVO mediaVO = new MediaVO(); MediaVO mediaVO = new MediaVO();
if (forumVideoDO != null) { if (forumVideoDO != null) {
mediaVO.setVideoUrl(forumVideoDO.getUrl()); mediaVO.setVideoUrl(forumVideoDO.getUrl());
} }
if (CollectionUtils.isNotEmpty(forumImage)) { if (CollectionUtils.isNotEmpty(forumImage)) {
mediaVO.setPicture(forumImage.stream().map(ForumImageDO::getUrl).collect(Collectors.toList())); mediaVO.setPicture(
} forumImage.stream().map(ForumImageDO::getUrl).collect(Collectors.toList()));
DynamicVO dynamicVO = dynamicInfo.buildDynamicVO();
// 设置是否点赞
boolean liked = likeDAO.isLiked(userId, dynamicId);
UserAccountSimpleDTO userAccountSimpleDTO = userAppApi.feignGetUserSimpleInfo(dynamicInfo.getUserId(), request.getHeader(TokenConstant.TOKEN));
UserBaseInfoVO userBaseInfoVO = new UserBaseInfoVO();
userBaseInfoVO.setNickName(userAccountSimpleDTO.getNickName());
userBaseInfoVO.setUserImg(userAccountSimpleDTO.getUserImg());
userBaseInfoVO.setId(dynamicInfo.getUserId());
dynamicVO.setUserBaseInfo(userBaseInfoVO);
dynamicVO.setLikes(liked);
// 设置评论信息
dynamicVO.setCommentAndReplyVO(this.getCommentAndReply(dynamicId, request));
dynamicVO.setMediaVO(mediaVO);
return ResultBody.success(dynamicVO);
} }
DynamicVO dynamicVO = dynamicInfo.buildDynamicVO();
// 设置是否点赞
boolean liked = likeDAO.isLiked(userId, dynamicId);
UserAccountSimpleDTO userAccountSimpleDTO =
userAppApi.feignGetUserSimpleInfo(
dynamicInfo.getUserId(), request.getHeader(TokenConstant.TOKEN));
UserBaseInfoVO userBaseInfoVO = new UserBaseInfoVO();
userBaseInfoVO.setNickName(userAccountSimpleDTO.getNickName());
userBaseInfoVO.setUserImg(userAccountSimpleDTO.getUserImg());
userBaseInfoVO.setId(dynamicInfo.getUserId());
dynamicVO.setUserBaseInfo(userBaseInfoVO);
dynamicVO.setLikes(liked);
// 设置评论信息
dynamicVO.setCommentAndReplyVO(this.getCommentAndReply(dynamicId, request));
dynamicVO.setMediaVO(mediaVO);
return ResultBody.success(dynamicVO);
}
} }
...@@ -2,8 +2,8 @@ package com.mmc.csf.release.service.impl; ...@@ -2,8 +2,8 @@ package com.mmc.csf.release.service.impl;
import com.mmc.csf.common.util.page.PageResult; import com.mmc.csf.common.util.page.PageResult;
import com.mmc.csf.release.dao.WebsiteDao; import com.mmc.csf.release.dao.WebsiteDao;
import com.mmc.csf.release.entity.MaintainDO; import com.mmc.csf.release.entity.store.MaintainDO;
import com.mmc.csf.release.entity.WebsiteInfoDO; import com.mmc.csf.release.entity.store.WebsiteInfoDO;
import com.mmc.csf.release.service.WebsiteService; import com.mmc.csf.release.service.WebsiteService;
import com.mmc.csf.web.dto.MaintainDTO; import com.mmc.csf.web.dto.MaintainDTO;
import com.mmc.csf.web.dto.WebsiteRangeDTO; import com.mmc.csf.web.dto.WebsiteRangeDTO;
...@@ -15,32 +15,36 @@ import java.util.stream.Collectors; ...@@ -15,32 +15,36 @@ import java.util.stream.Collectors;
/** /**
* @Author LW * @Author LW
* @date 2022/4/21 19:19 *
* 概要: * @date 2022/4/21 19:19 概要:
*/ */
@Service @Service
public class WebsiteServiceImpl implements WebsiteService { public class WebsiteServiceImpl implements WebsiteService {
@Autowired @Autowired private WebsiteDao websiteDao;
private WebsiteDao websiteDao;
@Override
@Override public PageResult listMaintainData(Integer pageNo, Integer pageSize, Double lon, Double lat) {
public PageResult listMaintainData(Integer pageNo, Integer pageSize, Double lon, Double lat) { int count = websiteDao.countMaintain();
int count = websiteDao.countMaintain(); if (count == 0) {
if (count == 0) { return PageResult.buildPage(pageNo, pageSize, count);
return PageResult.buildPage(pageNo, pageSize, count);
}
List<MaintainDTO> list = websiteDao.listMaintain(lon, lat, (pageNo - 1) * pageSize, pageSize).stream().map(MaintainDO::buildMaintainDTO).collect(Collectors.toList());
return PageResult.buildPage(pageNo, pageSize, count, list);
} }
List<MaintainDTO> list =
websiteDao.listMaintain(lon, lat, (pageNo - 1) * pageSize, pageSize).stream()
.map(MaintainDO::buildMaintainDTO)
.collect(Collectors.toList());
return PageResult.buildPage(pageNo, pageSize, count, list);
}
@Override @Override
public PageResult getWebsiteList(Integer pageNo, Integer pageSize, Double lon, Double lat) { public PageResult getWebsiteList(Integer pageNo, Integer pageSize, Double lon, Double lat) {
int count = websiteDao.countWebsiteList(); int count = websiteDao.countWebsiteList();
if (count == 0) { if (count == 0) {
return PageResult.buildPage(pageNo, pageSize, count); return PageResult.buildPage(pageNo, pageSize, count);
}
List<WebsiteRangeDTO> list = websiteDao.getWebsiteList(lon, lat, (pageNo - 1) * pageSize, pageSize).stream().map(WebsiteInfoDO::buildWebsiteRangeDTO).collect(Collectors.toList());
return PageResult.buildPage(pageNo, pageSize, count, list);
} }
List<WebsiteRangeDTO> list =
websiteDao.getWebsiteList(lon, lat, (pageNo - 1) * pageSize, pageSize).stream()
.map(WebsiteInfoDO::buildWebsiteRangeDTO)
.collect(Collectors.toList());
return PageResult.buildPage(pageNo, pageSize, count, list);
}
} }
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mmc.csf.release.dao.BackstageForumDao">
<select id="countDynamic" resultType="java.lang.Integer">
select count(*) from forum_dynamic
<where>
<foreach collection="ids" index="index" separator="," open="user_id in (" close=")" item="ids">
#{ids}
</foreach>
</where>
</select>
<select id="listDynamicInfo" resultType="com.mmc.csf.release.entity.forum.ForumDynamicDO">
select id,user_id,description,is_deleted as deleted from forum_dynamic
<where>
<foreach collection="ids" index="index" separator="," open="user_id in (" close=")" item="ids">
#{ids}
</foreach>
</where>
limit #{pageNo},#{pageSize}
</select>
</mapper>
\ No newline at end of file
...@@ -12,7 +12,8 @@ ...@@ -12,7 +12,8 @@
insert into forum_video(dynamic_id, url) insert into forum_video(dynamic_id, url)
values (#{dynamicId}, #{videoUrl}) values (#{dynamicId}, #{videoUrl})
</insert> </insert>
<insert id="insertDynamic" keyProperty="id" useGeneratedKeys="true" parameterType="com.mmc.csf.release.entity.ForumDynamicDO"> <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) INSERT INTO forum_dynamic(title, user_id, description, location, lat, lon)
VALUES (#{title}, #{userId}, #{description}, #{location}, #{lat}, #{lon}) VALUES (#{title}, #{userId}, #{description}, #{location}, #{lat}, #{lon})
</insert> </insert>
...@@ -33,11 +34,11 @@ ...@@ -33,11 +34,11 @@
<update id="updateDynamicCommentCount"> <update id="updateDynamicCommentCount">
update forum_dynamic update forum_dynamic
set comments_count = comments_count + 1, set comments_count = comments_count + 1,
pid = pid + 1 pid = pid + 1
where id = #{dynamicId} where id = #{dynamicId}
and pid = #{pid}; and pid = #{pid};
</update> </update>
<select id="getDynamicInfo" resultType="com.mmc.csf.release.entity.ForumDynamicDO"> <select id="getDynamicInfo" resultType="com.mmc.csf.release.entity.forum.ForumDynamicDO">
select id, select id,
pid, pid,
title, title,
...@@ -51,13 +52,14 @@ ...@@ -51,13 +52,14 @@
create_time create_time
from forum_dynamic from forum_dynamic
where id = #{dynamicId} where id = #{dynamicId}
and is_deleted = 0 and is_deleted = 0
</select> </select>
<select id="countDynamicList" resultType="java.lang.Integer"> <select id="countDynamicList" resultType="java.lang.Integer">
select count(*) select count(*)
from forum_dynamic where is_deleted = 0 from forum_dynamic
where is_deleted = 0
</select> </select>
<select id="dynamicList" resultType="com.mmc.csf.release.entity.ForumDynamicDO"> <select id="dynamicList" resultType="com.mmc.csf.release.entity.forum.ForumDynamicDO">
select id, select id,
pid, pid,
title, title,
...@@ -75,7 +77,7 @@ ...@@ -75,7 +77,7 @@
LIMIT #{itemIndex}, #{pageSize} LIMIT #{itemIndex}, #{pageSize}
</select> </select>
<select id="listDynamicPicture" resultType="com.mmc.csf.release.entity.ForumImageDO"> <select id="listDynamicPicture" resultType="com.mmc.csf.release.entity.forum.ForumImageDO">
select id, url , dynamic_id select id, url , dynamic_id
from forum_image from forum_image
where where
...@@ -84,7 +86,7 @@ ...@@ -84,7 +86,7 @@
#{item} #{item}
</foreach> </foreach>
</select> </select>
<select id="listDynamicVideo" resultType="com.mmc.csf.release.entity.ForumVideoDO"> <select id="listDynamicVideo" resultType="com.mmc.csf.release.entity.forum.ForumVideoDO">
select id, url , dynamic_id select id, url , dynamic_id
from forum_video from forum_video
where where
...@@ -93,7 +95,7 @@ ...@@ -93,7 +95,7 @@
#{item} #{item}
</foreach> </foreach>
</select> </select>
<select id="dynamicPicture" resultType="com.mmc.csf.release.entity.ForumImageDO"> <select id="dynamicPicture" resultType="com.mmc.csf.release.entity.forum.ForumImageDO">
select id, select id,
dynamic_id, dynamic_id,
url url
...@@ -101,7 +103,7 @@ ...@@ -101,7 +103,7 @@
where dynamic_id = #{dynamicId} where dynamic_id = #{dynamicId}
and is_deleted = 0 and is_deleted = 0
</select> </select>
<select id="dynamicVideo" resultType="com.mmc.csf.release.entity.ForumVideoDO"> <select id="dynamicVideo" resultType="com.mmc.csf.release.entity.forum.ForumVideoDO">
select id, select id,
dynamic_id, dynamic_id,
url url
......
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
) t ) t
</select> </select>
<select id="selectLiked" resultType="com.mmc.csf.release.entity.ForumDynamicDO"> <select id="selectLiked" resultType="com.mmc.csf.release.entity.forum.ForumDynamicDO">
SELECT fd.id SELECT fd.id
FROM forum_dynamic fd FROM forum_dynamic fd
INNER JOIN forum_like fl ON fd.id = fl.dynamic_id INNER JOIN forum_like fl ON fd.id = fl.dynamic_id
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mmc.csf.release.dao.WebsiteDao"> <mapper namespace="com.mmc.csf.release.dao.WebsiteDao">
<resultMap id="dummyFlyerResultMap" type="com.mmc.csf.release.entity.DummyFlyerDO"> <resultMap id="dummyFlyerResultMap" type="com.mmc.csf.release.entity.store.DummyFlyerDO">
<id property="id" column="id"/> <id property="id" column="id"/>
<result property="flyerName" column="flyer_name"/> <result property="flyerName" column="flyer_name"/>
<result property="phoneNum" column="phone_num"/> <result property="phoneNum" column="phone_num"/>
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
<result property="distance" column="distance"/> <result property="distance" column="distance"/>
</resultMap> </resultMap>
<resultMap id="dummyUavResultMap" type="com.mmc.csf.release.entity.DummyUavDO"> <resultMap id="dummyUavResultMap" type="com.mmc.csf.release.entity.store.DummyUavDO">
<id property="id" column="id"/> <id property="id" column="id"/>
<result property="code" column="code"/> <result property="code" column="code"/>
<result property="online" column="online"/> <result property="online" column="online"/>
...@@ -23,65 +23,74 @@ ...@@ -23,65 +23,74 @@
<result property="distance" column="distance"/> <result property="distance" column="distance"/>
</resultMap> </resultMap>
<select id="getWebsiteByAdCode" resultType="com.mmc.csf.release.entity.WebsiteInfoDO"> <select id="getWebsiteByAdCode" resultType="com.mmc.csf.release.entity.store.WebsiteInfoDO">
select id, ad_code adCode, province, location, create_time createTime select id, ad_code adCode, province, location, create_time createTime
from website_info from website_info
where ad_code = #{adCode} where ad_code = #{adCode}
</select> </select>
<select id="countDummyFlyer" resultType="Integer"> <select id="countDummyFlyer" resultType="Integer">
select count(*) from dummy_flyer select count(*)
from dummy_flyer
</select> </select>
<select id="listDummyFlyer" resultMap="dummyFlyerResultMap"> <select id="listDummyFlyer" resultMap="dummyFlyerResultMap">
SELECT id,flyer_name,phone_num,lon,lat, SELECT id,
st_distance_sphere(point(lon,lat),point(${lon},${lat})) as distance flyer_name,
phone_num,
lon,
lat,
st_distance_sphere(point(lon, lat), point(${lon}, ${lat})) as distance
FROM dummy_flyer FROM dummy_flyer
ORDER BY distance ASC ORDER BY distance ASC
LIMIT #{pageNo},#{pageSize} LIMIT #{pageNo}, #{pageSize}
</select> </select>
<select id="countDummyUav" resultType="Integer"> <select id="countDummyUav" resultType="Integer">
select count(*) from dummy_uav select count(*)
from dummy_uav
</select> </select>
<select id="listDummyUav" resultMap="dummyUavResultMap"> <select id="listDummyUav" resultMap="dummyUavResultMap">
SELECT id,code,online,lon,lat,uav_name, SELECT id,
st_distance_sphere(point(lon,lat),point(${lon},${lat})) as distance code,
online,
lon,
lat,
uav_name,
st_distance_sphere(point(lon, lat), point(${lon}, ${lat})) as distance
FROM dummy_uav FROM dummy_uav
ORDER BY distance ASC ORDER BY distance ASC
LIMIT #{pageNo},#{pageSize} LIMIT #{pageNo}, #{pageSize}
</select> </select>
<select id="countMaintain" resultType="java.lang.Integer"> <select id="countMaintain" resultType="java.lang.Integer">
select count(*) from maintain select count(*)
from maintain
</select> </select>
<select id="listMaintain" resultType="com.mmc.csf.release.entity.MaintainDO"> <select id="listMaintain" resultType="com.mmc.csf.release.entity.store.MaintainDO">
SELECT SELECT id,
id, `name`,
`name`, address,
address, lon,
lon, lat,
lat, st_distance_sphere (point (lon,lat),point (${lon},${lat})) AS distance st_distance_sphere(point(lon, lat), point(${lon}, ${lat})) AS distance
FROM FROM maintain
maintain ORDER BY distance ASC
ORDER BY LIMIT #{pageNo}, #{pageSize}
distance ASC
LIMIT #{pageNo},#{pageSize}
</select> </select>
<select id="countWebsiteList" resultType="java.lang.Integer"> <select id="countWebsiteList" resultType="java.lang.Integer">
select count(*) from website_info select count(*)
from website_info
</select> </select>
<select id="getWebsiteList" resultType="com.mmc.csf.release.entity.WebsiteInfoDO"> <select id="getWebsiteList" resultType="com.mmc.csf.release.entity.store.WebsiteInfoDO">
SELECT SELECT id,
id, `name`,
`name`, address,
address, lon,
lon, lat,
lat, st_distance_sphere (point (lon,lat),point (${lon},${lat})) AS distance st_distance_sphere(point(lon, lat), point(${lon}, ${lat})) AS distance
FROM FROM website_info
website_info ORDER BY distance ASC
ORDER BY LIMIT #{pageNo}, #{pageSize}
distance ASC
LIMIT #{pageNo},#{pageSize}
</select> </select>
</mapper> </mapper>
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论