From 53bfdc1c991024595194fece4721307708ab2b91 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Fri, 19 Jan 2024 14:25:45 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B4=A6=E6=88=B7=EF=BC=9A=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E7=BB=93=E6=9D=9F=EF=BC=8C=E5=9C=A8=E5=BF=AB=E9=80=9F=E3=80=81?= =?UTF-8?q?=E8=B4=AD=E8=8D=AF=E7=B1=BB=E5=9E=8B=E4=B8=8B=EF=BC=8C=E4=B8=8D?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E5=9D=90=E7=8F=AD=E5=8C=BB=E7=94=9F=E6=94=B6?= =?UTF-8?q?=E7=9B=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AutoFinishInquiryDelayDirectConsumer.php | 59 ++++++++++++------- 1 file changed, 39 insertions(+), 20 deletions(-) diff --git a/app/Amqp/Consumer/AutoFinishInquiryDelayDirectConsumer.php b/app/Amqp/Consumer/AutoFinishInquiryDelayDirectConsumer.php index b4fe764..9c75e7e 100644 --- a/app/Amqp/Consumer/AutoFinishInquiryDelayDirectConsumer.php +++ b/app/Amqp/Consumer/AutoFinishInquiryDelayDirectConsumer.php @@ -93,6 +93,14 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage return Result::DROP; } + // 获取医生数据 + $params = array(); + $params['doctor_id'] = $order_inquiry['doctor_id']; + $user_doctor = UserDoctor::getOne($params); + if (empty($user_doctor)){ + Log::getInstance("queue-AutoFinishInquiry")->error("医生为空"); + return Result::DROP; + } Db::beginTransaction(); try { @@ -110,22 +118,28 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage return Result::ACK; } - // 处理统计问题 + /** + * 处理统计问题。规则: + * 1、金额大于0 + * 2、快速、购药类型下非坐班医生 + */ if ($order_inquiry['amount_total'] > 0) { - // 处理医生账户总表 - $res = $this->handleDoctorAccount($order_inquiry); - if (!$res) { - Db::rollBack(); - Log::getInstance("queue-AutoFinishInquiry")->error("处理医生账户总表失败"); - return Result::REQUEUE; - } + if (in_array($order_inquiry['inquiry_type'],[1,3]) && $user_doctor['is_platform_deep_cooperation'] == 0){ + // 处理医生账户总表 + $res = $this->handleDoctorAccount($order_inquiry); + if (!$res) { + Db::rollBack(); + Log::getInstance("queue-AutoFinishInquiry")->error("处理医生账户总表失败"); + return Result::REQUEUE; + } - // 处理医生账户表-日 - $res = $this->handleDoctorAccountDay($order_inquiry); - if (!$res) { - Db::rollBack(); - Log::getInstance("queue-AutoFinishInquiry")->error("处理医生账户表-日失败"); - return Result::REQUEUE; + // 处理医生账户表-日 + $res = $this->handleDoctorAccountDay($order_inquiry); + if (!$res) { + Db::rollBack(); + Log::getInstance("queue-AutoFinishInquiry")->error("处理医生账户表-日失败"); + return Result::REQUEUE; + } } } @@ -187,6 +201,8 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage */ protected function handleDoctorAccount(array|object $order_inquiry): bool { + $amount_total = bcmul($order_inquiry['amount_total'],0.75,8); + $params = array(); $params['doctor_id'] = $order_inquiry['doctor_id']; $doctor_account = DoctorAccount::getOne($params); @@ -194,8 +210,8 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage // 首次 $data = array(); $data['doctor_id'] = $order_inquiry['doctor_id']; - $data['total_amount'] = $order_inquiry['amount_total'] * 0.75; - $data['balance_account'] = $order_inquiry['amount_total'] * 0.75; + $data['total_amount'] = $amount_total; + $data['balance_account'] = $amount_total; $data['applied_withdrawal_amount'] = 0; $data['actual_withdrawal_amount'] = 0; $data['income_tax'] = 0; @@ -206,12 +222,13 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage } else { // 非首次 // 总金额(已结束订单的总金额) + $params = array(); $params['account_id'] = $doctor_account['account_id']; - DoctorAccount::inc($params, 'total_amount', $order_inquiry['amount_total'] * 0.75); + DoctorAccount::inc($params, 'total_amount', (float)$amount_total); // 账户余额 - DoctorAccount::inc($params, 'balance_account', $order_inquiry['amount_total'] * 0.75); + DoctorAccount::inc($params, 'balance_account', (float)$amount_total); } return true; } @@ -223,6 +240,8 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage */ protected function handleDoctorAccountDay(array|object $order_inquiry): bool { + $amount_total = bcmul($order_inquiry['amount_total'],0.75,8); + $params = array(); $params['doctor_id'] = $order_inquiry['doctor_id']; $params['date'] = date('Y-m-d', strtotime($order_inquiry['created_at'])); @@ -235,7 +254,7 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage $data['month'] = date('m', strtotime($order_inquiry['created_at'])); $data['day'] = date('d', strtotime($order_inquiry['created_at'])); $data['date'] = date('Y-m-d', strtotime($order_inquiry['created_at'])); - $data['total_amount'] = $order_inquiry['amount_total'] * 0.75; + $data['total_amount'] = $amount_total; $doctor_account_day = DoctorAccountDay::addDoctorAccountDay($data); if (empty($doctor_account_day)) { return false; @@ -244,7 +263,7 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage // 非当日首次 $params = array(); $params['account_detail_id'] = $doctor_account_day['account_detail_id']; - DoctorAccountDay::inc($params, 'total_amount', $order_inquiry['amount_total'] * 0.75); + DoctorAccountDay::inc($params, 'total_amount', (float)$amount_total); } return true;