mirror of
				https://github.com/continew-org/continew-admin.git
				synced 2025-10-31 00:57:13 +08:00 
			
		
		
		
	新增:新增系统管理/角色管理(分页、查看详情、创建、修改、删除)
This commit is contained in:
		| @@ -0,0 +1,29 @@ | ||||
| /* | ||||
|  * 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.system.mapper; | ||||
|  | ||||
| import com.baomidou.mybatisplus.core.mapper.BaseMapper; | ||||
|  | ||||
| import top.charles7c.cnadmin.system.model.entity.RoleDO; | ||||
|  | ||||
| /** | ||||
|  * 角色 Mapper | ||||
|  * | ||||
|  * @author Charles7c | ||||
|  * @since 2023/2/8 23:17 | ||||
|  */ | ||||
| public interface RoleMapper extends BaseMapper<RoleDO> {} | ||||
| @@ -0,0 +1,85 @@ | ||||
| /* | ||||
|  * 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.system.model.entity; | ||||
|  | ||||
| import java.util.List; | ||||
|  | ||||
| import lombok.Data; | ||||
|  | ||||
| import com.baomidou.mybatisplus.annotation.TableField; | ||||
| import com.baomidou.mybatisplus.annotation.TableId; | ||||
| import com.baomidou.mybatisplus.annotation.TableName; | ||||
| import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; | ||||
|  | ||||
| import top.charles7c.cnadmin.common.base.BaseDO; | ||||
| import top.charles7c.cnadmin.common.enums.DataScopeEnum; | ||||
| import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum; | ||||
|  | ||||
| /** | ||||
|  * 角色实体 | ||||
|  * | ||||
|  * @author Charles7c | ||||
|  * @since 2023/2/8 22:54 | ||||
|  */ | ||||
| @Data | ||||
| @TableName(value = "sys_role", autoResultMap = true) | ||||
| public class RoleDO extends BaseDO { | ||||
|  | ||||
|     private static final long serialVersionUID = 1L; | ||||
|  | ||||
|     /** | ||||
|      * 角色 ID | ||||
|      */ | ||||
|     @TableId | ||||
|     private Long roleId; | ||||
|  | ||||
|     /** | ||||
|      * 角色名称 | ||||
|      */ | ||||
|     private String roleName; | ||||
|  | ||||
|     /** | ||||
|      * 角色编码 | ||||
|      */ | ||||
|     private String roleCode; | ||||
|  | ||||
|     /** | ||||
|      * 数据权限(1全部数据权限 2本部门及以下数据权限 3本部门数据权限 4仅本人数据权限 5自定数据权限) | ||||
|      */ | ||||
|     private DataScopeEnum dataScope; | ||||
|  | ||||
|     /** | ||||
|      * 数据权限范围(部门 ID 数组) | ||||
|      */ | ||||
|     @TableField(typeHandler = JacksonTypeHandler.class) | ||||
|     private List<Long> dataScopeDeptIds; | ||||
|  | ||||
|     /** | ||||
|      * 描述 | ||||
|      */ | ||||
|     private String description; | ||||
|  | ||||
|     /** | ||||
|      * 角色排序 | ||||
|      */ | ||||
|     private Integer roleSort; | ||||
|  | ||||
|     /** | ||||
|      * 状态(1启用 2禁用) | ||||
|      */ | ||||
|     private DisEnableStatusEnum status; | ||||
| } | ||||
| @@ -0,0 +1,55 @@ | ||||
| /* | ||||
|  * 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.system.model.query; | ||||
|  | ||||
| import java.io.Serializable; | ||||
|  | ||||
| import lombok.Data; | ||||
|  | ||||
| import io.swagger.v3.oas.annotations.media.Schema; | ||||
|  | ||||
| import org.springdoc.api.annotations.ParameterObject; | ||||
|  | ||||
| import top.charles7c.cnadmin.common.annotation.Query; | ||||
|  | ||||
| /** | ||||
|  * 角色查询条件 | ||||
|  * | ||||
|  * @author Charles7c | ||||
|  * @since 2023/2/8 23:04 | ||||
|  */ | ||||
| @Data | ||||
| @ParameterObject | ||||
| @Schema(description = "角色查询条件") | ||||
| public class RoleQuery implements Serializable { | ||||
|  | ||||
|     private static final long serialVersionUID = 1L; | ||||
|  | ||||
|     /** | ||||
|      * 角色名称 | ||||
|      */ | ||||
|     @Schema(description = "角色名称") | ||||
|     @Query(type = Query.Type.INNER_LIKE) | ||||
|     private String roleName; | ||||
|  | ||||
|     /** | ||||
|      * 状态(1启用 2禁用) | ||||
|      */ | ||||
|     @Schema(description = "状态(1启用 2禁用)") | ||||
|     @Query | ||||
|     private Integer status; | ||||
| } | ||||
| @@ -0,0 +1,100 @@ | ||||
| /* | ||||
|  * 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.system.model.request; | ||||
|  | ||||
| import java.util.List; | ||||
|  | ||||
| import javax.validation.constraints.NotBlank; | ||||
| import javax.validation.constraints.NotNull; | ||||
| import javax.validation.constraints.Null; | ||||
|  | ||||
| import lombok.Data; | ||||
|  | ||||
| import io.swagger.v3.oas.annotations.media.Schema; | ||||
|  | ||||
| import org.hibernate.validator.constraints.Length; | ||||
|  | ||||
| import top.charles7c.cnadmin.common.base.BaseRequest; | ||||
| import top.charles7c.cnadmin.common.enums.DataScopeEnum; | ||||
| import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum; | ||||
|  | ||||
| /** | ||||
|  * 创建或修改角色信息 | ||||
|  * | ||||
|  * @author Charles7c | ||||
|  * @since 2023/2/8 23:12 | ||||
|  */ | ||||
| @Data | ||||
| @Schema(description = "创建或修改角色信息") | ||||
| public class RoleRequest extends BaseRequest { | ||||
|  | ||||
|     private static final long serialVersionUID = 1L; | ||||
|  | ||||
|     /** | ||||
|      * 角色 ID | ||||
|      */ | ||||
|     @Schema(description = "角色 ID") | ||||
|     @Null(message = "新增时,ID 必须为空", groups = Create.class) | ||||
|     @NotNull(message = "修改时,ID 不能为空", groups = Update.class) | ||||
|     private Long roleId; | ||||
|  | ||||
|     /** | ||||
|      * 角色名称 | ||||
|      */ | ||||
|     @Schema(description = "角色名称") | ||||
|     @NotBlank(message = "角色名称不能为空") | ||||
|     private String roleName; | ||||
|  | ||||
|     /** | ||||
|      * 角色编码 | ||||
|      */ | ||||
|     @Schema(description = "角色编码") | ||||
|     private String roleCode; | ||||
|  | ||||
|     /** | ||||
|      * 数据权限(1全部数据权限 2本部门及以下数据权限 3本部门数据权限 4仅本人数据权限 5自定数据权限) | ||||
|      */ | ||||
|     @Schema(description = "数据权限(1全部数据权限 2本部门及以下数据权限 3本部门数据权限 4仅本人数据权限 5自定数据权限)", type = "Integer", | ||||
|         allowableValues = {"1", "2", "3", "4", "5"}) | ||||
|     private DataScopeEnum dataScope; | ||||
|  | ||||
|     /** | ||||
|      * 数据权限范围(部门 ID 数组) | ||||
|      */ | ||||
|     @Schema(description = "数据权限范围(部门 ID 数组)") | ||||
|     private List<Long> dataScopeDeptIds; | ||||
|  | ||||
|     /** | ||||
|      * 描述 | ||||
|      */ | ||||
|     @Schema(description = "描述") | ||||
|     @Length(max = 200, message = "描述长度不能超过 200 个字符") | ||||
|     private String description; | ||||
|  | ||||
|     /** | ||||
|      * 角色排序 | ||||
|      */ | ||||
|     @Schema(description = "角色排序") | ||||
|     @NotNull(message = "角色排序不能为空") | ||||
|     private Integer roleSort; | ||||
|  | ||||
|     /** | ||||
|      * 状态(1启用 2禁用) | ||||
|      */ | ||||
|     @Schema(description = "状态(1启用 2禁用)", type = "Integer", allowableValues = {"1", "2"}) | ||||
|     private DisEnableStatusEnum status; | ||||
| } | ||||
| @@ -0,0 +1,100 @@ | ||||
| /* | ||||
|  * 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.system.model.vo; | ||||
|  | ||||
| import java.util.List; | ||||
|  | ||||
| import lombok.Data; | ||||
|  | ||||
| import io.swagger.v3.oas.annotations.media.Schema; | ||||
|  | ||||
| import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; | ||||
| import com.alibaba.excel.annotation.ExcelProperty; | ||||
|  | ||||
| import top.charles7c.cnadmin.common.base.BaseDetailVO; | ||||
| import top.charles7c.cnadmin.common.config.easyexcel.ExcelBaseEnumConverter; | ||||
| import top.charles7c.cnadmin.common.enums.DataScopeEnum; | ||||
| import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum; | ||||
|  | ||||
| /** | ||||
|  * 角色详情信息 | ||||
|  * | ||||
|  * @author Charles7c | ||||
|  * @since 2023/2/1 22:19 | ||||
|  */ | ||||
| @Data | ||||
| @ExcelIgnoreUnannotated | ||||
| @Schema(description = "角色详情信息") | ||||
| public class RoleDetailVO extends BaseDetailVO { | ||||
|  | ||||
|     private static final long serialVersionUID = 1L; | ||||
|  | ||||
|     /** | ||||
|      * 角色 ID | ||||
|      */ | ||||
|     @Schema(description = "角色 ID") | ||||
|     @ExcelProperty(value = "角色ID") | ||||
|     private Long roleId; | ||||
|  | ||||
|     /** | ||||
|      * 角色名称 | ||||
|      */ | ||||
|     @Schema(description = "角色名称") | ||||
|     @ExcelProperty(value = "角色名称") | ||||
|     private String roleName; | ||||
|  | ||||
|     /** | ||||
|      * 角色编码 | ||||
|      */ | ||||
|     @Schema(description = "角色编码") | ||||
|     @ExcelProperty(value = "角色编码") | ||||
|     private String roleCode; | ||||
|  | ||||
|     /** | ||||
|      * 数据权限(1全部数据权限 2本部门及以下数据权限 3本部门数据权限 4仅本人数据权限 5自定数据权限) | ||||
|      */ | ||||
|     @Schema(description = "数据权限(1全部数据权限 2本部门及以下数据权限 3本部门数据权限 4仅本人数据权限 5自定数据权限)") | ||||
|     @ExcelProperty(value = "数据权限", converter = ExcelBaseEnumConverter.class) | ||||
|     private DataScopeEnum dataScope; | ||||
|  | ||||
|     /** | ||||
|      * 数据权限范围(部门 ID 数组) | ||||
|      */ | ||||
|     @Schema(description = "数据权限范围(部门 ID 数组)") | ||||
|     private List<Long> dataScopeDeptIds; | ||||
|  | ||||
|     /** | ||||
|      * 描述 | ||||
|      */ | ||||
|     @Schema(description = "描述") | ||||
|     @ExcelProperty(value = "描述") | ||||
|     private String description; | ||||
|  | ||||
|     /** | ||||
|      * 角色排序 | ||||
|      */ | ||||
|     @Schema(description = "角色排序") | ||||
|     @ExcelProperty(value = "角色排序") | ||||
|     private Integer roleSort; | ||||
|  | ||||
|     /** | ||||
|      * 状态(1启用 2禁用) | ||||
|      */ | ||||
|     @Schema(description = "状态(1启用 2禁用)") | ||||
|     @ExcelProperty(value = "状态", converter = ExcelBaseEnumConverter.class) | ||||
|     private DisEnableStatusEnum status; | ||||
| } | ||||
| @@ -0,0 +1,106 @@ | ||||
| /* | ||||
|  * 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.system.model.vo; | ||||
|  | ||||
| import java.util.List; | ||||
|  | ||||
| import lombok.Data; | ||||
| import lombok.experimental.Accessors; | ||||
|  | ||||
| import io.swagger.v3.oas.annotations.media.Schema; | ||||
|  | ||||
| import com.fasterxml.jackson.annotation.JsonInclude; | ||||
|  | ||||
| import top.charles7c.cnadmin.common.base.BaseVO; | ||||
| import top.charles7c.cnadmin.common.consts.Constants; | ||||
| import top.charles7c.cnadmin.common.enums.DataScopeEnum; | ||||
| import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum; | ||||
|  | ||||
| /** | ||||
|  * 角色信息 | ||||
|  * | ||||
|  * @author Charles7c | ||||
|  * @since 2023/2/8 23:05 | ||||
|  */ | ||||
| @Data | ||||
| @Accessors(chain = true) | ||||
| @Schema(description = "角色信息") | ||||
| public class RoleVO extends BaseVO { | ||||
|  | ||||
|     private static final long serialVersionUID = 1L; | ||||
|  | ||||
|     /** | ||||
|      * 角色 ID | ||||
|      */ | ||||
|     @Schema(description = "角色 ID") | ||||
|     private Long roleId; | ||||
|  | ||||
|     /** | ||||
|      * 角色名称 | ||||
|      */ | ||||
|     @Schema(description = "角色名称") | ||||
|     private String roleName; | ||||
|  | ||||
|     /** | ||||
|      * 角色编码 | ||||
|      */ | ||||
|     @Schema(description = "角色编码") | ||||
|     private String roleCode; | ||||
|  | ||||
|     /** | ||||
|      * 数据权限(1全部数据权限 2本部门及以下数据权限 3本部门数据权限 4仅本人数据权限 5自定数据权限) | ||||
|      */ | ||||
|     @Schema(description = "数据权限(1全部数据权限 2本部门及以下数据权限 3本部门数据权限 4仅本人数据权限 5自定数据权限)") | ||||
|     private DataScopeEnum dataScope; | ||||
|  | ||||
|     /** | ||||
|      * 数据权限范围(部门 ID 数组) | ||||
|      */ | ||||
|     @Schema(description = "数据权限范围(部门 ID 数组)") | ||||
|     private List<Long> dataScopeDeptIds; | ||||
|  | ||||
|     /** | ||||
|      * 描述 | ||||
|      */ | ||||
|     @Schema(description = "描述") | ||||
|     private String description; | ||||
|  | ||||
|     /** | ||||
|      * 角色排序 | ||||
|      */ | ||||
|     @Schema(description = "角色排序") | ||||
|     private Integer roleSort; | ||||
|  | ||||
|     /** | ||||
|      * 状态(1启用 2禁用) | ||||
|      */ | ||||
|     @Schema(description = "状态(1启用 2禁用)") | ||||
|     private DisEnableStatusEnum status; | ||||
|  | ||||
|     /** | ||||
|      * 是否禁用修改 | ||||
|      */ | ||||
|     @JsonInclude(JsonInclude.Include.NON_NULL) | ||||
|     private Boolean disabled; | ||||
|  | ||||
|     public Boolean getDisabled() { | ||||
|         if (Constants.ADMIN_ROLE_CODE.equals(roleCode)) { | ||||
|             return true; | ||||
|         } | ||||
|         return disabled; | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,31 @@ | ||||
| /* | ||||
|  * 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.system.service; | ||||
|  | ||||
| import top.charles7c.cnadmin.common.base.BaseService; | ||||
| import top.charles7c.cnadmin.system.model.query.RoleQuery; | ||||
| import top.charles7c.cnadmin.system.model.request.RoleRequest; | ||||
| import top.charles7c.cnadmin.system.model.vo.RoleDetailVO; | ||||
| import top.charles7c.cnadmin.system.model.vo.RoleVO; | ||||
|  | ||||
| /** | ||||
|  * 角色业务接口 | ||||
|  * | ||||
|  * @author Charles7c | ||||
|  * @since 2023/2/8 23:15 | ||||
|  */ | ||||
| public interface RoleService extends BaseService<RoleVO, RoleDetailVO, RoleQuery, RoleRequest> {} | ||||
| @@ -0,0 +1,147 @@ | ||||
| /* | ||||
|  * 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.system.service.impl; | ||||
|  | ||||
| import java.util.List; | ||||
|  | ||||
| import lombok.RequiredArgsConstructor; | ||||
|  | ||||
| import org.springframework.stereotype.Service; | ||||
| import org.springframework.transaction.annotation.Transactional; | ||||
|  | ||||
| import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||
|  | ||||
| import cn.hutool.core.bean.BeanUtil; | ||||
|  | ||||
| import top.charles7c.cnadmin.common.base.BaseDetailVO; | ||||
| import top.charles7c.cnadmin.common.base.BaseServiceImpl; | ||||
| import top.charles7c.cnadmin.common.base.BaseVO; | ||||
| import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum; | ||||
| import top.charles7c.cnadmin.common.model.query.PageQuery; | ||||
| import top.charles7c.cnadmin.common.model.vo.PageDataVO; | ||||
| import top.charles7c.cnadmin.common.util.ExceptionUtils; | ||||
| import top.charles7c.cnadmin.common.util.validate.CheckUtils; | ||||
| import top.charles7c.cnadmin.system.mapper.RoleMapper; | ||||
| import top.charles7c.cnadmin.system.model.entity.RoleDO; | ||||
| import top.charles7c.cnadmin.system.model.query.RoleQuery; | ||||
| import top.charles7c.cnadmin.system.model.request.RoleRequest; | ||||
| import top.charles7c.cnadmin.system.model.vo.RoleDetailVO; | ||||
| import top.charles7c.cnadmin.system.model.vo.RoleVO; | ||||
| import top.charles7c.cnadmin.system.service.RoleService; | ||||
| import top.charles7c.cnadmin.system.service.UserService; | ||||
|  | ||||
| /** | ||||
|  * 角色业务实现类 | ||||
|  * | ||||
|  * @author Charles7c | ||||
|  * @since 2023/2/8 23:17 | ||||
|  */ | ||||
| @Service | ||||
| @RequiredArgsConstructor | ||||
| public class RoleServiceImpl extends BaseServiceImpl<RoleMapper, RoleDO, RoleVO, RoleDetailVO, RoleQuery, RoleRequest> | ||||
|     implements RoleService { | ||||
|  | ||||
|     private final UserService userService; | ||||
|  | ||||
|     @Override | ||||
|     public PageDataVO<RoleVO> page(RoleQuery query, PageQuery pageQuery) { | ||||
|         PageDataVO<RoleVO> pageDataVO = super.page(query, pageQuery); | ||||
|         pageDataVO.getList().forEach(this::fill); | ||||
|         return pageDataVO; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public RoleDetailVO get(Long id) { | ||||
|         RoleDetailVO roleDetailVO = super.get(id); | ||||
|         this.fillDetail(roleDetailVO); | ||||
|         return roleDetailVO; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     @Transactional(rollbackFor = Exception.class) | ||||
|     public Long create(RoleRequest request) { | ||||
|         String roleName = request.getRoleName(); | ||||
|         boolean isExist = this.checkNameExist(roleName, request.getRoleId()); | ||||
|         CheckUtils.throwIf(() -> isExist, String.format("新增失败,'%s'已存在", roleName)); | ||||
|  | ||||
|         // 保存信息 | ||||
|         RoleDO roleDO = BeanUtil.copyProperties(request, RoleDO.class); | ||||
|         roleDO.setStatus(DisEnableStatusEnum.ENABLE); | ||||
|         baseMapper.insert(roleDO); | ||||
|         return roleDO.getRoleId(); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     @Transactional(rollbackFor = Exception.class) | ||||
|     public void update(RoleRequest request) { | ||||
|         String roleName = request.getRoleName(); | ||||
|         boolean isExist = this.checkNameExist(roleName, request.getRoleId()); | ||||
|         CheckUtils.throwIf(() -> isExist, String.format("修改失败,'%s'已存在", roleName)); | ||||
|  | ||||
|         super.update(request); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     @Transactional(rollbackFor = Exception.class) | ||||
|     public void delete(List<Long> ids) { | ||||
|         super.delete(ids); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 检查名称是否存在 | ||||
|      * | ||||
|      * @param roleName | ||||
|      *            角色名称 | ||||
|      * @param roleId | ||||
|      *            角色 ID | ||||
|      * @return 是否存在 | ||||
|      */ | ||||
|     private boolean checkNameExist(String roleName, Long roleId) { | ||||
|         return baseMapper.exists(Wrappers.<RoleDO>lambdaQuery().eq(RoleDO::getRoleName, roleName).ne(roleId != null, | ||||
|             RoleDO::getRoleId, roleId)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 填充数据 | ||||
|      * | ||||
|      * @param baseVO | ||||
|      *            待填充列表信息 | ||||
|      */ | ||||
|     private void fill(BaseVO baseVO) { | ||||
|         Long createUser = baseVO.getCreateUser(); | ||||
|         if (createUser == null) { | ||||
|             return; | ||||
|         } | ||||
|         baseVO.setCreateUserString(ExceptionUtils.exToNull(() -> userService.getById(createUser)).getNickname()); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 填充详情数据 | ||||
|      * | ||||
|      * @param detailVO | ||||
|      *            待填充详情信息 | ||||
|      */ | ||||
|     private void fillDetail(BaseDetailVO detailVO) { | ||||
|         this.fill(detailVO); | ||||
|  | ||||
|         Long updateUser = detailVO.getUpdateUser(); | ||||
|         if (updateUser == null) { | ||||
|             return; | ||||
|         } | ||||
|         detailVO.setUpdateUserString(ExceptionUtils.exToNull(() -> userService.getById(updateUser)).getNickname()); | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,4 @@ | ||||
| <?xml version="1.0" encoding="UTF-8" ?> | ||||
| <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > | ||||
| <mapper namespace="top.charles7c.cnadmin.system.mapper.RoleMapper"> | ||||
| </mapper> | ||||
		Reference in New Issue
	
	Block a user