From 5277db0d5c78d2a8e9b7e3080eaa644306a6f9ed Mon Sep 17 00:00:00 2001
From: 13405411873 <1994398261@qq.com>
Date: Fri, 28 Mar 2025 18:59:14 +0800
Subject: [PATCH 1/4] =?UTF-8?q?=E9=80=9A=E5=91=8A=E3=80=81=E6=84=8F?=
 =?UTF-8?q?=E8=A7=81=E5=8F=8D=E9=A6=88=E3=80=81=E4=B8=BE=E6=8A=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../controller/BusiFeedbackController.java    | 26 +++++++--
 .../busi/controller/BusiNoticeController.java |  4 +-
 .../busi/controller/BusiReportController.java | 25 ++++++--
 .../com/ruoyi/busi/domain/BusiNotice.java     |  2 +-
 .../com/ruoyi/busi/domain/BusiReport.java     |  6 +-
 .../ruoyi/busi/mapper/BusiFeedbackMapper.java |  6 +-
 .../ruoyi/busi/mapper/BusiReportMapper.java   |  6 +-
 .../ruoyi/busi/query/BusiFeedbackQuery.java   | 11 ++++
 .../com/ruoyi/busi/query/BusiReportQuery.java | 17 ++++++
 .../busi/service/IBusiFeedbackService.java    |  8 ++-
 .../busi/service/IBusiReportService.java      |  7 ++-
 .../service/impl/BusiFeedbackServiceImpl.java | 19 ++++++-
 .../service/impl/BusiNoticeServiceImpl.java   | 23 +++++++-
 .../service/impl/BusiReportServiceImpl.java   | 19 ++++++-
 .../com/ruoyi/busi/utils/NoticeUtils.java     |  6 ++
 .../com/ruoyi/busi/vo/BusiFeedbackVo.java     | 12 ++++
 .../java/com/ruoyi/busi/vo/BusiNoticeVo.java  |  4 ++
 .../java/com/ruoyi/busi/vo/BusiReportVo.java  | 23 ++++++++
 .../mapper/busi/BusiFeedbackMapper.xml        | 44 ++++++--------
 .../mapper/busi/BusiNoticeMapper.xml          |  9 ++-
 .../mapper/busi/BusiReportMapper.xml          | 57 ++++++++-----------
 21 files changed, 237 insertions(+), 97 deletions(-)
 create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/busi/query/BusiFeedbackQuery.java
 create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/busi/query/BusiReportQuery.java
 create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/busi/vo/BusiFeedbackVo.java
 create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/busi/vo/BusiReportVo.java

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/controller/BusiFeedbackController.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/controller/BusiFeedbackController.java
index b06023d..98e7028 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/busi/controller/BusiFeedbackController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/controller/BusiFeedbackController.java
@@ -6,6 +6,9 @@ import java.util.List;
 import javax.servlet.http.HttpServletResponse;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.busi.domain.BusiReport;
+import com.ruoyi.busi.query.BusiFeedbackQuery;
+import com.ruoyi.busi.vo.BusiFeedbackVo;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -28,7 +31,7 @@ import com.ruoyi.common.core.page.TableDataInfo;
 
 /**
  * 意见反馈Controller
- * 
+ *
  * @author 朱春云
  * @date 2025-03-17
  */
@@ -44,12 +47,12 @@ public class BusiFeedbackController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('busi:feedback:list')")
     @GetMapping("/list")
-    public AjaxResult list(BusiFeedback busiFeedback,
-                                @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
-                                @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize)
+    public AjaxResult list(BusiFeedbackQuery busiFeedback,
+                           @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
+                           @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize)
     {
-        Page<BusiFeedback> page = new Page<>(pageNum, pageSize);
-        IPage<BusiFeedback> list = busiFeedbackService.queryListPage(busiFeedback,page);
+        Page<BusiFeedbackVo> page = new Page<>(pageNum, pageSize);
+        IPage<BusiFeedbackVo> list = busiFeedbackService.queryListPage(busiFeedback,page);
         return success(list);
     }
 
@@ -109,4 +112,15 @@ public class BusiFeedbackController extends BaseController
         List<String> list = new ArrayList<>(Arrays.asList(ids));
         return toAjax(busiFeedbackService.removeByIds(list));
     }
+
+    /**
+     * 处理反馈记录
+     */
+    @PreAuthorize("@ss.hasPermi('busi:feedback:edit')")
+    @PostMapping("/dealFeedback")
+    public AjaxResult dealFeedback(@RequestBody BusiFeedback busiFeedback)
+    {
+        busiFeedbackService.dealFeedback(busiFeedback);
+        return success();
+    }
 }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/controller/BusiNoticeController.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/controller/BusiNoticeController.java
index 22b4006..85705dd 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/busi/controller/BusiNoticeController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/controller/BusiNoticeController.java
@@ -144,8 +144,8 @@ public class BusiNoticeController extends BaseController
      * @author vinjor-M
      * @date 15:39 2025/3/25
      * @param query 查询条件
- * @param pageNum TODO
- * @param pageSize TODO
+     * @param pageNum TODO
+     * @param pageSize TODO
      * @return com.ruoyi.common.core.domain.AjaxResult
     **/
     @GetMapping("/appList")
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/controller/BusiReportController.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/controller/BusiReportController.java
index 142c34a..589e14b 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/busi/controller/BusiReportController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/controller/BusiReportController.java
@@ -6,6 +6,8 @@ import java.util.List;
 import javax.servlet.http.HttpServletResponse;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.busi.query.BusiReportQuery;
+import com.ruoyi.busi.vo.BusiReportVo;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -28,7 +30,7 @@ import com.ruoyi.common.core.page.TableDataInfo;
 
 /**
  * 举报记录Controller
- * 
+ *
  * @author 朱春云
  * @date 2025-03-17
  */
@@ -44,12 +46,12 @@ public class BusiReportController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('busi:report:list')")
     @GetMapping("/list")
-    public AjaxResult list(BusiReport busiReport,
-                                @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
-                                @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize)
+    public AjaxResult list(BusiReportQuery busiReport,
+                           @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
+                           @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize)
     {
-        Page<BusiReport> page = new Page<>(pageNum, pageSize);
-        IPage<BusiReport> list = busiReportService.queryListPage(busiReport,page);
+        Page<BusiReportVo> page = new Page<>(pageNum, pageSize);
+        IPage<BusiReportVo> list = busiReportService.queryListPage(busiReport,page);
         return success(list);
     }
 
@@ -87,6 +89,17 @@ public class BusiReportController extends BaseController
         return toAjax(busiReportService.save(busiReport));
     }
 
