mirror of
https://gitee.com/dotnetchina/OpenAuth.Net.git
synced 2025-11-08 18:34:44 +08:00
🔧chore: 增加cursor项目rules
This commit is contained in:
237
.cursor/rules/openauth.mdc
Normal file
237
.cursor/rules/openauth.mdc
Normal file
@@ -0,0 +1,237 @@
|
||||
---
|
||||
alwaysApply: false
|
||||
---
|
||||
# OpenAuth.Net Cursor Rules
|
||||
|
||||
## 项目概述
|
||||
OpenAuth.Net是一个基于.NET 9的企业级权限管理和快速开发框架,采用Martin Fowler企业级应用开发思想,集成了最新的技术栈。
|
||||
|
||||
## 技术栈
|
||||
- **后端**: .NET 9, ASP.NET Core WebAPI
|
||||
- **ORM**: SqlSugar (主要) + Entity Framework Core (兼容)
|
||||
- **依赖注入**: Autofac
|
||||
- **数据库**: 支持SqlServer、MySQL、Oracle、PostgreSQL
|
||||
- **定时任务**: Quartz.NET
|
||||
- **缓存**: Redis, MemoryCache
|
||||
- **前端**: Vue2 + Element-UI
|
||||
- **测试**: NUnit
|
||||
- **文档**: Swagger
|
||||
|
||||
## 项目架构
|
||||
```
|
||||
📦OpenAuth.Net
|
||||
┣ 📂Infrastructure # 基础设施层 - 工具类、扩展方法、帮助类
|
||||
┣ 📂OpenAuth.Repository # 数据访问层 - 实体定义、数据访问
|
||||
┣ 📂OpenAuth.App # 应用服务层 - 业务逻辑
|
||||
┣ 📂OpenAuth.WebApi # 表示层 - WebAPI控制器
|
||||
┣ 📂OpenAuth.Identity # 身份认证服务 - IdentityServer4
|
||||
┣ 📂Vue2 # 前端项目
|
||||
┗ 📂数据库脚本 # 数据库初始化脚本
|
||||
```
|
||||
|
||||
## 编码规范
|
||||
|
||||
### 通用规范
|
||||
- 使用C# 9+语法特性
|
||||
- 遵循Microsoft C#编码规范
|
||||
- 类名使用PascalCase,方法名使用PascalCase
|
||||
- 私有字段使用_camelCase,公共属性使用PascalCase
|
||||
- 常量使用UPPER_CASE
|
||||
- 异步方法必须添加Async后缀
|
||||
|
||||
### 命名规范
|
||||
- **Controller**: 以Controller结尾,如`UsersController`
|
||||
- **Service/App**: 以App结尾,如`UserManagerApp`
|
||||
- **Repository**: 以Repository结尾,如`UserRepository`
|
||||
- **Entity**: 实体类直接使用名词,如`SysUser`
|
||||
- **Request**: 请求类以Req结尾,如`QueryUserListReq`
|
||||
- **Response**: 响应类以Resp结尾,如`PagedListDataResp`
|
||||
- **DTO**: 视图模型以View结尾,如`UserView`
|
||||
|
||||
### 注释规范
|
||||
- 所有公共方法必须添加XML注释
|
||||
- 复杂业务逻辑必须添加行内注释
|
||||
- 使用/// <summary>标记方法说明
|
||||
- 参数使用/// <param name="参数名">说明</param>
|
||||
- 返回值使用/// <returns>说明</returns>
|
||||
|
||||
## 分层架构规则
|
||||
|
||||
### Infrastructure层 (基础设施层)
|
||||
- **职责**: 提供通用工具类、扩展方法、帮助类、常量定义
|
||||
- **规则**:
|
||||
- 不依赖其他业务层
|
||||
- 提供可复用的基础功能
|
||||
- 包含缓存、配置、工具类等
|
||||
- **文件组织**:
|
||||
- `/Cache` - 缓存相关
|
||||
- `/Extensions` - 扩展方法
|
||||
- `/Helpers` - 帮助类
|
||||
- `/Const` - 常量定义
|
||||
|
||||
### Repository层 (数据访问层)
|
||||
- **职责**: 数据访问、实体定义、数据库操作
|
||||
- **规则**:
|
||||
- 继承自`BaseRepository<T,TContext>`
|
||||
- 实体类继承自`StringEntity`、`LongEntity`或`IntAutoGenEntity`
|
||||
- 使用SqlSugar或EF Core进行数据访问
|
||||
- 包含DbContext配置
|
||||
- **基类使用**:
|
||||
- `StringEntity`: 字符串主键实体
|
||||
- `LongEntity`: 长整型主键实体
|
||||
- `IntAutoGenEntity`: 自增整型主键实体
|
||||
|
||||
### App层 (应用服务层)
|
||||
- **职责**: 业务逻辑处理、数据传输对象、业务规则
|
||||
- **规则**:
|
||||
- 继承自`SqlSugarBaseApp<T>`、`BaseStringApp<T>`、`BaseLongApp<T>`等基类
|
||||
- 通过构造函数注入依赖
|
||||
- 实现业务逻辑,不直接操作数据库
|
||||
- 使用Request/Response模式
|
||||
- **依赖注入**:
|
||||
```csharp
|
||||
public UserManagerApp(ISqlSugarClient client, RevelanceManagerApp app, IAuth auth)
|
||||
: base(client, auth)
|
||||
```
|
||||
|
||||
### WebApi层 (表示层)
|
||||
- **职责**: HTTP请求处理、参数验证、响应格式化
|
||||
- **规则**:
|
||||
- 继承自`ControllerBase`
|
||||
- 使用`[ApiController]`特性
|
||||
- 统一返回`Response<T>`格式
|
||||
- 进行参数验证
|
||||
- 添加Swagger文档注释
|
||||
|
||||
## 数据库操作规范
|
||||
|
||||
### SqlSugar使用规范
|
||||
```csharp
|
||||
// 查询
|
||||
var users = SugarClient.Queryable<SysUser>()
|
||||
.Where(u => u.Status == 1)
|
||||
.ToList();
|
||||
|
||||
// 分页查询
|
||||
var result = new PagedListDataResp<Role>();
|
||||
var objs = SugarClient.Queryable<Role>();
|
||||
if (!string.IsNullOrEmpty(request.key))
|
||||
{
|
||||
objs = objs.Where(u => u.Name.Contains(request.key));
|
||||
}
|
||||
|
||||
result.Data = await objs.OrderBy(u => u.Name)
|
||||
.Skip((request.page - 1) * request.limit)
|
||||
.Take(request.limit).ToListAsync();
|
||||
result.Count = await objs.CountAsync();
|
||||
return result;
|
||||
|
||||
// 联表查询
|
||||
var result = SugarClient.Queryable<Relevance>()
|
||||
.LeftJoin<SysOrg>((u, o) => u.SecondId == o.Id)
|
||||
.Where((u, o) => u.FirstId == userId && u.RelKey == Define.USERORG)
|
||||
.Select((u, o) => o);
|
||||
return result.ToList();
|
||||
```
|
||||
|
||||
### 事务处理
|
||||
```csharp
|
||||
SugarClient.Ado.BeginTran();
|
||||
try
|
||||
{
|
||||
// 数据库操作
|
||||
SugarClient.Ado.CommitTran();
|
||||
}
|
||||
catch
|
||||
{
|
||||
SugarClient.Ado.RollbackTran();
|
||||
throw;
|
||||
}
|
||||
```
|
||||
|
||||
## 权限和安全规范
|
||||
|
||||
### 权限验证
|
||||
- 使用`IAuth`接口获取当前用户信息
|
||||
- 通过`_auth.GetCurrentUser()`获取登录用户
|
||||
- 数据权限通过机构级联控制
|
||||
|
||||
## API设计规范
|
||||
|
||||
### 控制器设计
|
||||
```csharp
|
||||
[ApiController]
|
||||
[Route("api/[controller]")]
|
||||
public class UsersController : ControllerBase
|
||||
{
|
||||
private readonly UserManagerApp _app;
|
||||
|
||||
public UsersController(UserManagerApp app)
|
||||
{
|
||||
_app = app;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取用户列表
|
||||
/// </summary>
|
||||
[HttpGet]
|
||||
public async Task<Response<PagedListDataResp<UserView>>> Get([FromQuery] QueryUserListReq request)
|
||||
{
|
||||
var result = await _app.Load(request);
|
||||
return Response.Ok(result);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 依赖注入规范
|
||||
|
||||
### Autofac配置
|
||||
- 在`AutofacExt.cs`中配置依赖注入
|
||||
- 实现`IDependency`接口的类自动注册
|
||||
- 使用构造函数注入
|
||||
|
||||
## 测试规范
|
||||
|
||||
### 单元测试
|
||||
- 使用NUnit框架
|
||||
- 继承自`TestBase`基类
|
||||
- 测试类以Test结尾
|
||||
- 测试方法使用描述性名称
|
||||
|
||||
### 集成测试
|
||||
- 使用`AutofacWebApplicationFactory`
|
||||
- 模拟HTTP请求
|
||||
- 验证完整的业务流程
|
||||
|
||||
## 工作流规范
|
||||
|
||||
### 流程定义
|
||||
- 使用`FlowScheme`定义流程模板
|
||||
- 通过`FlowInstance`管理流程实例
|
||||
- `FlowNode`表示流程节点
|
||||
|
||||
### 流程引擎
|
||||
- 使用`FlowRuntime`执行流程
|
||||
- 支持顺序、并行、条件等流程类型
|
||||
- 流程状态通过`FlowInstanceStatus`管理
|
||||
|
||||
## 定时任务规范
|
||||
|
||||
### Quartz使用
|
||||
- 继承自`IJob`接口
|
||||
- 在`QuartzService`中注册任务
|
||||
- 支持Cron表达式配置
|
||||
|
||||
## 文档规范
|
||||
|
||||
### 代码文档
|
||||
- 重要业务逻辑添加注释
|
||||
- 复杂算法添加说明
|
||||
- 配置文件添加说明注释
|
||||
|
||||
## 配置管理
|
||||
|
||||
### 配置文件
|
||||
- `appsettings.json`: 基础配置
|
||||
- `appsettings.Development.json`: 开发环境配置
|
||||
- `appsettings.Production.json`: 生产环境配置
|
||||
Reference in New Issue
Block a user