From 693e825144751867fd8221ab4c9b5f35d5f3b2d7 Mon Sep 17 00:00:00 2001 From: Charles7c Date: Wed, 25 Jan 2023 12:59:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E7=AE=A1=E7=90=86/=E9=83=A8=E9=97=A8?= =?UTF-8?q?=E7=AE=A1=E7=90=86/=E4=BF=AE=E6=94=B9=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E5=8F=8A=E5=88=A0=E9=99=A4=E5=8A=9F=E8=83=BD=EF=BC=88=E5=90=8E?= =?UTF-8?q?=E7=BB=AD=E5=87=A0=E5=A4=A9=E5=BC=80=E5=A7=8B=E5=AF=B9=E7=8E=B0?= =?UTF-8?q?=E6=9C=89=E4=BB=A3=E7=A0=81=E8=BF=9B=E8=A1=8C=E4=BC=98=E5=8C=96?= =?UTF-8?q?=EF=BC=8C=E5=B0=A4=E5=85=B6=E8=A6=81=E5=BC=80=E5=A7=8B=E5=88=9D?= =?UTF-8?q?=E6=AD=A5=E5=B0=81=E8=A3=85=E5=89=8D=E5=90=8E=E7=AB=AF=20CRUD?= =?UTF-8?q?=20=E7=BB=84=E4=BB=B6=EF=BC=8C=E5=B9=B6=E9=92=88=E5=AF=B9?= =?UTF-8?q?=E7=8E=B0=E5=9C=A8=E4=BD=BF=E7=94=A8=E7=9A=84=E9=83=A8=E5=88=86?= =?UTF-8?q?=E8=A7=84=E8=8C=83=E5=8F=91=E8=B5=B7=E9=95=BF=E6=9C=9F=E6=8A=95?= =?UTF-8?q?=E7=A5=A8=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/request/UpdateStatusRequest.java | 46 ++++++++++ .../cnadmin/system/service/DeptService.java | 19 ++++ .../system/service/impl/DeptServiceImpl.java | 14 +++ continew-admin-ui/components.d.ts | 2 + continew-admin-ui/src/api/system/dept.ts | 17 +++- .../src/views/system/dept/index.vue | 86 +++++++++++++------ .../controller/system/DeptController.java | 18 ++++ 7 files changed, 175 insertions(+), 27 deletions(-) create mode 100644 continew-admin-common/src/main/java/top/charles7c/cnadmin/common/model/request/UpdateStatusRequest.java diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/model/request/UpdateStatusRequest.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/model/request/UpdateStatusRequest.java new file mode 100644 index 00000000..c39fa5c9 --- /dev/null +++ b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/model/request/UpdateStatusRequest.java @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2022-present Charles7c Authors. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package top.charles7c.cnadmin.common.model.request; + +import java.io.Serializable; + +import javax.validation.constraints.NotNull; + +import lombok.Data; + +import io.swagger.v3.oas.annotations.media.Schema; + +import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum; + +/** + * 修改状态信息 + * + * @author Charles7c + * @since 2023/1/24 19:51 + */ +@Data +public class UpdateStatusRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 状态(1启用 2禁用) + */ + @Schema(description = "状态(1启用 2禁用)") + @NotNull(message = "状态非法") + private DisEnableStatusEnum status; +} diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/DeptService.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/DeptService.java index 9116ce94..7ae22896 100644 --- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/DeptService.java +++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/DeptService.java @@ -20,6 +20,7 @@ import java.util.List; import cn.hutool.core.lang.tree.Tree; +import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum; import top.charles7c.cnadmin.system.model.query.DeptQuery; import top.charles7c.cnadmin.system.model.request.CreateDeptRequest; import top.charles7c.cnadmin.system.model.vo.DeptVO; @@ -68,6 +69,24 @@ public interface DeptService { */ Long create(CreateDeptRequest request); + /** + * 修改状态 + * + * @param ids + * ID 列表 + * @param status + * 状态 + */ + void updateStatus(List ids, DisEnableStatusEnum status); + + /** + * 删除 + * + * @param ids + * ID 列表 + */ + void delete(List ids); + /** * 检查部门名称是否存在 * diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/DeptServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/DeptServiceImpl.java index 793af09e..edeff341 100644 --- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/DeptServiceImpl.java +++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/DeptServiceImpl.java @@ -140,6 +140,20 @@ public class DeptServiceImpl implements DeptService { return sysDept.getDeptId(); } + @Override + @Transactional(rollbackFor = Exception.class) + public void updateStatus(List ids, DisEnableStatusEnum status) { + deptMapper.update(null, + Wrappers.lambdaUpdate().set(SysDept::getStatus, status).in(SysDept::getDeptId, ids)); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delete(List ids) { + deptMapper.deleteBatchIds(ids); + deptMapper.delete(Wrappers.lambdaQuery().in(SysDept::getParentId, ids)); + } + @Override public boolean checkDeptNameExist(String deptName, Long parentId, Long deptId) { return deptMapper.exists(Wrappers.lambdaQuery().eq(SysDept::getDeptName, deptName) diff --git a/continew-admin-ui/components.d.ts b/continew-admin-ui/components.d.ts index 9ba2091b..54544f7b 100644 --- a/continew-admin-ui/components.d.ts +++ b/continew-admin-ui/components.d.ts @@ -49,6 +49,7 @@ declare module '@vue/runtime-core' { AMenuItem: typeof import('@arco-design/web-vue')['MenuItem'] AModal: typeof import('@arco-design/web-vue')['Modal'] AOption: typeof import('@arco-design/web-vue')['Option'] + APopconfirm: typeof import('@arco-design/web-vue')['Popconfirm'] APopover: typeof import('@arco-design/web-vue')['Popover'] ARadio: typeof import('@arco-design/web-vue')['Radio'] ARadioGroup: typeof import('@arco-design/web-vue')['RadioGroup'] @@ -73,6 +74,7 @@ declare module '@vue/runtime-core' { ATag: typeof import('@arco-design/web-vue')['Tag'] ATextarea: typeof import('@arco-design/web-vue')['Textarea'] ATooltip: typeof import('@arco-design/web-vue')['Tooltip'] + ATreeSelect: typeof import('@arco-design/web-vue')['TreeSelect'] ATypographyParagraph: typeof import('@arco-design/web-vue')['TypographyParagraph'] ATypographyText: typeof import('@arco-design/web-vue')['TypographyText'] ATypographyTitle: typeof import('@arco-design/web-vue')['TypographyTitle'] diff --git a/continew-admin-ui/src/api/system/dept.ts b/continew-admin-ui/src/api/system/dept.ts index 0d21ef6d..a0ea815d 100644 --- a/continew-admin-ui/src/api/system/dept.ts +++ b/continew-admin-ui/src/api/system/dept.ts @@ -2,12 +2,12 @@ import axios from 'axios'; import qs from 'query-string'; export interface DeptRecord { - deptId: string; + deptId?: number; deptName: string; - parentId: number; + parentId?: number; deptSort: number; description: string; - status: number; + status?: number; updateUserString: string; updateTime: string; children: Array, @@ -35,4 +35,15 @@ export interface CreateDeptReq { } export function createDept(req: CreateDeptReq) { return axios.post('/system/dept', req); +} + +export interface UpdateDeptStatusReq { + status: number; +} +export function updateDeptStatus(ids: Array, req: UpdateDeptStatusReq) { + return axios.patch(`/system/dept/${ids}`, req); +} + +export function deleteDept(ids: Array) { + return axios.delete(`/system/dept/${ids}`); } \ No newline at end of file diff --git a/continew-admin-ui/src/views/system/dept/index.vue b/continew-admin-ui/src/views/system/dept/index.vue index 81f3139a..02baf762 100644 --- a/continew-admin-ui/src/views/system/dept/index.vue +++ b/continew-admin-ui/src/views/system/dept/index.vue @@ -19,7 +19,7 @@ - diff --git a/continew-admin-webapi/src/main/java/top/charles7c/cnadmin/webapi/controller/system/DeptController.java b/continew-admin-webapi/src/main/java/top/charles7c/cnadmin/webapi/controller/system/DeptController.java index a5c5190c..39cc293f 100644 --- a/continew-admin-webapi/src/main/java/top/charles7c/cnadmin/webapi/controller/system/DeptController.java +++ b/continew-admin-webapi/src/main/java/top/charles7c/cnadmin/webapi/controller/system/DeptController.java @@ -21,12 +21,15 @@ import java.util.List; import lombok.RequiredArgsConstructor; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.enums.ParameterIn; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.http.MediaType; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import top.charles7c.cnadmin.common.model.request.UpdateStatusRequest; import top.charles7c.cnadmin.common.model.vo.R; import top.charles7c.cnadmin.system.model.query.DeptQuery; import top.charles7c.cnadmin.system.model.request.CreateDeptRequest; @@ -67,4 +70,19 @@ public class DeptController { return R.ok("新增成功", deptService.create(request)); } + + @Operation(summary = "修改部门状态") + @PatchMapping("/{ids}") + public R updateStatus(@PathVariable List ids, @Validated @RequestBody UpdateStatusRequest request) { + deptService.updateStatus(ids, request.getStatus()); + return R.ok(String.format("%s成功", request.getStatus().getDescription())); + } + + @Operation(summary = "删除部门") + @Parameter(name = "ids", description = "ID 列表", in = ParameterIn.PATH) + @DeleteMapping("/{ids}") + public R delete(@PathVariable List ids) { + deptService.delete(ids); + return R.ok("删除成功"); + } }