diff --git a/tongran-modules/tongran-system/src/main/java/com/tongran/system/controller/SysNoticeController.java b/tongran-modules/tongran-system/src/main/java/com/tongran/system/controller/SysNoticeController.java index 0e84887..b19c421 100644 --- a/tongran-modules/tongran-system/src/main/java/com/tongran/system/controller/SysNoticeController.java +++ b/tongran-modules/tongran-system/src/main/java/com/tongran/system/controller/SysNoticeController.java @@ -1,18 +1,8 @@ package com.tongran.system.controller; -import java.util.List; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; import com.tongran.common.core.web.controller.BaseController; import com.tongran.common.core.web.domain.AjaxResult; +import com.tongran.common.core.web.page.PageDomain; import com.tongran.common.core.web.page.TableDataInfo; import com.tongran.common.log.annotation.Log; import com.tongran.common.log.enums.BusinessType; @@ -20,6 +10,11 @@ import com.tongran.common.security.annotation.RequiresPermissions; import com.tongran.common.security.utils.SecurityUtils; import com.tongran.system.domain.SysNotice; import com.tongran.system.service.ISysNoticeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; /** * 公告 信息操作处理 @@ -37,10 +32,13 @@ public class SysNoticeController extends BaseController * 获取通知公告列表 */ @RequiresPermissions("system:notice:list") - @GetMapping("/list") - public TableDataInfo list(SysNotice notice) + @PostMapping("/list") + public TableDataInfo list(@RequestBody SysNotice notice) { - startPage(); + PageDomain pageDomain = new PageDomain(); + pageDomain.setPageNum(notice.getPageNum()); + pageDomain.setPageSize(notice.getPageSize()); + startPage(pageDomain); List list = noticeService.selectNoticeList(notice); return getDataTable(list); } diff --git a/tongran-modules/tongran-system/src/main/java/com/tongran/system/controller/SysNoticeReadController.java b/tongran-modules/tongran-system/src/main/java/com/tongran/system/controller/SysNoticeReadController.java new file mode 100644 index 0000000..7cfbd14 --- /dev/null +++ b/tongran-modules/tongran-system/src/main/java/com/tongran/system/controller/SysNoticeReadController.java @@ -0,0 +1,63 @@ +package com.tongran.system.controller; + +import com.tongran.common.core.web.controller.BaseController; +import com.tongran.common.core.web.domain.AjaxResult; +import com.tongran.common.log.annotation.Log; +import com.tongran.common.log.enums.BusinessType; +import com.tongran.common.security.annotation.RequiresPermissions; +import com.tongran.system.domain.SysNoticeRead; +import com.tongran.system.service.ISysNoticeReadService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 公告阅读记录Controller + * + * @author tongran + * @date 2026-02-12 + */ +@RestController +@RequestMapping("/sysNoticeRead") +public class SysNoticeReadController extends BaseController +{ + @Autowired + private ISysNoticeReadService sysNoticeReadService; + + /** + * 查询公告阅读记录列表 + */ + @RequiresPermissions("system:sysNoticeRead:list") + @PostMapping("/list") + public AjaxResult list(@RequestBody SysNoticeRead sysNoticeRead) + { + List list = sysNoticeReadService.selectSysNoticeReadList(sysNoticeRead); + return success(list); + } + + + + /** + * 新增公告阅读记录 + */ + @RequiresPermissions("system:sysNoticeRead:add") + @Log(title = "公告阅读记录", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody SysNoticeRead sysNoticeRead) + { + return toAjax(sysNoticeReadService.insertSysNoticeRead(sysNoticeRead)); + } + + + /** + * 删除公告阅读记录 + */ + @RequiresPermissions("system:sysNoticeRead:remove") + @Log(title = "公告阅读记录", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable Long[] ids) + { + return toAjax(sysNoticeReadService.deleteSysNoticeReadByIds(ids)); + } +} diff --git a/tongran-modules/tongran-system/src/main/java/com/tongran/system/domain/SysNotice.java b/tongran-modules/tongran-system/src/main/java/com/tongran/system/domain/SysNotice.java index 5390707..4e55ab3 100644 --- a/tongran-modules/tongran-system/src/main/java/com/tongran/system/domain/SysNotice.java +++ b/tongran-modules/tongran-system/src/main/java/com/tongran/system/domain/SysNotice.java @@ -1,17 +1,17 @@ package com.tongran.system.domain; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.Size; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; +import com.fasterxml.jackson.annotation.JsonFormat; import com.tongran.common.core.web.domain.BaseEntity; -import com.tongran.common.core.xss.Xss; +import lombok.Data; + +import java.util.Date; /** * 通知公告表 sys_notice * * @author tongran */ +@Data public class SysNotice extends BaseEntity { private static final long serialVersionUID = 1L; @@ -30,73 +30,10 @@ public class SysNotice extends BaseEntity /** 公告状态(0正常 1关闭) */ private String status; + /** 发布状态(0 未发布,1 已发布 ) */ + private String releaseStatus; + /** 发布时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date releaseTime; - public Long getNoticeId() - { - return noticeId; - } - - public void setNoticeId(Long noticeId) - { - this.noticeId = noticeId; - } - - public void setNoticeTitle(String noticeTitle) - { - this.noticeTitle = noticeTitle; - } - - @Xss(message = "公告标题不能包含脚本字符") - @NotBlank(message = "公告标题不能为空") - @Size(min = 0, max = 50, message = "公告标题不能超过50个字符") - public String getNoticeTitle() - { - return noticeTitle; - } - - public void setNoticeType(String noticeType) - { - this.noticeType = noticeType; - } - - public String getNoticeType() - { - return noticeType; - } - - public void setNoticeContent(String noticeContent) - { - this.noticeContent = noticeContent; - } - - public String getNoticeContent() - { - return noticeContent; - } - - public void setStatus(String status) - { - this.status = status; - } - - public String getStatus() - { - return status; - } - - @Override - public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("noticeId", getNoticeId()) - .append("noticeTitle", getNoticeTitle()) - .append("noticeType", getNoticeType()) - .append("noticeContent", getNoticeContent()) - .append("status", getStatus()) - .append("createBy", getCreateBy()) - .append("createTime", getCreateTime()) - .append("updateBy", getUpdateBy()) - .append("updateTime", getUpdateTime()) - .append("remark", getRemark()) - .toString(); - } } diff --git a/tongran-modules/tongran-system/src/main/java/com/tongran/system/domain/SysNoticeRead.java b/tongran-modules/tongran-system/src/main/java/com/tongran/system/domain/SysNoticeRead.java new file mode 100644 index 0000000..b4a9a12 --- /dev/null +++ b/tongran-modules/tongran-system/src/main/java/com/tongran/system/domain/SysNoticeRead.java @@ -0,0 +1,47 @@ +package com.tongran.system.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.tongran.common.core.annotation.Excel; +import com.tongran.common.core.web.domain.BaseEntity; +import lombok.Data; + +import java.util.Date; + +/** + * 公告阅读记录对象 sys_notice_read + * + * @author tongran + * @date 2026-02-12 + */ +@Data +public class SysNoticeRead extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 记录ID */ + private Long id; + + /** 公告ID */ + @Excel(name = "公告ID") + private Long noticeId; + + /** 用户ID */ + @Excel(name = "用户ID") + private Long userId; + + /** 用户昵称 */ + @Excel(name = "用户昵称") + private String userName; + + /** 已读状态(0未读 1已读) */ + @Excel(name = "已读状态", readConverterExp = "0=未读,1=已读") + private String readStatus; + + /** 阅读时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "阅读时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date readTime; + /** 发布状态(0 未发布,1 已发布) */ + @Excel(name = "发布状态(0 未发布,1 已发布)") + private String releaseStatus; +} diff --git a/tongran-modules/tongran-system/src/main/java/com/tongran/system/mapper/SysNoticeReadMapper.java b/tongran-modules/tongran-system/src/main/java/com/tongran/system/mapper/SysNoticeReadMapper.java new file mode 100644 index 0000000..3224fd4 --- /dev/null +++ b/tongran-modules/tongran-system/src/main/java/com/tongran/system/mapper/SysNoticeReadMapper.java @@ -0,0 +1,61 @@ +package com.tongran.system.mapper; + +import java.util.List; +import com.tongran.system.domain.SysNoticeRead; + +/** + * 公告阅读记录Mapper接口 + * + * @author tongran + * @date 2026-02-12 + */ +public interface SysNoticeReadMapper +{ + /** + * 查询公告阅读记录 + * + * @param id 公告阅读记录主键 + * @return 公告阅读记录 + */ + public SysNoticeRead selectSysNoticeReadById(Long id); + + /** + * 查询公告阅读记录列表 + * + * @param sysNoticeRead 公告阅读记录 + * @return 公告阅读记录集合 + */ + public List selectSysNoticeReadList(SysNoticeRead sysNoticeRead); + + /** + * 新增公告阅读记录 + * + * @param sysNoticeRead 公告阅读记录 + * @return 结果 + */ + public int insertSysNoticeRead(SysNoticeRead sysNoticeRead); + + /** + * 修改公告阅读记录 + * + * @param sysNoticeRead 公告阅读记录 + * @return 结果 + */ + public int updateSysNoticeRead(SysNoticeRead sysNoticeRead); + + /** + * 删除公告阅读记录 + * + * @param id 公告阅读记录主键 + * @return 结果 + */ + public int deleteSysNoticeReadById(Long id); + + /** + * 批量删除公告阅读记录 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteSysNoticeReadByIds(Long[] ids); +} diff --git a/tongran-modules/tongran-system/src/main/java/com/tongran/system/service/ISysNoticeReadService.java b/tongran-modules/tongran-system/src/main/java/com/tongran/system/service/ISysNoticeReadService.java new file mode 100644 index 0000000..beb9f31 --- /dev/null +++ b/tongran-modules/tongran-system/src/main/java/com/tongran/system/service/ISysNoticeReadService.java @@ -0,0 +1,61 @@ +package com.tongran.system.service; + +import java.util.List; +import com.tongran.system.domain.SysNoticeRead; + +/** + * 公告阅读记录Service接口 + * + * @author tongran + * @date 2026-02-12 + */ +public interface ISysNoticeReadService +{ + /** + * 查询公告阅读记录 + * + * @param id 公告阅读记录主键 + * @return 公告阅读记录 + */ + public SysNoticeRead selectSysNoticeReadById(Long id); + + /** + * 查询公告阅读记录列表 + * + * @param sysNoticeRead 公告阅读记录 + * @return 公告阅读记录集合 + */ + public List selectSysNoticeReadList(SysNoticeRead sysNoticeRead); + + /** + * 新增公告阅读记录 + * + * @param sysNoticeRead 公告阅读记录 + * @return 结果 + */ + public int insertSysNoticeRead(SysNoticeRead sysNoticeRead); + + /** + * 修改公告阅读记录 + * + * @param sysNoticeRead 公告阅读记录 + * @return 结果 + */ + public int updateSysNoticeRead(SysNoticeRead sysNoticeRead); + + /** + * 批量删除公告阅读记录 + * + * @param ids 需要删除的公告阅读记录主键集合 + * @return 结果 + */ + public int deleteSysNoticeReadByIds(Long[] ids); + + /** + * 删除公告阅读记录信息 + * + * @param id 公告阅读记录主键 + * @return 结果 + */ + public int deleteSysNoticeReadById(Long id); +} diff --git a/tongran-modules/tongran-system/src/main/java/com/tongran/system/service/ISysNoticeService.java b/tongran-modules/tongran-system/src/main/java/com/tongran/system/service/ISysNoticeService.java index cda3fd3..dc4a963 100644 --- a/tongran-modules/tongran-system/src/main/java/com/tongran/system/service/ISysNoticeService.java +++ b/tongran-modules/tongran-system/src/main/java/com/tongran/system/service/ISysNoticeService.java @@ -1,8 +1,9 @@ package com.tongran.system.service; -import java.util.List; import com.tongran.system.domain.SysNotice; +import java.util.List; + /** * 公告 服务层 * @@ -57,4 +58,11 @@ public interface ISysNoticeService * @return 结果 */ public int deleteNoticeByIds(Long[] noticeIds); + /** + * 新增公告 + * + * @param notice 公告信息 + * @return 结果 + */ + public int addNotice(SysNotice notice); } diff --git a/tongran-modules/tongran-system/src/main/java/com/tongran/system/service/impl/SysNoticeReadServiceImpl.java b/tongran-modules/tongran-system/src/main/java/com/tongran/system/service/impl/SysNoticeReadServiceImpl.java new file mode 100644 index 0000000..d3eab0e --- /dev/null +++ b/tongran-modules/tongran-system/src/main/java/com/tongran/system/service/impl/SysNoticeReadServiceImpl.java @@ -0,0 +1,96 @@ +package com.tongran.system.service.impl; + +import java.util.List; +import com.tongran.common.core.utils.DateUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.tongran.system.mapper.SysNoticeReadMapper; +import com.tongran.system.domain.SysNoticeRead; +import com.tongran.system.service.ISysNoticeReadService; + +/** + * 公告阅读记录Service业务层处理 + * + * @author tongran + * @date 2026-02-12 + */ +@Service +public class SysNoticeReadServiceImpl implements ISysNoticeReadService +{ + @Autowired + private SysNoticeReadMapper sysNoticeReadMapper; + + /** + * 查询公告阅读记录 + * + * @param id 公告阅读记录主键 + * @return 公告阅读记录 + */ + @Override + public SysNoticeRead selectSysNoticeReadById(Long id) + { + return sysNoticeReadMapper.selectSysNoticeReadById(id); + } + + /** + * 查询公告阅读记录列表 + * + * @param sysNoticeRead 公告阅读记录 + * @return 公告阅读记录 + */ + @Override + public List selectSysNoticeReadList(SysNoticeRead sysNoticeRead) + { + return sysNoticeReadMapper.selectSysNoticeReadList(sysNoticeRead); + } + + /** + * 新增公告阅读记录 + * + * @param sysNoticeRead 公告阅读记录 + * @return 结果 + */ + @Override + public int insertSysNoticeRead(SysNoticeRead sysNoticeRead) + { + sysNoticeRead.setCreateTime(DateUtils.getNowDate()); + return sysNoticeReadMapper.insertSysNoticeRead(sysNoticeRead); + } + + /** + * 修改公告阅读记录 + * + * @param sysNoticeRead 公告阅读记录 + * @return 结果 + */ + @Override + public int updateSysNoticeRead(SysNoticeRead sysNoticeRead) + { + sysNoticeRead.setUpdateTime(DateUtils.getNowDate()); + return sysNoticeReadMapper.updateSysNoticeRead(sysNoticeRead); + } + + /** + * 批量删除公告阅读记录 + * + * @param ids 需要删除的公告阅读记录主键 + * @return 结果 + */ + @Override + public int deleteSysNoticeReadByIds(Long[] ids) + { + return sysNoticeReadMapper.deleteSysNoticeReadByIds(ids); + } + + /** + * 删除公告阅读记录信息 + * + * @param id 公告阅读记录主键 + * @return 结果 + */ + @Override + public int deleteSysNoticeReadById(Long id) + { + return sysNoticeReadMapper.deleteSysNoticeReadById(id); + } +} diff --git a/tongran-modules/tongran-system/src/main/java/com/tongran/system/service/impl/SysNoticeServiceImpl.java b/tongran-modules/tongran-system/src/main/java/com/tongran/system/service/impl/SysNoticeServiceImpl.java index bc82023..39900d3 100644 --- a/tongran-modules/tongran-system/src/main/java/com/tongran/system/service/impl/SysNoticeServiceImpl.java +++ b/tongran-modules/tongran-system/src/main/java/com/tongran/system/service/impl/SysNoticeServiceImpl.java @@ -1,11 +1,12 @@ package com.tongran.system.service.impl; -import java.util.List; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; import com.tongran.system.domain.SysNotice; import com.tongran.system.mapper.SysNoticeMapper; import com.tongran.system.service.ISysNoticeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; /** * 公告 服务层实现 @@ -89,4 +90,10 @@ public class SysNoticeServiceImpl implements ISysNoticeService { return noticeMapper.deleteNoticeByIds(noticeIds); } + + @Override + public int addNotice(SysNotice notice) { + int rows = noticeMapper.insertNotice(notice); + return 1; + } } diff --git a/tongran-modules/tongran-system/src/main/resources/mapper/system/SysNoticeMapper.xml b/tongran-modules/tongran-system/src/main/resources/mapper/system/SysNoticeMapper.xml index 8f2515f..9e6b55a 100644 --- a/tongran-modules/tongran-system/src/main/resources/mapper/system/SysNoticeMapper.xml +++ b/tongran-modules/tongran-system/src/main/resources/mapper/system/SysNoticeMapper.xml @@ -1,89 +1,108 @@ + PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + + + - + - select notice_id, notice_title, notice_type, cast(notice_content as char) as notice_content, status, create_by, create_time, update_by, update_time, remark - from sys_notice + select notice_id, notice_title, notice_type, cast(notice_content as char) as notice_content, status, release_status, release_time, create_by, create_time, update_by, update_time, remark + from sys_notice - + - + - + insert into sys_notice ( - notice_title, - notice_type, - notice_content, - status, - remark, - create_by, - create_time - )values( - #{noticeTitle}, - #{noticeType}, - #{noticeContent}, - #{status}, - #{remark}, - #{createBy}, - sysdate() - ) + notice_title, + notice_type, + notice_content, + status, + release_status, + release_time, + remark, + create_by, + create_time + )values( + #{noticeTitle}, + #{noticeType}, + #{noticeContent}, + #{status}, + #{releaseStatus}, + #{releaseTime}, + #{remark}, + #{createBy}, + sysdate() + ) - + - update sys_notice + update sys_notice notice_title = #{noticeTitle}, notice_type = #{noticeType}, notice_content = #{noticeContent}, status = #{status}, + release_status = #{releaseStatus}, + release_time = #{releaseTime}, update_by = #{updateBy}, - update_time = sysdate() + update_time = sysdate() where notice_id = #{noticeId} - + + + update sys_notice + set release_status = #{releaseStatus}, + release_time = #{releaseTime}, + update_time = sysdate() + where notice_id = #{noticeId} + + delete from sys_notice where notice_id = #{noticeId} - + - delete from sys_notice where notice_id in + delete from sys_notice where notice_id in #{noticeId} - + \ No newline at end of file diff --git a/tongran-modules/tongran-system/src/main/resources/mapper/system/SysNoticeReadMapper.xml b/tongran-modules/tongran-system/src/main/resources/mapper/system/SysNoticeReadMapper.xml new file mode 100644 index 0000000..4b98469 --- /dev/null +++ b/tongran-modules/tongran-system/src/main/resources/mapper/system/SysNoticeReadMapper.xml @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + select id, notice_id, user_id, user_name, read_status, read_time, create_time, update_time, release_status from sys_notice_read + + + + + + + + insert into sys_notice_read + + notice_id, + user_id, + user_name, + read_status, + read_time, + create_time, + update_time, + release_status, + + + #{noticeId}, + #{userId}, + #{userName}, + #{readStatus}, + #{readTime}, + #{createTime}, + #{updateTime}, + #{releaseStatus}, + + + + + update sys_notice_read + + notice_id = #{noticeId}, + user_id = #{userId}, + user_name = #{userName}, + read_status = #{readStatus}, + read_time = #{readTime}, + create_time = #{createTime}, + update_time = #{updateTime}, + release_status = #{releaseStatus}, + + where id = #{id} + + + + delete from sys_notice_read where id = #{id} + + + + delete from sys_notice_read where id in + + #{id} + + + \ No newline at end of file