# anivia-cloud-scaffold **Repository Path**: anivia/anivia-cloud-scaffold ## Basic Information - **Project Name**: anivia-cloud-scaffold - **Description**: springCloud Alibaba 微服务脚手架 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2023-11-27 - **Last Updated**: 2024-04-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # anivia-cloud-scaffold springCloud Alibaba 微服务脚手架 ### 环境以及版本说明: 1. java: >= 17 2. nacos: >= 2.2.1 3. mysql: 8 4. redis ### 主要框架及组件: * SpringBoot * SpringCloud * SpringCloudAlibaba * MyBatis-Plus * sa-Token ### 项目结构: ``` anivia-cloud-scaffold | ├──anivia-common --公共包 | | | ├──anivia-common-core --核心 | | | ├──anivia-common-log --日志 | | | ├──anivia-common-web --web相关、多账户鉴权配置 | ├──anivia-auth --统一权限 | | | ├──anivia-auth-service --统一权限服务 | ├──anivia-system --系统相关 | | | ├──anivia-system-feign --系统服务feign | | | ├──anivia-system-service --系统服务 | ├──anivia-gateway --网关(后续可能管理多个网关) | | | ├──anivia-gateway-service --网关服务 ``` ### 包结构: ``` config // 服务局部配置 constant // 服务局部常量 controller // 控制器 ├──admin // a端(web/h5/app/...)api ├──tenant // 企业端管理端(web/h5/app/...)api ├──feignImpl // feign实现类 ├──user // 企业用户端(web/h5/app/...)api ├──....... enums // 服务局部枚举类 mapper // mapper model // 模型 ├──dto // 控制器参数(前端参数post请求全部用dto接口) ├──entity // 实体类(一表一个实体类,纯净实体类) ├──vo // 返回视图类 service // 业务逻辑层接口 ├──impl // 业务逻辑层实现类 ├──util //服务局部工具 ..... ``` ### 接口规范: * 接口仅使用GET、POST * POST请求参数参数时,使用@RequestBody @Valid注解 * GET请求参数且以实体类接收参数时,使用@ParameterObject @Valid注解 * 所有方法,不可使用Map、JSON等结构传参,必要时必须使用实体类 * @SaAdminCheckLogin:需要a端用户登录才能访问 * @SaTenantCheckLogin:需要租户用户登录才能访问 * @SaUserCheckLogin:需要客户用户登录才能访问 * @SaAdminCheckPermission(value={"AAA","BBB"},mode = SaMode.OR): admin用户需要AAA或BBB权限才能访问 * @SaUserCheckPermission(value={"AAA","BBB"},mode = SaMode.OR): user用户需要AAA或BBB权限才能访问 * StpUserUtil: 客户登录管理工具类 * StpAdminUtil: a端用户登录管理工具类 * StpTenantUtil: 租户登录管理工具类 * 接口前缀说明: * admin/* : 仅a端可调用 * api/* : 仅租户端可调用 * web/* : 仅展业端可调用 * common/* : 三端通用接口 * POJO: * DTO:参数 * DO:一表一个实体类,纯净实体类 * VO:返回视图类 * 入参参数校验和API文档字段说明参考demo代码 * 枚举全部实现接口BaseEnum,并在code属性加上@EnumValue(保存到数据库时,保存此字段) * 数据权限使用方法: ```java DataScopeContext.start(ResourceBaseEnum.RESOURCE_3.getId()); // 开启数据权限,指定受影响的资源id // TODO 业务逻辑 DataScopeContext.close();// 如果需要停止使用数据权限 ``` * 忽略租户方法: ```java TenantContext.ignore(); // 开启忽略租户 // TODO 业务逻辑 TenantContext.close();;// 如果需要停止忽略租户功能 ``` * 开启数据脱敏: ```java // 1.返回vo中,给需要脱敏的字段加上注解@DesensitizationField(type = DesensitizedType.CHINESE_NAME),并指定类型 // 2.controller结果返回前开启数据脱敏功能即可 DataDesensitizationContext.start(); ``` ### 接口响应结果: ``` http响应码-500:系统内部异常 http响应码-401:未登录、登录过期、挤下线、踢下线...等 http响应码-403:无权限 http响应码-200:请求成功 ├──code: 1:成功 0或其他:失败(失败原因在msg体现) ```