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 f891f02..0cdad01 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/controller/NoticeController.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/controller/NoticeController.java @@ -9,6 +9,7 @@ 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.*; @@ -36,6 +37,7 @@ 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; @@ -45,6 +47,7 @@ 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,6 +63,7 @@ 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; @@ -69,6 +73,7 @@ public class NoticeController { //修改登录用户所接收公告的阅读状态 @PutMapping("/modify_notice_read") + @PreAuthorize("hasAuthority('notice:self:get')") public ResponseResult modifyNoticeIsRead(@RequestBody Notice notice) { Boolean updateById = false; if (null != notice) { @@ -81,6 +86,7 @@ public class NoticeController { //更新公告 @PutMapping + @PreAuthorize("hasAuthority('notice:manage:modify')") public ResponseResult updateNotice(@RequestBody Notice notice) { Boolean updateById = noticeService.updateNotice(notice); String msg = updateById ? "" : "数据修改失败,请重试!"; @@ -89,6 +95,7 @@ public class NoticeController { //修改公告置顶状态 @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); @@ -98,6 +105,7 @@ public class NoticeController { //添加公告 @PostMapping + @PreAuthorize("hasAuthority('notice:manage:add')") public ResponseResult addNotice(@RequestBody Notice notice) { Boolean insertNotice = noticeService.addNotice(notice); String msg = insertNotice ? "" : "数据添加失败,请重试!"; @@ -106,6 +114,7 @@ public class NoticeController { //删除公告 @DeleteMapping("/{nid}") + @PreAuthorize("hasAuthority('notice:manage:delete')") public ResponseResult deleteByNoticeId(@PathVariable Long nid) { Boolean removeById = noticeService.deleteById(nid); String msg = removeById ? "" : "数据删除失败,请重试!"; @@ -114,6 +123,7 @@ public class NoticeController { //批量删除公告 @PostMapping("/batch") + @PreAuthorize("hasAuthority('notice:manage:delete')") public ResponseResult deleteBatchByIds(@RequestBody List noticeIds){ // List转List List nIds = noticeIds.stream().map(s -> Long.parseLong(s.trim())).collect(Collectors.toList()); @@ -124,6 +134,7 @@ public class NoticeController { //分页查询所有公告或分页模糊查询 @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(); 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 cd3b05e..1173f44 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/controller/NoticeTypeController.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/controller/NoticeTypeController.java @@ -13,6 +13,7 @@ import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import java.util.List; +import java.util.stream.Collectors; /** *

@@ -53,6 +54,7 @@ public class NoticeTypeController { //分页查询所有公告类型 @GetMapping("/page") + @PreAuthorize("hasAuthority('notice:type:get')") public ResponseResult> selectPageTypeList(Integer currentPage, Integer pageSize){ Page noticeTypePage=new Page<>(); if (null != currentPage && null != pageSize) { @@ -108,4 +110,15 @@ public class NoticeTypeController { String msg = removeById ? "" : "数据删除失败,请重试!"; return ResponseResult.build(removeById ? ResponseCode.DATABASE_DELETE_OK : ResponseCode.DATABASE_DELETE_ERROR, msg, null); } + + //批量删除公告 + @PostMapping("/batch") + @PreAuthorize("hasAuthority('notice:manage:delete')") + public ResponseResult deleteBatchByTypeIds(@RequestBody List noticeTypeIds){ + // List转List + List nTypeIds = noticeTypeIds.stream().map(s -> Long.parseLong(s.trim())).collect(Collectors.toList()); + Boolean deleteBatchByIds = noticeTypeService.deleteBatchByTypeIds(nTypeIds); + String msg = deleteBatchByIds ? "" : "数据删除失败,请重试!"; + return ResponseResult.build(deleteBatchByIds ? ResponseCode.DATABASE_DELETE_OK : ResponseCode.DATABASE_DELETE_ERROR, msg, null); + } } 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 725edf3..9c99d95 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/service/INoticeTypeService.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/service/INoticeTypeService.java @@ -28,5 +28,7 @@ public interface INoticeTypeService extends IService { Boolean deleteNoticeTypeById(Long typeId); + Boolean deleteBatchByTypeIds(List typeIds); + } 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 e14fcd3..94a5108 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 @@ -70,4 +70,9 @@ public class NoticeTypeServiceImpl extends ServiceImpl0; } + + @Override + public Boolean deleteBatchByTypeIds(List typeIds) { + return noticeTypeMapper.deleteBatchIds(typeIds)>0; + } } diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/impl/UserServiceImpl.java b/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/impl/UserServiceImpl.java index 498e0a7..17502af 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/impl/UserServiceImpl.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/impl/UserServiceImpl.java @@ -112,6 +112,9 @@ public class UserServiceImpl extends ServiceImpl implements IU @Override public User getUserWithPower(String username) { User user = userMapper.getOneWithPowerByUsername(username); + if (user == null) { + return null; + } if (user.getId() == 1L) { List

menus = menuMapper.selectList(Wrappers.emptyWrapper()); List elements = elementMapper.selectList(Wrappers.emptyWrapper()); diff --git a/ui/src/components/notice/NoticeTypeTable.vue b/ui/src/components/notice/NoticeTypeTable.vue index b9e59cd..b207b1a 100644 --- a/ui/src/components/notice/NoticeTypeTable.vue +++ b/ui/src/components/notice/NoticeTypeTable.vue @@ -99,13 +99,13 @@ export default { 'dataLoading', 'hackReset', 'showTypeData', - 'addTypeData' + 'addTypeData', + 'multiDeleteSelection' ]) }, data() { return { filterSenderName: [], - multipleSelection: [], search: '' } }, @@ -113,7 +113,9 @@ export default { methods: { handleSelectionChange(val) { // val的值为所勾选行的数组对象 - this.multipleSelection = val + noticeTypeStore.$patch((state) => { + state.multiDeleteSelection = val + }) }, indexFormat(index) { return (this.currentPage - 1) * this.pageSize + index + 1 diff --git a/ui/src/pages/notice/NoticeManage.vue b/ui/src/pages/notice/NoticeManage.vue index 333f1ce..f5115fc 100644 --- a/ui/src/pages/notice/NoticeManage.vue +++ b/ui/src/pages/notice/NoticeManage.vue @@ -160,6 +160,11 @@ export default { }) }) .catch(() => {}) + } else { + ElMessage({ + message: '请至少选择一项进行删除', + type: 'warning' + }) } } }, diff --git a/ui/src/pages/notice/NoticeTypeManage.vue b/ui/src/pages/notice/NoticeTypeManage.vue index 5fed4ed..0fc78e5 100644 --- a/ui/src/pages/notice/NoticeTypeManage.vue +++ b/ui/src/pages/notice/NoticeTypeManage.vue @@ -6,7 +6,7 @@ 添加类型 - 批量删除 {}) + }, + deleteBatchByTypeIds() { + const multiDeleteTypeIds = [] + if (this.multiDeleteSelection.length > 0) { + for (let i = 0; i < this.multiDeleteSelection.length; i++) { + multiDeleteTypeIds.push(this.multiDeleteSelection[i].id) + } + ElMessageBox.confirm('确定是否要批量删除?该操作将无法回退', '警告', { + confirmButtonText: '确定', + cancelButtonText: '我再想想', + type: 'warning' + }) + .then(() => { + request.post('/notice_type/batch', multiDeleteTypeIds).then((response) => { + if (response.data.code === 20024) { + ElMessage({ + message: '删除成功.', + type: 'success' + }) + noticeTypeStore.selectNoticeType(this.currentPage, this.pageSize) + } else if (response.data.code === 20034) { + ElMessage({ + message: response.data.msg, + type: 'error' + }) + } + }) + }) + .catch(() => {}) + } else { + ElMessage({ + message: '请至少选择一项进行删除', + type: 'warning' + }) + } } }, mounted() {} diff --git a/ui/src/router/notice.ts b/ui/src/router/notice.ts index 0171ce8..4c74ce4 100644 --- a/ui/src/router/notice.ts +++ b/ui/src/router/notice.ts @@ -6,7 +6,8 @@ const noticeRouter = { icon: shallowRef(IconPinnacleNotice), requiresMenu: true, requiresScrollbar: false, - requiresPadding: true + requiresPadding: true, + requiresAuth: true }, children: [ { diff --git a/ui/src/store/notice.ts b/ui/src/store/notice.ts index 54e41ac..15715ed 100644 --- a/ui/src/store/notice.ts +++ b/ui/src/store/notice.ts @@ -236,6 +236,7 @@ export const useNoticeTypeStore = defineStore('notice_type', { hackReset: true, editFlag: false, enableNoticeTypeList: [], + multiDeleteSelection: [], noticeTypeList: [ { id: '',