This commit is contained in:
77
2024-04-07 22:32:33 +08:00
parent 685c886364
commit 500ca739aa
12 changed files with 192 additions and 6 deletions

View File

@@ -7,6 +7,7 @@ import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.helper.LoginHelper; 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.dto.app.dynamic.*;
import com.ruoyi.xq.service.DynamicService; import com.ruoyi.xq.service.DynamicService;
import com.ruoyi.xq.service.DynamicStarService; import com.ruoyi.xq.service.DynamicStarService;
@@ -61,6 +62,22 @@ public class DynamicAppController {
return R.ok(PageModel.build(page)); return R.ok(PageModel.build(page));
} }
@PostMapping("/delete")
@Operation(summary = "删除我的动态")
@Log(title = "删除我的动态", businessType = BusinessType.OTHER, isSaveDb = false)
public R<Void> 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<PageModel<MyDynamicListVo>> currentPage(PageQuery pageQuery){
Page<MyDynamicListVo> page = dynamicService.currentPage(pageQuery);
return R.ok(PageModel.build(page));
}
@GetMapping("/myStarDynamic") @GetMapping("/myStarDynamic")
@Operation(summary = "我收到的动态点赞-分页") @Operation(summary = "我收到的动态点赞-分页")
@Log(title = "我收到的动态点赞-分页", businessType = BusinessType.OTHER, isSaveDb = false) @Log(title = "我收到的动态点赞-分页", businessType = BusinessType.OTHER, isSaveDb = false)

View File

@@ -49,6 +49,9 @@ public class DynamicListVo {
@Schema(description = "点赞数") @Schema(description = "点赞数")
private Long starNum; private Long starNum;
@Schema(description = "是否点赞")
private boolean star = false;
@Schema(description = "图片列表") @Schema(description = "图片列表")
private List<String> imageList; private List<String> imageList;

View File

@@ -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<String> imageList;
@Schema(description = "创建时间")
private LocalDateTime createTime;
}

View File

@@ -143,6 +143,7 @@ public class CurrentUserManager {
} }
if(StringUtils.isNotEmpty(req.getResidenceCode())){ if(StringUtils.isNotEmpty(req.getResidenceCode())){
AreaCode areaCode = areaCodeService.getById(req.getResidenceCode()); AreaCode areaCode = areaCodeService.getById(req.getResidenceCode());
updateUser.setResidenceCode(req.getResidenceCode());
updateUser.setResidenceName(areaCode.getName()); updateUser.setResidenceName(areaCode.getName());
updateUser.setResidenceCityName(areaCode.getPname()); updateUser.setResidenceCityName(areaCode.getPname());
} }
@@ -255,6 +256,7 @@ public class CurrentUserManager {
} }
if(StringUtils.isNotEmpty(req.getResidenceCode())){ if(StringUtils.isNotEmpty(req.getResidenceCode())){
AreaCode areaCode = areaCodeService.getById(req.getResidenceCode()); AreaCode areaCode = areaCodeService.getById(req.getResidenceCode());
updateUser.setResidenceName(req.getResidenceCode());
updateUser.setResidenceName(areaCode.getName()); updateUser.setResidenceName(areaCode.getName());
updateUser.setResidenceCityName(areaCode.getPname()); updateUser.setResidenceCityName(areaCode.getPname());
} }

View File

@@ -6,6 +6,7 @@ import com.ruoyi.xq.domain.Dynamic;
import com.ruoyi.xq.dto.admin.dynamic.DynamicAdminVo; import com.ruoyi.xq.dto.admin.dynamic.DynamicAdminVo;
import com.ruoyi.xq.dto.app.dynamic.DynamicListVo; import com.ruoyi.xq.dto.app.dynamic.DynamicListVo;
import com.ruoyi.xq.dto.app.dynamic.DynamicQuery; import com.ruoyi.xq.dto.app.dynamic.DynamicQuery;
import com.ruoyi.xq.dto.app.dynamic.MyDynamicListVo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
/** /**
@@ -19,4 +20,7 @@ public interface DynamicMapper extends BaseMapper<Dynamic> {
Page<DynamicListVo> pageApp(@Param("build") Page<Object> build, @Param("query") DynamicQuery query); Page<DynamicListVo> pageApp(@Param("build") Page<Object> build, @Param("query") DynamicQuery query);
Page<DynamicAdminVo> pageAdmin(@Param("build") Page<Object> build, @Param("bo") DynamicAdminVo bo); Page<DynamicAdminVo> pageAdmin(@Param("build") Page<Object> build, @Param("bo") DynamicAdminVo bo);
Page<MyDynamicListVo> currentPage(@Param("build") Page<Object> build, @Param("currentUserId") Long currentUserId);
} }

View File

@@ -11,4 +11,5 @@ import com.ruoyi.xq.domain.DynamicImage;
*/ */
public interface DynamicImageService extends IService<DynamicImage> { public interface DynamicImageService extends IService<DynamicImage> {
void removeByDynamicId(Long dynamicId);
} }

