mirror of
				https://github.com/continew-org/continew-admin.git
				synced 2025-10-31 22:57:17 +08:00 
			
		
		
		
	优化:基于阿里巴巴 Java 开发手册(黄山版)优化方法排序及访问权限修饰符
1.编程规约>OOP规约>第20条: 【推荐】当一个类有多个构造方法,或者多个同名方法,这些方法应该按顺序放置在一起,便于阅读, 此条规则优先于下一条。 2.编程规约>OOP规约>第21条: 【推荐】类内方法定义的顺序依次是:公有方法或保护方法 > 私有方法 > getter / setter 方法。 说明:公有方法是类的调用者和维护者最关心的方法,首屏展示最好;保护方法虽然只是子类关心,也可能是“模板设 计模式”下的核心方法;而私有方法外部一般不需要特别关心,是一个黑盒实现;因为承载的信息价值较低,所有 Service 和 DAO 的 getter / setter 方法放在类体最后。 3.编程规约>OOP规约>第26条: 【推荐】类成员与方法访问控制从严: 1)如果不允许外部直接通过 new 来创建对象,那么构造方法必须是 private。 2)工具类不允许有 public 或 default 构造方法。 3)类非 static 成员变量并且与子类共享,必须是 protected。 4)类非 static 成员变量并且仅在本类使用,必须是 private。 5)类 static 成员变量如果仅在本类使用,必须是 private。 6)若是 static 成员变量,考虑是否为 final。 7)类成员方法只供类内部调用,必须是 private。 8)类成员方法只对继承类公开,那么限制为 protected。 说明:任何类、方法、参数、变量,严控访问范围。过于宽泛的访问范围,不利于模块解耦。思考:如果是一个 private 的方法,想删除就删除,可是一个 public 的 service 成员方法或成员变量,删除一下,不得手心冒点汗吗? 变量像自己的小孩,尽量在自己的视线内,变量作用域太大,无限制的到处跑,那么你会担心的。
This commit is contained in:
		| @@ -87,9 +87,18 @@ public abstract class BaseServiceImpl<M extends BaseMapper<T>, T, V, D, Q, C ext | |||||||
