新增获取提现数据接口

This commit is contained in:
wucongxing 2023-02-24 09:12:11 +08:00
parent 695cb4f1a2
commit ac529a570f

View File

@ -27,20 +27,23 @@ class DoctorAccountService extends BaseService
// 获取医生账户余额 // 获取医生账户余额
$balance_account = $this->getDoctorBalanceAccount($user_info['client_user_id']); $balance_account = $this->getDoctorBalanceAccount($user_info['client_user_id']);
if ($balance_account > 0){ if ($balance_account > 0) {
$balance_account = $balance_account * 0.75; $balance_account = $balance_account * 0.75;
} }
// 获取医生月度余额 // 获取医生月度余额
$amount_total_month = $this->getDoctorMonthAmountTotal($user_info['client_user_id'],$date);; $amount_total_month = $this->getDoctorMonthAmountTotal($user_info['client_user_id'], $date);
if ($amount_total_month > 0) {
$amount_total_month = $amount_total_month * 0.75;
}
// 获取医生月度已提现金额-审核通过时间为准 // 获取医生月度已提现金额-审核通过时间为准
$params = array(); $params = array();
$params['doctor_id'] = $user_info['client_user_id']; $params['doctor_id'] = $user_info['client_user_id'];
$doctor_withdrawal = DoctorWithdrawal::getOne($params); $doctor_withdrawal = DoctorWithdrawal::getOne($params);
if (empty($doctor_withdrawal)){ if (empty($doctor_withdrawal)) {
$withdrawal_amount_month = 0; $withdrawal_amount_month = 0;
}else{ } else {
$withdrawal_amount_month = $doctor_withdrawal['actual_withdrawal_amount']; $withdrawal_amount_month = $doctor_withdrawal['actual_withdrawal_amount'];
} }
@ -55,11 +58,11 @@ class DoctorAccountService extends BaseService
$params = array(); $params = array();
$params['doctor_id'] = $user_info['client_user_id']; $params['doctor_id'] = $user_info['client_user_id'];
$params['year'] = date('Y',strtotime($date)); $params['year'] = date('Y', strtotime($date));
$params['month'] = date('m',strtotime($date)); $params['month'] = date('m', strtotime($date));
$doctor_account_days = DoctorAccountDay::getList($params,$fields); $doctor_account_days = DoctorAccountDay::getList($params, $fields);
if (!empty($doctor_account_days)){ if (!empty($doctor_account_days)) {
foreach ($doctor_account_days as $doctor_account_day){ foreach ($doctor_account_days as $doctor_account_day) {
$data = array(); $data = array();
$data['total_amount'] = $doctor_account_day['total_amount'] * 0.75; $data['total_amount'] = $doctor_account_day['total_amount'] * 0.75;
$data['month'] = $doctor_account_day['month']; $data['month'] = $doctor_account_day['month'];
@ -91,12 +94,12 @@ class DoctorAccountService extends BaseService
$per_page = $this->request->input('per_page', 10); $per_page = $this->request->input('per_page', 10);
// 获取当天开始时间 // 获取当天开始时间
$start_date = date('Y-m-d 00:00:00',strtotime($date)); $start_date = date('Y-m-d 00:00:00', strtotime($date));
// 获取当天结束时间 // 获取当天结束时间
$end_date = date('Y-m-d 23:59:59',strtotime($date)); $end_date = date('Y-m-d 23:59:59', strtotime($date));
$reception_time = [$start_date,$end_date]; $reception_time = [$start_date, $end_date];
// 获取医生当日接诊订单金额 // 获取医生当日接诊订单金额
$fields = [ $fields = [
@ -119,9 +122,9 @@ class DoctorAccountService extends BaseService
$params['inquiry_status'] = 6; // inquiry_status问诊订单状态1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消) $params['inquiry_status'] = 6; // inquiry_status问诊订单状态1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消)
$params['inquiry_refund_status'] = 0; // inquiry_refund_status问诊订单退款状态0:无退款 1:申请退款 2:退款中 3:退款成功 4:拒绝退款 5:退款关闭) $params['inquiry_refund_status'] = 0; // inquiry_refund_status问诊订单退款状态0:无退款 1:申请退款 2:退款中 3:退款成功 4:拒绝退款 5:退款关闭)
$order_inquiry = OrderInquiry::getDoctorAccountInfoPage($params,$reception_time,$fields); $order_inquiry = OrderInquiry::getDoctorAccountInfoPage($params, $reception_time, $fields);
if (!empty($order_inquiry['data'])){ if (!empty($order_inquiry['data'])) {
foreach ($order_inquiry['data'] as &$item){ foreach ($order_inquiry['data'] as &$item) {
$item['amount_total'] = $item['amount_total'] * 0.75; $item['amount_total'] = $item['amount_total'] * 0.75;
} }
} }
@ -129,9 +132,12 @@ class DoctorAccountService extends BaseService
return success($order_inquiry); return success($order_inquiry);
} }
// 获取提现数据 /**
public function getDoctorWithdrawal(){ * 获取提现数据
* @return array
*/
public function getDoctorWithdrawal(): array
{
$user_info = $this->request->getAttribute("userInfo") ?? []; $user_info = $this->request->getAttribute("userInfo") ?? [];
// 获取医生信息 // 获取医生信息
@ -155,11 +161,11 @@ class DoctorAccountService extends BaseService
// 检测医生身份认证 // 检测医生身份认证
$UserDoctorService = new UserDoctorService(); $UserDoctorService = new UserDoctorService();
$res = $UserDoctorService->checkDoctorAuth($user_doctor); $res = $UserDoctorService->checkDoctorAuth($user_doctor);
if ($res !== true){ if ($res !== true) {
return fail(HttpEnumCode::HTTP_ERROR, $res); return fail(HttpEnumCode::HTTP_ERROR, $res);
} }
if ($user_doctor['is_bind_bank'] != 1){ if ($user_doctor['is_bind_bank'] != 1) {
return fail(HttpEnumCode::HTTP_ERROR, "未绑定结算银行卡"); return fail(HttpEnumCode::HTTP_ERROR, "未绑定结算银行卡");
} }
@ -178,13 +184,20 @@ class DoctorAccountService extends BaseService
$result['bank_card_code_mask'] = $doctor_bank_card['bank_card_code_mask']; $result['bank_card_code_mask'] = $doctor_bank_card['bank_card_code_mask'];
// 获取医生账户余额 // 获取医生账户余额
$balance_account = $this->getDoctorBalanceAccount($user_info['client_user_id']); $balance_account = $this->getDoctorBalanceAccount($user_info['client_user_id']);
if ($balance_account > 0) {
$balance_account = $balance_account * 0.75;
}
$result['balance_account'] = floor($balance_account * 100) / 100;
// 计算医生个人所得税 // 计算医生个人所得税
$income_tax = $this->computeIndividualIncomeTax($balance_account);
$income_tax = floor($income_tax * 100) / 100;
$result['income_tax'] = $income_tax;
return success($result);
} }
/** /**
@ -197,9 +210,9 @@ class DoctorAccountService extends BaseService
$params = array(); $params = array();
$params['doctor_id'] = $doctor_id; $params['doctor_id'] = $doctor_id;
$doctor_account = DoctorAccount::getOne($params); $doctor_account = DoctorAccount::getOne($params);
if (empty($doctor_account)){ if (empty($doctor_account)) {
$balance_account = 0; $balance_account = 0;
}else{ } else {
$balance_account = $doctor_account['balance_account']; $balance_account = $doctor_account['balance_account'];
} }
@ -216,25 +229,48 @@ class DoctorAccountService extends BaseService
{ {
$params = array(); $params = array();
$params['doctor_id'] = $doctor_id; $params['doctor_id'] = $doctor_id;
$params['year'] = date('Y',strtotime($date)); $params['year'] = date('Y', strtotime($date));
$params['month'] = date('m',strtotime($date)); $params['month'] = date('m', strtotime($date));
$total_amount = DoctorAccountDay::getDoctorSumTotalAmount($params); $total_amount = DoctorAccountDay::getDoctorSumTotalAmount($params);
if (empty($total_amount)){ if (empty($total_amount)) {
$total_amount = 0; $total_amount = 0;
} }
return $total_amount; return $total_amount;
} }
// 获取医生某月提现数据 /**
// 审核通过时间为准 * 计算个人所得税
public function getDoctorMonthWithdrawalData(){ * @param string|int $income
* @return float|int
*/
protected function computeIndividualIncomeTax(string|int $income): float|int
{
if ($income <= 800) {
return 0;
}
} if ($income <= 4000) {
$income = $income - 800;
}
// 计算个人所得税 // 实际纳税金额
protected function computeIndividualIncomeTax(){ $income = $income * 0.8;
if ($income <= 20000) {
$tax_rate = 0.2; // 税率
$quick_deduction = 0; // 速算扣除数
} elseif ($income <= 50000) {
$tax_rate = 0.3;// 税率
$quick_deduction = 2000; // 速算扣除数
} else {
$tax_rate = 0.4;
$quick_deduction = 7000; // 速算扣除数
}
$income_tax = $income * $tax_rate - $quick_deduction;
return $income_tax;
} }
} }