文件
xionggeshop/addons/shopro_huifu/library/onboard/HuifuOnboardAdminService.php
可乐加冰 98bd0be5e4 ```
feat(shopro_huifu): 完善进件功能支持编辑模式

- 修改Onboard控制器中的saveDraft方法,增加onboardId参数以支持编辑现有记录
- 在前端模板中优化用户和角色显示,添加条件渲染和样式类
- 新增resolveRoleLabel方法用于解析角色标签,优化角色标签显示逻辑
- 调整表单数据处理流程,确保编辑模式下正确获取用户和角色信息
- 增强数据验证逻辑,防止非法操作和数据不一致问题
```
2026-09-29 15:55:54 +08:00

59 行
2.0 KiB
PHP

<?php
namespace addons\shopro_huifu\library\onboard;
use addons\shopro_huifu\model\Onboard;
use think\Db;
class HuifuOnboardAdminService
{
public function saveDraft($userId, $roleType, $roleRefId, array $formData, $onboardId = 0)
{
$onboardId = intval($onboardId);
if ($onboardId > 0) {
$row = Onboard::get($onboardId);
if (!$row) {
throw new \InvalidArgumentException('进件记录不存在');
}
$userId = intval($row['user_id']);
$roleType = (string) $row['role_type'];
$roleRefId = intval($row['role_ref_id']);
} else {
$userId = intval($userId);
$roleRefId = intval($roleRefId);
if ($userId <= 0) {
throw new \InvalidArgumentException('请选择用户');
}
if (!in_array($roleType, ['promoter', 'regional_agent'], true)) {
throw new \InvalidArgumentException('请选择进件角色');
}
$this->assertRoleBinding($userId, $roleType, $roleRefId);
}
$service = new HuifuOnboardService();
return $service->saveDraft($userId, $roleType, $roleRefId, $formData, $onboardId);
}
protected function assertRoleBinding($userId, $roleType, $roleRefId)
{
if ($roleType === 'promoter') {
if ($roleRefId !== $userId) {
throw new \InvalidArgumentException('分销商角色参数无效');
}
$agent = Db::name('shopro_commission_agent')->where('user_id', $userId)->find();
if (!$agent) {
throw new \InvalidArgumentException('该用户不是分销商,无法创建分销商进件');
}
return;
}
$agent = Db::name('shopro_regional_agent')
->where('id', $roleRefId)
->where('user_id', $userId)
->find();
if (!$agent) {
throw new \InvalidArgumentException('区域公司与用户不匹配');
}
}
}