hospital-applets-api/app/Services/DoctorAccountService.php

112 lines
3.5 KiB
PHP

<?php
namespace App\Services;
use App\Model\DoctorAccount;
use App\Model\DoctorAccountDay;
use App\Model\DoctorAccountMonth;
/**
* 医生账户
*/
class DoctorAccountService extends BaseService
{
/**
* 获取医生账户数据
* @return array
*/
public function getDoctorAccount(): array
{
$user_info = $this->request->getAttribute("userInfo") ?? [];
$date = $this->request->input('date');
// 获取医生账户余额
$balance_account = $this->getDoctorBalanceAccount($user_info['client_user_id']);
// 月预计收益
$amount_total_month = 0;
// 月已提现金额
$withdrawal_amount_month = 0;
// 获取医生账户某月数据
$params = array();
$params['doctor_id'] = $user_info['client_user_id'];
$params['year'] = date('Y',strtotime($date));
$params['month'] = date('m',strtotime($date));
$doctor_account_month = DoctorAccountMonth::getOne($params);
if (!empty($doctor_account_month)){
$amount_total_month = $doctor_account_month['total_amount'] ?: 0;
$withdrawal_amount_month = $doctor_account_month['withdrawal_amount'] ?: 0;
}
// 获取医生每日数据
$fields = [
'total_amount_day'
];
$params = array();
$params['doctor_id'] = $user_info['client_user_id'];
$params['year'] = date('Y',strtotime($date));
$params['month'] = date('m',strtotime($date));
$doctor_account_days = DoctorAccountDay::getList($params,$fields);
if (empty($doctor_account_days)){
$bill = [];
}else{
foreach ($doctor_account_days as &$doctor_account_day){
$doctor_account_day['total_amount_day'] = $doctor_account_day['total_amount_day'] * 0.75;
}
$bill = $doctor_account_days;
}
$result = array();
$result['balance_account'] = $balance_account; // 获取医生账户余额-未提现金额
$result['amount_total_month'] = $amount_total_month * 0.75; // 月预计收益
$result['withdrawal_amount_month'] = $withdrawal_amount_month; // 月已提现金额
$result['bill'] = $bill; // 账单
return success($result);
}
/**
* 获取医生账户余额
* @param string $doctor_id
* @return int
*/
public function getDoctorBalanceAccount(string $doctor_id): int
{
$params = array();
$params['doctor_id'] = $doctor_id;
$doctor_account = DoctorAccount::getOne($params);
if (empty($doctor_account)){
$balance_account = 0;
}else{
$balance_account = $doctor_account['balance_account'] * 0.75;
}
return $balance_account;
}
/**
* 获取医生账户某日预计收益
* @param string $doctor_id 医生id
* @param string $day 日期 Ymd形式
* @return float|int|mixed|string
*/
public function getDoctorDayAmountTotal(string $doctor_id, string $day): mixed
{
$params = array();
$params['doctor_id'] = $doctor_id;
$params['year'] = date('Y',strtotime($day));
$params['month'] = date('m',strtotime($day));
$params['day'] = date('d',strtotime($day));
$total_amount_day = DoctorAccountDay::getDoctorSumTotalAmount($params);
if (!empty($total_amount_day)){
$total_amount_day = $total_amount_day * 0.75;
}
return $total_amount_day ?: 0;
}
}