From a2c6571c0e39ff07634d14c896541a488ca30104 Mon Sep 17 00:00:00 2001 From: FatttSnake Date: Sat, 3 Jun 2023 07:32:34 +0800 Subject: [PATCH] Added DepartmentManagement --- .../controller/DepartmentController.java | 56 ++- .../pinnacle/controller/StaffController.java | 3 - .../pinnacle/mapper/DepartmentMapper.java | 5 + .../pinnacle/service/IDepartmentService.java | 3 + .../service/impl/DepartmentServiceImpl.java | 21 +- .../service/impl/StaffServiceImpl.java | 2 +- .../resources/mapper/DepartmentMapper.xml | 26 ++ sql/init.sql | 5 +- ui/src/pages/info/DepartmentManagement.vue | 324 ++++++++++++++++++ ui/src/pages/info/StaffManagement.vue | 2 +- ui/src/router/info.ts | 11 + ui/src/store/notice.ts | 2 +- 12 files changed, 443 insertions(+), 17 deletions(-) create mode 100644 ui/src/pages/info/DepartmentManagement.vue diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/controller/DepartmentController.java b/Pinnacle/src/main/java/com/cfive/pinnacle/controller/DepartmentController.java index ad50b9b..49ab815 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/controller/DepartmentController.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/controller/DepartmentController.java @@ -1,14 +1,14 @@ package com.cfive.pinnacle.controller; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.cfive.pinnacle.entity.Department; import com.cfive.pinnacle.entity.common.ResponseCode; import com.cfive.pinnacle.entity.common.ResponseResult; import com.cfive.pinnacle.service.IDepartmentService; +import io.swagger.v3.oas.annotations.tags.Tag; 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.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; import java.util.List; @@ -22,18 +22,58 @@ import java.util.List; */ @RestController @RequestMapping("/department") -@CrossOrigin +@Tag(name = "部门", description = "部门相关接口") public class DepartmentController { + private IDepartmentService departmentService; + @Autowired - IDepartmentService departmentService; + public void setDepartmentService(IDepartmentService departmentService) { + this.departmentService = departmentService; + } //获取所有部门及其各部门所属成员 - @GetMapping - public ResponseResult getDepartAndUser(){ + @GetMapping("/user") + @Deprecated + public ResponseResult getDepartAndUser() { List getDepartAndUser = departmentService.getDepartAndUser(); Integer code = getDepartAndUser != null ? ResponseCode.DATABASE_SELECT_OK : ResponseCode.DATABASE_SELECT_ERROR; String msg = getDepartAndUser != null ? "" : "数据查询失败,请尝试!"; return ResponseResult.build(code, msg, getDepartAndUser); } + @GetMapping + @PreAuthorize("hasAuthority('department:admin:get')") + public ResponseResult> getAllDepartment(Long currentPage, Long pageSize, Integer searchType, String searchInput) { + return ResponseResult.databaseSelectSuccess(departmentService.getAllDepartment(currentPage, pageSize, searchType, searchInput)); + } + + @PostMapping + @PreAuthorize("hasAuthority('department:admin:add')") + public ResponseResult addDepartment(@RequestBody Department department) { + if (departmentService.save(department)) { + return ResponseResult.databaseSaveSuccess(null); + } else { + return ResponseResult.build(ResponseCode.DATABASE_SAVE_ERROR, "error", null); + } + } + + @PutMapping + @PreAuthorize("hasAuthority('department:admin:modify')") + public ResponseResult modifyDepartment(@RequestBody Department department) { + if (departmentService.updateById(department)) { + return ResponseResult.databaseUpdateSuccess(null); + } else { + return ResponseResult.build(ResponseCode.DATABASE_SAVE_ERROR, "error", null); + } + } + + @DeleteMapping("/{id}") + @PreAuthorize("hasAuthority('department:admin:delete')") + public ResponseResult deleteDepartment(@PathVariable Long id) { + if (departmentService.removeById(id)) { + return ResponseResult.databaseDeleteSuccess(); + } else { + return ResponseResult.build(ResponseCode.DATABASE_DELETE_ERROR, "error", null); + } + } } diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/controller/StaffController.java b/Pinnacle/src/main/java/com/cfive/pinnacle/controller/StaffController.java index 72b6642..284972b 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/controller/StaffController.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/controller/StaffController.java @@ -5,7 +5,6 @@ import com.cfive.pinnacle.entity.common.ResponseCode; import com.cfive.pinnacle.entity.common.ResponseResult; import com.cfive.pinnacle.entity.permission.User; import com.cfive.pinnacle.service.IStaffService; -import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; @@ -18,7 +17,6 @@ import org.springframework.web.bind.annotation.*; * @author FatttSnake * @since 2023-04-30 */ -@Slf4j @RestController @RequestMapping("/staff") public class StaffController { @@ -38,7 +36,6 @@ public class StaffController { @PutMapping @PreAuthorize("hasAnyAuthority('staff:manege:modify', 'staff:admin:modify')") public ResponseResult modifyStaff(@RequestBody User user) { - log.info(user.toString()); if (staffService.modifyStaff(user)) { return ResponseResult.databaseUpdateSuccess(null); } else { 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 80b9ad5..f50edb8 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/mapper/DepartmentMapper.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/mapper/DepartmentMapper.java @@ -1,8 +1,10 @@ package com.cfive.pinnacle.mapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.cfive.pinnacle.entity.Department; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -16,5 +18,8 @@ import java.util.List; */ @Mapper public interface DepartmentMapper extends BaseMapper { + @Deprecated List getDepartAndUser(); + + IPage getAllDepartment(IPage page, @Param("searchType") Integer searchType, @Param("searchInput") String searchInput); } diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/service/IDepartmentService.java b/Pinnacle/src/main/java/com/cfive/pinnacle/service/IDepartmentService.java index 9151f5d..0ef3cda 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/service/IDepartmentService.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/service/IDepartmentService.java @@ -1,5 +1,6 @@ package com.cfive.pinnacle.service; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.cfive.pinnacle.entity.Department; import com.baomidou.mybatisplus.extension.service.IService; @@ -14,6 +15,8 @@ import java.util.List; * @since 2023-04-30 */ public interface IDepartmentService extends IService { + @Deprecated List getDepartAndUser(); + IPage getAllDepartment(Long currentPage, Long pageSize, Integer searchType, String searchInput); } 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 00cef07..db2b90d 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 @@ -1,5 +1,7 @@ package com.cfive.pinnacle.service.impl; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO; import com.cfive.pinnacle.entity.Department; import com.cfive.pinnacle.mapper.DepartmentMapper; import com.cfive.pinnacle.service.IDepartmentService; @@ -19,11 +21,28 @@ import java.util.List; */ @Service public class DepartmentServiceImpl extends ServiceImpl implements IDepartmentService { - @Autowired private DepartmentMapper departmentMapper; + @Autowired + public void setDepartmentMapper(DepartmentMapper departmentMapper) { + this.departmentMapper = departmentMapper; + } + @Override + @Deprecated public List getDepartAndUser() { return departmentMapper.getDepartAndUser(); } + + @Override + public IPage getAllDepartment(Long currentPage, Long pageSize, Integer searchType, String searchInput) { + IPage departmentIPage; + if (currentPage == null || pageSize == null) { + departmentIPage = PageDTO.of(0, -1); + } else { + departmentIPage = PageDTO.of(currentPage, pageSize); + } + searchInput = searchInput.trim(); + return departmentMapper.getAllDepartment(departmentIPage, searchType, searchInput); + } } diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/service/impl/StaffServiceImpl.java b/Pinnacle/src/main/java/com/cfive/pinnacle/service/impl/StaffServiceImpl.java index 71c4eee..6dcd6d2 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/service/impl/StaffServiceImpl.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/service/impl/StaffServiceImpl.java @@ -47,7 +47,7 @@ public class StaffServiceImpl extends ServiceImpl implements } else { userIPage = PageDTO.of(currentPage, pageSize); } - searchInput = searchInput.trim(); + searchInput = searchInput.trim(); return staffMapper.getAllStaff(userIPage, departmentId, searchType, searchInput, searchGender, searchBirthFrom, searchBirthTo); } diff --git a/Pinnacle/src/main/resources/mapper/DepartmentMapper.xml b/Pinnacle/src/main/resources/mapper/DepartmentMapper.xml index 374bc30..378e012 100644 --- a/Pinnacle/src/main/resources/mapper/DepartmentMapper.xml +++ b/Pinnacle/src/main/resources/mapper/DepartmentMapper.xml @@ -1,6 +1,32 @@ + + + diff --git a/sql/init.sql b/sql/init.sql index 8859d01..a8a0db3 100644 --- a/sql/init.sql +++ b/sql/init.sql @@ -83,9 +83,10 @@ create table `t_department` `id` bigint not null primary key, `name` varchar(50) not null comment '部门名', `tel` varchar(20) null comment '部门电话', - `address` varchar(20) null comment '部门地址', + `address` varchar(100) null comment '部门地址', `deleted` bigint not null default 0, - `version` int not null default 0 + `version` int not null default 0, + constraint t_user_unique unique (name, deleted) ) comment '部门'; create table `t_user` diff --git a/ui/src/pages/info/DepartmentManagement.vue b/ui/src/pages/info/DepartmentManagement.vue new file mode 100644 index 0000000..0633b17 --- /dev/null +++ b/ui/src/pages/info/DepartmentManagement.vue @@ -0,0 +1,324 @@ + + + + + diff --git a/ui/src/pages/info/StaffManagement.vue b/ui/src/pages/info/StaffManagement.vue index 9b6cc63..7d2d9dc 100644 --- a/ui/src/pages/info/StaffManagement.vue +++ b/ui/src/pages/info/StaffManagement.vue @@ -185,7 +185,7 @@ export default { inputFirstName: [ { required: true, - message: '名称为必填项' + message: '名字为必填项' } ], inputLastName: [ diff --git a/ui/src/router/info.ts b/ui/src/router/info.ts index bf7ed1f..7645f24 100644 --- a/ui/src/router/info.ts +++ b/ui/src/router/info.ts @@ -13,6 +13,17 @@ const infoRouter = { requiresScrollbar: true, requiresPadding: true } + }, + { + path: 'department', + name: 'departmentManagement', + component: async () => await import('@/pages/info/DepartmentManagement.vue'), + meta: { + title: '部门信息管理', + requiresMenu: true, + requiresScrollbar: true, + requiresPadding: true + } } ], meta: { diff --git a/ui/src/store/notice.ts b/ui/src/store/notice.ts index a4cbbab..284b88a 100644 --- a/ui/src/store/notice.ts +++ b/ui/src/store/notice.ts @@ -155,7 +155,7 @@ export const useNoticeStore = defineStore('notice', { }) }, async selectDepartment() { - await request.get('/department').then((response) => { + await request.get('/department/user').then((response) => { this.departmentList = response.data.data }) },