增加新增部门接口
							parent
							
								
									e7c9464804
								
							
						
					
					
						commit
						8f4433bf79
					
				|  | @ -0,0 +1,39 @@ | |||
| package cn.iocoder.mall.admin.application.controller.admins; | ||||
| 
 | ||||
| import cn.iocoder.common.framework.vo.CommonResult; | ||||
| import cn.iocoder.mall.admin.api.DeptmentService; | ||||
| import cn.iocoder.mall.admin.api.bo.deptment.DeptmentBO; | ||||
| import cn.iocoder.mall.admin.api.dto.depetment.DeptmentAddDTO; | ||||
| import cn.iocoder.mall.admin.sdk.context.AdminSecurityContextHolder; | ||||
| import io.swagger.annotations.Api; | ||||
| import io.swagger.annotations.ApiOperation; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.web.bind.annotation.PostMapping; | ||||
| import org.springframework.web.bind.annotation.RequestBody; | ||||
| import org.springframework.web.bind.annotation.RequestMapping; | ||||
| import org.springframework.web.bind.annotation.RestController; | ||||
| import static cn.iocoder.common.framework.vo.CommonResult.success; | ||||
| 
 | ||||
| /** | ||||
|  * Description: | ||||
|  * | ||||
|  * @author: zhenxianyimeng | ||||
|  * @date: 2019-06-14 | ||||
|  * @time: 19:07 | ||||
|  */ | ||||
| @RestController | ||||
| @RequestMapping("admins/dept") | ||||
| @Api("部门模块") | ||||
| public class DeptmentController { | ||||
| 
 | ||||
|     @Autowired | ||||
|     private DeptmentService deptmentService; | ||||
| 
 | ||||
|     @PostMapping("add") | ||||
|     @ApiOperation(value = "新增部门", notes = "选择部门名称,父级部门") | ||||
|     public CommonResult<DeptmentBO> add(@RequestBody DeptmentAddDTO deptmentAddDTO){ | ||||
|         return success(deptmentService.addDeptment( | ||||
|                 AdminSecurityContextHolder.getContext().getAdminId(), deptmentAddDTO)); | ||||
| 
 | ||||
|     } | ||||
| } | ||||
|  | @ -0,0 +1,14 @@ | |||
| package cn.iocoder.mall.admin.application.vo.deptment; | ||||
| 
 | ||||
| import cn.iocoder.mall.admin.api.bo.deptment.DeptmentBO; | ||||
| 
 | ||||
| /** | ||||
|  * Description: | ||||
|  * | ||||
|  * @author: zhenxianyimeng | ||||
|  * @date: 2019-06-15 | ||||
|  * @time: 16:57 | ||||
|  */ | ||||
| public class DeptmentVO extends DeptmentBO { | ||||
| 
 | ||||
| } | ||||
|  | @ -0,0 +1,16 @@ | |||
| package cn.iocoder.mall.admin.api; | ||||
| 
 | ||||
| import cn.iocoder.mall.admin.api.bo.deptment.DeptmentBO; | ||||
| import cn.iocoder.mall.admin.api.dto.depetment.DeptmentAddDTO; | ||||
| 
 | ||||
| /** | ||||
|  * Description: | ||||
|  * | ||||
|  * @author: zhenxianyimeng | ||||
|  * @date: 2019-06-14 | ||||
|  * @time: 19:35 | ||||
|  */ | ||||
| public interface DeptmentService { | ||||
| 
 | ||||
|     DeptmentBO addDeptment(Integer adminId, DeptmentAddDTO deptmentAddDTO); | ||||
| } | ||||
|  | @ -0,0 +1,44 @@ | |||
| package cn.iocoder.mall.admin.api.bo.deptment; | ||||
| 
 | ||||
| import io.swagger.annotations.ApiModel; | ||||
| import lombok.Data; | ||||
| 
 | ||||
| import java.io.Serializable; | ||||
| import java.util.Date; | ||||
| 
 | ||||
