8.4 KiB
8.4 KiB
学业邑规划 (MiAssessment) - 后端服务
基于 .NET 10 的多元智能测评小程序后端服务,采用清洁架构设计,提供小程序 API 和后台管理系统。
技术栈
| 组件 | 技术 |
|---|---|
| 框架 | ASP.NET Core (.NET 10) |
| ORM | Entity Framework Core |
| 数据库 | SQL Server 2022 |
| 缓存 | Redis |
| 认证 | JWT Bearer + Refresh Token |
| 日志 | Serilog |
| 对象映射 | Mapster |
| API 文档 | Scalar (OpenAPI) |
| DI 容器 | Autofac |
功能特性
- 用户认证: 微信小程序登录、JWT 认证、Token 刷新
- 微信集成: 小程序登录、手机号获取
- 微信支付: V3 支付、回调验签、退款
- 用户管理: 用户信息、登录日志、地址管理
- 测评系统: 题库管理、测评记录、报告生成
- 订单系统: 支付订单、分销佣金
- 后台管理: 完整的 RBAC 权限控制
- 字典管理: 静态数据 + 动态 SQL 查询
项目结构
server/MiAssessment/
├── MiAssessment.sln # 解决方案文件
├── scripts/ # 数据库脚本
│ ├── init_admin_db.sql # 后台管理数据库初始化
│ ├── init_business_db.sql # 业务数据库初始化
│ ├── init_business_dict.sql # 业务字典数据
│ └── seed_business_permissions.sql # 业务权限种子数据
│
├── src/
│ ├── MiAssessment.Api/ # 小程序 API 接口层
│ │ ├── Controllers/ # API 控制器
│ │ ├── Filters/ # 过滤器
│ │ └── Program.cs # 程序入口
│ │
│ ├── MiAssessment.Admin/ # 后台管理系统
│ │ ├── admin-web/ # 前端代码 (Vue 3 + TypeScript)
│ │ ├── Controllers/ # 管理 API 控制器
│ │ ├── Services/ # 管理服务
│ │ ├── Entities/ # 管理实体
│ │ ├── Data/ # 数据库上下文
│ │ ├── Filters/ # 权限过滤器
│ │ └── Models/ # DTO 模型
│ │
│ ├── MiAssessment.Admin.Business/ # 后台业务模块 (主要开发区域)
│ │ ├── Controllers/ # 业务管理控制器
│ │ ├── Services/ # 业务服务
│ │ │ └── Interfaces/ # 服务接口
│ │ ├── Entities/ # 业务实体
│ │ ├── Models/ # 请求/响应模型
│ │ ├── Data/ # 业务数据库上下文
│ │ └── Attributes/ # 自定义特性
│ │
│ ├── MiAssessment.Core/ # 核心业务逻辑层
│ │ ├── Interfaces/ # 服务接口
│ │ ├── Services/ # 服务实现
│ │ ├── Mappings/ # 对象映射配置
│ │ └── Constants/ # 常量定义
│ │
│ ├── MiAssessment.Infrastructure/ # 基础设施层
│ │ ├── Cache/ # Redis 缓存
│ │ ├── External/ # 外部服务集成
│ │ └── Modules/ # 功能模块
│ │
│ └── MiAssessment.Model/ # 数据模型层
│ ├── Entities/ # 数据库实体
│ ├── Models/ # DTO 模型
│ ├── Data/ # 数据库上下文
│ └── Base/ # 基类
│
└── tests/
└── MiAssessment.Tests/ # 单元测试 & 属性测试
后台管理前端
前端代码位于 src/MiAssessment.Admin/admin-web/,技术栈:
- 框架: Vue 3 + TypeScript
- 构建工具: Vite
- UI 组件: Element Plus (或其他)
- 状态管理: Pinia
- HTTP 客户端: Axios
# 进入前端目录
cd src/MiAssessment.Admin/admin-web
# 安装依赖
npm install
# 开发模式
npm run dev
# 构建生产版本
npm run build
快速开始
1. 环境要求
- .NET 10 SDK
- SQL Server 2022
- Redis
- Node.js 18+ (前端开发)
2. 配置数据库
修改 appsettings.json 中的连接字符串:
{
"ConnectionStrings": {
"AdminConnection": "Server=localhost;Database=MiAssessment_Admin;User Id=sa;Password=YourPassword;TrustServerCertificate=True",
"DefaultConnection": "Server=localhost;Database=MiAssessment_Business;User Id=sa;Password=YourPassword;TrustServerCertificate=True"
},
"Redis": {
"Host": "localhost",
"Port": 6379
}
}
3. 初始化数据库
-- 创建管理后台数据库
CREATE DATABASE [MiAssessment_Admin];
GO
-- 执行 scripts/init_admin_db.sql
-- 创建业务数据库
CREATE DATABASE [MiAssessment_Business];
GO
-- 执行 scripts/init_business_db.sql
-- 执行 scripts/init_business_dict.sql
-- 执行 scripts/seed_business_permissions.sql
4. 启动服务
# 还原依赖
dotnet restore
# 构建项目
dotnet build
# 启动小程序 API (端口 5238)
dotnet run --project src/MiAssessment.Api
# 启动后台管理 API (端口 5239)
dotnet run --project src/MiAssessment.Admin
5. 访问服务
| 服务 | 地址 |
|---|---|
| 小程序 API | http://localhost:5238 |
| 小程序 API 文档 | http://localhost:5238/scalar/v1 |
| 后台管理 API | http://localhost:5239 |
| 后台管理前端 | http://localhost:5173 (开发模式) |
6. 默认管理员账号
- 用户名:
admin - 密码:
admin123
数据库说明
管理后台数据库 (MiAssessment_Admin)
| 表名 | 说明 |
|---|---|
| departments | 部门层级 |
| admin_users | 管理员账号 |
| roles | 角色定义 |
| permissions | 权限定义 |
| menus | 菜单配置 |
| admin_user_roles | 管理员-角色关联 |
| role_menus | 角色-菜单关联 |
| role_permissions | 角色-权限关联 |
| operation_logs | 操作审计日志 |
| refresh_tokens | 刷新令牌 |
| dict_types | 字典类型 |
| dict_items | 字典项 |
业务数据库 (MiAssessment_Business)
| 表名 | 说明 |
|---|---|
| users | 用户账号 |
| user_details | 用户扩展信息 |
| user_addresses | 收货地址 |
| user_login_logs | 登录日志 |
| payment_orders | 支付订单 |
| order_notifies | 支付回调记录 |
| configs | 系统配置 |
| assessment_* | 测评相关表 |
配置项说明
| 配置项 | 说明 |
|---|---|
ConnectionStrings:AdminConnection |
管理后台数据库连接 |
ConnectionStrings:DefaultConnection |
业务数据库连接 |
Redis:Host |
Redis 服务器地址 |
Redis:Port |
Redis 端口 |
Jwt:Secret |
JWT 密钥 (至少32字符) |
Jwt:Issuer |
JWT 签发者 |
Jwt:Audience |
JWT 受众 |
WeChat:AppId |
小程序 AppId |
WeChat:AppSecret |
小程序 AppSecret |
WeChatPay:MchId |
微信支付商户号 |
WeChatPay:ApiKey |
微信支付 API 密钥 |
WeChatPay:NotifyUrl |
支付回调地址 |
API 接口规范
路由格式
小程序 API: /api/{module}/{action}
后台管理 API: /api/admin/{module}/{action}
请求方式
- GET: 查询操作,参数通过 Query String 传递
- POST: 新增、修改、删除操作,参数通过 JSON Body 传递
响应格式
{
"code": 0,
"message": "success",
"data": {}
}
分页响应
{
"code": 0,
"message": "success",
"data": {
"items": [],
"total": 100,
"page": 1,
"pageSize": 20,
"totalPages": 5
}
}
Docker 部署
# 构建小程序 API 镜像
docker build -t miassessment-api -f src/MiAssessment.Api/Dockerfile .
# 构建后台管理 API 镜像
docker build -t miassessment-admin -f src/MiAssessment.Admin/Dockerfile .
# 构建后台管理前端镜像
docker build -t miassessment-admin-web -f src/MiAssessment.Admin/admin-web/Dockerfile src/MiAssessment.Admin/admin-web
开发规范
详细开发规范请参考 docs/开发规范/ 目录下的文档:
- 编程规约 (命名风格、代码风格、注释规约)
- 异常日志 (日志规约、异常处理)