From 0d4f7cd29a978594453b102d4a767d64085df29d Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期三, 12 六月 2024 15:34:32 +0800
Subject: [PATCH] 提交【管理后台】-资讯管理相关代码

---
 ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/dto/MgtArticleDTO.java            |   36 +++
 ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/dto/MgtSensitiveWordsQuery.java   |   22 +
 ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/impl/ArticleServiceImpl.java                    |   72 +++++
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberController.java            |    2 
 ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/domain/Article.java                                     |   10 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/IMemberLevelService.java                          |    4 
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/enums/ArticleStatusEnum.java                     |    2 
 ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/IArticleCommentsService.java                    |   12 +
 ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/handler/MyMetaObjectHandler.java                        |    4 
 ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/vo/MgtSensitiveWordsVO.java       |   29 ++
 ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/MgtArticleCommentsController.java |   70 +++++
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/dto/MgtMemberLevelDTO.java          |   26 -
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberLevelController.java       |   11 
 ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/IArticleService.java                            |   29 ++
 ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/MgtSensitiveWordsController.java  |   22 +
 ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/dto/MgtArticleCommentsQuery.java  |   26 ++
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberLevelServiceImpl.java                  |    8 
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/enums/AuditStatusEnum.java                       |    3 
 ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/impl/ArticleCommentsServiceImpl.java            |   97 +++++++
 ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/ISensitiveWordsService.java                     |   13 
 /dev/null                                                                                                           |   58 ----
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/dto/MgtMemberLevelDetailDTO.java    |   24 ++
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberPointsServiceImpl.java                 |    1 
 ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/vo/MgtArticleVO.java              |    6 
 ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/domain/ArticleComments.java                             |    1 
 ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/impl/SensitiveWordsServiceImpl.java             |   24 +
 ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/MgtArticleController.java         |   43 +++
 ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/vo/MgtArticleCommentsVO.java      |   39 +++
 28 files changed, 577 insertions(+), 117 deletions(-)

diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/enums/ArticleStatusEnum.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/enums/ArticleStatusEnum.java
index 3d19109..1529363 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/enums/ArticleStatusEnum.java
+++ b/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, "已通过"),
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/enums/AuditStatusEnum.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/enums/AuditStatusEnum.java
index fd94d56..78d6e94 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/enums/AuditStatusEnum.java
+++ b/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
diff --git a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/MgtArticleCommentsController.java b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/MgtArticleCommentsController.java
new file mode 100644
index 0000000..31b6873
--- /dev/null
+++ b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/MgtArticleCommentsController.java
@@ -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();
+    }
+}
diff --git a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/MgtArticleController.java b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/MgtArticleController.java
index c5151a6..594b2f0 100644
--- a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/MgtArticleController.java
+++ b/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));
+    }
+
 
 }
diff --git a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/MgtSensitiveWordsController.java b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/MgtSensitiveWordsController.java
index 533e27a..91ee21d 100644
--- a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/MgtSensitiveWordsController.java
+++ b/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));
+    }
 
 }
diff --git a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/dto/MgtArticleCommentsQuery.java b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/dto/MgtArticleCommentsQuery.java
new file mode 100644
index 0000000..95eec94
--- /dev/null
+++ b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/dto/MgtArticleCommentsQuery.java
@@ -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;
+}
diff --git a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/dto/MgtArticleDTO.java b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/dto/MgtArticleDTO.java
new file mode 100644
index 0000000..9329007
--- /dev/null
+++ b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/dto/MgtArticleDTO.java
@@ -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;
+}
diff --git a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/dto/MgtSensitiveWordsQuery.java b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/dto/MgtSensitiveWordsQuery.java
new file mode 100644
index 0000000..a77f9a5
--- /dev/null
+++ b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/dto/MgtSensitiveWordsQuery.java
@@ -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;
+}
diff --git a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/vo/MgtArticleCommentsVO.java b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/vo/MgtArticleCommentsVO.java
new file mode 100644
index 0000000..48f2d99
--- /dev/null
+++ b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/vo/MgtArticleCommentsVO.java
@@ -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;
+}
diff --git a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/vo/MgtArticleVO.java b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/vo/MgtArticleVO.java
index e51c9c6..d4d1022 100644
--- a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/vo/MgtArticleVO.java
+++ b/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 = "举报用户")
@@ -72,5 +72,7 @@
 
     @ApiModelProperty(value = "上架状态 上架中 已下架")
     private ListingStatusEnum listingStatus;
-
+    
+    @ApiModelProperty(value = "是否被举报")
+    private Boolean reported;
 }
diff --git a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/vo/MgtSensitiveWordsVO.java b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/vo/MgtSensitiveWordsVO.java
new file mode 100644
index 0000000..e2c50f0
--- /dev/null
+++ b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/vo/MgtSensitiveWordsVO.java
@@ -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;
+
+}
diff --git a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/domain/Article.java b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/domain/Article.java
index 3322a36..06395ae 100644
--- a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/domain/Article.java
+++ b/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;
@@ -99,5 +99,7 @@
 
     @ApiModelProperty(value = "上架状态 上架中 已下架")
     private ListingStatusEnum listingStatus;
