|
|
@@ -0,0 +1,326 @@
|
|
|
+# 管理员资金操作系统(严谨版)
|
|
|
+
|
|
|
+## 1. 概述
|
|
|
+
|
|
|
+管理员资金操作系统是 Fund 模块的重要组成部分,允许管理员对用户的资金账户进行操作,包括增加或减少资金、资金流转等。为了实现更严谨的内部管理和资金追踪,本系统采用"管理员专用账户"的设计理念,确保每笔资金操作都有明确的来源和去向。
|
|
|
+
|
|
|
+### 1.1 资金来源与管理员账户
|
|
|
+
|
|
|
+在严谨版的管理员资金操作系统中,我们采用以下原则:
|
|
|
+
|
|
|
+1. **管理员虚拟用户**:每个管理员都关联一个虚拟用户,该用户拥有正常的资金账户
|
|
|
+2. **资金转移原则**:管理员增加用户资金时,资金必须从管理员的虚拟用户账户转出;管理员减少用户资金时,资金会转入管理员的虚拟用户账户
|
|
|
+3. **资金平衡**:系统中的资金总量保持平衡,除超级管理员外,普通管理员不能凭空创建或销毁资金
|
|
|
+4. **超级管理员特权**:只有超级管理员可以凭空创建资金(系统初始化或特殊情况下使用)
|
|
|
+
|
|
|
+这种设计确保了资金操作的可追踪性和责任明确性,有效防止了资金滥用和操作错误。
|
|
|
+
|
|
|
+## 2. 功能列表
|
|
|
+
|
|
|
+管理员资金操作系统主要包含以下功能:
|
|
|
+
|
|
|
+1. **管理员虚拟用户管理**:创建、查询和管理管理员关联的虚拟用户
|
|
|
+2. **资金转账操作**:从管理员的虚拟用户账户向用户账户转账(增加用户资金)
|
|
|
+3. **资金回收操作**:从用户账户向管理员的虚拟用户账户转账(减少用户资金)
|
|
|
+4. **管理员账户充值**:超级管理员向普通管理员的虚拟用户账户充值
|
|
|
+5. **资金流转操作**:在用户的不同资金账户之间进行资金流转
|
|
|
+6. **操作记录查询**:查询所有资金操作的历史记录
|
|
|
+
|
|
|
+## 3. 数据结构
|
|
|
+
|
|
|
+### 3.1 数据库表
|
|
|
+
|
|
|
+#### 3.1.1 admin_user_map 表(新增)
|
|
|
+
|
|
|
+管理员与虚拟用户映射表,记录管理员与虚拟用户的关联关系。
|
|
|
+
|
|
|
+| 字段名 | 类型 | 说明 |
|
|
|
+|-------|------|------|
|
|
|
+| id | int | 自增主键 |
|
|
|
+| admin_id | int | 管理员ID |
|
|
|
+| user_id | int | 虚拟用户ID |
|
|
|
+| is_super | tinyint | 是否超级管理员(1:是,0:否) |
|
|
|
+| status | int | 状态 |
|
|
|
+| create_time | int | 创建时间(时间戳) |
|
|
|
+| update_time | int | 更新时间(时间戳) |
|
|
|
+
|
|
|
+注意:虚拟用户的资金账户使用现有的 fund_account 表存储,不需要创建新的表结构。
|
|
|
+
|
|
|
+#### 3.1.2 fund_admin_operation 表(修改原 fund_admin 表)
|
|
|
+
|
|
|
+管理员资金操作记录表,记录管理员对用户资金的操作历史。
|
|
|
+
|
|
|
+| 字段名 | 类型 | 说明 |
|
|
|
+|-------|------|------|
|
|
|
+| id | int | 自增主键 |
|
|
|
+| admin_id | int | 管理员ID |
|
|
|
+| admin_user_id | int | 管理员关联的虚拟用户ID |
|
|
|
+| admin_fund_id | int | 管理员虚拟用户的资金账户ID |
|
|
|
+| user_id | int | 目标用户ID |
|
|
|
+| user_fund_id | int | 目标用户资金账户ID |
|
|
|
+| amount | bigint | 操作金额(毫为单位,正数为增加用户资金,负数为减少用户资金) |
|
|
|
+| operation_type | int | 操作类型(1:转账给用户, 2:从用户回收, 3:管理员账户充值) |
|
|
|
+| status | int | 状态 |
|
|
|
+| create_time | int | 创建时间(时间戳) |
|
|
|
+| remark | varchar(1000) | 备注信息 |
|
|
|
+
|
|
|
+#### 3.1.3 fund_circulation 表(保持不变)
|
|
|
+
|
|
|
+资金流转记录表,记录用户资金在不同账户间的流转历史。
|
|
|
+
|
|
|
+| 字段名 | 类型 | 说明 |
|
|
|
+|-------|------|------|
|
|
|
+| id | int | 自增主键 |
|
|
|
+| user_id | int | 用户ID |
|
|
|
+| fund_id | int | 源资金账户ID |
|
|
|
+| to_fund_id | int | 目标资金账户ID |
|
|
|
+| re_type | string | 关联类型 |
|
|
|
+| re_id | int | 关联ID |
|
|
|
+| total_fee | int | 流转金额(毫为单位) |
|
|
|
+| create_time | int | 创建时间(时间戳) |
|
|
|
+| ok_time | int | 处理时间(时间戳) |
|
|
|
+| remark | string | 备注信息 |
|
|
|
+
|
|
|
+### 3.2 枚举类型
|
|
|
+
|
|
|
+#### 3.2.1 ADMIN_OPERATION_TYPE 枚举(新增)
|
|
|
+
|
|
|
+定义了管理员资金操作的类型:
|
|
|
+
|
|
|
+1. **TRANSFER_TO_USER (1)**:转账给用户
|
|
|
+2. **RECOVER_FROM_USER (2)**:从用户回收
|
|
|
+3. **ADMIN_ACCOUNT_RECHARGE (3)**:管理员账户充值
|
|
|
+
|
|
|
+#### 3.2.2 ADMIN_ACCOUNT_STATUS 枚举(新增)
|
|
|
+
|
|
|
+定义了管理员账户的状态:
|
|
|
+
|
|
|
+1. **NORMAL (1)**:正常
|
|
|
+2. **FROZEN (2)**:冻结
|
|
|
+3. **DISABLED (3)**:禁用
|
|
|
+
|
|
|
+## 4. 业务流程
|
|
|
+
|
|
|
+### 4.1 管理员虚拟用户创建流程
|
|
|
+
|
|
|
+1. 系统管理员在后台创建新的管理员
|
|
|
+2. 系统自动为该管理员创建一个虚拟用户,并在 admin_user_map 表中建立关联
|
|
|
+3. 系统为虚拟用户创建各种类型的资金账户(使用现有的 fund_account 表)
|
|
|
+4. 超级管理员向新管理员的虚拟用户账户充值初始资金
|
|
|
+5. 新管理员账户激活,可以开始操作用户资金
|
|
|
+
|
|
|
+### 4.2 增加用户资金流程
|
|
|
+
|
|
|
+1. 管理员在后台选择用户的资金账户
|
|
|
+2. 管理员输入要增加的金额和备注信息
|
|
|
+3. 系统查询管理员关联的虚拟用户账户,验证账户余额是否充足
|
|
|
+4. 如果余额充足,系统执行资金转移:从管理员的虚拟用户账户扣除资金,增加目标用户账户余额
|
|
|
+5. 系统记录操作日志到 fund_admin_operation 表和 fund_logs 表
|
|
|
+6. 如果余额不足,系统提示管理员余额不足,操作失败
|
|
|
+
|
|
|
+### 4.3 减少用户资金流程
|
|
|
+
|
|
|
+1. 管理员在后台选择用户的资金账户
|
|
|
+2. 管理员输入要减少的金额和备注信息
|
|
|
+3. 系统验证用户账户余额是否充足
|
|
|
+4. 如果余额充足,系统执行资金转移:从用户账户扣除资金,增加管理员的虚拟用户账户余额
|
|
|
+5. 系统记录操作日志到 fund_admin_operation 表和 fund_logs 表
|
|
|
+6. 如果用户余额不足,系统提示用户余额不足,操作失败
|
|
|
+
|
|
|
+### 4.4 管理员账户充值流程
|
|
|
+
|
|
|
+1. 超级管理员在后台选择要充值的管理员
|
|
|
+2. 超级管理员输入充值金额和备注信息
|
|
|
+3. 系统查询管理员关联的虚拟用户账户
|
|
|
+4. 系统执行充值操作,增加管理员的虚拟用户账户余额
|
|
|
+5. 系统记录操作日志到 fund_admin_operation 表和 fund_logs 表
|
|
|
+6. 系统通知被充值的管理员
|
|
|
+
|
|
|
+### 4.5 资金流转操作流程(保持不变)
|
|
|
+
|
|
|
+1. 管理员在后台选择用户的源资金账户
|
|
|
+2. 管理员选择同一用户的目标资金账户
|
|
|
+3. 管理员输入流转金额和备注信息
|
|
|
+4. 系统验证操作合法性(包括账户余额是否充足)
|
|
|
+5. 系统执行资金流转,减少源账户余额,增加目标账户余额
|
|
|
+6. 系统记录流转日志到 fund_circulation 表和 fund_logs 表
|
|
|
+
|
|
|
+## 5. 实现逻辑
|
|
|
+
|
|
|
+### 5.1 管理员虚拟用户管理实现
|
|
|
+
|
|
|
+管理员虚拟用户管理实现主要包含以下逻辑:
|
|
|
+
|
|
|
+1. **创建管理员虚拟用户**
|
|
|
+ - 首先检查该管理员是否已有虚拟用户
|
|
|
+ - 如果不存在,创建新的虚拟用户记录
|
|
|
+ - 在 admin_user_map 表中建立管理员与虚拟用户的关联
|
|
|
+ - 为虚拟用户创建各种类型的资金账户
|
|
|
+ - 设置虚拟用户状态为正常
|
|
|
+ - 如果有初始余额,记录一笔充值操作
|
|
|
+ - 返回创建结果
|
|
|
+
|
|
|
+2. **查询管理员虚拟用户**
|
|
|
+ - 根据管理员ID查询关联的虚拟用户信息
|
|
|
+ - 查询虚拟用户的资金账户信息
|
|
|
+ - 返回虚拟用户详细信息,包括账户余额、状态等
|
|
|
+
|
|
|
+3. **更新管理员虚拟用户状态**
|
|
|
+ - 可以将虚拟用户状态更新为正常、冻结或禁用
|
|
|
+ - 记录状态变更日志
|
|
|
+ - 返回更新结果
|
|
|
+
|
|
|
+### 5.2 增加用户资金实现
|
|
|
+
|
|
|
+管理员向用户转账(增加用户资金)的实现逻辑如下:
|
|
|
+
|
|
|
+1. **参数验证**
|
|
|
+ - 验证转账金额是否大于0
|
|
|
+ - 验证管理员是否存在
|
|
|
+ - 查询管理员关联的虚拟用户
|
|
|
+ - 验证虚拟用户状态是否正常
|
|
|
+ - 验证虚拟用户资金账户余额是否足够
|
|
|
+
|
|
|
+2. **事务处理**
|
|
|
+ - 开始数据库事务,确保操作原子性
|
|
|
+ - 减少管理员虚拟用户账户余额
|
|
|
+ - 查询并验证目标用户账户是否存在
|
|
|
+ - 增加目标用户账户余额
|
|
|
+ - 记录管理员操作日志
|
|
|
+ - 记录用户资金变动日志
|
|
|
+ - 提交事务
|
|
|
+
|
|
|
+3. **异常处理**
|
|
|
+ - 如果过程中出现任何错误,回滚事务
|
|
|
+ - 返回错误信息
|
|
|
+
|
|
|
+4. **成功处理**
|
|
|
+ - 操作成功后返回成功标志
|
|
|
+
|
|
|
+### 5.3 减少用户资金实现
|
|
|
+
|
|
|
+从用户账户回收资金(减少用户资金)的实现逻辑如下:
|
|
|
+
|
|
|
+1. **参数验证**
|
|
|
+ - 验证回收金额是否大于0
|
|
|
+ - 验证管理员是否存在
|
|
|
+ - 查询管理员关联的虚拟用户
|
|
|
+ - 验证虚拟用户状态是否正常
|
|
|
+ - 验证目标用户账户是否存在
|
|
|
+ - 验证目标用户账户余额是否足够
|
|
|
+
|
|
|
+2. **事务处理**
|
|
|
+ - 开始数据库事务,确保操作原子性
|
|
|
+ - 减少目标用户账户余额
|
|
|
+ - 增加管理员虚拟用户账户余额
|
|
|
+ - 记录管理员操作日志(使用负数金额表示减少用户资金)
|
|
|
+ - 记录用户资金变动日志(使用负数金额表示减少)
|
|
|
+ - 提交事务
|
|
|
+
|
|
|
+3. **异常处理**
|
|
|
+ - 如果过程中出现任何错误,回滚事务
|
|
|
+ - 返回错误信息
|
|
|
+
|
|
|
+4. **成功处理**
|
|
|
+ - 操作成功后返回成功标志
|
|
|
+
|
|
|
+### 5.4 管理员账户充值实现
|
|
|
+
|
|
|
+超级管理员向普通管理员的虚拟用户账户充值的实现逻辑如下:
|
|
|
+
|
|
|
+1. **参数验证**
|
|
|
+ - 验证充值金额是否大于0
|
|
|
+ - 验证操作者是否拥有超级管理员权限
|
|
|
+ - 验证目标管理员是否存在
|
|
|
+ - 查询目标管理员关联的虚拟用户
|
|
|
+ - 验证虚拟用户状态是否正常
|
|
|
+
|
|
|
+2. **事务处理**
|
|
|
+ - 开始数据库事务,确保操作原子性
|
|
|
+ - 增加目标管理员虚拟用户账户余额
|
|
|
+ - 记录充值操作日志
|
|
|
+ - 提交事务
|
|
|
+
|
|
|
+3. **异常处理**
|
|
|
+ - 如果过程中出现任何错误,回滚事务
|
|
|
+ - 返回错误信息
|
|
|
+
|
|
|
+4. **成功处理**
|
|
|
+ - 操作成功后返回成功标志
|
|
|
+
|
|
|
+这个功能是系统中唯一可以凭空创造资金的操作,只有超级管理员可以执行。这个设计确保了系统中的资金创造权限受到严格控制。
|
|
|
+
|
|
|
+## 6. 后台界面实现
|
|
|
+
|
|
|
+### 6.1 管理员虚拟用户管理界面
|
|
|
+
|
|
|
+管理员虚拟用户管理界面包括以下功能:
|
|
|
+
|
|
|
+1. **虚拟用户列表**:显示所有管理员关联的虚拟用户,包括管理员ID、管理员名称、虚拟用户ID、资金账户信息、余额、状态等
|
|
|
+2. **虚拟用户创建**:超级管理员可以为普通管理员创建虚拟用户
|
|
|
+3. **账户充值**:超级管理员可以向普通管理员的虚拟用户账户充值
|
|
|
+4. **状态管理**:超级管理员可以冻结或解冻管理员的虚拟用户
|
|
|
+5. **操作记录**:查看虚拟用户账户的操作历史记录
|
|
|
+
|
|
|
+### 6.2 用户资金操作界面
|
|
|
+
|
|
|
+用户资金操作界面包括以下功能:
|
|
|
+
|
|
|
+1. **转账给用户**:管理员从自己的虚拟用户账户向目标用户账户转账(增加用户资金)
|
|
|
+2. **从用户回收**:从目标用户账户回收资金到管理员的虚拟用户账户(减少用户资金)
|
|
|
+3. **资金流转**:在用户的不同资金账户之间进行资金流转
|
|
|
+4. **操作记录**:查看对用户账户的操作历史记录
|
|
|
+
|
|
|
+### 6.3 操作记录查询界面
|
|
|
+
|
|
|
+操作记录查询界面包括以下功能:
|
|
|
+
|
|
|
+1. **管理员操作记录**:查询所有管理员的资金操作记录
|
|
|
+2. **用户资金变动记录**:查询用户资金的变动记录
|
|
|
+3. **管理员账户变动记录**:查询管理员账户的变动记录
|
|
|
+4. **高级筛选**:支持多种条件组合筛选,如时间范围、操作类型、金额范围等
|
|
|
+
|
|
|
+## 7. 权限控制
|
|
|
+
|
|
|
+### 7.1 超级管理员权限
|
|
|
+
|
|
|
+超级管理员拥有以下特殊权限:
|
|
|
+
|
|
|
+1. 创建和管理管理员的虚拟用户
|
|
|
+2. 向管理员的虚拟用户账户充值(凭空创建资金)
|
|
|
+3. 冻结和解冻管理员的虚拟用户
|
|
|
+4. 查看所有管理员的操作记录
|
|
|
+
|
|
|
+### 7.2 普通管理员权限
|
|
|
+
|
|
|
+普通管理员拥有以下权限:
|
|
|
+
|
|
|
+1. 查看自己的虚拟用户账户信息和余额
|
|
|
+2. 从自己的虚拟用户账户向用户账户转账(前提是自己账户有足够余额)
|
|
|
+3. 从用户账户回收资金到自己的虚拟用户账户
|
|
|
+4. 执行用户账户之间的资金流转
|
|
|
+5. 查看自己的操作记录
|
|
|
+
|
|
|
+## 8. 安全与审计
|
|
|
+
|
|
|
+为确保资金操作的安全性和可追溯性,系统实现了以下机制:
|
|
|
+
|
|
|
+1. **资金平衡**:除超级管理员外,普通管理员不能凭空创建或销毁资金,确保系统资金总量可控
|
|
|
+2. **虚拟用户账户**:每个管理员都有专属的虚拟用户账户,确保资金操作可追踪
|
|
|
+3. **事务处理**:所有资金操作都在数据库事务中执行,确保操作的原子性
|
|
|
+4. **操作日志**:所有操作都会记录详细的日志,包括操作人、操作时间、操作金额等信息
|
|
|
+5. **权限控制**:严格的权限控制确保只有授权人员才能执行相应操作
|
|
|
+6. **余额验证**:系统会验证账户余额是否充足,防止透支操作
|
|
|
+7. **定期审计**:系统支持定期审计功能,可以生成审计报表
|
|
|
+
|
|
|
+## 9. 注意事项
|
|
|
+
|
|
|
+1. 管理员的虚拟用户账户余额不足时,无法向用户转账,需要先向超级管理员申请充值
|
|
|
+2. 用户账户余额不足时,无法执行减少操作
|
|
|
+3. 操作金额使用毫为单位,但在界面上显示和输入时使用元为单位,系统会自动进行单位转换
|
|
|
+4. 所有操作都会记录详细的日志,便于后续审计和问题排查
|
|
|
+5. 资金流转只能在同一用户的不同资金账户之间进行,且币种必须一致
|
|
|
+6. 管理员的虚拟用户账户的资金不能直接用于业务操作,只能用于向用户转账
|
|
|
+7. 应定期审计管理员资金操作记录,确保操作的合法性和合理性
|
|
|
+8. 超级管理员应谨慎使用充值功能,避免过度增加系统中的资金总量
|
|
|
+9. 每个管理员都应该有自己的虚拟用户账户,不应共享账户,以确保操作的责任可追溯
|