瀏覽代碼

通知公告发布和取消发布代码提交

pans 7 月之前
父節點
當前提交
e7e085afa1
共有 14 個文件被更改,包括 868 次插入149 次删除
  1. 131 42
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/NoticeController.java
  2. 83 36
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/domain/Notice.java
  3. 34 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/enums/NoticeEnum.java
  4. 29 7
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/NoticeMapper.java
  5. 48 25
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/mapping/NoticeMapper.xml
  6. 86 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/notice/NoticeAddParam.java
  7. 91 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/notice/NoticeEditParam.java
  8. 35 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/notice/NoticeIdParam.java
  9. 49 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/notice/NoticePageParam.java
  10. 0 13
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/INoticeService.java
  11. 86 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/NoticeService.java
  12. 0 26
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/impl/NoticeService.java
  13. 109 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/impl/NoticeServiceImpl.java
  14. 87 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/vo/notice/NoticeVo.java

+ 131 - 42
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/NoticeController.java

@@ -1,64 +1,153 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
 package vip.xiaonuo.disk.controller;
 
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.qiwenshare.common.result.RestResult;
-import vip.xiaonuo.disk.service.INoticeService;
-import vip.xiaonuo.disk.domain.Notice;
-import vip.xiaonuo.disk.dto.notice.NoticeListDTO;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.github.xiaoymin.knife4j.annotations.ApiSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+import vip.xiaonuo.common.annotation.CommonLog;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.common.pojo.CommonValidList;
+import vip.xiaonuo.disk.param.notice.NoticeAddParam;
+import vip.xiaonuo.disk.param.notice.NoticeEditParam;
+import vip.xiaonuo.disk.param.notice.NoticeIdParam;
+import vip.xiaonuo.disk.param.notice.NoticePageParam;
+import vip.xiaonuo.disk.service.NoticeService;
+import vip.xiaonuo.disk.vo.notice.NoticeVo;
 
 import javax.annotation.Resource;
+import javax.validation.Valid;
+import javax.validation.constraints.NotEmpty;
 
-@Tag(name = "公告管理")
+/**
+ * notice控制器
+ *
+ * @author pans
+ * @date  2025/07/25 16:17
+ */
+@Api(tags = "notice控制器")
+@ApiSupport(author = "SNOWY_TEAM", order = 1)
 @RestController
