refactor: 优化部门管理相关 API,合并 DeptResp 及 DeptDetailResp
This commit is contained in:
parent
bd0f40c6ad
commit
a2cf072609
@ -38,11 +38,11 @@ public class DeptQuery implements Serializable {
|
|||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 名称
|
* 关键词
|
||||||
*/
|
*/
|
||||||
@Schema(description = "名称", example = "测试部")
|
@Schema(description = "关键词", example = "测试部")
|
||||||
@Query(type = QueryType.LIKE)
|
@Query(columns = {"name", "description"}, type = QueryType.LIKE)
|
||||||
private String name;
|
private String description;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 状态
|
* 状态
|
||||||
|
@ -1,101 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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.continew.admin.system.model.resp;
|
|
||||||
|
|
||||||
import cn.crane4j.annotation.AssembleMethod;
|
|
||||||
import cn.crane4j.annotation.ContainerMethod;
|
|
||||||
import cn.crane4j.annotation.Mapping;
|
|
||||||
import cn.crane4j.annotation.condition.ConditionOnExpression;
|
|
||||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
|
||||||
import com.alibaba.excel.annotation.ExcelProperty;
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.Data;
|
|
||||||
import top.charles7c.continew.admin.common.enums.DisEnableStatusEnum;
|
|
||||||
import top.charles7c.continew.admin.system.service.DeptService;
|
|
||||||
import top.charles7c.continew.starter.extension.crud.converter.ExcelBaseEnumConverter;
|
|
||||||
import top.charles7c.continew.starter.extension.crud.model.resp.BaseDetailResp;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 部门详情信息
|
|
||||||
*
|
|
||||||
* @author Charles7c
|
|
||||||
* @since 2023/2/1 22:19
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@ExcelIgnoreUnannotated
|
|
||||||
@Schema(description = "部门详情信息")
|
|
||||||
public class DeptDetailResp extends BaseDetailResp {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 名称
|
|
||||||
*/
|
|
||||||
@Schema(description = "名称", example = "测试部")
|
|
||||||
@ExcelProperty(value = "名称")
|
|
||||||
private String name;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 上级部门 ID
|
|
||||||
*/
|
|
||||||
@Schema(description = "上级部门 ID", example = "2")
|
|
||||||
@ConditionOnExpression(value = "#target.parentId != 0")
|
|
||||||
@AssembleMethod(targetType = DeptService.class, method = @ContainerMethod(bindMethod = "get", resultType = DeptDetailResp.class), props = @Mapping(src = "name", ref = "parentName"))
|
|
||||||
private Long parentId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 上级部门
|
|
||||||
*/
|
|
||||||
@Schema(description = "上级部门", example = "天津总部")
|
|
||||||
@ExcelProperty(value = "上级部门")
|
|
||||||
private String parentName;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 排序
|
|
||||||
*/
|
|
||||||
@Schema(description = "排序", example = "1")
|
|
||||||
private Integer sort;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 状态
|
|
||||||
*/
|
|
||||||
@Schema(description = "状态(1:启用;2:禁用)", type = "Integer", allowableValues = {"1", "2"}, example = "1")
|
|
||||||
@ExcelProperty(value = "状态", converter = ExcelBaseEnumConverter.class)
|
|
||||||
private DisEnableStatusEnum status;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 是否为系统内置数据
|
|
||||||
*/
|
|
||||||
@Schema(description = "是否为系统内置数据", example = "false")
|
|
||||||
@ExcelProperty(value = "系统内置")
|
|
||||||
private Boolean isSystem;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 描述
|
|
||||||
*/
|
|
||||||
@Schema(description = "描述", example = "测试部描述信息")
|
|
||||||
@ExcelProperty(value = "描述")
|
|
||||||
private String description;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Boolean getDisabled() {
|
|
||||||
return this.getIsSystem();
|
|
||||||
}
|
|
||||||
}
|
|
@ -16,11 +16,19 @@
|
|||||||
|
|
||||||
package top.charles7c.continew.admin.system.model.resp;
|
package top.charles7c.continew.admin.system.model.resp;
|
||||||
|
|
||||||
|
import cn.crane4j.annotation.AssembleMethod;
|
||||||
|
import cn.crane4j.annotation.ContainerMethod;
|
||||||
|
import cn.crane4j.annotation.Mapping;
|
||||||
|
import cn.crane4j.annotation.condition.ConditionOnExpression;
|
||||||
|
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||||
|
import com.alibaba.excel.annotation.ExcelProperty;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import top.charles7c.continew.admin.common.enums.DisEnableStatusEnum;
|
import top.charles7c.continew.admin.common.enums.DisEnableStatusEnum;
|
||||||
|
import top.charles7c.continew.admin.system.service.DeptService;
|
||||||
import top.charles7c.continew.starter.extension.crud.annotation.TreeField;
|
import top.charles7c.continew.starter.extension.crud.annotation.TreeField;
|
||||||
import top.charles7c.continew.starter.extension.crud.model.resp.BaseResp;
|
import top.charles7c.continew.starter.extension.crud.converter.ExcelBaseEnumConverter;
|
||||||
|
import top.charles7c.continew.starter.extension.crud.model.resp.BaseDetailResp;
|
||||||
|
|
||||||
import java.io.Serial;
|
import java.io.Serial;
|
||||||
|
|
||||||
@ -31,9 +39,10 @@ import java.io.Serial;
|
|||||||
* @since 2023/1/22 13:53
|
* @since 2023/1/22 13:53
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
|
@ExcelIgnoreUnannotated
|
||||||
@TreeField(value = "id", nameKey = "name")
|
@TreeField(value = "id", nameKey = "name")
|
||||||
@Schema(description = "部门信息")
|
@Schema(description = "部门信息")
|
||||||
public class DeptResp extends BaseResp {
|
public class DeptResp extends BaseDetailResp {
|
||||||
|
|
||||||
@Serial
|
@Serial
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
@ -42,36 +51,50 @@ public class DeptResp extends BaseResp {
|
|||||||
* 名称
|
* 名称
|
||||||
*/
|
*/
|
||||||
@Schema(description = "名称", example = "测试部")
|
@Schema(description = "名称", example = "测试部")
|
||||||
|
@ExcelProperty(value = "名称")
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 上级部门 ID
|
* 上级部门 ID
|
||||||
*/
|
*/
|
||||||
@Schema(description = "上级部门 ID", example = "2")
|
@Schema(description = "上级部门 ID", example = "2")
|
||||||
|
@ConditionOnExpression(value = "#target.parentId != 0")
|
||||||
|
@AssembleMethod(targetType = DeptService.class, method = @ContainerMethod(bindMethod = "get", resultType = DeptResp.class), props = @Mapping(src = "name", ref = "parentName"))
|
||||||
private Long parentId;
|
private Long parentId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 排序
|
* 上级部门
|
||||||
*/
|
*/
|
||||||
@Schema(description = "排序", example = "3")
|
@Schema(description = "上级部门", example = "天津总部")
|
||||||
private Integer sort;
|
@ExcelProperty(value = "上级部门")
|
||||||
|
private String parentName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 状态
|
* 状态
|
||||||
*/
|
*/
|
||||||
@Schema(description = "状态(1:启用;2:禁用)", type = "Integer", allowableValues = {"1", "2"}, example = "1")
|
@Schema(description = "状态(1:启用;2:禁用)", type = "Integer", allowableValues = {"1", "2"}, example = "1")
|
||||||
|
@ExcelProperty(value = "状态", converter = ExcelBaseEnumConverter.class)
|
||||||
private DisEnableStatusEnum status;
|
private DisEnableStatusEnum status;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 排序
|
||||||
|
*/
|
||||||
|
@Schema(description = "排序", example = "3")
|
||||||
|
@ExcelProperty(value = "排序")
|
||||||
|
private Integer sort;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否为系统内置数据
|
* 是否为系统内置数据
|
||||||
*/
|
*/
|
||||||
@Schema(description = "是否为系统内置数据", example = "false")
|
@Schema(description = "是否为系统内置数据", example = "false")
|
||||||
|
@ExcelProperty(value = "系统内置")
|
||||||
private Boolean isSystem;
|
private Boolean isSystem;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 描述
|
* 描述
|
||||||
*/
|
*/
|
||||||
@Schema(description = "描述", example = "测试部描述信息")
|
@Schema(description = "描述", example = "测试部描述信息")
|
||||||
|
@ExcelProperty(value = "描述")
|
||||||
private String description;
|
private String description;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -125,7 +125,7 @@ public class UserDetailResp extends BaseDetailResp {
|
|||||||
* 部门 ID
|
* 部门 ID
|
||||||
*/
|
*/
|
||||||
@Schema(description = "部门 ID", example = "5")
|
@Schema(description = "部门 ID", example = "5")
|
||||||
@AssembleMethod(targetType = DeptService.class, method = @ContainerMethod(bindMethod = "get", resultType = DeptDetailResp.class), props = @Mapping(src = "name", ref = "deptName"))
|
@AssembleMethod(targetType = DeptService.class, method = @ContainerMethod(bindMethod = "get", resultType = DeptResp.class), props = @Mapping(src = "name", ref = "deptName"))
|
||||||
private Long deptId;
|
private Long deptId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -19,10 +19,9 @@ package top.charles7c.continew.admin.system.service;
|
|||||||
import top.charles7c.continew.admin.system.model.entity.DeptDO;
|
import top.charles7c.continew.admin.system.model.entity.DeptDO;
|
||||||
import top.charles7c.continew.admin.system.model.query.DeptQuery;
|
import top.charles7c.continew.admin.system.model.query.DeptQuery;
|
||||||
import top.charles7c.continew.admin.system.model.req.DeptReq;
|
import top.charles7c.continew.admin.system.model.req.DeptReq;
|
||||||
import top.charles7c.continew.admin.system.model.resp.DeptDetailResp;
|
|
||||||
import top.charles7c.continew.admin.system.model.resp.DeptResp;
|
import top.charles7c.continew.admin.system.model.resp.DeptResp;
|
||||||
import top.charles7c.continew.starter.extension.crud.service.BaseService;
|
|
||||||
import top.charles7c.continew.starter.data.mybatis.plus.service.IService;
|
import top.charles7c.continew.starter.data.mybatis.plus.service.IService;
|
||||||
|
import top.charles7c.continew.starter.extension.crud.service.BaseService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 部门业务接口
|
* 部门业务接口
|
||||||
@ -30,4 +29,4 @@ import top.charles7c.continew.starter.data.mybatis.plus.service.IService;
|
|||||||
* @author Charles7c
|
* @author Charles7c
|
||||||
* @since 2023/1/22 17:54
|
* @since 2023/1/22 17:54
|
||||||
*/
|
*/
|
||||||
public interface DeptService extends BaseService<DeptResp, DeptDetailResp, DeptQuery, DeptReq>, IService<DeptDO> {}
|
public interface DeptService extends BaseService<DeptResp, DeptResp, DeptQuery, DeptReq>, IService<DeptDO> {}
|
||||||
|
@ -27,7 +27,6 @@ import top.charles7c.continew.admin.system.mapper.DeptMapper;
|
|||||||
import top.charles7c.continew.admin.system.model.entity.DeptDO;
|
import top.charles7c.continew.admin.system.model.entity.DeptDO;
|
||||||
import top.charles7c.continew.admin.system.model.query.DeptQuery;
|
import top.charles7c.continew.admin.system.model.query.DeptQuery;
|
||||||
import top.charles7c.continew.admin.system.model.req.DeptReq;
|
import top.charles7c.continew.admin.system.model.req.DeptReq;
|
||||||
import top.charles7c.continew.admin.system.model.resp.DeptDetailResp;
|
|
||||||
import top.charles7c.continew.admin.system.model.resp.DeptResp;
|
import top.charles7c.continew.admin.system.model.resp.DeptResp;
|
||||||
import top.charles7c.continew.admin.system.service.DeptService;
|
import top.charles7c.continew.admin.system.service.DeptService;
|
||||||
import top.charles7c.continew.admin.system.service.RoleDeptService;
|
import top.charles7c.continew.admin.system.service.RoleDeptService;
|
||||||
@ -49,7 +48,7 @@ import java.util.Optional;
|
|||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class DeptServiceImpl extends BaseServiceImpl<DeptMapper, DeptDO, DeptResp, DeptDetailResp, DeptQuery, DeptReq> implements DeptService {
|
public class DeptServiceImpl extends BaseServiceImpl<DeptMapper, DeptDO, DeptResp, DeptResp, DeptQuery, DeptReq> implements DeptService {
|
||||||
|
|
||||||
private final UserService userService;
|
private final UserService userService;
|
||||||
private final RoleDeptService roleDeptService;
|
private final RoleDeptService roleDeptService;
|
||||||
@ -60,7 +59,7 @@ public class DeptServiceImpl extends BaseServiceImpl<DeptMapper, DeptDO, DeptRes
|
|||||||
boolean isExists = this.isNameExists(name, req.getParentId(), null);
|
boolean isExists = this.isNameExists(name, req.getParentId(), null);
|
||||||
CheckUtils.throwIf(isExists, "新增失败,[{}] 已存在", name);
|
CheckUtils.throwIf(isExists, "新增失败,[{}] 已存在", name);
|
||||||
req.setAncestors(this.getAncestors(req.getParentId()));
|
req.setAncestors(this.getAncestors(req.getParentId()));
|
||||||
req.setStatus(DisEnableStatusEnum.DISABLE);
|
req.setStatus(DisEnableStatusEnum.ENABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -17,12 +17,9 @@
|
|||||||
package top.charles7c.continew.admin.webapi.system;
|
package top.charles7c.continew.admin.webapi.system;
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.bind.annotation.*;
|
|
||||||
|
|
||||||
import top.charles7c.continew.admin.system.model.query.DeptQuery;
|
import top.charles7c.continew.admin.system.model.query.DeptQuery;
|
||||||
import top.charles7c.continew.admin.system.model.req.DeptReq;
|
import top.charles7c.continew.admin.system.model.req.DeptReq;
|
||||||
import top.charles7c.continew.admin.system.model.resp.DeptDetailResp;
|
|
||||||
import top.charles7c.continew.admin.system.model.resp.DeptResp;
|
import top.charles7c.continew.admin.system.model.resp.DeptResp;
|
||||||
import top.charles7c.continew.admin.system.service.DeptService;
|
import top.charles7c.continew.admin.system.service.DeptService;
|
||||||
import top.charles7c.continew.starter.extension.crud.annotation.CrudRequestMapping;
|
import top.charles7c.continew.starter.extension.crud.annotation.CrudRequestMapping;
|
||||||
@ -38,4 +35,4 @@ import top.charles7c.continew.starter.extension.crud.enums.Api;
|
|||||||
@Tag(name = "部门管理 API")
|
@Tag(name = "部门管理 API")
|
||||||
@RestController
|
@RestController
|
||||||
@CrudRequestMapping(value = "/system/dept", api = {Api.TREE, Api.GET, Api.ADD, Api.UPDATE, Api.DELETE, Api.EXPORT})
|
@CrudRequestMapping(value = "/system/dept", api = {Api.TREE, Api.GET, Api.ADD, Api.UPDATE, Api.DELETE, Api.EXPORT})
|
||||||
public class DeptController extends BaseController<DeptService, DeptResp, DeptDetailResp, DeptQuery, DeptReq> {}
|
public class DeptController extends BaseController<DeptService, DeptResp, DeptResp, DeptQuery, DeptReq> {}
|
||||||
|
Loading…
Reference in New Issue
Block a user