View File

@@ -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.AddDynamicReq;
import com.ruoyi.xq.dto.app.dynamic.DynamicListVo; import com.ruoyi.xq.dto.app.dynamic.DynamicListVo;
import com.ruoyi.xq.dto.app.dynamic.DynamicQuery; import com.ruoyi.xq.dto.app.dynamic.DynamicQuery;
import com.ruoyi.xq.dto.app.dynamic.MyDynamicListVo;
/** /**
* 动态审核Service接口 * 动态审核Service接口
@@ -26,4 +27,8 @@ public interface DynamicService extends IService<Dynamic> {
void auditSuccess(String ids); void auditSuccess(String ids);
void auditFail(Long id, String auditRemark); void auditFail(Long id, String auditRemark);
Page<MyDynamicListVo> currentPage(PageQuery pageQuery);
void removeDynamicOfApp(Long id);
} }

View File

@@ -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.MyStarDynamicListVO;
import com.ruoyi.xq.dto.app.dynamic.MyStarDynamicQuery; import com.ruoyi.xq.dto.app.dynamic.MyStarDynamicQuery;
import java.util.List;
/** /**
* 动态点赞Service接口 * 动态点赞Service接口
* *
@@ -20,6 +22,9 @@ public interface DynamicStarService extends IService<DynamicStar> {
void unStar(Long dynamicId, Long starUserId); void unStar(Long dynamicId, Long starUserId);
List<DynamicStar> isStarList(List<Long> dynamicId, Long userId);
Page<MyStarDynamicListVO> myStarDynamic(PageQuery pageQuery, MyStarDynamicQuery dynamicQuery); Page<MyStarDynamicListVO> myStarDynamic(PageQuery pageQuery, MyStarDynamicQuery dynamicQuery);
void removeByDynamicId(Long dynamicId);
} }

View File

@@ -1,5 +1,6 @@
package com.ruoyi.xq.service.impl; package com.ruoyi.xq.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.xq.domain.DynamicImage; import com.ruoyi.xq.domain.DynamicImage;
import com.ruoyi.xq.mapper.DynamicImageMapper; import com.ruoyi.xq.mapper.DynamicImageMapper;
@@ -17,4 +18,8 @@ import org.springframework.stereotype.Service;
@Service @Service
public class DynamicImageServiceImpl extends ServiceImpl<DynamicImageMapper,DynamicImage> implements DynamicImageService { public class DynamicImageServiceImpl extends ServiceImpl<DynamicImageMapper,DynamicImage> implements DynamicImageService {
@Override
public void removeByDynamicId(Long dynamicId) {
this.remove(Wrappers.lambdaQuery(DynamicImage.class).eq(DynamicImage::getDynamicId,dynamicId));
}
} }

View File

@@ -4,21 +4,22 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.helper.LoginHelper; import com.ruoyi.common.helper.LoginHelper;
import com.ruoyi.common.utils.ServletUtils; import com.ruoyi.common.utils.ServletUtils;
import com.ruoyi.xq.domain.Dynamic; import com.ruoyi.xq.domain.*;
import com.ruoyi.xq.domain.DynamicImage;
import com.ruoyi.xq.domain.User;
import com.ruoyi.xq.domain.UserInfoAudit;
import com.ruoyi.xq.dto.admin.dynamic.DynamicAdminVo; 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.AddDynamicReq;
import com.ruoyi.xq.dto.app.dynamic.DynamicListVo; import com.ruoyi.xq.dto.app.dynamic.DynamicListVo;
import com.ruoyi.xq.dto.app.dynamic.DynamicQuery; 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.common.AuditEnum;
import com.ruoyi.xq.enums.user.UserInfoAuditTypeEnum; import com.ruoyi.xq.enums.user.UserInfoAuditTypeEnum;
import com.ruoyi.xq.mapper.DynamicMapper; import com.ruoyi.xq.mapper.DynamicMapper;
import com.ruoyi.xq.service.DynamicImageService; import com.ruoyi.xq.service.DynamicImageService;
import com.ruoyi.xq.service.DynamicService; import com.ruoyi.xq.service.DynamicService;
import com.ruoyi.xq.service.DynamicStarService;
import com.ruoyi.xq.service.UserService; import com.ruoyi.xq.service.UserService;
import com.ruoyi.xq.util.AgeUtil; import com.ruoyi.xq.util.AgeUtil;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@@ -31,6 +32,7 @@ import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@@ -47,6 +49,8 @@ public class DynamicServiceImpl extends ServiceImpl<DynamicMapper,Dynamic> imple
private UserService userService; private UserService userService;
@Autowired @Autowired
private DynamicImageService dynamicImageService; private DynamicImageService dynamicImageService;
@Autowired
private DynamicStarService dynamicStarService;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@@ -69,6 +73,44 @@ public class DynamicServiceImpl extends ServiceImpl<DynamicMapper,Dynamic> imple
} }
} }
@Override
public Page<MyDynamicListVo> currentPage(PageQuery pageQuery) {
Long currentUserId = LoginHelper.getUserId();
Page<MyDynamicListVo> page = baseMapper.currentPage(pageQuery.build(), currentUserId);
List<MyDynamicListVo> records = page.getRecords();
if(CollectionUtils.isEmpty(records)){
return page;
}
List<Long> dynamicIds = records.stream().map(MyDynamicListVo::getId).collect(Collectors.toList());
List<DynamicImage> list = dynamicImageService.list(Wrappers.lambdaQuery(DynamicImage.class).in(DynamicImage::getDynamicId, dynamicIds));
Map<Long, List<DynamicImage>> map = list.stream().collect(Collectors.groupingBy(DynamicImage::getDynamicId));
for (MyDynamicListVo record : records) {
record.setAge(AgeUtil.getAge(record.getBirthday()));
List<DynamicImage> 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 @Override
public Page<DynamicListVo> pageApp(PageQuery pageQuery, DynamicQuery dynamicQuery) { public Page<DynamicListVo> pageApp(PageQuery pageQuery, DynamicQuery dynamicQuery) {
Page<DynamicListVo> page = baseMapper.pageApp(pageQuery.build(), dynamicQuery); Page<DynamicListVo> page = baseMapper.pageApp(pageQuery.build(), dynamicQuery);
@@ -76,7 +118,10 @@ public class DynamicServiceImpl extends ServiceImpl<DynamicMapper,Dynamic> imple
if(CollectionUtils.isEmpty(records)){ if(CollectionUtils.isEmpty(records)){
return page; return page;
} }
Long currentUserId = LoginHelper.getUserId();
List<Long> dynamicIds = records.stream().map(DynamicListVo::getId).collect(Collectors.toList()); List<Long> dynamicIds = records.stream().map(DynamicListVo::getId).collect(Collectors.toList());
List<DynamicStar> starList = dynamicStarService.isStarList(dynamicIds, currentUserId);
Set<Long> starDynamicSet = starList.stream().map(DynamicStar::getDynamicId).collect(Collectors.toSet());
List<DynamicImage> list = dynamicImageService.list(Wrappers.lambdaQuery(DynamicImage.class).in(DynamicImage::getDynamicId, dynamicIds)); List<DynamicImage> list = dynamicImageService.list(Wrappers.lambdaQuery(DynamicImage.class).in(DynamicImage::getDynamicId, dynamicIds));
Map<Long, List<DynamicImage>> map = list.stream().collect(Collectors.groupingBy(DynamicImage::getDynamicId)); Map<Long, List<DynamicImage>> map = list.stream().collect(Collectors.groupingBy(DynamicImage::getDynamicId));
for (DynamicListVo record : records) { for (DynamicListVo record : records) {
@@ -86,6 +131,7 @@ public class DynamicServiceImpl extends ServiceImpl<DynamicMapper,Dynamic> imple
images = new ArrayList<>(); images = new ArrayList<>();
} }
record.setImageList(images.stream().map(DynamicImage::getUrl).collect(Collectors.toList())); record.setImageList(images.stream().map(DynamicImage::getUrl).collect(Collectors.toList()));
record.setStar(starDynamicSet.contains(currentUserId));
} }
return page; return page;
} }
@@ -138,4 +184,6 @@ public class DynamicServiceImpl extends ServiceImpl<DynamicMapper,Dynamic> imple
.set(Dynamic::getAuditTime, LocalDateTime.now()) .set(Dynamic::getAuditTime, LocalDateTime.now())
.set(Dynamic::getAuditRemark, auditRemark)); .set(Dynamic::getAuditRemark, auditRemark));
} }
} }

View File

@@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.xq.domain.DynamicImage; import com.ruoyi.xq.domain.DynamicImage;
import com.ruoyi.xq.domain.DynamicStar; 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.MyStarDynamicListVO;
import com.ruoyi.xq.dto.app.dynamic.MyStarDynamicQuery; import com.ruoyi.xq.dto.app.dynamic.MyStarDynamicQuery;
import com.ruoyi.xq.dto.common.user.MinUser; 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.DynamicImageService;
import com.ruoyi.xq.service.DynamicStarService; import com.ruoyi.xq.service.DynamicStarService;
import com.ruoyi.xq.service.UserService; import com.ruoyi.xq.service.UserService;
import com.ruoyi.xq.util.AgeUtil;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -59,6 +58,16 @@ public class DynamicStarServiceImpl extends ServiceImpl<DynamicStarMapper,Dynami
.eq(DynamicStar::getStarUserId, starUserId)); .eq(DynamicStar::getStarUserId, starUserId));
} }
@Override
public List<DynamicStar> isStarList(List<Long> dynamicId, Long userId){
if(CollectionUtils.isEmpty(dynamicId)){
return Collections.emptyList();
}
List<DynamicStar> list = this.list(Wrappers.lambdaUpdate(DynamicStar.class).eq(DynamicStar::getStarUserId, userId)
.in(DynamicStar::getDynamicId, dynamicId));
return list;
}
@Override @Override
public Page<MyStarDynamicListVO> myStarDynamic(PageQuery pageQuery, MyStarDynamicQuery dynamicQuery) { public Page<MyStarDynamicListVO> myStarDynamic(PageQuery pageQuery, MyStarDynamicQuery dynamicQuery) {
Page<MyStarDynamicListVO> result = baseMapper.myStarDynamic(pageQuery.build(), dynamicQuery); Page<MyStarDynamicListVO> result = baseMapper.myStarDynamic(pageQuery.build(), dynamicQuery);
@@ -78,4 +87,9 @@ public class DynamicStarServiceImpl extends ServiceImpl<DynamicStarMapper,Dynami
} }
return result; return result;
} }
@Override
public void removeByDynamicId(Long dynamicId) {
this.remove(Wrappers.lambdaQuery(DynamicStar.class).eq(DynamicStar::getDynamicId,dynamicId));
}
} }

View File

@@ -72,6 +72,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</where> </where>
order by create_time desc order by create_time desc
</select> </select>
<select id="currentPage" resultType="com.ruoyi.xq.dto.app.dynamic.MyDynamicListVo">
select t1.id, t1.content, t1.user_id,t1.create_time as create_time,t1.audit_status, t1.audit_remark,
t2.avatar, t2.nickname, t2.birthday, t2.gender, t2.residence_city_name, t2.education,
t2.profession,ifnull(count(t3.id),0) as star_num
from xq_dynamic t1
join xq_user t2 on t1.user_id = t2.id
left join xq_dynamic_star t3 on t1.id = t3.dynamic_id
where t1.user_id = #{currentUserId}
group by t1.id
order by create_time desc
</select>
</mapper> </mapper>