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 }}
+ -