- 添加项目简介和核心功能说明 - 补充技术栈和环境要求信息 - 完善安装步骤和配置说明 - 增加使用示例和常见问题解答 - 添加开发指南和贡献指南 - 补充许可证和联系方式信息 - 整理相关文档和外部依赖链接
359 lines
8.4 KiB
Markdown
359 lines
8.4 KiB
Markdown
# 场外交易管理系统 (YLErp TRS)
|
||
|
||
一个基于 ASP.NET Core 的场外衍生品交易管理系统,支持场外期权、权益互换(TRS)、利率互换等多种场外衍生品业务的全生命周期管理。
|
||
|
||
## 项目简介
|
||
|
||
本项目是一个完整的金融场外交易管理系统(OTC - Over The Counter),主要用于金融机构管理场外衍生品交易,包括客户管理、交易录入、风险管理、结算对账、资金监控等核心功能。系统支持多公司配置,可适配不同券商和期货公司的业务需求。
|
||
|
||
### 核心功能
|
||
|
||
- **客户管理**:完整的客户信息管理,包括客户基本信息、适当性评估、KYC 合规、资质管理等
|
||
- **交易管理**:支持场外期权、权益互换、利率互换等多种衍生品交易的全流程管理
|
||
- **风险管理**:实时风险监控、保证金管理、限额控制、风险预警
|
||
- **结算对账**:日终结算、交易确认书生成、结算报告、外部对账
|
||
- **资金管理**:出入金管理、资金监控、预付金管理、授信管理
|
||
- **报表分析**:多维度统计分析、监管报表、数据导出
|
||
|
||
### 技术栈
|
||
|
||
- **后端框架**:ASP.NET Core 6.0
|
||
- **前端技术**:Razor Views + jQuery + jqGrid + SignalR
|
||
- **ORM**:Entity Framework Core 6.0
|
||
- **数据库**:Oracle / MySQL
|
||
- **缓存**:Redis
|
||
- **消息队列**:Kafka
|
||
- **依赖注入**:Autofac
|
||
- **日志**:NLog
|
||
- **验证码**:Lazy.Captcha.Core
|
||
- **Excel/Word**:YLErp.Office, EPPlus, NPOI
|
||
|
||
## 环境要求
|
||
|
||
### 开发环境
|
||
|
||
- **操作系统**:Windows 10/11 或 Linux (CentOS/Ubuntu)
|
||
- **.NET SDK**:.NET 6.0 SDK
|
||
- **IDE**:Visual Studio 2022 (推荐) 或 VS Code
|
||
- **数据库**:
|
||
- Oracle Database 11g 或更高版本(主数据库)
|
||
- MySQL 5.7 或更高版本(辅助数据库)
|
||
- **缓存**:Redis 5.0 或更高版本
|
||
- **消息队列**:Kafka 2.0 或更高版本
|
||
|
||
### 运行时环境
|
||
|
||
- **操作系统**:Windows Server 2016+ 或 Linux (CentOS 7+/Ubuntu 18.04+)
|
||
- **运行时**:ASP.NET Core 6.0 Runtime
|
||
- **内存**:建议 4GB 以上
|
||
- **磁盘**:建议 50GB 以上可用空间
|
||
|
||
## 安装步骤
|
||
|
||
### 1. 克隆代码
|
||
|
||
```bash
|
||
git clone http://infra.yiliantech.com/gitlab/otc-dev/otcdms.git
|
||
cd zszq-trs
|
||
```
|
||
|
||
### 2. 配置数据库
|
||
|
||
#### Oracle 数据库配置
|
||
|
||
1. 安装 Oracle Database
|
||
2. 创建数据库用户并授权
|
||
|
||
```sql
|
||
-- 示例 SQL
|
||
CREATE USER ylclient IDENTIFIED BY password;
|
||
GRANT CONNECT, RESOURCE TO ylclient;
|
||
```
|
||
|
||
3. 执行数据库初始化脚本
|
||
|
||
```bash
|
||
# 数据库脚本位于 Framework/YLErp.Core/DBScripts/
|
||
sqlplus ylclient/password @Framework/YLErp.Core/DBScripts/init.sql
|
||
```
|
||
|
||
#### MySQL 数据库配置
|
||
|
||
1. 安装 MySQL Server
|
||
2. 创建数据库
|
||
|
||
```sql
|
||
CREATE DATABASE yldb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||
CREATE USER 'yluser'@'%' IDENTIFIED BY 'password';
|
||
GRANT ALL PRIVILEGES ON yldb.* TO 'yluser'@'%';
|
||
FLUSH PRIVILEGES;
|
||
```
|
||
|
||
### 3. 配置应用设置
|
||
|
||
1. 复制并修改配置文件
|
||
|
||
```bash
|
||
cd YLErpWeb
|
||
cp appsettings.json appsettings.local.json
|
||
```
|
||
|
||
2. 编辑 `appsettings.local.json`,添加数据库连接字符串等配置
|
||
|
||
```json
|
||
{
|
||
"ConnectionStrings": {
|
||
"ylclient": "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL)));User Id=ylclient;Password=yourpassword;",
|
||
"yldb": "Server=localhost;Port=3306;Database=yldb;User=yluser;Password=yourpassword;"
|
||
},
|
||
"RedisConfig": {
|
||
"ConnectionString": "localhost:6379,password=,defaultDatabase=0"
|
||
},
|
||
"KafkaConfig": {
|
||
"BootstrapServers": "localhost:9092",
|
||
"GroupId": "ylerp-group"
|
||
}
|
||
}
|
||
```
|
||
|
||
### 4. 安装依赖
|
||
|
||
```bash
|
||
# 使用 dotnet restore 恢复 NuGet 包
|
||
dotnet restore YLerpbase.sln
|
||
|
||
# 或使用 Visual Studio 打开解决方案,IDE 会自动恢复
|
||
```
|
||
|
||
### 5. 编译项目
|
||
|
||
#### 方式一:使用 Visual Studio
|
||
|
||
1. 打开 `YLerpbase.sln`
|
||
2. 选择配置为 `Release`
|
||
3. 右键解决方案 → "生成解决方案"
|
||
|
||
#### 方式二:使用命令行
|
||
|
||
```bash
|
||
# 编译整个解决方案
|
||
dotnet build YLerpbase.sln --configuration Release
|
||
|
||
# 或使用提供的编译脚本
|
||
.\Publish.bat
|
||
```
|
||
|
||
### 6. 配置第三方依赖
|
||
|
||
1. **第三方定价库**:将 `ThirdPartyLibs/` 目录下的 DLL 文件复制到编译输出目录
|
||
2. **Excel 模板**:确保 `YLErpWeb/App_Docs/` 目录下的导入/导出模板文件完整
|
||
|
||
### 7. 运行项目
|
||
|
||
#### 开发环境运行
|
||
|
||
```bash
|
||
cd YLErpWeb
|
||
dotnet run
|
||
```
|
||
|
||
或在 Visual Studio 中按 `F5` 启动调试
|
||
|
||
#### 生产环境部署
|
||
|
||
**Windows:**
|
||
|
||
```bash
|
||
# 发布项目
|
||
dotnet publish YLErpWeb/YLErpWeb.csproj --configuration Release --output ./publish
|
||
|
||
# 运行发布的应用程序
|
||
cd publish
|
||
dotnet YLErpWeb.dll
|
||
```
|
||
|
||
**Linux:**
|
||
|
||
```bash
|
||
# 使用 MSBuild 发布(参考 Publish.bat 中的配置)
|
||
dotnet publish YLErpWeb/YLErpWeb.csproj --configuration Release --runtime linux-x64 --self-contained false
|
||
|
||
# 使用启动脚本
|
||
cp YLErpWeb/start.prod.sh ./publish/
|
||
cd publish
|
||
chmod +x start.prod.sh
|
||
./start.prod.sh
|
||
```
|
||
|
||
## 使用示例
|
||
|
||
### 启动应用
|
||
|
||
应用启动后,默认监听端口 5000(开发环境),访问:
|
||
|
||
## Getting started
|
||
|
||
To make it easy for you to get started with GitLab, here's a list of recommended next steps.
|
||
|
||
不同公司的配置会影响:
|
||
- 界面显示字段
|
||
- 业务流程
|
||
- 报表模板
|
||
- 接口对接
|
||
|
||
### 权限配置
|
||
|
||
权限通过 `Authorization` 属性控制,主要权限标识:
|
||
|
||
```csharp
|
||
// 示例:控制器权限控制
|
||
[Authorize(Policy = "客户管理-客户查看")]
|
||
public class ClientController : Controller
|
||
{
|
||
// ...
|
||
}
|
||
```
|
||
|
||
## 常见问题
|
||
|
||
### 编译错误
|
||
|
||
**问题**:找不到引用的 DLL 文件
|
||
|
||
**解决**:
|
||
1. 确保 `ThirdPartyLibs/` 目录存在且包含所有必需的 DLL
|
||
2. 检查项目文件中的 `<HintPath>` 路径是否正确
|
||
3. 执行 `dotnet restore` 重新恢复依赖
|
||
|
||
### 数据库连接失败
|
||
|
||
**问题**:无法连接到 Oracle 数据库
|
||
|
||
**解决**:
|
||
1. 检查 Oracle 服务是否启动
|
||
2. 验证连接字符串格式
|
||
3. 确保已安装 Oracle.ManagedDataAccess.Core 包
|
||
4. 检查防火墙设置
|
||
|
||
### NPE 空指针异常
|
||
|
||
**问题**:运行时出现 NullReferenceException
|
||
|
||
**解决**:
|
||
1. 检查配置文件是否完整
|
||
2. 确保数据库表结构正确
|
||
3. 查看日志文件定位具体错误位置
|
||
|
||
### 缓存连接失败
|
||
|
||
**问题**:Redis 连接超时
|
||
|
||
**解决**:
|
||
1. 检查 Redis 服务是否运行
|
||
2. 验证 Redis 连接字符串
|
||
3. 检查 Redis 防火墙配置
|
||
4. 确认 Redis 密码是否正确
|
||
|
||
## 开发指南
|
||
|
||
### 代码规范
|
||
|
||
- 遵循 C# 编码规范
|
||
- 使用 XML 文档注释
|
||
- Controller 方法添加权限注释
|
||
- 新增功能编写单元测试
|
||
|
||
### 提交规范
|
||
|
||
提交信息格式:
|
||
|
||
```
|
||
<类型>: <简短描述>
|
||
|
||
详细描述(可选)
|
||
|
||
类型:
|
||
- feat: 新功能
|
||
- fix: Bug 修复
|
||
- docs: 文档更新
|
||
- style: 代码格式
|
||
- refactor: 重构
|
||
- test: 测试相关
|
||
- chore: 构建/工具相关
|
||
```
|
||
|
||
### 分支策略
|
||
|
||
- `master`:主分支,生产环境代码
|
||
- `develop`:开发分支
|
||
- `feature/*`:功能分支
|
||
- `hotfix/*`:紧急修复分支
|
||
|
||
### 测试
|
||
|
||
运行单元测试:
|
||
|
||
```bash
|
||
dotnet test UnitTestProject/UnitTestProject.csproj
|
||
```
|
||
|
||
## 贡献指南
|
||
|
||
欢迎提交 Issue 和 Pull Request!
|
||
|
||
### 贡献流程
|
||
|
||
1. Fork 本仓库
|
||
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
|
||
3. 提交更改 (`git commit -m 'feat: Add some AmazingFeature'`)
|
||
4. 推送到分支 (`git push origin feature/AmazingFeature`)
|
||
5. 提交 Pull Request
|
||
|
||
### 代码审查
|
||
|
||
- 确保 CI 测试通过
|
||
- 代码符合项目规范
|
||
- 添加必要的单元测试
|
||
- 更新相关文档
|
||
|
||
### 报告 Bug
|
||
|
||
提交 Issue 时请提供:
|
||
- 环境信息(操作系统、.NET 版本)
|
||
- 复现步骤
|
||
- 错误日志
|
||
- 预期行为
|
||
|
||
## 许可证
|
||
|
||
本项目为内部项目,版权归公司所有。
|
||
|
||
## 联系方式
|
||
|
||
- **项目负责人**:[请填写]
|
||
- **技术支持**:[请填写]
|
||
- **GitLab**:http://infra.yiliantech.com/gitlab/otc-dev/otcdms
|
||
|
||
## 附录
|
||
|
||
### 相关文档
|
||
|
||
- [客户列表功能分析文档](./客户列表功能分析文档.md)
|
||
- [出入金和资金记录详细需求文档](./出入金和资金记录详细需求文档.md)
|
||
- [项目文档/](./项目文档/) - 更多技术文档
|
||
|
||
### 外部依赖
|
||
|
||
- **EF Core 文档**:https://docs.microsoft.com/ef/core/
|
||
- **ASP.NET Core 文档**:https://docs.microsoft.com/aspnet/core/
|
||
- **Kafka 文档**:https://kafka.apache.org/documentation/
|
||
- **Redis 文档**:https://redis.io/documentation
|
||
|
||
### 更新日志
|
||
|
||
请查看项目文档目录下的更新日志文件。
|
||
|
||
---
|
||
|
||
*最后更新:2026-03-20*
|