修正返回值bigint被转义问题

This commit is contained in:
2023-02-23 15:11:45 +08:00
parent ebf34e28e7
commit 27288a9dd9
12 changed files with 229 additions and 46 deletions
+97 -25
View File
@@ -2,10 +2,13 @@
namespace App\Services;
use App\Constants\HttpEnumCode;
use App\Model\DoctorAccount;
use App\Model\DoctorAccountDay;
use App\Model\DoctorAccountMonth;
use App\Model\DoctorBankCard;
use App\Model\OrderInquiry;
use App\Model\UserDoctor;
/**
* 医生账户
@@ -24,8 +27,11 @@ class DoctorAccountService extends BaseService
// 获取医生账户余额
$balance_account = $this->getDoctorBalanceAccount($user_info['client_user_id']);
if ($balance_account > 0){
$balance_account = $balance_account * 0.75;
}
// 月预计收益
// 月余额-已结束订单
$amount_total_month = 0;
// 月已提现金额
@@ -38,7 +44,10 @@ class DoctorAccountService extends BaseService
$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;
if (!empty($doctor_account_month['total_amount'])){
$amount_total_month = $doctor_account_month['total_amount'] * 0.75;
}
$withdrawal_amount_month = $doctor_account_month['withdrawal_amount'] ?: 0;
}
@@ -69,7 +78,7 @@ class DoctorAccountService extends BaseService
$result = array();
$result['balance_account'] = $balance_account; // 账户余额
$result['amount_total_month'] = $amount_total_month * 0.75; // 月预计收益
$result['amount_total_month'] = $amount_total_month; // 月余额
$result['withdrawal_amount_month'] = $withdrawal_amount_month; // 月已提现金额
$result['bill'] = $bill; // 账单
@@ -114,8 +123,7 @@ class DoctorAccountService extends BaseService
$params = array();
$params['doctor_id'] = $user_info['client_user_id'];
$params['inquiry_refund_status'] = 0; // 问诊订单退款状态(0:无退款 1:申请退款 2:退款中 3:退款成功 4:拒绝退款 5:退款关闭)
$params['inquiry_pay_status'] = 2; // 支付状态(1:未支付 2:已支付 3:支付中 4:支付失败 5:支付超时 6:支付关闭 7:已撤销 8:转入退款)
// $params['cancel_reason'] = ;
$order_inquiry = OrderInquiry::getDoctorAccountInfoPage($params,$reception_time,$fields);
if (!empty($order_inquiry['data'])){
@@ -127,6 +135,64 @@ class DoctorAccountService extends BaseService
return success($order_inquiry);
}
// 获取提现数据
public function getDoctorWithdrawal(){
$user_info = $this->request->getAttribute("userInfo") ?? [];
// 获取医生信息
$params = array();
$params['doctor_id'] = $user_info['client_user_id'];
$fields = [
'doctor_id',
'user_name',
'iden_auth_status',
'idcard_status',
'multi_point_status',
'avatar',
'is_bind_bank',
];
$user_doctor = UserDoctor::getOne($params, $fields);
if (empty($user_doctor)) {
return fail(HttpEnumCode::HTTP_ERROR, "非法医生");
}
// 检测医生身份认证
$UserDoctorService = new UserDoctorService();
$res = $UserDoctorService->checkDoctorAuth($user_doctor);
if ($res !== true){
return fail(HttpEnumCode::HTTP_ERROR, $res);
}
if ($user_doctor['is_bind_bank'] != 1){
return fail(HttpEnumCode::HTTP_ERROR, "未绑定结算银行卡");
}
// 获取医生结算银行卡
$params = array();
$params['doctor_id'] = $user_info['client_user_id'];
$doctor_bank_card = DoctorBankCard::getWithBankOne($params);
if (empty($doctor_bank_card)) {
return success();
}
$result = array();
$result['bank_card_id'] = $doctor_bank_card['bank_card_id'];
$result['bank_img_path'] = $doctor_bank_card['BasicBank']['bank_img_path'];
$result['bank_name'] = $doctor_bank_card['BasicBank']['bank_name'];
$result['bank_card_code_mask'] = $doctor_bank_card['bank_card_code_mask'];
// 获取医生账户余额
$balance_account = $this->getDoctorBalanceAccount($user_info['client_user_id']);
// 计算医生个人所得税
}
/**
* 获取医生账户余额
* @param string $doctor_id
@@ -140,31 +206,37 @@ class DoctorAccountService extends BaseService
if (empty($doctor_account)){
$balance_account = 0;
}else{
$balance_account = $doctor_account['balance_account'] * 0.75;
$balance_account = $doctor_account['balance_account'];
}
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;
}
// /**
// * 获取医生账户某日预计收益
// * @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;
// }
// 计算个人所得税
protected function computeIndividualIncomeTax(){
return $total_amount_day ?: 0;
}
}
+31
View File
@@ -63,6 +63,37 @@ class OrderInquiryService extends BaseService
return $accepting_inquiry_num;
}
/**
* 获取医生当日接诊的订单金额
* 状态:已接诊-已完成
* @param string $doctor_id
* @param string $date
* @return float
*/
public function getDoctorDayAmountTotal(string $doctor_id,string $date): float
{
// 获取当天开始时间
$start_date = date('Y-m-d 00:00:00',strtotime($date));
// 获取当天结束时间
$end_date = date('Y-m-d 23:59:59',strtotime($date));
// 获取医生当日接诊订单金额
$params = array();
$params['doctor_id'] = $doctor_id;
$params['inquiry_refund_status'] = 0; // 问诊订单退款状态(0:无退款 1:申请退款 2:退款中 3:退款成功 4:拒绝退款 5:退款关闭)
$params['inquiry_pay_status'] = 2; // 支付状态(1:未支付 2:已支付 3:支付中 4:支付失败 5:支付超时 6:支付关闭 7:已撤销 8:转入退款)
$params['settlement_status'] = 0; // 订单与医生结算状态(0:未结算 1:已结算)
$reception_time = [$start_date,$end_date];
$inquiry_status_params = [4,5]; // 问诊订单状态(1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消)
$amount_total_sum = OrderInquiry::getOrderInquiryAmountTotalSum($params,$reception_time,$inquiry_status_params);
return $amount_total_sum ?: 0;
}
// 创建问诊订单
public function addInquiryOrder(){
$user_info = $this->request->getAttribute("userInfo") ?? [];
+44 -3
View File
@@ -496,13 +496,54 @@ class UserDoctorService extends BaseService
// 获取医生账户余额-未提现金额
$DoctorAccountService = new DoctorAccountService();
$balance_account = $DoctorAccountService->getDoctorBalanceAccount($user_info['client_user_id']);
if ($balance_account > 0){
$balance_account = $balance_account * 0.75;
}
// 获取当日预计收益 当日接诊的订单金额
$estimate_income = $DoctorAccountService->getDoctorDayAmountTotal($user_info['client_user_id'],date('Y-m-d',time()));
// 获取医生当日接诊的订单金额
$OrderInquiryService = new OrderInquiryService();
$estimate_income = $OrderInquiryService->getDoctorDayAmountTotal($user_info['client_user_id'],date('Y-m-d',time()));
if (!empty($estimate_income)){
$estimate_income = $estimate_income * 0.75;
}
$user_doctor['balance_account'] = $balance_account ?? 0;
$user_doctor['balance_account'] = $balance_account;
$user_doctor['estimate_income'] = $estimate_income;
return success($user_doctor);
}
/**
* 检测医生身份认证
* @param object|array $user_doctor 医生表数据
* @return bool|string string:错误信息 bool:通过
*/
public function checkDoctorAuth(object|array $user_doctor): bool|string
{
if (empty($user_doctor)){
throw new BusinessException();
}
if (isset($user_doctor['iden_auth_status'])){
if ($user_doctor['iden_auth_status'] != 1) {
return "请先完成身份认证";
}
}
if (isset($user_doctor['idcard_status'])){
if ($user_doctor['idcard_status'] != 1) {
return "请先完成实名认证";
}
}
if (isset($user_doctor['multi_point_status'])){
if ($user_doctor['multi_point_status'] != 1) {
return "请先完成多点执业认证";
}
}
return true;
}
}