+    /**
+     * 处理举报记录
+     */
+    @PreAuthorize("@ss.hasPermi('busi:report:edit')")
+    @PostMapping("/dealReport")
+    public AjaxResult dealReport(@RequestBody BusiReport busiReport)
+    {
+        busiReportService.dealReport(busiReport);
+        return success();
+    }
+
     /**
      * 修改举报记录
      */
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiNotice.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiNotice.java
index 3ba6663..dbdf5ef 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiNotice.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiNotice.java
@@ -147,7 +147,7 @@ public class BusiNotice extends DlBaseEntity
     private Long approvalUserId;
 
     /** 审核时间 */
-    @JsonFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
     @Excel(name = "审核时间", width = 30, dateFormat = "yyyy-MM-dd")
     private Date approvalTime;
 
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiReport.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiReport.java
index 650d170..d92d97b 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiReport.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiReport.java
@@ -11,7 +11,7 @@ import com.ruoyi.common.core.domain.DlBaseEntity;
 
 /**
  * 举报记录对象 dl_busi_report
- * 
+ *
  * @author 朱春云
  * @date 2025-03-17
  */
@@ -51,10 +51,6 @@ public class BusiReport extends DlBaseEntity
     /** 举报类型code(树形字典:dl_report_type) */
     private String reportType;
 
-    /** 举报类型文本 */
-    @Excel(name = "举报类型文本")
-    private String reportTitle;
-
     /** 举报描述 */
     private String content;
 
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/mapper/BusiFeedbackMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/mapper/BusiFeedbackMapper.java
index 1715d20..f19d1e7 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/busi/mapper/BusiFeedbackMapper.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/mapper/BusiFeedbackMapper.java
@@ -4,18 +4,20 @@ import java.util.List;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.busi.domain.BusiFeedback;
+import com.ruoyi.busi.query.BusiFeedbackQuery;
+import com.ruoyi.busi.vo.BusiFeedbackVo;
 import org.apache.ibatis.annotations.Param;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
 
 /**
  * 意见反馈Mapper接口
- * 
+ *
  * @author 朱春云
  * @date 2025-03-17
  */
 @Mapper
 public interface BusiFeedbackMapper extends BaseMapper<BusiFeedback>
 {
-    IPage<BusiFeedback> queryListPage(@Param("entity") BusiFeedback entity, Page<BusiFeedback> page);
+    IPage<BusiFeedbackVo> queryListPage(@Param("entity") BusiFeedbackQuery entity, Page<BusiFeedbackVo> page);
 }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/mapper/BusiReportMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/mapper/BusiReportMapper.java
index 6cf966c..61c137f 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/busi/mapper/BusiReportMapper.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/mapper/BusiReportMapper.java
@@ -4,18 +4,20 @@ import java.util.List;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.busi.domain.BusiReport;
+import com.ruoyi.busi.query.BusiReportQuery;
+import com.ruoyi.busi.vo.BusiReportVo;
 import org.apache.ibatis.annotations.Param;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
 
 /**
  * 举报记录Mapper接口
- * 
+ *
  * @author 朱春云
  * @date 2025-03-17
  */
 @Mapper
 public interface BusiReportMapper extends BaseMapper<BusiReport>
 {
-    IPage<BusiReport> queryListPage(@Param("entity") BusiReport entity, Page<BusiReport> page);
+    IPage<BusiReportVo> queryListPage(@Param("entity") BusiReportQuery entity, Page<BusiReportVo> page);
 }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/query/BusiFeedbackQuery.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/query/BusiFeedbackQuery.java
new file mode 100644
index 0000000..252323b
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/query/BusiFeedbackQuery.java
@@ -0,0 +1,11 @@
+package com.ruoyi.busi.query;
+
+import lombok.Data;
+
+@Data
+public class BusiFeedbackQuery {
+    //用户姓名
+    private String userNickName;
+    //反馈人姓名
+    private String backUserNickName;
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/query/BusiReportQuery.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/query/BusiReportQuery.java
new file mode 100644
index 0000000..28007ce
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/query/BusiReportQuery.java
@@ -0,0 +1,17 @@
+package com.ruoyi.busi.query;
+
+import lombok.Data;
+
+@Data
+public class BusiReportQuery {
+    //举报人姓名
+    private String userNickName;
+    //被举报人姓名
+    private String reportUserNickName;
+    //被举报通告标题
+    private String reportNoticeTitle;
+    //举报类型文本
+    private String reportTitle;
+    //处理人姓名
+    private String dealUserName;
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiFeedbackService.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiFeedbackService.java
index 2d1792a..daf78a6 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiFeedbackService.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiFeedbackService.java
@@ -5,14 +5,18 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.busi.domain.BusiFeedback;
+import com.ruoyi.busi.query.BusiFeedbackQuery;
+import com.ruoyi.busi.vo.BusiFeedbackVo;
 
 /**
  * 意见反馈Service接口
- * 
+ *
  * @author 朱春云
  * @date 2025-03-17
  */
 public interface IBusiFeedbackService extends IService<BusiFeedback>
 {
-    IPage<BusiFeedback> queryListPage(BusiFeedback pageReqVO, Page<BusiFeedback> page);
+    IPage<BusiFeedbackVo> queryListPage(BusiFeedbackQuery pageReqVO, Page<BusiFeedbackVo> page);
+
+    void dealFeedback(BusiFeedback busiFeedback);
 }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiReportService.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiReportService.java
index 22029b4..2b4efd4 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiReportService.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiReportService.java
@@ -5,14 +5,17 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.busi.domain.BusiReport;
+import com.ruoyi.busi.query.BusiReportQuery;
+import com.ruoyi.busi.vo.BusiReportVo;
 
 /**
  * 举报记录Service接口
- * 
+ *
  * @author 朱春云
  * @date 2025-03-17
  */
 public interface IBusiReportService extends IService<BusiReport>
 {
-    IPage<BusiReport> queryListPage(BusiReport pageReqVO, Page<BusiReport> page);
+    IPage<BusiReportVo> queryListPage(BusiReportQuery pageReqVO, Page<BusiReportVo> page);
+    void dealReport(BusiReport busiReport);
 }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiFeedbackServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiFeedbackServiceImpl.java
index ffb4d0a..6df05f7 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiFeedbackServiceImpl.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiFeedbackServiceImpl.java
@@ -1,9 +1,13 @@
 package com.ruoyi.busi.service.impl;
 
 import java.util.List;
+
+import com.ruoyi.busi.query.BusiFeedbackQuery;
+import com.ruoyi.busi.vo.BusiFeedbackVo;
 import com.ruoyi.common.utils.DateUtils;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.utils.SecurityUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -13,7 +17,7 @@ import com.ruoyi.busi.service.IBusiFeedbackService;
 
 /**
  * 意见反馈Service业务层处理
- * 
+ *
  * @author 朱春云
  * @date 2025-03-17
  */
@@ -24,7 +28,18 @@ public class BusiFeedbackServiceImpl extends ServiceImpl<BusiFeedbackMapper,Busi
     private BusiFeedbackMapper busiFeedbackMapper;
 
     @Override
-    public IPage<BusiFeedback> queryListPage(BusiFeedback pageReqVO, Page<BusiFeedback> page) {
+    public IPage<BusiFeedbackVo> queryListPage(BusiFeedbackQuery pageReqVO, Page<BusiFeedbackVo> page) {
         return busiFeedbackMapper.queryListPage(pageReqVO, page);
     }
+
+    /**
+     * 处理反馈
+     * @param busiFeedback
+     */
+    @Override
+    public void dealFeedback(BusiFeedback busiFeedback) {
+        busiFeedback.setBackTime(DateUtils.getNowDate());
+        busiFeedback.setBackUserId(SecurityUtils.getUserId());
+        busiFeedbackMapper.updateById(busiFeedback);
+    }
 }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiNoticeServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiNoticeServiceImpl.java
index 265d5da..f2cedd3 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiNoticeServiceImpl.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiNoticeServiceImpl.java
@@ -70,6 +70,8 @@ public class BusiNoticeServiceImpl extends ServiceImpl<BusiNoticeMapper,BusiNoti
             List<BusiNotice> list = this.list(queryWrapper);
             //无问题数据直接审核通过
             data.setApprovalStatus("1");
+            data.setApprovalUserId(null);
+            data.setApprovalTime(new Date());
             //遍历 list的每条数据与data对比,如果两条数据相似度大于70% 提出预警
             for (BusiNotice busiNotice : list) {
                 double v1 = NoticeUtils.computeJaccardSimilarity(data.getTitle(), busiNotice.getTitle());
@@ -151,15 +153,30 @@ public class BusiNoticeServiceImpl extends ServiceImpl<BusiNoticeMapper,BusiNoti
             }
 
         }else {
-            //如果是下架 回归草稿状态
-            data.setApprovalStatus("8");
+            //如果是关闭 关闭状态
+            data.setApprovalStatus("2");
         }
         this.updateById(data);
     }
 