| /** | ||||
|  * Description: | ||||
|  * | ||||
|  * @author: zhenxianyimeng | ||||
|  * @date: 2019-06-14 | ||||
|  * @time: 19:49 | ||||
|  */ | ||||
| @ApiModel("部门 BO") | ||||
| @Data | ||||
| public class DeptmentBO implements Serializable { | ||||
| 
 | ||||
|     private static final long serialVersionUID = 7656901281539594453L; | ||||
| 
 | ||||
|     /** | ||||
|      * 部门编号 | ||||
|      */ | ||||
|     private Integer id; | ||||
|     /** | ||||
|      * 部门名称 | ||||
|      */ | ||||
|     private String name; | ||||
|     /** | ||||
|      * 部门排序字段 | ||||
|      */ | ||||
|     private Integer sort; | ||||
|     /** | ||||
|      * 父级部门id | ||||
|      */ | ||||
|     private Integer pid; | ||||
| 
 | ||||
|     private Date createTime; | ||||
| 
 | ||||
|     private Date updateTime; | ||||
| 
 | ||||
| 
 | ||||
| } | ||||
|  | @ -57,6 +57,11 @@ public enum AdminErrorCodeEnum { | |||
|     SMS_TEMPLATE_NOT_EXISTENT(1002006020, "短信签名不存在"), | ||||
|     SMS_TEMPLATE_IS_EXISTENT(1002006021, "短信签名不存在"), | ||||
|     SMS_NOT_SEND_CLIENT(1002006030, "短信没有发送的client"), | ||||
| 
 | ||||
|     // ========== 部门模块 1002007000 ==========
 | ||||
|     DEPT_SAME_LEVEL_NAME_EXITS(1002007001,"当前级别部门名字已存在"), | ||||
|     DEPT_PARENT_NOT_EXITS(1002007002,"父级部门不存在") | ||||
| 
 | ||||
|     ; | ||||
| 
 | ||||
|     private final int code; | ||||
|  |  | |||
|  | @ -0,0 +1,33 @@ | |||
| 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.Min; | ||||
| import javax.validation.constraints.NotNull; | ||||
| 
 | ||||
| /** | ||||
|  * Description: | ||||
|  * | ||||
|  * @author: zhenxianyimeng | ||||
|  * @date: 2019-06-14 | ||||
|  * @time: 19:55 | ||||
|  */ | ||||
| @ApiModel("添加部门 DTO") | ||||
| @Data | ||||
| public class DeptmentAddDTO { | ||||
| 
 | ||||
|     @ApiModelProperty(value = "名字", required = true, example = "销售一组") | ||||
|     @NotNull(message = "不能为空") | ||||
|     private String name; | ||||
| 
 | ||||
|     @ApiModelProperty(value = "排序", required = true, example = "1") | ||||
|     @NotNull(message = "不能为空") | ||||
|     private Integer sort; | ||||
| 
 | ||||
|     @ApiModelProperty(value = "父级id", required = true, example = "1") | ||||
|     @NotNull(message = "可以为空,默认0,顶层") | ||||
|     @Min(value = 0,message = "父id不能小于0") | ||||
|     private Integer pid = 0; | ||||
| } | ||||
|  | @ -0,0 +1,28 @@ | |||
| package cn.iocoder.mall.admin.convert; | ||||
| 
 | ||||
| import cn.iocoder.mall.admin.api.bo.deptment.DeptmentBO; | ||||
| import cn.iocoder.mall.admin.api.dto.depetment.DeptmentAddDTO; | ||||
| import cn.iocoder.mall.admin.dataobject.DeptmentDO; | ||||
| import org.mapstruct.Mapper; | ||||
| import org.mapstruct.Mappings; | ||||
| import org.mapstruct.factory.Mappers; | ||||
| 
 | ||||
| /** | ||||
|  * Description: | ||||
|  * | ||||
|  * @author: zhenxianyimeng | ||||
|  * @date: 2019-06-14 | ||||
|  * @time: 20:06 | ||||
|  */ | ||||
| @Mapper | ||||
| public interface DeptmentConvert { | ||||
| 
 | ||||
|     DeptmentConvert INSTANCE = Mappers.getMapper(DeptmentConvert.class); | ||||
| 
 | ||||
|     @Mappings({}) | ||||
|     DeptmentDO convert(DeptmentAddDTO deptmentAddDTO); | ||||
| 
 | ||||
|     @Mappings({}) | ||||
|     DeptmentBO convert(DeptmentDO deptmentDO); | ||||
| 
 | ||||
| } | ||||
|  | @ -0,0 +1,27 @@ | |||
| package cn.iocoder.mall.admin.dao; | ||||
| 
 | ||||
| import cn.iocoder.mall.admin.dataobject.AdminDO; | ||||
| import cn.iocoder.mall.admin.dataobject.DeptmentDO; | ||||
| import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | ||||
| import com.baomidou.mybatisplus.core.mapper.BaseMapper; | ||||
| import org.apache.ibatis.annotations.Param; | ||||
| 
 | ||||
| /** | ||||
|  * Description: | ||||
|  * | ||||
|  * @author: zhenxianyimeng | ||||
|  * @date: 2019-06-14 | ||||
|  * @time: 19:26 | ||||
|  */ | ||||
| public interface DeptmentMapper extends BaseMapper<DeptmentDO> { | ||||
| 
 | ||||
|     default DeptmentDO findDeptByNameAndPid(String name, Integer pid){ | ||||
|         return selectOne(new QueryWrapper<DeptmentDO>() | ||||
|                 .eq("name", name) | ||||
|                 .eq("pid", pid) | ||||
|                 .eq("deleted", false) | ||||
|         ); | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
| } | ||||
|  | @ -0,0 +1,15 @@ | |||
| package cn.iocoder.mall.admin.dao; | ||||
| 
 | ||||
| import cn.iocoder.mall.admin.dataobject.DeptmentRoleDO; | ||||
| import com.baomidou.mybatisplus.core.mapper.BaseMapper; | ||||
| 
 | ||||
| /** | ||||
|  * Description: | ||||
|  * | ||||
|  * @author: zhenxianyimeng | ||||
|  * @date: 2019-06-14 | ||||
|  * @time: 19:27 | ||||
|  */ | ||||
| public interface DeptmentRoleMapper extends BaseMapper<DeptmentRoleDO> { | ||||
| 
 | ||||
| } | ||||
|  | @ -0,0 +1,37 @@ | |||
| package cn.iocoder.mall.admin.dataobject; | ||||
| 
 | ||||
| import cn.iocoder.common.framework.dataobject.DeletableDO; | ||||
| import com.baomidou.mybatisplus.annotation.TableName; | ||||
| import lombok.Data; | ||||
| import lombok.experimental.Accessors; | ||||
| 
 | ||||
| /** | ||||
|  * Description:部门实体 | ||||
|  * | ||||
|  * @author: zhenxianyimeng | ||||
|  * @date: 2019-06-14 | ||||
|  * @time: 19:12 | ||||
|  */ | ||||
| @TableName("deptment") | ||||
| @Data | ||||
| @Accessors(chain = true) | ||||
| public class DeptmentDO extends DeletableDO { | ||||
| 
 | ||||
|     /** | ||||
|      * 部门编号 | ||||
|      */ | ||||
|     private Integer id; | ||||
|     /** | ||||
|      * 部门名称 | ||||
|      */ | ||||
|     private String name; | ||||
|     /** | ||||
|      * 部门排序字段 | ||||
|      */ | ||||
|     private Integer sort; | ||||
|     /** | ||||
|      * 父级部门id | ||||
|      */ | ||||
|     private Integer pid; | ||||
| 
 | ||||
| } | ||||
|  | @ -0,0 +1,29 @@ | |||
| package cn.iocoder.mall.admin.dataobject; | ||||
| 
 | ||||
| import cn.iocoder.common.framework.dataobject.DeletableDO; | ||||
| import com.baomidou.mybatisplus.annotation.TableName; | ||||
| import lombok.Data; | ||||
| 
 | ||||
| /** | ||||
|  * Description: 部门-角色映射表 | ||||
|  * | ||||
|  * @author: zhenxianyimeng | ||||
|  * @date: 2019-06-14 | ||||
|  * @time: 19:19 | ||||
|  */ | ||||
| @TableName("deptment_role") | ||||
| @Data | ||||
| public class DeptmentRoleDO extends DeletableDO { | ||||
|     /** | ||||
|      * 主键id | ||||
|      */ | ||||
|     private Integer id; | ||||
|     /** | ||||
|      * 部门id | ||||
|      */ | ||||
|     private Integer deptmentId; | ||||
|     /** | ||||
|      * 角色id | ||||
|      */ | ||||
|     private Integer roleId; | ||||
| } | ||||
|  | @ -56,7 +56,7 @@ public class AdminServiceImpl implements AdminService { | |||
|             throw ServiceExceptionUtil.exception(AdminErrorCodeEnum.ADMIN_USERNAME_NOT_REGISTERED.getCode()); | ||||
|         } | ||||
|         // 密码不正确
 | ||||
|         if (encodePassword(adminAuthenticationDTO.getPassword()).equals(admin.getPassword())) { | ||||
|         if (!encodePassword(adminAuthenticationDTO.getPassword()).equals(admin.getPassword())) { | ||||
|             throw ServiceExceptionUtil.exception(AdminErrorCodeEnum.ADMIN_PASSWORD_ERROR.getCode()); | ||||
|         } | ||||
|         // 账号被禁用
 | ||||
|  |  | |||
|  | @ -0,0 +1,41 @@ | |||
| package cn.iocoder.mall.admin.service; | ||||
| 
 | ||||
| import cn.iocoder.common.framework.util.ServiceExceptionUtil; | ||||
| import cn.iocoder.mall.admin.api.DeptmentService; | ||||
| import cn.iocoder.mall.admin.api.bo.deptment.DeptmentBO; | ||||
| import cn.iocoder.mall.admin.api.constant.AdminErrorCodeEnum; | ||||
| import cn.iocoder.mall.admin.api.dto.depetment.DeptmentAddDTO; | ||||
| import cn.iocoder.mall.admin.convert.DeptmentConvert; | ||||
| import cn.iocoder.mall.admin.dao.DeptmentMapper; | ||||
| import cn.iocoder.mall.admin.dataobject.DeptmentDO; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.stereotype.Service; | ||||
| 
 | ||||
| /** | ||||
|  * Description: | ||||
|  * | ||||
|  * @author: zhenxianyimeng | ||||
|  * @date: 2019-06-14 | ||||
|  * @time: 19:30 | ||||
|  */ | ||||
| @Service | ||||
| public class DeptmentServiceImpl implements DeptmentService { | ||||
| 
 | ||||
|     @Autowired | ||||
|     private DeptmentMapper deptmentMapper; | ||||
| 
 | ||||
|     @Override | ||||
|         public DeptmentBO addDeptment(Integer adminId, DeptmentAddDTO deptmentAddDTO) { | ||||
|             if(deptmentAddDTO.getPid() != 0 && | ||||
|                     deptmentMapper.selectById(deptmentAddDTO.getPid()) == null){ | ||||
|                 throw ServiceExceptionUtil.exception(AdminErrorCodeEnum.DEPT_PARENT_NOT_EXITS.getCode()); | ||||
|             } | ||||
|             //不同的大部门下好像可以小部门名字一样,验证同级别部门名字
 | ||||
|             if (null != deptmentMapper.findDeptByNameAndPid(deptmentAddDTO.getName(), deptmentAddDTO.getPid())) { | ||||
|                 throw ServiceExceptionUtil.exception(AdminErrorCodeEnum.DEPT_SAME_LEVEL_NAME_EXITS.getCode()); | ||||
|             } | ||||
|             DeptmentDO deptmentDO = DeptmentConvert.INSTANCE.convert(deptmentAddDTO); | ||||
|             deptmentMapper.insert(deptmentDO); | ||||
|             return DeptmentConvert.INSTANCE.convert(deptmentDO); | ||||
|         } | ||||
| } | ||||
		Loading…
	
		Reference in New Issue
	
	 chixiao
						chixiao