ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/enums/ArticleStatusEnum.java
@@ -10,7 +10,7 @@ @AllArgsConstructor public enum ArticleStatusEnum { /*状态 1=待审核 2=已通过 3=已拒绝 4被举报*/ /*状态 1=待审核 2=已通过 3=已拒绝 */ TO_BE_REVIEWED(1, "待审核"), PASSED(2, "已通过"), ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/enums/AuditStatusEnum.java
@@ -14,8 +14,7 @@ TO_BE_REVIEWED(1, "待审核"), PASSED(2, "已通过"), REJECTED(3, "已拒绝"), REPORTED(4, "被举报"); REJECTED(3, "已拒绝"); @EnumValue private final int code; @JsonValue ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/MgtArticleCommentsController.java
New file @@ -0,0 +1,70 @@ package com.ruoyi.article.controller.management; import com.ruoyi.article.controller.forepart.dto.ArticleCommentsDTO; import com.ruoyi.article.controller.management.dto.MgtArticleCommentsQuery; import com.ruoyi.article.controller.management.vo.MgtArticleCommentsVO; import com.ruoyi.article.service.IArticleCommentsService; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.page.PageDTO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.PathVariable; 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; /** * <p> * 资讯评论回复表 前端控制器 * </p> * * @author mitao * @since 2024-05-16 */ @RestController @RequiredArgsConstructor @RequestMapping("/mgt/article-comments") @Api(value = "管理后台-资讯评论回复相关接口", tags = "管理后台-资讯评论回复相关接口") public class MgtArticleCommentsController { private final IArticleCommentsService articleCommentsService; @PostMapping("/delMemberArticleComments") @ApiOperation(value = "用户端-删除用户评论/回复") public R delMemberArticleComments(@RequestBody ArticleCommentsDTO articleCommentsDTO) { articleCommentsService.delMemberArticleComments(articleCommentsDTO); return R.ok(); } /** * 查看详情-评论详情 * * @param query 资讯评论回复查询对象 * @return PageDTO<MgtArticleCommentsVO> */ @ApiOperation(value = "查看详情-评论详情") @PostMapping("/page") public R<PageDTO<MgtArticleCommentsVO>> getArticleCommentsPage( @Validated @RequestBody MgtArticleCommentsQuery query) { return R.ok(articleCommentsService.getArticleCommentsPage(query)); } /** * 删除评论 * * @param id 评论id */ @ApiOperation("删除评论") @DeleteMapping("/{id}") public R<?> delArticleComments( @ApiParam(name = "id", value = "评论id", required = true) @PathVariable("id") Long id) { articleCommentsService.delArticleComments(id); return R.ok(); } } ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/MgtArticleController.java
@@ -1,6 +1,7 @@ package com.ruoyi.article.controller.management; import com.ruoyi.article.controller.management.dto.MgtArticleDTO; import com.ruoyi.article.controller.management.dto.MgtArticleQuery; import com.ruoyi.article.controller.management.vo.MgtArticleVO; import com.ruoyi.article.service.IArticleService; @@ -8,9 +9,13 @@ import com.ruoyi.common.core.utils.page.PageDTO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -43,5 +48,43 @@ return R.ok(articleService.getArticlePage(query)); } /** * 添加/编辑资讯 * * @param dto 管理后台-资讯传输对象 */ @ApiOperation(value = "添加/编辑资讯") @PostMapping("/save") public R<?> saveArticle(@Validated @RequestBody MgtArticleDTO dto) { articleService.saveArticle(dto); return R.ok(); } /** * 处理举报 * * @param id 资讯id */ @ApiOperation(value = "处理举报") @PutMapping("/handle-report/{id}") public R<?> handleReport( @ApiParam(name = "id", value = "资讯id", required = true) @PathVariable("id") Long id) { articleService.handleReport(id); return R.ok(); } /** * 查看详情 * * @param id 资讯id * @return MgtArticleVO */ @ApiOperation(value = "查看详情") @GetMapping("/detail/{id}") public R<MgtArticleVO> getDetail( @ApiParam(name = "id", value = "资讯id", required = true) @PathVariable("id") Long id) { return R.ok(articleService.getDetail(id)); } } ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/MgtSensitiveWordsController.java
@@ -1,9 +1,17 @@ package com.ruoyi.article.controller.management; import com.ruoyi.article.controller.management.dto.MgtSensitiveWordsQuery; import com.ruoyi.article.controller.management.vo.MgtSensitiveWordsVO; import com.ruoyi.article.service.ISensitiveWordsService; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.page.PageDTO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; 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; @@ -16,12 +24,24 @@ * @since 2024-05-16 */ @RestController @RequestMapping("/sensitive-words") @RequestMapping("/mgt/sensitive-words") @RequiredArgsConstructor @Api(value = "管理后台-敏感词管理相关接口", tags = "管理后台-敏感词管理相关接口") public class MgtSensitiveWordsController { private final ISensitiveWordsService sensitiveWordsService; /** * 获取敏感词列表的分页数据 * * @param query 管理后台-敏感词查询对象 * @return PageDTO<MgtSensitiveWordsVO> */ @ApiOperation("获取敏感词列表的分页数据") @PostMapping("/page") public R<PageDTO<MgtSensitiveWordsVO>> getSensitiveWordsPage( @Validated @RequestBody MgtSensitiveWordsQuery query) { return R.ok(sensitiveWordsService.getSensitiveWordsPage(query)); } } ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/dto/MgtArticleCommentsQuery.java
New file @@ -0,0 +1,26 @@ package com.ruoyi.article.controller.management.dto; import com.ruoyi.common.core.web.page.BasePage; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import javax.validation.constraints.NotNull; import lombok.Data; import lombok.EqualsAndHashCode; /** * @author mitao * @date 2024/6/12 */ @Data @EqualsAndHashCode(callSuper = true) @ApiModel(value = "资讯评论回复查询对象", description = "资讯评论回复查询对象") public class MgtArticleCommentsQuery extends BasePage { private static final long serialVersionUID = -5273257330099726767L; @ApiModelProperty(value = "资讯id") @NotNull(message = "资讯id不能为空") private Long articleId; @ApiModelProperty(value = "发布人") private String nickname; } ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/dto/MgtArticleDTO.java
New file @@ -0,0 +1,36 @@ package com.ruoyi.article.controller.management.dto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.io.Serializable; import javax.validation.constraints.NotBlank; import lombok.Data; /** * @author mitao * @date 2024/6/12 */ @Data @ApiModel(value = "管理后台-资讯传输对象", description = "管理后台-资讯传输对象") public class MgtArticleDTO implements Serializable { private static final long serialVersionUID = 5753062638043360603L; @ApiModelProperty(value = "资讯id", notes = "更新必传,添加不传") private Long id; @ApiModelProperty(value = "资讯标题") @NotBlank(message = "资讯标题不能为空") private String title; @ApiModelProperty(value = "资讯内容") @NotBlank(message = "资讯内容不能为空") private String content; @ApiModelProperty(value = "资讯图片 ['a','b','c','d','e']") @NotBlank(message = "资讯图片不能为空") private String images; @ApiModelProperty(value = "资讯视频") private String videoUrl; } ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/dto/MgtSensitiveWordsQuery.java
New file @@ -0,0 +1,22 @@ package com.ruoyi.article.controller.management.dto; import com.ruoyi.common.core.web.page.BasePage; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; /** * @author mitao * @date 2024/6/12 */ @Data @EqualsAndHashCode(callSuper = true) @ApiModel(value = "管理后台-敏感词查询对象", description = "管理后台-敏感词查询对象") public class MgtSensitiveWordsQuery extends BasePage { private static final long serialVersionUID = 821139236744918828L; @ApiModelProperty(value = "敏感词") private String word; } ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/vo/MgtArticleCommentsVO.java
New file @@ -0,0 +1,39 @@ package com.ruoyi.article.controller.management.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.io.Serializable; import java.time.LocalDateTime; import lombok.Data; /** * @author mitao * @date 2024/6/12 */ @Data @ApiModel(value = "资讯评论视图对象", description = "资讯评论视图对象") public class MgtArticleCommentsVO implements Serializable { private static final long serialVersionUID = -1559372355057590070L; @ApiModelProperty(value = "资讯评论id") private Long id; @ApiModelProperty(value = "评论id") private Long replyId; @ApiModelProperty(value = "会员id") private Long memberId; @ApiModelProperty(value = "发布人") private String nickname; @ApiModelProperty(value = "联系电话") private String phone; @ApiModelProperty(value = "评论内容") private String content; @ApiModelProperty(value = "发布时间") private LocalDateTime createTime; } ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/vo/MgtArticleVO.java
@@ -37,7 +37,7 @@ @ApiModelProperty(value = "资讯视频") private String videoUrl; @ApiModelProperty(value = "状态 1=待审核 2=已通过 3=已拒绝 4被举报") @ApiModelProperty(value = "状态 1=待审核 2=已通过 3=已拒绝") private AuditStatusEnum status; @ApiModelProperty(value = "举报用户") @@ -73,4 +73,6 @@ @ApiModelProperty(value = "上架状态 上架中 已下架") private ListingStatusEnum listingStatus; @ApiModelProperty(value = "是否被举报") private Boolean reported; } ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/vo/MgtSensitiveWordsVO.java
New file @@ -0,0 +1,29 @@ package com.ruoyi.article.controller.management.vo; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.io.Serializable; import java.time.LocalDateTime; import lombok.Data; /** * @author mitao * @date 2024/6/12 */ @Data @ApiModel(value = "管理后台-敏感词视图对象", description = "管理后台-敏感词视图对象") public class MgtSensitiveWordsVO implements Serializable { private static final long serialVersionUID = -4798653916602479053L; @ApiModelProperty(value = "敏感词id") private Long id; @ApiModelProperty(value = "敏感词") private String word; @ApiModelProperty(value = "创建时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime createTime; } ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/domain/Article.java
@@ -53,11 +53,11 @@ @ApiModelProperty(value = "资讯视频") private String videoUrl; @ApiModelProperty(value = "状态 1=待审核 2=已通过 3=已拒绝 4被举报") @ApiModelProperty(value = "状态 1=待审核 2=已通过 3=已拒绝") private AuditStatusEnum status; @ApiModelProperty(value = "举报用户") private String reportBy; @ApiModelProperty(value = "举报用户id") private Long reportBy; @ApiModelProperty(value = "举报时间") private LocalDateTime reportedTime; @@ -100,4 +100,6 @@ @ApiModelProperty(value = "上架状态 上架中 已下架") private ListingStatusEnum listingStatus; @ApiModelProperty(value = "是否被举报") private Boolean reported; } ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/domain/ArticleComments.java
@@ -73,6 +73,7 @@ @ApiModelProperty(value = "1 评论,2 是回复") private Integer type; @ApiModelProperty(value = "点赞数") private Integer likeCount; ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/handler/MyMetaObjectHandler.java
@@ -21,7 +21,7 @@ public void insertFill(MetaObject metaObject) { // 获取当前登录用户 Long userId = SecurityUtils.getUserId(); fillValue("createBy", userId, metaObject); fillValue("createBy", userId.toString(), metaObject); fillValue("createTime", LocalDateTime.now(), metaObject); } @@ -29,7 +29,7 @@ public void updateFill(MetaObject metaObject) { // 获取当前登录用户 Long userId = SecurityUtils.getUserId(); fillValue("updateBy", userId, metaObject); fillValue("updateBy", userId.toString(), metaObject); fillValue("updateTime", LocalDateTime.now(), metaObject); } ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/IArticleCommentsService.java
@@ -2,7 +2,10 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.article.controller.forepart.dto.ArticleCommentsDTO; import com.ruoyi.article.controller.management.dto.MgtArticleCommentsQuery; import com.ruoyi.article.controller.management.vo.MgtArticleCommentsVO; import com.ruoyi.article.domain.ArticleComments; import com.ruoyi.common.core.utils.page.PageDTO; /** * <p> @@ -18,4 +21,13 @@ void delMemberArticleComments(ArticleCommentsDTO articleCommentsDTO); /** * 查看详情-评论详情 * * @param query 资讯评论回复查询对象 * @return PageDTO<MgtArticleCommentsVO> */ PageDTO<MgtArticleCommentsVO> getArticleCommentsPage(MgtArticleCommentsQuery query); void delArticleComments(Long id); } ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/IArticleService.java
@@ -4,6 +4,7 @@ import com.ruoyi.article.controller.forepart.dto.ArticleDTO; import com.ruoyi.article.controller.forepart.vo.ArticleCommentsVO; import com.ruoyi.article.controller.forepart.vo.ArticleVO; import com.ruoyi.article.controller.management.dto.MgtArticleDTO; import com.ruoyi.article.controller.management.dto.MgtArticleQuery; import com.ruoyi.article.controller.management.vo.MgtArticleVO; import com.ruoyi.article.domain.Article; @@ -32,5 +33,33 @@ PageDTO<ArticleCommentsVO> getArticleCommentsList(ArticleDTO articleDTO); void getReport(ArticleDTO articleDTO); /** * 获取资讯列表的分页数据 * * @param query 资讯管理查询条件 * @return PageDTO<ArticleVO> */ PageDTO<MgtArticleVO> getArticlePage(MgtArticleQuery query); /** * "添加/编辑资讯 * * @param dto 管理后台-资讯传输对象 */ void saveArticle(MgtArticleDTO dto); /** * 处理举报 * * @param id 资讯id */ void handleReport(Long id); /** * 查看详情 * * @param id 资讯id * @return MgtArticleVO */ MgtArticleVO getDetail(Long id); } ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/ISensitiveWordsService.java
@@ -1,12 +1,14 @@ package com.ruoyi.article.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.article.controller.management.dto.MgtSensitiveWordsQuery; import com.ruoyi.article.controller.management.vo.MgtSensitiveWordsVO; import com.ruoyi.article.domain.SensitiveWords; import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.system.api.domain.dto.judgeSensitiveWordsDTO; import com.ruoyi.system.api.domain.vo.judgeSensitiveWordsVO; import org.springframework.web.bind.annotation.RequestBody; import java.util.List; import org.springframework.web.bind.annotation.RequestBody; /** * <p> @@ -21,4 +23,11 @@ judgeSensitiveWordsVO judgeSensitiveWordsList(@RequestBody judgeSensitiveWordsDTO SensitiveWordsDTO); /** * 获取敏感词列表的分页数据 * * @param query 管理后台-敏感词查询对象 * @return PageDTO<MgtSensitiveWordsVO> */ PageDTO<MgtSensitiveWordsVO> getSensitiveWordsPage(MgtSensitiveWordsQuery query); } ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/impl/ArticleCommentsServiceImpl.java
@@ -1,16 +1,31 @@ package com.ruoyi.article.service.impl; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.article.controller.forepart.dto.ArticleCommentsDTO; import com.ruoyi.article.controller.management.dto.MgtArticleCommentsQuery; import com.ruoyi.article.controller.management.vo.MgtArticleCommentsVO; import com.ruoyi.article.domain.Article; import com.ruoyi.article.domain.ArticleComments; import com.ruoyi.article.controller.forepart.dto.ArticleCommentsDTO; import com.ruoyi.article.mapper.ArticleCommentsMapper; import com.ruoyi.article.mapper.ArticleMapper; import com.ruoyi.article.service.IArticleCommentsService; import com.ruoyi.common.core.constant.SecurityConstants; import com.ruoyi.common.core.exception.ServiceException; import org.springframework.stereotype.Service; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.system.api.domain.Member; import com.ruoyi.system.api.domain.dto.MemberDTO; import com.ruoyi.system.api.feignClient.MemberClient; import java.util.List; import java.util.Map; import java.util.Set; import java.util.function.Function; import java.util.stream.Collectors; import javax.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; /** * <p> @@ -26,7 +41,8 @@ @Resource private ArticleMapper articleMapper; @Resource private MemberClient memberClient; @Override public void saveMemberArticleComments(ArticleCommentsDTO articleCommentsDTO) { ArticleComments articleComments=new ArticleComments(); @@ -65,4 +81,77 @@ this.removeById(articleCommentsDTO.getId()); } /** * 查看详情-评论详情 * * @param query 资讯评论回复查询对象 * @return PageDTO<MgtArticleCommentsVO> */ @Override public PageDTO<MgtArticleCommentsVO> getArticleCommentsPage(MgtArticleCommentsQuery query) { PageDTO<MgtArticleCommentsVO> result; Set<Long> memberIdSet = null; if (StringUtils.isNotBlank(query.getNickname())) { MemberDTO memberDTO = new MemberDTO(); memberDTO.setNickname(query.getNickname()); List<Member> data = memberClient.getMemberListByCondition(memberDTO, SecurityConstants.INNER).getData(); if (StringUtils.isNotEmpty(data)) { memberIdSet = data.stream().map(Member::getId) .collect(Collectors.toSet()); } } Page<ArticleComments> page = this.lambdaQuery() .eq(ArticleComments::getArticleId, query.getArticleId()) .in(StringUtils.isNotEmpty(memberIdSet), ArticleComments::getMemberId, memberIdSet) .page(new Page<>(query.getPageCurr(), query.getPageSize())); if (StringUtils.isEmpty(page.getRecords())) { result = PageDTO.empty(page); } else { PageDTO<MgtArticleCommentsVO> pageVO = PageDTO.of(page, MgtArticleCommentsVO.class);// 获取会员信息 Set<Long> memIdSet = pageVO.getList().stream().map(MgtArticleCommentsVO::getMemberId) .collect(Collectors.toSet()); List<Member> memberList = memberClient.getMemberListByIds(memIdSet, SecurityConstants.INNER).getData(); Map<Long, Member> memberMap = memberList.stream() .collect(Collectors.toMap(Member::getId, Function.identity())); pageVO.getList().forEach(item -> { Member member = memberMap.get(item.getMemberId()); if (StringUtils.isNotNull(member)) { item.setNickname(member.getNickname()); item.setPhone(member.getPhone()); } }); result = pageVO; } return result; } @Override @Transactional(propagation = Propagation.REQUIRES_NEW) public void delArticleComments(Long id) { ArticleComments articleComments = this.getById(id); if (StringUtils.isNull(articleComments)) { throw new ServiceException("评论不存在"); } // 查询资讯 Article article = articleMapper.selectById(articleComments.getArticleId()); if (articleComments.getType() == 2) { this.removeById(id); article.setCommentCount(Math.max(article.getCommentCount() - 1, 0)); } else if (articleComments.getType() == 1) { List<ArticleComments> list = this.lambdaQuery().eq(ArticleComments::getReplyId, id) .list(); List<Long> commentsIds = list.stream().map(ArticleComments::getId) .collect(Collectors.toList()); commentsIds.add(articleComments.getId()); this.removeByIds(commentsIds); article.setCommentCount(Math.max((article.getCommentCount() - list.size()), 0)); } articleMapper.updateById(article); } } ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/impl/ArticleServiceImpl.java
@@ -8,6 +8,7 @@ import com.ruoyi.article.controller.forepart.dto.ArticleDTO; import com.ruoyi.article.controller.forepart.vo.ArticleCommentsVO; import com.ruoyi.article.controller.forepart.vo.ArticleVO; import com.ruoyi.article.controller.management.dto.MgtArticleDTO; import com.ruoyi.article.controller.management.dto.MgtArticleQuery; import com.ruoyi.article.controller.management.vo.MgtArticleVO; import com.ruoyi.article.domain.Article; @@ -23,8 +24,9 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.enums.ArticleTypeEnum; import com.ruoyi.common.core.enums.AuditStatusEnum; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.bean.BeanUtils; import com.ruoyi.common.core.utils.page.BeanUtils; import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.system.api.domain.Member; import com.ruoyi.system.api.domain.SysUser; @@ -156,10 +158,8 @@ @Override public ArticleVO getMemberArticleInfo(ArticleDTO articleDTO) { Article article=this.getById(articleDTO.getId()); ArticleVO articleVO=new ArticleVO(); BeanUtils.copyProperties(article, articleVO); ArticleVO articleVO = BeanUtils.copyBean(article, ArticleVO.class); R<Member> membeOne = memberClient.getMembeOne(articleVO.getMemberId(), SecurityConstants.INNER); Member data = membeOne.getData(); @@ -278,11 +278,18 @@ R<Member> membeOne = memberClient.getMembeOne(articleDTO.getMemberId(), SecurityConstants.INNER); Member data = membeOne.getData(); article.setReportBy(data.getNickname()); article.setReportBy(data.getId()); article.setReportedTime(LocalDateTime.now()); article.setReported(Boolean.TRUE); this.saveOrUpdate(article); } /** * 获取资讯列表的分页数据 * * @param query 资讯管理查询条件 * @return PageDTO<ArticleVO> */ @Override public PageDTO<MgtArticleVO> getArticlePage(MgtArticleQuery query) { // 构建查询条件 @@ -372,4 +379,57 @@ } return pageVO; } /** * "添加/编辑资讯 * * @param dto 管理后台-资讯传输对象 */ @Override public void saveArticle(MgtArticleDTO dto) { Article article = BeanUtils.copyBean(dto, Article.class); if (StringUtils.isNull(article.getId())) { article.setStatus(AuditStatusEnum.PASSED); this.save(article); } else { Article articleById = this.getById(article.getId()); if (StringUtils.isNull(articleById)) { throw new ServiceException("资讯不存在"); } this.updateById(article); } } /** * 处理举报 * * @param id 资讯id */ @Override public void handleReport(Long id) { Article article = this.getById(id); if (StringUtils.isNull(article)) { throw new ServiceException("资讯不存在"); } if (Boolean.FALSE.equals(article.getReported())) { throw new ServiceException("该资讯未举报"); } article.setReported(Boolean.FALSE); this.updateById(article); } /** * 查看详情 * * @param id 资讯id * @return MgtArticleVO */ @Override public MgtArticleVO getDetail(Long id) { Article article = this.getById(id); if (StringUtils.isNull(article)) { throw new ServiceException("资讯不存在"); } return BeanUtils.copyBean(article, MgtArticleVO.class); } } ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/impl/SensitiveWordsServiceImpl.java
@@ -3,18 +3,17 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.article.controller.management.dto.MgtSensitiveWordsQuery; import com.ruoyi.article.controller.management.vo.MgtSensitiveWordsVO; import com.ruoyi.article.domain.SensitiveWords; import com.ruoyi.article.mapper.SensitiveWordsMapper; import com.ruoyi.article.service.ISensitiveWordsService; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.regex.Pattern; import javax.annotation.Resource; import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.system.api.domain.dto.judgeSensitiveWordsDTO; import com.ruoyi.system.api.domain.vo.judgeSensitiveWordsVO; import java.util.ArrayList; import java.util.List; import java.util.regex.Pattern; import org.springframework.stereotype.Service; /** @@ -55,5 +54,14 @@ return SensitiveWordsVO; } /** * 获取敏感词列表的分页数据 * * @param query 管理后台-敏感词查询对象 * @return PageDTO<MgtSensitiveWordsVO> */ @Override public PageDTO<MgtSensitiveWordsVO> getSensitiveWordsPage(MgtSensitiveWordsQuery query) { return null; } } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberAddressController.java
File was deleted ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberController.java
@@ -7,6 +7,7 @@ import com.ruoyi.member.controller.management.vo.MgtMemberPointsVO; import com.ruoyi.member.controller.management.vo.MgtMemberVO; import com.ruoyi.member.service.IMemberService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; @@ -24,6 +25,7 @@ @RestController @RequestMapping("/mgt/member") @RequiredArgsConstructor @Api(value = "管理后台-会员管理相关接口", tags = "管理后台-会员管理相关接口") public class MgtMemberController { private final IMemberService memberService; ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberLevelController.java
@@ -5,9 +5,9 @@ import com.ruoyi.member.controller.management.dto.MgtMemberLevelDTO; import com.ruoyi.member.controller.management.vo.MgtMemberLevelVO; import com.ruoyi.member.service.IMemberLevelService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import java.util.List; import javax.validation.constraints.NotEmpty; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; @@ -24,10 +24,10 @@ * @author mitao * @since 2024-05-16 */ @Validated @RestController @RequestMapping("/mgt/member-level") @RequiredArgsConstructor @Api(value = "管理后台-会员等级相关接口", tags = "管理后台-会员等级相关接口") public class MgtMemberLevelController { private final IMemberLevelService memberLevelService; @@ -46,13 +46,12 @@ /** * 保存会员等级配置 * * @param memberLevelDTOList 会员等级配置列表 * @param dto 会员等级配置列表 */ @ApiOperation("保存会员等级配置") @PostMapping("/save") public R<?> saveOrUpdateMemberLevel( @RequestBody @NotEmpty(message = "会员等级不能为空") List<MgtMemberLevelDTO> memberLevelDTOList) { memberLevelService.saveOrUpdateMemberLevel(memberLevelDTOList); public R<?> saveOrUpdateMemberLevel(@Validated @RequestBody MgtMemberLevelDTO dto) { memberLevelService.saveOrUpdateMemberLevel(dto); return R.ok(); } } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/dto/MgtMemberLevelDTO.java
@@ -2,23 +2,19 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.io.Serializable; import java.math.BigDecimal; import javax.validation.constraints.NotNull; import java.util.List; import javax.validation.Valid; import lombok.Data; /** * @author mitao * @date 2024/6/12 */ @Data @ApiModel("会员等级数据传输对象对象") public class MgtMemberLevelDTO implements Serializable { @ApiModel("会员等级数据传输对象") public class MgtMemberLevelDTO { private static final long serialVersionUID = 841295965476674650L; @ApiModelProperty(value = "会员等级") @NotNull(message = "会员等级不能为空") private Integer level; @ApiModelProperty(value = "累计消费") @NotNull(message = "累计消费不能为空") private BigDecimal cumulativeConsumption; @ApiModelProperty("会员等级列表") @Valid List<MgtMemberLevelDetailDTO> memberLevelDTOList; } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/dto/MgtMemberLevelDetailDTO.java
New file @@ -0,0 +1,24 @@ package com.ruoyi.member.controller.management.dto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.io.Serializable; import java.math.BigDecimal; import javax.validation.constraints.NotNull; import lombok.Data; @Data @ApiModel("会员等级数据传输对象对象") public class MgtMemberLevelDetailDTO implements Serializable { private static final long serialVersionUID = 841295965476674650L; @ApiModelProperty(value = "会员等级") @NotNull(message = "会员等级不能为空") private Integer level; @ApiModelProperty(value = "累计消费") @NotNull(message = "累计消费不能为空") private BigDecimal cumulativeConsumption; } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/IMemberLevelService.java
@@ -26,7 +26,7 @@ /** * 保存会员等级配置 * * @param memberLevelDTOList 会员等级配置列表 * @param dto 会员等级配置列表 */ void saveOrUpdateMemberLevel(List<MgtMemberLevelDTO> memberLevelDTOList); void saveOrUpdateMemberLevel(MgtMemberLevelDTO dto); } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberLevelServiceImpl.java
@@ -11,7 +11,6 @@ import com.ruoyi.member.mapper.MemberLevelMapper; import com.ruoyi.member.mapper.MemberMapper; import com.ruoyi.member.service.IMemberLevelService; import com.ruoyi.member.service.IMemberService; import com.ruoyi.member.service.async.AsyncMethodService; import com.ruoyi.system.api.domain.Member; import java.util.List; @@ -66,12 +65,13 @@ /** * 保存会员等级配置 * * @param memberLevelDTOList 会员等级配置列表 * @param dto 会员等级配置列表 */ @Override @Transactional(propagation = Propagation.REQUIRES_NEW) public void saveOrUpdateMemberLevel(List<MgtMemberLevelDTO> memberLevelDTOList) { List<MemberLevel> memberLevels = BeanUtils.copyList(memberLevelDTOList, MemberLevel.class); public void saveOrUpdateMemberLevel(MgtMemberLevelDTO dto) { List<MemberLevel> memberLevels = BeanUtils.copyList(dto.getMemberLevelDTOList(), MemberLevel.class); this.saveOrUpdateBatch(memberLevels); asyncMethodService.handleMemberLevel(memberLevels); } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberPointsServiceImpl.java
@@ -64,6 +64,7 @@ .eq(StringUtils.isNotNull(query.getPointsStatus()), MemberPoints::getPointsStatus, query.getPointsStatus()) .in(StringUtils.isNotEmpty(memberIdSet), MemberPoints::getMemberId, memberIdSet) .orderByDesc(MemberPoints::getCreateTime) .page(new Page<>(query.getPageCurr(), query.getPageSize())); if (StringUtils.isEmpty(page.getRecords())) { return PageDTO.empty(page);