From 5ccc0bf14d4e788e1cc6ed68cd39bd4e604a7e11 Mon Sep 17 00:00:00 2001 From: Saisai Liu <1374434128@qq.com> Date: Sun, 14 Apr 2024 15:51:12 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9C=80=E6=B1=824?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/AsNoticeUserController.java | 104 ++++++++++++ .../system/controller/SysDeptController.java | 10 ++ .../controller/SysNoticeController.java | 33 +++- .../com/muyu/system/domain/AsNoticeUser.java | 67 ++++++++ .../com/muyu/system/domain/SysNotice.java | 61 ++----- .../system/domain/req/AsNoticeUserReq.java | 55 +++++++ .../muyu/system/domain/req/ReadEditReq.java | 20 +++ .../domain/req/SelectAsNoticeUserReq.java | 33 ++++ .../system/domain/resp/AsNoticeUserResp.java | 30 ++++ .../system/domain/resp/SysNoticeResp.java | 89 ++++++++++ .../system/mapper/AsNoticeUserMapper.java | 64 ++++++++ .../muyu/system/mapper/SysConfigMapper.java | 1 + .../system/service/AsNoticeUserService.java | 64 ++++++++ .../muyu/system/service/SysDeptService.java | 2 + .../muyu/system/service/SysNoticeService.java | 12 +- .../service/impl/AsNoticeUserServiceImpl.java | 101 ++++++++++++ .../service/impl/SysDeptServiceImpl.java | 20 ++- .../service/impl/SysMenuServiceImpl.java | 6 +- .../service/impl/SysNoticeServiceImpl.java | 152 ++++++++++++++++-- .../mapper/system/AsNoticeUserMapper.xml | 95 +++++++++++ .../mapper/system/SysNoticeMapper.xml | 2 +- 21 files changed, 943 insertions(+), 78 deletions(-) create mode 100644 muyu-modules/muyu-system/src/main/java/com/muyu/system/controller/AsNoticeUserController.java create mode 100644 muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/AsNoticeUser.java create mode 100644 muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/req/AsNoticeUserReq.java create mode 100644 muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/req/ReadEditReq.java create mode 100644 muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/req/SelectAsNoticeUserReq.java create mode 100644 muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/resp/AsNoticeUserResp.java create mode 100644 muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/resp/SysNoticeResp.java create mode 100644 muyu-modules/muyu-system/src/main/java/com/muyu/system/mapper/AsNoticeUserMapper.java create mode 100644 muyu-modules/muyu-system/src/main/java/com/muyu/system/service/AsNoticeUserService.java create mode 100644 muyu-modules/muyu-system/src/main/java/com/muyu/system/service/impl/AsNoticeUserServiceImpl.java create mode 100644 muyu-modules/muyu-system/src/main/resources/mapper/system/AsNoticeUserMapper.xml diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/controller/AsNoticeUserController.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/controller/AsNoticeUserController.java new file mode 100644 index 0000000..dab7c8f --- /dev/null +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/controller/AsNoticeUserController.java @@ -0,0 +1,104 @@ +//package com.muyu.system.controller; +// +//import java.util.List; +//import javax.servlet.http.HttpServletResponse; +//import org.springframework.beans.factory.annotation.Autowired; +//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.muyu.common.log.annotation.Log; +//import com.muyu.common.log.enums.BusinessType; +//import com.muyu.common.security.annotation.RequiresPermissions; +//import com.muyu.system.domain.AsNoticeUser; +//import com.muyu.system.service.AsNoticeUserService; +//import com.muyu.common.core.web.controller.BaseController; +//import com.muyu.common.core.domain.Result; +//import com.muyu.common.core.utils.poi.ExcelUtil; +//import com.muyu.common.core.web.page.TableDataInfo; +// +///** +// * 通知公告人员中间Controller +// * +// * @author muyu +// * @date 2024-04-13 +// */ +//@RestController +//@RequestMapping("/user") +//public class AsNoticeUserController extends BaseController +//{ +// @Autowired +// private AsNoticeUserService asNoticeUserService; +// +// /** +// * 查询通知公告人员中间列表 +// */ +// @RequiresPermissions("system:user:list") +// @GetMapping("/list") +// public Result> list(AsNoticeUser asNoticeUser) +// { +// startPage(); +// List list = asNoticeUserService.selectAsNoticeUserList(asNoticeUser); +// return getDataTable(list); +// } +// +// /** +// * 导出通知公告人员中间列表 +// */ +// @RequiresPermissions("system:user:export") +// @Log(title = "通知公告人员中间", businessType = BusinessType.EXPORT) +// @PostMapping("/export") +// public void export(HttpServletResponse response, AsNoticeUser asNoticeUser) +// { +// List list = asNoticeUserService.selectAsNoticeUserList(asNoticeUser); +// ExcelUtil util = new ExcelUtil(AsNoticeUser.class); +// util.exportExcel(response, list, "通知公告人员中间数据"); +// } +// +// /** +// * 获取通知公告人员中间详细信息 +// */ +// @RequiresPermissions("system:user:query") +// @GetMapping(value = "/{id}") +// public Result getInfo(@PathVariable("id") Long id) +// { +// return success(asNoticeUserService.selectAsNoticeUserById(id)); +// } +// +// /** +// * 新增通知公告人员中间 +// */ +// @RequiresPermissions("system:user:add") +// @Log(title = "通知公告人员中间", businessType = BusinessType.INSERT) +// @PostMapping +// public Result add(@RequestBody AsNoticeUser asNoticeUser) +// { +// return toAjax(asNoticeUserService.insertAsNoticeUser(asNoticeUser)); +// } +// +// /** +// * 修改通知公告人员中间 +// */ +// @RequiresPermissions("system:user:edit") +// @Log(title = "通知公告人员中间", businessType = BusinessType.UPDATE) +// @PutMapping +// public Result edit(@RequestBody AsNoticeUser asNoticeUser) +// { +// return toAjax(asNoticeUserService.updateAsNoticeUser(asNoticeUser)); +// } +// +// /** +// * 删除通知公告人员中间 +// */ +// @RequiresPermissions("system:user:remove") +// @Log(title = "通知公告人员中间", businessType = BusinessType.DELETE) +// @DeleteMapping("/{ids}") +// public Result remove(@PathVariable Long[] ids) +// { +// return toAjax(asNoticeUserService.deleteAsNoticeUserByIds(ids)); +// } +//} diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/controller/SysDeptController.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/controller/SysDeptController.java index f1ed572..1cf3409 100644 --- a/muyu-modules/muyu-system/src/main/java/com/muyu/system/controller/SysDeptController.java +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/controller/SysDeptController.java @@ -39,6 +39,16 @@ public class SysDeptController extends BaseController { return success(depts); } + /** + * 获取部门列表(children) + */ + @RequiresPermissions("system:dept:list") + @GetMapping("/listDeptFind") + public Result listDeptFind () { + return success(deptService.listDeptFind()); + } + + /** * 查询部门列表(排除节点) */ diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/controller/SysNoticeController.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/controller/SysNoticeController.java index 9706350..212eafb 100644 --- a/muyu-modules/muyu-system/src/main/java/com/muyu/system/controller/SysNoticeController.java +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/controller/SysNoticeController.java @@ -7,7 +7,13 @@ import com.muyu.common.log.annotation.Log; import com.muyu.common.log.enums.BusinessType; import com.muyu.common.security.annotation.RequiresPermissions; import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.system.domain.AsNoticeUser; import com.muyu.system.domain.SysNotice; +import com.muyu.system.domain.req.AsNoticeUserReq; +import com.muyu.system.domain.req.ReadEditReq; +import com.muyu.system.domain.req.SelectAsNoticeUserReq; +import com.muyu.system.domain.resp.AsNoticeUserResp; +import com.muyu.system.domain.resp.SysNoticeResp; import com.muyu.system.service.SysNoticeService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; @@ -31,9 +37,9 @@ public class SysNoticeController extends BaseController { */ @RequiresPermissions("system:notice:list") @GetMapping("/list") - public Result> list (SysNotice notice) { + public Result> list (SysNotice notice) { startPage(); - List list = noticeService.selectNoticeList(notice); + List list = noticeService.selectNoticeList(notice); return getDataTable(list); } @@ -52,9 +58,26 @@ public class SysNoticeController extends BaseController { @RequiresPermissions("system:notice:add") @Log(title = "通知公告", businessType = BusinessType.INSERT) @PostMapping - public Result add (@Validated @RequestBody SysNotice notice) { - notice.setCreateBy(SecurityUtils.getUsername()); - return toAjax(noticeService.insertNotice(notice)); + public Result add (@Validated @RequestBody AsNoticeUserReq req) { + if (req.getInDateTime() ==null || req.getSelectedOptions().isEmpty() || req.getUserCheckedList().isEmpty()){ + return Result.error("请检查有效日期,选中接收人,不能为空"); + } + return toAjax(noticeService.insertNotice(req)); + } + + @Log(title = "修改已读状态", businessType = BusinessType.UPDATE) + @GetMapping("readEdit/{asNoticeId}") + public Result readEdit(@PathVariable Long asNoticeId){ + return toAjax(noticeService.updateAsNoticeUser(asNoticeId)); + } + + /** + * 用户获取自己所有的通知和公告 + * @return + */ + @PostMapping("noticeByUserId") + public Result> noticeByUserId(@RequestBody SelectAsNoticeUserReq req){ + return Result.success(noticeService.noticeByUserId(req)); } /** diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/AsNoticeUser.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/AsNoticeUser.java new file mode 100644 index 0000000..4fed1a1 --- /dev/null +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/AsNoticeUser.java @@ -0,0 +1,67 @@ +package com.muyu.system.domain; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.muyu.system.domain.req.AsNoticeUserReq; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.muyu.common.core.annotation.Excel; +import com.muyu.common.core.web.domain.BaseEntity; + +/** + * 通知公告人员中间对象 as_notice_user + * + * @author muyu + * @date 2024-04-13 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class AsNoticeUser extends BaseEntity +{ + private static final long serialVersionUID = 0L; + + /** 主键 */ + private Long id; + + /** 通知id */ + @Excel(name = "通知id") + private Long noticeId; + + /** 人员id */ + @Excel(name = "人员id") + private Long userId; + + /** 已读状态,'Y'已读,'N'未读 */ + @Excel(name = "已读状态,'Y'已读,'N'未读") + private String readStates; + + /** 过期时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "过期时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date endTime; + + /** 过期状态'N'未过期,'Y'已过期 */ + @Excel(name = "过期状态'N'未过期,'Y'已过期") + private String outStates; + +// public static AsNoticeUser saveBuilder(AsNoticeUserReq req) { +// return AsNoticeUser.builder() +// .userId() +// .outStates(req.getStatus()) +// .endTime(req.getInDateTime()) +// .readStates("N") +// .outStates("N") +// .createBy(req.getCreateBy()) +// .build(); +// } + + +} diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/SysNotice.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/SysNotice.java index 69675c1..da01c1b 100644 --- a/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/SysNotice.java +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/SysNotice.java @@ -2,6 +2,7 @@ package com.muyu.system.domain; import com.muyu.common.core.web.domain.BaseEntity; import com.muyu.common.core.xss.Xss; +import com.muyu.system.domain.req.AsNoticeUserReq; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; @@ -12,6 +13,8 @@ import org.apache.commons.lang3.builder.ToStringStyle; import javax.validation.constraints.NotBlank; import javax.validation.constraints.Size; +import java.util.Date; +import java.util.function.Supplier; /** * 通知公告表 sys_notice @@ -51,13 +54,18 @@ public class SysNotice extends BaseEntity { */ private String status; - public Long getNoticeId () { - return noticeId; + public static SysNotice saveBuilder(AsNoticeUserReq req, Supplier user) { + return SysNotice.builder() + .noticeContent(req.getNoticeContent()) + .noticeTitle(req.getNoticeTitle()) + .noticeType(req.getNoticeType()) + .status(req.getStatus()) + .createBy(user.get()) + .createTime(new Date()) + .build(); + } - public void setNoticeId (Long noticeId) { - this.noticeId = noticeId; - } @Xss(message = "公告标题不能包含脚本字符") @NotBlank(message = "公告标题不能为空") @@ -66,47 +74,4 @@ public class SysNotice extends BaseEntity { return noticeTitle; } - public void setNoticeTitle (String noticeTitle) { - this.noticeTitle = noticeTitle; - } - - public String getNoticeType () { - return noticeType; - } - - public void setNoticeType (String noticeType) { - this.noticeType = noticeType; - } - - public String getNoticeContent () { - return noticeContent; - } - - public void setNoticeContent (String noticeContent) { - this.noticeContent = noticeContent; - } - - public String getStatus () { - return status; - } - - public void setStatus (String status) { - this.status = 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/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/req/AsNoticeUserReq.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/req/AsNoticeUserReq.java new file mode 100644 index 0000000..5c24ad9 --- /dev/null +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/req/AsNoticeUserReq.java @@ -0,0 +1,55 @@ +package com.muyu.system.domain.req; + +import com.muyu.common.core.web.domain.BaseEntity; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.util.Date; +import java.util.List; + +/** + * @ClassName AsNoticeUserReq + * @Description 描述 + * @Author SaiSai.Liu + * @Date 2024/4/13 15:05 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@SuperBuilder +public class AsNoticeUserReq extends BaseEntity { + /** + * 公告id + */ + private Long noticeId; + /** + * 公告标题 + */ + private String noticeTitle; + /** + * 公告内容 + */ + private String noticeContent; + /** + * 公告有效日期 + */ + private Date inDateTime; + /** + * 公告类型 + */ + private String noticeType; + /** + * 选择部门 + */ + private List selectedOptions; + /** + * 特定接收人 + */ + private List userCheckedList; + /** + * 公告状态 + */ + private String status; +} diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/req/ReadEditReq.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/req/ReadEditReq.java new file mode 100644 index 0000000..3cb8519 --- /dev/null +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/req/ReadEditReq.java @@ -0,0 +1,20 @@ +package com.muyu.system.domain.req; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +/** + * @ClassName ReadEditReq + * @Description 描述 + * @Author SaiSai.Liu + * @Date 2024/4/14 9:14 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@SuperBuilder +public class ReadEditReq { + private Long notice_id; +} diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/req/SelectAsNoticeUserReq.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/req/SelectAsNoticeUserReq.java new file mode 100644 index 0000000..cafeb21 --- /dev/null +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/req/SelectAsNoticeUserReq.java @@ -0,0 +1,33 @@ +package com.muyu.system.domain.req; + +import com.muyu.common.core.web.domain.BaseEntity; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.util.Date; +import java.util.List; + +/** + * @ClassName AsNoticeUserReq + * @Description 描述 + * @Author SaiSai.Liu + * @Date 2024/4/13 15:05 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@SuperBuilder +public class SelectAsNoticeUserReq extends BaseEntity { + + /** + * 读取状态 + */ + private String readStates; + /** + * 公告类型 + */ + private String noticeType; + +} diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/resp/AsNoticeUserResp.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/resp/AsNoticeUserResp.java new file mode 100644 index 0000000..5f54e3f --- /dev/null +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/resp/AsNoticeUserResp.java @@ -0,0 +1,30 @@ +package com.muyu.system.domain.resp; + +import com.muyu.system.domain.SysNotice; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.util.Date; + +/** + * @ClassName AsNoticeUserResp + * @Description 描述 + * @Author SaiSai.Liu + * @Date 2024/4/14 9:22 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@SuperBuilder +public class AsNoticeUserResp { + + private Long asNoticeId; + private String createBy; + private String noticeType; + private String readStates; + private Date createTime; + private Date endTime; + private SysNotice sysNotice; +} diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/resp/SysNoticeResp.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/resp/SysNoticeResp.java new file mode 100644 index 0000000..6dae2de --- /dev/null +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/resp/SysNoticeResp.java @@ -0,0 +1,89 @@ +package com.muyu.system.domain.resp; + +import com.muyu.common.core.web.domain.BaseEntity; +import com.muyu.common.core.xss.Xss; +import com.muyu.system.domain.SysNotice; +import com.muyu.system.domain.req.AsNoticeUserReq; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; +import net.bytebuddy.implementation.bind.annotation.Super; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; +import java.util.Date; +import java.util.List; +import java.util.function.Supplier; + +/** + * @ClassName SysNoticeResp + * @Description 描述 + * @Author SaiSai.Liu + * @Date 2024/4/14 14:21 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@SuperBuilder +public class SysNoticeResp extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** + * 公告ID + */ + private Long noticeId; + + /** + * 公告标题 + */ + private String noticeTitle; + + /** + * 公告类型(1通知 2公告) + */ + private String noticeType; + + /** + * 公告内容 + */ + private String noticeContent; + + /** + * 有效日期 + */ + private Date endTime; + + /** + * 公告状态(0正常 1关闭) + */ + private String status; + + /** + * 总通知数量 + */ + private Long num; + + /** + * 已读数量 + */ + private Long readNum; + + /** + * 未读数量 + */ + private Long unReadNum; + + public static SysNoticeResp saveBuilder(SysNotice req){ + return SysNoticeResp.builder() + .noticeId(req.getNoticeId()) + .noticeContent(req.getNoticeContent()) + .noticeTitle(req.getNoticeTitle()) + .noticeType(req.getNoticeType()) + .status(req.getStatus()) + .createBy(req.getCreateBy()) + .createTime(req.getCreateTime()) + .build(); + } + +} diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/mapper/AsNoticeUserMapper.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/mapper/AsNoticeUserMapper.java new file mode 100644 index 0000000..9059b7e --- /dev/null +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/mapper/AsNoticeUserMapper.java @@ -0,0 +1,64 @@ +package com.muyu.system.mapper; + +import java.util.List; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.muyu.common.system.domain.SysDept; +import com.muyu.system.domain.AsNoticeUser; + +/** + * 通知公告人员中间Mapper接口 + * + * @author muyu + * @date 2024-04-13 + */ +public interface AsNoticeUserMapper extends BaseMapper +{ + /** + * 查询通知公告人员中间 + * + * @param id 通知公告人员中间主键 + * @return 通知公告人员中间 + */ + public AsNoticeUser selectAsNoticeUserById(Long id); + + /** + * 查询通知公告人员中间列表 + * + * @param asNoticeUser 通知公告人员中间 + * @return 通知公告人员中间集合 + */ + public List selectAsNoticeUserList(AsNoticeUser asNoticeUser); + + /** + * 新增通知公告人员中间 + * + * @param asNoticeUser 通知公告人员中间 + * @return 结果 + */ + public int insertAsNoticeUser(AsNoticeUser asNoticeUser); + + /** + * 修改通知公告人员中间 + * + * @param asNoticeUser 通知公告人员中间 + * @return 结果 + */ + public int updateAsNoticeUser(AsNoticeUser asNoticeUser); + + /** + * 删除通知公告人员中间 + * + * @param id 通知公告人员中间主键 + * @return 结果 + */ + public int deleteAsNoticeUserById(Long id); + + /** + * 批量删除通知公告人员中间 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteAsNoticeUserByIds(Long[] ids); +} diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/mapper/SysConfigMapper.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/mapper/SysConfigMapper.java index ced239a..2fae7b5 100644 --- a/muyu-modules/muyu-system/src/main/java/com/muyu/system/mapper/SysConfigMapper.java +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/mapper/SysConfigMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.muyu.system.domain.SysConfig; /** + * 系统配置 数据层 * @author DongZl * @description: 配置mybatis配置 * @Date 2023-11-13 上午 10:05 diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/AsNoticeUserService.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/AsNoticeUserService.java new file mode 100644 index 0000000..40974e2 --- /dev/null +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/AsNoticeUserService.java @@ -0,0 +1,64 @@ +package com.muyu.system.service; + +import java.util.List; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.common.system.domain.SysDept; +import com.muyu.system.domain.AsNoticeUser; + +/** + * 通知公告人员中间Service接口 + * + * @author muyu + * @date 2024-04-13 + */ +public interface AsNoticeUserService extends IService +{ + /** + * 查询通知公告人员中间 + * + * @param id 通知公告人员中间主键 + * @return 通知公告人员中间 + */ + public AsNoticeUser selectAsNoticeUserById(Long id); + + /** + * 查询通知公告人员中间列表 + * + * @param asNoticeUser 通知公告人员中间 + * @return 通知公告人员中间集合 + */ + public List selectAsNoticeUserList(AsNoticeUser asNoticeUser); + + /** + * 新增通知公告人员中间 + * + * @param asNoticeUser 通知公告人员中间 + * @return 结果 + */ + public int insertAsNoticeUser(AsNoticeUser asNoticeUser); + + /** + * 修改通知公告人员中间 + * + * @param asNoticeUser 通知公告人员中间 + * @return 结果 + */ + public int updateAsNoticeUser(AsNoticeUser asNoticeUser); + + /** + * 批量删除通知公告人员中间 + * + * @param ids 需要删除的通知公告人员中间主键集合 + * @return 结果 + */ + public int deleteAsNoticeUserByIds(Long[] ids); + + /** + * 删除通知公告人员中间信息 + * + * @param id 通知公告人员中间主键 + * @return 结果 + */ + public int deleteAsNoticeUserById(Long id); +} diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/SysDeptService.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/SysDeptService.java index 140cf91..194f5c6 100644 --- a/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/SysDeptService.java +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/SysDeptService.java @@ -135,4 +135,6 @@ public interface SysDeptService extends IService { * @return 结果 */ public int deleteDeptById (Long deptId); + + List listDeptFind(); } diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/SysNoticeService.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/SysNoticeService.java index a1afe02..6a3d17d 100644 --- a/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/SysNoticeService.java +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/SysNoticeService.java @@ -2,6 +2,10 @@ package com.muyu.system.service; import com.baomidou.mybatisplus.extension.service.IService; import com.muyu.system.domain.SysNotice; +import com.muyu.system.domain.req.AsNoticeUserReq; +import com.muyu.system.domain.req.SelectAsNoticeUserReq; +import com.muyu.system.domain.resp.AsNoticeUserResp; +import com.muyu.system.domain.resp.SysNoticeResp; import java.util.List; @@ -27,7 +31,7 @@ public interface SysNoticeService extends IService { * * @return 公告集合 */ - public List selectNoticeList (SysNotice notice); + public List selectNoticeList (SysNotice notice); /** * 新增公告 @@ -36,7 +40,7 @@ public interface SysNoticeService extends IService { * * @return 结果 */ - public int insertNotice (SysNotice notice); + public int insertNotice (AsNoticeUserReq notice); /** * 修改公告 @@ -64,4 +68,8 @@ public interface SysNoticeService extends IService { * @return 结果 */ public int deleteNoticeByIds (Long[] noticeIds); + + public List noticeByUserId(SelectAsNoticeUserReq req); + + int updateAsNoticeUser(Long asNoticeId); } diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/impl/AsNoticeUserServiceImpl.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/impl/AsNoticeUserServiceImpl.java new file mode 100644 index 0000000..34ca9c4 --- /dev/null +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/impl/AsNoticeUserServiceImpl.java @@ -0,0 +1,101 @@ +package com.muyu.system.service.impl; + +import java.util.List; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.common.core.utils.DateUtils; +import com.muyu.common.system.domain.SysDept; +import com.muyu.system.mapper.SysDeptMapper; +import com.muyu.system.service.SysDeptService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.muyu.system.mapper.AsNoticeUserMapper; +import com.muyu.system.domain.AsNoticeUser; +import com.muyu.system.service.AsNoticeUserService; + +/** + * 通知公告人员中间Service业务层处理 + * + * @author muyu + * @date 2024-04-13 + */ +@Service +public class AsNoticeUserServiceImpl extends ServiceImpl implements AsNoticeUserService +{ + @Autowired + private AsNoticeUserMapper asNoticeUserMapper; + + /** + * 查询通知公告人员中间 + * + * @param id 通知公告人员中间主键 + * @return 通知公告人员中间 + */ + @Override + public AsNoticeUser selectAsNoticeUserById(Long id) + { + return asNoticeUserMapper.selectAsNoticeUserById(id); + } + + /** + * 查询通知公告人员中间列表 + * + * @param asNoticeUser 通知公告人员中间 + * @return 通知公告人员中间 + */ + @Override + public List selectAsNoticeUserList(AsNoticeUser asNoticeUser) + { + return asNoticeUserMapper.selectAsNoticeUserList(asNoticeUser); + } + + /** + * 新增通知公告人员中间 + * + * @param asNoticeUser 通知公告人员中间 + * @return 结果 + */ + @Override + public int insertAsNoticeUser(AsNoticeUser asNoticeUser) + { + asNoticeUser.setCreateTime(DateUtils.getNowDate()); + return asNoticeUserMapper.insertAsNoticeUser(asNoticeUser); + } + + /** + * 修改通知公告人员中间 + * + * @param asNoticeUser 通知公告人员中间 + * @return 结果 + */ + @Override + public int updateAsNoticeUser(AsNoticeUser asNoticeUser) + { + asNoticeUser.setUpdateTime(DateUtils.getNowDate()); + return asNoticeUserMapper.updateAsNoticeUser(asNoticeUser); + } + + /** + * 批量删除通知公告人员中间 + * + * @param ids 需要删除的通知公告人员中间主键 + * @return 结果 + */ + @Override + public int deleteAsNoticeUserByIds(Long[] ids) + { + return asNoticeUserMapper.deleteAsNoticeUserByIds(ids); + } + + /** + * 删除通知公告人员中间信息 + * + * @param id 通知公告人员中间主键 + * @return 结果 + */ + @Override + public int deleteAsNoticeUserById(Long id) + { + return asNoticeUserMapper.deleteAsNoticeUserById(id); + } +} diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/impl/SysDeptServiceImpl.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/impl/SysDeptServiceImpl.java index a55301b..63d9053 100644 --- a/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/impl/SysDeptServiceImpl.java +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/impl/SysDeptServiceImpl.java @@ -15,6 +15,7 @@ import com.muyu.system.domain.vo.TreeSelect; import com.muyu.system.mapper.SysDeptMapper; import com.muyu.system.mapper.SysRoleMapper; import com.muyu.system.service.SysDeptService; +import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -29,6 +30,7 @@ import java.util.stream.Collectors; * @author muyu */ @Service +@Log4j2 public class SysDeptServiceImpl extends ServiceImpl implements SysDeptService { @Autowired private SysDeptMapper deptMapper; @@ -280,13 +282,29 @@ public class SysDeptServiceImpl extends ServiceImpl impl return deptMapper.deleteDeptById(deptId); } + /** + * 获取部门树级结构 + * @return + */ + @Override + public List listDeptFind() { + List sysDepts = new ArrayList<>(); + List depts = this.selectDeptList(new SysDept(){{setDeptId(0L);}}); + sysDepts = buildDeptTree(depts); + log.info(sysDepts); + return sysDepts; + } + + /** * 递归列表 */ private void recursionFn (List list, SysDept t) { // 得到子节点列表 List childList = getChildList(list, t); - t.setChildren(childList); + if (!childList.isEmpty()){ + t.setChildren(childList); + } for (SysDept tChild : childList) { if (hasChild(list, tChild)) { recursionFn(list, tChild); diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/impl/SysMenuServiceImpl.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/impl/SysMenuServiceImpl.java index d7e0256..ba42c0c 100644 --- a/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/impl/SysMenuServiceImpl.java +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/impl/SysMenuServiceImpl.java @@ -1,6 +1,5 @@ package com.muyu.system.service.impl; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.muyu.common.core.constant.Constants; import com.muyu.common.core.constant.UserConstants; @@ -88,14 +87,11 @@ public class SysMenuServiceImpl extends ServiceImpl impl List sysMenus1 = new ArrayList<>(); List sysMenus = menuMapper.selectMenuByParentId(menus.getMenuId()); sysMenus1.addAll(sysMenus); - if (sysMenus.size()>0){ + if (sysMenus.size() > 0) { for (SysMenu sysMenu : sysMenus) { treeMenu(sysMenu); } } -// for (SysMenu sysMenu : sysMenus1) { -// sysMenus.addAll(treeMenu(sysMenu)); -// } return sysMenus1; } diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/impl/SysNoticeServiceImpl.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/impl/SysNoticeServiceImpl.java index 8c0c8d5..1e52dfa 100644 --- a/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/impl/SysNoticeServiceImpl.java +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/impl/SysNoticeServiceImpl.java @@ -1,13 +1,27 @@ package com.muyu.system.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.common.core.text.Convert; +import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.common.system.domain.SysDept; +import com.muyu.common.system.domain.SysUser; +import com.muyu.system.domain.AsNoticeUser; import com.muyu.system.domain.SysNotice; +import com.muyu.system.domain.SysPost; +import com.muyu.system.domain.req.AsNoticeUserReq; +import com.muyu.system.domain.req.SelectAsNoticeUserReq; +import com.muyu.system.domain.resp.AsNoticeUserResp; +import com.muyu.system.domain.resp.SysNoticeResp; import com.muyu.system.mapper.SysNoticeMapper; -import com.muyu.system.service.SysNoticeService; +import com.muyu.system.service.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.Date; import java.util.List; +import java.util.stream.Collectors; /** * 公告 服务层实现 @@ -19,15 +33,27 @@ public class SysNoticeServiceImpl extends ServiceImpl selectNoticeList (SysNotice notice) { - return noticeMapper.selectNoticeList(notice); + public List selectNoticeList(SysNotice notice) { + List sysNotices = noticeMapper.selectNoticeList(notice); + List sysNoticeRespList = sysNotices.stream().map(sysNotice -> { + //通知总数 + List allList = asNoticeUserService.list(new LambdaQueryWrapper() {{ + eq(AsNoticeUser::getNoticeId, sysNotice.getNoticeId()); + }}); + //已读数量 + long allCount = allList.size(); + long readCount = allList.stream().filter(user -> "Y".equals(user.getReadStates())).count(); + long unReadCount = allCount - readCount; + + SysNoticeResp sysNoticeResp = SysNoticeResp.saveBuilder(sysNotice); + if (!allList.isEmpty()) { + sysNoticeResp.setEndTime(allList.get(0).getEndTime()); + } + sysNoticeResp.setNum(allCount); + sysNoticeResp.setReadNum(readCount); + sysNoticeResp.setUnReadNum(unReadCount); + return sysNoticeResp; + }).collect(Collectors.toList()); + return sysNoticeRespList; } /** * 新增公告 * - * @param notice 公告信息 - * + * @param req 公告信息 * @return 结果 */ @Override - public int insertNotice (SysNotice notice) { - return noticeMapper.insertNotice(notice); + public int insertNotice(AsNoticeUserReq req) { + SysNotice sysNotice = SysNotice.saveBuilder(req, SecurityUtils::getUsername); + int i = noticeMapper.insertNotice(sysNotice); + + if (i > 0) { + SysUser sysUser = userService.selectUserById(SecurityUtils.getUserId()); + List list = postService.selectPostListByUserId(SecurityUtils.getUserId()).stream().map(postId -> postService.selectPostById(postId)).toList(); + SysDept dept = deptService.selectDeptById(sysUser.getDeptId()); + StringBuffer buffer = new StringBuffer(); + list.forEach(sysPost -> buffer.append(sysPost.getPostName())); + req.setCreateBy(sysUser.getUserName() + "(" + dept.getDeptName() + "/" + String.valueOf(buffer) + ")"); + List userCheckedList = req.getUserCheckedList(); + List finalUserCheckedList = userCheckedList; + req.getSelectedOptions().forEach(deptId -> + finalUserCheckedList.addAll(userService.selectUserList(new SysUser() {{ + setDeptId(deptId); + }}).stream().map(SysUser::getUserId).toList() + )); + userCheckedList = userCheckedList.stream().distinct().toList(); + List asNoticeUserList = userCheckedList.stream().map(userId -> + AsNoticeUser.builder() + .endTime(req.getInDateTime()) + .userId(userId) + .noticeId(sysNotice.getNoticeId()) + .outStates("N") + .readStates("N") + .createBy(req.getCreateBy()) + .createTime(new Date()) + .build()).collect(Collectors.toList()); + + asNoticeUserService.saveBatch(asNoticeUserList); + } + return i; } /** * 修改公告 * * @param notice 公告信息 - * * @return 结果 */ @Override - public int updateNotice (SysNotice notice) { + public int updateNotice(SysNotice notice) { return noticeMapper.updateNotice(notice); } @@ -71,11 +145,10 @@ public class SysNoticeServiceImpl extends ServiceImpl noticeByUserId(SelectAsNoticeUserReq req) { + List list = asNoticeUserService. + list(new LambdaQueryWrapper() {{ + eq(AsNoticeUser::getUserId, SecurityUtils.getUserId()); + ge(AsNoticeUser::getEndTime, new Date()); + if (req.getReadStates() != null && !req.getReadStates().isEmpty()) + eq(AsNoticeUser::getReadStates, req.getReadStates()); + }} + ); + List result = new ArrayList<>(); + list.forEach(noticeUser -> { + SysNotice sysNotice = this.getOne(new LambdaQueryWrapper() {{ + eq(SysNotice::getNoticeId, noticeUser.getNoticeId()); + if (req.getNoticeType() != null && !req.getNoticeType().isEmpty() &&!req.getNoticeType().equals("0")) + eq(SysNotice::getNoticeType, req.getNoticeType()); + }}); + if (sysNotice!=null){ + AsNoticeUserResp apply = AsNoticeUserResp.builder() + .asNoticeId(noticeUser.getId()) + .endTime(noticeUser.getEndTime()) + .createTime(noticeUser.getCreateTime()) + .createBy(noticeUser.getCreateBy()) + .noticeType(sysNotice.getNoticeType()) + .readStates(noticeUser.getReadStates()) + .sysNotice(sysNotice) + .build(); + result.add(apply); + } + }); + return result; + } + + @Override + public int updateAsNoticeUser(Long asNoticeId) { + + AsNoticeUser asNoticeUser = new AsNoticeUser() {{ + setReadStates("Y"); + setId(asNoticeId); + }}; + return asNoticeUserService.updateAsNoticeUser(asNoticeUser); + } } diff --git a/muyu-modules/muyu-system/src/main/resources/mapper/system/AsNoticeUserMapper.xml b/muyu-modules/muyu-system/src/main/resources/mapper/system/AsNoticeUserMapper.xml new file mode 100644 index 0000000..eab0d61 --- /dev/null +++ b/muyu-modules/muyu-system/src/main/resources/mapper/system/AsNoticeUserMapper.xml @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + select id, notice_id, user_id, read_states, end_time, out_states, create_by, create_time, update_by, update_time from as_notice_user + + + + + + + + insert into as_notice_user + + id, + notice_id, + + user_id, + read_states, + end_time, + out_states, + create_by, + create_time, + update_by, + update_time, + + + #{id}, + #{noticeId}, + #{userId}, + #{readStates}, + #{endTime}, + #{outStates}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + + + + + update as_notice_user + + notice_id = #{noticeId}, + user_id = #{userId}, + read_states = #{readStates}, + end_time = #{endTime}, + out_states = #{outStates}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + + where id = #{id} + + + + delete from as_notice_user where id = #{id} + + + + delete from as_notice_user where id in + + #{id} + + + diff --git a/muyu-modules/muyu-system/src/main/resources/mapper/system/SysNoticeMapper.xml b/muyu-modules/muyu-system/src/main/resources/mapper/system/SysNoticeMapper.xml index 0687403..6df187c 100644 --- a/muyu-modules/muyu-system/src/main/resources/mapper/system/SysNoticeMapper.xml +++ b/muyu-modules/muyu-system/src/main/resources/mapper/system/SysNoticeMapper.xml @@ -51,7 +51,7 @@ - + insert into sys_notice ( notice_title, notice_type,