+    /**
+     * 审核接口
+     * @param query 审核参数
+     */
+
     @Override
     public void auditInfo(BusiNoticeQuery query) {
-
+        BusiNotice busiNotice = this.getById(query.getId());
+        //1代表审核通过
+        if (query.getApprovalStatus().equals("1")){
+            busiNotice.setApprovalStatus("1");
+        }else {
+            busiNotice.setApprovalStatus("9");
+        }
+        busiNotice.setApprovalUserId(SecurityUtils.getUserId());
+        busiNotice.setApprovalTime(new Date());
+        busiNotice.setApprovalRemark(query.getApprovalRemark());
+        this.updateById(busiNotice);
     }
 
     /**
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiReportServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiReportServiceImpl.java
index 9d7c2c6..3676d41 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiReportServiceImpl.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiReportServiceImpl.java
@@ -1,9 +1,13 @@
 package com.ruoyi.busi.service.impl;
 
 import java.util.List;
+
+import com.ruoyi.busi.query.BusiReportQuery;
+import com.ruoyi.busi.vo.BusiReportVo;
 import com.ruoyi.common.utils.DateUtils;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.utils.SecurityUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -13,7 +17,7 @@ import com.ruoyi.busi.service.IBusiReportService;
 
 /**
  * 举报记录Service业务层处理
- * 
+ *
  * @author 朱春云
  * @date 2025-03-17
  */
@@ -24,7 +28,18 @@ public class BusiReportServiceImpl extends ServiceImpl<BusiReportMapper,BusiRepo
     private BusiReportMapper busiReportMapper;
 
     @Override
-    public IPage<BusiReport> queryListPage(BusiReport pageReqVO, Page<BusiReport> page) {
+    public IPage<BusiReportVo> queryListPage(BusiReportQuery pageReqVO, Page<BusiReportVo> page) {
         return busiReportMapper.queryListPage(pageReqVO, page);
     }
+
+    /**
+     * 处理举报
+     * @param busiReport 请求参数
+     */
+    @Override
+    public void dealReport(BusiReport busiReport) {
+        busiReport.setDealTime(DateUtils.getNowDate());
+        busiReport.setDealUserId(SecurityUtils.getUserId());
+        busiReportMapper.updateById(busiReport);
+    }
 }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/utils/NoticeUtils.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/utils/NoticeUtils.java
