From 07d1e317829ecbb6ea11bd5ba73fad6111f85a0b Mon Sep 17 00:00:00 2001 From: zhenxianyimeng <1920405993@qq.com> Date: Wed, 26 Jun 2019 23:54:07 +0800 Subject: [PATCH] =?UTF-8?q?=E9=83=A8=E9=97=A8=E7=AE=A1=E7=90=86=E6=9B=B4?= =?UTF-8?q?=E7=BB=86=E5=92=8C=E5=88=A0=E9=99=A4=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/admins/DeptmentController.java | 22 +++++++- .../mall/admin/api/DeptmentService.java | 5 ++ .../api/constant/AdminErrorCodeEnum.java | 6 ++- .../api/dto/depetment/DeptmentUpdateDTO.java | 39 ++++++++++++++ .../mall/admin/convert/DeptmentConvert.java | 4 ++ .../mall/admin/dao/DeptmentRoleMapper.java | 9 ++++ .../admin/service/DeptmentServiceImpl.java | 52 +++++++++++++++++++ 7 files changed, 133 insertions(+), 4 deletions(-) create mode 100644 system/system-service-api/src/main/java/cn/iocoder/mall/admin/api/dto/depetment/DeptmentUpdateDTO.java diff --git a/system/system-application/src/main/java/cn/iocoder/mall/admin/application/controller/admins/DeptmentController.java b/system/system-application/src/main/java/cn/iocoder/mall/admin/application/controller/admins/DeptmentController.java index b18e32cdc..75da64dc4 100644 --- a/system/system-application/src/main/java/cn/iocoder/mall/admin/application/controller/admins/DeptmentController.java +++ b/system/system-application/src/main/java/cn/iocoder/mall/admin/application/controller/admins/DeptmentController.java @@ -7,17 +7,18 @@ import cn.iocoder.mall.admin.api.bo.deptment.DeptmentBO; import cn.iocoder.mall.admin.api.constant.ResourceConstants; import cn.iocoder.mall.admin.api.dto.depetment.DeptmentAddDTO; import cn.iocoder.mall.admin.api.dto.depetment.DeptmentPageDTO; +import cn.iocoder.mall.admin.api.dto.depetment.DeptmentUpdateDTO; import cn.iocoder.mall.admin.application.convert.DeptmentConvert; import cn.iocoder.mall.admin.application.vo.deptment.DeptmentVO; -import cn.iocoder.mall.admin.application.vo.resource.ResourceTreeNodeVO; +import cn.iocoder.mall.admin.sdk.context.AdminSecurityContext; import cn.iocoder.mall.admin.sdk.context.AdminSecurityContextHolder; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -74,6 +75,23 @@ public class DeptmentController { } + @PostMapping("delete") + @ApiOperation(value = "删除部门") + @ApiImplicitParam(name = "id", value = "部门id", required = true, example = "1") + public CommonResult delete(@RequestParam("id") Integer id){ + + return success(deptmentService.deleteDeptment( + AdminSecurityContextHolder.getContext().getAdminId(), id + )); + } + + @PostMapping("update") + @ApiOperation(value = "更新部门") + public CommonResult update(@RequestBody DeptmentUpdateDTO deptmentUpdateDTO){ + return success(deptmentService.updateDeptment( + AdminSecurityContextHolder.getContext().getAdminId(), deptmentUpdateDTO + )); + } } diff --git a/system/system-service-api/src/main/java/cn/iocoder/mall/admin/api/DeptmentService.java b/system/system-service-api/src/main/java/cn/iocoder/mall/admin/api/DeptmentService.java index d1ab4ef80..66c4f4d74 100644 --- a/system/system-service-api/src/main/java/cn/iocoder/mall/admin/api/DeptmentService.java +++ b/system/system-service-api/src/main/java/cn/iocoder/mall/admin/api/DeptmentService.java @@ -4,6 +4,7 @@ import cn.iocoder.common.framework.vo.PageResult; import cn.iocoder.mall.admin.api.bo.deptment.DeptmentBO; import cn.iocoder.mall.admin.api.dto.depetment.DeptmentAddDTO; import cn.iocoder.mall.admin.api.dto.depetment.DeptmentPageDTO; +import cn.iocoder.mall.admin.api.dto.depetment.DeptmentUpdateDTO; import java.util.List; @@ -18,6 +19,10 @@ public interface DeptmentService { DeptmentBO addDeptment(Integer adminId, DeptmentAddDTO deptmentAddDTO); + Boolean deleteDeptment(Integer adminId, Integer deptmentId); + + Boolean updateDeptment(Integer adminId, DeptmentUpdateDTO deptmentUpdateDTO); + PageResult getPageRootDeptment(DeptmentPageDTO deptmentPageDTO); List getAllDeptments(); diff --git a/system/system-service-api/src/main/java/cn/iocoder/mall/admin/api/constant/AdminErrorCodeEnum.java b/system/system-service-api/src/main/java/cn/iocoder/mall/admin/api/constant/AdminErrorCodeEnum.java index 48786700a..f249fdd28 100644 --- a/system/system-service-api/src/main/java/cn/iocoder/mall/admin/api/constant/AdminErrorCodeEnum.java +++ b/system/system-service-api/src/main/java/cn/iocoder/mall/admin/api/constant/AdminErrorCodeEnum.java @@ -60,8 +60,10 @@ public enum AdminErrorCodeEnum { // ========== 部门模块 1002007000 ========== DEPT_SAME_LEVEL_NAME_EXITS(1002007001,"当前级别部门名字已存在"), - DEPT_PARENT_NOT_EXITS(1002007002,"父级部门不存在") - + DEPT_PARENT_NOT_EXITS(1002007002,"父级部门不存在"), + DEPT_NOT_EXITS(1002007003, "当前部门不存在"), + DEPT_EXITS_CHILDREN(1002007004, "当前部门存在子部门"), + DEPT_PARENT_NOT_LEGAL(1002007005, "父级部门不合法"), ; private final int code; diff --git a/system/system-service-api/src/main/java/cn/iocoder/mall/admin/api/dto/depetment/DeptmentUpdateDTO.java b/system/system-service-api/src/main/java/cn/iocoder/mall/admin/api/dto/depetment/DeptmentUpdateDTO.java new file mode 100644 index 000000000..f2539dc14 --- /dev/null +++ b/system/system-service-api/src/main/java/cn/iocoder/mall/admin/api/dto/depetment/DeptmentUpdateDTO.java @@ -0,0 +1,39 @@ +package cn.iocoder.mall.admin.api.dto.depetment; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * Description: + * + * @author: zhenxianyimeng + * @date: 2019-06-26 + * @time: 22:37 + */ +@ApiModel("部门更新DTO") +@Data +public class DeptmentUpdateDTO implements Serializable { + + private static final long serialVersionUID = 8905970407110374395L; + + @ApiModelProperty(value = "部门id", required = true, example = "1") + @NotNull(message = "部门id不能为空") + private Integer id; + + @ApiModelProperty(value = "部门名字", required = true, example = "销售部") + @NotEmpty(message = "部门名字不为空") + private String name; + + @ApiModelProperty(value = "部门排序", required = true, example = "1") + @NotNull(message = "部门排序不为空") + private Integer sort; + + @ApiModelProperty(value = "父级部门id", required = true, example = "1") + private Integer pid; + +} diff --git a/system/system-service-impl/src/main/java/cn/iocoder/mall/admin/convert/DeptmentConvert.java b/system/system-service-impl/src/main/java/cn/iocoder/mall/admin/convert/DeptmentConvert.java index 885f53317..94b7479ee 100644 --- a/system/system-service-impl/src/main/java/cn/iocoder/mall/admin/convert/DeptmentConvert.java +++ b/system/system-service-impl/src/main/java/cn/iocoder/mall/admin/convert/DeptmentConvert.java @@ -3,6 +3,7 @@ package cn.iocoder.mall.admin.convert; import cn.iocoder.common.framework.vo.PageResult; import cn.iocoder.mall.admin.api.bo.deptment.DeptmentBO; import cn.iocoder.mall.admin.api.dto.depetment.DeptmentAddDTO; +import cn.iocoder.mall.admin.api.dto.depetment.DeptmentUpdateDTO; import cn.iocoder.mall.admin.dataobject.DeptmentDO; import com.baomidou.mybatisplus.core.metadata.IPage; import org.mapstruct.Mapper; @@ -35,4 +36,7 @@ public interface DeptmentConvert { @Mappings({}) List convert(List list); + + @Mappings({}) + DeptmentDO convert(DeptmentUpdateDTO deptmentUpdateDTO); } diff --git a/system/system-service-impl/src/main/java/cn/iocoder/mall/admin/dao/DeptmentRoleMapper.java b/system/system-service-impl/src/main/java/cn/iocoder/mall/admin/dao/DeptmentRoleMapper.java index e062a607b..d02e72311 100644 --- a/system/system-service-impl/src/main/java/cn/iocoder/mall/admin/dao/DeptmentRoleMapper.java +++ b/system/system-service-impl/src/main/java/cn/iocoder/mall/admin/dao/DeptmentRoleMapper.java @@ -1,6 +1,7 @@ package cn.iocoder.mall.admin.dao; import cn.iocoder.mall.admin.dataobject.DeptmentRoleDO; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** @@ -12,4 +13,12 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface DeptmentRoleMapper extends BaseMapper { + default int deleteByDeptmentId(Integer deptmentId){ + return delete(new QueryWrapper().eq("deptment_id", deptmentId)); + } + + default int deleteByRoleId(Integer roleId){ + return delete(new QueryWrapper().eq("role_id", roleId)); + } + } diff --git a/system/system-service-impl/src/main/java/cn/iocoder/mall/admin/service/DeptmentServiceImpl.java b/system/system-service-impl/src/main/java/cn/iocoder/mall/admin/service/DeptmentServiceImpl.java index b56da932a..d7ec20235 100644 --- a/system/system-service-impl/src/main/java/cn/iocoder/mall/admin/service/DeptmentServiceImpl.java +++ b/system/system-service-impl/src/main/java/cn/iocoder/mall/admin/service/DeptmentServiceImpl.java @@ -1,5 +1,6 @@ package cn.iocoder.mall.admin.service; +import cn.iocoder.common.framework.util.ExceptionUtil; import cn.iocoder.common.framework.util.ServiceExceptionUtil; import cn.iocoder.common.framework.vo.PageResult; import cn.iocoder.mall.admin.api.DeptmentService; @@ -8,12 +9,17 @@ import cn.iocoder.mall.admin.api.constant.AdminErrorCodeEnum; import cn.iocoder.mall.admin.api.constant.DeptmentConstants; import cn.iocoder.mall.admin.api.dto.depetment.DeptmentAddDTO; import cn.iocoder.mall.admin.api.dto.depetment.DeptmentPageDTO; +import cn.iocoder.mall.admin.api.dto.depetment.DeptmentUpdateDTO; import cn.iocoder.mall.admin.convert.DeptmentConvert; import cn.iocoder.mall.admin.dao.DeptmentMapper; +import cn.iocoder.mall.admin.dao.DeptmentRoleMapper; import cn.iocoder.mall.admin.dataobject.DeptmentDO; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.kafka.KafkaProperties; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; import java.util.List; @@ -30,6 +36,9 @@ public class DeptmentServiceImpl implements DeptmentService { @Autowired private DeptmentMapper deptmentMapper; + @Autowired + private DeptmentRoleMapper deptmentRoleMapper; + @Override public DeptmentBO addDeptment(Integer adminId, DeptmentAddDTO deptmentAddDTO) { if (deptmentAddDTO.getPid() != 0 && @@ -45,6 +54,49 @@ public class DeptmentServiceImpl implements DeptmentService { return DeptmentConvert.INSTANCE.convert(deptmentDO); } + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean deleteDeptment(Integer adminId, Integer deptmentId) { + if(deptmentMapper.selectById(deptmentId) == null){ + throw ServiceExceptionUtil.exception(AdminErrorCodeEnum.DEPT_NOT_EXITS.getCode()); + } + + if(!CollectionUtils.isEmpty(deptmentMapper.getDeptByPid(deptmentId))){ + throw ServiceExceptionUtil.exception(AdminErrorCodeEnum.DEPT_EXITS_CHILDREN.getCode()); + } + + deptmentMapper.deleteById(deptmentId); + + deptmentRoleMapper.deleteByDeptmentId(deptmentId); + + return true; + } + + @Override + @Transactional + public Boolean updateDeptment(Integer adminId, DeptmentUpdateDTO deptmentUpdateDTO) { + //判断需要更新的部门是否存在 + if(deptmentMapper.selectById(deptmentUpdateDTO.getId()) == null){ + throw ServiceExceptionUtil.exception(AdminErrorCodeEnum.DEPT_NOT_EXITS.getCode()); + } + + //不能选择当前部门作为自己的父级部门 + if(deptmentUpdateDTO.getId().equals(deptmentUpdateDTO.getPid())){ + throw ServiceExceptionUtil.exception(AdminErrorCodeEnum.DEPT_PARENT_NOT_LEGAL.getCode()); + } + + if(deptmentUpdateDTO.getPid()!=null && + !DeptmentConstants.PID_ROOT.equals(deptmentUpdateDTO.getPid()) + && deptmentMapper.selectById(deptmentUpdateDTO.getPid())==null){ + throw ServiceExceptionUtil.exception(AdminErrorCodeEnum.DEPT_PARENT_NOT_EXITS.getCode()); + } + + DeptmentDO deptmentDO = DeptmentConvert.INSTANCE.convert(deptmentUpdateDTO); + deptmentMapper.updateById(deptmentDO); + + return true; + } + @Override public PageResult getPageRootDeptment(DeptmentPageDTO deptmentPageDTO) { IPage page = deptmentMapper.selectDeptPage(deptmentPageDTO, DeptmentConstants.PID_ROOT);