From f309bd7bb97eba70bab317d9cb91d3dcc8c57ca0 Mon Sep 17 00:00:00 2001 From: cccccyb <995134776@qq.com> Date: Sun, 14 May 2023 22:00:59 +0800 Subject: [PATCH] use pinia to modify notice update function and add pagination to noticeManage page --- .../pinnacle/controller/NoticeController.java | 27 +++- .../cfive/pinnacle/mapper/NoticeMapper.java | 5 + .../pinnacle/service/INoticeService.java | 7 +- .../service/impl/NoticeServiceImpl.java | 60 +++++---- .../main/resources/mapper/NoticeMapper.xml | 119 ++++++++++++++---- .../com/cfive/pinnacle/notice/NoticeTest.java | 2 +- ui/src/components/notice/CommitForm.vue | 67 +++++----- ui/src/components/notice/NoticeHead.vue | 2 +- .../components/notice/NoticeManageTable.vue | 87 +++++++++---- ui/src/pages/notice/NoticeManage.vue | 32 ++--- ui/src/store/notice.ts | 85 +++++++++---- 11 files changed, 331 insertions(+), 162 deletions(-) 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 b2b21c0..6adc641 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/controller/NoticeController.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/controller/NoticeController.java @@ -1,5 +1,7 @@ package com.cfive.pinnacle.controller; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.cfive.pinnacle.entity.Notice; import com.cfive.pinnacle.entity.NoticeReceive; import com.cfive.pinnacle.entity.common.ResponseCode; @@ -40,7 +42,7 @@ public class NoticeController { return ResponseResult.build(code, msg, noticeById); } - //查询所有公告 + //查询所有公告或模糊查询 @GetMapping public ResponseResult selectAllNotice(String title, String type, String startTime, String endTime) { List noticeList; @@ -88,4 +90,27 @@ public class NoticeController { return ResponseResult.build(removeById ? ResponseCode.DATABASE_DELETE_OK : ResponseCode.DATABASE_DELETE_ERROR, msg, removeById); } + //分页查询所有公告或分页模糊查询 + @GetMapping("/page") + public ResponseResult selectPageAllNotice(Integer currentPage,Integer pageSize,String title, String type, String startTime, String endTime) { + IPage noticePageList; + Page page = new Page(); + if (null!=currentPage&&null!=pageSize){ + page.setCurrent(currentPage.intValue()); + page.setSize(pageSize.intValue()); + }else { + // 不进行分页 + page.setCurrent(1); + page.setSize(-1); + } + if (!StringUtils.hasText(title) && !StringUtils.hasText(type) && !StringUtils.hasText(startTime) && !StringUtils.hasText(endTime)) { + noticePageList = noticeService.selectPageAllNotice(page); + } else { + noticePageList = noticeService.selectPageByCond(page,title, type, startTime, endTime); + } + int code = noticePageList.getRecords() != null ? ResponseCode.DATABASE_SELECT_OK : ResponseCode.DATABASE_SELECT_ERROR; + String msg = noticePageList.getRecords() != null ? String.valueOf(noticePageList.getTotal()) : "数据查询失败,请尝试!"; + return ResponseResult.build(code, msg, noticePageList.getRecords()); + } + } 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 a23dc1d..f968ff9 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/mapper/NoticeMapper.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/mapper/NoticeMapper.java @@ -1,5 +1,6 @@ package com.cfive.pinnacle.mapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.cfive.pinnacle.entity.Notice; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; @@ -22,4 +23,8 @@ public interface NoticeMapper extends BaseMapper { List selectAllNotice(); List selectByCond(String title, String type, LocalDateTime startTime, LocalDateTime endTime); + + IPage selectPageAllNotice(IPage page); + + IPage selectPageByCond(IPage page, String title, String type, LocalDateTime startTime, LocalDateTime endTime); } 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 aba3c28..c529fbd 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/service/INoticeService.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/service/INoticeService.java @@ -1,5 +1,6 @@ package com.cfive.pinnacle.service; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.cfive.pinnacle.entity.Notice; import com.baomidou.mybatisplus.extension.service.IService; @@ -18,11 +19,15 @@ public interface INoticeService extends IService { List selectAllNotice(); - List selectByCond(String title,String type,String startTime,String endTime); + List selectByCond(String title, String type, String startTime, String endTime); Boolean deleteById(Long nid); Boolean updateNotice(Notice notice); Boolean addNotice(Notice notice); + + IPage selectPageAllNotice(IPage page); + + IPage selectPageByCond(IPage page, String title, String type, String startTime, String endTime); } 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 1f3e05b..a236d3e 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 @@ -2,6 +2,7 @@ package com.cfive.pinnacle.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.cfive.pinnacle.entity.Notice; import com.cfive.pinnacle.entity.NoticeReceive; import com.cfive.pinnacle.entity.NoticeType; @@ -48,20 +49,6 @@ 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); -// } -// } return notices; } @@ -105,8 +92,8 @@ public class NoticeServiceImpl extends ServiceImpl impleme public Boolean deleteById(Long nid) { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(NoticeReceive::getNoticeId, nid); - Boolean flag = noticeReceiveMapper.delete(lqw)>0; - return flag&&(noticeMapper.deleteById(nid) > 0); + Boolean flag=noticeReceiveMapper.delete(lqw)>0; + return flag&¬iceMapper.deleteById(nid) > 0; } @Override @@ -122,21 +109,48 @@ public class NoticeServiceImpl extends ServiceImpl impleme @Override public Boolean addNotice(Notice notice) { Boolean noticeFlag,noticeRecFlag=false; -// notice.setSenderId(WebUtil.getLoginUser().getUser().getId()); - notice.setSenderId(1652714496280469506L); + notice.setSenderId(WebUtil.getLoginUser().getUser().getId()); +// notice.setSenderId(1652714496280469506L); noticeFlag = noticeMapper.insert(notice)>0; Long noticeId = notice.getId(); - for (Long receiveId : - notice.getReceivers()) { + if (notice.getReceivers().size()==0){ + //该公告仅发布者自己可见 NoticeReceive noticeReceive = new NoticeReceive(); noticeReceive.setNoticeId(noticeId); - noticeReceive.setUserId(receiveId); + noticeReceive.setUserId(WebUtil.getLoginUser().getUser().getId()); noticeRecFlag = noticeReceiveMapper.insert(noticeReceive)>0; - if (!noticeRecFlag){ - break; + }else { + 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; } + @Override + public IPage selectPageAllNotice(IPage page) { + return noticeMapper.selectPageAllNotice(page); + } + + @Override + public IPage selectPageByCond(IPage page, String title, String type, String startTime, String endTime) { + 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) { + start = null; + end = null; + } + return noticeMapper.selectPageByCond(page,title, type, start, end); + } + } diff --git a/Pinnacle/src/main/resources/mapper/NoticeMapper.xml b/Pinnacle/src/main/resources/mapper/NoticeMapper.xml index af7e5ae..ddf5896 100644 --- a/Pinnacle/src/main/resources/mapper/NoticeMapper.xml +++ b/Pinnacle/src/main/resources/mapper/NoticeMapper.xml @@ -21,21 +21,48 @@ + + + select u.id uid, - username, + u.username, n.id nid, - title, - content, - type_id, - sender_id, - create_time, - send_time, - end_time, - priority, - top, - modify_time, - origin_id, + n.title, + n.content, + n.type_id, + n.sender_id, + n.create_time, + n.send_time, + n.end_time, + n.priority, + n.top, + n.modify_time, + n.origin_id, + type.id typeId, + type.name, + type.enable + from t_notice n + left join t_notice_type type on n.type_id = type.id + left join t_user u on n.sender_id = u.id + + + and instr(title,#{title})>0 + + + and instr(type.name,#{type})>0 + + + and send_time >= #{startTime} + + + and end_time < #{endTime} + + and n.deleted = 0 + and n.old = 0 + + + + +