文件
xionggeshop/addons/shopro_huifu/library/onboard/HuifuOnboardAdminService.php
可乐加冰 38c66b8f5e ```
feat(shopro_huifu): 完善汇付进件功能的表单验证和错误处理

- 增加支行搜索功能的城市筛选支持,优化搜索逻辑
- 添加前端表单验证机制,包括身份证、银行卡、区域等必填字段校验
- 改进支行选择验证,确保必须从搜索结果中选择带联行号的支行
- 优化后端保存逻辑,添加强制保存参数控制
- 统一异常处理机制,增加HttpResponseException的正确抛出
- 完善用户界面提示信息,明确操作指引和错误反馈
- 修复表单提交前的数据准备逻辑,确保数据完整性
```
2026-09-29 16:08:44 +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, true);
}
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('区域公司与用户不匹配');
}
}
}