From c860e9c3e8d2cbd7310190f77218e454972141e7 Mon Sep 17 00:00:00 2001 From: cccccyb <995134776@qq.com> Date: Tue, 16 May 2023 03:13:19 +0800 Subject: [PATCH] add noticeTypeManage module --- .../pinnacle/controller/NoticeController.java | 18 +-- .../controller/NoticeTypeController.java | 36 +++-- .../pinnacle/mapper/NoticeReceiveMapper.java | 2 +- .../service/INoticeReceiveService.java | 2 +- .../pinnacle/service/INoticeTypeService.java | 3 + .../impl/NoticeReceiveServiceImpl.java | 4 +- .../service/impl/NoticeTypeServiceImpl.java | 16 ++ .../resources/mapper/NoticeReceiveMapper.xml | 54 ++++--- ui/src/assets/svg/add.svg | 1 + ui/src/assets/svg/delete.svg | 1 + ui/src/components/notice/CommitForm.vue | 7 +- ui/src/components/notice/NoticeHead.vue | 4 +- .../components/notice/NoticeManageTable.vue | 27 ++-- ui/src/components/notice/NoticeTypeTable.vue | 145 ++++++++++++++++++ ui/src/components/notice/NoticeViewTable.vue | 12 +- ui/src/pages/notice/AlReadView.vue | 21 +++ ui/src/pages/notice/AllReceiveNoticeView.vue | 21 +++ ui/src/pages/notice/NoticeManage.vue | 3 +- ui/src/pages/notice/NoticeTypeManage.vue | 48 ++++++ ui/src/pages/notice/NoticeView.vue | 15 +- ui/src/pages/notice/ToReadView.vue | 21 +++ ui/src/router/index.ts | 32 ++++ ui/src/store/notice.ts | 58 ++++++- 23 files changed, 460 insertions(+), 91 deletions(-) create mode 100644 ui/src/assets/svg/add.svg create mode 100644 ui/src/assets/svg/delete.svg create mode 100644 ui/src/components/notice/NoticeTypeTable.vue create mode 100644 ui/src/pages/notice/AlReadView.vue create mode 100644 ui/src/pages/notice/AllReceiveNoticeView.vue create mode 100644 ui/src/pages/notice/NoticeTypeManage.vue create mode 100644 ui/src/pages/notice/ToReadView.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 6adc641..a02ef74 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/controller/NoticeController.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/controller/NoticeController.java @@ -38,7 +38,7 @@ public class NoticeController { public ResponseResult selectByNoticeId(@PathVariable Long nid) { Notice noticeById = noticeService.selectByNoticeId(nid); Integer code = noticeById != null ? ResponseCode.DATABASE_SELECT_OK : ResponseCode.DATABASE_SELECT_ERROR; - String msg = noticeById != null ? "" : "数据查询失败,请尝试!"; + String msg = noticeById != null ? "" : "数据查询失败,请重试!"; return ResponseResult.build(code, msg, noticeById); } @@ -53,16 +53,16 @@ public class NoticeController { } int code = noticeList != null ? ResponseCode.DATABASE_SELECT_OK : ResponseCode.DATABASE_SELECT_ERROR; - String msg = noticeList != null ? "" : "数据查询失败,请尝试!"; + String msg = noticeList != null ? "" : "数据查询失败,请重试!"; return ResponseResult.build(code, msg, noticeList); } //根据登录用户id查询所接收的公告 @GetMapping("/ByUserId") - public ResponseResult selectAllByUserId() { - List noticesByUserId = noticeReceiveService.selectAllByUserId(); + public ResponseResult selectByUserId(Integer readStatus) { + List noticesByUserId = noticeReceiveService.selectByUserId(readStatus); Integer code = noticesByUserId != null ? ResponseCode.DATABASE_SELECT_OK : ResponseCode.DATABASE_SELECT_ERROR; - String msg = noticesByUserId != null ? "" : "数据查询失败,请尝试!"; + String msg = noticesByUserId != null ? "" : "数据查询失败,请重试!"; return ResponseResult.build(code, msg, noticesByUserId); } @@ -70,7 +70,7 @@ public class NoticeController { @PutMapping public ResponseResult updateNotice(@RequestBody Notice notice) { boolean updateById = noticeService.updateNotice(notice); - String msg = updateById ? "" : "数据修改失败,请尝试!"; + String msg = updateById ? "" : "数据修改失败,请重试!"; return ResponseResult.build(updateById ? ResponseCode.DATABASE_UPDATE_OK : ResponseCode.DATABASE_UPDATE_ERROR, msg, updateById); } @@ -78,7 +78,7 @@ public class NoticeController { @PostMapping public ResponseResult addNotice(@RequestBody Notice notice) { Boolean insertNotice = noticeService.addNotice(notice); - String msg = insertNotice ? "" : "数据添加失败,请尝试!"; + String msg = insertNotice ? "" : "数据添加失败,请重试!"; return ResponseResult.build(insertNotice ? ResponseCode.DATABASE_SAVE_OK : ResponseCode.DATABASE_SAVE_ERROR, msg, insertNotice); } @@ -86,7 +86,7 @@ public class NoticeController { @DeleteMapping("/{nid}") public ResponseResult deleteByNoticeId(@PathVariable Long nid) { boolean removeById = noticeService.deleteById(nid); - String msg = removeById ? "" : "数据删除失败,请尝试!"; + String msg = removeById ? "" : "数据删除失败,请重试!"; return ResponseResult.build(removeById ? ResponseCode.DATABASE_DELETE_OK : ResponseCode.DATABASE_DELETE_ERROR, msg, removeById); } @@ -109,7 +109,7 @@ public class NoticeController { 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()) : "数据查询失败,请尝试!"; + 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/controller/NoticeTypeController.java b/Pinnacle/src/main/java/com/cfive/pinnacle/controller/NoticeTypeController.java index 6ea426a..9074946 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/controller/NoticeTypeController.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/controller/NoticeTypeController.java @@ -1,15 +1,12 @@ package com.cfive.pinnacle.controller; -import com.cfive.pinnacle.entity.Notice; import com.cfive.pinnacle.entity.NoticeType; import com.cfive.pinnacle.entity.common.ResponseCode; import com.cfive.pinnacle.entity.common.ResponseResult; import com.cfive.pinnacle.service.INoticeTypeService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.CrossOrigin; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.*; import java.util.List; @@ -28,12 +25,33 @@ public class NoticeTypeController { @Autowired INoticeTypeService noticeTypeService; - @GetMapping - public ResponseResult selectTypeList(){ - List selectTypeName = noticeTypeService.selectTypeList(); + @GetMapping("/enable") + public ResponseResult selectEnableTypeList(){ + List selectTypeName = noticeTypeService.selectEnableTypeList(); Integer code = selectTypeName != null ? ResponseCode.DATABASE_SELECT_OK : ResponseCode.DATABASE_SELECT_ERROR; - String msg = selectTypeName != null ? "" : "数据查询失败,请尝试!"; + String msg = selectTypeName != null ? "" : "数据查询失败,请重试!"; return ResponseResult.build(code, msg, selectTypeName); } + @GetMapping + public ResponseResult selectTypeList(){ + List selectTypeList = noticeTypeService.selectTypeList(); + Integer code = selectTypeList != null ? ResponseCode.DATABASE_SELECT_OK : ResponseCode.DATABASE_SELECT_ERROR; + String msg = selectTypeList != null ? "" : "数据查询失败,请重试!"; + return ResponseResult.build(code, msg, selectTypeList); + } + + @PutMapping + public ResponseResult updateTypeEnableById(String typeId,Boolean enable){ + System.out.println(typeId+'\t'+enable); + Long tid=null; + Integer isEnable=null; + if (StringUtils.hasText(typeId)&&null!=enable){ + tid = Long.parseLong(typeId); + isEnable = (enable == true ? 1 : 0); + } + Boolean updateEnableById = noticeTypeService.updateTypeEnableById(tid, isEnable); + String msg = updateEnableById ? "" : "修改失败,请重试!"; + return ResponseResult.build(updateEnableById ? ResponseCode.DATABASE_UPDATE_OK : ResponseCode.DATABASE_UPDATE_ERROR, msg, updateEnableById); + } } 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 395c122..b79e984 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/mapper/NoticeReceiveMapper.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/mapper/NoticeReceiveMapper.java @@ -17,6 +17,6 @@ import java.util.List; */ @Mapper public interface NoticeReceiveMapper extends BaseMapper { - List selectAllByUserId(Long userId); + List selectByUserId(Long userId,Integer readStatus); } 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 08f460b..0979a07 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/service/INoticeReceiveService.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/service/INoticeReceiveService.java @@ -15,5 +15,5 @@ import java.util.List; * @since 2023-04-30 */ public interface INoticeReceiveService extends IService { - List selectAllByUserId(); + List selectByUserId(Integer readStatus); } 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 e74648d..86766bb 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/service/INoticeTypeService.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/service/INoticeTypeService.java @@ -15,5 +15,8 @@ import java.util.List; */ public interface INoticeTypeService extends IService { List selectTypeList(); + List selectEnableTypeList(); + + Boolean updateTypeEnableById(Long typeId, Integer enable); } 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 dc4d06d..f957b30 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 @@ -24,8 +24,8 @@ public class NoticeReceiveServiceImpl extends ServiceImpl selectAllByUserId() { + public List selectByUserId(Integer readStatus) { Long userId = WebUtil.getLoginUser().getUser().getId(); - return noticeReceiveMapper.selectAllByUserId(userId); + return noticeReceiveMapper.selectByUserId(userId,readStatus); } } 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 c6f32d7..172c29d 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 @@ -2,6 +2,7 @@ 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.cfive.pinnacle.entity.NoticeType; import com.cfive.pinnacle.mapper.NoticeTypeMapper; import com.cfive.pinnacle.service.INoticeTypeService; @@ -26,9 +27,24 @@ public class NoticeTypeServiceImpl extends ServiceImpl selectTypeList() { + return noticeTypeMapper.selectList(null); + } + + @Override + public List selectEnableTypeList() { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(NoticeType::getEnable, 1); List noticeTypes = noticeTypeMapper.selectList(lqw); return noticeTypes; } + + @Override + public Boolean updateTypeEnableById(Long typeId, Integer enable) { + if ((null==typeId)||(null==enable)){ + return false; + } + LambdaUpdateWrapper luw = new LambdaUpdateWrapper<>(); + luw.eq(null!=typeId,NoticeType::getId, typeId).set(null!=enable,NoticeType::getEnable,enable); + return noticeTypeMapper.update(null, luw)>0; + } } diff --git a/Pinnacle/src/main/resources/mapper/NoticeReceiveMapper.xml b/Pinnacle/src/main/resources/mapper/NoticeReceiveMapper.xml index 16c8650..ff5bc4c 100644 --- a/Pinnacle/src/main/resources/mapper/NoticeReceiveMapper.xml +++ b/Pinnacle/src/main/resources/mapper/NoticeReceiveMapper.xml @@ -1,31 +1,37 @@ - + select u.id uid, + u.username, + n.id nid, + 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, + notice_receive.id receiveId, + notice_receive.already_read receiveRead from t_notice_receive notice_receive - left join t_notice n on n.id = notice_receive.notice_id - left join t_notice_type type on type.id = n.type_id - left join t_user u on n.sender_id = u.id - where notice_receive.user_id=#{userId} + left join t_notice n on n.id = notice_receive.notice_id + left join t_notice_type type on type.id = n.type_id + left join t_user u on n.sender_id = u.id + + + and notice_receive.already_read=#{readStatus} + + and notice_receive.user_id=#{userId} + diff --git a/ui/src/assets/svg/add.svg b/ui/src/assets/svg/add.svg new file mode 100644 index 0000000..67b6d48 --- /dev/null +++ b/ui/src/assets/svg/add.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/src/assets/svg/delete.svg b/ui/src/assets/svg/delete.svg new file mode 100644 index 0000000..e818192 --- /dev/null +++ b/ui/src/assets/svg/delete.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/src/components/notice/CommitForm.vue b/ui/src/components/notice/CommitForm.vue index d3b7a07..aa709a5 100644 --- a/ui/src/components/notice/CommitForm.vue +++ b/ui/src/components/notice/CommitForm.vue @@ -6,7 +6,7 @@ diff --git a/ui/src/components/notice/NoticeManageTable.vue b/ui/src/components/notice/NoticeManageTable.vue index e621414..dd95fb3 100644 --- a/ui/src/components/notice/NoticeManageTable.vue +++ b/ui/src/components/notice/NoticeManageTable.vue @@ -129,6 +129,7 @@ + + diff --git a/ui/src/components/notice/NoticeViewTable.vue b/ui/src/components/notice/NoticeViewTable.vue index ba9cc3e..6365b25 100644 --- a/ui/src/components/notice/NoticeViewTable.vue +++ b/ui/src/components/notice/NoticeViewTable.vue @@ -1,10 +1,4 @@ + + + diff --git a/ui/src/pages/notice/AllReceiveNoticeView.vue b/ui/src/pages/notice/AllReceiveNoticeView.vue new file mode 100644 index 0000000..916df18 --- /dev/null +++ b/ui/src/pages/notice/AllReceiveNoticeView.vue @@ -0,0 +1,21 @@ + + + + diff --git a/ui/src/pages/notice/NoticeManage.vue b/ui/src/pages/notice/NoticeManage.vue index 0d94054..3189bdd 100644 --- a/ui/src/pages/notice/NoticeManage.vue +++ b/ui/src/pages/notice/NoticeManage.vue @@ -53,6 +53,7 @@ export default { .then((response) => { if (response.data.code === 20021) { noticeStore.selectData = response.data.data + noticeStore.total = parseInt(response.data.msg) ElMessage({ message: '查询成功.', type: 'success' @@ -102,7 +103,7 @@ export default { } }, mounted() { - noticeStore.selectNoticeType() + noticeStore.selectEnableNoticeType() }, computed: { ...mapState(useNoticeStore, ['dialogAddVisible']) diff --git a/ui/src/pages/notice/NoticeTypeManage.vue b/ui/src/pages/notice/NoticeTypeManage.vue new file mode 100644 index 0000000..0b88dfd --- /dev/null +++ b/ui/src/pages/notice/NoticeTypeManage.vue @@ -0,0 +1,48 @@ + + + + diff --git a/ui/src/pages/notice/NoticeView.vue b/ui/src/pages/notice/NoticeView.vue index 05b3a66..ce74a23 100644 --- a/ui/src/pages/notice/NoticeView.vue +++ b/ui/src/pages/notice/NoticeView.vue @@ -5,16 +5,17 @@ - 所有公告 - 已读 - 未读 + 所有公告 + 已读 + 未读 - + @@ -23,9 +24,7 @@ export default { name: 'NoticeView', data() { - return { - activeIndex: '1' - } + return {} }, methods: { handleSelect(key, keyPath) { diff --git a/ui/src/pages/notice/ToReadView.vue b/ui/src/pages/notice/ToReadView.vue new file mode 100644 index 0000000..a0b4f6a --- /dev/null +++ b/ui/src/pages/notice/ToReadView.vue @@ -0,0 +1,21 @@ + + + + diff --git a/ui/src/router/index.ts b/ui/src/router/index.ts index b7ce8f4..1feab83 100644 --- a/ui/src/router/index.ts +++ b/ui/src/router/index.ts @@ -172,10 +172,42 @@ const router = createRouter({ path: 'noticeView', component: async () => await import('@/pages/notice/NoticeView.vue'), name: 'noticeView', + redirect: '/notice/noticeView/all', meta: { title: '公告查看', requiresScrollbar: false, requiresPadding: true + }, + children: [ + { + path: 'all', + component: async () => + await import('@/pages/notice/AllReceiveNoticeView.vue'), + name: 'all' + }, + { + path: 'alRead', + component: async () => + await import('@/pages/notice/AlReadView.vue'), + name: 'alRead' + }, + { + path: 'toRead', + component: async () => + await import('@/pages/notice/ToReadView.vue'), + name: 'toRead' + } + ] + }, + { + path: 'noticeTypeManage', + component: async () => + await import('@/pages/notice/NoticeTypeManage.vue'), + name: 'noticeTypeManage', + meta: { + title: '公告类型管理', + requiresScrollbar: false, + requiresPadding: true } } ] diff --git a/ui/src/store/notice.ts b/ui/src/store/notice.ts index 9d2de43..11be9e5 100644 --- a/ui/src/store/notice.ts +++ b/ui/src/store/notice.ts @@ -23,7 +23,14 @@ export const useNoticeStore = defineStore('notice', { dialogEditVisible: false, editFlag: false, hackReset: true, - noticeTypeList: [], + EnableNoticeTypeList: [], + noticeTypeList: [ + { + id: '', + name: '', + enable: true + } + ], departmentList: [], noticeShowData: { content: '', @@ -75,17 +82,32 @@ export const useNoticeStore = defineStore('notice', { } }) }, - async selectAllNoticeByUserId() { - await request.get('/notice/ByUserId').then((response) => { - this.selectData = response.data.data - if (this.selectData.length !== 0) { - this.loading = false - } + async selectAllNoticeByUserId(readStatus: number) { + await request + .get('/notice/ByUserId', { + readStatus + }) + .then((response) => { + this.selectData = response.data.data + if (this.selectData.length !== 0) { + this.loading = false + } + }) + }, + async selectEnableNoticeType() { + await request.get('/noticeType/enable').then((response) => { + this.EnableNoticeTypeList = response.data.data }) }, async selectNoticeType() { await request.get('/noticeType').then((response) => { this.noticeTypeList = response.data.data + if (response.data.data.length >= 0) { + for (let i = 0; i < this.noticeTypeList.length; i++) { + this.noticeTypeList[i].enable = response.data.data[i].enable === 1 + } + this.loading = false + } }) }, async selectDepartment() { @@ -127,6 +149,28 @@ export const useNoticeStore = defineStore('notice', { }) this.selectAllNotice(1, 5) this.hackReset = false + }, + async updateNoticeTypeEnable(typeId: string, enable: boolean) { + await request + .put('/noticeType', { + typeId, + enable + }) + .then((response) => { + if (response.data.code === 20023) { + ElMessage({ + message: '修改成功.', + type: 'success' + }) + return true + } else if (response.data.code === 20033) { + ElMessage({ + message: response.data.msg, + type: 'error' + }) + return false + } + }) } } })