Bläddra i källkod

Merge branch 'dev' of http://192.168.1.245:11111/jinjilong/onlineEducation-fwd into dev

honorfire 7 månader sedan
förälder
incheckning
01a39f5848

+ 23 - 3
snowy-plugin/snowy-plugin-forum/snowy-plugin-forum-func/src/main/java/vip/xiaonuo/forum/modular/postinfo/controller/ForumPostInfoController.java

@@ -13,6 +13,7 @@
 package vip.xiaonuo.forum.modular.postinfo.controller;
 
 import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import com.github.xiaoymin.knife4j.annotations.ApiSupport;
@@ -89,13 +90,32 @@ public class ForumPostInfoController {
     @ApiOperationSupport(order = 3)
     @ApiOperation("编辑帖子信息表")
     @CommonLog("编辑帖子信息表")
-    @SaCheckPermission("/forum/postinfo/edit")
     @PostMapping("/forum/postinfo/edit")
     public CommonResult<String> edit(@RequestBody @Valid ForumPostInfoEditParam forumPostInfoEditParam) {
-        forumPostInfoService.edit(forumPostInfoEditParam);
-        return CommonResult.ok();
+        return forumPostInfoService.edit(forumPostInfoEditParam);
+    }
+
+    /**
+     * 管理员置顶帖子
+     *
+     * @param jsonObject 帖子id,是否置顶
+     */
+    @PostMapping("/forum/postinfo/top")
+    public CommonResult<String> top(@RequestBody @Valid JSONObject jsonObject) {
+        return forumPostInfoService.top(jsonObject);
     }
 
+    /**
+     * 管理员关闭帖子
+     *
+     * @param jsonObject 帖子id,是否关闭
+     */
+    @PostMapping("/forum/postinfo/status")
+    public CommonResult<String> status(@RequestBody @Valid JSONObject jsonObject) {
+        return forumPostInfoService.close(jsonObject);
+    }
+
+
     /**
      * 删除帖子信息表
      *

+ 5 - 0
snowy-plugin/snowy-plugin-forum/snowy-plugin-forum-func/src/main/java/vip/xiaonuo/forum/modular/postinfo/entity/ForumPostInfo.java

@@ -145,4 +145,9 @@ public class ForumPostInfo {
     @TableField(exist = false)
     private Integer isSelf;
 
+    /**
+     * 帖子状态 0正常 1关闭
+     */
+    private Integer postStatus;
+
 }

+ 15 - 1
snowy-plugin/snowy-plugin-forum/snowy-plugin-forum-func/src/main/java/vip/xiaonuo/forum/modular/postinfo/service/ForumPostInfoService.java

@@ -12,6 +12,7 @@
  */
 package vip.xiaonuo.forum.modular.postinfo.service;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import vip.xiaonuo.common.pojo.CommonResult;
@@ -54,7 +55,7 @@ public interface ForumPostInfoService extends IService<ForumPostInfo> {
      * @author 金吉龙
      * @date  2025/07/16 08:46
      */
-    void edit(ForumPostInfoEditParam forumPostInfoEditParam);
+    CommonResult<String> edit(ForumPostInfoEditParam forumPostInfoEditParam);
 
     /**
      * 删除帖子信息表
@@ -80,4 +81,17 @@ public interface ForumPostInfoService extends IService<ForumPostInfo> {
      **/
     ForumPostInfo queryEntity(String id);
 
+    /**
+     * 管理员置顶帖子
+     *
+     * @param jsonObject 帖子id,是否置顶
+     */
+    CommonResult<String> top(JSONObject jsonObject);
+
+    /**
+     * 管理员关闭帖子
+     *
+     * @param jsonObject 帖子id,是否关闭
+     */
+    CommonResult<String> close(JSONObject jsonObject);
 }

+ 71 - 14
snowy-plugin/snowy-plugin-forum/snowy-plugin-forum-func/src/main/java/vip/xiaonuo/forum/modular/postinfo/service/impl/ForumPostInfoServiceImpl.java

@@ -121,6 +121,10 @@ public class ForumPostInfoServiceImpl extends ServiceImpl<ForumPostInfoMapper, F
         } else if (forumPostInfoPageParam.getSortOrder() == 1) {
             queryWrapper.lambda().orderByDesc(ForumPostInfo::getViewCount);
         }
