diff --git a/app/Model/DoctorAccountDay.php b/app/Model/DoctorAccountDay.php index c658747..a91d283 100644 --- a/app/Model/DoctorAccountDay.php +++ b/app/Model/DoctorAccountDay.php @@ -15,7 +15,7 @@ use Hyperf\Snowflake\Concern\Snowflake; * @property int $month 月(12) * @property int $day 日(01) * @property string $date 日期(2022-01-01) - * @property string $total_amount_day 订单总金额-日 + * @property string $total_amount 订单总金额-日 * @property \Carbon\Carbon $created_at 创建时间 * @property \Carbon\Carbon $updated_at 修改时间 */ @@ -31,7 +31,7 @@ class DoctorAccountDay extends Model /** * The attributes that are mass assignable. */ - protected array $fillable = ['account_detail_id', 'doctor_id', 'year', 'month', 'day', 'date', 'total_amount_day', 'created_at', 'updated_at']; + protected array $fillable = ['account_detail_id', 'doctor_id', 'year', 'month', 'day', 'date', 'total_amount', 'created_at', 'updated_at']; /** * The attributes that should be cast to native types. @@ -69,6 +69,6 @@ class DoctorAccountDay extends Model */ public static function getDoctorSumTotalAmount(array $params): mixed { - return self::where($params)->sum("total_amount_day"); + return self::where($params)->sum("total_amount"); } } diff --git a/app/Model/DoctorAccountMonth.php b/app/Model/DoctorAccountMonth.php deleted file mode 100644 index b16a228..0000000 --- a/app/Model/DoctorAccountMonth.php +++ /dev/null @@ -1,64 +0,0 @@ - 'integer', 'doctor_id' => 'integer', 'year' => 'integer', 'month' => 'integer', 'created_at' => 'datetime', 'updated_at' => 'datetime']; - - protected string $primaryKey = "account_month_id"; - - /** - * 获取信息-单条 - * @param array $params - * @param array $fields - * @return object|null - */ - public static function getOne(array $params, array $fields = ['*']): object|null - { - return self::where($params)->first($fields); - } - - /** - * 获取信息-多条 - * @param array $params - * @param array $fields - * @return object|null - */ - public static function getList(array $params, array $fields = ['*']): object|null - { - return self::where($params)->get($fields); - } -} diff --git a/app/Model/DoctorWithdrawal.php b/app/Model/DoctorWithdrawal.php new file mode 100644 index 0000000..7c13b17 --- /dev/null +++ b/app/Model/DoctorWithdrawal.php @@ -0,0 +1,69 @@ + 'integer', 'doctor_id' => 'integer', 'bank_card_id' => 'integer', 'examine_status' => 'integer', 'created_at' => 'datetime', 'updated_at' => 'datetime']; + + protected string $primaryKey = "withdrawal_id"; + + /** + * 获取信息-单条 + * @param array $params + * @param array $fields + * @return object|null + */ + public static function getOne(array $params, array $fields = ['*']): object|null + { + return self::where($params)->first($fields); + } + + /** + * 获取信息-多条 + * @param array $params + * @param array $fields + * @return object|null + */ + public static function getList(array $params, array $fields = ['*']): object|null + { + return self::where($params)->get($fields); + } +} diff --git a/app/Model/OrderInquiry.php b/app/Model/OrderInquiry.php index 9aa31c3..ee19464 100644 --- a/app/Model/OrderInquiry.php +++ b/app/Model/OrderInquiry.php @@ -107,10 +107,7 @@ class OrderInquiry extends Model /** * 获取医生接诊订单列表 - * 已结束-已取消 - * inquiry_status:问诊订单状态(1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消) - * inquiry_refund_status:问诊订单退款状态(0:无退款 1:申请退款 2:退款中 3:退款成功 4:拒绝退款 5:退款关闭) - * cancel_reason:取消订单原因(0:默认 1:医生未接诊 2:主动取消 3:无可分配医生 4:客服取消 5:支付超时) + * 已结束 * @param array $params * @param array $reception_time 接诊时间区间 ['2023-01-02','2023-01-03'] * @param array $fields @@ -121,12 +118,8 @@ class OrderInquiry extends Model public static function getDoctorAccountInfoPage(array $params, array $reception_time,array $fields = ["*"], int $page = null, ?int $per_page = 10): mixed { $raw = self::where($params) - ->whereIn('inquiry_status',[6,7]) - ->whereIn('inquiry_refund_status',[0,3]) - ->whereIn('cancel_reason',[0,4]) ->whereBetween('finish_time',$reception_time) ->orderBy('finish_time') - ->orderBy('cancel_time') ->paginate($per_page, $fields, "page", $page); $data = array(); diff --git a/app/Services/DoctorAccountService.php b/app/Services/DoctorAccountService.php index 484c016..46f6fa3 100644 --- a/app/Services/DoctorAccountService.php +++ b/app/Services/DoctorAccountService.php @@ -5,8 +5,8 @@ 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\DoctorWithdrawal; use App\Model\OrderInquiry; use App\Model\UserDoctor; @@ -31,31 +31,24 @@ class DoctorAccountService extends BaseService $balance_account = $balance_account * 0.75; } - // 月余额-已结束订单 - $amount_total_month = 0; + // 获取医生月度余额 + $amount_total_month = $this->getDoctorMonthAmountTotal($user_info['client_user_id'],$date);; - // 月已提现金额 - $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)){ - 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; + $doctor_withdrawal = DoctorWithdrawal::getOne($params); + if (empty($doctor_withdrawal)){ + $withdrawal_amount_month = 0; + }else{ + $withdrawal_amount_month = $doctor_withdrawal['actual_withdrawal_amount']; } // 获取医生每日账单数据 $bill = []; $fields = [ - 'total_amount_day', + 'total_amount', 'month', 'day', ]; @@ -68,7 +61,7 @@ class DoctorAccountService extends BaseService if (!empty($doctor_account_days)){ foreach ($doctor_account_days as $doctor_account_day){ $data = array(); - $data['total_amount_day'] = $doctor_account_day['total_amount_day'] * 0.75; + $data['total_amount'] = $doctor_account_day['total_amount'] * 0.75; $data['month'] = $doctor_account_day['month']; $data['day'] = $doctor_account_day['day']; $bill[] = $data; @@ -123,12 +116,13 @@ class DoctorAccountService extends BaseService $params = array(); $params['doctor_id'] = $user_info['client_user_id']; -// $params['cancel_reason'] = ; + $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:退款关闭) $order_inquiry = OrderInquiry::getDoctorAccountInfoPage($params,$reception_time,$fields); if (!empty($order_inquiry['data'])){ foreach ($order_inquiry['data'] as &$item){ - $item['estimate_income'] = $item['amount_total'] * 0.75; + $item['amount_total'] = $item['amount_total'] * 0.75; } } @@ -212,28 +206,32 @@ class DoctorAccountService extends BaseService 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; -// } + /** + * 获取某月医生账户已结束订单金额 + * @param string $doctor_id 医生id + * @param string $date 日期 Ymd形式 + * @return float|int|mixed|string + */ + public function getDoctorMonthAmountTotal(string $doctor_id, string $date): mixed + { + $params = array(); + $params['doctor_id'] = $doctor_id; + $params['year'] = date('Y',strtotime($date)); + $params['month'] = date('m',strtotime($date)); + $total_amount = DoctorAccountDay::getDoctorSumTotalAmount($params); + if (empty($total_amount)){ + $total_amount = 0; + } + return $total_amount; + } + + // 获取医生某月提现数据 + // 审核通过时间为准 + public function getDoctorMonthWithdrawalData(){ + + } // 计算个人所得税 protected function computeIndividualIncomeTax(){