-    
+
+    @ApiModelProperty(value = "是否被举报")
+    private Boolean reported;
 }
diff --git a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/domain/ArticleComments.java b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/domain/ArticleComments.java
index 85e8ae6..67a21cb 100644
--- a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/domain/ArticleComments.java
+++ b/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;
 
diff --git a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/handler/MyMetaObjectHandler.java b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/handler/MyMetaObjectHandler.java
index c3b74c9..19b9177 100644
--- a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/handler/MyMetaObjectHandler.java
+++ b/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);
     }
 
diff --git a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/IArticleCommentsService.java b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/IArticleCommentsService.java
index 2a6fa4c..da40246 100644
--- a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/IArticleCommentsService.java
+++ b/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);
 }
diff --git a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/IArticleService.java b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/IArticleService.java
index 5926423..e493674 100644
--- a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/IArticleService.java
+++ b/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);
 }
diff --git a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/ISensitiveWordsService.java b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/ISensitiveWordsService.java
index c46c154..5ebac41 100644
--- a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/ISensitiveWordsService.java
+++ b/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);
 }
diff --git a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/impl/ArticleCommentsServiceImpl.java b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/impl/ArticleCommentsServiceImpl.java
index ba9e375..7d6996b 100644
--- a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/impl/ArticleCommentsServiceImpl.java
+++ b/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);
+    }
 }
diff --git a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/impl/ArticleServiceImpl.java b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/impl/ArticleServiceImpl.java
index 1552bc7..4e43392 100644
--- a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/impl/ArticleServiceImpl.java
+++ b/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);
+    }
 }
diff --git a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/impl/SensitiveWordsServiceImpl.java b/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/impl/SensitiveWordsServiceImpl.java
index b176bc9..1db9697 100644
--- a/ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/impl/SensitiveWordsServiceImpl.java
+++ b/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;
+    }
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberAddressController.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberAddressController.java
deleted file mode 100644
index bea778f..0000000
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberAddressController.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package com.ruoyi.member.controller.management;
-
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.ruoyi.common.core.domain.R;
-import com.ruoyi.common.security.annotation.InnerAuth;
-import com.ruoyi.member.service.IMemberAddressService;
-import com.ruoyi.system.api.domain.MemberAddress;
-import io.swagger.annotations.ApiModelProperty;
-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.ResponseBody;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 会员地址表 前端控制器
- * </p>
- *
- * @author mitao
- * @since 2024-05-16
- */
-@RestController
-@RequestMapping("/mgt/member-address")
-public class MgtMemberAddressController {
-
-    /**
-     * 获取当前商品信息
-     */
-
-    @ApiModelProperty
-    private IMemberAddressService iMemberAddressService;
-
-
-    @PostMapping("/getMemberAddressOne")
-    @ResponseBody
-    @InnerAuth
-    public R<MemberAddress> getMemberAddressOne(@RequestBody Integer userId) {
-        LambdaQueryWrapper<MemberAddress> wrapper2 = Wrappers.lambdaQuery();
-        wrapper2.eq(MemberAddress::getMemberId, userId);
-        wrapper2.eq(MemberAddress::getDelFlag, 0);
-        wrapper2.eq(MemberAddress::getIsDefault, 2);
-        MemberAddress memberAddress = iMemberAddressService.getOne(wrapper2);
-        if (memberAddress == null) {
-            LambdaQueryWrapper<MemberAddress> wrapper = Wrappers.lambdaQuery();
-            wrapper.eq(MemberAddress::getMemberId, userId);
-            wrapper.eq(MemberAddress::getDelFlag, 0);
-            wrapper.last("limit 1");
-            memberAddress = iMemberAddressService.getOne(wrapper2);
-        }
-        return R.ok(memberAddress);
-
-    }
-
-
-}
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberController.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberController.java
index c58bd1d..5532c84 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberController.java
+++ b/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;
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberLevelController.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberLevelController.java
index adbcac7..8ac109d 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberLevelController.java
+++ b/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();
     }
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/dto/MgtMemberLevelDTO.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/dto/MgtMemberLevelDTO.java
index beef6db..3f13a83 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/dto/MgtMemberLevelDTO.java
+++ b/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;
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/dto/MgtMemberLevelDetailDTO.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/dto/MgtMemberLevelDetailDTO.java
new file mode 100644
index 0000000..363e155
--- /dev/null
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/dto/MgtMemberLevelDetailDTO.java
@@ -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;
+
+}
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/IMemberLevelService.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/IMemberLevelService.java
index 900f23e..6a93b72 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/IMemberLevelService.java
+++ b/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);
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberLevelServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberLevelServiceImpl.java
index 352b823..b0f1e51 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberLevelServiceImpl.java
+++ b/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);
     }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberPointsServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberPointsServiceImpl.java
index 05e3d6d..c3d2409 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberPointsServiceImpl.java
+++ b/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);

--
Gitblit v1.7.1