+        // 置顶的优先
+        queryWrapper.lambda().orderByDesc(ForumPostInfo::getIsTop);
+        // 帖子状态 0正常
+        queryWrapper.lambda().eq(ForumPostInfo::getPostStatus, 0);
         Page<ForumPostInfo> page = this.page(CommonPageRequest.defaultPage(), queryWrapper);
         if (page.getRecords().size() > 0) {
             for (ForumPostInfo forumPostInfo : page.getRecords()) {
@@ -163,7 +167,8 @@ public class ForumPostInfoServiceImpl extends ServiceImpl<ForumPostInfoMapper, F
             SaBaseLoginUser loginUser = StpLoginUserUtil.getLoginUser();
             forumPostInfo.setUserId(loginUser.getId());
             // 过滤敏感词
-            filterSensitiveWords(forumPostInfoAddParam, loginUser, uuid);
+            String postContent = filterSensitiveWords(forumPostInfoAddParam.getPostContent(), loginUser, uuid);
+            forumPostInfo.setPostContent(postContent);
             // 存储基础表
             this.save(forumPostInfo);
             // 区分出是普通帖子、还是技术支持帖子、内容纠错帖子 0普通帖子 1技术支持 2内容纠错
@@ -192,35 +197,55 @@ public class ForumPostInfoServiceImpl extends ServiceImpl<ForumPostInfoMapper, F
     /**
      * 过滤发帖中的敏感词
      *
-     * @param forumPostInfoAddParam 帖子信息编辑参数
+     * @param postContent 帖子内容
      */
-    public void filterSensitiveWords(ForumPostInfoAddParam forumPostInfoAddParam, SaBaseLoginUser loginUser, String uuid) {
+    public String filterSensitiveWords(String postContent, SaBaseLoginUser loginUser, String uuid) {
         List<ForumSensitivity> forumSensitivities = forumSensitivityMapper.selectList(new QueryWrapper<>());
         if (forumSensitivities.size() > 0) {
             // 过滤敏感词
             for (ForumSensitivity forumSensitivity : forumSensitivities) {
                 // 过滤逻辑
-                if (forumPostInfoAddParam.getPostContent().contains(forumSensitivity.getSensitivityWord())) {
+                if (postContent.contains(forumSensitivity.getSensitivityWord())) {
                     // 替换句子中敏感词为*号
-                    forumPostInfoAddParam.setPostContent(forumPostInfoAddParam.getPostContent().replace(forumSensitivity.getSensitivityWord(), "******"));
+                    postContent = postContent.replace(forumSensitivity.getSensitivityWord(), "******");
+                    // 记录敏感词命中情况
+                    ForumSensitivityRecord forumSensitivityRecord = new ForumSensitivityRecord();
+                    forumSensitivityRecord.setSensitivityWord(forumSensitivity.getSensitivityWord()); // 敏感词
+                    forumSensitivityRecord.setUserId(loginUser.getId()); // 用户id
+                    forumSensitivityRecord.setRecordType(0); // 发帖子类型
+                    forumSensitivityRecord.setPostId(uuid); // 帖子id
+                    forumSensitivityRecordMapper.insert(forumSensitivityRecord);
                 }
-                // 记录敏感词命中情况
-                ForumSensitivityRecord forumSensitivityRecord = new ForumSensitivityRecord();
-                forumSensitivityRecord.setSensitivityWord(forumSensitivity.getSensitivityWord()); // 敏感词
-                forumSensitivityRecord.setUserId(loginUser.getId()); // 用户id
-                forumSensitivityRecord.setRecordType(0); // 发帖子类型
-                forumSensitivityRecord.setPostId(uuid); // 帖子id
-                forumSensitivityRecordMapper.insert(forumSensitivityRecord);
             }
         }
+        return postContent;
     }
 
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public void edit(ForumPostInfoEditParam forumPostInfoEditParam) {
+    public CommonResult<String> edit(ForumPostInfoEditParam forumPostInfoEditParam) {
+        SaBaseLoginUser loginUser = StpLoginUserUtil.getLoginUser();
+        // 首先判断帖子是否存在
+        ForumPostInfo dataPost = this.queryEntity(forumPostInfoEditParam.getPostId());
+        if (ObjectUtil.isNull(dataPost)) {
+            return CommonResult.error("帖子不存在");
+        }
+        // 判断帖子是否为自己的
+        if (!dataPost.getUserId().equals(loginUser.getId())) {
+            return CommonResult.error("帖子不是自己的,无法编辑");
+        }
+        // 过滤敏感词
+        String postContent = filterSensitiveWords(forumPostInfoEditParam.getPostContent(), loginUser, forumPostInfoEditParam.getPostId());
+        forumPostInfoEditParam.setPostContent(postContent);
+        // 更新帖子信息
         ForumPostInfo forumPostInfo = this.queryEntity(forumPostInfoEditParam.getPostId());
         BeanUtil.copyProperties(forumPostInfoEditParam, forumPostInfo);
-        this.updateById(forumPostInfo);
+        boolean b = this.updateById(forumPostInfo);
+        if (!b) {
+            return CommonResult.error("帖子更新失败");
+        } else {
+            return CommonResult.ok();
+        }
     }
 
     @Transactional(rollbackFor = Exception.class)
@@ -296,4 +321,36 @@ public class ForumPostInfoServiceImpl extends ServiceImpl<ForumPostInfoMapper, F
         return forumPostInfo;
     }
 
+    @Override
+    public CommonResult<String> top(com.alibaba.fastjson.JSONObject jsonObject) {
+        // 取出字段
+        String postId = jsonObject.getString("postId");
+        Integer isTop = jsonObject.getInteger("isTop");
+        // 更新帖子信息
+        ForumPostInfo forumPostInfo = this.queryEntity(postId);
+        forumPostInfo.setIsTop(isTop);
+        boolean b = this.updateById(forumPostInfo);
+        if (!b) {
+            return CommonResult.error("帖子置顶失败");
+        } else {
+            return CommonResult.ok();
+        }
+    }
+
+    @Override
+    public CommonResult<String> close(com.alibaba.fastjson.JSONObject jsonObject) {
+        // 取出字段
+        String postId = jsonObject.getString("postId");
+        Integer postStatus = jsonObject.getInteger("postStatus");
+        // 更新帖子信息
+        ForumPostInfo forumPostInfo = this.queryEntity(postId);
+        forumPostInfo.setPostStatus(postStatus);
+        boolean b = this.updateById(forumPostInfo);
+        if (!b) {
+            return CommonResult.error();
+        } else {
+            return CommonResult.ok();
+        }
+    }
+
 }