8.0 KiB
8.0 KiB
药师角色权限配置
概述
为药师角色(角色ID = 6)配置完整的权限,使其能够:
- 审核处方
- 审核支付单
- 管理订单
- 关联支付单
配置文件
文件: server/config/project.php
完整配置
return [
// 订单管理全部权限角色
'order_edit_all_roles' => [0, 3, 6],
// 处方库管理全部权限角色
'prescription_library_manage_all_roles' => [0, 3],
// 消费者处方审核权限角色
'prescription_audit_roles' => [0, 3, 6],
// 处方业务订单财务字段查看权限角色
'prescription_order_finance_roles' => [0, 3],
// 业务订单支付单审核权限角色
'prescription_order_payment_audit_roles' => [0, 3, 6],
];
权限说明
1. 订单管理权限 (order_edit_all_roles)
配置: [0, 3, 6]
权限内容:
- 查看所有订单(不限制创建人)
- 编辑所有订单
- 关联所有支付单(不限制创建人)
适用场景:
- 编辑业务订单
- 关联支付单到业务订单
- 查看订单列表
角色:
- 0: 超级管理员
- 3: 管理员
- 6: 药师 ✅
2. 处方库管理权限 (prescription_library_manage_all_roles)
配置: [0, 3]
权限内容:
- 查看所有处方库模板
- 编辑所有处方库模板
- 删除所有处方库模板
适用场景:
- 管理处方库
- 查看处方模板
角色:
- 0: 超级管理员
- 3: 管理员
说明: 药师不需要此权限,因为处方库主要由医生和管理员管理
3. 消费者处方审核权限 (prescription_audit_roles)
配置: [0, 3, 6]
权限内容:
- 审核待审核的处方
- 通过或驳回处方
- 驳回时会同时作废处方
适用场景:
- 消费者处方列表中的"审核"按钮
- 处方审核流程
角色:
- 0: 超级管理员
- 3: 管理员
- 6: 药师 ✅
4. 财务字段查看权限 (prescription_order_finance_roles)
配置: [0, 3]
权限内容:
- 查看业务订单的
internal_cost(内部成本)字段 - 查看其他财务相关字段
适用场景:
- 业务订单详情
- 业务订单列表
角色:
- 0: 超级管理员
- 3: 管理员
说明: 药师不需要此权限,财务数据仅管理员可见
5. 支付单审核权限 (prescription_order_payment_audit_roles)
配置: [0, 3, 6]
权限内容:
- 审核业务订单的关联支付单
- 通过或驳回支付单审核
适用场景:
- 业务订单详情中的"支付审核"按钮
- 支付单审核流程
角色:
- 0: 超级管理员
- 3: 管理员
- 6: 药师 ✅
角色权限矩阵
| 权限 | 超级管理员(0) | 医生(1) | 医助(2) | 管理员(3) | 药师(6) |
|---|---|---|---|---|---|
| 订单管理全部权限 | ✅ | ❌ | ❌ | ✅ | ✅ |
| 处方库管理全部权限 | ✅ | ❌ | ❌ | ✅ | ❌ |
| 消费者处方审核 | ✅ | ❌ | ❌ | ✅ | ✅ |
| 财务字段查看 | ✅ | ❌ | ❌ | ✅ | ❌ |
| 支付单审核 | ✅ | ❌ | ❌ | ✅ | ✅ |
修改记录
修改1: 订单管理权限
文件: server/app/adminapi/logic/order/OrderLogic.php
问题: 硬编码了管理员角色 [0, 3],没有读取配置
修改前:
public static function isOrderListSupervisor(int $adminId, array $adminInfo): bool
{
if (!empty($adminInfo['root']) && (int) $adminInfo['root'] === 1) {
return true;
}
$supervisorRoles = [0, 3]; // 硬编码
$myRoles = array_map('intval', $adminInfo['role_id'] ?? []);
return count(array_intersect($myRoles, $supervisorRoles)) > 0;
}
修改后:
public static function isOrderListSupervisor(int $adminId, array $adminInfo): bool
{
if (!empty($adminInfo['root']) && (int) $adminInfo['root'] === 1) {
return true;
}
$supervisorRoles = config('project.order_edit_all_roles', [0, 3]); // 从配置读取
$myRoles = array_map('intval', $adminInfo['role_id'] ?? []);
return count(array_intersect($myRoles, $supervisorRoles)) > 0;
}
修改2: 支付单审核权限
文件: server/config/project.php
修改前:
'prescription_order_payment_audit_roles' => [0, 3],
修改后:
'prescription_order_payment_audit_roles' => [0, 3, 6],
使用场景
场景1: 药师审核处方
流程:
- 医生创建处方(待审核状态)
- 药师登录系统
- 进入消费者处方列表
- 点击"审核"按钮
- 选择"通过"或"驳回"
- 填写审核意见
- 提交审核
权限检查:
prescription_audit_roles包含角色 6 ✅- 药师可以审核处方
场景2: 药师审核支付单
流程:
- 管理员创建业务订单并关联支付单
- 药师登录系统
- 进入业务订单详情
- 点击"支付审核"按钮
- 选择"通过"或"驳回"
- 填写审核意见
- 提交审核
权限检查:
prescription_order_payment_audit_roles包含角色 6 ✅- 药师可以审核支付单
场景3: 药师关联支付单
流程:
- 药师创建业务订单
- 选择支付单(其他人创建的)
- 点击保存
权限检查:
order_edit_all_roles包含角色 6 ✅- 药师可以关联所有支付单
场景4: 药师编辑订单
流程:
- 药师查看业务订单列表
- 点击"编辑"按钮(其他人创建的订单)
- 修改订单信息
- 点击保存
权限检查:
order_edit_all_roles包含角色 6 ✅- 药师可以编辑所有订单
测试建议
测试用例 1: 药师审核处方
前提条件:
- 用户角色为药师(角色6)
- 存在待审核的处方
测试步骤:
- 登录药师账号
- 进入消费者处方列表
- 找到待审核的处方
- 点击"审核"按钮
- 选择"通过"
- 点击确定
预期结果:
- 审核成功
- 处方状态变为"已通过"
测试用例 2: 药师审核支付单
前提条件:
- 用户角色为药师(角色6)
- 存在待审核的业务订单
测试步骤:
- 登录药师账号
- 进入业务订单列表
- 点击"查看"按钮
- 点击"支付审核"按钮
- 选择"通过"
- 点击确定
预期结果:
- 审核成功
- 支付单审核状态变为"已通过"
测试用例 3: 药师关联支付单
前提条件:
- 用户角色为药师(角色6)
- 存在其他人创建的支付单
测试步骤:
- 登录药师账号
- 创建业务订单
- 选择其他人创建的支付单
- 点击保存
预期结果:
- 保存成功
- 支付单成功关联到业务订单
测试用例 4: 药师编辑订单
前提条件:
- 用户角色为药师(角色6)
- 存在其他人创建的业务订单
测试步骤:
- 登录药师账号
- 进入业务订单列表
- 点击"编辑"按钮(其他人创建的订单)
- 修改订单信息
- 点击保存
预期结果:
- 保存成功
- 订单信息更新
错误排查
错误1: "无权限关联所选支付单"
原因: order_edit_all_roles 配置中没有包含角色 6
解决方案:
'order_edit_all_roles' => [0, 3, 6], // 添加角色 6
错误2: "无支付单审核权限"
原因: prescription_order_payment_audit_roles 配置中没有包含角色 6
解决方案:
'prescription_order_payment_audit_roles' => [0, 3, 6], // 添加角色 6
错误3: "无处方审核权限"
原因: prescription_audit_roles 配置中没有包含角色 6
解决方案:
'prescription_audit_roles' => [0, 3, 6], // 添加角色 6
相关文档
ORDER_SUPERVISOR_ROLE_CONFIG_FIX.md- 订单管理员角色配置修复文档server/config/project.php- 项目配置文件
总结
通过配置文件,为药师角色(角色6)赋予了以下权限:
- ✅ 订单管理全部权限(查看、编辑、关联支付单)
- ✅ 消费者处方审核权限(通过、驳回)
- ✅ 支付单审核权限(通过、驳回)
- ❌ 处方库管理权限(不需要)
- ❌ 财务字段查看权限(不需要)
药师现在可以完整地参与处方审核和订单管理流程。