我的账户数据修改-获取我的账户数据
This commit is contained in:
@@ -5,7 +5,10 @@ declare(strict_types=1);
|
||||
namespace App\Amqp\Consumer;
|
||||
|
||||
use App\Amqp\Producer\AutoCompleteServicePackageDelayDirectProducer;
|
||||
use App\Model\DoctorAccount;
|
||||
use App\Model\DoctorAccountDay;
|
||||
use App\Model\OrderServicePackage;
|
||||
use App\Model\OrderServicePackageDetail;
|
||||
use App\Model\OrderServicePackageInquiry;
|
||||
use App\Model\UserDoctor;
|
||||
use App\Services\MessagePush;
|
||||
@@ -70,7 +73,7 @@ class AutoCompleteServicePackageDelayDirectConsumer extends ConsumerMessage
|
||||
$params['order_service_no'] = $data['order_no'];
|
||||
$order_service_package = OrderServicePackage::getOne($params);
|
||||
if (empty($order_service_package)){
|
||||
Log::getInstance("queue-AutoCompleteServicePackage")->error("入参错误" );
|
||||
Log::getInstance("queue-AutoCompleteServicePackage")->error("订单错误" );
|
||||
return Result::ACK;
|
||||
}
|
||||
|
||||
@@ -94,6 +97,14 @@ class AutoCompleteServicePackageDelayDirectConsumer extends ConsumerMessage
|
||||
return Result::DROP;
|
||||
}
|
||||
|
||||
// 获取订单详情数据
|
||||
$params = array();
|
||||
$params['order_service_no'] = $data['order_no'];
|
||||
$order_service_package_detail = OrderServicePackageDetail::getOne($params);
|
||||
if (empty($order_service_package_detail)){
|
||||
Log::getInstance("queue-AutoCompleteServicePackage")->error("订单详情错误" );
|
||||
return Result::ACK;
|
||||
}
|
||||
}catch (\Throwable $e){
|
||||
Log::getInstance("queue-AutoCompleteServicePackage")->error($e->getMessage());
|
||||
return Result::REQUEUE;
|
||||
@@ -110,6 +121,33 @@ class AutoCompleteServicePackageDelayDirectConsumer extends ConsumerMessage
|
||||
$params['order_service_id'] = $order_service_package['order_service_id'];
|
||||
OrderServicePackage::edit($params,$data);
|
||||
|
||||
// 处理统计问题
|
||||
if ($order_service_package['amount_total'] > 0) {
|
||||
// 计算本次问诊服务包问诊金额
|
||||
$amount_total = bcmul(
|
||||
(string)$order_service_package_detail['service_count'],
|
||||
bcmul(
|
||||
(string)$order_service_package_detail['single_inquiry_price'],
|
||||
0.75,
|
||||
3),
|
||||
3
|
||||
);
|
||||
|
||||
// 处理医生账户总表
|
||||
$res = $this->handleDoctorAccount($amount_total,$order_service_package['doctor_id']);
|
||||
if (!$res) {
|
||||
Db::rollBack();
|
||||
return Result::REQUEUE;
|
||||
}
|
||||
|
||||
// 处理医生账户表-日
|
||||
$res = $this->handleDoctorAccountDay($amount_total,$order_service_package['doctor_id'],$order_service_package['start_time']);
|
||||
if (!$res) {
|
||||
Db::rollBack();
|
||||
return Result::REQUEUE;
|
||||
}
|
||||
}
|
||||
|
||||
Db::commit();
|
||||
}catch (\Throwable $e){
|
||||
Db::rollBack();
|
||||
@@ -262,4 +300,83 @@ class AutoCompleteServicePackageDelayDirectConsumer extends ConsumerMessage
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理医生账户总表
|
||||
* 创建/修改医生账户总表中总金额、账户余额数据
|
||||
* @param string|int $amount_total
|
||||
* @param string|int $doctor_id
|
||||
* @return bool
|
||||
*/
|
||||
protected function handleDoctorAccount(string|int $amount_total,string|int $doctor_id): bool
|
||||
{
|
||||
$amount_total = bcmul((string)$amount_total,"0.75",8);
|
||||
|
||||
$params = array();
|
||||
$params['doctor_id'] = $doctor_id;
|
||||
$doctor_account = DoctorAccount::getOne($params);
|
||||
if (empty($doctor_account)) {
|
||||
// 首次
|
||||
$data = array();
|
||||
$data['doctor_id'] = $doctor_id;
|
||||
$data['total_amount'] = $amount_total;
|
||||
$data['balance_account'] = $amount_total;
|
||||
$data['applied_withdrawal_amount'] = 0;
|
||||
$data['actual_withdrawal_amount'] = 0;
|
||||
$data['income_tax'] = 0;
|
||||
$doctor_account = DoctorAccount::addDoctorAccount($data);
|
||||
if (empty($doctor_account)) {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
// 非首次
|
||||
// 总金额(已结束订单的总金额)
|
||||
$params = array();
|
||||
$params['account_id'] = $doctor_account['account_id'];
|
||||
DoctorAccount::inc($params, 'total_amount', (float)$amount_total);
|
||||
|
||||
// 账户余额
|
||||
DoctorAccount::inc($params, 'balance_account', (float)$amount_total);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理医生账户表-日
|
||||
* @param string|int $amount_total
|
||||
* @param string|int $doctor_id
|
||||
* @param string $start_time
|
||||
* @return bool
|
||||
*/
|
||||
protected function handleDoctorAccountDay(string|int $amount_total,string|int $doctor_id,string $start_time): bool
|
||||
{
|
||||
$amount_total = bcmul((string)$amount_total,"0.75",8);
|
||||
|
||||
$params = array();
|
||||
$params['doctor_id'] = $doctor_id;
|
||||
$params['date'] = date('Y-m-d', strtotime($start_time));
|
||||
$doctor_account_day = DoctorAccountDay::getOne($params);
|
||||
if (empty($doctor_account_day)) {
|
||||
// 当日首次
|
||||
$data = array();
|
||||
$data['doctor_id'] = $doctor_id;
|
||||
$data['year'] = date('Y', strtotime($start_time));
|
||||
$data['month'] = date('m', strtotime($start_time));
|
||||
$data['day'] = date('d', strtotime($start_time));
|
||||
$data['date'] = date('Y-m-d', strtotime($start_time));
|
||||
$data['total_amount'] = $amount_total;
|
||||
$doctor_account_day = DoctorAccountDay::addDoctorAccountDay($data);
|
||||
if (empty($doctor_account_day)) {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
// 非当日首次
|
||||
$params = array();
|
||||
$params['account_detail_id'] = $doctor_account_day['account_detail_id'];
|
||||
DoctorAccountDay::inc($params, 'total_amount', (float)$amount_total);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user