From 2d0305ea2f45a4b8da6d9ee4bc543f1f9023ac40 Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Tue, 23 Apr 2024 11:45:21 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E5=8C=BB=E7=94=9F=E4=BD=93?= =?UTF-8?q?=E7=8E=B0=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Command/MoveOrderCommand.php | 48 ++ app/Controller/TestController.php | 104 ++-- app/Model/DoctorWithdrawalOrder.php | 14 +- app/Model/Order.php | 76 ++- app/Model/OrderInquiry.php | 29 +- app/Services/DoctorAccountService.php | 662 ++++++++++++++++++-------- config/routes.php | 2 +- extend/Ca/Ca.php | 1 - 8 files changed, 657 insertions(+), 279 deletions(-) diff --git a/app/Command/MoveOrderCommand.php b/app/Command/MoveOrderCommand.php index 1c25ec8..7b8900e 100644 --- a/app/Command/MoveOrderCommand.php +++ b/app/Command/MoveOrderCommand.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace App\Command; +use App\Model\DoctorWithdrawalOrder; use App\Model\Order; use App\Model\OrderCoupon; use App\Model\OrderDetection; @@ -64,6 +65,9 @@ class MoveOrderCommand extends HyperfCommand // 处理检测订单退款 // $this->handleOrderDetectionRefund(); + + // 修正医生提现关联订单表数据 +// $this->handleDoctorWithdrawalOrder(); } /** @@ -120,6 +124,9 @@ class MoveOrderCommand extends HyperfCommand if (!empty($order_inquiry['cancel_reason'])){ $data['cancel_remarks'] = inquiryCancelReasonToString($order_inquiry['cancel_reason']); } + + $data['is_withdrawal'] = $order_inquiry['is_withdrawal']; + $data['withdrawal_time'] = $order_inquiry['withdrawal_time']; $order = Order::addOrder($data); if (empty($order)) { Db::rollBack(); @@ -314,6 +321,7 @@ class MoveOrderCommand extends HyperfCommand } $data['cancel_time'] = $order_product['cancel_time']; $data['cancel_remarks'] = $order_product['cancel_remarks']; + $data['is_withdrawal'] = 3; $order = Order::addOrder($data); if (empty($order)) { Db::rollBack(); @@ -502,6 +510,8 @@ class MoveOrderCommand extends HyperfCommand $data['cancel_remarks'] = detectionCancelReasonToString($order_detection['cancel_reason']); } + $data['is_withdrawal'] = 3; + $order = Order::addOrder($data); if (empty($order)) { Db::rollBack(); @@ -583,4 +593,42 @@ class MoveOrderCommand extends HyperfCommand } } + /** + * 修正医生提现关联订单表数据 + * @return void + */ + public function handleDoctorWithdrawalOrder(): void + { + $params = array(); + $doctor_withdrawal_orders = DoctorWithdrawalOrder::getList($params); + if (empty($doctor_withdrawal_orders)){ + $this->line("无检测退款订单需要执行"); + return; + } + + foreach ($doctor_withdrawal_orders as $doctor_withdrawal_order){ + $params = array(); + $params['order_inquiry_id'] = $doctor_withdrawal_order['order_inquiry_id']; + $order_inquiry = OrderInquiry::getOne($params); + if (empty($order_inquiry)){ + $this->line("无对应订单数据"); + continue; + } + + Db::beginTransaction(); + try { + $params = array(); + $params['withdrawal_order_id'] = $doctor_withdrawal_order['withdrawal_order_id']; + + $data = array(); + $data['order_id'] = $order_inquiry['order_id']; + DoctorWithdrawalOrder::edit($params,$data); + + Db::commit(); + }catch (\Throwable $e){ + Db::rollBack(); + $this->line($e->getMessage()); + } + } + } } diff --git a/app/Controller/TestController.php b/app/Controller/TestController.php index 6472c79..475ee93 100644 --- a/app/Controller/TestController.php +++ b/app/Controller/TestController.php @@ -86,7 +86,7 @@ class TestController extends AbstractController // $this->test_12(); // $this->test_13(); // $this->test_14(); - $this->test_17(); + $this->test_14(); } // 获取未接诊的医生 @@ -360,6 +360,7 @@ class TestController extends AbstractController if (empty($doctor_pharmacist_cert)){ return fail(); } + return 111; } public function test_15(){ @@ -378,29 +379,29 @@ class TestController extends AbstractController public function test_16(){ $CaOnline = new CaOnline(); - // 测试医生 -// $data = array(); -// $data['user_id'] = "491925054435950592"; -// $data['mobile'] = "13028643897"; -// $data['card_name'] = "郝明明"; -// $data['card_num'] = "130582199202032038"; -// $data['orgDept'] = "科室名称"; -// $data['org_name'] = "成都金牛欣欣相照互联网医院有限公司"; -// $data['org_number'] = "91510106MABTJY4K9R"; -// $result = $CaOnline->getCloudCert($data); -// -// $data = array(); -// $data['user_id'] = "491925054435950592"; -// $data['type'] = 2; -// $data['cert_base64'] = $result['certBase64']; -// $data['cert_chain_p7'] = $result['certP7']; -// $data['cert_serial_number'] = $result['certSerialnumber']; -// $data['ca_pin'] = "491925054435950592"; -// $doctor_pharmacist_cert = UserCaCert::addUserCaCert($data); -// if (empty($doctor_pharmacist_cert)){ -// return fail(); -// } -// dump(111); + // 测试医生 + $data = array(); + $data['user_id'] = "491925054435950592"; + $data['mobile'] = "13028643897"; + $data['card_name'] = "郝明明"; + $data['card_num'] = "130582199202032038"; + $data['orgDept'] = "科室名称"; + $data['org_name'] = "成都金牛欣欣相照互联网医院有限公司"; + $data['org_number'] = "91510106MABTJY4K9R"; + $result = $CaOnline->getCloudCert($data); + + $data = array(); + $data['user_id'] = "491925054435950592"; + $data['type'] = 2; + $data['cert_base64'] = $result['certBase64']; + $data['cert_chain_p7'] = $result['certP7']; + $data['cert_serial_number'] = $result['certSerialnumber']; + $data['ca_pin'] = "491925054435950592"; + $doctor_pharmacist_cert = UserCaCert::addUserCaCert($data); + if (empty($doctor_pharmacist_cert)){ + return fail(); + } + dump(111); // // 测试药师 // $data = array(); @@ -423,35 +424,36 @@ class TestController extends AbstractController // $doctor_pharmacist_cert = UserCaCert::addUserCaCert($data); // if (empty($doctor_pharmacist_cert)){ // return fail(); +// } +// +// $params = array(); +// $params['ca_pin'] = "491925054435950592"; +// $params['type'] = "2"; +// $user_ca_cert = UserCaCert::getOne($params); +// if (empty($user_ca_cert)){ +// return fail(); // } - $params = array(); - $params['ca_pin'] = "491925054435950592"; - $params['type'] = "2"; - $user_ca_cert = UserCaCert::getOne($params); - if (empty($user_ca_cert)){ - return fail(); - } - - // 测试医院 - $data = array(); - $data['user_id'] = "491925054435950592"; - $result = $CaOnline->renewCloudCert($data); - - dump($result); - - $data = array(); - $data['cert_base64'] = $result['certBase64']; - $data['cert_chain_p7'] = $result['certP7']; - $data['cert_serial_number'] = $result['certSerialnumber']; - $data['ca_pin'] = "491925054435950592"; - - $params = array(); - $params['cert_id'] = $user_ca_cert['cert_id']; - $res = UserCaCert::edit($params,$data); - if (empty($res)){ - return fail(); - } + return 122; +// // 测试医院 +// $data = array(); +// $data['user_id'] = "491925054435950592"; +// $result = $CaOnline->renewCloudCert($data); +// +// dump($result); +// +// $data = array(); +// $data['cert_base64'] = $result['certBase64']; +// $data['cert_chain_p7'] = $result['certP7']; +// $data['cert_serial_number'] = $result['certSerialnumber']; +// $data['ca_pin'] = "491925054435950592"; +// +// $params = array(); +// $params['cert_id'] = $user_ca_cert['cert_id']; +// $res = UserCaCert::edit($params,$data); +// if (empty($res)){ +// return fail(); +// } } public function test_17(){ diff --git a/app/Model/DoctorWithdrawalOrder.php b/app/Model/DoctorWithdrawalOrder.php index 44911f8..763bd0c 100644 --- a/app/Model/DoctorWithdrawalOrder.php +++ b/app/Model/DoctorWithdrawalOrder.php @@ -12,6 +12,7 @@ use Hyperf\Snowflake\Concern\Snowflake; * @property int $withdrawal_order_id 主键id * @property int $withdrawal_id 提现表id * @property int $doctor_id 医生id + * @property int $order_id 订单id * @property int $order_inquiry_id 订单-问诊id * @property \Carbon\Carbon $created_at 创建时间 * @property \Carbon\Carbon $updated_at 修改时间 @@ -28,7 +29,7 @@ class DoctorWithdrawalOrder extends Model /** * The attributes that are mass assignable. */ - protected array $fillable = ['withdrawal_order_id', 'withdrawal_id', 'doctor_id', 'order_inquiry_id', 'created_at', 'updated_at']; + protected array $fillable = ['withdrawal_order_id', 'withdrawal_id', 'doctor_id', 'order_id', 'order_inquiry_id', 'created_at', 'updated_at']; protected string $primaryKey = "withdrawal_order_id"; @@ -64,4 +65,15 @@ class DoctorWithdrawalOrder extends Model { return self::create($data); } + + /** + * 修改 + * @param array $params + * @param array $data + * @return int + */ + public static function edit(array $params = [], array $data = []): int + { + return self::where($params)->update($data); + } } diff --git a/app/Model/Order.php b/app/Model/Order.php index 1f71093..e899ac2 100644 --- a/app/Model/Order.php +++ b/app/Model/Order.php @@ -22,7 +22,7 @@ use Hyperf\Snowflake\Concern\Snowflake; * @property int $pay_channel 支付渠道(1:小程序支付 2:微信扫码支付 3:模拟支付) * @property int $pay_status 支付状态(1:未支付 2:已支付 3:支付中 4:支付失败 5:支付超时 6:支付关闭 7:已撤销 8:转入退款) * @property string $pay_time 支付时间 - * @property int $refund_status 订单退款状态(0:无退款 1:申请退款 2:退款中 3:退款成功 4:拒绝退款 5:退款关闭 6:退款异常) + * @property int $refund_status 订单退款状态(0:无退款 1:申请退款 2:退款中 3:退款成功 4:拒绝退款 5:退款关闭 6:退款异常 7:部分退款) * @property string $order_no 系统订单编号 * @property string $escrow_trade_no 第三方支付流水号 * @property string $amount_total 订单金额 @@ -32,8 +32,12 @@ use Hyperf\Snowflake\Concern\Snowflake; * @property string $cancel_time 订单取消时间 * @property string $cancel_remarks 取消订单备注 * @property string $order_remarks 订单备注 - * @property Carbon $created_at 创建时间 - * @property Carbon $updated_at 修改时间 + * @property int $is_withdrawal 是否提现(0:否 1:是 2:提现中 3:无需提现) + * @property string $withdrawal_time 提现时间 + * @property \Carbon\Carbon $created_at 创建时间 + * @property \Carbon\Carbon $updated_at 修改时间 + * @property-read OrderInquiry|null $OrderInquiry + * @property-read OrderServicePackage|null $OrderServicePackage */ class Order extends Model { @@ -47,7 +51,7 @@ class Order extends Model /** * The attributes that are mass assignable. */ - protected array $fillable = ['order_id', 'user_id', 'patient_id', 'doctor_id', 'order_type', 'is_delete', 'pay_channel', 'pay_status', 'pay_time', 'refund_status', 'order_no', 'escrow_trade_no', 'amount_total', 'coupon_amount_total', 'payment_amount_total', 'cancel_status', 'cancel_time', 'cancel_remarks', 'order_remarks', 'created_at', 'updated_at']; + protected array $fillable = ['order_id', 'user_id', 'patient_id', 'doctor_id', 'order_type', 'is_delete', 'pay_channel', 'pay_status', 'pay_time', 'refund_status', 'order_no', 'escrow_trade_no', 'amount_total', 'coupon_amount_total', 'payment_amount_total', 'cancel_status', 'cancel_time', 'cancel_remarks', 'order_remarks', 'is_withdrawal', 'withdrawal_time', 'created_at', 'updated_at']; protected string $primaryKey = "order_id"; @@ -122,7 +126,9 @@ class Order extends Model */ public static function getDoctorCreatedDateOrderInquiryPage(array $params, array $date_params,string|int $is_platform_deep_cooperation,array $fields = ["*"], int $page = null, ?int $per_page = 10): array { - $query = self::with(['OrderInquiry', 'OrderServicePackage'])->where($params); + $query = self::with(['OrderInquiry', 'OrderServicePackage']) + ->whereIn('order_type',[1,4,5]) + ->where($params); // 问诊订单 $query = $query->where(function ($query) use ($date_params,$is_platform_deep_cooperation){ @@ -166,7 +172,8 @@ class Order extends Model */ public static function getDoctorDayAmountTotal(array $params, array $date_params,string|int $is_platform_deep_cooperation): int|null|string { - $query = self::where($params); + $query = self::where($params) + ->whereIn('order_type',[1,4,5]); // 问诊订单 $query = $query->where(function ($query) use ($date_params,$is_platform_deep_cooperation){ @@ -208,7 +215,8 @@ class Order extends Model */ public static function getDoctorDayCompletedAmountTotal(array $params, array $date_params,string|int $is_platform_deep_cooperation): int|null|string { - $query = self::where($params); + $query = self::where($params) + ->whereIn('order_type',[1,4,5]); // 问诊订单 $query = $query->where(function ($query) use ($date_params,$is_platform_deep_cooperation){ @@ -240,4 +248,58 @@ class Order extends Model ->sum("amount_total");; return $result; } + + /** + * 获取可提现订单列表 + * @param array $params + * @param string|int $is_platform_deep_cooperation + * @param array $fields + * @param int|null $page + * @param int|null $per_page + * @return array + */ + public static function getDoctorWithdrawalOrderList(array $params, string|int $is_platform_deep_cooperation,array $fields = ["*"], int $page = null, ?int $per_page = 10): array + { + $query = self::with(['OrderInquiry', 'OrderServicePackage']) + ->where($params) + ->whereIn('order_type',[1,4,5]); + + // 问诊订单 + $query = $query->where(function ($query) use ($is_platform_deep_cooperation){ + $query->whereExists(function ($subQuery) use ($is_platform_deep_cooperation){ + $subQuery->from('order_inquiry'); + if ($is_platform_deep_cooperation == 1){ + $subQuery->whereNotIn('inquiry_type', [2,4]); + } + + $subQuery->whereNotIn('inquiry_mode', [7,8,9]) + ->whereIn('inquiry_status', [6]) + ->whereIn('inquiry_refund_status', [0,3]) + ->whereRaw('gdxz_order.order_id = gdxz_order_inquiry.order_id'); + }) + ->orWhereExists(function ($subQuery) { + $subQuery->from('order_service_package') + ->whereRaw('gdxz_order.order_id = gdxz_order_service_package.order_id') + ->whereIn('refund_status', [0,3]) + ->where('pay_status', 2) + ->where('start_time', 2) + ->whereIn('order_service_status', [4,5]) + ->WhereExists(function ($subQuery){ + $subQuery->from("order_service_package_inquiry") + ->whereRaw('gdxz_order_service_package.order_service_id = gdxz_order_service_package_inquiry.order_service_id'); + }); + }); + }); + + $result = $query->paginate($per_page, $fields, "page", $page); + + $data = array(); + $data['current_page'] = $result->currentPage();// 当前页码 + $data['total'] = $result->total();//数据总数 + $data['data'] = $result->items();//数据 + $data['per_page'] = $result->perPage();//每页个数 + $data['last_page'] = $result->lastPage();//最后一页 + + return $data; + } } diff --git a/app/Model/OrderInquiry.php b/app/Model/OrderInquiry.php index 9857fc6..5bc1425 100644 --- a/app/Model/OrderInquiry.php +++ b/app/Model/OrderInquiry.php @@ -234,40 +234,13 @@ class OrderInquiry extends Model * 已结束 * @param array $params * @param array $inquiry_status_params - * @param array $fields - * @param int|null $page - * @param int|null $per_page - * @return int|mixed|string - */ - public static function getDoctorOrderInquiryPage(array $params, array $inquiry_status_params, array $fields = ["*"], int $page = null, ?int $per_page = 10): mixed - { - $raw = self::where($params) - ->whereIn('inquiry_status', $inquiry_status_params) - ->orderBy('finish_time', 'desc') - ->paginate($per_page, $fields, "page", $page); - - $data = array(); - $data['current_page'] = $raw->currentPage();// 当前页码 - $data['total'] = $raw->total();//数据总数 - $data['data'] = $raw->items();//数据 - $data['per_page'] = $raw->perPage();//每页个数 - $data['last_page'] = $raw->lastPage();//最后一页 - - return $data; - } - - /** - * 获取医生接诊订单分页数据-坐班医生 - * 已结束 - * @param array $params - * @param array $inquiry_status_params * @param array $inquiry_type_not_params * @param array $fields * @param int|null $page * @param int|null $per_page * @return int|mixed|string */ - public static function getCooperationDoctorOrderInquiryPage(array $params, array $inquiry_status_params,array $inquiry_type_not_params = [], array $fields = ["*"], int $page = null, ?int $per_page = 10): mixed + public static function getDoctorOrderInquiryPage(array $params, array $inquiry_status_params,array $inquiry_type_not_params = [], array $fields = ["*"], int $page = null, ?int $per_page = 10): mixed { $raw = self::where($params) ->whereIn('inquiry_status', $inquiry_status_params) diff --git a/app/Services/DoctorAccountService.php b/app/Services/DoctorAccountService.php index cf9c3ce..db15842 100644 --- a/app/Services/DoctorAccountService.php +++ b/app/Services/DoctorAccountService.php @@ -13,6 +13,8 @@ use App\Model\DoctorWithdrawalOrder; use App\Model\Order; use App\Model\OrderInquiry; use App\Model\OrderInquiryRefund; +use App\Model\OrderServicePackage; +use App\Model\OrderServicePackageDetail; use App\Model\OrderServicePackageRefund; use App\Model\UserDoctor; use App\Model\UserDoctorInfo; @@ -33,13 +35,13 @@ class DoctorAccountService extends BaseService $year = $this->request->input('date'); - $date = date('Y-m-d',time()); + $date = date('Y-m-d', time()); // 获取医生数据 $params = array(); $params['doctor_id'] = $user_info['client_user_id']; $user_doctor = UserDoctor::getOne($params); - if (empty($user_doctor)){ + if (empty($user_doctor)) { return fail(); } @@ -47,22 +49,22 @@ class DoctorAccountService extends BaseService $OrderServicePackageService = new OrderServicePackageService(); // 获取医生当日的接诊订单金额 - $doctor_today_inquiry_total = $inquiryService->getDoctorDayAmountTotal($user_doctor['doctor_id'],$date,$user_doctor['is_platform_deep_cooperation']); + $doctor_today_inquiry_total = $inquiryService->getDoctorDayAmountTotal($user_doctor['doctor_id'], $date, $user_doctor['is_platform_deep_cooperation']); // 获取医生当日的服务包订单问诊金额-开始时间 - $doctor_today_service_package_total = $OrderServicePackageService->getDoctorDayAmountTotal($user_doctor['doctor_id'],$date); + $doctor_today_service_package_total = $OrderServicePackageService->getDoctorDayAmountTotal($user_doctor['doctor_id'], $date); // 医生当日的订单金额 - $doctor_today_total = bcadd($doctor_today_inquiry_total,$doctor_today_service_package_total,2); + $doctor_today_total = bcadd($doctor_today_inquiry_total, $doctor_today_service_package_total, 2); // 获取医生当日已完成未结束的问诊订单金额 - $doctor_day_inquiry_completed_amount_total = $inquiryService->getDoctorDayCompletedAmountTotal($user_doctor['doctor_id'],$date,$user_doctor['is_platform_deep_cooperation']); + $doctor_day_inquiry_completed_amount_total = $inquiryService->getDoctorDayCompletedAmountTotal($user_doctor['doctor_id'], $date, $user_doctor['is_platform_deep_cooperation']); // 获取医生当日未完成的服务包订单问诊金额-结束时间 - $doctor_day_service_package_completed_amount_total = $OrderServicePackageService->getDoctorDayNoFinishAmountTotal($user_doctor['doctor_id'],$date); + $doctor_day_service_package_completed_amount_total = $OrderServicePackageService->getDoctorDayNoFinishAmountTotal($user_doctor['doctor_id'], $date); // 已完成待入账金额 - $doctor_day_completed_amount_total = bcadd($doctor_day_inquiry_completed_amount_total,$doctor_day_service_package_completed_amount_total,2); + $doctor_day_completed_amount_total = bcadd($doctor_day_inquiry_completed_amount_total, $doctor_day_service_package_completed_amount_total, 2); // 获取医生账户余额 $balance_account = 0; @@ -83,7 +85,7 @@ class DoctorAccountService extends BaseService if (!empty($doctor_account_days)) { foreach ($doctor_account_days as $doctor_account_day) { $data = array(); - $data['total_amount'] = bcmul((string)$doctor_account_day['total_amount'],1,2); + $data['total_amount'] = bcmul((string)$doctor_account_day['total_amount'], 1, 2); $data['month'] = $doctor_account_day['month']; $bill[] = $data; } @@ -91,9 +93,9 @@ class DoctorAccountService extends BaseService } $result = array(); - $result['doctor_today_inquiry_total'] = bcmul((string)$doctor_today_total,"0.75",2); // 今日预计收入 - $result['doctor_day_completed_amount_total'] = bcmul((string)$doctor_day_completed_amount_total ,"0.75",2); // 今日已完成收入 - $result['balance_account'] = bcmul((string)$balance_account ,"1",2); // 账户余额 + $result['doctor_today_inquiry_total'] = bcmul((string)$doctor_today_total, "0.75", 2); // 今日预计收入 + $result['doctor_day_completed_amount_total'] = bcmul((string)$doctor_day_completed_amount_total, "0.75", 2); // 今日已完成收入 + $result['balance_account'] = bcmul((string)$balance_account, "1", 2); // 账户余额 $result['bill'] = $bill; // 账单 return success($result); @@ -115,15 +117,15 @@ class DoctorAccountService extends BaseService $params = array(); $params['doctor_id'] = $user_info['client_user_id']; $user_doctor = UserDoctor::getOne($params); - if (empty($user_doctor)){ + if (empty($user_doctor)) { return fail(); } $params = array(); - $params['doctor_id'] = $user_doctor['doctor_id']; + $params['doctor_id'] = $user_doctor['doctor_id']; // 获取当月开始时间 - $start_date = date('Y-m-01 00:00:00',strtotime($date)); + $start_date = date('Y-m-01 00:00:00', strtotime($date)); // 获取当月结束时间 // 获取给定月份的下一个月的第一天,然后减去一天得到当月的最后一天 @@ -131,45 +133,13 @@ class DoctorAccountService extends BaseService $date_params = [$start_date, $end_date]; - $results = Order::getDoctorCreatedDateOrderInquiryPage($params,$date_params,$user_doctor['is_platform_deep_cooperation'],['*'],$page,$per_page); + $results = Order::getDoctorCreatedDateOrderInquiryPage($params, $date_params, $user_doctor['is_platform_deep_cooperation'], ['*'], $page, $per_page); if (!empty($results['data'])) { foreach ($results['data'] as &$result) { - // 入账金额 - $result['estimate_income'] = bcmul((string)$result['amount_total'],"0.75",2); - - // 入账状态-问诊订单 - if (!empty($result['OrderInquiry'])){ - if ($result['OrderInquiry']['inquiry_status'] == 4 || $result['OrderInquiry']['inquiry_status'] == 5){ - $result['entry_status'] = 1;// 入账中 - }elseif ($result['OrderInquiry']['inquiry_status'] == 6){ - $result['entry_status'] = 2;// 入账成功 - }elseif ($result['OrderInquiry']['inquiry_status'] == 7){ - $result['entry_status'] = 3;// 入账失败 - // 获取退款数据 - $params = array(); - $params['inquiry_no'] = $result['OrderInquiry']['inquiry_no']; - $order_inquiry_refunds = OrderInquiryRefund::getList($params); - if (!empty($order_inquiry_refunds)){ - $refund_total = 0; - foreach ($order_inquiry_refunds as $order_inquiry_refund){ - $refund_total = $refund_total + $order_inquiry_refund['refund_total']; - } - - // 订单退款金额 - $result['refund_total'] = $refund_total; - - if (($result['OrderInquiry']['payment_amount_total'] - $refund_total) > 0){ - $result['entry_status'] = 2;// 入账成功 - }else{ - $result['entry_status'] = 3;// 入账失败 - } - } - - if (!empty($result['OrderInquiry']['cancel_reason'])){ - $result['cancel_remarks'] = inquiryCancelReasonToPushString($result['OrderInquiry']['cancel_reason']); - } - }else{ - $result['entry_status'] = 0;// 未知 + // 填入字段 + if (!empty($result['OrderInquiry'])) { + if (!empty($result['OrderInquiry']['cancel_reason'])) { + $result['cancel_remarks'] = inquiryCancelReasonToPushString($result['OrderInquiry']['cancel_reason']); } $result['patient_name'] = $result['OrderInquiry']['patient_name']; @@ -182,36 +152,7 @@ class DoctorAccountService extends BaseService $result['inquiry_mode'] = $result['OrderInquiry']['inquiry_mode']; } - // 入账状态-服务包订单 - if (!empty($result['OrderServicePackage'])){ - if ($result['OrderServicePackage']['order_service_status'] == 3){ - $result['entry_status'] = 1;// 入账中 - }elseif ($result['OrderServicePackage']['order_service_status'] == 4){ - $result['entry_status'] = 2;// 入账成功 - }elseif ($result['OrderServicePackage']['order_service_status'] == 5){ - // 获取退款数据 - $params = array(); - $params['order_service_no'] = $result['OrderServicePackage']['order_service_no']; - $order_service_package_refunds = OrderServicePackageRefund::getList($params); - if (!empty($order_service_package_refunds)){ - $refund_total = 0; - foreach ($order_service_package_refunds as $order_service_package_refund){ - $refund_total = $refund_total + $order_service_package_refund['refund_total']; - } - - // 订单退款金额 - $result['refund_total'] = $refund_total; - - if (($result['OrderServicePackage']['payment_amount_total'] - $refund_total) > 0){ - $result['entry_status'] = 2;// 入账成功 - }else{ - $result['entry_status'] = 3;// 入账失败 - } - } - }else{ - $result['entry_status'] = 0;// 未知 - } - + if (!empty($result['OrderServicePackage'])) { $result['patient_name'] = $result['OrderServicePackage']['patient_name']; $result['patient_name_mask'] = $result['OrderServicePackage']['patient_name_mask']; $result['patient_sex'] = $result['OrderServicePackage']['patient_sex']; @@ -220,6 +161,116 @@ class DoctorAccountService extends BaseService $result['finish_time'] = $result['OrderServicePackage']['finish_time']; } + // 默认退款金额为0; + $result['refund_total'] = 0; + // 计算退款金额 + if ($result['refund_status'] == 3){ + // 问诊订单 + if (!empty($result['OrderInquiry'])) { + // 获取退款数据 + $params = array(); + $params['inquiry_no'] = $result['OrderInquiry']['inquiry_no']; + $order_inquiry_refunds = OrderInquiryRefund::getList($params); + if (!empty($order_inquiry_refunds)) { + $refund_total = 0; + foreach ($order_inquiry_refunds as $order_inquiry_refund) { + $refund_total = $refund_total + $order_inquiry_refund['refund_total']; + } + + // 订单退款金额 + $result['refund_total'] = $refund_total; + } + } + + // 服务包订单 + if (!empty($result['OrderServicePackage'])) { + // 获取退款数据 + $params = array(); + $params['order_service_no'] = $result['OrderServicePackage']['order_service_no']; + $order_service_package_refunds = OrderServicePackageRefund::getList($params); + if (!empty($order_service_package_refunds)) { + $refund_total = 0; + foreach ($order_service_package_refunds as $order_service_package_refund) { + $refund_total = $refund_total + $order_service_package_refund['refund_total']; + } + + // 订单退款金额 + $result['refund_total'] = $refund_total; + } + } + } + + // 计算预计收入 + if ($result['order_type'] == 1){ + $result['estimate_income'] = bcmul( + bcsub( + $result['OrderInquiry']['amount_total'], + $result['refund_total'], + 3 + ), + 0.75, + 2 + ); + } + + if ($result['order_type'] == 4 || $result['order_type'] == 5){ + // 获取订单详情数据 + $params = array(); + $params['order_service_no'] = $result['OrderServicePackage']['order_service_no']; + $order_service_package_detail = OrderServicePackageDetail::getOne($params); + if (!empty($order_service_package_detail)){ + + $result['estimate_income'] = bcmul( // 可提现费用 + bcsub( // 退款费用 + bcmul( // 问诊费用 + (string)$order_service_package_detail['service_count'], + (string)$order_service_package_detail['single_inquiry_price'], + 3 + ), + $result['refund_total'], + 3 + ), + 0.75, + 2 + ); + } + } + + // 处理入账状态 + if (!empty($result['OrderInquiry'])) { + if ($result['OrderInquiry']['inquiry_status'] == 4 || $result['OrderInquiry']['inquiry_status'] == 5) { + $result['entry_status'] = 1;// 入账中 + } elseif ($result['OrderInquiry']['inquiry_status'] == 6) { + $result['entry_status'] = 2;// 入账成功 + } elseif ($result['OrderInquiry']['inquiry_status'] == 7) { + $result['entry_status'] = 3;// 入账失败 + + if (($result['OrderInquiry']['amount_total'] - $result['refund_total']) > 0) { + $result['entry_status'] = 2;// 入账成功 + } else { + $result['entry_status'] = 3;// 入账失败 + } + } else { + $result['entry_status'] = 0;// 未知 + } + } + + if (!empty($result['OrderServicePackage'])) { + if ($result['OrderServicePackage']['order_service_status'] == 3) { + $result['entry_status'] = 1;// 入账中 + } elseif ($result['OrderServicePackage']['order_service_status'] == 4) { + $result['entry_status'] = 2;// 入账成功 + } elseif ($result['OrderServicePackage']['order_service_status'] == 5) { + if (($result['OrderServicePackage']['amount_total'] - $result['refund_total']) > 0) { + $result['entry_status'] = 2;// 入账成功 + } else { + $result['entry_status'] = 3;// 入账失败 + } + } else { + $result['entry_status'] = 0;// 未知 + } + } + unset($result['OrderInquiry']); unset($result['OrderServicePackage']); } @@ -291,32 +342,22 @@ class DoctorAccountService extends BaseService $amount_total = 0; // 获取医生账户总表 - - // 获取医生账户余额 - $InquiryService = new InquiryService(); - if ($user_doctor['is_platform_deep_cooperation'] == 0){ - $order_inquiry = $InquiryService->getDoctorCanWithdrawalInquiryOrder($user_info['client_user_id']); - }else{ - $order_inquiry = $InquiryService->getCooperationDoctorCanWithdrawalInquiryOrder($user_info['client_user_id']); + $params = array(); + $params['doctor_id'] = $user_info['client_user_id']; + $doctor_account = DoctorAccount::getOne($params); + if (!empty($doctor_account)) { + $amount_total = $doctor_account['balance_account']; } - if (!empty($order_inquiry)){ - foreach ($order_inquiry as $value){ - $amount_total = bcadd((string)$amount_total,(string)$value["amount_total"],2); - } - } - - $amount_total = bcmul((string)$amount_total,"0.75",2); - // 计算医生个人所得税 $income_tax = $this->computeIndividualIncomeTax($amount_total); - $withdrawal_amount = bcsub($amount_total,$income_tax,2); + $withdrawal_amount = bcsub($amount_total, $income_tax, 2); - $income_tax = bcmul($income_tax,1,2); + $income_tax = bcmul($income_tax, 1, 2); $result = array(); - $result['bank'] = $bank;//银行数据 + $result['bank'] = $bank; //银行数据 $result['amount_total'] = $amount_total; // 账户余额 $result['withdrawal_amount'] = $withdrawal_amount; // 提现金额 $result['income_tax'] = $income_tax; // 个人所得税 @@ -324,6 +365,63 @@ class DoctorAccountService extends BaseService return success($result); } +// /** +// * 获取可提现问诊订单列表 +// * @return array +// */ +// public function getDoctorWithdrawalOrderList(): array +// { +// $user_info = $this->request->getAttribute("userInfo") ?? []; +// +// $page = $this->request->input('page', 1); +// $per_page = $this->request->input('per_page', 10); +// +// // 获取医生信息 +// $params = array(); +// $params['doctor_id'] = $user_info['client_user_id']; +// $user_doctor = UserDoctor::getOne($params); +// if (empty($user_doctor)) { +// return fail(); +// } +// +// $fields = [ +// 'order_inquiry_id', +// 'inquiry_type', +// 'inquiry_mode', +// 'inquiry_status', +// 'inquiry_refund_status', +// 'inquiry_no', +// 'amount_total', +// 'payment_amount_total', +// 'reception_time', +// 'finish_time', +// 'patient_name', +// 'patient_sex', +// 'patient_age', +// ]; +// +// $params = array(); +// $params['doctor_id'] = $user_info['client_user_id']; +// $params['inquiry_refund_status'] = 0; // inquiry_refund_status:问诊订单退款状态(0:无退款 1:申请退款 2:退款中 3:退款成功 4:拒绝退款 5:退款关闭) +// +// $inquiry_status_params = [6]; // 问诊订单状态(1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消) +// +// $inquiry_type_not_params = []; +// if ($user_doctor['is_platform_deep_cooperation'] == 0) { +// $inquiry_type_not_params = [2, 4]; +// } +// +// $order_inquiry = OrderInquiry:: getDoctorOrderInquiryPage($params, $inquiry_status_params, $inquiry_type_not_params, $fields, $page, $per_page); +// +// if (!empty($order_inquiry['data'])) { +// foreach ($order_inquiry['data'] as &$item) { +// $item['expected_amount_total'] = floor($item['amount_total'] * 0.75 * 100) / 100; +// } +// } +// +// return success($order_inquiry); +// } + /** * 获取可提现问诊订单列表 * @return array @@ -343,44 +441,119 @@ class DoctorAccountService extends BaseService return fail(); } - // 获取医生当日接诊订单金额 - $fields = [ - 'order_inquiry_id', - 'inquiry_type', - 'inquiry_mode', - 'inquiry_status', - 'inquiry_refund_status', - 'inquiry_no', - 'amount_total', - 'payment_amount_total', - 'reception_time', - 'finish_time', - 'patient_name', - 'patient_sex', - 'patient_age', - ]; - $params = array(); $params['doctor_id'] = $user_info['client_user_id']; - $params['inquiry_refund_status'] = 0; // inquiry_refund_status:问诊订单退款状态(0:无退款 1:申请退款 2:退款中 3:退款成功 4:拒绝退款 5:退款关闭) + $params['is_withdrawal'] = 0; - $inquiry_status_params = [6]; // 问诊订单状态(1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消) + $results = Order:: getDoctorWithdrawalOrderList($params, $user_doctor['is_platform_deep_cooperation'], ['*'], $page, $per_page); + if (!empty($results['data'])) { + foreach ($results['data'] as &$result) { + // 填入字段 + if (!empty($result['OrderInquiry'])) { + if (!empty($result['OrderInquiry']['cancel_reason'])) { + $result['cancel_remarks'] = inquiryCancelReasonToPushString($result['OrderInquiry']['cancel_reason']); + } - if ($user_doctor['is_platform_deep_cooperation'] == 0){ - $order_inquiry = OrderInquiry:: getDoctorOrderInquiryPage($params,$inquiry_status_params, $fields,$page,$per_page); - }else{ - $inquiry_type_not_params = [2,4]; - $order_inquiry = OrderInquiry:: getCooperationDoctorOrderInquiryPage($params,$inquiry_status_params,$inquiry_type_not_params, $fields,$page,$per_page); - } + $result['patient_name'] = $result['OrderInquiry']['patient_name']; + $result['patient_name_mask'] = $result['OrderInquiry']['patient_name_mask']; + $result['patient_sex'] = $result['OrderInquiry']['patient_sex']; + $result['patient_age'] = $result['OrderInquiry']['patient_age']; + $result['start_time'] = $result['OrderInquiry']['reception_time']; + $result['finish_time'] = $result['OrderInquiry']['finish_time']; + $result['inquiry_type'] = $result['OrderInquiry']['inquiry_type']; + $result['inquiry_mode'] = $result['OrderInquiry']['inquiry_mode']; + } - if (!empty($order_inquiry['data'])) { - foreach ($order_inquiry['data'] as &$item) { - $item['expected_amount_total'] = floor($item['amount_total'] * 0.75 * 100) / 100; + if (!empty($result['OrderServicePackage'])) { + $result['patient_name'] = $result['OrderServicePackage']['patient_name']; + $result['patient_name_mask'] = $result['OrderServicePackage']['patient_name_mask']; + $result['patient_sex'] = $result['OrderServicePackage']['patient_sex']; + $result['patient_age'] = $result['OrderServicePackage']['patient_age']; + $result['start_time'] = $result['OrderServicePackage']['start_time']; + $result['finish_time'] = $result['OrderServicePackage']['finish_time']; + } + + // 默认退款金额为0; + $result['refund_total'] = 0; + // 计算退款 + if ($result['refund_status'] == 3){ + // 问诊订单 + if (!empty($result['OrderInquiry'])) { + // 获取退款数据 + $params = array(); + $params['inquiry_no'] = $result['OrderInquiry']['inquiry_no']; + $order_inquiry_refunds = OrderInquiryRefund::getList($params); + if (!empty($order_inquiry_refunds)) { + $refund_total = 0; + foreach ($order_inquiry_refunds as $order_inquiry_refund) { + $refund_total = $refund_total + $order_inquiry_refund['refund_total']; + } + + // 订单退款金额 + $result['refund_total'] = $refund_total; + } + } + + // 服务包订单 + if (!empty($result['OrderServicePackage'])) { + // 获取退款数据 + $params = array(); + $params['order_service_no'] = $result['OrderServicePackage']['order_service_no']; + $order_service_package_refunds = OrderServicePackageRefund::getList($params); + if (!empty($order_service_package_refunds)) { + $refund_total = 0; + foreach ($order_service_package_refunds as $order_service_package_refund) { + $refund_total = $refund_total + $order_service_package_refund['refund_total']; + } + + // 订单退款金额 + $result['refund_total'] = $refund_total; + } + } + } + + // 计算可提现金额 + if ($result['order_type'] == 1){ + $result['expected_amount_total'] = bcmul( + bcsub( + $result['OrderInquiry']['amount_total'], + $result['refund_total'], + 3 + ), + 0.75, + 2 + ); + } + + if ($result['order_type'] == 4 || $result['order_type'] == 5){ + // 获取订单详情数据 + $params = array(); + $params['order_service_no'] = $result['OrderServicePackage']['order_service_no']; + $order_service_package_detail = OrderServicePackageDetail::getOne($params); + if (!empty($order_service_package_detail)){ + $result['expected_amount_total'] = bcmul( // 可提现费用 + bcsub( // 退款费用 + bcmul( // 问诊费用 + (string)$order_service_package_detail['service_count'], + (string)$order_service_package_detail['single_inquiry_price'], + 3 + ), + $result['refund_total'], + 3 + ), + 0.75, + 2 + ); + } + } + + unset($result['OrderInquiry']); + unset($result['OrderServicePackage']); } } - return success($order_inquiry); + return success($results); } /** @@ -392,21 +565,21 @@ class DoctorAccountService extends BaseService $user_info = $this->request->getAttribute("userInfo") ?? []; $year = $this->request->input('year'); - $page = $this->request->input('page',1); - $per_page = $this->request->input('per_page',10); + $page = $this->request->input('page', 1); + $per_page = $this->request->input('per_page', 10); // 获取当年开始时间 - $start_date = $year.'-1-1 00:00:00'; + $start_date = $year . '-1-1 00:00:00'; // 获取当年结束时间 - $end_date = $year.'-12-31 23:59:59'; + $end_date = $year . '-12-31 23:59:59'; $created_at_params = [$start_date, $end_date]; $params = array(); $params['doctor_id'] = $user_info['client_user_id']; - $doctor_withdrawal = DoctorWithdrawal::getDatePage($params,$created_at_params,['*'],$page,$per_page); - if (empty($doctor_withdrawal['data'])){ + $doctor_withdrawal = DoctorWithdrawal::getDatePage($params, $created_at_params, ['*'], $page, $per_page); + if (empty($doctor_withdrawal['data'])) { return success(); } @@ -422,20 +595,20 @@ class DoctorAccountService extends BaseService { $user_info = $this->request->getAttribute("userInfo") ?? []; - $order_inquiry_id = $this->request->input('order_inquiry_id'); + $order_no = $this->request->input('order_no'); $withdrawal_amount_total = $this->request->input('withdrawal_amount_total'); $bank_card_id = $this->request->input('bank_card_id'); - $order_inquiry_id = explode(',',$order_inquiry_id); - if (empty($order_inquiry_id)){ + $order_nos = explode(',', $order_no); + if (empty($order_nos)) { return fail(); } $app_env = config('app_env'); - if ($app_env != "dev"){ + if ($app_env != "dev") { // 正式环境高于300元才可以提现 - if ($withdrawal_amount_total < 300){ - return fail(HttpEnumCode::HTTP_ERROR,"提现金额小于300元"); + if ($withdrawal_amount_total < 300) { + return fail(HttpEnumCode::HTTP_ERROR, "提现金额小于300元"); } } @@ -443,46 +616,137 @@ class DoctorAccountService extends BaseService $params = array(); $params['doctor_id'] = $user_info['client_user_id']; - $start_time = date('Y-m-01',time()); - $end_time = date('Y-m-t 24:00:00',time()); - $created_at = [$start_time,$end_time]; + $start_time = date('Y-m-01', time()); + $end_time = date('Y-m-t 24:00:00', time()); + $created_at = [$start_time, $end_time]; - $doctor_withdrawal = DoctorWithdrawal::getOneLatestTime($params,$created_at,['*'],); - if (!empty($doctor_withdrawal)){ + $doctor_withdrawal = DoctorWithdrawal::getOneLatestTime($params, $created_at, ['*'],); + if (!empty($doctor_withdrawal)) { return fail("每月只允许提现一次"); } $amount_total = 0; - foreach ($order_inquiry_id as $value){ + foreach ($order_nos as $order_no) { $params = array(); - $params['order_inquiry_id'] = $value; + $params['order_no'] = $order_no; $params['doctor_id'] = $user_info['client_user_id']; - $order_inquiry = OrderInquiry::getOne($params); - if (empty($order_inquiry)){ - return fail(HttpEnumCode::HTTP_ERROR,"存在不可提现订单"); - } - - // 验证订单状态 - if ($order_inquiry['inquiry_status'] != 6){ - return fail(HttpEnumCode::HTTP_ERROR,"提现失败"); + $order = Order::getOne($params); + if (empty($order)) { + return fail(HttpEnumCode::HTTP_ERROR, "存在不可提现订单"); } // 验证订单提现状态 - if ($order_inquiry['is_withdrawal'] != 0){ - return fail(HttpEnumCode::HTTP_ERROR,"存在已提现订单"); + if ($order['is_withdrawal'] != 0) { + return fail(HttpEnumCode::HTTP_ERROR, "存在已提现订单"); } - // 验证订单支付状态 - if ($order_inquiry['inquiry_pay_status'] != 2){ - return fail(HttpEnumCode::HTTP_ERROR,"存在未支付订单"); + // 问诊订单 + if ($order['order_type'] == 1){ + $params = array(); + $params['order_id'] = $order['order_id']; + $params['doctor_id'] = $user_info['client_user_id']; + $order_inquiry = OrderInquiry::getOne($params); + if (empty($order_inquiry)) { + return fail(HttpEnumCode::HTTP_ERROR, "存在不可提现订单"); + } + + // 验证订单状态 + if ($order_inquiry['inquiry_status'] != 6) { + return fail(HttpEnumCode::HTTP_ERROR, "提现失败"); + } + + // 验证订单提现状态 + if ($order_inquiry['is_withdrawal'] != 0) { + return fail(HttpEnumCode::HTTP_ERROR, "存在已提现订单"); + } + + // 验证订单支付状态 + if ($order_inquiry['inquiry_pay_status'] != 2) { + return fail(HttpEnumCode::HTTP_ERROR, "存在未支付订单"); + } + + // 订单退款金额 + $refund_total = 0; + + $params = array(); + $params['inquiry_no'] = $order_inquiry['inquiry_no']; + $order_inquiry_refunds = OrderInquiryRefund::getList($params); + if (!empty($order_inquiry_refunds)) { + foreach ($order_inquiry_refunds as $order_inquiry_refund) { + $refund_total = $refund_total + $order_inquiry_refund['refund_total']; + } + } + + $amount_total = bcadd( + $amount_total, + bcsub( + $order_inquiry['amount_total'], + $refund_total, + 3 + ), + 3 + ); } - // 计算订单总金额 - $amount_total = bcadd($amount_total,$order_inquiry["amount_total"],2); + // 服务包订单 + if ($order['order_type'] == 4 || $order['order_type'] == 5){ + $params = array(); + $params['order_id'] = $order['order_id']; + $params['doctor_id'] = $user_info['client_user_id']; + $order_service_package = OrderServicePackage::getOne($params); + if (empty($order_service_package)) { + return fail(HttpEnumCode::HTTP_ERROR, "存在不可提现订单"); + } + + // 验证订单状态 + if ($order_service_package['order_service_status'] != 4 || $order_service_package['order_service_status'] != 5) { + return fail(HttpEnumCode::HTTP_ERROR, "提现失败"); + } + + // 验证订单支付状态 + if ($order_service_package['pay_status'] != 2) { + return fail(HttpEnumCode::HTTP_ERROR, "存在未支付订单"); + } + + // 获取退款数据 + $refund_total = 0; + + $params = array(); + $params['order_service_no'] = $order_service_package['order_service_no']; + $order_service_package_refunds = OrderServicePackageRefund::getList($params); + if (!empty($order_service_package_refunds)) { + foreach ($order_service_package_refunds as $order_service_package_refund) { + $refund_total = $refund_total + $order_service_package_refund['refund_total']; + } + } + + // 获取订单详情数据 + $params = array(); + $params['order_service_no'] = $order_service_package['order_service_no']; + $order_service_package_detail = OrderServicePackageDetail::getOne($params); + if (empty($order_service_package_detail)){ + return fail(HttpEnumCode::HTTP_ERROR, "提现失败"); + } + + // 计算本次问诊服务包问诊金额 + $amount_total = bcadd( + (string)$amount_total, + bcsub( + bcmul( + (string)$order_service_package_detail['service_count'], + (string)$order_service_package_detail['single_inquiry_price'], + 3 + ), + $refund_total, + 3 + ), + 3 + ); + } } // 提现金额 - $amount_total = $amount_total * 0.75; + $amount_total = bcmul((string)$amount_total,0.75,2); // 计算医生个人所得税 $income_tax = $this->computeIndividualIncomeTax($amount_total); @@ -490,28 +754,28 @@ class DoctorAccountService extends BaseService // 实际提现金额 $withdrawal_amount = $amount_total - $income_tax; - if ($withdrawal_amount > 0){ + if ($withdrawal_amount > 0) { $withdrawal_amount = floor($withdrawal_amount * 100) / 100; } - if ($withdrawal_amount_total != $withdrawal_amount){ - return fail(HttpEnumCode::SERVER_ERROR,"金额不符合"); + if ($withdrawal_amount_total != $withdrawal_amount) { + return fail(HttpEnumCode::SERVER_ERROR, "金额不符合"); } // 检测提现银行卡 $params = array(); $params['bank_card_id'] = $bank_card_id; $doctor_bank_card = DoctorBankCard::getOne($params); - if (empty($doctor_bank_card)){ - return fail(HttpEnumCode::HTTP_ERROR,"银行卡错误"); + if (empty($doctor_bank_card)) { + return fail(HttpEnumCode::HTTP_ERROR, "银行卡错误"); } // 获取银行数据 $params = array(); $params['bank_id'] = $doctor_bank_card['bank_id']; $basic_bank = BasicBank::getOne($params); - if (empty($basic_bank)){ - return fail(HttpEnumCode::HTTP_ERROR,"银行卡错误"); + if (empty($basic_bank)) { + return fail(HttpEnumCode::HTTP_ERROR, "银行卡错误"); } Db::beginTransaction(); @@ -522,16 +786,16 @@ class DoctorAccountService extends BaseService $data['account_name'] = $basic_bank['bank_name']; $data['bank_card_code'] = $doctor_bank_card['bank_card_code']; $data['bank_card_code_four'] = substr($doctor_bank_card['bank_card_code'], -4); - if ($amount_total > 0){ - $data['applied_withdrawal_amount'] = floor($amount_total * 100) / 100; // 提现金额 + if ($amount_total > 0) { + $data['applied_withdrawal_amount'] = floor($amount_total * 100) / 100; // 提现金额 } $data['actual_withdrawal_amount'] = $withdrawal_amount; // 实际提现金额 - if ($income_tax > 0){ - $data['income_tax'] = floor($income_tax * 100) / 100; // 提现所得税金额 + if ($income_tax > 0) { + $data['income_tax'] = floor($income_tax * 100) / 100; // 提现所得税金额 } $data['examine_status'] = 1; // 审核状态(1:审核中 2:审核通过 3:审核未通过) $doctor_withdrawal = DoctorWithdrawal::addDoctorWithdrawal($data); - if (empty($doctor_withdrawal)){ + if (empty($doctor_withdrawal)) { Db::rollBack(); return fail(HttpEnumCode::SERVER_ERROR); } @@ -548,53 +812,71 @@ class DoctorAccountService extends BaseService $data['county_id'] = $doctor_bank_card['county_id']; $data['county'] = $doctor_bank_card['county']; $doctor_withdrawal_bank = DoctorWithdrawalBank::addDoctorWithdrawalBank($data); - if (empty($doctor_withdrawal_bank)){ + if (empty($doctor_withdrawal_bank)) { Db::rollBack(); return fail(HttpEnumCode::SERVER_ERROR); } - foreach ($order_inquiry_id as $value){ + foreach ($order_nos as $order_no) { + $params = array(); + $params['order_no'] = $order_no; + $params['doctor_id'] = $user_info['client_user_id']; + $order = Order::getOne($params); + if (empty($order)) { + Db::rollBack(); + return fail(HttpEnumCode::HTTP_ERROR, "存在不可提现订单"); + } + // 新增医生提现-关联订单表 $data = array(); $data['withdrawal_id'] = $doctor_withdrawal['withdrawal_id']; $data['doctor_id'] = $user_info['client_user_id']; - $data['order_inquiry_id'] = $value; + $data['order_id'] = $order['order_id']; $doctor_withdrawal_order = DoctorWithdrawalOrder::addDoctorWithdrawalOrder($data); - if (empty($doctor_withdrawal_order)){ + if (empty($doctor_withdrawal_order)) { Db::rollBack(); return fail(HttpEnumCode::SERVER_ERROR); } - // 修改问诊订单提现状态 + // 修改订单提现状态 $params = array(); - $params['order_inquiry_id'] = $value; + $params['order_no'] = $order_no; $data = array(); $data['is_withdrawal'] = 2; - $data['withdrawal_time'] = date('Y-m-d H:i:s',time()); - OrderInquiry::edit($params,$data); + $data['withdrawal_time'] = date('Y-m-d H:i:s', time()); + Order::edit($params,$data); + + // 修改问诊订单提现状态 + $params = array(); + $params['order_id'] = $order['order_id'];; + + $data = array(); + $data['is_withdrawal'] = 2; + $data['withdrawal_time'] = date('Y-m-d H:i:s', time()); + OrderInquiry::edit($params, $data); } // 账户表锁定 $params = array(); $params['doctor_id'] = $user_info['client_user_id']; // 账户余额 - DoctorAccount::dec($params,'balance_account',$amount_total); + DoctorAccount::dec($params, 'balance_account', $amount_total); // 提现金额 - DoctorAccount::inc($params,'applied_withdrawal_amount',$amount_total); + DoctorAccount::inc($params, 'applied_withdrawal_amount', $amount_total); // 实际提现金额 - DoctorAccount::inc($params,'actual_withdrawal_amount',$withdrawal_amount); + DoctorAccount::inc($params, 'actual_withdrawal_amount', $withdrawal_amount); // 所得税金额 - DoctorAccount::inc($params,'income_tax',$income_tax); + DoctorAccount::inc($params, 'income_tax', $income_tax); Db::commit(); return success(); } catch (\Exception $e) { Db::rollBack(); - return fail(HttpEnumCode::SERVER_ERROR,$e->getMessage()); + return fail(HttpEnumCode::SERVER_ERROR, $e->getMessage()); } } @@ -654,7 +936,7 @@ class DoctorAccountService extends BaseService } // 实际纳税金额 - if ($income > 4000){ + if ($income > 4000) { $income = $income * 0.8; } diff --git a/config/routes.php b/config/routes.php index 75ca065..165e953 100644 --- a/config/routes.php +++ b/config/routes.php @@ -892,7 +892,7 @@ Router::addGroup('/case', function () { // 测试使用 Router::addGroup('/test', function () { - Router::get('', [TestController::class, 'test_17']); + Router::get('', [TestController::class, 'test_16']); // // Router::get('/uninquiry', [TestController::class, 'uninquiry']); diff --git a/extend/Ca/Ca.php b/extend/Ca/Ca.php index a8dda30..e621b5c 100644 --- a/extend/Ca/Ca.php +++ b/extend/Ca/Ca.php @@ -359,7 +359,6 @@ abstract class Ca $arg = array_merge($arg, $option); - dump($arg); $response = $this->client->post($path, $arg); if ($response->getStatusCode() != '200') {