From 500ca739aac1b9e97b6e71d5672154f44e5dafdc Mon Sep 17 00:00:00 2001 From: 77 <77@77.com> Date: Sun, 7 Apr 2024 22:32:33 +0800 Subject: [PATCH] init --- .../controller/app/DynamicAppController.java | 17 +++++ .../xq/dto/app/dynamic/DynamicListVo.java | 3 + .../xq/dto/app/dynamic/MyDynamicListVo.java | 71 +++++++++++++++++++ .../ruoyi/xq/manager/CurrentUserManager.java | 2 + .../com/ruoyi/xq/mapper/DynamicMapper.java | 4 ++ .../ruoyi/xq/service/DynamicImageService.java | 1 + .../com/ruoyi/xq/service/DynamicService.java | 5 ++ .../ruoyi/xq/service/DynamicStarService.java | 5 ++ .../service/impl/DynamicImageServiceImpl.java | 5 ++ .../xq/service/impl/DynamicServiceImpl.java | 56 +++++++++++++-- .../service/impl/DynamicStarServiceImpl.java | 18 ++++- .../resources/mapper/xq/DynamicMapper.xml | 11 +++ 12 files changed, 192 insertions(+), 6 deletions(-) create mode 100644 ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/dynamic/MyDynamicListVo.java diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/DynamicAppController.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/DynamicAppController.java index 35e8d33..77f7517 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/DynamicAppController.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/DynamicAppController.java @@ -7,6 +7,7 @@ import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.helper.LoginHelper; +import com.ruoyi.xq.dto.app.common.IdReq; import com.ruoyi.xq.dto.app.dynamic.*; import com.ruoyi.xq.service.DynamicService; import com.ruoyi.xq.service.DynamicStarService; @@ -61,6 +62,22 @@ public class DynamicAppController { return R.ok(PageModel.build(page)); } + @PostMapping("/delete") + @Operation(summary = "删除我的动态") + @Log(title = "删除我的动态", businessType = BusinessType.OTHER, isSaveDb = false) + public R delete(@RequestBody IdReq idReq){ + dynamicService.removeDynamicOfApp(idReq.getId()); + return R.ok(); + } + + @GetMapping("/current/page") + @Operation(summary = "我发布的动态列表-分页") + @Log(title = "我发布的动态列表-分页", businessType = BusinessType.OTHER, isSaveDb = false) + public R> currentPage(PageQuery pageQuery){ + Page page = dynamicService.currentPage(pageQuery); + return R.ok(PageModel.build(page)); + } + @GetMapping("/myStarDynamic") @Operation(summary = "我收到的动态点赞-分页") @Log(title = "我收到的动态点赞-分页", businessType = BusinessType.OTHER, isSaveDb = false) diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/dynamic/DynamicListVo.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/dynamic/DynamicListVo.java index 8053dd0..68ac366 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/dynamic/DynamicListVo.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/dynamic/DynamicListVo.java @@ -49,6 +49,9 @@ public class DynamicListVo { @Schema(description = "点赞数") private Long starNum; + @Schema(description = "是否点赞") + private boolean star = false; + @Schema(description = "图片列表") private List imageList; diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/dynamic/MyDynamicListVo.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/dynamic/MyDynamicListVo.java new file mode 100644 index 0000000..3936b68 --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/dynamic/MyDynamicListVo.java @@ -0,0 +1,71 @@ +package com.ruoyi.xq.dto.app.dynamic; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.List; + +@Data +public class MyDynamicListVo { + + @Schema(description = "动态ID") + private Long id; + @Schema(description = "用户ID") + private Long userId; + + @Schema(description = "头像") + private String avatar; + + @Schema(description = "昵称") + private String nickname; + + @Schema(description = "年龄") + private Integer age; + + private LocalDate birthday; + @Schema(description = "性别 0-未知 1-女 2-男") + private Integer gender; + /** + * 居住城市 + */ + @Schema(description = "居住城市") + private String residenceCity; + /** + * 学历 + */ + @Schema(description = "学历") + private Integer education; + /** + * 职业 + */ + @Schema(description = "职业") + private String profession; + + @Schema(description = "内容") + private String content; + + @Schema(description = "点赞数") + private Long starNum; + + /** + * 1-待审核 2-审核成功 3-审核失败 + */ + @Schema(description = "1-待审核 2-审核成功 3-审核失败") + private Integer auditStatus; + /** + * 审核备注 + */ + @Schema(description = "审核备注") + private String auditRemark; + + + @Schema(description = "图片列表") + private List imageList; + + @Schema(description = "创建时间") + private LocalDateTime createTime; + + +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/manager/CurrentUserManager.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/manager/CurrentUserManager.java index 710d965..084a1e9 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/manager/CurrentUserManager.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/manager/CurrentUserManager.java @@ -143,6 +143,7 @@ public class CurrentUserManager { } if(StringUtils.isNotEmpty(req.getResidenceCode())){ AreaCode areaCode = areaCodeService.getById(req.getResidenceCode()); + updateUser.setResidenceCode(req.getResidenceCode()); updateUser.setResidenceName(areaCode.getName()); updateUser.setResidenceCityName(areaCode.getPname()); } @@ -255,6 +256,7 @@ public class CurrentUserManager { } if(StringUtils.isNotEmpty(req.getResidenceCode())){ AreaCode areaCode = areaCodeService.getById(req.getResidenceCode()); + updateUser.setResidenceName(req.getResidenceCode()); updateUser.setResidenceName(areaCode.getName()); updateUser.setResidenceCityName(areaCode.getPname()); } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/mapper/DynamicMapper.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/mapper/DynamicMapper.java index 5d777a7..b434bb1 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/mapper/DynamicMapper.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/mapper/DynamicMapper.java @@ -6,6 +6,7 @@ import com.ruoyi.xq.domain.Dynamic; import com.ruoyi.xq.dto.admin.dynamic.DynamicAdminVo; import com.ruoyi.xq.dto.app.dynamic.DynamicListVo; import com.ruoyi.xq.dto.app.dynamic.DynamicQuery; +import com.ruoyi.xq.dto.app.dynamic.MyDynamicListVo; import org.apache.ibatis.annotations.Param; /** @@ -19,4 +20,7 @@ public interface DynamicMapper extends BaseMapper { Page pageApp(@Param("build") Page build, @Param("query") DynamicQuery query); Page pageAdmin(@Param("build") Page build, @Param("bo") DynamicAdminVo bo); + + Page currentPage(@Param("build") Page build, @Param("currentUserId") Long currentUserId); + } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/DynamicImageService.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/DynamicImageService.java index ea89b55..c8b6a33 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/DynamicImageService.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/DynamicImageService.java @@ -11,4 +11,5 @@ import com.ruoyi.xq.domain.DynamicImage; */ public interface DynamicImageService extends IService { + void removeByDynamicId(Long dynamicId); } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/DynamicService.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/DynamicService.java index a4be6ea..f4f3a4c 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/DynamicService.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/DynamicService.java @@ -8,6 +8,7 @@ import com.ruoyi.xq.dto.admin.dynamic.DynamicAdminVo; import com.ruoyi.xq.dto.app.dynamic.AddDynamicReq; import com.ruoyi.xq.dto.app.dynamic.DynamicListVo; import com.ruoyi.xq.dto.app.dynamic.DynamicQuery; +import com.ruoyi.xq.dto.app.dynamic.MyDynamicListVo; /** * 动态审核Service接口 @@ -26,4 +27,8 @@ public interface DynamicService extends IService { void auditSuccess(String ids); void auditFail(Long id, String auditRemark); + + Page currentPage(PageQuery pageQuery); + + void removeDynamicOfApp(Long id); } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/DynamicStarService.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/DynamicStarService.java index 97afbb4..6766269 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/DynamicStarService.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/DynamicStarService.java @@ -8,6 +8,8 @@ import com.ruoyi.xq.dto.app.dynamic.DynamicListVo; import com.ruoyi.xq.dto.app.dynamic.MyStarDynamicListVO; import com.ruoyi.xq.dto.app.dynamic.MyStarDynamicQuery; +import java.util.List; + /** * 动态点赞Service接口 * @@ -20,6 +22,9 @@ public interface DynamicStarService extends IService { void unStar(Long dynamicId, Long starUserId); + List isStarList(List dynamicId, Long userId); + Page myStarDynamic(PageQuery pageQuery, MyStarDynamicQuery dynamicQuery); + void removeByDynamicId(Long dynamicId); } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/DynamicImageServiceImpl.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/DynamicImageServiceImpl.java index 6c7df3c..30b6ade 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/DynamicImageServiceImpl.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/DynamicImageServiceImpl.java @@ -1,5 +1,6 @@ package com.ruoyi.xq.service.impl; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.xq.domain.DynamicImage; import com.ruoyi.xq.mapper.DynamicImageMapper; @@ -17,4 +18,8 @@ import org.springframework.stereotype.Service; @Service public class DynamicImageServiceImpl extends ServiceImpl implements DynamicImageService { + @Override + public void removeByDynamicId(Long dynamicId) { + this.remove(Wrappers.lambdaQuery(DynamicImage.class).eq(DynamicImage::getDynamicId,dynamicId)); + } } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/DynamicServiceImpl.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/DynamicServiceImpl.java index 701c833..ed53e09 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/DynamicServiceImpl.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/DynamicServiceImpl.java @@ -4,21 +4,22 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.core.domain.PageQuery; +import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.helper.LoginHelper; import com.ruoyi.common.utils.ServletUtils; -import com.ruoyi.xq.domain.Dynamic; -import com.ruoyi.xq.domain.DynamicImage; -import com.ruoyi.xq.domain.User; -import com.ruoyi.xq.domain.UserInfoAudit; +import com.ruoyi.xq.domain.*; import com.ruoyi.xq.dto.admin.dynamic.DynamicAdminVo; +import com.ruoyi.xq.dto.app.auth.LoginUser; import com.ruoyi.xq.dto.app.dynamic.AddDynamicReq; import com.ruoyi.xq.dto.app.dynamic.DynamicListVo; import com.ruoyi.xq.dto.app.dynamic.DynamicQuery; +import com.ruoyi.xq.dto.app.dynamic.MyDynamicListVo; import com.ruoyi.xq.enums.common.AuditEnum; import com.ruoyi.xq.enums.user.UserInfoAuditTypeEnum; import com.ruoyi.xq.mapper.DynamicMapper; import com.ruoyi.xq.service.DynamicImageService; import com.ruoyi.xq.service.DynamicService; +import com.ruoyi.xq.service.DynamicStarService; import com.ruoyi.xq.service.UserService; import com.ruoyi.xq.util.AgeUtil; import lombok.RequiredArgsConstructor; @@ -31,6 +32,7 @@ import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.stream.Collectors; /** @@ -47,6 +49,8 @@ public class DynamicServiceImpl extends ServiceImpl imple private UserService userService; @Autowired private DynamicImageService dynamicImageService; + @Autowired + private DynamicStarService dynamicStarService; @Override @Transactional(rollbackFor = Exception.class) @@ -69,6 +73,44 @@ public class DynamicServiceImpl extends ServiceImpl imple } } + @Override + public Page currentPage(PageQuery pageQuery) { + Long currentUserId = LoginHelper.getUserId(); + Page page = baseMapper.currentPage(pageQuery.build(), currentUserId); + List records = page.getRecords(); + if(CollectionUtils.isEmpty(records)){ + return page; + } + List dynamicIds = records.stream().map(MyDynamicListVo::getId).collect(Collectors.toList()); + List list = dynamicImageService.list(Wrappers.lambdaQuery(DynamicImage.class).in(DynamicImage::getDynamicId, dynamicIds)); + Map> map = list.stream().collect(Collectors.groupingBy(DynamicImage::getDynamicId)); + for (MyDynamicListVo record : records) { + record.setAge(AgeUtil.getAge(record.getBirthday())); + List images = map.get(record.getId()); + if(images == null){ + images = new ArrayList<>(); + } + record.setImageList(images.stream().map(DynamicImage::getUrl).collect(Collectors.toList())); + } + return page; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void removeDynamicOfApp(Long id) { + Dynamic dynamic = this.getById(id); + if(dynamic == null){ + throw new ServiceException("动态不存在"); + } + Long userId = LoginHelper.getUserId(); + if(dynamic.getUserId().equals(userId)){ + throw new ServiceException("只能删除自己的动态哦"); + } + this.removeById(id); + dynamicImageService.removeByDynamicId(id); + dynamicStarService.removeByDynamicId(id); + } + @Override public Page pageApp(PageQuery pageQuery, DynamicQuery dynamicQuery) { Page page = baseMapper.pageApp(pageQuery.build(), dynamicQuery); @@ -76,7 +118,10 @@ public class DynamicServiceImpl extends ServiceImpl imple if(CollectionUtils.isEmpty(records)){ return page; } + Long currentUserId = LoginHelper.getUserId(); List dynamicIds = records.stream().map(DynamicListVo::getId).collect(Collectors.toList()); + List starList = dynamicStarService.isStarList(dynamicIds, currentUserId); + Set starDynamicSet = starList.stream().map(DynamicStar::getDynamicId).collect(Collectors.toSet()); List list = dynamicImageService.list(Wrappers.lambdaQuery(DynamicImage.class).in(DynamicImage::getDynamicId, dynamicIds)); Map> map = list.stream().collect(Collectors.groupingBy(DynamicImage::getDynamicId)); for (DynamicListVo record : records) { @@ -86,6 +131,7 @@ public class DynamicServiceImpl extends ServiceImpl imple images = new ArrayList<>(); } record.setImageList(images.stream().map(DynamicImage::getUrl).collect(Collectors.toList())); + record.setStar(starDynamicSet.contains(currentUserId)); } return page; } @@ -138,4 +184,6 @@ public class DynamicServiceImpl extends ServiceImpl imple .set(Dynamic::getAuditTime, LocalDateTime.now()) .set(Dynamic::getAuditRemark, auditRemark)); } + + } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/DynamicStarServiceImpl.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/DynamicStarServiceImpl.java index 3e79309..5f8a931 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/DynamicStarServiceImpl.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/DynamicStarServiceImpl.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.xq.domain.DynamicImage; import com.ruoyi.xq.domain.DynamicStar; -import com.ruoyi.xq.dto.app.dynamic.DynamicListVo; import com.ruoyi.xq.dto.app.dynamic.MyStarDynamicListVO; import com.ruoyi.xq.dto.app.dynamic.MyStarDynamicQuery; import com.ruoyi.xq.dto.common.user.MinUser; @@ -14,13 +13,13 @@ import com.ruoyi.xq.mapper.DynamicStarMapper; import com.ruoyi.xq.service.DynamicImageService; import com.ruoyi.xq.service.DynamicStarService; import com.ruoyi.xq.service.UserService; -import com.ruoyi.xq.util.AgeUtil; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -59,6 +58,16 @@ public class DynamicStarServiceImpl extends ServiceImpl isStarList(List dynamicId, Long userId){ + if(CollectionUtils.isEmpty(dynamicId)){ + return Collections.emptyList(); + } + List list = this.list(Wrappers.lambdaUpdate(DynamicStar.class).eq(DynamicStar::getStarUserId, userId) + .in(DynamicStar::getDynamicId, dynamicId)); + return list; + } + @Override public Page myStarDynamic(PageQuery pageQuery, MyStarDynamicQuery dynamicQuery) { Page result = baseMapper.myStarDynamic(pageQuery.build(), dynamicQuery); @@ -78,4 +87,9 @@ public class DynamicStarServiceImpl extends ServiceImpl order by create_time desc +