From 1defd7ef4eeb0b149d694d0f88006f1f99236c6a Mon Sep 17 00:00:00 2001 From: cccccyb <995134776@qq.com> Date: Thu, 11 May 2023 15:26:55 +0800 Subject: [PATCH] nitice module modified query with mybatis plus linked table to xml --- .../pinnacle/controller/NoticeController.java | 32 ++-- .../com/cfive/pinnacle/entity/Notice.java | 3 + .../pinnacle/mapper/DepartmentMapper.java | 4 +- .../cfive/pinnacle/mapper/NoticeMapper.java | 3 + .../pinnacle/mapper/NoticeReceiveMapper.java | 4 + .../service/INoticeReceiveService.java | 5 +- .../pinnacle/service/INoticeService.java | 2 + .../service/impl/DepartmentServiceImpl.java | 9 +- .../impl/NoticeReceiveServiceImpl.java | 13 +- .../service/impl/NoticeServiceImpl.java | 98 +++++++---- .../resources/mapper/DepartmentMapper.xml | 8 +- .../main/resources/mapper/NoticeMapper.xml | 77 ++++++--- .../resources/mapper/NoticeReceiveMapper.xml | 37 +++- .../com/cfive/pinnacle/notice/NoticeTest.java | 9 +- ui/src/components/notice/CommitForm.vue | 6 +- ui/src/components/notice/NoticeHead.vue | 1 - ...{NoticeTable.vue => NoticeManageTable.vue} | 11 +- ui/src/components/notice/NoticeViewTable.vue | 161 ++++++++++++++++++ .../{NoticeHome.vue => NoticeManage.vue} | 86 +++++----- ui/src/pages/notice/NoticeView.vue | 56 ++++++ ui/src/router/index.ts | 24 ++- 21 files changed, 498 insertions(+), 151 deletions(-) rename ui/src/components/notice/{NoticeTable.vue => NoticeManageTable.vue} (96%) create mode 100644 ui/src/components/notice/NoticeViewTable.vue rename ui/src/pages/notice/{NoticeHome.vue => NoticeManage.vue} (73%) create mode 100644 ui/src/pages/notice/NoticeView.vue diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/controller/NoticeController.java b/Pinnacle/src/main/java/com/cfive/pinnacle/controller/NoticeController.java index 892879f..b2b21c0 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/controller/NoticeController.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/controller/NoticeController.java @@ -42,12 +42,12 @@ public class NoticeController { //查询所有公告 @GetMapping - public ResponseResult selectAllNotice(String title, String type, String startTime,String endTime) { + public ResponseResult selectAllNotice(String title, String type, String startTime, String endTime) { List noticeList; - if (!StringUtils.hasText(title) && !StringUtils.hasText(type) && !StringUtils.hasText(startTime) && !StringUtils.hasText(endTime)) { + if (!StringUtils.hasText(title) && !StringUtils.hasText(type) && !StringUtils.hasText(startTime) && !StringUtils.hasText(endTime)) { noticeList = noticeService.selectAllNotice(); } else { - noticeList = noticeService.selectByCond(title, type, startTime,endTime); + noticeList = noticeService.selectByCond(title, type, startTime, endTime); } int code = noticeList != null ? ResponseCode.DATABASE_SELECT_OK : ResponseCode.DATABASE_SELECT_ERROR; @@ -55,6 +55,14 @@ public class NoticeController { return ResponseResult.build(code, msg, noticeList); } + //根据登录用户id查询所接收的公告 + @GetMapping("/ByUserId") + public ResponseResult selectAllByUserId() { + List noticesByUserId = noticeReceiveService.selectAllByUserId(); + Integer code = noticesByUserId != null ? ResponseCode.DATABASE_SELECT_OK : ResponseCode.DATABASE_SELECT_ERROR; + String msg = noticesByUserId != null ? "" : "数据查询失败,请尝试!"; + return ResponseResult.build(code, msg, noticesByUserId); + } //更新公告 @PutMapping @@ -67,19 +75,9 @@ public class NoticeController { //添加公告 @PostMapping public ResponseResult addNotice(@RequestBody Notice notice) { - notice.setSenderId(WebUtil.getLoginUser().getUser().getId()); - boolean insertNotice = noticeService.save(notice); - Long noticeId = notice.getId(); - boolean flag = false; - for (Long receiveId : - notice.getReceivers()) { - NoticeReceive noticeReceive = new NoticeReceive(); - noticeReceive.setNoticeId(noticeId); - noticeReceive.setUserId(receiveId); - flag = noticeReceiveService.save(noticeReceive); - } - String msg = (insertNotice && flag) ? "" : "数据添加失败,请尝试!"; - return ResponseResult.build((insertNotice && flag) ? ResponseCode.DATABASE_SAVE_OK : ResponseCode.DATABASE_SAVE_ERROR, msg, noticeId); + Boolean insertNotice = noticeService.addNotice(notice); + String msg = insertNotice ? "" : "数据添加失败,请尝试!"; + return ResponseResult.build(insertNotice ? ResponseCode.DATABASE_SAVE_OK : ResponseCode.DATABASE_SAVE_ERROR, msg, insertNotice); } //删除公告 @@ -88,6 +86,6 @@ public class NoticeController { boolean removeById = noticeService.deleteById(nid); String msg = removeById ? "" : "数据删除失败,请尝试!"; return ResponseResult.build(removeById ? ResponseCode.DATABASE_DELETE_OK : ResponseCode.DATABASE_DELETE_ERROR, msg, removeById); - } + } diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/entity/Notice.java b/Pinnacle/src/main/java/com/cfive/pinnacle/entity/Notice.java index c1a0fb7..9274d4d 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/entity/Notice.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/entity/Notice.java @@ -128,6 +128,9 @@ public class Notice implements Serializable { @TableField("old") private Integer old; + @TableField(exist = false) + private Integer isRead; + @TableField("deleted") @TableLogic private Integer deleted; diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/mapper/DepartmentMapper.java b/Pinnacle/src/main/java/com/cfive/pinnacle/mapper/DepartmentMapper.java index df12625..80b9ad5 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/mapper/DepartmentMapper.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/mapper/DepartmentMapper.java @@ -4,6 +4,8 @@ import com.cfive.pinnacle.entity.Department; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** *

* 部门 Mapper 接口 @@ -14,5 +16,5 @@ import org.apache.ibatis.annotations.Mapper; */ @Mapper public interface DepartmentMapper extends BaseMapper { - + List getDepartAndUser(); } diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/mapper/NoticeMapper.java b/Pinnacle/src/main/java/com/cfive/pinnacle/mapper/NoticeMapper.java index 4a24937..a23dc1d 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/mapper/NoticeMapper.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/mapper/NoticeMapper.java @@ -4,6 +4,7 @@ import com.cfive.pinnacle.entity.Notice; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import java.time.LocalDateTime; import java.util.List; /** @@ -19,4 +20,6 @@ public interface NoticeMapper extends BaseMapper { Notice selectByNoticeId(Long nid); List selectAllNotice(); + + List selectByCond(String title, String type, LocalDateTime startTime, LocalDateTime endTime); } diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/mapper/NoticeReceiveMapper.java b/Pinnacle/src/main/java/com/cfive/pinnacle/mapper/NoticeReceiveMapper.java index baf8727..395c122 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/mapper/NoticeReceiveMapper.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/mapper/NoticeReceiveMapper.java @@ -1,9 +1,12 @@ package com.cfive.pinnacle.mapper; +import com.cfive.pinnacle.entity.Notice; import com.cfive.pinnacle.entity.NoticeReceive; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** *

* 公告接收 Mapper 接口 @@ -14,5 +17,6 @@ import org.apache.ibatis.annotations.Mapper; */ @Mapper public interface NoticeReceiveMapper extends BaseMapper { + List selectAllByUserId(Long userId); } diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/service/INoticeReceiveService.java b/Pinnacle/src/main/java/com/cfive/pinnacle/service/INoticeReceiveService.java index fffaf5b..08f460b 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/service/INoticeReceiveService.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/service/INoticeReceiveService.java @@ -1,8 +1,11 @@ package com.cfive.pinnacle.service; +import com.cfive.pinnacle.entity.Notice; import com.cfive.pinnacle.entity.NoticeReceive; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 公告接收 服务类 @@ -12,5 +15,5 @@ import com.baomidou.mybatisplus.extension.service.IService; * @since 2023-04-30 */ public interface INoticeReceiveService extends IService { - + List selectAllByUserId(); } diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/service/INoticeService.java b/Pinnacle/src/main/java/com/cfive/pinnacle/service/INoticeService.java index 7de3d9e..aba3c28 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/service/INoticeService.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/service/INoticeService.java @@ -23,4 +23,6 @@ public interface INoticeService extends IService { Boolean deleteById(Long nid); Boolean updateNotice(Notice notice); + + Boolean addNotice(Notice notice); } diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/service/impl/DepartmentServiceImpl.java b/Pinnacle/src/main/java/com/cfive/pinnacle/service/impl/DepartmentServiceImpl.java index c3181e9..b16f309 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/service/impl/DepartmentServiceImpl.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/service/impl/DepartmentServiceImpl.java @@ -29,13 +29,6 @@ public class DepartmentServiceImpl extends ServiceImpl getDepartAndUser() { - List departments = departmentMapper.selectList(null); - for (Department department: - departments) { - LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); - lqw.eq(User::getDepartmentId, department.getId()); - department.setUserList(userMapper.selectList(lqw)); - } - return departments; + return departmentMapper.getDepartAndUser(); } } diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/service/impl/NoticeReceiveServiceImpl.java b/Pinnacle/src/main/java/com/cfive/pinnacle/service/impl/NoticeReceiveServiceImpl.java index 4d30c05..dc4d06d 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/service/impl/NoticeReceiveServiceImpl.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/service/impl/NoticeReceiveServiceImpl.java @@ -1,11 +1,16 @@ package com.cfive.pinnacle.service.impl; +import com.cfive.pinnacle.entity.Notice; import com.cfive.pinnacle.entity.NoticeReceive; import com.cfive.pinnacle.mapper.NoticeReceiveMapper; import com.cfive.pinnacle.service.INoticeReceiveService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cfive.pinnacle.utils.WebUtil; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.List; + /** *

* 公告接收 服务实现类 @@ -16,5 +21,11 @@ import org.springframework.stereotype.Service; */ @Service public class NoticeReceiveServiceImpl extends ServiceImpl implements INoticeReceiveService { - + @Autowired + private NoticeReceiveMapper noticeReceiveMapper; + @Override + public List selectAllByUserId() { + Long userId = WebUtil.getLoginUser().getUser().getId(); + return noticeReceiveMapper.selectAllByUserId(userId); + } } diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/service/impl/NoticeServiceImpl.java b/Pinnacle/src/main/java/com/cfive/pinnacle/service/impl/NoticeServiceImpl.java index 8b0a300..4249abf 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/service/impl/NoticeServiceImpl.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/service/impl/NoticeServiceImpl.java @@ -11,6 +11,7 @@ import com.cfive.pinnacle.mapper.NoticeTypeMapper; import com.cfive.pinnacle.mapper.UserMapper; import com.cfive.pinnacle.service.INoticeService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cfive.pinnacle.utils.WebUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; @@ -47,56 +48,59 @@ public class NoticeServiceImpl extends ServiceImpl impleme @Override public List selectAllNotice() { List notices = noticeMapper.selectAllNotice(); - if (null != notices) { - for (Notice notice : - notices) { - LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); - lqw.eq(NoticeReceive::getNoticeId, notice.getId()); - List noticeReceives = noticeReceiveMapper.selectList(lqw); - List receiverIdList = new ArrayList<>(); - for (NoticeReceive noticeReceive : - noticeReceives) { - receiverIdList.add(noticeReceive.getUserId()); - } - notice.setReceivers(receiverIdList); - } - } +// if (null != notices) { +// for (Notice notice : +// notices) { +// LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); +// lqw.eq(NoticeReceive::getNoticeId, notice.getId()); +// List noticeReceives = noticeReceiveMapper.selectList(lqw); +// List receiverIdList = new ArrayList<>(); +// for (NoticeReceive noticeReceive : +// noticeReceives) { +// receiverIdList.add(noticeReceive.getUserId()); +// } +// notice.setReceivers(receiverIdList); +// } +// } return notices; } @Override public List selectByCond(String title, String type, String startTime,String endTime) { - List notices = new ArrayList<>(); - LocalDateTime start = null; - LocalDateTime end = null; + LocalDateTime start; + LocalDateTime end; try { start = LocalDateTime.parse(startTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); end = LocalDateTime.parse(endTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); } catch (Exception e) { - startTime = null; - endTime = null; - } - LambdaQueryWrapper lqw_notice = new LambdaQueryWrapper<>(); - LambdaQueryWrapper lqw_type = new LambdaQueryWrapper<>(); - lqw_type.like(null != type, NoticeType::getName, type); - List noticeTypes = noticeTypeMapper.selectList(lqw_type); - for (NoticeType noticeType : noticeTypes - ) { - lqw_notice.clear(); - lqw_notice.eq(!noticeTypes.isEmpty(), Notice::getTypeId, noticeType.getId()).like(null != title, Notice::getTitle, title); - lqw_notice.ge(StringUtils.hasText(startTime), Notice::getSendTime, start); - lqw_notice.le(StringUtils.hasText(endTime), Notice::getEndTime, end); - List temp_notice = noticeMapper.selectList(lqw_notice); - notices.addAll(temp_notice); - } - for (Notice n : notices - ) { - n.setSender(userMapper.selectById(n.getSenderId())); - n.setNoticeType(noticeTypeMapper.selectById(n.getTypeId())); + start = null; + end = null; } +// LambdaQueryWrapper lqw_notice = new LambdaQueryWrapper<>(); +// LambdaQueryWrapper lqw_type = new LambdaQueryWrapper<>(); +// lqw_type.like(null != type, NoticeType::getName, type); +// List noticeTypes = noticeTypeMapper.selectList(lqw_type); +// for (NoticeType noticeType : noticeTypes +// ) { +// lqw_notice.clear(); +// lqw_notice.eq(!noticeTypes.isEmpty(), Notice::getTypeId, noticeType.getId()).like(null != title, Notice::getTitle, title); +// lqw_notice.ge(StringUtils.hasText(startTime), Notice::getSendTime, start); +// lqw_notice.le(StringUtils.hasText(endTime), Notice::getEndTime, end); +// lqw_notice.eq(Notice::getOld, 0); +// List temp_notice = noticeMapper.selectList(lqw_notice); +// notices.addAll(temp_notice); +// } +// for (Notice n : notices +// ) { +// n.setSender(userMapper.selectById(n.getSenderId())); +// n.setNoticeType(noticeTypeMapper.selectById(n.getTypeId())); +// } + + List notices=noticeMapper.selectByCond(title, type, start, end); return notices; } + @Override public Boolean deleteById(Long nid) { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); @@ -120,4 +124,24 @@ public class NoticeServiceImpl extends ServiceImpl impleme return noticeMapper.insert(notice) > 0; } + @Override + public Boolean addNotice(Notice notice) { + Boolean noticeFlag,noticeRecFlag=false; +// notice.setSenderId(WebUtil.getLoginUser().getUser().getId()); + notice.setSenderId(1652714496280469506L); + noticeFlag = noticeMapper.insert(notice)>0; + Long noticeId = notice.getId(); + for (Long receiveId : + notice.getReceivers()) { + NoticeReceive noticeReceive = new NoticeReceive(); + noticeReceive.setNoticeId(noticeId); + noticeReceive.setUserId(receiveId); + noticeRecFlag = noticeReceiveMapper.insert(noticeReceive)>0; + if (!noticeRecFlag){ + break; + } + } + return noticeFlag && noticeRecFlag; + } + } diff --git a/Pinnacle/src/main/resources/mapper/DepartmentMapper.xml b/Pinnacle/src/main/resources/mapper/DepartmentMapper.xml index 06ca4b0..374bc30 100644 --- a/Pinnacle/src/main/resources/mapper/DepartmentMapper.xml +++ b/Pinnacle/src/main/resources/mapper/DepartmentMapper.xml @@ -2,9 +2,13 @@ - + + + + + diff --git a/Pinnacle/src/main/resources/mapper/NoticeMapper.xml b/Pinnacle/src/main/resources/mapper/NoticeMapper.xml index 45213fa..af7e5ae 100644 --- a/Pinnacle/src/main/resources/mapper/NoticeMapper.xml +++ b/Pinnacle/src/main/resources/mapper/NoticeMapper.xml @@ -8,10 +8,10 @@ t_notice n, t_notice_type type where u.id = n.sender_id - and type.id=n.type_id + and type.id = n.type_id and n.id = #{nid} and n.deleted = 0 - and n.old=0 + and n.old = 0 @@ -20,13 +20,9 @@ - - - - - - - + + diff --git a/Pinnacle/src/main/resources/mapper/NoticeReceiveMapper.xml b/Pinnacle/src/main/resources/mapper/NoticeReceiveMapper.xml index 319be45..16c8650 100644 --- a/Pinnacle/src/main/resources/mapper/NoticeReceiveMapper.xml +++ b/Pinnacle/src/main/resources/mapper/NoticeReceiveMapper.xml @@ -1,5 +1,40 @@ - + + + + + + + + + + + diff --git a/Pinnacle/src/test/java/com/cfive/pinnacle/notice/NoticeTest.java b/Pinnacle/src/test/java/com/cfive/pinnacle/notice/NoticeTest.java index 5cd21e3..e2653e8 100644 --- a/Pinnacle/src/test/java/com/cfive/pinnacle/notice/NoticeTest.java +++ b/Pinnacle/src/test/java/com/cfive/pinnacle/notice/NoticeTest.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.cfive.pinnacle.controller.NoticeController; import com.cfive.pinnacle.entity.*; import com.cfive.pinnacle.entity.common.ResponseResult; +import com.cfive.pinnacle.mapper.NoticeMapper; import com.cfive.pinnacle.service.*; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -19,6 +20,8 @@ public class NoticeTest { @Autowired private NoticeController noticeController; @Autowired + private NoticeMapper noticeMapper; + @Autowired private INoticeService iNoticeService; @Autowired private INoticeTypeService iNoticeTypeService; @@ -48,7 +51,7 @@ public class NoticeTest { @Test void insertNoticeTest() { - for (int i = 20; i < 40; i++) { + for (int i = 11; i < 40; i++) { Notice notice = new Notice(); notice.setTitle("title" + i); notice.setTypeId(1654069011361476609L); @@ -59,7 +62,7 @@ public class NoticeTest { notice.setSendTime(sendTime); notice.setEndTime(endTime); notice.setContent("Content" + i); - noticeController.addNotice(notice); + noticeMapper.insert(notice); } } @@ -86,7 +89,7 @@ public class NoticeTest { @Test void insertNoticeRecTest() { NoticeReceive receive = new NoticeReceive(); - receive.setNoticeId(1654070031407886338L); + receive.setNoticeId(1655408487006437377L); receive.setUserId(1652714496280469506L); iNoticeReceiveService.save(receive); } diff --git a/ui/src/components/notice/CommitForm.vue b/ui/src/components/notice/CommitForm.vue index 63dceab..b03fd75 100644 --- a/ui/src/components/notice/CommitForm.vue +++ b/ui/src/components/notice/CommitForm.vue @@ -111,7 +111,7 @@ export default { { min: 2, max: 50, message: '长度在 2 到 50 个字符', trigger: 'blur' } ], typeId: [ - { type:'array',required: true, message: '请选择公告类型', trigger: 'change' } + { required: true, message: '请选择公告类型', trigger: 'change' } ], sendTime: [ { type: 'date', required: true, message: '请选择生效时间', trigger: 'change' } @@ -167,12 +167,16 @@ export default { } if (this.noticeEdit) { this.addData = this.noticeEdit + // 判断是否置顶 + this.addData.top=this.noticeEdit.top===1; console.log(this.addData) } }, updated() { if (this.noticeEdit) { this.addData = this.noticeEdit + // 判断是否置顶 + this.addData.top=this.noticeEdit.top===1; console.log(this.addData) } }, diff --git a/ui/src/components/notice/NoticeHead.vue b/ui/src/components/notice/NoticeHead.vue index 7380705..b289465 100644 --- a/ui/src/components/notice/NoticeHead.vue +++ b/ui/src/components/notice/NoticeHead.vue @@ -65,7 +65,6 @@ export default { return SIZE_ICON_MD }, selectByCondition() { - console.log(this.timeRang) if (!_.isEmpty(this.timeRang)) { this.search_info.startTime = this.handleDateFormatUTC(this.timeRang[0]) this.search_info.endTime = this.handleDateFormatUTC(this.timeRang[1]) diff --git a/ui/src/components/notice/NoticeTable.vue b/ui/src/components/notice/NoticeManageTable.vue similarity index 96% rename from ui/src/components/notice/NoticeTable.vue rename to ui/src/components/notice/NoticeManageTable.vue index 3337a41..4cae845 100644 --- a/ui/src/components/notice/NoticeTable.vue +++ b/ui/src/components/notice/NoticeManageTable.vue @@ -6,7 +6,7 @@ >清除筛选条件 - + - + - +