index fc62258..fc260b5 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/busi/utils/NoticeUtils.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/utils/NoticeUtils.java
@@ -12,6 +12,12 @@ import java.util.stream.Collectors;
 @Component
 public class NoticeUtils {
 
+    /**
+     * 比较两个文本字符串的相似度
+     * @param str1 文本1
+     * @param str2 文本2
+     * @return 相似度值,范围在0到1之间,值越大相似度越高
+     */
     public static double computeJaccardSimilarity(String str1, String str2) {
         Set<String> set1 = Arrays.stream(str1.split("\\s+")) // 分词,这里按空格分割,可以根据需要调整正则表达式
                 .collect(Collectors.toSet());
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/vo/BusiFeedbackVo.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/vo/BusiFeedbackVo.java
new file mode 100644
index 0000000..f5944b2
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/vo/BusiFeedbackVo.java
@@ -0,0 +1,12 @@
+package com.ruoyi.busi.vo;
+
+import com.ruoyi.busi.domain.BusiFeedback;
+import lombok.Data;
+
+@Data
+public class BusiFeedbackVo  extends BusiFeedback {
+    //用户姓名
+    private String userNickName;
+    //反馈人姓名
+    private String backUserNickName;
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/vo/BusiNoticeVo.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/vo/BusiNoticeVo.java
index 067a0b9..82e127b 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/busi/vo/BusiNoticeVo.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/vo/BusiNoticeVo.java
@@ -25,4 +25,8 @@ public class BusiNoticeVo extends BusiNotice {
     private Integer reportNum;
     /**博主类型-text*/
     private String bloggerTypesText;
+    /**
+     * 审核人姓名
+     */
+    private String approvalUserName;
 }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/vo/BusiReportVo.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/vo/BusiReportVo.java
new file mode 100644
index 0000000..8a56f4e
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/vo/BusiReportVo.java
@@ -0,0 +1,23 @@
+package com.ruoyi.busi.vo;
+
+import com.ruoyi.busi.domain.BusiReport;
+import lombok.Data;
+
+
+/**
+ * 举报记录视图对象
+ */
+@Data
+public class BusiReportVo extends BusiReport {
+    //举报人姓名
+    private String userNickName;
+    //被举报人姓名
+    private String reportUserNickName;
+    //被举报通告标题
+    private String reportNoticeTitle;
+    //举报类型文本
+    private String reportTitle;
+    //处理人姓名
+    private String dealUserName;
+
+}
diff --git a/ruoyi-admin/src/main/resources/mapper/busi/BusiFeedbackMapper.xml b/ruoyi-admin/src/main/resources/mapper/busi/BusiFeedbackMapper.xml
index 882fb12..839ddd8 100644
--- a/ruoyi-admin/src/main/resources/mapper/busi/BusiFeedbackMapper.xml
+++ b/ruoyi-admin/src/main/resources/mapper/busi/BusiFeedbackMapper.xml
@@ -3,35 +3,25 @@
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ruoyi.busi.mapper.BusiFeedbackMapper">
-    
-    <resultMap type="BusiFeedback" id="BusiFeedbackResult">
-        <result property="id"    column="id"    />
-        <result property="userId"    column="user_id"    />
-        <result property="userType"    column="user_type"    />
-        <result property="content"    column="content"    />
-        <result property="images"    column="images"    />
-        <result property="backContent"    column="back_content"    />
-        <result property="backImages"    column="back_images"    />
-        <result property="backTime"    column="back_time"    />
-        <result property="backUserId"    column="back_user_id"    />
-        <result property="creator"    column="creator"    />
-        <result property="createTime"    column="create_time"    />
-        <result property="updater"    column="updater"    />
-        <result property="updateTime"    column="update_time"    />
-        <result property="delFlag"    column="del_flag"    />
-    </resultMap>
 
-    <sql id="selectBusiFeedbackVo">
-        select id, user_id, user_type, content, images, back_content, back_images, back_time, back_user_id, creator, create_time, updater, update_time, del_flag from dl_busi_feedback
-    </sql>
 
-    <select id="queryListPage" parameterType="BusiFeedback" resultMap="BusiFeedbackResult">
-        <include refid="selectBusiFeedbackVo"/>
+    <select id="queryListPage" resultType="com.ruoyi.busi.vo.BusiFeedbackVo">
+        select main.id, main.user_id, main.user_type, main.content, main.images, main.back_content,
+               main.back_images, main.back_time, main.back_user_id, main.creator, main.create_time, main.updater, main.update_time, main.del_flag
+        , su1.nick_name as userNickName, su2.nick_name as backUserNickName
+        from dl_busi_feedback main
+        inner join sys_user su1 on main.user_id = su1.user_id and su1.del_flag = '0'
+        left join sys_user su2 on main.back_user_id = su2.user_id
         <where>
-                        <if test="entity.userId != null "> and user_id like concat('%', #{entity.userId}, '%')</if>
-                        <if test="entity.userType != null  and entity.userType != ''"> and user_type = #{entity.userType}</if>
-                        <if test="entity.backUserId != null "> and back_user_id = #{entity.backUserId}</if>
-                        <if test="entity.createTime != null "> and create_time = #{entity.createTime}</if>
+                main.del_flag = '0'
+            <if test="entity.userNickName != null and entity.userNickName != '' ">
+                and su1.nick_name like concat('%', #{entity.userNickName}, '%')
+            </if>
+            <if test="entity.backUserNickName != null  and entity.backUserNickName != ''">
+                and su2.nick_name like concat('%', #{entity.backUserNickName}, '%')
+            </if>
         </where>
+        order by main.create_time asc
     </select>
-</mapper>
\ No newline at end of file
+
+</mapper>
diff --git a/ruoyi-admin/src/main/resources/mapper/busi/BusiNoticeMapper.xml b/ruoyi-admin/src/main/resources/mapper/busi/BusiNoticeMapper.xml
index 074e677..0df8c9f 100644
--- a/ruoyi-admin/src/main/resources/mapper/busi/BusiNoticeMapper.xml
+++ b/ruoyi-admin/src/main/resources/mapper/busi/BusiNoticeMapper.xml
@@ -5,18 +5,20 @@
 <mapper namespace="com.ruoyi.busi.mapper.BusiNoticeMapper">
 
 
-    <select id="queryListPage" parameterType="BusiNotice" resultType="com.ruoyi.busi.vo.BusiNoticeVo">
+    <select id="queryListPage"  resultType="com.ruoyi.busi.vo.BusiNoticeVo">
         select main.id, main.user_id, main.title, main.platform_code, main.province, main.city, main.fee_down, main.fee_up, main.is_self_price, main.gift_detail,
         main.gift_price, main.end_date, main.brand, main.is_show_brand, main.need_num, main.fans_down, main.fans_up, main.is_eligible, main.pic, main.collect, main.detail, main.images,
         main.blogger_types, main.is_show_tel, main.wechat, main.tel, main.group_image, main.is_use_coupon, main.approval_status, main.approval_user_id, main.approval_time,
         main.approval_remark, main.creator, main.create_time, main.updater, main.update_time, main.del_flag,
-        uTable.nick_name as userNickName,
+        uTable.nick_name as userNickName,auditTable.nick_name as approvalUserName,ifnull(noticeView.view_num,0) as viewNum,
         bTable.title as platformName
         from dl_busi_notice main
         left join sys_user uTable on main.user_id = uTable.user_id
+        left join sys_user auditTable on main.approval_user_id = auditTable.user_id
         left join dl_base_category bTable on main.platform_code = bTable.code
+        left join dl_busi_notice_view noticeView on noticeView.id = main.id
         <where>
-            main.del_flag = '0'
+            main.del_flag = '0' and main.approval_status != 8
             <if test="entity.userNickName != null "> and uTable.nick_name like concat('%', #{entity.userNickName}, '%')</if>
             <if test="entity.province != null "> and main.province =  #{entity.province}</if>
             <if test="entity.city != null "> and main.city =  #{entity.city}</if>
@@ -44,6 +46,7 @@
             <if test="entity.approvalStatus != null  and entity.approvalStatus != ''"> and main.approval_status = #{entity.approvalStatus}</if>
             <if test="entity.params.beginCreateTime != null and entity.params.beginCreateTime != '' and entity.params.endCreateTime != null and entity.params.endCreateTime != ''"> and main.create_time between #{entity.params.beginCreateTime} and #{entity.params.endCreateTime}</if>
         </where>
+        order by FIELD(main.approval_status,0,1,9,2)  asc, main.create_time desc
     </select>
     <select id="queryListByUserId" resultType="com.ruoyi.busi.vo.BusiNoticeVo">
         SELECT
diff --git a/ruoyi-admin/src/main/resources/mapper/busi/BusiReportMapper.xml b/ruoyi-admin/src/main/resources/mapper/busi/BusiReportMapper.xml
index 0370065..b2d929a 100644
--- a/ruoyi-admin/src/main/resources/mapper/busi/BusiReportMapper.xml
+++ b/ruoyi-admin/src/main/resources/mapper/busi/BusiReportMapper.xml
@@ -3,40 +3,33 @@
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ruoyi.busi.mapper.BusiReportMapper">
-    
-    <resultMap type="BusiReport" id="BusiReportResult">
-        <result property="id"    column="id"    />
-        <result property="userId"    column="user_id"    />
-        <result property="userType"    column="user_type"    />
-        <result property="reportUserId"    column="report_user_id"    />
-        <result property="reportUserType"    column="report_user_type"    />
-        <result property="reportNoticeId"    column="report_notice_id"    />
-        <result property="reportType"    column="report_type"    />
-        <result property="reportTitle"    column="report_title"    />
-        <result property="content"    column="content"    />
-        <result property="images"    column="images"    />
-        <result property="dealUserId"    column="deal_user_id"    />
-        <result property="dealResult"    column="deal_result"    />
-        <result property="dealTime"    column="deal_time"    />
-        <result property="creator"    column="creator"    />
-        <result property="createTime"    column="create_time"    />
-        <result property="updater"    column="updater"    />
-        <result property="updateTime"    column="update_time"    />
-        <result property="delFlag"    column="del_flag"    />
-    </resultMap>
 
-    <sql id="selectBusiReportVo">
-        select id, user_id, user_type, report_user_id, report_user_type, report_notice_id, report_type, report_title, content, images, deal_user_id, deal_result, deal_time, creator, create_time, updater, update_time, del_flag from dl_busi_report
-    </sql>
 
-    <select id="queryListPage" parameterType="BusiReport" resultMap="BusiReportResult">
-        <include refid="selectBusiReportVo"/>
+
+    <select id="queryListPage"  resultType="com.ruoyi.busi.vo.BusiReportVo">
+        select main.id, main.user_id, main.user_type, main.report_user_id, main.report_user_type,
+               main.report_notice_id, main.report_type, main.content, main.images,
+               main.deal_user_id, main.deal_result, main.deal_time, main.creator, main.create_time,
+               su1.nick_name as userNickName,su2.nick_name as reportUserNickName,su3.nick_name as  dealUserName,
+               notice.title as reportNoticeTitle, bTable.title as reportTitle
+        from dl_busi_report main
+        inner join sys_user su1 on main.user_id = su1.user_id and su1.del_flag = '0'
+        inner join sys_user su2 on main.report_user_id = su2.user_id and su2.del_flag = '0'
+        left join sys_user su3 on main.deal_user_id = su3.user_id
+        left join dl_busi_notice notice on main.report_notice_id = notice.id
+        left join dl_base_category bTable on main.report_type = bTable.code
         <where>
-                        <if test="entity.userId != null "> and user_id like concat('%', #{entity.userId}, '%')</if>
-                        <if test="entity.reportUserId != null "> and report_user_id like concat('%', #{entity.reportUserId}, '%')</if>
-                        <if test="entity.reportNoticeId != null  and entity.reportNoticeId != ''"> and report_notice_id like concat('%', #{entity.reportNoticeId}, '%')</if>
-                        <if test="entity.reportTitle != null  and entity.reportTitle != ''"> and report_title = #{entity.reportTitle}</if>
-                        <if test="entity.dealUserId != null "> and deal_user_id = #{entity.dealUserId}</if>
+                main.del_flag = '0'
+            <if test="entity.reportUserNickName != null and entity.reportUserNickName != '' ">
+                 and su2.nick_name like concat('%', #{entity.reportUserNickName}, '%')
+            </if>
+            <if test="entity.reportNoticeTitle != null and entity.reportNoticeTitle != '' ">
+                 and notice.title like concat('%', #{entity.reportNoticeTitle}, '%')
+             </if>
+            <if test="entity.dealUserName != null  and entity.dealUserName != ''">
+                 and su3.nick_name like concat('%', #{entity.dealUserName}, '%')
+            </if>
         </where>
+        order by main.create_time asc
     </select>
-</mapper>
\ No newline at end of file
+</mapper>

From abb04343603a2f6ff3090061be91a898abe90c79 Mon Sep 17 00:00:00 2001
From: 13405411873 <1994398261@qq.com>
Date: Sat, 29 Mar 2025 11:10:32 +0800
Subject: [PATCH 2/4] =?UTF-8?q?=E9=80=9A=E5=91=8A=E8=AF=A6=E6=83=85?=
 =?UTF-8?q?=E6=8E=A5=E5=8F=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../busi/controller/BusiNoticeController.java |  17 +++
 .../controller/BusiUserLoveController.java    | 112 ++++++++++++++++++
 .../com/ruoyi/busi/domain/BusiUserLove.java   |  39 ++++++
 .../ruoyi/busi/mapper/BusiNoticeMapper.java   |  12 +-
 .../ruoyi/busi/mapper/BusiUserLoveMapper.java |  21 ++++
 .../busi/service/IBusiNoticeService.java      |  16 ++-
 .../busi/service/IBusiUserLoveService.java    |  18 +++
 .../service/impl/BusiNoticeServiceImpl.java   |  74 ++++++++++++
 .../service/impl/BusiUserLoveServiceImpl.java |  30 +++++
 .../mapper/busi/BusiNoticeMapper.xml          |  14 +++
 .../mapper/busi/BusiUserLoveMapper.xml        |  26 ++++
 11 files changed, 374 insertions(+), 5 deletions(-)
 create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/busi/controller/BusiUserLoveController.java
 create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiUserLove.java
 create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/busi/mapper/BusiUserLoveMapper.java
 create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiUserLoveService.java
 create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiUserLoveServiceImpl.java
 create mode 100644 ruoyi-admin/src/main/resources/mapper/busi/BusiUserLoveMapper.xml

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/controller/BusiNoticeController.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/controller/BusiNoticeController.java
index 85705dd..f68588a 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/busi/controller/BusiNoticeController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/controller/BusiNoticeController.java
@@ -4,6 +4,8 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import javax.servlet.http.HttpServletResponse;
+
+import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.busi.query.AppNoticeQuery;
@@ -159,4 +161,19 @@ public class BusiNoticeController extends BaseController
         return success(list);
     }
 
+    /**
+     * 小程序端查询通告详细信息
+     * @author 朱春云
+     * @date 15:39 2025/3/29
+     * @param noticeId 通告id
+     * @return com.ruoyi.common.core.domain.AjaxResult
+     **/
+    @GetMapping("/appGetDetail")
+    @Anonymous
+    public AjaxResult appGetDetail(@RequestParam(name = "noticeId") String noticeId)
+    {
+        JSONObject detail = busiNoticeService.appGetDetail(noticeId);
+        return success(detail);
+    }
+
 }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/controller/BusiUserLoveController.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/controller/BusiUserLoveController.java
new file mode 100644
index 0000000..c634068
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/controller/BusiUserLoveController.java
@@ -0,0 +1,112 @@
+package com.ruoyi.busi.controller;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.busi.domain.BusiUserLove;
+import com.ruoyi.busi.service.IBusiUserLoveService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 用户关注Controller
+ * 
+ * @author 朱春云
+ * @date 2025-03-29
+ */
+@RestController
+@RequestMapping("/busi/love")
+public class BusiUserLoveController extends BaseController
+{
+    @Autowired
+    private IBusiUserLoveService busiUserLoveService;
+
+    /**
+     * 查询用户关注列表
+     */
+    @PreAuthorize("@ss.hasPermi('busi:love:list')")
+    @GetMapping("/list")
+    public AjaxResult list(BusiUserLove busiUserLove,
+                                @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
+                                @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize)
+    {
+        Page<BusiUserLove> page = new Page<>(pageNum, pageSize);
+        IPage<BusiUserLove> list = busiUserLoveService.queryListPage(busiUserLove,page);
+        return success(list);
+    }
+
+    /**
+     * 导出用户关注列表
+     */
+    @PreAuthorize("@ss.hasPermi('busi:love:export')")
+    @Log(title = "用户关注", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, BusiUserLove busiUserLove)
+    {
+        List<BusiUserLove> list = busiUserLoveService.list();
+        ExcelUtil<BusiUserLove> util = new ExcelUtil<BusiUserLove>(BusiUserLove.class);
+        util.exportExcel(response, list, "用户关注数据");
+    }
+
+    /**
+     * 获取用户关注详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('busi:love:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") String id)
+    {
+        return success(busiUserLoveService.getById(id));
+    }
+
+    /**
+     * 新增用户关注
+     */
+    @PreAuthorize("@ss.hasPermi('busi:love:add')")
+    @Log(title = "用户关注", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody BusiUserLove busiUserLove)
+    {
+        return toAjax(busiUserLoveService.save(busiUserLove));
+    }
+
+    /**
+     * 修改用户关注
+     */
+    @PreAuthorize("@ss.hasPermi('busi:love:edit')")
+    @Log(title = "用户关注", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody BusiUserLove busiUserLove)
+    {
+        return toAjax(busiUserLoveService.updateById(busiUserLove));
+    }
+
+    /**
+     * 删除用户关注
+     */
+    @PreAuthorize("@ss.hasPermi('busi:love:remove')")
+    @Log(title = "用户关注", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable String[] ids)
+    {
+        List<String> list = new ArrayList<>(Arrays.asList(ids));
+        return toAjax(busiUserLoveService.removeByIds(list));
+    }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiUserLove.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiUserLove.java
new file mode 100644
index 0000000..388832a
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiUserLove.java
@@ -0,0 +1,39 @@
+package com.ruoyi.busi.domain;
+
+import com.ruoyi.common.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.*;
+import com.ruoyi.common.core.domain.DlBaseEntity;
+
+/**
+ * 用户关注对象 dl_busi_user_love
+ * 
+ * @author 朱春云
+ * @date 2025-03-29
+ */
+@TableName("dl_busi_user_love")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class BusiUserLove extends DlBaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    @TableId(type = IdType.ASSIGN_UUID)
+    private String id;
+
+    /** 用户主键 */
+    @Excel(name = "用户主键")
+    private Long userId;
+
+    /** 被关注通告主用户id */
+    @Excel(name = "被关注通告主用户id")
+    private Long loveUserId;
+
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/mapper/BusiNoticeMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/mapper/BusiNoticeMapper.java
index ea0fa9b..03953ca 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/busi/mapper/BusiNoticeMapper.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/mapper/BusiNoticeMapper.java
@@ -34,11 +34,19 @@ public interface BusiNoticeMapper extends BaseMapper<BusiNotice> {
 
     /**
      * 小程序端查询通告列表
-     * @author vinjor-M 
-     * @date 15:41 2025/3/25 
+     * @author vinjor-M
+     * @date 15:41 2025/3/25
      * @param query TODO
  * @param page
      * @return com.baomidou.mybatisplus.core.metadata.IPage<com.ruoyi.busi.domain.BusiNotice>
     **/
     IPage<BusiNoticeVo> queryAppListPage(@Param("entity") AppNoticeQuery query, Page<BusiNotice> page);
+    /**
+     * 小程序端查询通告详细信息
+     * @author 朱春云
+     * @date 15:39 2025/3/29
+     * @param noticeId 通告id
+     * @return com.ruoyi.common.core.domain.AjaxResult
+     **/
+    BusiNoticeVo selectByIdVo(@Param("noticeId") String noticeId);
 }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/mapper/BusiUserLoveMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/mapper/BusiUserLoveMapper.java
new file mode 100644
index 0000000..9a8fdc3
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/mapper/BusiUserLoveMapper.java
@@ -0,0 +1,21 @@
+package com.ruoyi.busi.mapper;
+
+import java.util.List;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.busi.domain.BusiUserLove;
+import org.apache.ibatis.annotations.Param;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 用户关注Mapper接口
+ * 
+ * @author 朱春云
+ * @date 2025-03-29
+ */
+@Mapper
+public interface BusiUserLoveMapper extends BaseMapper<BusiUserLove>
+{
+    IPage<BusiUserLove> queryListPage(@Param("entity") BusiUserLove entity, Page<BusiUserLove> page);
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiNoticeService.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiNoticeService.java
index 5e357c6..74deb69 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiNoticeService.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiNoticeService.java
@@ -1,5 +1,6 @@
 package com.ruoyi.busi.service;
 
+import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
@@ -63,11 +64,20 @@ public interface IBusiNoticeService extends IService<BusiNotice>
 
     /**
      * 小程序端查询通告列表
-     * @author vinjor-M 
-     * @date 15:41 2025/3/25 
+     * @author vinjor-M
+     * @date 15:41 2025/3/25
      * @param query TODO
- * @param page TODO 
+ * @param page TODO
      * @return com.baomidou.mybatisplus.core.metadata.IPage<com.ruoyi.busi.domain.BusiNotice>
     **/
     IPage<BusiNoticeVo> queryAppListPage(AppNoticeQuery query, Page<BusiNotice> page);
+
+    /**
+     * 小程序端查询通告详细信息
+     * @author 朱春云
+     * @date 15:39 2025/3/29
+     * @param noticeId 通告id
+     * @return com.ruoyi.common.core.domain.AjaxResult
+     **/
+    JSONObject appGetDetail(String noticeId);
 }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiUserLoveService.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiUserLoveService.java
new file mode 100644
index 0000000..e341b02
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiUserLoveService.java
@@ -0,0 +1,18 @@
+package com.ruoyi.busi.service;
+
+import java.util.List;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.busi.domain.BusiUserLove;
+
+/**
+ * 用户关注Service接口
+ * 
+ * @author 朱春云
+ * @date 2025-03-29
+ */
+public interface IBusiUserLoveService extends IService<BusiUserLove>
+{
+    IPage<BusiUserLove> queryListPage(BusiUserLove pageReqVO, Page<BusiUserLove> page);
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiNoticeServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiNoticeServiceImpl.java
index f2cedd3..cb1b9d0 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiNoticeServiceImpl.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiNoticeServiceImpl.java
@@ -3,11 +3,15 @@ package com.ruoyi.busi.service.impl;
 import java.util.*;
 
 import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ruoyi.base.domain.BaseCategory;
 import com.ruoyi.base.service.IBaseCategoryService;
+import com.ruoyi.busi.domain.BusiNoticeSign;
+import com.ruoyi.busi.domain.BusiUserLove;
 import com.ruoyi.busi.mapper.BusiNoticeSignMapper;
 import com.ruoyi.busi.query.AppNoticeQuery;
+import com.ruoyi.busi.service.IBusiUserLoveService;
 import com.ruoyi.busi.vo.BusiNoticeVo;
 import com.ruoyi.common.core.domain.DlBaseEntity;
 
@@ -17,10 +21,16 @@ import cn.hutool.core.date.DateUtil;
 import com.ruoyi.busi.utils.NoticeUtils;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.busi.query.BusiNoticeQuery;
 import com.ruoyi.constant.DictConstants;
+import com.ruoyi.member.domain.MemberApply;
+import com.ruoyi.member.service.IMemberApplyService;
+import com.ruoyi.system.service.ISysDictDataService;
+import com.ruoyi.system.service.ISysDictTypeService;
+import com.ruoyi.system.service.ISysUserService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -45,6 +55,14 @@ public class BusiNoticeServiceImpl extends ServiceImpl<BusiNoticeMapper,BusiNoti
     private BusiNoticeSignMapper busiNoticeSignMapper;
     @Autowired
     private NoticeUtils noticeUtils;
+    @Autowired
+    private IBusiUserLoveService userLoveService;
+    @Autowired
+    private ISysUserService userService;
+    @Autowired
+    private IMemberApplyService memberApplyService;
+    @Autowired
+    private ISysDictDataService dictDataService;
 
     @Override
     public IPage<BusiNoticeVo> queryListPage(BusiNoticeQuery query, Page<BusiNotice> page) {
@@ -222,6 +240,62 @@ public class BusiNoticeServiceImpl extends ServiceImpl<BusiNoticeMapper,BusiNoti
 
 
     }
+    /**
+     * 小程序端查询通告详细信息
+     * @author 朱春云
+     * @date 15:39 2025/3/29
+     * @param noticeId 通告id
+     * @return com.ruoyi.common.core.domain.AjaxResult
+     **/
+    @Override
+    public JSONObject appGetDetail(String noticeId) {
+        JSONObject res =new JSONObject();
+        //通告信息
+        BusiNoticeVo detail = busiNoticeMapper.selectByIdVo(noticeId);
+        res.put("noticeDetail",detail);
+        //通告主信息
+        SysUser userDetail = userService.selectUserById(detail.getUserId());
+        JSONObject userDetailJson = new JSONObject();
+        userDetailJson.put("userId",userDetail.getUserId());
+        userDetailJson.put("nickName",userDetail.getNickName());
+        userDetailJson.put("avatar",userDetail.getAvatar());
+        //关联认证表
+        LambdaQueryWrapper<MemberApply> queryWrapperMember =new LambdaQueryWrapper<>();
+        queryWrapperMember.eq(MemberApply::getUserId,userDetail.getUserId()).eq(MemberApply::getApprovalStatus,1).last("limit 1");
+        MemberApply memberApply = memberApplyService.getOne(queryWrapperMember);
+        if (null != memberApply){
+            userDetailJson.put("identityType",dictDataService.selectDictLabel("dl_identity_type",memberApply.getIdentityType()));
+        }
+        res.put("userDetail",userDetailJson);
+        //已报名用户头像
+        List<BusiNoticeSign> signList = busiNoticeSignMapper.selectList(new LambdaQueryWrapper<BusiNoticeSign>().eq(BusiNoticeSign::getNoticeId, noticeId));
+        List<String> signUserAvatarList = signList.stream().map(BusiNoticeSign::getAvatar).collect(Collectors.toList());
+        res.put("signUserAvatarList",signUserAvatarList);
+        //当前用户是否已关注该通告主
+        Long userId=null;
+        try {
+             userId = SecurityUtils.getUserId();
+        }catch (Exception ignored){
+            //未登录状态
+        }
+        res.put("isLove",false);
+        res.put("isSign",false);
+        if (null != userId){
+            LambdaQueryWrapper<BusiUserLove> queryWrapper =new LambdaQueryWrapper<>();
+            queryWrapper.eq(BusiUserLove::getUserId,userId).eq(BusiUserLove::getLoveUserId,detail.getUserId());
+            if(userLoveService.getOne(queryWrapper)!=null){
+                //当前用户已关注通告主
+                res.put("isLove",true);
+            }
+            //当前用户是否已报名该通告
+            if(busiNoticeSignMapper.selectOne(new LambdaQueryWrapper<BusiNoticeSign>().eq(BusiNoticeSign::getNoticeId, noticeId).eq(BusiNoticeSign::getUserId, userId).last("limit 1"))!=null){
+                res.put("isSign",true);
+            }
+        }
+
+
+        return res;
+    }
 
 
 }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiUserLoveServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiUserLoveServiceImpl.java
new file mode 100644
index 0000000..39c05eb
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiUserLoveServiceImpl.java
@@ -0,0 +1,30 @@
+package com.ruoyi.busi.service.impl;
+
+import java.util.List;
+import com.ruoyi.common.utils.DateUtils;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.busi.mapper.BusiUserLoveMapper;
+import com.ruoyi.busi.domain.BusiUserLove;
+import com.ruoyi.busi.service.IBusiUserLoveService;
+
+/**
+ * 用户关注Service业务层处理
+ * 
+ * @author 朱春云
+ * @date 2025-03-29
+ */
+@Service
+public class BusiUserLoveServiceImpl extends ServiceImpl<BusiUserLoveMapper,BusiUserLove>  implements IBusiUserLoveService
+{
+    @Autowired
+    private BusiUserLoveMapper busiUserLoveMapper;
+
+    @Override
+    public IPage<BusiUserLove> queryListPage(BusiUserLove pageReqVO, Page<BusiUserLove> page) {
+        return busiUserLoveMapper.queryListPage(pageReqVO, page);
+    }
+}
diff --git a/ruoyi-admin/src/main/resources/mapper/busi/BusiNoticeMapper.xml b/ruoyi-admin/src/main/resources/mapper/busi/BusiNoticeMapper.xml
index 0df8c9f..65205ae 100644
--- a/ruoyi-admin/src/main/resources/mapper/busi/BusiNoticeMapper.xml
+++ b/ruoyi-admin/src/main/resources/mapper/busi/BusiNoticeMapper.xml
@@ -120,5 +120,19 @@
                  </choose>
 
     </select>
+    <select id="selectByIdVo" resultType="com.ruoyi.busi.vo.BusiNoticeVo">
+        select  main.user_id, main.title, main.platform_code, main.province, main.city, main.fee_down, main.fee_up, main.is_self_price, main.gift_detail,
+               main.gift_price, main.end_date, main.brand, main.is_show_brand, main.need_num, main.fans_down, main.fans_up, main.is_eligible, main.pic, main.collect, main.detail, main.images,
+               main.blogger_types, main.is_show_tel, main.wechat, main.tel, main.group_image, main.is_use_coupon, main.approval_status, main.approval_user_id, main.approval_time,
+               main.approval_remark, main.creator, main.create_time, main.updater, main.update_time, main.del_flag,
+               uTable.nick_name as userNickName,ifnull(noticeView.view_num,0) as viewNum,
+               bTable.title as platformName
+        from dl_busi_notice main
+                 left join sys_user uTable on main.user_id = uTable.user_id
+                 left join dl_base_category bTable on main.platform_code = bTable.code
+                 left join dl_busi_notice_view noticeView on noticeView.id = main.id
+        WHERE
+            main.id = #{noticeId}
+    </select>
 
 </mapper>
diff --git a/ruoyi-admin/src/main/resources/mapper/busi/BusiUserLoveMapper.xml b/ruoyi-admin/src/main/resources/mapper/busi/BusiUserLoveMapper.xml
new file mode 100644
index 0000000..6dab41d
--- /dev/null
+++ b/ruoyi-admin/src/main/resources/mapper/busi/BusiUserLoveMapper.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.busi.mapper.BusiUserLoveMapper">
+    
+    <resultMap type="BusiUserLove" id="BusiUserLoveResult">
+        <result property="id"    column="id"    />
+        <result property="userId"    column="user_id"    />
+        <result property="loveUserId"    column="love_user_id"    />
+        <result property="creator"    column="creator"    />
+        <result property="createTime"    column="create_time"    />
+    </resultMap>
+
+    <sql id="selectBusiUserLoveVo">
+        select id, user_id, love_user_id, creator, create_time from dl_busi_user_love
+    </sql>
+
+    <select id="queryListPage" parameterType="BusiUserLove" resultMap="BusiUserLoveResult">
+        <include refid="selectBusiUserLoveVo"/>
+        <where>
+                        <if test="entity.userId != null "> and user_id = #{entity.userId}</if>
+                        <if test="entity.loveUserId != null "> and love_user_id = #{entity.loveUserId}</if>
+        </where>
+    </select>
+</mapper>
\ No newline at end of file

From 1de92003595c826c2d58d8484ccfb096e906a4a2 Mon Sep 17 00:00:00 2001
From: 13405411873 <1994398261@qq.com>
Date: Sat, 29 Mar 2025 11:12:36 +0800
Subject: [PATCH 3/4] =?UTF-8?q?=E9=80=9A=E5=91=8A=E8=AF=A6=E6=83=85?=
 =?UTF-8?q?=E6=8E=A5=E5=8F=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../main/java/com/ruoyi/busi/service/IBusiNoticeService.java    | 2 +-
 .../java/com/ruoyi/busi/service/impl/BusiNoticeServiceImpl.java | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiNoticeService.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiNoticeService.java
index 74deb69..eafb169 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiNoticeService.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiNoticeService.java
@@ -77,7 +77,7 @@ public interface IBusiNoticeService extends IService<BusiNotice>
      * @author 朱春云
      * @date 15:39 2025/3/29
      * @param noticeId 通告id
-     * @return com.ruoyi.common.core.domain.AjaxResult
+     * @return JSONObject
      **/
     JSONObject appGetDetail(String noticeId);
 }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiNoticeServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiNoticeServiceImpl.java
index cb1b9d0..ab2f77a 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiNoticeServiceImpl.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiNoticeServiceImpl.java
@@ -245,7 +245,7 @@ public class BusiNoticeServiceImpl extends ServiceImpl<BusiNoticeMapper,BusiNoti
      * @author 朱春云
      * @date 15:39 2025/3/29
      * @param noticeId 通告id
-     * @return com.ruoyi.common.core.domain.AjaxResult
+     * @return JSONObject
      **/
     @Override
     public JSONObject appGetDetail(String noticeId) {

From a3fef62a6ce0165423ab55fd2408c437a178140d Mon Sep 17 00:00:00 2001
From: 13405411873 <1994398261@qq.com>
Date: Sat, 29 Mar 2025 11:18:43 +0800
Subject: [PATCH 4/4] =?UTF-8?q?=E9=80=9A=E5=91=8A=E8=AF=A6=E6=83=85?=
 =?UTF-8?q?=E6=8E=A5=E5=8F=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../com/ruoyi/busi/service/impl/BusiNoticeServiceImpl.java   | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiNoticeServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiNoticeServiceImpl.java
index ab2f77a..f0ea812 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiNoticeServiceImpl.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiNoticeServiceImpl.java
@@ -258,7 +258,7 @@ public class BusiNoticeServiceImpl extends ServiceImpl<BusiNoticeMapper,BusiNoti
         JSONObject userDetailJson = new JSONObject();
         userDetailJson.put("userId",userDetail.getUserId());
         userDetailJson.put("nickName",userDetail.getNickName());
-        userDetailJson.put("avatar",userDetail.getAvatar());
+        userDetailJson.put("avatar",Optional.ofNullable(userDetail.getAvatar()).orElse(""));
         //关联认证表
         LambdaQueryWrapper<MemberApply> queryWrapperMember =new LambdaQueryWrapper<>();
         queryWrapperMember.eq(MemberApply::getUserId,userDetail.getUserId()).eq(MemberApply::getApprovalStatus,1).last("limit 1");
@@ -269,7 +269,8 @@ public class BusiNoticeServiceImpl extends ServiceImpl<BusiNoticeMapper,BusiNoti
         res.put("userDetail",userDetailJson);
         //已报名用户头像
         List<BusiNoticeSign> signList = busiNoticeSignMapper.selectList(new LambdaQueryWrapper<BusiNoticeSign>().eq(BusiNoticeSign::getNoticeId, noticeId));
-        List<String> signUserAvatarList = signList.stream().map(BusiNoticeSign::getAvatar).collect(Collectors.toList());
+        List<String> signUserAvatarList = signList.stream().map(it-> Optional.ofNullable(it.getAvatar()).orElse("")
+        ).collect(Collectors.toList());
         res.put("signUserAvatarList",signUserAvatarList);
         //当前用户是否已关注该通告主
         Long userId=null;