diff --git a/common/models/newDb/ClinicSalespersonModel.php b/common/models/newDb/ClinicSalespersonModel.php new file mode 100644 index 0000000..0102d69 --- /dev/null +++ b/common/models/newDb/ClinicSalespersonModel.php @@ -0,0 +1,11 @@ +hasOne(ClinicSalespersonModel::class, ['id' => 'salesperson_id']); + } +} diff --git a/common/models/newDb/UserSalespersonModel.php b/common/models/newDb/UserSalespersonModel.php new file mode 100644 index 0000000..e215bf2 --- /dev/null +++ b/common/models/newDb/UserSalespersonModel.php @@ -0,0 +1,16 @@ +hasOne(ClinicSalespersonModel::class, ['id' => 'salesperson_id']); + } +} diff --git a/common/services/SalespersonOrderBindService.php b/common/services/SalespersonOrderBindService.php index da500e0..30ec94e 100644 --- a/common/services/SalespersonOrderBindService.php +++ b/common/services/SalespersonOrderBindService.php @@ -1,73 +1,69 @@ - 0, 'user_salesperson_id' => 0]; - - if ($userId <= 0 || $storeId <= 0) { - return $empty; - } - - $bind = (new \yii\db\Query()) - ->from('xk_user_salesperson') - ->where(['user_id' => $userId, 'status' => 0]) - ->orderBy(['id' => SORT_DESC]) - ->one(); - - if (!$bind) { - return $empty; - } - - $salespersonId = (int) ($bind['salesperson_id'] ?? 0); - if ($salespersonId <= 0) { - return $empty; - } - - $storeIds = (new \yii\db\Query()) - ->select('store_id') - ->from('xk_salesperson_qr_code') - ->where(['salesperson_id' => $salespersonId]) - ->column(); - - $storeIds = array_map('intval', $storeIds); - if (!in_array($storeId, $storeIds, true)) { - return $empty; - } - - $bindCreatedAt = $bind['created_at'] ?? 0; - if (!is_numeric($bindCreatedAt)) { - $bindCreatedAt = strtotime((string) $bindCreatedAt); - } - $bindCreatedAt = (int) $bindCreatedAt; - - if ($orderCreatedAt <= $bindCreatedAt) { - return $empty; - } - - $salesperson = (new \yii\db\Query()) - ->from('xk_salesperson') - ->where(['id' => $salespersonId]) - ->one(); - - if (!$salesperson) { - return $empty; - } - - return [ - 'salesperson_id' => (int) $salesperson['id'], - 'user_salesperson_id' => (int) ($bind['id'] ?? 0), - ]; - } -} + 0, 'user_salesperson_id' => 0]; + + if ($userId <= 0 || $storeId <= 0 || !Yii::$app->has('new_db')) { + return $empty; + } + + $bind = UserSalespersonModel::find() + ->where(['user_id' => $userId, 'status' => 0]) + ->orderBy(['id' => SORT_DESC]) + ->one(); + + if (!$bind) { + return $empty; + } + + $salespersonId = (int) ($bind->salesperson_id ?? 0); + if ($salespersonId <= 0) { + return $empty; + } + + $storeIds = array_map('intval', SalespersonQrCodeModel::find() + ->select('store_id') + ->where(['salesperson_id' => $salespersonId]) + ->column()); + + if (!in_array($storeId, $storeIds, true)) { + return $empty; + } + + $bindCreatedAt = $bind->created_at ?? 0; + if (!is_numeric($bindCreatedAt)) { + $bindCreatedAt = strtotime((string) $bindCreatedAt); + } + $bindCreatedAt = (int) $bindCreatedAt; + + if ($orderCreatedAt <= $bindCreatedAt) { + return $empty; + } + + $salesperson = ClinicSalespersonModel::findOne($salespersonId); + if (!$salesperson) { + return $empty; + } + + return [ + 'salesperson_id' => (int) $salesperson->id, + 'user_salesperson_id' => (int) ($bind->id ?? 0), + ]; + } +} diff --git a/member/models/forms/RegisterForm.php b/member/models/forms/RegisterForm.php index 2fffa6d..85caae8 100644 --- a/member/models/forms/RegisterForm.php +++ b/member/models/forms/RegisterForm.php @@ -156,14 +156,14 @@ class RegisterForm extends BaseModel $UserRegister->order_number = ($order_number['order_number']??0 ) + 1; $UserRegister->price = $ServiceUser->docService->register_price; $UserRegister->pay_type = $payConfig->pay_type??2;//1微信 2易票联 -// if ($UserRegister->hasAttribute('salesperson_id')) { -// $bindResult = (new SalespersonOrderBindService())->resolveForOrder( -// (int) \Yii::$app->user->id, -// $actualStoreId, -// time() -// ); -// $UserRegister->salesperson_id = (int) ($bindResult['salesperson_id'] ?? 0); -// } + if ($UserRegister->hasAttribute('salesperson_id')) { + $bindResult = (new SalespersonOrderBindService())->resolveForOrder( + (int) \Yii::$app->user->id, + $actualStoreId, + time() + ); + $UserRegister->salesperson_id = (int) ($bindResult['salesperson_id'] ?? 0); + } $UserRegister->saveOrFail(); $event = new RegisterEvent();//触发订单创建事件 diff --git a/service/modules/v1/controllers/RegisterController.php b/service/modules/v1/controllers/RegisterController.php index 0025c49..96d3068 100644 --- a/service/modules/v1/controllers/RegisterController.php +++ b/service/modules/v1/controllers/RegisterController.php @@ -5,6 +5,7 @@ namespace service\modules\v1\controllers; use common\core\BaseAppController; use common\enums\RegisterEnum; use common\helpers\FuncHelper; +use common\models\newDb\ClinicSalespersonModel; use common\models\oldDb\Register; use common\models\oldDb\UserPatientCase; use common\services\ExportService; @@ -188,13 +189,12 @@ class RegisterController extends BaseAppController if (!$m->hasAttribute('salesperson_id') || (int) $m->salesperson_id <= 0) { return ''; } - $row = (new \yii\db\Query()) - ->select(['nick_name', 'phone']) - ->from('xk_salesperson') - ->where(['id' => (int) $m->salesperson_id]) - ->one(); + $sp = ClinicSalespersonModel::findOne((int) $m->salesperson_id); + if (!$sp) { + return ''; + } - return (string) ($row['nick_name'] ?? $row['phone'] ?? ''); + return (string) ($sp->nick_name ?? $sp->phone ?? ''); }, ] ];