diff --git a/PasteForm.Handler/readme.md b/PasteForm.Handler/readme.md index 43f137c1a7385b45e059bfce98633fb94c4bbec4..d4033acc1decd82f813a0dfdb7186edb798df284 100644 --- a/PasteForm.Handler/readme.md +++ b/PasteForm.Handler/readme.md @@ -1,19 +1,153 @@ - -## 包含子项目 +# PasteForm 项目文档 -Domain主要就是数据库模型,CodeFirst模式 +## 简介 +`PasteForm` 是一个基于 ABP 框架的动态表单系统,支持通过 JSON 配置自动生成表单界面,适用于快速构建数据编辑、展示和管理功能。该项目主要用于数据管理场景,如用户管理、角色权限配置、文章发布、动态字段配置等。 -Contracts主要是各个数据的Dto模型,一般是可以对外的 +## 功能模块 -Handler主要做业务逻辑处理,还有他们说得聚合也放处理 +### 用户管理 (`usermodels`) +- **用户信息管理**:包括用户注册、登录、信息编辑、权限分配等。 +- **角色管理**:支持角色创建、权限绑定、角色层级管理。 +- **等级管理**:用于定义用户等级体系,并支持与角色绑定。 +- **用户角色绑定**:实现用户与角色之间的关联管理。 -Application主要做CRUD的基本接口处理 +### 动态表单 (`dynamicmodels`) +- **动态字段管理**:支持动态字段的添加、编辑、删除,字段类型包括文本、数字、布尔值、数组等。 +- **动态表格管理**:用于定义动态表结构,支持字段管理、权限控制等。 +- **动态表单生成**:根据配置自动生成前端表单,支持视图、编辑、新增等模式。 -HostApi做一些特殊的对外接口,就是CRUD之外的接口 +### 文章管理 (`newsmodels`) +- **文章发布**:支持文章的创建、编辑、删除、状态控制。 +- **文章分类**:支持文章分类管理,便于内容组织。 -## 配套工具 +### 测试模块 (`testmodels`) +- **测试数据模型**:提供测试用的数据模型,如 `MyTable`, `TestTable` :// 用于演示和测试动态表单功能。 +- **枚举与选择器**:支持多种选择器(单选、多选、下拉选择等)和枚举字段的展示与处理。 -PasteBuilder 右键代码生成器 +### 数据访问层 (`EntityFrameworkCore`) +- 基于 Entity Framework Core 实现数据库上下文管理。 +- 支持 SQL Server、SQLite 等多种数据库。 +- 提供统一的数据库访问接口。 -PasteForm 新一代CRUD 实现管理端 +### 应用服务 (`Application`) +- 提供基于 ABP 的应用服务,支持 CRUD 操作。 +- 包含权限控制、日志记录、缓存管理等功能。 +- 支持动态模型的自动映射(AutoMapper)。 +### 接口服务 (`HttpApi.Host`) +- 提供 RESTful API 接口,支持前后端分离架构。 +- 包含身份验证、权限控制、日志记录等中间件。 +- 支持 Swagger 接口文档生成。 + +### 前端界面 (`wwwroot`) +- 基于 HTML/CSS/JavaScript 构建的前端界面。 +- 使用 Hui-iconfont 图标库、My97DatePicker 日期控件、ECharts 图表组件。 +- 提供动态表单展示、数据编辑、图表分析等功能。 + +## 技术栈 + +- **后端**: + - .NET 6.0 + - ABP Framework + - Entity Framework Core + - AutoMapper + - Serilog 日志 + - Redis 缓存支持 + - Swagger 接口文档 + +- **前端**: + - HTML5 / CSS3 / JavaScript + - Hui-iconfont 图标库 + - My97DatePicker 日期控件 + - Editor.md 富文本编辑器 + - ECharts 图表库 + +## 安装与部署 + +### 后端部署 + +1. **依赖安装** + - 安装 .NET 6 SDK + - 安装 Redis(可选) + - 安装数据库(SQL Server / SQLite) + +2. **配置数据库** + - 修改 `appsettings.json` 中的数据库连接字符串。 + - 运行迁移脚本或使用 EF Core 初始化数据库。 + +3. **启动服务** + ```bash + dotnet run --project PasteForm.HttpApi.Host + ``` + +4. **访问接口文档** + - 打开浏览器访问:`http://localhost:5000/swagger` + +### 前端部署 + +1. **静态资源访问** + - 前端页面位于 `wwwroot` 目录。 + - 可通过 `http://localhost:5000/index.html` 访问主界面。 + +2. **依赖库** + - 引入了 `Editor.md`、`ECharts`、`Hui-iconfont` `My97DatePicker` 等第三方库。 + +## 使用说明 + +### 动态表单配置 + +1. **字段定义** + - 使用 `DynamicField` 模型定义字段属性,如名称、类型、默认值、是否必填等。 + - 支持字段权限控制(是否显示、是否只读、是否可删除等)。 + +2. **表结构定义** + - 使用 `DynamicTable` 定义表结构,包括字段集合、路径、权限控制等。 + +3. **表单生成** + - 通过 `DynamicHelperAppService` 提供的接口生成表单结构。 + - 前端通过 `/api/app/dynamic/readAddModel` 等接口获取表单结构并渲染。 + +### 用户与权限管理 + +- **用户登录**:通过 `/api/app/user/login` 接口进行身份验证。 +- **角色权限**:通过 `RoleAttribute` 实现接口级别的权限控制。 +- **权限绑定**:支持将角色与用户、等级进行绑定。 + +### 数据展示与编辑 + +- **列表展示**:支持分页、搜索、排序、筛选等功能。 +- **数据编辑**:提供统一的编辑界面,支持字段校验、数据格式化等。 +- **数据删除与状态变更**:通过接口实现软删除和状态切换。 + +## 开发指南 + +### 添加新模块 + +1. **定义实体类** + - 在 `Domain` 层定义实体类,继承 `Entity`。 + - 使用数据注解定义字段约束。 + +2. **定义 DTO** + - 在 `Application.Contracts` 中定义 `AddDto`, `UpdateDto`, `ListDto` :// 用于接口数据传输。 + +3. **实现应用服务** + - 继承 `PasteFormAppService`,实现 CRUD 接口。 + - 使用 `TypeFilter(typeof(RoleAttribute))` 添加权限控制。 + +4. **注册服务** + - 在 `ApplicationModule` 中注册服务。 + - 在 `DbContext` 中添加 DbSet。 + +5. **前端展示** + - 在 `wwwroot/page` 下添加 HTML 页面。 + - 使用 `/api/app/[controller]/readAddModel` 获取表单结构并渲染。 + +## 贡献指南 + +- Fork 项目并创建新分支。 +- 提交代码前请确保通过单元测试。 +- 提交 PR 时请附上修改说明和相关截图。 + +## 许可证 + +本项目采用 MIT 许可证。详情请查看 [LICENSE](LICENSE) 文件。 \ No newline at end of file