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 d935435..f891f02 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/controller/NoticeController.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/controller/NoticeController.java @@ -7,12 +7,13 @@ import com.cfive.pinnacle.entity.common.ResponseCode; import com.cfive.pinnacle.entity.common.ResponseResult; import com.cfive.pinnacle.service.INoticeReceiveService; import com.cfive.pinnacle.service.INoticeService; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import java.util.List; +import java.util.stream.Collectors; /** *

@@ -26,6 +27,7 @@ import java.util.List; @RestController @RequestMapping("/notice") @CrossOrigin +@Slf4j public class NoticeController { @Autowired private INoticeService noticeService; @@ -34,7 +36,6 @@ public class NoticeController { //根据公告id查公告信息及发布人 @GetMapping("/{nid}") - @PreAuthorize("hasAuthority('notice:manage:get')") public ResponseResult selectByNoticeId(@PathVariable Long nid) { Notice noticeById = noticeService.selectByNoticeId(nid); Integer code = noticeById != null ? ResponseCode.DATABASE_SELECT_OK : ResponseCode.DATABASE_SELECT_ERROR; @@ -44,7 +45,6 @@ public class NoticeController { //查询所有公告或模糊查询 @GetMapping - @PreAuthorize("hasAuthority('notice:manage:get')") 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)) { @@ -60,7 +60,6 @@ public class NoticeController { //根据登录用户id查询所接收的公告 @GetMapping("/self") - @PreAuthorize("hasAuthority('notice:self:get')") public ResponseResult> selectByUserId(Integer readStatus) { List noticesByUserId = noticeReceiveService.selectByUserId(readStatus); Integer code = noticesByUserId != null ? ResponseCode.DATABASE_SELECT_OK : ResponseCode.DATABASE_SELECT_ERROR; @@ -70,9 +69,8 @@ public class NoticeController { //修改登录用户所接收公告的阅读状态 @PutMapping("/modify_notice_read") - @PreAuthorize("hasAuthority('notice:self:get')") public ResponseResult modifyNoticeIsRead(@RequestBody Notice notice) { - boolean updateById = false; + Boolean updateById = false; if (null != notice) { updateById = noticeReceiveService.modifyNoticeIsRead(notice); } @@ -84,24 +82,22 @@ public class NoticeController { //更新公告 @PutMapping public ResponseResult updateNotice(@RequestBody Notice notice) { - boolean updateById = noticeService.updateNotice(notice); + Boolean updateById = noticeService.updateNotice(notice); String msg = updateById ? "" : "数据修改失败,请重试!"; return ResponseResult.build(updateById ? ResponseCode.DATABASE_UPDATE_OK : ResponseCode.DATABASE_UPDATE_ERROR, msg, null); } //修改公告置顶状态 @PutMapping("/update_notice_top") - @PreAuthorize("hasAuthority('notice:self:get')") public ResponseResult updateNoticeTop(@RequestBody Notice notice) { String operationMessage = notice.getTop() == 1 ? "取消置顶" : "置顶"; - boolean updateResult = noticeService.updateNoticeTop(notice); + Boolean updateResult = noticeService.updateNoticeTop(notice); String msg = updateResult ? "已成功" + operationMessage : operationMessage + "失败,请重试!"; return ResponseResult.build(updateResult ? ResponseCode.DATABASE_UPDATE_OK : ResponseCode.DATABASE_UPDATE_ERROR, msg, null); } //添加公告 @PostMapping - @PreAuthorize("hasAuthority('notice:manage:add')") public ResponseResult addNotice(@RequestBody Notice notice) { Boolean insertNotice = noticeService.addNotice(notice); String msg = insertNotice ? "" : "数据添加失败,请重试!"; @@ -110,19 +106,27 @@ public class NoticeController { //删除公告 @DeleteMapping("/{nid}") - @PreAuthorize("hasAuthority('notice:manage:modify')") public ResponseResult deleteByNoticeId(@PathVariable Long nid) { - boolean removeById = noticeService.deleteById(nid); + Boolean removeById = noticeService.deleteById(nid); String msg = removeById ? "" : "数据删除失败,请重试!"; return ResponseResult.build(removeById ? ResponseCode.DATABASE_DELETE_OK : ResponseCode.DATABASE_DELETE_ERROR, msg, null); } + //批量删除公告 + @PostMapping("/batch") + public ResponseResult deleteBatchByIds(@RequestBody List noticeIds){ + // List转List + List nIds = noticeIds.stream().map(s -> Long.parseLong(s.trim())).collect(Collectors.toList()); + Boolean deleteBatchByIds = noticeService.deleteBatchByIds(nIds); + String msg = deleteBatchByIds ? "" : "数据删除失败,请重试!"; + return ResponseResult.build(deleteBatchByIds ? ResponseCode.DATABASE_DELETE_OK : ResponseCode.DATABASE_DELETE_ERROR, msg, null); + } + //分页查询所有公告或分页模糊查询 @GetMapping("/page") - @PreAuthorize("hasAuthority('notice:manage:get')") public ResponseResult> selectPageAllNotice(Integer currentPage, Integer pageSize, String title, String type, String startTime, String endTime) { IPage noticePageList; - Page page = new Page(); + Page page = new Page(); if (null != currentPage && null != pageSize) { page.setCurrent(currentPage.intValue()); page.setSize(pageSize.intValue()); diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/controller/NoticeTypeController.java b/Pinnacle/src/main/java/com/cfive/pinnacle/controller/NoticeTypeController.java index 6b12fb3..cd3b05e 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/controller/NoticeTypeController.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/controller/NoticeTypeController.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.NoticeType; import com.cfive.pinnacle.entity.common.ResponseCode; import com.cfive.pinnacle.entity.common.ResponseResult; @@ -49,6 +51,24 @@ public class NoticeTypeController { return ResponseResult.build(code, msg, selectTypeList); } + //分页查询所有公告类型 + @GetMapping("/page") + public ResponseResult> selectPageTypeList(Integer currentPage, Integer pageSize){ + Page noticeTypePage=new Page<>(); + if (null != currentPage && null != pageSize) { + noticeTypePage.setCurrent(currentPage.intValue()); + noticeTypePage.setSize(pageSize.intValue()); + } else { + // 不进行分页 + noticeTypePage.setCurrent(1); + noticeTypePage.setSize(-1); + } + IPage selectPageTypeList = noticeTypeService.selectPageTypeList(noticeTypePage); + Integer code = selectPageTypeList.getRecords() != null ? ResponseCode.DATABASE_SELECT_OK : ResponseCode.DATABASE_SELECT_ERROR; + String msg = selectPageTypeList.getRecords() != null ? String.valueOf(selectPageTypeList.getTotal()) : "数据查询失败,请重试!"; + return ResponseResult.build(code, msg, selectPageTypeList.getRecords()); + } + //修改公告类型启用或禁用 @GetMapping("/update") @PreAuthorize("hasAuthority('notice:type:modify')") 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 23f434c..c733095 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/service/INoticeService.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/service/INoticeService.java @@ -23,13 +23,15 @@ public interface INoticeService extends IService { Boolean deleteById(Long nid); + Boolean deleteBatchByIds(List noticeIds); + Boolean updateNotice(Notice notice); Boolean updateNoticeTop(Notice notice); Boolean addNotice(Notice notice); - IPage selectPageAllNotice(IPage page); + IPage selectPageAllNotice(IPage page); - IPage selectPageByCond(IPage page, String title, String type, String startTime, String endTime); + IPage selectPageByCond(IPage page, String title, String type, String startTime, String endTime); } diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/service/INoticeTypeService.java b/Pinnacle/src/main/java/com/cfive/pinnacle/service/INoticeTypeService.java index 80289d4..725edf3 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/service/INoticeTypeService.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/service/INoticeTypeService.java @@ -1,5 +1,6 @@ package com.cfive.pinnacle.service; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.cfive.pinnacle.entity.NoticeType; import com.baomidou.mybatisplus.extension.service.IService; @@ -15,6 +16,8 @@ import java.util.List; */ public interface INoticeTypeService extends IService { List selectTypeList(); + + IPage selectPageTypeList(IPage page); List selectEnableTypeList(); Boolean updateTypeEnableById(Long typeId, Integer enable); 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 4d9f220..7fe5532 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 @@ -50,7 +50,7 @@ public class NoticeServiceImpl extends ServiceImpl impleme } @Override - public List selectByCond(String title, String type, String startTime,String endTime) { + public List selectByCond(String title, String type, String startTime, String endTime) { LocalDateTime start; LocalDateTime end; try { @@ -60,27 +60,7 @@ public class NoticeServiceImpl extends ServiceImpl impleme 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); + List notices = noticeMapper.selectByCond(title, type, start, end); return notices; } @@ -89,8 +69,23 @@ 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&¬iceMapper.deleteById(nid) > 0; + Boolean flag = noticeReceiveMapper.delete(lqw) > 0; + return flag && noticeMapper.deleteById(nid) > 0; + } + + @Override + public Boolean deleteBatchByIds(List noticeIds) { + Boolean flag = false; + for (Long nid : + noticeIds) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(NoticeReceive::getNoticeId, nid); + flag = noticeReceiveMapper.delete(lqw) > 0; + if (!flag){ + break; + } + } + return flag && noticeMapper.deleteBatchIds(noticeIds) > 0; } @Override @@ -114,25 +109,25 @@ public class NoticeServiceImpl extends ServiceImpl impleme @Override public Boolean addNotice(Notice notice) { - Boolean noticeFlag,noticeRecFlag=false; + Boolean noticeFlag, noticeRecFlag = false; notice.setSenderId(WebUtil.getLoginUser().getUser().getId()); // notice.setSenderId(1652714496280469506L); - noticeFlag = noticeMapper.insert(notice)>0; + noticeFlag = noticeMapper.insert(notice) > 0; Long noticeId = notice.getId(); - if (notice.getReceivers().size()==0){ + if (notice.getReceivers().size() == 0) { //该公告仅发布者自己可见 NoticeReceive noticeReceive = new NoticeReceive(); noticeReceive.setNoticeId(noticeId); noticeReceive.setUserId(WebUtil.getLoginUser().getUser().getId()); - noticeRecFlag = noticeReceiveMapper.insert(noticeReceive)>0; - }else { + noticeRecFlag = noticeReceiveMapper.insert(noticeReceive) > 0; + } else { for (Long receiveId : notice.getReceivers()) { NoticeReceive noticeReceive = new NoticeReceive(); noticeReceive.setNoticeId(noticeId); noticeReceive.setUserId(receiveId); - noticeRecFlag = noticeReceiveMapper.insert(noticeReceive)>0; - if (!noticeRecFlag){ + noticeRecFlag = noticeReceiveMapper.insert(noticeReceive) > 0; + if (!noticeRecFlag) { break; } } @@ -141,12 +136,12 @@ public class NoticeServiceImpl extends ServiceImpl impleme } @Override - public IPage selectPageAllNotice(IPage page) { + public IPage selectPageAllNotice(IPage page) { return noticeMapper.selectPageAllNotice(page); } @Override - public IPage selectPageByCond(IPage page, String title, String type, String startTime, String endTime) { + public IPage selectPageByCond(IPage page, String title, String type, String startTime, String endTime) { LocalDateTime start; LocalDateTime end; try { @@ -156,7 +151,7 @@ public class NoticeServiceImpl extends ServiceImpl impleme start = null; end = null; } - return noticeMapper.selectPageByCond(page,title, type, start, end); + return noticeMapper.selectPageByCond(page, title, type, start, end); } } diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/service/impl/NoticeTypeServiceImpl.java b/Pinnacle/src/main/java/com/cfive/pinnacle/service/impl/NoticeTypeServiceImpl.java index fa645f1..e14fcd3 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/service/impl/NoticeTypeServiceImpl.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/service/impl/NoticeTypeServiceImpl.java @@ -1,8 +1,8 @@ package com.cfive.pinnacle.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.cfive.pinnacle.entity.NoticeType; import com.cfive.pinnacle.mapper.NoticeTypeMapper; import com.cfive.pinnacle.service.INoticeTypeService; @@ -10,7 +10,6 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.ArrayList; import java.util.List; /** @@ -32,6 +31,13 @@ public class NoticeTypeServiceImpl extends ServiceImpl selectPageTypeList(IPage page) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.orderByDesc(NoticeType::getId); + return noticeTypeMapper.selectPage(page, lqw); + } + @Override public List selectEnableTypeList() { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); diff --git a/ui/src/components/notice/NoticeManageTable.vue b/ui/src/components/notice/NoticeManageTable.vue index 91f34a8..4b18af2 100644 --- a/ui/src/components/notice/NoticeManageTable.vue +++ b/ui/src/components/notice/NoticeManageTable.vue @@ -1,5 +1,4 @@