部门管理更细和删除接口

pull/1/head
zhenxianyimeng 2019-06-26 23:54:07 +08:00
parent b9047e497a
commit 07d1e31782
7 changed files with 133 additions and 4 deletions

View File

@ -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<Boolean> delete(@RequestParam("id") Integer id){
return success(deptmentService.deleteDeptment(
AdminSecurityContextHolder.getContext().getAdminId(), id
));
}
@PostMapping("update")
@ApiOperation(value = "更新部门")
public CommonResult<Boolean> update(@RequestBody DeptmentUpdateDTO deptmentUpdateDTO){
return success(deptmentService.updateDeptment(
AdminSecurityContextHolder.getContext().getAdminId(), deptmentUpdateDTO
));
}
}

View File

@ -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<DeptmentBO> getPageRootDeptment(DeptmentPageDTO deptmentPageDTO);
List<DeptmentBO> getAllDeptments();

View File

@ -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;

View File

@ -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;
}

View File

@ -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<DeptmentBO> convert(List<DeptmentDO> list);
@Mappings({})
DeptmentDO convert(DeptmentUpdateDTO deptmentUpdateDTO);
}

View File

@ -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<DeptmentRoleDO> {
default int deleteByDeptmentId(Integer deptmentId){
return delete(new QueryWrapper<DeptmentRoleDO>().eq("deptment_id", deptmentId));
}
default int deleteByRoleId(Integer roleId){
return delete(new QueryWrapper<DeptmentRoleDO>().eq("role_id", roleId));
}
}

View File

@ -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<DeptmentBO> getPageRootDeptment(DeptmentPageDTO deptmentPageDTO) {
IPage<DeptmentDO> page = deptmentMapper.selectDeptPage(deptmentPageDTO, DeptmentConstants.PID_ROOT);