diff --git a/addons/shopro_huifu/application/admin/controller/shopro_huifu/Onboard.php b/addons/shopro_huifu/application/admin/controller/shopro_huifu/Onboard.php index 75255c3..d9a856b 100644 --- a/addons/shopro_huifu/application/admin/controller/shopro_huifu/Onboard.php +++ b/addons/shopro_huifu/application/admin/controller/shopro_huifu/Onboard.php @@ -145,7 +145,8 @@ class Onboard extends Base } try { $service = new HuifuOnboardAdminService(); - $saved = $service->saveDraft($userId, $roleType, $roleRefId, $form); + $onboardId = $row ? intval($row['id']) : 0; + $saved = $service->saveDraft($userId, $roleType, $roleRefId, $form, $onboardId); $this->success('进件资料已保存,状态为待后台审核', null, [ 'id' => $saved ? $saved['id'] : 0, ]); diff --git a/addons/shopro_huifu/application/admin/view/shopro_huifu/onboard/add.html b/addons/shopro_huifu/application/admin/view/shopro_huifu/onboard/add.html index a7d51b3..adc47c3 100644 --- a/addons/shopro_huifu/application/admin/view/shopro_huifu/onboard/add.html +++ b/addons/shopro_huifu/application/admin/view/shopro_huifu/onboard/add.html @@ -198,7 +198,7 @@ - {{ userLabel }} +
{{ userLabel }}
@@ -209,7 +209,8 @@ - {{ roleLabel }} + {{ roleLabel }} + - diff --git a/addons/shopro_huifu/library/onboard/HuifuOnboardAdminService.php b/addons/shopro_huifu/library/onboard/HuifuOnboardAdminService.php index 03121fc..1d622a8 100644 --- a/addons/shopro_huifu/library/onboard/HuifuOnboardAdminService.php +++ b/addons/shopro_huifu/library/onboard/HuifuOnboardAdminService.php @@ -7,20 +7,31 @@ use think\Db; class HuifuOnboardAdminService { - public function saveDraft($userId, $roleType, $roleRefId, array $formData) + public function saveDraft($userId, $roleType, $roleRefId, array $formData, $onboardId = 0) { - $userId = intval($userId); - $roleRefId = intval($roleRefId); - if ($userId <= 0) { - throw new \InvalidArgumentException('请选择用户'); + $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); } - 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); + return $service->saveDraft($userId, $roleType, $roleRefId, $formData, $onboardId); } protected function assertRoleBinding($userId, $roleType, $roleRefId) diff --git a/addons/shopro_huifu/library/onboard/HuifuOnboardAdminView.php b/addons/shopro_huifu/library/onboard/HuifuOnboardAdminView.php index 44d26de..75b177b 100644 --- a/addons/shopro_huifu/library/onboard/HuifuOnboardAdminView.php +++ b/addons/shopro_huifu/library/onboard/HuifuOnboardAdminView.php @@ -506,6 +506,27 @@ class HuifuOnboardAdminView ]; } + protected static function resolveRoleLabel($roleType, $roleRefId, array $roles = []) + { + foreach ($roles as $role) { + if ($role['role_type'] === $roleType && intval($role['role_ref_id']) === intval($roleRefId)) { + return $role['role_label']; + } + } + if ($roleType === 'promoter') { + return '分销商'; + } + if ($roleType === 'regional_agent') { + $agent = Db::name('shopro_regional_agent')->where('id', $roleRefId)->find(); + $label = '区域公司'; + if ($agent && !empty($agent['area_name'])) { + $label .= '(' . $agent['area_name'] . ')'; + } + return $label; + } + return $roleType; + } + public static function formDataFromRow($row) { $data = is_array($row) ? $row : $row->toArray(); @@ -516,22 +537,20 @@ class HuifuOnboardAdminView $form[$field] = self::fullUrl($form[$field]); } } - $user = self::fetchUser($data['user_id'] ?? 0); - $roles = self::listRolesForUser($data['user_id'] ?? 0); - $roleLabel = ''; - foreach ($roles as $role) { - if ($role['role_type'] === ($data['role_type'] ?? '') && intval($role['role_ref_id']) === intval($data['role_ref_id'] ?? 0)) { - $roleLabel = $role['role_label']; - break; - } - } + $userId = intval($data['user_id'] ?? 0); + $user = self::fetchUser($userId); + $userOption = self::formatUserOption($user); + $roles = self::listRolesForUser($userId); + $roleType = (string) ($data['role_type'] ?? ''); + $roleRefId = intval($data['role_ref_id'] ?? 0); + $roleLabel = self::resolveRoleLabel($roleType, $roleRefId, $roles); return [ 'onboard_id' => intval($data['id'] ?? 0), - 'user_id' => intval($data['user_id'] ?? 0), - 'user_label' => trim(($user['nickname'] ?? '') . ' (' . ($user['mobile'] ?? $data['user_id']) . ')'), - 'role_type' => $data['role_type'] ?? '', - 'role_ref_id' => intval($data['role_ref_id'] ?? 0), + 'user_id' => $userId, + 'user_label' => $userOption['option_label'] ?? trim(($user['nickname'] ?? '') . ' (' . ($user['mobile'] ?? $userId) . ')'), + 'role_type' => $roleType, + 'role_ref_id' => $roleRefId, 'role_label' => $roleLabel, 'onboard_status' => $data['onboard_status'] ?? '', 'form' => $form, diff --git a/addons/shopro_huifu/library/onboard/HuifuOnboardService.php b/addons/shopro_huifu/library/onboard/HuifuOnboardService.php index 13fa9c5..4c714c3 100644 --- a/addons/shopro_huifu/library/onboard/HuifuOnboardService.php +++ b/addons/shopro_huifu/library/onboard/HuifuOnboardService.php @@ -31,7 +31,7 @@ class HuifuOnboardService /** * 用户申请时仅保存进件资料,待后台业务审核通过后再提交汇付 */ - public function saveDraft($userId, $roleType, $roleRefId, array $formData) + public function saveDraft($userId, $roleType, $roleRefId, array $formData, $onboardId = 0) { if (!HuifuOnboardGate::isOnboardRequired()) { return null; @@ -41,7 +41,15 @@ class HuifuOnboardService } $form = HuifuOnboardValidator::validateSubmit($formData); - $row = Onboard::findByRole($userId, $roleType, $roleRefId); + $onboardId = intval($onboardId); + if ($onboardId > 0) { + $row = Onboard::get($onboardId); + if (!$row || intval($row['user_id']) !== intval($userId)) { + throw new \InvalidArgumentException('进件记录不存在'); + } + } else { + $row = Onboard::findByRole($userId, $roleType, $roleRefId); + } if ($row && $row['onboard_status'] === Onboard::STATUS_APPROVED) { return $row; } diff --git a/application/admin/controller/shopro_huifu/Onboard.php b/application/admin/controller/shopro_huifu/Onboard.php index 8b01b96..edfd1b8 100644 --- a/application/admin/controller/shopro_huifu/Onboard.php +++ b/application/admin/controller/shopro_huifu/Onboard.php @@ -147,7 +147,8 @@ class Onboard extends Base } try { $service = new HuifuOnboardAdminService(); - $saved = $service->saveDraft($userId, $roleType, $roleRefId, $form); + $onboardId = $row ? intval($row['id']) : 0; + $saved = $service->saveDraft($userId, $roleType, $roleRefId, $form, $onboardId); $this->success('进件资料已保存,状态为待后台审核', null, [ 'id' => $saved ? $saved['id'] : 0, ]); diff --git a/application/admin/view/shopro_huifu/onboard/add.html b/application/admin/view/shopro_huifu/onboard/add.html index a7d51b3..adc47c3 100644 --- a/application/admin/view/shopro_huifu/onboard/add.html +++ b/application/admin/view/shopro_huifu/onboard/add.html @@ -198,7 +198,7 @@ - {{ userLabel }} +
{{ userLabel }}
@@ -209,7 +209,8 @@ - {{ roleLabel }} + {{ roleLabel }} + -