|     @Autowired |     @Autowired | ||||||
|     protected M baseMapper; |     protected M baseMapper; | ||||||
|  |  | ||||||
|     protected Class<T> entityClass = currentEntityClass(); |     private final Class<T> entityClass; | ||||||
|     protected Class<V> voClass = currentVoClass(); |     private final Class<V> voClass; | ||||||
|     protected Class<D> detailVoClass = currentDetailVoClass(); |     private final Class<D> detailVoClass; | ||||||
|  |     private final String entityIdName; | ||||||
|  |  | ||||||
|  |     public BaseServiceImpl() { | ||||||
|  |         this.entityClass = (Class<T>)ReflectionKit.getSuperClassGenericType(this.getClass(), BaseServiceImpl.class, 1); | ||||||
|  |         this.voClass = (Class<V>)ReflectionKit.getSuperClassGenericType(this.getClass(), BaseServiceImpl.class, 2); | ||||||
|  |         this.detailVoClass = | ||||||
|  |             (Class<D>)ReflectionKit.getSuperClassGenericType(this.getClass(), BaseServiceImpl.class, 3); | ||||||
|  |         this.entityIdName = this.currentEntityIdName(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public PageDataVO<V> page(Q query, PageQuery pageQuery) { |     public PageDataVO<V> page(Q query, PageQuery pageQuery) { | ||||||
| @@ -141,51 +150,6 @@ public abstract class BaseServiceImpl<M extends BaseMapper<T>, T, V, D, Q, C ext | |||||||
|         return list; |         return list; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |  | ||||||
|     public D get(Long id) { |  | ||||||
|         T entity = this.getById(id); |  | ||||||
|         D detailVO = BeanUtil.copyProperties(entity, detailVoClass); |  | ||||||
|         this.fillDetail(detailVO); |  | ||||||
|         return detailVO; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     @Override |  | ||||||
|     @Transactional(rollbackFor = Exception.class) |  | ||||||
|     public Long add(C request) { |  | ||||||
|         if (request == null) { |  | ||||||
|             return 0L; |  | ||||||
|         } |  | ||||||
|         // 保存信息 |  | ||||||
|         T entity = BeanUtil.copyProperties(request, entityClass); |  | ||||||
|         baseMapper.insert(entity); |  | ||||||
|         TableInfo tableInfo = TableInfoHelper.getTableInfo(entityClass); |  | ||||||
|         Object idValue = tableInfo.getPropertyValue(entity, this.currentEntityIdName()); |  | ||||||
|         return Convert.toLong(idValue); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     @Override |  | ||||||
|     @Transactional(rollbackFor = Exception.class) |  | ||||||
|     public void update(C request) { |  | ||||||
|         String idName = this.currentEntityIdName(); |  | ||||||
|         Object idValue = ReflectUtil.getFieldValue(request, idName); |  | ||||||
|         T entity = this.getById(idValue); |  | ||||||
|         BeanUtil.copyProperties(request, entity, CopyOptions.create().ignoreNullValue()); |  | ||||||
|         baseMapper.updateById(entity); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     @Override |  | ||||||
|     @Transactional(rollbackFor = Exception.class) |  | ||||||
|     public void delete(List<Long> ids) { |  | ||||||
|         baseMapper.deleteBatchIds(ids); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     @Override |  | ||||||
|     public void export(Q query, SortQuery sortQuery, HttpServletResponse response) { |  | ||||||
|         List<D> list = this.list(query, sortQuery, detailVoClass); |  | ||||||
|         list.forEach(this::fillDetail); |  | ||||||
|         ExcelUtils.export(list, "导出数据", detailVoClass, response); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 查询列表 |      * 查询列表 | ||||||
|      * |      * | ||||||
| @@ -208,6 +172,50 @@ public abstract class BaseServiceImpl<M extends BaseMapper<T>, T, V, D, Q, C ext | |||||||
|         return BeanUtil.copyToList(entityList, targetClass); |         return BeanUtil.copyToList(entityList, targetClass); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public D get(Long id) { | ||||||
|  |         T entity = this.getById(id); | ||||||
|  |         D detailVO = BeanUtil.copyProperties(entity, detailVoClass); | ||||||
|  |         this.fillDetail(detailVO); | ||||||
|  |         return detailVO; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     @Transactional(rollbackFor = Exception.class) | ||||||
|  |     public Long add(C request) { | ||||||
|  |         if (request == null) { | ||||||
|  |             return 0L; | ||||||
|  |         } | ||||||
|  |         // 保存信息 | ||||||
|  |         T entity = BeanUtil.copyProperties(request, entityClass); | ||||||
|  |         baseMapper.insert(entity); | ||||||
|  |         TableInfo tableInfo = TableInfoHelper.getTableInfo(entityClass); | ||||||
|  |         Object idValue = tableInfo.getPropertyValue(entity, entityIdName); | ||||||
|  |         return Convert.toLong(idValue); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     @Transactional(rollbackFor = Exception.class) | ||||||
|  |     public void update(C request) { | ||||||
|  |         Object idValue = ReflectUtil.getFieldValue(request, entityIdName); | ||||||
|  |         T entity = this.getById(idValue); | ||||||
|  |         BeanUtil.copyProperties(request, entity, CopyOptions.create().ignoreNullValue()); | ||||||
|  |         baseMapper.updateById(entity); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     @Transactional(rollbackFor = Exception.class) | ||||||
|  |     public void delete(List<Long> ids) { | ||||||
|  |         baseMapper.deleteBatchIds(ids); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public void export(Q query, SortQuery sortQuery, HttpServletResponse response) { | ||||||
|  |         List<D> list = this.list(query, sortQuery, detailVoClass); | ||||||
|  |         list.forEach(this::fillDetail); | ||||||
|  |         ExcelUtils.export(list, "导出数据", detailVoClass, response); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 根据 ID 查询 |      * 根据 ID 查询 | ||||||
|      * |      * | ||||||
| @@ -259,46 +267,6 @@ public abstract class BaseServiceImpl<M extends BaseMapper<T>, T, V, D, Q, C ext | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * 获取实体类 ID 名称 |  | ||||||
|      * |  | ||||||
|      * @return 实体类 ID 名称 |  | ||||||
|      */ |  | ||||||
|     protected String currentEntityIdName() { |  | ||||||
|         TableInfo tableInfo = TableInfoHelper.getTableInfo(entityClass); |  | ||||||
|         Assert.notNull(tableInfo, "error: can not execute. because can not find cache of TableInfo for entity!"); |  | ||||||
|         String keyProperty = tableInfo.getKeyProperty(); |  | ||||||
|         Assert.notEmpty(keyProperty, "error: can not execute. because can not find column for id from entity!"); |  | ||||||
|         return keyProperty; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * 获取实体类 Class 对象 |  | ||||||
|      * |  | ||||||
|      * @return 实体类 Class 对象 |  | ||||||
|      */ |  | ||||||
|     protected Class<T> currentEntityClass() { |  | ||||||
|         return (Class<T>)ReflectionKit.getSuperClassGenericType(this.getClass(), BaseServiceImpl.class, 1); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * 获取列表信息类 Class 对象 |  | ||||||
|      * |  | ||||||
|      * @return 列表信息类 Class 对象 |  | ||||||
|      */ |  | ||||||
|     protected Class<V> currentVoClass() { |  | ||||||
|         return (Class<V>)ReflectionKit.getSuperClassGenericType(this.getClass(), BaseServiceImpl.class, 2); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * 获取详情信息类 Class 对象 |  | ||||||
|      * |  | ||||||
|      * @return 详情信息类 Class 对象 |  | ||||||
|      */ |  | ||||||
|     protected Class<D> currentDetailVoClass() { |  | ||||||
|         return (Class<D>)ReflectionKit.getSuperClassGenericType(this.getClass(), BaseServiceImpl.class, 3); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 链式查询 |      * 链式查询 | ||||||
|      * |      * | ||||||
| @@ -345,4 +313,17 @@ public abstract class BaseServiceImpl<M extends BaseMapper<T>, T, V, D, Q, C ext | |||||||
|     protected LambdaUpdateChainWrapper<T> lambdaUpdate() { |     protected LambdaUpdateChainWrapper<T> lambdaUpdate() { | ||||||
|         return ChainWrappers.lambdaUpdateChain(baseMapper); |         return ChainWrappers.lambdaUpdateChain(baseMapper); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 获取实体类 ID 名称 | ||||||
|  |      * | ||||||
|  |      * @return 实体类 ID 名称 | ||||||
|  |      */ | ||||||
|  |     private String currentEntityIdName() { | ||||||
|  |         TableInfo tableInfo = TableInfoHelper.getTableInfo(entityClass); | ||||||
|  |         Assert.notNull(tableInfo, "error: can not execute. because can not find cache of TableInfo for entity!"); | ||||||
|  |         String keyProperty = tableInfo.getKeyProperty(); | ||||||
|  |         Assert.notEmpty(keyProperty, "error: can not execute. because can not find column for id from entity!"); | ||||||
|  |         return keyProperty; | ||||||
|  |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -41,7 +41,7 @@ public class WebMvcMappingConfiguration extends DelegatingWebMvcConfiguration { | |||||||
|      * CRUD 请求映射器处理器映射器(覆盖默认 RequestMappingHandlerMapping) |      * CRUD 请求映射器处理器映射器(覆盖默认 RequestMappingHandlerMapping) | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     protected RequestMappingHandlerMapping createRequestMappingHandlerMapping() { |     public RequestMappingHandlerMapping createRequestMappingHandlerMapping() { | ||||||
|         return new CrudRequestMappingHandlerMapping(); |         return new CrudRequestMappingHandlerMapping(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -46,7 +46,7 @@ public class MybatisPlusConfiguration { | |||||||
|      * @return / |      * @return / | ||||||
|      */ |      */ | ||||||
|     @Bean |     @Bean | ||||||
|     MybatisPlusInterceptor mybatisPlusInterceptor() { |     public MybatisPlusInterceptor mybatisPlusInterceptor() { | ||||||
|         MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); |         MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); | ||||||
|         // 分页插件 |         // 分页插件 | ||||||
|         interceptor.addInnerInterceptor(paginationInnerInterceptor()); |         interceptor.addInnerInterceptor(paginationInnerInterceptor()); | ||||||
| @@ -55,6 +55,22 @@ public class MybatisPlusConfiguration { | |||||||
|         return interceptor; |         return interceptor; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 元对象处理器配置(插入或修改时自动填充) | ||||||
|  |      */ | ||||||
|  |     @Bean | ||||||
|  |     public MetaObjectHandler metaObjectHandler() { | ||||||
|  |         return new MyBatisPlusMetaObjectHandler(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * ID 生成器配置,仅在主键类型(idType)配置为 ASSIGN_ID 或 ASSIGN_UUID 时有效(使用网卡信息绑定雪花生成器,防止集群雪花 ID 重复) | ||||||
|  |      */ | ||||||
|  |     @Bean | ||||||
|  |     public IdentifierGenerator idGenerator() { | ||||||
|  |         return new DefaultIdentifierGenerator(NetUtil.getLocalhost()); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 分页插件配置(<a href="https://baomidou.com/pages/97710a/#paginationinnerinterceptor">...</a>) |      * 分页插件配置(<a href="https://baomidou.com/pages/97710a/#paginationinnerinterceptor">...</a>) | ||||||
|      */ |      */ | ||||||
| @@ -68,20 +84,4 @@ public class MybatisPlusConfiguration { | |||||||
|         paginationInnerInterceptor.setMaxLimit(-1L); |         paginationInnerInterceptor.setMaxLimit(-1L); | ||||||
|         return paginationInnerInterceptor; |         return paginationInnerInterceptor; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * 元对象处理器配置(插入或修改时自动填充) |  | ||||||
|      */ |  | ||||||
|     @Bean |  | ||||||
|     MetaObjectHandler metaObjectHandler() { |  | ||||||
|         return new MyBatisPlusMetaObjectHandler(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * ID 生成器配置,仅在主键类型(idType)配置为 ASSIGN_ID 或 ASSIGN_UUID 时有效(使用网卡信息绑定雪花生成器,防止集群雪花 ID 重复) |  | ||||||
|      */ |  | ||||||
|     @Bean |  | ||||||
|     IdentifierGenerator idGenerator() { |  | ||||||
|         return new DefaultIdentifierGenerator(NetUtil.getLocalhost()); |  | ||||||
|     } |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -30,5 +30,4 @@ public class BadRequestException extends RuntimeException { | |||||||
|     public BadRequestException(String message) { |     public BadRequestException(String message) { | ||||||
|         super(message); |         super(message); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -30,5 +30,4 @@ public class ServiceException extends RuntimeException { | |||||||
|     public ServiceException(String message) { |     public ServiceException(String message) { | ||||||
|         super(message); |         super(message); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -20,8 +20,6 @@ import static top.charles7c.cnadmin.common.annotation.CrudRequestMapping.Api; | |||||||
|  |  | ||||||
| import java.lang.reflect.Method; | import java.lang.reflect.Method; | ||||||
|  |  | ||||||
| import lombok.NoArgsConstructor; |  | ||||||
|  |  | ||||||
| import org.springframework.lang.NonNull; | import org.springframework.lang.NonNull; | ||||||
| import org.springframework.web.servlet.mvc.method.RequestMappingInfo; | import org.springframework.web.servlet.mvc.method.RequestMappingInfo; | ||||||
| import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; | import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; | ||||||
| @@ -38,7 +36,6 @@ import top.charles7c.cnadmin.common.util.ExceptionUtils; | |||||||
|  * @author Charles7c |  * @author Charles7c | ||||||
|  * @since 2023/1/27 10:30 |  * @since 2023/1/27 10:30 | ||||||
|  */ |  */ | ||||||
| @NoArgsConstructor |  | ||||||
| public class CrudRequestMappingHandlerMapping extends RequestMappingHandlerMapping { | public class CrudRequestMappingHandlerMapping extends RequestMappingHandlerMapping { | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|   | |||||||
| @@ -76,20 +76,6 @@ public class PageQuery extends SortQuery { | |||||||
|         this.setSize(size); |         this.setSize(size); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public void setPage(Integer page) { |  | ||||||
|         this.page = page == null ? DEFAULT_PAGE : page; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public void setSize(Integer size) { |  | ||||||
|         if (size == null) { |  | ||||||
|             this.size = DEFAULT_SIZE; |  | ||||||
|         } else if (size > DEFAULT_MAX_SIZE) { |  | ||||||
|             this.size = DEFAULT_MAX_SIZE; |  | ||||||
|         } else { |  | ||||||
|             this.size = size; |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 基于分页查询条件转换为 MyBatis Plus 分页条件 |      * 基于分页查询条件转换为 MyBatis Plus 分页条件 | ||||||
|      * |      * | ||||||
| @@ -110,4 +96,18 @@ public class PageQuery extends SortQuery { | |||||||
|         } |         } | ||||||
|         return mybatisPage; |         return mybatisPage; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     public void setPage(Integer page) { | ||||||
|  |         this.page = page == null ? DEFAULT_PAGE : page; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void setSize(Integer size) { | ||||||
|  |         if (size == null) { | ||||||
|  |             this.size = DEFAULT_SIZE; | ||||||
|  |         } else if (size > DEFAULT_MAX_SIZE) { | ||||||
|  |             this.size = DEFAULT_MAX_SIZE; | ||||||
|  |         } else { | ||||||
|  |             this.size = size; | ||||||
|  |         } | ||||||
|  |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -79,5 +79,4 @@ public class FileUtils { | |||||||
|         } |         } | ||||||
|         return null; |         return null; | ||||||
|     } |     } | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -57,10 +57,6 @@ public class ServletUtils { | |||||||
|         return getServletRequestAttributes().getResponse(); |         return getServletRequestAttributes().getResponse(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     private static ServletRequestAttributes getServletRequestAttributes() { |  | ||||||
|         return (ServletRequestAttributes)Objects.requireNonNull(RequestContextHolder.getRequestAttributes()); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 获取浏览器及其版本信息 |      * 获取浏览器及其版本信息 | ||||||
|      * |      * | ||||||
| @@ -75,4 +71,8 @@ public class ServletUtils { | |||||||
|         UserAgent userAgent = UserAgentUtil.parse(request.getHeader("User-Agent")); |         UserAgent userAgent = UserAgentUtil.parse(request.getHeader("User-Agent")); | ||||||
|         return userAgent.getBrowser().getName() + " " + userAgent.getVersion(); |         return userAgent.getBrowser().getName() + " " + userAgent.getVersion(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     private static ServletRequestAttributes getServletRequestAttributes() { | ||||||
|  |         return (ServletRequestAttributes)Objects.requireNonNull(RequestContextHolder.getRequestAttributes()); | ||||||
|  |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -25,8 +25,8 @@ import top.charles7c.cnadmin.common.exception.ServiceException; | |||||||
| /** | /** | ||||||
|  * 业务参数校验工具类(抛出 500 ServiceException) |  * 业务参数校验工具类(抛出 500 ServiceException) | ||||||
|  * |  * | ||||||
|  * @author Charles7c |  | ||||||
|  * @see ServiceException |  * @see ServiceException | ||||||
|  |  * @author Charles7c | ||||||
|  * @since 2023/1/2 22:12 |  * @since 2023/1/2 22:12 | ||||||
|  */ |  */ | ||||||
| @Slf4j | @Slf4j | ||||||
|   | |||||||
| @@ -25,9 +25,9 @@ import top.charles7c.cnadmin.common.exception.BadRequestException; | |||||||
| /** | /** | ||||||
|  * 基本参数校验工具类(抛出 400 BadRequestException) |  * 基本参数校验工具类(抛出 400 BadRequestException) | ||||||
|  * |  * | ||||||
|  |  * @see BadRequestException | ||||||
|  * @author Charles7c |  * @author Charles7c | ||||||
|  * @since 2022/12/21 20:56 |  * @since 2022/12/21 20:56 | ||||||
|  * @see BadRequestException |  | ||||||
|  */ |  */ | ||||||
| @Slf4j | @Slf4j | ||||||
| @NoArgsConstructor(access = AccessLevel.PRIVATE) | @NoArgsConstructor(access = AccessLevel.PRIVATE) | ||||||
|   | |||||||
| @@ -34,5 +34,4 @@ public interface LoginService { | |||||||
|      * @return 令牌 |      * @return 令牌 | ||||||
|      */ |      */ | ||||||
|     String login(String username, String password); |     String login(String username, String password); | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -36,15 +36,6 @@ import top.charles7c.cnadmin.system.model.vo.UserVO; | |||||||
|  */ |  */ | ||||||
| public interface UserService extends BaseService<UserVO, UserDetailVO, UserQuery, UserRequest> { | public interface UserService extends BaseService<UserVO, UserDetailVO, UserQuery, UserRequest> { | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * 根据用户名查询 |  | ||||||
|      * |  | ||||||
|      * @param username |  | ||||||
|      *            用户名 |  | ||||||
|      * @return 用户信息 |  | ||||||
|      */ |  | ||||||
|     UserDO getByUsername(String username); |  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 上传头像 |      * 上传头像 | ||||||
|      * |      * | ||||||
| @@ -98,6 +89,15 @@ public interface UserService extends BaseService<UserVO, UserDetailVO, UserQuery | |||||||
|      */ |      */ | ||||||
|     void updateUserRole(UpdateUserRoleRequest request, Long userId); |     void updateUserRole(UpdateUserRoleRequest request, Long userId); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 根据用户名查询 | ||||||
|  |      * | ||||||
|  |      * @param username | ||||||
|  |      *            用户名 | ||||||
|  |      * @return 用户信息 | ||||||
|  |      */ | ||||||
|  |     UserDO getByUsername(String username); | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 根据部门 ID 列表查询 |      * 根据部门 ID 列表查询 | ||||||
|      * |      * | ||||||
|   | |||||||
| @@ -82,6 +82,15 @@ public class DeptServiceImpl extends BaseServiceImpl<DeptMapper, DeptDO, DeptVO, | |||||||
|         super.lambdaUpdate().in(DeptDO::getParentId, ids).remove(); |         super.lambdaUpdate().in(DeptDO::getParentId, ids).remove(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public void fillDetail(Object detailObj) { | ||||||
|  |         super.fillDetail(detailObj); | ||||||
|  |         if (detailObj instanceof DeptDetailVO) { | ||||||
|  |             DeptDetailVO detailVO = (DeptDetailVO)detailObj; | ||||||
|  |             detailVO.setParentName(ExceptionUtils.exToNull(() -> this.get(detailVO.getParentId()).getDeptName())); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 检查名称是否存在 |      * 检查名称是否存在 | ||||||
|      * |      * | ||||||
| @@ -97,13 +106,4 @@ public class DeptServiceImpl extends BaseServiceImpl<DeptMapper, DeptDO, DeptVO, | |||||||
|         return super.lambdaQuery().eq(DeptDO::getDeptName, name).eq(DeptDO::getParentId, parentId) |         return super.lambdaQuery().eq(DeptDO::getDeptName, name).eq(DeptDO::getParentId, parentId) | ||||||
|             .ne(id != null, DeptDO::getDeptId, id).exists(); |             .ne(id != null, DeptDO::getDeptId, id).exists(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |  | ||||||
|     public void fillDetail(Object detailObj) { |  | ||||||
|         super.fillDetail(detailObj); |  | ||||||
|         if (detailObj instanceof DeptDetailVO) { |  | ||||||
|             DeptDetailVO detailVO = (DeptDetailVO)detailObj; |  | ||||||
|             detailVO.setParentName(ExceptionUtils.exToNull(() -> this.get(detailVO.getParentId()).getDeptName())); |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -74,6 +74,11 @@ public class MenuServiceImpl extends BaseServiceImpl<MenuMapper, MenuDO, MenuVO, | |||||||
|         super.lambdaUpdate().in(MenuDO::getParentId, ids).remove(); |         super.lambdaUpdate().in(MenuDO::getParentId, ids).remove(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public Set<String> listPermissionsByUserId(Long userId) { | ||||||
|  |         return baseMapper.selectPermissionsByUserId(userId); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 检查名称是否存在 |      * 检查名称是否存在 | ||||||
|      * |      * | ||||||
| @@ -89,9 +94,4 @@ public class MenuServiceImpl extends BaseServiceImpl<MenuMapper, MenuDO, MenuVO, | |||||||
|         return super.lambdaQuery().eq(MenuDO::getMenuName, name).eq(MenuDO::getParentId, parentId) |         return super.lambdaQuery().eq(MenuDO::getMenuName, name).eq(MenuDO::getParentId, parentId) | ||||||
|             .ne(id != null, MenuDO::getMenuId, id).exists(); |             .ne(id != null, MenuDO::getMenuId, id).exists(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |  | ||||||
|     public Set<String> listPermissionsByUserId(Long userId) { |  | ||||||
|         return baseMapper.selectPermissionsByUserId(userId); |  | ||||||
|     } |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -104,32 +104,6 @@ public class RoleServiceImpl extends BaseServiceImpl<RoleMapper, RoleDO, RoleVO, | |||||||
|         super.delete(ids); |         super.delete(ids); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * 检查名称是否存在 |  | ||||||
|      * |  | ||||||
|      * @param name |  | ||||||
|      *            名称 |  | ||||||
|      * @param id |  | ||||||
|      *            ID |  | ||||||
|      * @return 是否存在 |  | ||||||
|      */ |  | ||||||
|     private boolean checkNameExists(String name, Long id) { |  | ||||||
|         return super.lambdaQuery().eq(RoleDO::getRoleName, name).ne(id != null, RoleDO::getRoleId, id).exists(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * 检查编码是否存在 |  | ||||||
|      * |  | ||||||
|      * @param code |  | ||||||
|      *            编码 |  | ||||||
|      * @param id |  | ||||||
|      *            ID |  | ||||||
|      * @return 是否存在 |  | ||||||
|      */ |  | ||||||
|     private boolean checkCodeExists(String code, Long id) { |  | ||||||
|         return super.lambdaQuery().eq(RoleDO::getRoleCode, code).ne(id != null, RoleDO::getRoleId, id).exists(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public void fillDetail(Object detailObj) { |     public void fillDetail(Object detailObj) { | ||||||
|         super.fillDetail(detailObj); |         super.fillDetail(detailObj); | ||||||
| @@ -167,4 +141,30 @@ public class RoleServiceImpl extends BaseServiceImpl<RoleMapper, RoleDO, RoleVO, | |||||||
|         List<RoleDO> roleList = super.lambdaQuery().select(RoleDO::getRoleCode).in(RoleDO::getRoleId, roleIds).list(); |         List<RoleDO> roleList = super.lambdaQuery().select(RoleDO::getRoleCode).in(RoleDO::getRoleId, roleIds).list(); | ||||||
|         return roleList.stream().map(RoleDO::getRoleCode).collect(Collectors.toSet()); |         return roleList.stream().map(RoleDO::getRoleCode).collect(Collectors.toSet()); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 检查名称是否存在 | ||||||
|  |      * | ||||||
|  |      * @param name | ||||||
|  |      *            名称 | ||||||
|  |      * @param id | ||||||
|  |      *            ID | ||||||
|  |      * @return 是否存在 | ||||||
|  |      */ | ||||||
|  |     private boolean checkNameExists(String name, Long id) { | ||||||
|  |         return super.lambdaQuery().eq(RoleDO::getRoleName, name).ne(id != null, RoleDO::getRoleId, id).exists(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 检查编码是否存在 | ||||||
|  |      * | ||||||
|  |      * @param code | ||||||
|  |      *            编码 | ||||||
|  |      * @param id | ||||||
|  |      *            ID | ||||||
|  |      * @return 是否存在 | ||||||
|  |      */ | ||||||
|  |     private boolean checkCodeExists(String code, Long id) { | ||||||
|  |         return super.lambdaQuery().eq(RoleDO::getRoleCode, code).ne(id != null, RoleDO::getRoleId, id).exists(); | ||||||
|  |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -102,19 +102,6 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, UserDO, UserVO, | |||||||
|         userRoleService.save(request.getRoleIds(), userId); |         userRoleService.save(request.getRoleIds(), userId); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * 检查名称是否存在 |  | ||||||
|      * |  | ||||||
|      * @param name |  | ||||||
|      *            名称 |  | ||||||
|      * @param id |  | ||||||
|      *            ID |  | ||||||
|      * @return 是否存在 |  | ||||||
|      */ |  | ||||||
|     private boolean checkNameExists(String name, Long id) { |  | ||||||
|         return super.lambdaQuery().eq(UserDO::getUsername, name).ne(id != null, UserDO::getUserId, id).exists(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public void fillDetail(Object detailObj) { |     public void fillDetail(Object detailObj) { | ||||||
|         super.fillDetail(detailObj); |         super.fillDetail(detailObj); | ||||||
| @@ -127,11 +114,6 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, UserDO, UserVO, | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |  | ||||||
|     public UserDO getByUsername(String username) { |  | ||||||
|         return super.lambdaQuery().eq(UserDO::getUsername, username).one(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     @Transactional(rollbackFor = Exception.class) |     @Transactional(rollbackFor = Exception.class) | ||||||
|     public String uploadAvatar(MultipartFile avatarFile, Long userId) { |     public String uploadAvatar(MultipartFile avatarFile, Long userId) { | ||||||
| @@ -218,6 +200,11 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, UserDO, UserVO, | |||||||
|         userRoleService.save(request.getRoleIds(), userId); |         userRoleService.save(request.getRoleIds(), userId); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public UserDO getByUsername(String username) { | ||||||
|  |         return super.lambdaQuery().eq(UserDO::getUsername, username).one(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public Long countByDeptIds(List<Long> deptIds) { |     public Long countByDeptIds(List<Long> deptIds) { | ||||||
|         return super.lambdaQuery().in(UserDO::getDeptId, deptIds).count(); |         return super.lambdaQuery().in(UserDO::getDeptId, deptIds).count(); | ||||||
| @@ -227,4 +214,17 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, UserDO, UserVO, | |||||||
|     public String getNicknameById(Long userId) { |     public String getNicknameById(Long userId) { | ||||||
|         return super.getById(userId).getNickname(); |         return super.getById(userId).getNickname(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 检查名称是否存在 | ||||||
|  |      * | ||||||
|  |      * @param name | ||||||
|  |      *            名称 | ||||||
|  |      * @param id | ||||||
|  |      *            ID | ||||||
|  |      * @return 是否存在 | ||||||
|  |      */ | ||||||
|  |     private boolean checkNameExists(String name, Long id) { | ||||||
|  |         return super.lambdaQuery().eq(UserDO::getUsername, name).ne(id != null, UserDO::getUserId, id).exists(); | ||||||
|  |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -24,5 +24,4 @@ class ContinewAdminApplicationTests { | |||||||
|  |  | ||||||
|     @Test |     @Test | ||||||
|     void contextLoads() {} |     void contextLoads() {} | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user