1. 推广员用户挂号
This commit is contained in:
11
common/models/newDb/ClinicSalespersonModel.php
Normal file
11
common/models/newDb/ClinicSalespersonModel.php
Normal file
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
namespace common\models\newDb;
|
||||
|
||||
class ClinicSalespersonModel extends \common\core\BaseNewActiveRecord
|
||||
{
|
||||
public static function tableName()
|
||||
{
|
||||
return 'xk_clinic_salesperson';
|
||||
}
|
||||
}
|
||||
16
common/models/newDb/SalespersonQrCodeModel.php
Normal file
16
common/models/newDb/SalespersonQrCodeModel.php
Normal file
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
namespace common\models\newDb;
|
||||
|
||||
class SalespersonQrCodeModel extends \common\core\BaseNewActiveRecord
|
||||
{
|
||||
public static function tableName()
|
||||
{
|
||||
return 'xk_salesperson_qr_code';
|
||||
}
|
||||
|
||||
public function getClinicSalesperson()
|
||||
{
|
||||
return $this->hasOne(ClinicSalespersonModel::class, ['id' => 'salesperson_id']);
|
||||
}
|
||||
}
|
||||
16
common/models/newDb/UserSalespersonModel.php
Normal file
16
common/models/newDb/UserSalespersonModel.php
Normal file
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
namespace common\models\newDb;
|
||||
|
||||
class UserSalespersonModel extends \common\core\BaseNewActiveRecord
|
||||
{
|
||||
public static function tableName()
|
||||
{
|
||||
return 'xk_user_salesperson';
|
||||
}
|
||||
|
||||
public function getClinicSalesperson()
|
||||
{
|
||||
return $this->hasOne(ClinicSalespersonModel::class, ['id' => 'salesperson_id']);
|
||||
}
|
||||
}
|
||||
@@ -1,73 +1,69 @@
|
||||
<?php
|
||||
|
||||
namespace common\services;
|
||||
|
||||
use Yii;
|
||||
|
||||
/**
|
||||
* 推广员与订单/挂号绑定解析(与 Laravel SalespersonOrderBindService 规则一致)。
|
||||
*/
|
||||
class SalespersonOrderBindService
|
||||
{
|
||||
/**
|
||||
* @return array{salesperson_id: int, user_salesperson_id: int}
|
||||
*/
|
||||
public function resolveForOrder(int $userId, int $storeId, int $orderCreatedAt): array
|
||||
{
|
||||
$empty = ['salesperson_id' => 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),
|
||||
];
|
||||
}
|
||||
}
|
||||
<?php
|
||||
|
||||
|
||||
|
||||
namespace common\services;
|
||||
|
||||
|
||||
|
||||
use common\models\newDb\ClinicSalespersonModel;
|
||||
|
||||
use common\models\newDb\SalespersonQrCodeModel;
|
||||
|
||||
use common\models\newDb\UserSalespersonModel;
|
||||
|
||||
use Yii;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
|
||||
* 推广员与订单/挂号绑定解析(与 Laravel SalespersonOrderBindService 规则一致)。
|
||||
|
||||
*/
|
||||
|
||||
class SalespersonOrderBindService
|
||||
|
||||
{
|
||||
|
||||
/**
|
||||
|
||||
* @return array{salesperson_id: int, user_salesperson_id: int}
|
||||
|
||||
*/
|
||||
|
||||
public function resolveForOrder(int $userId, int $storeId, int $orderCreatedAt): array
|
||||
|
||||
{
|
||||
|
||||
$empty = ['salesperson_id' => 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);
|
||||
|
||||
@@ -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();//触发订单创建事件
|
||||
|
||||
@@ -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 ?? '');
|
||||
},
|
||||
]
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user