From 49f60210ceceefdfaefe356d6e1fa9b458501811 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E7=90=A6?= Date: Wed, 28 Jan 2026 09:32:59 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E9=97=A8=E5=BA=97=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- platform/modules/v1/controllers/ErpController.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/platform/modules/v1/controllers/ErpController.php b/platform/modules/v1/controllers/ErpController.php index 88dd211..c553817 100644 --- a/platform/modules/v1/controllers/ErpController.php +++ b/platform/modules/v1/controllers/ErpController.php @@ -56,6 +56,8 @@ class ErpController extends Controller //解析成erp所需参数(订单详情是否需要改动 - 线上订单的展示) $erpData = []; $ids = []; + + $defaultUserId = '41677'; foreach($productOrders as $k=>$v){ // 如果是商城订单 if ($v['order_type'] == 2) { @@ -64,7 +66,7 @@ class ErpController extends Controller $erpData[$k]['createTime'] = date('Y-m-d H:i:s', $v['created_at']); // $erpData[$k]['userId'] = $v['store']['erp_id']; // 商城订单暂时都用11007诊所来接收订单 - $erpData[$k]['userId'] = '41677'; + $erpData[$k]['userId'] = $defaultUserId; $erpData[$k]['orderStatus'] = $v['status']; $erpData[$k]['orderType'] = $v['type']; $erpData[$k]['totalAmount'] = $v['total_pay_price']; @@ -115,7 +117,11 @@ class ErpController extends Controller if ($v['prescription']['status'] == 1) { $erpData[$k]['orderId'] = $v['order_no']; $erpData[$k]['createTime'] = date('Y-m-d H:i:s', $v['created_at']); - $erpData[$k]['userId'] = $v['store']['erp_id']; + if ($v['is_online'] == 3) { + $erpData[$k]['userId'] = $defaultUserId; + } else { + $erpData[$k]['userId'] = $v['store']['erp_id']; + } $erpData[$k]['orderStatus'] = $v['status']; $erpData[$k]['totalAmount'] = $v['total_pay_price']; // $erpData[$k]['deliveryAmount'] = $v['trans_expenses']; From 9680542b9eeb7892881978f5ad52f61928ab38a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E7=90=A6?= Date: Mon, 2 Feb 2026 16:11:31 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- platform/modules/v1/controllers/ErpController.php | 1 + 1 file changed, 1 insertion(+) diff --git a/platform/modules/v1/controllers/ErpController.php b/platform/modules/v1/controllers/ErpController.php index c553817..7c5df4d 100644 --- a/platform/modules/v1/controllers/ErpController.php +++ b/platform/modules/v1/controllers/ErpController.php @@ -117,6 +117,7 @@ class ErpController extends Controller if ($v['prescription']['status'] == 1) { $erpData[$k]['orderId'] = $v['order_no']; $erpData[$k]['createTime'] = date('Y-m-d H:i:s', $v['created_at']); + // 如果是商城处方订单 if ($v['is_online'] == 3) { $erpData[$k]['userId'] = $defaultUserId; } else { From e4eecfe9e19afc3b5dc6e8c1df637946326b13df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E7=90=A6?= Date: Fri, 6 Feb 2026 08:44:31 +0800 Subject: [PATCH 3/8] =?UTF-8?q?=E8=BD=AC=E6=8E=A5=E6=96=B9=E5=88=86?= =?UTF-8?q?=E8=B4=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/forms/LedgerForm.php | 262 ++++++++++++++---- common/models/oldDb/Prescription.php | 6 + common/models/oldDb/Register.php | 5 + common/models/oldDb/TransferPrescription.php | 34 +++ .../modelsgii/oldDb/TransferPrescription.php | 65 +++++ 5 files changed, 318 insertions(+), 54 deletions(-) create mode 100644 common/models/oldDb/TransferPrescription.php create mode 100644 common/modelsgii/oldDb/TransferPrescription.php diff --git a/common/forms/LedgerForm.php b/common/forms/LedgerForm.php index 2362ca6..8e00efa 100644 --- a/common/forms/LedgerForm.php +++ b/common/forms/LedgerForm.php @@ -101,6 +101,16 @@ class LedgerForm extends BaseModel if(!empty($isLegder)){ throw new Exception('该订单已增加待结算记录'); } + + // 检查处方是否来自转诊 + $isFromTransfer = false; + if ($productOrder->prescription && $productOrder->prescription->is_from_transfer == 1) { + $isFromTransfer = true; + // 这里写转诊单的分账逻辑 + // 转诊单需要同时给转诊诊所和委托诊所分账 + // 具体分账比例和逻辑待后续配置 + } + $time = time(); $ledgerData = []; @@ -310,64 +320,208 @@ class LedgerForm extends BaseModel switch ($productOrder->prescription_type) { case '1':case '3': //中药/颗粒药分佣 - foreach($productOrderItems as $v){ - $ledger = []; - $number = $v['number']; - $totalPrice = round($v['dosage'] * $number * $v['price'], 4); - $totalBuyPrice = round($v['dosage'] * $number * $v['buy_price'], 4); - - /* - * 医保支付(走月付) - */ - if ($productOrder['prescription']['category'] == 2) { - // 查询订单是否已生成月付 - $monthInfo = MonthlyPaymentModel::find()->where(['order_id' => $productOrder->id, 'store_id' => $productOrder->store_id])->one(); - if (!$monthInfo) { - $model = new MonthlyPaymentModel(); - $model->store_id = $productOrder->store_id; - $model->order_id = $productOrder->id; - $model->amount = $productOrder->market_price; - $model->created_at = $time; - $model->save(); + // 检查是否是转诊处方(转接方只有中药处方商品) + $isTransferPrescription = false; + $transferPrescription = null; + $transferStoreId = null; + $delegateStoreId = null; + + if ($productOrder->prescription && $productOrder->prescription->is_from_transfer == 1 && $productOrder->prescription_type == '1') { + // 通过处方关联挂号,再通过挂号关联转诊记录 + // 处方 -> 挂号(register_id) -> 转诊记录(transfer_prescription_id) + if ($productOrder->prescription->register && $productOrder->prescription->register->transferPrescription) { + $transferPrescription = $productOrder->prescription->register->transferPrescription; + + $isTransferPrescription = true; + $transferStoreId = $transferPrescription->transfer_store_id; // 发起方(转诊诊所,西医诊所) + $delegateStoreId = $transferPrescription->delegate_store_id; // 承接方(委托诊所,中医诊所) + + if (!$transferStoreId || !$delegateStoreId) { + // 如果转诊信息不完整,按普通处方处理 + $isTransferPrescription = false; } - } else { - $ledger[] = [ - 'order_id' => $this->order_id, - 'user_id' => $store->id, - 'user_type' => 1, //门店 - 'order_type' => 1,//产品订单 - 'fee_type' => 1,//药品费用 - 'su_id' => $productOrder->su_id, - 'drugstore_id' => $productOrder->store_id, - 'drug_id' => $v['drug_id'], - 'xd_time' => $productOrder->created_at, + } + } + + // 如果是转诊处方,需要特殊处理分账逻辑 + if ($isTransferPrescription) { + /* + * 转诊处方分账逻辑: + * 1. 承接方(委托诊所)分走15%发起方(转诊诊所)的利润 + * 2. 发起方获得85%的利润 + * 3. 平台分账保持不变(成本价) + */ + + // 第一遍遍历:计算所有药品的总利润 + $totalProfit = 0; + $itemProfits = []; + $itemData = []; + + foreach($productOrderItems as $v) { + $number = $v['number']; + $dosage = $v['dosage'] ?? 1; + $totalPrice = round($dosage * $number * $v['price'], 4); + $totalBuyPrice = round($dosage * $number * $v['buy_price'], 4); + $profit = $totalPrice - $totalBuyPrice; + + $totalProfit += $profit; + $itemProfits[] = $profit; + $itemData[] = [ 'number' => $number, - 'money' => $totalPrice - $totalBuyPrice, - 'status' => 0, - 'created_at' => $time, - 'updated_at' => $time + 'dosage' => $dosage, + 'totalPrice' => $totalPrice, + 'totalBuyPrice' => $totalBuyPrice, + 'drug_id' => $v['drug_id'], ]; + } + + // 计算分账金额:从总利润中分配 + $delegateProfit = round($totalProfit * 0.15, 2); // 承接方分得15%的总利润 + $transferProfit = round($totalProfit * 0.85, 2); // 发起方分得85%的总利润 + + // 第二遍遍历:按每个药品的利润占比,分配承接方和发起方的分账金额 + foreach($itemData as $index => $item) { + $ledger = []; + + // 医保支付(走月付) + if ($productOrder['prescription']['category'] == 2) { + // 查询订单是否已生成月付 + $monthInfo = MonthlyPaymentModel::find()->where(['order_id' => $productOrder->id, 'store_id' => $productOrder->store_id])->one(); + if (!$monthInfo) { + $model = new MonthlyPaymentModel(); + $model->store_id = $productOrder->store_id; + $model->order_id = $productOrder->id; + $model->amount = $productOrder->market_price; + $model->created_at = $time; + $model->save(); + } + } else { + // 按该药品利润占比分配总利润 + $itemProfitRatio = $totalProfit > 0 ? ($itemProfits[$index] / $totalProfit) : 0; + $itemDelegateProfit = round($delegateProfit * $itemProfitRatio, 2); // 该药品承接方应分得的金额 + $itemTransferProfit = round($transferProfit * $itemProfitRatio, 2); // 该药品发起方应分得的金额 + + // 创建分账记录:发起方(转诊诊所)分得85%利润 + $ledger[] = [ + 'order_id' => $this->order_id, + 'user_id' => $transferStoreId, // 发起方诊所ID + 'user_type' => 1, //门店 + 'order_type' => 1,//产品订单 + 'fee_type' => 1,//药品费用 + 'su_id' => $productOrder->su_id, + 'drugstore_id' => $productOrder->store_id, + 'drug_id' => $item['drug_id'], + 'xd_time' => $productOrder->created_at, + 'number' => $item['number'], + 'money' => $itemTransferProfit, // 发起方获得85%利润 + 'status' => 0, + 'created_at' => $time, + 'updated_at' => $time + ]; + + // 创建分账记录:承接方(委托诊所)分得15%利润 + $ledger[] = [ + 'order_id' => $this->order_id, + 'user_id' => $delegateStoreId, // 承接方诊所ID + 'user_type' => 1, //门店 + 'order_type' => 1,//产品订单 + 'fee_type' => 1,//药品费用 + 'su_id' => $productOrder->su_id, + 'drugstore_id' => $productOrder->store_id, + 'drug_id' => $item['drug_id'], + 'xd_time' => $productOrder->created_at, + 'number' => $item['number'], + 'money' => $itemDelegateProfit, // 承接方获得15%利润 + 'status' => 0, + 'created_at' => $time, + 'updated_at' => $time + ]; + + // 创建分账记录:平台分账保持不变(成本价) + $ledger[] = [ + 'order_id' => $this->order_id, + 'user_id' => 0, + 'user_type' => 2, //平台 + 'order_type' => 1,//产品订单 + 'fee_type' => 1,//药品费用 + 'su_id' => $productOrder->su_id, + 'drugstore_id' => $productOrder->store_id, + 'drug_id' => $item['drug_id'], + 'xd_time' => $productOrder->created_at, + 'number' => $item['number'], + 'money' => $item['totalBuyPrice'], // 平台分账保持成本价不变 + 'status' => 0, + 'created_at' => $time, + 'updated_at' => $time + ]; + + \Yii::$app->db->createCommand()->batchInsert(Ledger::tableName(), [ + 'order_id', 'user_id', 'user_type', 'order_type', 'fee_type', 'su_id', 'drugstore_id', + 'drug_id','xd_time', 'number', 'money', 'status', 'created_at', 'updated_at' + ], $ledger)->execute(); + } + } + } else { + // 非转诊处方,按原有逻辑处理 + foreach($productOrderItems as $v){ + $ledger = []; + $number = $v['number']; + $totalPrice = round($v['dosage'] * $number * $v['price'], 4); + $totalBuyPrice = round($v['dosage'] * $number * $v['buy_price'], 4); - $ledger[] = [ - 'order_id' => $this->order_id, - 'user_id' => 0, - 'user_type' => 2, //平台 - 'order_type' => 1,//产品订单 - 'fee_type' => 1,//药品费用 - 'su_id' => $productOrder->su_id, - 'drugstore_id' => $productOrder->store_id, - 'drug_id' => $v['drug_id'], - 'xd_time' => $productOrder->created_at, - 'number' => $number, - 'money' => $totalBuyPrice, - 'status' => 0, - 'created_at' => $time, - 'updated_at' => $time - ]; - \Yii::$app->db->createCommand()->batchInsert(Ledger::tableName(), [ - 'order_id', 'user_id', 'user_type', 'order_type', 'fee_type', 'su_id', 'drugstore_id', - 'drug_id','xd_time', 'number', 'money', 'status', 'created_at', 'updated_at' - ], $ledger)->execute(); + /* + * 医保支付(走月付) + */ + if ($productOrder['prescription']['category'] == 2) { + // 查询订单是否已生成月付 + $monthInfo = MonthlyPaymentModel::find()->where(['order_id' => $productOrder->id, 'store_id' => $productOrder->store_id])->one(); + if (!$monthInfo) { + $model = new MonthlyPaymentModel(); + $model->store_id = $productOrder->store_id; + $model->order_id = $productOrder->id; + $model->amount = $productOrder->market_price; + $model->created_at = $time; + $model->save(); + } + } else { + $ledger[] = [ + 'order_id' => $this->order_id, + 'user_id' => $store->id, + 'user_type' => 1, //门店 + 'order_type' => 1,//产品订单 + 'fee_type' => 1,//药品费用 + 'su_id' => $productOrder->su_id, + 'drugstore_id' => $productOrder->store_id, + 'drug_id' => $v['drug_id'], + 'xd_time' => $productOrder->created_at, + 'number' => $number, + 'money' => $totalPrice - $totalBuyPrice, + 'status' => 0, + 'created_at' => $time, + 'updated_at' => $time + ]; + + $ledger[] = [ + 'order_id' => $this->order_id, + 'user_id' => 0, + 'user_type' => 2, //平台 + 'order_type' => 1,//产品订单 + 'fee_type' => 1,//药品费用 + 'su_id' => $productOrder->su_id, + 'drugstore_id' => $productOrder->store_id, + 'drug_id' => $v['drug_id'], + 'xd_time' => $productOrder->created_at, + 'number' => $number, + 'money' => $totalBuyPrice, + 'status' => 0, + 'created_at' => $time, + 'updated_at' => $time + ]; + \Yii::$app->db->createCommand()->batchInsert(Ledger::tableName(), [ + 'order_id', 'user_id', 'user_type', 'order_type', 'fee_type', 'su_id', 'drugstore_id', + 'drug_id','xd_time', 'number', 'money', 'status', 'created_at', 'updated_at' + ], $ledger)->execute(); + } } } break; diff --git a/common/models/oldDb/Prescription.php b/common/models/oldDb/Prescription.php index ebb8144..9850acb 100644 --- a/common/models/oldDb/Prescription.php +++ b/common/models/oldDb/Prescription.php @@ -70,6 +70,12 @@ class Prescription extends \common\modelsgii\oldDb\Prescription return $this->hasOne(Register::class, ['id' => 'register_id']); } + //转诊记录 + public function getTransferPrescription() + { + return $this->hasOne(TransferPrescription::class, ['id' => 'transfer_prescription_id']); + } + //导出处方 public static function inventory($params,$store_id) { diff --git a/common/models/oldDb/Register.php b/common/models/oldDb/Register.php index dcbe7ca..afadedc 100644 --- a/common/models/oldDb/Register.php +++ b/common/models/oldDb/Register.php @@ -57,6 +57,11 @@ class Register extends \common\modelsgii\oldDb\Register public function getPrescription(){ return $this->hasMany(Prescription::class, ['register_id' => 'id']); } + //转诊记录 + public function getTransferPrescription() + { + return $this->hasOne(TransferPrescription::class, ['id' => 'transfer_prescription_id']); + } //健康信息 public function getHealthInquery() { diff --git a/common/models/oldDb/TransferPrescription.php b/common/models/oldDb/TransferPrescription.php new file mode 100644 index 0000000..0eb5c0b --- /dev/null +++ b/common/models/oldDb/TransferPrescription.php @@ -0,0 +1,34 @@ +hasOne(Prescription::class, ['id' => 'original_prescription_id']); + } + + /** + * 关联转诊诊所(西医诊所) + */ + public function getTransferStore() + { + return $this->hasOne(Store::class, ['id' => 'transfer_store_id']); + } + + /** + * 关联委托诊所(中医诊所) + */ + public function getDelegateStore() + { + return $this->hasOne(Store::class, ['id' => 'delegate_store_id']); + } +} diff --git a/common/modelsgii/oldDb/TransferPrescription.php b/common/modelsgii/oldDb/TransferPrescription.php new file mode 100644 index 0000000..becf311 --- /dev/null +++ b/common/modelsgii/oldDb/TransferPrescription.php @@ -0,0 +1,65 @@ + 255], + ]; + } + + /** + * {@inheritdoc} + */ + public function attributeLabels() + { + return [ + 'id' => 'ID', + 'original_prescription_id' => '原处方ID', + 'transfer_store_id' => '转诊诊所ID', + 'delegate_store_id' => '委托诊所ID', + 'online_consultation_doctor_id' => '在线问诊医生ID', + 'user_id' => '用户ID', + 'prescription_no' => '处方编号', + 'prescription_type' => '处方类型', + 'content' => '处方内容', + 'status' => '转诊状态', + 'transfer_time' => '转诊时间', + 'created_at' => '创建时间', + 'updated_at' => '更新时间', + ]; + } +} From aff36baaaa582009e89cf265c096a12a27ab8a6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E7=90=A6?= Date: Fri, 6 Feb 2026 08:49:15 +0800 Subject: [PATCH 4/8] =?UTF-8?q?=E8=BD=AC=E6=8E=A5=E6=96=B9=E5=88=86?= =?UTF-8?q?=E8=B4=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/forms/LedgerForm.php | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/common/forms/LedgerForm.php b/common/forms/LedgerForm.php index 8e00efa..553063c 100644 --- a/common/forms/LedgerForm.php +++ b/common/forms/LedgerForm.php @@ -101,16 +101,7 @@ class LedgerForm extends BaseModel if(!empty($isLegder)){ throw new Exception('该订单已增加待结算记录'); } - - // 检查处方是否来自转诊 - $isFromTransfer = false; - if ($productOrder->prescription && $productOrder->prescription->is_from_transfer == 1) { - $isFromTransfer = true; - // 这里写转诊单的分账逻辑 - // 转诊单需要同时给转诊诊所和委托诊所分账 - // 具体分账比例和逻辑待后续配置 - } - + $time = time(); $ledgerData = []; From 0297899367710c4ab7407315c7b2f1992cce6f86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E7=90=A6?= Date: Sat, 7 Feb 2026 16:32:21 +0800 Subject: [PATCH 5/8] =?UTF-8?q?=E8=BD=AC=E6=8E=A5=E6=96=B9=E5=88=86?= =?UTF-8?q?=E8=B4=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/forms/LedgerForm.php | 35 ++++++++--------------------------- 1 file changed, 8 insertions(+), 27 deletions(-) diff --git a/common/forms/LedgerForm.php b/common/forms/LedgerForm.php index 553063c..e9e3817 100644 --- a/common/forms/LedgerForm.php +++ b/common/forms/LedgerForm.php @@ -338,8 +338,8 @@ class LedgerForm extends BaseModel if ($isTransferPrescription) { /* * 转诊处方分账逻辑: - * 1. 承接方(委托诊所)分走15%发起方(转诊诊所)的利润 - * 2. 发起方获得85%的利润 + * 1. 发起方(转诊诊所)获得100%的利润 + * 2. 承接方(委托诊所)不分账 * 3. 平台分账保持不变(成本价) */ @@ -367,10 +367,10 @@ class LedgerForm extends BaseModel } // 计算分账金额:从总利润中分配 - $delegateProfit = round($totalProfit * 0.15, 2); // 承接方分得15%的总利润 - $transferProfit = round($totalProfit * 0.85, 2); // 发起方分得85%的总利润 + // 转诊处方分账逻辑:全部利润(100%)分给发起方(转诊诊所),承接方不分账 + $transferProfit = round($totalProfit, 2); // 发起方分得100%的总利润(全部利润) - // 第二遍遍历:按每个药品的利润占比,分配承接方和发起方的分账金额 + // 第二遍遍历:按每个药品的利润占比,分配发起方的分账金额 foreach($itemData as $index => $item) { $ledger = []; @@ -389,10 +389,9 @@ class LedgerForm extends BaseModel } else { // 按该药品利润占比分配总利润 $itemProfitRatio = $totalProfit > 0 ? ($itemProfits[$index] / $totalProfit) : 0; - $itemDelegateProfit = round($delegateProfit * $itemProfitRatio, 2); // 该药品承接方应分得的金额 - $itemTransferProfit = round($transferProfit * $itemProfitRatio, 2); // 该药品发起方应分得的金额 + $itemTransferProfit = round($transferProfit * $itemProfitRatio, 2); // 该药品发起方应分得的金额(100%利润) - // 创建分账记录:发起方(转诊诊所)分得85%利润 + // 创建分账记录:发起方(转诊诊所)分得100%利润 $ledger[] = [ 'order_id' => $this->order_id, 'user_id' => $transferStoreId, // 发起方诊所ID @@ -404,25 +403,7 @@ class LedgerForm extends BaseModel 'drug_id' => $item['drug_id'], 'xd_time' => $productOrder->created_at, 'number' => $item['number'], - 'money' => $itemTransferProfit, // 发起方获得85%利润 - 'status' => 0, - 'created_at' => $time, - 'updated_at' => $time - ]; - - // 创建分账记录:承接方(委托诊所)分得15%利润 - $ledger[] = [ - 'order_id' => $this->order_id, - 'user_id' => $delegateStoreId, // 承接方诊所ID - 'user_type' => 1, //门店 - 'order_type' => 1,//产品订单 - 'fee_type' => 1,//药品费用 - 'su_id' => $productOrder->su_id, - 'drugstore_id' => $productOrder->store_id, - 'drug_id' => $item['drug_id'], - 'xd_time' => $productOrder->created_at, - 'number' => $item['number'], - 'money' => $itemDelegateProfit, // 承接方获得15%利润 + 'money' => $itemTransferProfit, // 发起方获得100%利润 'status' => 0, 'created_at' => $time, 'updated_at' => $time From 908b00db8310d1d77887615d31e151646810b15f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E7=90=A6?= Date: Sat, 7 Feb 2026 16:52:55 +0800 Subject: [PATCH 6/8] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E5=85=B3=E8=81=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../v1/controllers/ProductOrderController.php | 28 +++++++++++++++---- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/member/modules/v1/controllers/ProductOrderController.php b/member/modules/v1/controllers/ProductOrderController.php index 5f76722..2ded5f8 100644 --- a/member/modules/v1/controllers/ProductOrderController.php +++ b/member/modules/v1/controllers/ProductOrderController.php @@ -177,9 +177,15 @@ class ProductOrderController extends BaseAppController $h->select('name'); }])->asArray()->one(); - $prescription = Prescription::find()->select('cr_ids,wr_ids,gr_ids,category')->where(['id' => $ProductOrder['p_id']])->one(); + $prescription = Prescription::find()->select('cr_ids,wr_ids,gr_ids,category,store_id')->where(['id' => $ProductOrder['p_id']])->one(); - if($prescription['wr_ids']){ + // 获取处方来源诊所信息 + $prescriptionStore = null; + if ($prescription && isset($prescription['store_id']) && $prescription['store_id']) { + $prescriptionStore = Store::find()->select('id,name,mobile,position')->where(['id' => $prescription['store_id']])->asArray()->one(); + } + + if($prescription && $prescription['wr_ids']){ $wr_ids = explode(',', $prescription['wr_ids']); if ($ProductOrder['prescription_type'] == 5) { $west = ServicePackageRepice::find()->select('content,number,total_price')->where([ @@ -194,7 +200,7 @@ class ProductOrderController extends BaseAppController $value['content']=Json::decode($value['content']); } $count = count($west); - }else if($prescription['cr_ids']){ + }else if($prescription && $prescription['cr_ids']){ $cr_ids = explode(',', $prescription['cr_ids']); $chinese = ChineseRepice::find()->select('content,total_price')->where([ 'in', 'id', $cr_ids @@ -220,7 +226,7 @@ class ProductOrderController extends BaseAppController $count = count($granular['list']); } if ($ProductOrder['p_id'] !== 0 && $ProductOrder['order_type'] !== 2) { - if ($prescription['category'] === 2) { + if ($prescription && isset($prescription['category']) && $prescription['category'] === 2) { $ProductOrder['total_pay_price'] = $ProductOrder['trans_expenses']; $ProductOrder['items_price'] = 0; } @@ -234,6 +240,7 @@ class ProductOrderController extends BaseAppController 'west' => $west ?? null, 'chinese' => $chinese ?? null, 'granular' => $granular ?? null, + 'store' => $prescriptionStore ? ['store' => $prescriptionStore] : null, ]; } @@ -426,11 +433,22 @@ class ProductOrderController extends BaseAppController $q->select('id,drug_name,function,specification,usage,instruction'); }])->asArray()->all(); $ProductOrder['count'] = count($ProductOrderItems); + + // 获取处方来源诊所信息 + $prescriptionStore = null; + if ($ProductOrder['p_id']) { + $prescription = Prescription::find()->select('store_id')->where(['id' => $ProductOrder['p_id']])->asArray()->one(); + if ($prescription && isset($prescription['store_id']) && $prescription['store_id']) { + $prescriptionStore = Store::find()->select('id,name,mobile,position')->where(['id' => $prescription['store_id']])->asArray()->one(); + } + } + return [ 'ProductOrder' => $ProductOrder, 'userInfo' => $userInfo, 'hospital' => $hospital, - 'ProductOrderItems' => $ProductOrderItems + 'ProductOrderItems' => $ProductOrderItems, + 'store' => $prescriptionStore ? ['store' => $prescriptionStore] : null, ]; } From a3befd977b516da53492b049b92bdaa06643b6dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E7=90=A6?= Date: Sat, 7 Feb 2026 16:55:06 +0800 Subject: [PATCH 7/8] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E5=85=B3=E8=81=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../v1/controllers/ProductOrderController.php | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/member/modules/v1/controllers/ProductOrderController.php b/member/modules/v1/controllers/ProductOrderController.php index 2ded5f8..e1f6d13 100644 --- a/member/modules/v1/controllers/ProductOrderController.php +++ b/member/modules/v1/controllers/ProductOrderController.php @@ -181,12 +181,13 @@ class ProductOrderController extends BaseAppController // 获取处方来源诊所信息 $prescriptionStore = null; - if ($prescription && isset($prescription['store_id']) && $prescription['store_id']) { - $prescriptionStore = Store::find()->select('id,name,mobile,position')->where(['id' => $prescription['store_id']])->asArray()->one(); + if ($prescription && $prescription->store_id) { + $prescriptionStore = Store::find()->select('id,name,mobile,position')->where(['id' => $prescription->store_id])->asArray()->one(); } - if($prescription && $prescription['wr_ids']){ - $wr_ids = explode(',', $prescription['wr_ids']); + $count = 0; + if($prescription && $prescription->wr_ids){ + $wr_ids = explode(',', $prescription->wr_ids); if ($ProductOrder['prescription_type'] == 5) { $west = ServicePackageRepice::find()->select('content,number,total_price')->where([ 'in', 'id', $wr_ids @@ -200,8 +201,8 @@ class ProductOrderController extends BaseAppController $value['content']=Json::decode($value['content']); } $count = count($west); - }else if($prescription && $prescription['cr_ids']){ - $cr_ids = explode(',', $prescription['cr_ids']); + }else if($prescription && $prescription->cr_ids){ + $cr_ids = explode(',', $prescription->cr_ids); $chinese = ChineseRepice::find()->select('content,total_price')->where([ 'in', 'id', $cr_ids ])->all(); @@ -212,8 +213,8 @@ class ProductOrderController extends BaseAppController } } $count = count($chinese['list']); - }else{ - $gr_ids = explode(',', $prescription['gr_ids']); + }else if($prescription && $prescription->gr_ids){ + $gr_ids = explode(',', $prescription->gr_ids); $granular = GranularRepice::find()->select('content,total_price')->where([ 'in', 'id', $gr_ids ])->all(); @@ -226,7 +227,7 @@ class ProductOrderController extends BaseAppController $count = count($granular['list']); } if ($ProductOrder['p_id'] !== 0 && $ProductOrder['order_type'] !== 2) { - if ($prescription && isset($prescription['category']) && $prescription['category'] === 2) { + if ($prescription && $prescription->category === 2) { $ProductOrder['total_pay_price'] = $ProductOrder['trans_expenses']; $ProductOrder['items_price'] = 0; } From c71ab2cb1014801a766c3a54ae9323ebfb6c1f90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E7=90=A6?= Date: Tue, 24 Mar 2026 12:31:19 +0800 Subject: [PATCH 8/8] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E5=85=B3=E8=81=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- service/models/forms/LoginForm.php | 45 ++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/service/models/forms/LoginForm.php b/service/models/forms/LoginForm.php index 8805450..5bd654e 100644 --- a/service/models/forms/LoginForm.php +++ b/service/models/forms/LoginForm.php @@ -206,6 +206,21 @@ class LoginForm extends BaseModel 'su_id' => $ServiceUser->id, ])->with(['serviceUser']) ->asArray()->one(); + + // 把ServiceUser信息存在Redis里面(使用DB 1,key前缀加上doctor_wx区分) + $ServiceUserData = [ + 'user' => [ + 'id' => $ServiceUser->id, + 'mobile' => $ServiceUser->mobile ?? '', + 'nickname' => $ServiceUser->nickname ?? '微信用户', + 'role' => $ServiceUser->role, + 'status' => $ServiceUser->status, + 'plate_type' => $ServiceUser->plate_type, + ] + ]; + \Yii::$app->redis->select(1); + \Yii::$app->redis->set('xiaokang_database_xk_user_doctor_wx_' . $token, json_encode($ServiceUserData)); + return [ 'token'=>$token, 'data'=>$StoreDoctor @@ -256,6 +271,21 @@ class LoginForm extends BaseModel $StoreDoctor = StoreDoctor::find()->where([ 'su_id' => $ServiceUser->id, ])->with(['serviceUser'])->asArray()->one(); + + // 把ServiceUser信息存在Redis里面(使用DB 1,key前缀加上doctor_wx区分) + $ServiceUserData = [ + 'user' => [ + 'id' => $ServiceUser->id, + 'mobile' => $ServiceUser->mobile ?? '', + 'nickname' => $ServiceUser->nickname ?? '微信用户', + 'role' => $ServiceUser->role, + 'status' => $ServiceUser->status, + 'plate_type' => $ServiceUser->plate_type, + ] + ]; + \Yii::$app->redis->select(1); + \Yii::$app->redis->set('xiaokang_database_xk_user_doctor_wx_' . $token, json_encode($ServiceUserData)); + return [ 'token'=>$token, 'data'=>$StoreDoctor, @@ -321,6 +351,21 @@ class LoginForm extends BaseModel } $t->commit(); + + // 把ServiceUser信息存在Redis里面(使用DB 1,key前缀加上doctor_wx区分) + $ServiceUserData = [ + 'user' => [ + 'id' => $ServiceUser->id, + 'mobile' => $ServiceUser->mobile ?? '', + 'nickname' => $ServiceUser->nickname ?? '微信用户', + 'role' => $ServiceUser->role, + 'status' => $ServiceUser->status, + 'plate_type' => $ServiceUser->plate_type, + ] + ]; + \Yii::$app->redis->select(1); + \Yii::$app->redis->set('xiaokang_database_xk_user_doctor_wx_' . $token, json_encode($ServiceUserData)); + return [ 'token'=>$token, 'StoreDoctor'=>$StoreDoctor,