更新
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
# 支付单审核权限修复
|
||||
|
||||
## 问题描述
|
||||
|
||||
接口 `/adminapi/tcm.prescriptionOrder/auditPayment` 返回错误:
|
||||
```json
|
||||
{"code":0,"show":1,"msg":"无支付单审核权限","data":[]}
|
||||
```
|
||||
|
||||
药师角色(角色ID=6)无法审核支付单。
|
||||
|
||||
## 问题原因
|
||||
|
||||
配置文件 `server/config/project.php` 中的 `prescription_order_payment_audit_roles` 已经包含角色 6,但由于 ThinkPHP 的配置缓存机制,旧的配置仍在使用。
|
||||
|
||||
## 解决方案
|
||||
|
||||
清除 ThinkPHP 缓存,使新配置生效:
|
||||
|
||||
```bash
|
||||
cd server
|
||||
php think clear
|
||||
```
|
||||
|
||||
## 权限配置确认
|
||||
|
||||
文件:`server/config/project.php`
|
||||
|
||||
```php
|
||||
// 业务订单「关联支付单」审核:以下角色 ID + root 可操作(可与财务角色一致)
|
||||
'prescription_order_payment_audit_roles' => [0, 3, 6],
|
||||
```
|
||||
|
||||
- 角色 0:超级管理员
|
||||
- 角色 3:管理员
|
||||
- 角色 6:药师
|
||||
|
||||
## 权限检查逻辑
|
||||
|
||||
文件:`server/app/adminapi/logic/tcm/PrescriptionOrderLogic.php`
|
||||
|
||||
```php
|
||||
public static function canAuditPaymentSlipOrder(array $adminInfo): bool
|
||||
{
|
||||
if (!empty($adminInfo['root']) && (int) $adminInfo['root'] === 1) {
|
||||
return true;
|
||||
}
|
||||
$allow = Config::get('project.prescription_order_payment_audit_roles', [0, 3]);
|
||||
|
||||
return self::roleIntersect($adminInfo, is_array($allow) ? $allow : []);
|
||||
}
|
||||
```
|
||||
|
||||
该方法从配置文件读取允许的角色列表,并检查当前用户的角色是否在列表中。
|
||||
|
||||
## 测试验证
|
||||
|
||||
1. 清除缓存后,药师角色(角色ID=6)应该能够:
|
||||
- 调用 `/adminapi/tcm.prescriptionOrder/auditPayment` 接口
|
||||
- 审核通过或驳回支付单
|
||||
|
||||
2. 验证步骤:
|
||||
- 使用药师账号登录
|
||||
- 打开业务订单详情
|
||||
- 点击"支付单审核"按钮
|
||||
- 确认可以正常审核
|
||||
|
||||
## 相关配置总结
|
||||
|
||||
药师角色(角色ID=6)的完整权限配置:
|
||||
|
||||
```php
|
||||
'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. 每次修改 `server/config/project.php` 后,都需要清除缓存
|
||||
2. 生产环境部署时,确保运行 `php think clear` 命令
|
||||
3. 如果问题仍然存在,检查用户的角色ID是否正确分配
|
||||
Reference in New Issue
Block a user