diff --git a/common/modelsgii/oldDb/Register.php b/common/modelsgii/oldDb/Register.php index ecf7d3c..fa3da50 100644 --- a/common/modelsgii/oldDb/Register.php +++ b/common/modelsgii/oldDb/Register.php @@ -10,6 +10,7 @@ namespace common\modelsgii\oldDb; * @property int $service_user_id 医生id * @property int $user_patient_id 就诊人id * @property int $store_id 诊所id + * @property int $origin_store_id 发起委托方诊所/药店ID(药价) * @property string $order_no 订单号 * @property int $depart_id * @property int $order_number 挂号序号 @@ -44,7 +45,7 @@ class Register extends \common\core\BaseActiveRecord { return [ [['user_id', 'service_user_id', 'user_patient_id', 'store_id', 'order_no', 'depart_id', 'order_number'], 'required'], - [['user_id', 'service_user_id', 'user_patient_id', 'store_id', 'depart_id', 'order_number', 'is_pay', 'status', 'pay_type', 'pay_time', 'is_cancel', 'cancel_time', 'refund_status', 'refund_time', 'created_at', 'updated_at', 'is_delete'], 'integer'], + [['user_id', 'service_user_id', 'user_patient_id', 'store_id', 'origin_store_id', 'depart_id', 'order_number', 'is_pay', 'status', 'pay_type', 'pay_time', 'is_cancel', 'cancel_time', 'refund_status', 'refund_time', 'created_at', 'updated_at', 'is_delete'], 'integer'], [['price'], 'number'], [['order_no', 'refuse_reason'], 'string', 'max' => 255], ]; @@ -61,6 +62,7 @@ class Register extends \common\core\BaseActiveRecord 'service_user_id' => 'Service User ID', 'user_patient_id' => 'User Patient ID', 'store_id' => 'Store ID', + 'origin_store_id' => 'Origin Store ID', 'order_no' => 'Order No', 'depart_id' => 'Depart ID', 'order_number' => 'Order Number', diff --git a/member/models/forms/RegisterForm.php b/member/models/forms/RegisterForm.php index 91f365b..3c47d60 100644 --- a/member/models/forms/RegisterForm.php +++ b/member/models/forms/RegisterForm.php @@ -26,11 +26,12 @@ class RegisterForm extends BaseModel public $service_user_id; public $register_id; public $register_type; + public $origin_store_id; public function rules() { return [ - [['store_id', 'user_id','register_id'], 'integer'], + [['store_id', 'user_id', 'register_id', 'origin_store_id'], 'integer'], [['user_patient_id', 'service_user_id', 'register_type'], 'required'] ]; } @@ -117,26 +118,35 @@ class RegisterForm extends BaseModel $t = \Yii::$app->db->beginTransaction(); try { - // 确定实际使用的门店ID - // 如果是购药(register_type=3)且当前门店(药店)配置了委托诊所,则使用委托诊所ID - // 如果是诊所在线复诊(register_type=2),需要确保是诊所(store.type=0) - $actualStoreId = \Yii::$app->store; + // 确定实际使用的门店ID(履约诊所) + // 在线场景优先使用前端传入的 store_id(如委托诊所);药店复诊再按配置覆盖为委托诊所 + $actualStoreId = (int) ($this->store_id ?: \Yii::$app->store); if ($this->register_type == 3) { - $currentStore = Store::findOne($actualStoreId); + $currentStore = Store::findOne(\Yii::$app->store); if ($currentStore && !empty($currentStore->delegate_store_id)) { - $actualStoreId = $currentStore->delegate_store_id; + $actualStoreId = (int) $currentStore->delegate_store_id; } } elseif ($this->register_type == 2) { - // 诊所在线复诊:确保是诊所(store.type=0) - $currentStore = Store::findOne($actualStoreId); + // 诊所在线复诊:发起方诊所校验(会话门店须为诊所) + $currentStore = Store::findOne(\Yii::$app->store); if ($currentStore && $currentStore->type != 0) { throw new Exception('诊所在线复诊只能在诊所进行'); } } + $originStoreId = (int) ($this->origin_store_id ?: \Yii::$app->store); + $shouldPersistOrigin = in_array((int) $this->register_type, [2, 3], true) + || ((int) $this->register_type === 1 && (int) $this->origin_store_id > 0); + if (!$shouldPersistOrigin) { + $originStoreId = 0; + } + $UserRegister = new Register(); $UserRegister->user_id = \Yii::$app->user->id; $UserRegister->store_id = $actualStoreId; + if ($UserRegister->hasAttribute('origin_store_id')) { + $UserRegister->origin_store_id = $originStoreId; + } $UserRegister->order_no = FuncHelper::generate_order_no('SN'); $UserRegister->user_patient_id = $this->user_patient_id; $UserRegister->service_user_id = $this->service_user_id;