diff --git a/src/main/java/com/zsc/edu/gateway/modules/notice/controller/BulletinController.java b/src/main/java/com/zsc/edu/gateway/modules/notice/controller/BulletinController.java index 4a61f0e..b688493 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/notice/controller/BulletinController.java +++ b/src/main/java/com/zsc/edu/gateway/modules/notice/controller/BulletinController.java @@ -27,7 +27,6 @@ import java.util.Set; public class BulletinController { private final BulletinService service; - /** * 普通用户查看公告详情 * @@ -35,7 +34,7 @@ public class BulletinController { * @return 公告 */ @GetMapping("/self/{id}") - public BulletinVo selfDetail(@AuthenticationPrincipal UserDetailsImpl userDetails,@PathVariable("id") Long id) { + public List selfDetail(@AuthenticationPrincipal UserDetailsImpl userDetails, @PathVariable("id") Long id) { return service.detail(userDetails,id, Bulletin.State.publish); } @@ -45,7 +44,7 @@ public class BulletinController { * @param query 查询表单 * @return 分页数据 */ - @GetMapping("/query") + @GetMapping("/self") public IPage getBulletins( BulletinQuery query) { query.setState(Bulletin.State.publish); Page page = new Page<>(query.getPageNum(), query.getPageSize()); @@ -60,7 +59,7 @@ public class BulletinController { */ @GetMapping("/{id}") @PreAuthorize("hasAuthority('BULLETIN_QUERY')") - public BulletinVo detail(@AuthenticationPrincipal UserDetailsImpl userDetails, @PathVariable("id") Long id) { + public List detail(@AuthenticationPrincipal UserDetailsImpl userDetails, @PathVariable("id") Long id) { return service.detail(userDetails,id, null); } diff --git a/src/main/java/com/zsc/edu/gateway/modules/notice/controller/UserMessageController.java b/src/main/java/com/zsc/edu/gateway/modules/notice/controller/UserMessageController.java index 75bb1f3..0d6e2d4 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/notice/controller/UserMessageController.java +++ b/src/main/java/com/zsc/edu/gateway/modules/notice/controller/UserMessageController.java @@ -118,6 +118,19 @@ public class UserMessageController { return service.createByAdmin(dto); } + /** + * 管理员为消息添加附件 + * + * @param messageId 消息ID + * @param attachmentIds 附件ID集合 + * @return 消息列表 + */ + @PostMapping("/attachment/{messageId}") + @PreAuthorize("hasAuthority('MESSAGE_CREATE')") + public Boolean insertInto(@PathVariable("messageId") Long messageId, @RequestBody List attachmentIds) { + return service.insertInto(messageId, attachmentIds); + } + /** * 获取消息推送方式 * @@ -141,16 +154,4 @@ public class UserMessageController { return service.saveSetting(settings); } - /** - * 系统自动创建用户消息并发送 - * - * @param receivers 接收者 - * @param payload 消息内容 - */ - @PostMapping("/system/setting") - @PreAuthorize("hasAuthority('MESSAGE_SETTING')") - public Boolean createBySystem(Set receivers, MessagePayload payload) { - return service.createBySystem(receivers, payload); - } - } diff --git a/src/main/java/com/zsc/edu/gateway/modules/notice/dto/UserMessageDto.java b/src/main/java/com/zsc/edu/gateway/modules/notice/dto/UserMessageDto.java index 8ddeac3..88c1d2f 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/notice/dto/UserMessageDto.java +++ b/src/main/java/com/zsc/edu/gateway/modules/notice/dto/UserMessageDto.java @@ -57,9 +57,5 @@ public class UserMessageDto { @NotBlank(message = "消息内容不能为空") public String content; - /** - * 附件ID集合 - */ - public Set attachmentIds; } diff --git a/src/main/java/com/zsc/edu/gateway/modules/notice/entity/BulletinUser.java b/src/main/java/com/zsc/edu/gateway/modules/notice/entity/BulletinUser.java deleted file mode 100644 index 160508a..0000000 --- a/src/main/java/com/zsc/edu/gateway/modules/notice/entity/BulletinUser.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.zsc.edu.gateway.modules.notice.entity; - -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; - -/** - * @author zhuang - */ -@Setter -@Getter -@NoArgsConstructor -@AllArgsConstructor -@TableName("sys_bulletin_user") -public class BulletinUser { - - /** - * 公告ID - */ - public Long bulletinId; - /** - * 用户ID - */ - public Long userId; - /** - * 是否已读 - */ - public Boolean isRead=true; -} diff --git a/src/main/java/com/zsc/edu/gateway/modules/notice/entity/UserMessage.java b/src/main/java/com/zsc/edu/gateway/modules/notice/entity/UserMessage.java index 8de1fa7..70676a8 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/notice/entity/UserMessage.java +++ b/src/main/java/com/zsc/edu/gateway/modules/notice/entity/UserMessage.java @@ -28,22 +28,12 @@ public class UserMessage implements Serializable { */ public Long userId; - /** - * 用户 - */ - @TableField(exist = false) - public User user; /** * 消息ID */ public Long messageId; - /** - * 消息 - */ - @TableField(exist = false) - public Message message; /** * 是否已读 @@ -55,6 +45,4 @@ public class UserMessage implements Serializable { */ public LocalDateTime readTime; - public UserMessage(Object o, User user, Message message, boolean b, Object o1) { - } } diff --git a/src/main/java/com/zsc/edu/gateway/modules/notice/query/BulletinQuery.java b/src/main/java/com/zsc/edu/gateway/modules/notice/query/BulletinQuery.java index 6295aa5..81d3239 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/notice/query/BulletinQuery.java +++ b/src/main/java/com/zsc/edu/gateway/modules/notice/query/BulletinQuery.java @@ -31,5 +31,4 @@ public class BulletinQuery { private LocalDateTime publishTimeBegin; @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime publishTimeEnd; - private Boolean isRead; } diff --git a/src/main/java/com/zsc/edu/gateway/modules/notice/repo/BulletinRepository.java b/src/main/java/com/zsc/edu/gateway/modules/notice/repo/BulletinRepository.java index ac35320..ef0ddaa 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/notice/repo/BulletinRepository.java +++ b/src/main/java/com/zsc/edu/gateway/modules/notice/repo/BulletinRepository.java @@ -6,12 +6,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.zsc.edu.gateway.modules.notice.dto.PageDto; import com.zsc.edu.gateway.modules.notice.entity.Bulletin; import com.zsc.edu.gateway.modules.notice.query.BulletinQuery; import com.zsc.edu.gateway.modules.notice.vo.BulletinVo; import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; + +import java.util.List; /** * 公告Repo @@ -21,7 +21,7 @@ import org.apache.ibatis.annotations.Select; public interface BulletinRepository extends BaseMapper { - BulletinVo selectByBulletinId(@Param("bulletinId") Long bulletinId); + List selectByBulletinId(@Param("bulletinId") Long bulletinId); IPage selectPageByConditions(Page page, @Param("query") BulletinQuery query); } diff --git a/src/main/java/com/zsc/edu/gateway/modules/notice/repo/BulletinUserRepository.java b/src/main/java/com/zsc/edu/gateway/modules/notice/repo/BulletinUserRepository.java deleted file mode 100644 index 79d8b52..0000000 --- a/src/main/java/com/zsc/edu/gateway/modules/notice/repo/BulletinUserRepository.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.zsc.edu.gateway.modules.notice.repo; - - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.zsc.edu.gateway.modules.notice.entity.BulletinUser; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -/** - * @author zhuang - */ -public interface BulletinUserRepository extends BaseMapper { - -// @Select("select * from sys_bulletin_user sbu where sbu.bulletin_id=#{bulletinId} and sbu.user_id=#{userId}") -// Boolean selectByBulletinIdAndUserId(@Param("bulletinId") Long bulletinId, @Param("userId") Long userId); -} diff --git a/src/main/java/com/zsc/edu/gateway/modules/notice/service/BulletinService.java b/src/main/java/com/zsc/edu/gateway/modules/notice/service/BulletinService.java index e400c9b..e92dd17 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/notice/service/BulletinService.java +++ b/src/main/java/com/zsc/edu/gateway/modules/notice/service/BulletinService.java @@ -21,7 +21,7 @@ import java.util.Set; public interface BulletinService extends IService { - BulletinVo detail(UserDetailsImpl userDetails, Long id, Bulletin.State state); + List detail(UserDetailsImpl userDetails, Long id, Bulletin.State state); Bulletin create(UserDetailsImpl userDetails, BulletinDto dto); diff --git a/src/main/java/com/zsc/edu/gateway/modules/notice/service/BulletinUserService.java b/src/main/java/com/zsc/edu/gateway/modules/notice/service/BulletinUserService.java deleted file mode 100644 index 23a6996..0000000 --- a/src/main/java/com/zsc/edu/gateway/modules/notice/service/BulletinUserService.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.zsc.edu.gateway.modules.notice.service; - - -import com.baomidou.mybatisplus.extension.service.IService; -import com.zsc.edu.gateway.framework.security.UserDetailsImpl; -import com.zsc.edu.gateway.modules.notice.entity.BulletinUser; - -/** - * @author zhuang - */ -public interface BulletinUserService extends IService { - - Boolean isRead(UserDetailsImpl userDetails, Long id); - - void toggleIsRead(Long id); -} diff --git a/src/main/java/com/zsc/edu/gateway/modules/notice/service/UserMessageService.java b/src/main/java/com/zsc/edu/gateway/modules/notice/service/UserMessageService.java index 001ee35..c6508d5 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/notice/service/UserMessageService.java +++ b/src/main/java/com/zsc/edu/gateway/modules/notice/service/UserMessageService.java @@ -29,6 +29,8 @@ public interface UserMessageService extends IService { UserMessageVo detail(Long messageId, Long userId); + Boolean insertInto(Long messageId, List attachmentIds); + List getSetting(); IPage page(Page page, UserMessageQuery query); @@ -40,6 +42,4 @@ public interface UserMessageService extends IService { @Transactional List saveSetting(List settings); - @Transactional - Boolean createBySystem(Set receivers, MessagePayload payload); } diff --git a/src/main/java/com/zsc/edu/gateway/modules/notice/service/impl/BulletinServiceImpl.java b/src/main/java/com/zsc/edu/gateway/modules/notice/service/impl/BulletinServiceImpl.java index 32c99b5..48aa737 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/notice/service/impl/BulletinServiceImpl.java +++ b/src/main/java/com/zsc/edu/gateway/modules/notice/service/impl/BulletinServiceImpl.java @@ -15,7 +15,6 @@ import com.zsc.edu.gateway.modules.notice.query.BulletinQuery; import com.zsc.edu.gateway.modules.notice.repo.BulletinRepository; import com.zsc.edu.gateway.modules.notice.service.BulletinAttachmentService; import com.zsc.edu.gateway.modules.notice.service.BulletinService; -import com.zsc.edu.gateway.modules.notice.service.BulletinUserService; import com.zsc.edu.gateway.modules.notice.vo.BulletinVo; import com.zsc.edu.gateway.modules.system.repo.UserRepository; import lombok.AllArgsConstructor; @@ -39,7 +38,6 @@ public class BulletinServiceImpl extends ServiceImpl detail(UserDetailsImpl userDetails, Long id, Bulletin.State state) { + List bulletins = repo.selectByBulletinId(id); + if (bulletins.isEmpty()) { + return Collections.emptyList(); } - bulletin.setEditUsername(userRepository.selectNameById(bulletin.getEditUserId())); - bulletin.setPublishUsername(userRepository.selectNameById(bulletin.getPublishUserId())); - bulletin.setCloseUsername(userRepository.selectNameById(bulletin.getCloseUserId())); - bulletinUserService.isRead(userDetails, id); - return bulletin; + for (BulletinVo bulletin : bulletins) { + if (state != null) { + bulletin.getState().checkStatus(state); + } + bulletin.setEditUsername(userRepository.selectNameById(bulletin.getEditUserId())); + bulletin.setPublishUsername(userRepository.selectNameById(bulletin.getPublishUserId())); + bulletin.setCloseUsername(userRepository.selectNameById(bulletin.getCloseUserId())); + } + + return bulletins; } /** * 新建公告 @@ -96,7 +99,6 @@ public class BulletinServiceImpl extends ServiceImpl attachments) { - List bulletinAttachments=attachments.stream().map(bulletinAttachment->new BulletinAttachment(bulletinId, attachments.toString())).toList(); + public Boolean insertInto(Long bulletinId, Set attachmentIds) { + List bulletinAttachments = attachmentIds.stream() + .map(attachmentId -> new BulletinAttachment(bulletinId, attachmentId)) + .collect(Collectors.toList()); return bulletinAttachmentService.saveBatch(bulletinAttachments); } diff --git a/src/main/java/com/zsc/edu/gateway/modules/notice/service/impl/BulletinUserServiceImpl.java b/src/main/java/com/zsc/edu/gateway/modules/notice/service/impl/BulletinUserServiceImpl.java deleted file mode 100644 index 057aed2..0000000 --- a/src/main/java/com/zsc/edu/gateway/modules/notice/service/impl/BulletinUserServiceImpl.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.zsc.edu.gateway.modules.notice.service.impl; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.zsc.edu.gateway.framework.security.UserDetailsImpl; -import com.zsc.edu.gateway.modules.notice.entity.BulletinUser; -import com.zsc.edu.gateway.modules.notice.repo.BulletinUserRepository; -import com.zsc.edu.gateway.modules.notice.service.BulletinUserService; -import lombok.AllArgsConstructor; -import org.springframework.stereotype.Service; - - -/** - * @author zhuang - */ -@AllArgsConstructor -@Service -public class BulletinUserServiceImpl extends ServiceImpl implements BulletinUserService { - - /** - * 已读公告,每次已读自动获取用户id与公告id加入联表 - * - * @param userDetails userDetails - * @param id id - * return true - */ - @Override - public Boolean isRead(UserDetailsImpl userDetails,Long id) { - if (id == null || userDetails.getId() == null) { - throw new IllegalArgumentException("Bulletin ID and User ID cannot be null"); - } - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("bulletin_id", id) - .eq("user_id", userDetails.getId()); - BulletinUser existingUser = getOne(queryWrapper); - if (existingUser == null) { - BulletinUser newUser = new BulletinUser(); - newUser.setBulletinId(id); - newUser.setUserId(userDetails.getId()); - newUser.setIsRead(false); - save(newUser); - } else { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("bulletin_id", id).eq("user_id", userDetails.getId()).set("is_read",false); - } - return true; - } - /** - * 更新公告后修改已读状态 - * - * @param id id - */ - @Override - public void toggleIsRead(Long id) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("bulletin_id",id).set("is_read",true); - } - -} diff --git a/src/main/java/com/zsc/edu/gateway/modules/notice/service/impl/UserMessageServiceImpl.java b/src/main/java/com/zsc/edu/gateway/modules/notice/service/impl/UserMessageServiceImpl.java index 6051b5b..dcd64d0 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/notice/service/impl/UserMessageServiceImpl.java +++ b/src/main/java/com/zsc/edu/gateway/modules/notice/service/impl/UserMessageServiceImpl.java @@ -9,7 +9,6 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.zsc.edu.gateway.framework.message.email.EmailSender; import com.zsc.edu.gateway.framework.message.sms.SmsSender; import com.zsc.edu.gateway.framework.security.UserDetailsImpl; -import com.zsc.edu.gateway.modules.attachment.entity.Attachment; import com.zsc.edu.gateway.modules.attachment.service.AttachmentService; import com.zsc.edu.gateway.modules.notice.dto.UserMessageDto; import com.zsc.edu.gateway.modules.notice.entity.*; @@ -17,6 +16,7 @@ import com.zsc.edu.gateway.modules.notice.query.UserMessageQuery; import com.zsc.edu.gateway.modules.notice.repo.MessageRepository; import com.zsc.edu.gateway.modules.notice.repo.MessageSettingRepository; import com.zsc.edu.gateway.modules.notice.repo.UserMessageRepository; +import com.zsc.edu.gateway.modules.notice.service.MessageAttachmentService; import com.zsc.edu.gateway.modules.notice.service.UserMessageService; import com.zsc.edu.gateway.modules.notice.vo.UserMessageVo; import com.zsc.edu.gateway.modules.system.entity.User; @@ -48,6 +48,7 @@ public class UserMessageServiceImpl extends ServiceImpl users = dto.userIds.stream().map(userService::getById).collect(Collectors.toSet()); - List attachments = attachmentService.listByIds(dto.attachmentIds); + Set users = dto.userIds.stream() + .map(userService::getById) + .filter(Objects::nonNull) + .collect(Collectors.toSet()); + if (users.isEmpty()) { + throw new RuntimeException("No valid users found for the provided userIds."); + } Message message = new Message(dto.type, false, dto.email, dto.sms, dto.html, - dto.title, dto.content, attachments); + dto.title, dto.content, null); messageRepo.insert(message); - Set userMessages = users.stream().map(user -> - new UserMessage(null, user, message, false, null)).collect(Collectors.toSet()); + Set userMessages = users.stream() + .map(user -> new UserMessage(null, user.getId(), message.getId(), false, null)) + .collect(Collectors.toSet()); send(users, message); return saveBatch(userMessages); } + /** + * 将附件关联信息插入数据库 + * + * @param messageId 消息ID,用于关联消息和附件 + * @param attachmentIds 附件ID列表,表示需要插入的附件 + * @return 返回一个布尔值,表示批量插入是否成功 + */ + @Override + public Boolean insertInto(Long messageId, List attachmentIds) { + List messageAttachments = attachmentIds.stream() + .map(attachmentId -> new MessageAttachment(messageId, attachmentId)) + .collect(Collectors.toList()); + return messageAttachmentService.saveBatch(messageAttachments); + } + /** * 获取所有消息推送方式 * @@ -185,7 +207,6 @@ public class UserMessageServiceImpl extends ServiceImpl receivers, MessagePayload payload) { AtomicBoolean email = new AtomicBoolean(false); AtomicBoolean sms = new AtomicBoolean(false); @@ -197,7 +218,7 @@ public class UserMessageServiceImpl extends ServiceImpl userMessages = receivers.stream().map(user -> - new UserMessage(null, user, message, false, null)).collect(Collectors.toSet()); + new UserMessage(null, user.getId(), message.getId(), false, null)).collect(Collectors.toSet()); send(receivers, message); return saveBatch(userMessages); } diff --git a/src/main/java/com/zsc/edu/gateway/modules/notice/vo/BulletinVo.java b/src/main/java/com/zsc/edu/gateway/modules/notice/vo/BulletinVo.java index 1fb721c..a838c3f 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/notice/vo/BulletinVo.java +++ b/src/main/java/com/zsc/edu/gateway/modules/notice/vo/BulletinVo.java @@ -2,10 +2,15 @@ package com.zsc.edu.gateway.modules.notice.vo; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; +import com.zsc.edu.gateway.modules.attachment.entity.Attachment; +import com.zsc.edu.gateway.modules.attachment.vo.AttachmentVo; import com.zsc.edu.gateway.modules.notice.entity.Bulletin; +import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; import java.time.LocalDateTime; +import java.util.List; /** * @author zhuang @@ -26,12 +31,6 @@ public class BulletinVo { private String closeUsername; private LocalDateTime closeTime; private String content; - private Boolean isRead; - private String fileName; - private String mimeType; - private LocalDateTime uploadTime; - private String url; - private String remark; @TableField(value = "create_time", fill = FieldFill.INSERT) private LocalDateTime createTime; @TableField(value = "create_by", fill = FieldFill.INSERT) @@ -40,5 +39,7 @@ public class BulletinVo { private LocalDateTime updateTime; @TableField(value = "update_by", fill = FieldFill.INSERT_UPDATE) private String updateBy; + List attachmentVos; + } diff --git a/src/main/java/com/zsc/edu/gateway/modules/system/controller/DeptController.java b/src/main/java/com/zsc/edu/gateway/modules/system/controller/DeptController.java index 2017213..e2dc86b 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/system/controller/DeptController.java +++ b/src/main/java/com/zsc/edu/gateway/modules/system/controller/DeptController.java @@ -9,10 +9,13 @@ import com.zsc.edu.gateway.modules.system.entity.User; import com.zsc.edu.gateway.modules.system.query.DeptQuery; import com.zsc.edu.gateway.modules.system.service.DeptService; import com.zsc.edu.gateway.modules.system.service.UserService; +import com.zsc.edu.gateway.modules.system.vo.DeptTree; import lombok.AllArgsConstructor; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; +import java.util.List; + /** * 部门Controller * @@ -29,14 +32,12 @@ public class DeptController { /** * 返回管理部门列表 hasAuthority('DEPT_QUERY') * - * @param query 查询表单 * @return 部门列表 */ -// @GetMapping -// @PreAuthorize("hasAuthority('DEPT_QUERY')") -// public Dept query(DeptQuery query, Page page) { -// return service.page(page, query.wrapper()); -// } + @GetMapping() + public List getDeptTree() { + return service.getDeptTree(); + } /** * 新建管理部门 hasAuthority('DEPT_CREATE') diff --git a/src/main/java/com/zsc/edu/gateway/modules/system/controller/UserController.java b/src/main/java/com/zsc/edu/gateway/modules/system/controller/UserController.java index 4bfc75c..b4f6b95 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/system/controller/UserController.java +++ b/src/main/java/com/zsc/edu/gateway/modules/system/controller/UserController.java @@ -40,7 +40,6 @@ public class UserController { private final RoleService roleService; private final DeptService deptService; - private final RoleAuthService roleAuthService; private final AuthorityService authorityService; /** diff --git a/src/main/java/com/zsc/edu/gateway/modules/system/entity/Dept.java b/src/main/java/com/zsc/edu/gateway/modules/system/entity/Dept.java index 93f302e..39d04b9 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/system/entity/Dept.java +++ b/src/main/java/com/zsc/edu/gateway/modules/system/entity/Dept.java @@ -5,7 +5,9 @@ import com.baomidou.mybatisplus.annotation.TableName; import lombok.Getter; import lombok.Setter; +import java.util.ArrayList; import java.util.HashSet; +import java.util.List; import java.util.Set; /** @@ -45,6 +47,9 @@ public class Dept extends BaseEntity { private Boolean enabled = true; @TableField(exist = false) - public Set children = new HashSet<>(0); + public List children = new ArrayList<>(0); + + @TableField(exist = false) + public List members = new ArrayList<>(0); } diff --git a/src/main/java/com/zsc/edu/gateway/modules/system/repo/DeptRepository.java b/src/main/java/com/zsc/edu/gateway/modules/system/repo/DeptRepository.java index d5c3d96..cdb1408 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/system/repo/DeptRepository.java +++ b/src/main/java/com/zsc/edu/gateway/modules/system/repo/DeptRepository.java @@ -2,6 +2,13 @@ package com.zsc.edu.gateway.modules.system.repo; import com.zsc.edu.gateway.modules.system.entity.Dept; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zsc.edu.gateway.modules.system.entity.User; +import org.apache.ibatis.annotations.Many; +import org.apache.ibatis.annotations.Result; +import org.apache.ibatis.annotations.Results; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -12,5 +19,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; * @since 2023-04-06 */ public interface DeptRepository extends BaseMapper { - + @Select("SELECT d.*, u.* FROM sys_dept d LEFT JOIN sys_user u ON d.id = u.dept_id") + List selectAllWithMembers(); } diff --git a/src/main/java/com/zsc/edu/gateway/modules/system/service/DeptService.java b/src/main/java/com/zsc/edu/gateway/modules/system/service/DeptService.java index e296436..be8c89a 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/system/service/DeptService.java +++ b/src/main/java/com/zsc/edu/gateway/modules/system/service/DeptService.java @@ -3,6 +3,9 @@ package com.zsc.edu.gateway.modules.system.service; import com.zsc.edu.gateway.modules.system.dto.DeptDto; import com.zsc.edu.gateway.modules.system.entity.Dept; import com.baomidou.mybatisplus.extension.service.IService; +import com.zsc.edu.gateway.modules.system.vo.DeptTree; + +import java.util.List; /** *

@@ -28,11 +31,13 @@ public interface DeptService extends IService { Boolean edit(DeptDto dto, Long id); Boolean toggle(Long id); +// +// /** +// * 生成部门树结构 +// * @param id +// * @return +// */ +//// Dept listTree(Long id); - /** - * 生成部门树结构 - * @param id - * @return - */ -// Dept listTree(Long id); + List getDeptTree(); } diff --git a/src/main/java/com/zsc/edu/gateway/modules/system/service/impl/DeptServiceImpl.java b/src/main/java/com/zsc/edu/gateway/modules/system/service/impl/DeptServiceImpl.java index 7561320..4688917 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/system/service/impl/DeptServiceImpl.java +++ b/src/main/java/com/zsc/edu/gateway/modules/system/service/impl/DeptServiceImpl.java @@ -2,15 +2,24 @@ package com.zsc.edu.gateway.modules.system.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.zsc.edu.gateway.exception.ConstraintException; +import com.zsc.edu.gateway.framework.DeptTreeUtil; import com.zsc.edu.gateway.modules.system.dto.DeptDto; import com.zsc.edu.gateway.modules.system.entity.Dept; +import com.zsc.edu.gateway.modules.system.entity.User; import com.zsc.edu.gateway.modules.system.mapper.DeptMapper; import com.zsc.edu.gateway.modules.system.repo.DeptRepository; +import com.zsc.edu.gateway.modules.system.repo.UserRepository; import com.zsc.edu.gateway.modules.system.service.DeptService; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.zsc.edu.gateway.modules.system.vo.DeptTree; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + /** *

* 部门 服务实现类 @@ -24,6 +33,8 @@ import org.springframework.stereotype.Service; public class DeptServiceImpl extends ServiceImpl implements DeptService { private final DeptMapper mapper; + private final DeptRepository repo; + private final UserRepository userRepository; @Override public Dept create(DeptDto dto) { @@ -52,15 +63,15 @@ public class DeptServiceImpl extends ServiceImpl implement return updateById(dept); } -// @Override -// public Dept listTree(Long deptId) { -// Dept rootDept; -// List all = list(null); -// HashSet deptList = new HashSet<>(all); -// rootDept = DeptTreeUtil.initTree(deptList); -// if (deptId != null) { -// return rootDept.id.equals(deptId) ? rootDept : DeptTreeUtil.getChildNode(rootDept.children, deptId); -// } -// return rootDept; -// } + @Override + public List getDeptTree() { + List depots = repo.selectList(null); + List users = userRepository.selectList(null); + Map> userMap = new HashMap<>(); + for (User user : users) { + userMap.computeIfAbsent(user.getDeptId(), k -> new ArrayList<>()).add(user); + } + return DeptTreeUtil.buildDeptTree(depots, userMap); + } + } diff --git a/src/main/resources/db/gateway.sql b/src/main/resources/db/gateway.sql index 8cba3a1..976d0ca 100644 --- a/src/main/resources/db/gateway.sql +++ b/src/main/resources/db/gateway.sql @@ -145,9 +145,7 @@ create index inx_pid create table sys_message ( - id integer not null - constraint sys_message_pk - primary key, + id SERIAL PRIMARY KEY, type integer not null, system boolean not null, email boolean not null, @@ -177,6 +175,7 @@ comment on column sys_message.update_by is '更新人'; alter table sys_message owner to postgres; + create table sys_message_attach ( message_id bigint not null, @@ -398,17 +397,29 @@ INSERT INTO "sys_user" VALUES (1, 210, 50, 'admin', '{bcrypt}$2a$10$lwEbMpGYMIcV INSERT INTO "sys_user" VALUES (2, 215, 51, 'user', '{bcrypt}$2a$10$lwEbMpGYMIcVpuVXIWBSlOO7d085buqONGjTuY4tg3rz84y/xFQXe', '12324352313', 'zsc3456@qq.com', '帐篷', '35bd7d32843a413f3cd2486114318d6ccd5f9d62', '电子科技大学四川',NULL, NULL, '2024-01-11 09:57:48', '2024-01-11 18:31:29', NULL, b'1'); INSERT INTO "sys_user" VALUES (3, 218, 54, 'auditor', '{bcrypt}$2a$10$lwEbMpGYMIcVpuVXIWBSlOO7d085buqONGjTuY4tg3rz84y/xFQXe', '12345678901', 'zsc3456@qq.com', '王超', '35bd7d32843a413f3cd2486114318d6ccd5f9d62', '电子科技大学中山',NULL, NULL, '2024-01-11 09:57:48', '2024-01-11 18:31:29', NULL, b'1'); -INSERT INTO "attachment" VALUES ('195bd3517bfcd9915906957730bdd6fef7fa5a86', 'Snipaste_2024-02-08_09-26-22.jpg', 'image/jpeg','2024-03-21 15:20:03'); -INSERT INTO "attachment" VALUES ('1f744e54c23c388d890a6a3822a87eae32617f29', '6.25-07.jpg', 'image/jpeg','2024-03-07 07:59:34'); -INSERT INTO "attachment" VALUES ('35bd7d32843a413f3cd2486114318d6ccd5f9d62', 'Snipaste_2024-03-22_08-11-52.jpg', 'image/jpeg','2024-03-22 00:12:05'); -INSERT INTO "attachment" VALUES ('5440f9aa9266589413f015fa673f2f372a86c74e', '各组织活动申报表模板.png', 'image/png','2024-02-11 17:37:44'); -INSERT INTO "attachment" VALUES ('5ad6601fd1cf58aa66b25b4f12a83d63b61a681e', '申请表1:模板计算机学院素质拓展活动申请表.doc', 'application/msword','2024-02-05 14:37:10'); -INSERT INTO "attachment" VALUES ('6853fd7cf5b0621678377227d299d86d6f90cc97', 'logo02.png', 'image/png','2024-03-07 07:59:11'); -INSERT INTO "attachment" VALUES ('84fa4f586f190886ea8708c49e8645f5a9a1ea04', '屏幕截图(1).png', 'image/png','2024-03-21 16:12:46'); +INSERT INTO "attachment" +VALUES ('195bd3517bfcd9915906957730bdd6fef7fa5a86', 'Snipaste_2024-02-08_09-26-22.jpg', '1', 'image/jpeg', + '2024-03-21 15:20:03'); +INSERT INTO "attachment" +VALUES ('1f744e54c23c388d890a6a3822a87eae32617f29', '6.25-07.jpg', '1', 'image/jpeg', '2024-03-07 07:59:34'); +INSERT INTO "attachment" +VALUES ('35bd7d32843a413f3cd2486114318d6ccd5f9d62', 'Snipaste_2024-03-22_08-11-52.jpg', '1', 'image/jpeg', + '2024-03-22 00:12:05'); +INSERT INTO "attachment" +VALUES ('5440f9aa9266589413f015fa673f2f372a86c74e', '各组织活动申报表模板.png', '1', 'image/png', + '2024-02-11 17:37:44'); +INSERT INTO "attachment" +VALUES ('5ad6601fd1cf58aa66b25b4f12a83d63b61a681e', '申请表1:模板计算机学院素质拓展活动申请表.doc', '1', + 'application/msword', '2024-02-05 14:37:10'); +INSERT INTO "attachment" +VALUES ('6853fd7cf5b0621678377227d299d86d6f90cc97', 'logo02.png', '1', 'image/png', '2024-03-07 07:59:11'); +INSERT INTO "attachment" +VALUES ('84fa4f586f190886ea8708c49e8645f5a9a1ea04', '屏幕截图(1).png', '1', 'image/png', '2024-03-21 16:12:46'); INSERT INTO "sys_bulletin" VALUES (1,'测试测试测试测试测试测试测试',1,true,50,'2024-03-21 15:20:03',51,'2024-03-21 15:20:03',54,'2024-03-21 15:20:03','测试测试测试数据',null,null,null,null); -INSERT INTO "sys_bulletin_attach" VALUES (1,'195bd3517bfcd9915906957730bdd6fef7fa5a86') +INSERT INTO "sys_bulletin_attach" +VALUES (1, '195bd3517bfcd9915906957730bdd6fef7fa5a86'); INSERT INTO sys_message (id, type, system, email, sms, html, title, content, remark, create_time, create_by, update_time, update_by) @@ -445,3 +456,21 @@ VALUES (1, TRUE, FALSE), (9, TRUE, FALSE), (10, FALSE, TRUE); +INSERT INTO attachment (id, file_name, mime_type, url, upload_time) +VALUES ('8', 'document1.pdf', 'application/pdf', 'http://example.com/files/document1.pdf', + CURRENT_TIMESTAMP - INTERVAL '1 day'), + ('9', 'image1.jpg', 'image/jpeg', 'http://example.com/files/image1.jpg', CURRENT_TIMESTAMP - INTERVAL '2 days'), + ('10', 'presentation.pptx', 'application/vnd.openxmlformats-officedocument.presentationml.presentation', + 'http://example.com/files/presentation.pptx', CURRENT_TIMESTAMP - INTERVAL '3 days'), + ('11', 'spreadsheet.xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', + 'http://example.com/files/spreadsheet.xlsx', CURRENT_TIMESTAMP - INTERVAL '4 days'), + ('12', 'audio1.mp3', 'audio/mpeg', 'http://example.com/files/audio1.mp3', CURRENT_TIMESTAMP - INTERVAL '5 days'), + ('13', 'video1.mp4', 'video/mp4', 'http://example.com/files/video1.mp4', CURRENT_TIMESTAMP - INTERVAL '6 days'), + ('14', 'archive.zip', 'application/zip', 'http://example.com/files/archive.zip', + CURRENT_TIMESTAMP - INTERVAL '7 days'), + ('15', 'textfile.txt', 'text/plain', 'http://example.com/files/textfile.txt', + CURRENT_TIMESTAMP - INTERVAL '8 days'), + ('16', 'image2.png', 'image/png', 'http://example.com/files/image2.png', CURRENT_TIMESTAMP - INTERVAL '9 days'), + ('17', 'document2.docx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + 'http://example.com/files/document2.docx', CURRENT_TIMESTAMP - INTERVAL '10 days'); + diff --git a/src/main/resources/mappers/noticeMappers/BulletinMapper.xml b/src/main/resources/mappers/noticeMappers/BulletinMapper.xml index 70a0136..f989200 100644 --- a/src/main/resources/mappers/noticeMappers/BulletinMapper.xml +++ b/src/main/resources/mappers/noticeMappers/BulletinMapper.xml @@ -18,30 +18,64 @@ - - - - - + + + + \ No newline at end of file diff --git a/src/main/resources/mappers/systemMappers/DeptMapper.xml b/src/main/resources/mappers/systemMappers/DeptMapper.xml index 764042d..01a2a56 100644 --- a/src/main/resources/mappers/systemMappers/DeptMapper.xml +++ b/src/main/resources/mappers/systemMappers/DeptMapper.xml @@ -1,5 +1,9 @@ - + diff --git a/src/test/java/com/zsc/edu/gateway/domain/DeptBuilder.java b/src/test/java/com/zsc/edu/gateway/domain/DeptBuilder.java index b56a803..eb49182 100644 --- a/src/test/java/com/zsc/edu/gateway/domain/DeptBuilder.java +++ b/src/test/java/com/zsc/edu/gateway/domain/DeptBuilder.java @@ -3,6 +3,7 @@ package com.zsc.edu.gateway.domain; import com.zsc.edu.gateway.modules.system.entity.Dept; import java.util.HashSet; +import java.util.List; public class DeptBuilder extends BaseEntityBuilder { @@ -43,7 +44,7 @@ public class DeptBuilder extends BaseEntityBuilder { Dept dept = new Dept(); dept.setName(name); dept.setPid(pid); - dept.setChildren(children); + dept.setChildren((List) children); return dept; }