-@RequestMapping("/notice")
+@Validated
 public class NoticeController {
-    public static final String CURRENT_MODULE = "公告管理";
+
     @Resource
-    INoticeService noticeService;
+    private NoticeService noticeService;
 
     /**
-     * 得到所有的公告
+     * 获取notice分页
      *
-     * @return
+     * @author pans
+     * @date  2025/07/25 16:17
      */
-    @Operation(summary = "得到所有的公告列表", tags = {"公告管理"})
-    @RequestMapping(value = "/list", method = RequestMethod.GET)
-    @ResponseBody
-    public RestResult<NoticeListDTO> selectUserList(@Parameter(description = "当前页,从1开始")  @RequestParam(defaultValue = "1") int page,
-                                          @Parameter(description = "页大小")  @RequestParam(defaultValue = "10") int pageSize,
-                                          @Parameter(description = "标题") @RequestParam(required = false) String title,
-                                          @Parameter(description = "发布者")  @RequestParam(required = false) Long publisher,
-                                          @Parameter(description = "开始发布时间")  @RequestParam(required = false) String beginTime,
-                                          @Parameter(description = "开始发布时间")  @RequestParam(required = false) String endTime) {
-        NoticeListDTO noticeListDTO = new NoticeListDTO();
-        noticeListDTO.setPage(page);
-        noticeListDTO.setPageSize(pageSize);
-        noticeListDTO.setTitle(title);
-        noticeListDTO.setPlatform(3);
-        noticeListDTO.setPublisher(publisher);
-        noticeListDTO.setBeginTime(beginTime);
-        noticeListDTO.setEndTime(endTime);
-        IPage<Notice> noticeIPage = noticeService.selectUserPage(noticeListDTO);
-
-        return RestResult.success().dataList(noticeIPage.getRecords(), noticeIPage.getTotal());
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("获取notice分页")
+    @GetMapping("/disk/notice/page")
+    public CommonResult<Page<NoticeVo>> page(NoticePageParam noticePageParam) {
+        return CommonResult.data(noticeService.page(noticePageParam));
     }
 
-    @Operation(summary = "查询公告详情", tags = {"公告管理"})
-    @RequestMapping(value = "/detail", method = RequestMethod.GET)
-    @ResponseBody
-    public RestResult<Notice> getNoticeDetail(@Parameter(description = "公告id", required = true) long noticeId) {
-        RestResult<Notice> result = new RestResult<Notice>();
+    /**
+     * 添加notice
+     *
+     * @author pans
+     * @date  2025/07/25 16:17
+     */
+    @ApiOperationSupport(order = 2)
+    @ApiOperation("添加notice")
+    @CommonLog("添加notice")
+    @PostMapping("/disk/notice/add")
+    public CommonResult<String> add(@RequestBody @Valid NoticeAddParam noticeAddParam) {
+        noticeService.add(noticeAddParam);
+        return CommonResult.ok();
+    }
 
-        Notice notice = noticeService.getById(noticeId);
+    /**
+     * 编辑notice
+     *
+     * @author pans
+     * @date  2025/07/25 16:17
+     */
+    @ApiOperationSupport(order = 3)
+    @ApiOperation("编辑notice")
+    @CommonLog("编辑notice")
+    @PostMapping("/disk/notice/edit")
+    public CommonResult<String> edit(@RequestBody @Valid NoticeEditParam noticeEditParam) {
+        noticeService.edit(noticeEditParam);
+        return CommonResult.ok();
+    }
 
-        return RestResult.success().data(notice);
+    /**
+     * 删除notice
+     *
+     * @author pans
+     * @date  2025/07/25 16:17
+     */
+    @ApiOperationSupport(order = 4)
+    @ApiOperation("删除notice")
+    @CommonLog("删除notice")
+    @PostMapping("/disk/notice/delete")
+    public CommonResult<String> delete(@RequestBody @Valid @NotEmpty(message = "集合不能为空")
+                                                   CommonValidList<NoticeIdParam> noticeIdParamList) {
+        noticeService.delete(noticeIdParamList);
+        return CommonResult.ok();
     }
 
+    /**
+     * 获取notice详情
+     *
+     * @author pans
+     * @date  2025/07/25 16:17
+     */
+    @ApiOperationSupport(order = 5)
+    @ApiOperation("获取notice详情")
+    @GetMapping("/disk/notice/detail")
+    public CommonResult<NoticeVo> detail(@Valid NoticeIdParam noticeIdParam) {
+        return CommonResult.data(noticeService.detail(noticeIdParam));
+    }
 
 
+    /**
+     * 发布
+     *
+     * @author pans
+     * @date  2025/07/25 16:17
+     */
+    @ApiOperationSupport(order = 5)
+    @ApiOperation("获取notice详情")
+    @GetMapping("/disk/notice/publish")
+    public CommonResult<?> publish(@Valid NoticeIdParam noticeIdParam) {
+        noticeService.publish(noticeIdParam);
+        return CommonResult.ok();
+    }
 
+    /**
+     * 取消发布
+     * @author pans
+     * @date  2025/07/25 16:17
+     */
+    @ApiOperationSupport(order = 5)
+    @ApiOperation("获取notice详情")
+    @GetMapping("/disk/notice/cancel")
+    public CommonResult<?> cancel(@Valid NoticeIdParam noticeIdParam) {
+        noticeService.cancel(noticeIdParam);
+        return CommonResult.ok();
+    }
 }

+ 83 - 36
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/domain/Notice.java

@@ -1,49 +1,96 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
 package vip.xiaonuo.disk.domain;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
 
-import javax.persistence.*;
+import java.util.Date;
 
 /**
- * @author MAC
- * @version 1.0
- * @description: 公告
- * @date 2021/11/22 22:16
- */
-@Data
-@Table(name = "notice")
-@Entity
+ * notice实体
+ *
+ * @author pans
+ * @date  2025/07/25 16:17
+ **/
+@Getter
+@Setter
 @TableName("notice")
 public class Notice {
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
+
+    /** NOTICE_ID */
     @TableId(type = IdType.AUTO)
-    @Column(columnDefinition="bigint(20)", unique = true)
+    @ApiModelProperty(value = "NOTICE_ID", position = 1)
     private Long noticeId;
 
-    @Column(columnDefinition="varchar(100) comment '标题'", nullable = false)
-    private String title;
-    @Column(columnDefinition="int(2) comment '平台(1-社区,2-管理端,3-网盘,4-股票)'")
-    private Integer platform;
+    /** html内容 */
+    @ApiModelProperty(value = "html内容", position = 2)
+    private String content;
 
-    @Column(columnDefinition = "longtext comment 'markdown原文'")
+    /** 创建时间 */
+    @ApiModelProperty(value = "创建时间", position = 3)
+    @TableField(fill = FieldFill.INSERT)
+    private Date createTime;
+
+    /** 创建用户id */
+    @ApiModelProperty(value = "创建用户id", position = 4)
+    private String createUserId;
+
+    /** 是否长期有效(0-否,1-是) */
+    @ApiModelProperty(value = "是否长期有效(0-否,1-是)", position = 5)
+    private Integer isLongValidData;
+
+    /** markdown原文 */
+    @ApiModelProperty(value = "markdown原文", position = 6)
     private String markdownContent;
-    @Column(columnDefinition = "longtext comment 'html内容'")
-    private String content;
-    @Column(columnDefinition="varchar(25) comment '有效时间'")
-    private String validDateTime;
-    @Column(columnDefinition="int(1) comment '是否长期有效(0-否,1-是)'")
-    private int isLongValidData;
-
-    @Column(columnDefinition="varchar(25) comment '创建时间'")
-    private String createTime;
-    @Column(columnDefinition="bigint(20) comment '创建用户id'")
-    private Long createUserId;
-    @Column(columnDefinition="varchar(25) comment '修改时间'")
-    private String modifyTime;
-    @Column(columnDefinition="bigint(20) comment '修改用户id'")
-    private Long modifyUserId;
+
+    /** 修改时间 */
+    @ApiModelProperty(value = "修改时间", position = 7)
+    private Date modifyTime;
+
+    /** 修改用户id */
+    @ApiModelProperty(value = "修改用户id", position = 8)
+    private String modifyUserId;
+
+    /** 平台(1-课程,2-考试,3-网盘,4-股票) */
+    @ApiModelProperty(value = "平台(1-课程,2-考试,3-网盘,4-股票)", position = 9)
+    private Integer platform;
+
+    /** 标题 */
+    @ApiModelProperty(value = "标题", position = 10)
+    private String title;
+
+    /** 发布人 */
+    @ApiModelProperty(value = "发布人", position = 11)
+    private String publishUser;
+
+    /** 开始时间 */
+    @ApiModelProperty(value = "开始时间", position = 12)
+    private Date startTime;
+
+    /** 结束时间 */
+    @ApiModelProperty(value = "结束时间", position = 13)
+    private Date endTime;
+
+    /** 发布时间 */
+    @ApiModelProperty(value = "发布时间", position = 14)
+    private Date publishTime;
+
+    /** 状态(0未发布  1已发布) */
+    @ApiModelProperty(value = "状态(0未发布  1已发布)", position = 15)
+    private Integer noticeStatus;
+
+    private String deleteFlag;
 }

+ 34 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/enums/NoticeEnum.java

@@ -0,0 +1,34 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.disk.enums;
+
+import lombok.Getter;
+
+/**
+ * notice枚举
+ *
+ * @author pans
+ * @date  2025/07/25 16:17
+ **/
+@Getter
+public enum NoticeEnum {
+
+    /** 测试 */
+    TEST("TEST");
+
+    private final String value;
+
+    NoticeEnum(String value) {
+        this.value = value;
+    }
+}

+ 29 - 7
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/NoticeMapper.java

@@ -1,18 +1,40 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
 package vip.xiaonuo.disk.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import vip.xiaonuo.disk.domain.Notice;
-import vip.xiaonuo.disk.dto.notice.NoticeListDTO;
 import org.apache.ibatis.annotations.Param;
+import vip.xiaonuo.disk.domain.Notice;
+import vip.xiaonuo.disk.param.notice.NoticeIdParam;
+import vip.xiaonuo.disk.param.notice.NoticePageParam;
+import vip.xiaonuo.disk.vo.notice.NoticeVo;
+
+import javax.validation.constraints.NotNull;
+
 
 /**
- * @author: xxxg
- * @date: 2021/11/18 11:25
- */
+ * noticeMapper接口
+ *
+ * @author pans
+ * @date  2025/07/25 16:17
+ **/
 public interface NoticeMapper extends BaseMapper<Notice> {
+    Page<NoticeVo> page(@Param("page") Page<Object> objectPage, @Param("noticePageParam") NoticePageParam noticePageParam);
+
+    NoticeVo detail(@NotNull(message = "noticeId不能为空") Long noticeId);
 
-    IPage<Notice> selectPageVo(Page<?> page, @Param("noticeListDTO") NoticeListDTO noticeListDTO);
+    void publish(NoticeIdParam noticeIdParam);
 
+    void cancel(NoticeIdParam noticeIdParam);
 }

+ 48 - 25
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/mapping/NoticeMapper.xml

@@ -1,33 +1,56 @@
 <?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">
-
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="vip.xiaonuo.disk.mapper.NoticeMapper">
-
-
-    <select id="selectPageVo" parameterType="vip.xiaonuo.disk.dto.notice.NoticeListDTO"
-            resultType="vip.xiaonuo.disk.domain.Notice">
-        select * from notice
+    <select id="page" resultType="vip.xiaonuo.disk.vo.notice.NoticeVo">
+        SELECT
+            a.NOTICE_ID noticeId,
+            a.CONTENT content,
+            a.CREATE_TIME createTime,
+            a.CREATE_USER_ID createUserId,
+            a.MODIFY_TIME modifyTime,
+            a.MODIFY_USER_ID modifyUserId,
+            a.PLATFORM platform,
+            a.TITLE title,
+            a.PUBLISH_USER publishUser,
+            a.PUBLISH_TIME publishTime,
+            a.NOTICE_STATUS noticeStatus,
+            b.name publishUserName
+        FROM
+            ONLINEEDU."notice" a  LEFT JOIN sys_user b ON  a.PUBLISH_USER = b.id
         <where>
-            <if test="noticeListDTO.platform != null and noticeListDTO.platform != ''">
-                and PLATFORM = #{noticeListDTO.platform}
-            </if>
-            <if test="noticeListDTO.publisher != null and noticeListDTO.publisher != ''">
-                and PUBLISHER = #{noticeListDTO.publisher}
-            </if>
-            <if test="noticeListDTO.beginTime != null and noticeListDTO.beginTime != ''">
-                and CREATE_TIME &gt;= #{noticeListDTO.beginTime}
-            </if>
-            <if test="noticeListDTO.endTime != null and noticeListDTO.endTime != ''">
-                and CREATE_TIME &lt;= #{noticeListDTO.endTime}
-            </if>
-            <if test="noticeListDTO.title != null and noticeListDTO.title != ''">
-                and TITLE like '%${noticeListDTO.title}%'
+            <if test="noticePageParam.title!=null">
+                a.TITLE like concat('%',#{noticePageParam.title},'%')
             </if>
+            and  a.DELETE_FLAG='NOT_DELETE'
         </where>
-        order by CREATE_TIME desc
+        order by a.MODIFY_TIME desc
+    </select>
+
+    <select id="detail" resultType="vip.xiaonuo.disk.vo.notice.NoticeVo">
+        SELECT
+            a.NOTICE_ID noticeId,
+            a.CONTENT content,
+            a.CREATE_TIME createTime,
+            a.CREATE_USER_ID createUserId,
+            a.MODIFY_TIME modifyTime,
+            a.MODIFY_USER_ID modifyUserId,
+            a.PLATFORM platform,
+            a.TITLE title,
+            a.PUBLISH_USER publishUser,
+            a.PUBLISH_TIME publishTime,
+            a.NOTICE_STATUS noticeStatus,
+            b.name publishUserName
+        FROM
+            ONLINEEDU."notice" a left JOIN sys_user b ON  a.PUBLISH_USER = b.id
+        where a.NOTICE_ID=#{noticeId}
     </select>
 
+    <update id="publish">
+        update notice set notice_status=1 where  NOTICE_ID=#{noticeId}
+    </update>
+
+    <update id="cancel">
+        update notice set notice_status=0 where  NOTICE_ID=#{noticeId}
+    </update>
+
 </mapper>

+ 86 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/notice/NoticeAddParam.java

@@ -0,0 +1,86 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.disk.param.notice;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * notice添加参数
+ *
+ * @author pans
+ * @date  2025/07/25 16:17
+ **/
+@Getter
+@Setter
+public class NoticeAddParam {
+
+    /** html内容 */
+    @ApiModelProperty(value = "html内容", position = 2)
+    private String content;
+
+    /** 创建用户id */
+    @ApiModelProperty(value = "创建用户id", position = 4)
+    private Long createUserId;
+
+    /** 是否长期有效(0-否,1-是) */
+    @ApiModelProperty(value = "是否长期有效(0-否,1-是)", position = 5)
+    private Integer isLongValidData;
+
+    /** markdown原文 */
+    @ApiModelProperty(value = "markdown原文", position = 6)
+    private String markdownContent;
+
+    /** 修改时间 */
+    @ApiModelProperty(value = "修改时间", position = 7)
+    private Date modifyTime;
+
+    /** 修改用户id */
+    @ApiModelProperty(value = "修改用户id", position = 8)
+    private Long modifyUserId;
+
+    /** 平台(1-课程,2-考试,3-网盘,4-股票) */
+    @ApiModelProperty(value = "平台(1-课程,2-考试,3-网盘,4-股票)", position = 9)
+    private Integer platform;
+
+    /** 标题 */
+    @ApiModelProperty(value = "标题", position = 10)
+    private String title;
+
+    /** 发布人 */
+    @ApiModelProperty(value = "发布人", position = 11)
+    private String publishUser;
+
+    /** 开始时间 */
+    @ApiModelProperty(value = "开始时间", position = 12)
+    private Date startTime;
+
+    /** 结束时间 */
+    @ApiModelProperty(value = "结束时间", position = 13)
+    private Date endTime;
+
+    /** 发布时间 */
+    @ApiModelProperty(value = "发布时间", position = 14)
+    private Date publishTime;
+
+    /** 状态(0未发布  1已发布) */
+    @ApiModelProperty(value = "状态(0未发布  1已发布)", position = 15)
+    private Integer noticeStatus;
+
+    /** 删除标志 */
+    private String deleteFlag;
+
+}

+ 91 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/notice/NoticeEditParam.java

@@ -0,0 +1,91 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.disk.param.notice;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * notice编辑参数
+ *
+ * @author pans
+ * @date  2025/07/25 16:17
+ **/
+@Getter
+@Setter
+public class NoticeEditParam {
+
+    /** NOTICE_ID */
+    @ApiModelProperty(value = "NOTICE_ID", required = true, position = 1)
+    @NotNull(message = "noticeId不能为空")
+    private Long noticeId;
+
+    /** html内容 */
+    @ApiModelProperty(value = "html内容", position = 2)
+    private String content;
+
+    /** 创建用户id */
+    @ApiModelProperty(value = "创建用户id", position = 4)
+    private Long createUserId;
+
+    /** 是否长期有效(0-否,1-是) */
+    @ApiModelProperty(value = "是否长期有效(0-否,1-是)", position = 5)
+    private Integer isLongValidData;
+
+    /** markdown原文 */
+    @ApiModelProperty(value = "markdown原文", position = 6)
+    private String markdownContent;
+
+    /** 修改时间 */
+    @ApiModelProperty(value = "修改时间", position = 7)
+    private Date modifyTime;
+
+    /** 修改用户id */
+    @ApiModelProperty(value = "修改用户id", position = 8)
+    private Long modifyUserId;
+
+    /** 平台(1-课程,2-考试,3-网盘,4-股票) */
+    @ApiModelProperty(value = "平台(1-课程,2-考试,3-网盘,4-股票)", position = 9)
+    private Integer platform;
+
+    /** 标题 */
+    @ApiModelProperty(value = "标题", position = 10)
+    private String title;
+
+    /** 发布人 */
+    @ApiModelProperty(value = "发布人", position = 11)
+    private String publishUser;
+
+    /** 开始时间 */
+    @ApiModelProperty(value = "开始时间", position = 12)
+    private Date startTime;
+
+    /** 结束时间 */
+    @ApiModelProperty(value = "结束时间", position = 13)
+    private Date endTime;
+
+    /** 发布时间 */
+    @ApiModelProperty(value = "发布时间", position = 14)
+    private Date publishTime;
+
+    /** 状态(0未发布  1已发布) */
+    @ApiModelProperty(value = "状态(0未发布  1已发布)", position = 15)
+    private Integer noticeStatus;
+
+}

+ 35 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/notice/NoticeIdParam.java

@@ -0,0 +1,35 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.disk.param.notice;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * noticeId参数
+ *
+ * @author pans
+ * @date  2025/07/25 16:17
+ **/
+@Getter
+@Setter
+public class NoticeIdParam {
+
+    /** NOTICE_ID */
+    @ApiModelProperty(value = "NOTICE_ID", required = true)
+    @NotNull(message = "noticeId不能为空")
+    private Long noticeId;
+}

+ 49 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/notice/NoticePageParam.java

@@ -0,0 +1,49 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.disk.param.notice;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * notice查询参数
+ *
+ * @author pans
+ * @date  2025/07/25 16:17
+ **/
+@Getter
+@Setter
+public class NoticePageParam {
+
+    /** 当前页 */
+    @ApiModelProperty(value = "当前页码")
+    private Integer current;
+
+    /** 每页条数 */
+    @ApiModelProperty(value = "每页条数")
+    private Integer size;
+
+    /** 排序字段 */
+    @ApiModelProperty(value = "排序字段,字段驼峰名称,如:userName")
+    private String sortField;
+
+    /** 排序方式 */
+    @ApiModelProperty(value = "排序方式,升序:ASCEND;降序:DESCEND")
+    private String sortOrder;
+
+    /** 关键词 */
+    @ApiModelProperty(value = "关键词")
+    private String title;
+
+}

+ 0 - 13
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/INoticeService.java

@@ -1,13 +0,0 @@
-package vip.xiaonuo.disk.service;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.service.IService;
-import vip.xiaonuo.disk.domain.Notice;
-import vip.xiaonuo.disk.dto.notice.NoticeListDTO;
-
-public interface INoticeService extends IService<Notice> {
-
-
-    IPage<Notice> selectUserPage(NoticeListDTO noticeListDTO);
-
-}

+ 86 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/NoticeService.java

@@ -0,0 +1,86 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.disk.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.disk.domain.Notice;
+import vip.xiaonuo.disk.param.notice.NoticeAddParam;
+import vip.xiaonuo.disk.param.notice.NoticeEditParam;
+import vip.xiaonuo.disk.param.notice.NoticeIdParam;
+import vip.xiaonuo.disk.param.notice.NoticePageParam;
+import vip.xiaonuo.disk.vo.notice.NoticeVo;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * noticeService接口
+ *
+ * @author pans
+ * @date  2025/07/25 16:17
+ **/
+public interface NoticeService extends IService<Notice> {
+
+    /**
+     * 获取notice分页
+     *
+     * @author pans
+     * @date  2025/07/25 16:17
+     */
+    Page<NoticeVo> page(NoticePageParam noticePageParam);
+
+    /**
+     * 添加notice
+     *
+     * @author pans
+     * @date  2025/07/25 16:17
+     */
+    void add(NoticeAddParam noticeAddParam);
+
+    /**
+     * 编辑notice
+     *
+     * @author pans
+     * @date  2025/07/25 16:17
+     */
+    void edit(NoticeEditParam noticeEditParam);
+
+    /**
+     * 删除notice
+     *
+     * @author pans
+     * @date  2025/07/25 16:17
+     */
+    void delete(List<NoticeIdParam> noticeIdParamList);
+
+    /**
+     * 获取notice详情
+     *
+     * @author pans
+     * @date  2025/07/25 16:17
+     */
+    NoticeVo detail(NoticeIdParam noticeIdParam);
+
+    /**
+     * 获取notice详情
+     *
+     * @author pans
+     * @date  2025/07/25 16:17
+     **/
+    Notice queryEntity(Long id);
+
+    void publish(@Valid NoticeIdParam noticeIdParam);
+
+    void cancel(@Valid NoticeIdParam noticeIdParam);
+}

+ 0 - 26
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/impl/NoticeService.java

@@ -1,26 +0,0 @@
-package vip.xiaonuo.disk.service.impl;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import vip.xiaonuo.disk.service.INoticeService;
-import vip.xiaonuo.disk.domain.Notice;
-import vip.xiaonuo.disk.dto.notice.NoticeListDTO;
-import vip.xiaonuo.disk.mapper.NoticeMapper;
-import org.springframework.stereotype.Service;
-
-import javax.annotation.Resource;
-
-
-@Service
-public class NoticeService extends ServiceImpl<NoticeMapper, Notice> implements INoticeService {
-    @Resource
-    NoticeMapper noticeMapper;
-
-
-    @Override
-    public IPage<Notice> selectUserPage(NoticeListDTO noticeListDTO) {
-        Page<Notice> page = new Page<>(noticeListDTO.getPage(), noticeListDTO.getPageSize());
-        return noticeMapper.selectPageVo(page, noticeListDTO);
-    }
-}

+ 109 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/impl/NoticeServiceImpl.java

@@ -0,0 +1,109 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.disk.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollStreamUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import vip.xiaonuo.auth.core.util.StpLoginUserUtil;
+import vip.xiaonuo.common.exception.CommonException;
+import vip.xiaonuo.common.page.CommonPageRequest;
+import vip.xiaonuo.disk.domain.Notice;
+import vip.xiaonuo.disk.mapper.NoticeMapper;
+import vip.xiaonuo.disk.param.notice.NoticeAddParam;
+import vip.xiaonuo.disk.param.notice.NoticeEditParam;
+import vip.xiaonuo.disk.param.notice.NoticeIdParam;
+import vip.xiaonuo.disk.param.notice.NoticePageParam;
+import vip.xiaonuo.disk.service.NoticeService;
+import vip.xiaonuo.disk.vo.notice.NoticeVo;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * noticeService接口实现类
+ *
+ * @author pans
+ * @date  2025/07/25 16:17
+ **/
+@Service
+public class NoticeServiceImpl extends ServiceImpl<NoticeMapper, Notice> implements NoticeService {
+
+    @Autowired
+    private  NoticeMapper noticeMapper;
+    @Override
+    public Page<NoticeVo> page(NoticePageParam noticePageParam) {
+        return noticeMapper.page(CommonPageRequest.defaultPage(), noticePageParam);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void add(NoticeAddParam noticeAddParam) {
+        Notice notice = BeanUtil.toBean(noticeAddParam, Notice.class);
+        notice.setNoticeStatus(0);
+        notice.setCreateUserId(StpLoginUserUtil.getLoginUser().getId());
+        notice.setDeleteFlag("NOT_DELETE");
+        this.save(notice);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void edit(NoticeEditParam noticeEditParam) {
+        Notice notice = this.queryEntity(noticeEditParam.getNoticeId());
+        BeanUtil.copyProperties(noticeEditParam, notice);
+        notice.setModifyTime(new Date());
+        notice.setModifyUserId(StpLoginUserUtil.getLoginUser().getId());
+        this.updateById(notice);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void delete(List<NoticeIdParam> noticeIdParamList) {
+        // 执行逻辑删除
+        List<Long> noticeIdList = CollStreamUtil.toList(noticeIdParamList, NoticeIdParam::getNoticeId);
+        this.lambdaUpdate()
+                .in(Notice::getNoticeId, noticeIdList)
+                .set(Notice::getDeleteFlag, "DELETED")
+                .update();
+    }
+
+    @Override
+    public NoticeVo detail(NoticeIdParam noticeIdParam) {
+        return noticeMapper.detail(noticeIdParam.getNoticeId());
+    }
+
+    @Override
+    public Notice queryEntity(Long id) {
+        Notice notice = this.getById(id);
+        if(ObjectUtil.isEmpty(notice)) {
+            throw new CommonException("notice不存在,id值为:{}", id);
+        }
+        return notice;
+    }
+
+    @Override
+    public void publish(NoticeIdParam noticeIdParam) {
+         noticeMapper.publish(noticeIdParam);
+    }
+
+    @Override
+    public void cancel(NoticeIdParam noticeIdParam) {
+         noticeMapper.cancel(noticeIdParam);
+    }
+
+}

+ 87 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/vo/notice/NoticeVo.java

@@ -0,0 +1,87 @@
+package vip.xiaonuo.disk.vo.notice;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+@Getter
+@Setter
+public class NoticeVo {
+    /** NOTICE_ID */
+    @TableId
+    @ApiModelProperty(value = "NOTICE_ID", position = 1)
+    private Long noticeId;
+
+    /** html内容 */
+    @ApiModelProperty(value = "html内容", position = 2)
+    private String content;
+
+    /** 创建时间 */
+    @ApiModelProperty(value = "创建时间", position = 3)
+    @TableField(fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime;
+
+    /** 创建用户id */
+    @ApiModelProperty(value = "创建用户id", position = 4)
+    private Long createUserId;
+
+    /** 是否长期有效(0-否,1-是) */
+    @ApiModelProperty(value = "是否长期有效(0-否,1-是)", position = 5)
+    private Integer isLongValidData;
+
+    /** markdown原文 */
+    @ApiModelProperty(value = "markdown原文", position = 6)
+    private String markdownContent;
+
+    /** 修改时间 */
+    @ApiModelProperty(value = "修改时间", position = 7)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date modifyTime;
+
+    /** 修改用户id */
+    @ApiModelProperty(value = "修改用户id", position = 8)
+    private Long modifyUserId;
+
+    /** 平台(1-课程,2-考试,3-网盘,4-股票) */
+    @ApiModelProperty(value = "平台(1-课程,2-考试,3-网盘,4-股票)", position = 9)
+    private Integer platform;
+
+    /** 标题 */
+    @ApiModelProperty(value = "标题", position = 10)
+    private String title;
+
+    /** 发布人 */
+    @ApiModelProperty(value = "发布人", position = 11)
+    private String publishUser;
+
+    @ApiModelProperty(value = "发布人姓名", position = 11)
+    private String publishUserName;
+
+    /** 开始时间 */
+    @ApiModelProperty(value = "开始时间", position = 12)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date startTime;
+
+    /** 结束时间 */
+    @ApiModelProperty(value = "结束时间", position = 13)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date endTime;
+
+    /** 发布时间 */
+    @ApiModelProperty(value = "发布时间", position = 14)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date publishTime;
+
+    /** 状态(0未发布  1已发布) */
+    @ApiModelProperty(value = "状态(0未发布  1已发布)", position = 15)
+    private Integer noticeStatus;
+
+
+}