新增提现模型,修正我的账户
This commit is contained in:
parent
956c9c6474
commit
695cb4f1a2
@ -15,7 +15,7 @@ use Hyperf\Snowflake\Concern\Snowflake;
|
|||||||
* @property int $month 月(12)
|
* @property int $month 月(12)
|
||||||
* @property int $day 日(01)
|
* @property int $day 日(01)
|
||||||
* @property string $date 日期(2022-01-01)
|
* @property string $date 日期(2022-01-01)
|
||||||
* @property string $total_amount_day 订单总金额-日
|
* @property string $total_amount 订单总金额-日
|
||||||
* @property \Carbon\Carbon $created_at 创建时间
|
* @property \Carbon\Carbon $created_at 创建时间
|
||||||
* @property \Carbon\Carbon $updated_at 修改时间
|
* @property \Carbon\Carbon $updated_at 修改时间
|
||||||
*/
|
*/
|
||||||
@ -31,7 +31,7 @@ class DoctorAccountDay extends Model
|
|||||||
/**
|
/**
|
||||||
* The attributes that are mass assignable.
|
* 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.
|
* The attributes that should be cast to native types.
|
||||||
@ -69,6 +69,6 @@ class DoctorAccountDay extends Model
|
|||||||
*/
|
*/
|
||||||
public static function getDoctorSumTotalAmount(array $params): mixed
|
public static function getDoctorSumTotalAmount(array $params): mixed
|
||||||
{
|
{
|
||||||
return self::where($params)->sum("total_amount_day");
|
return self::where($params)->sum("total_amount");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,64 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace App\Model;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
use Hyperf\Snowflake\Concern\Snowflake;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @property int $account_month_id 主键id
|
|
||||||
* @property int $doctor_id 医生id
|
|
||||||
* @property int $year 年(2023)
|
|
||||||
* @property int $month 月(12)
|
|
||||||
* @property string $total_amount 总金额
|
|
||||||
* @property string $withdrawal_amount 已提现金额
|
|
||||||
* @property string $income_tax 已提现所得税
|
|
||||||
* @property \Carbon\Carbon $created_at 创建时间
|
|
||||||
* @property \Carbon\Carbon $updated_at 修改时间
|
|
||||||
*/
|
|
||||||
class DoctorAccountMonth extends Model
|
|
||||||
{
|
|
||||||
use Snowflake;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The table associated with the model.
|
|
||||||
*/
|
|
||||||
protected ?string $table = 'doctor_account_month';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The attributes that are mass assignable.
|
|
||||||
*/
|
|
||||||
protected array $fillable = ['account_month_id', 'doctor_id', 'year', 'month', 'total_amount', 'withdrawal_amount', 'income_tax', 'created_at', 'updated_at'];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The attributes that should be cast to native types.
|
|
||||||
*/
|
|
||||||
protected array $casts = ['account_month_id' => '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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
69
app/Model/DoctorWithdrawal.php
Normal file
69
app/Model/DoctorWithdrawal.php
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace App\Model;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
use Hyperf\Snowflake\Concern\Snowflake;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @property int $withdrawal_id 主键id
|
||||||
|
* @property int $doctor_id 医生id
|
||||||
|
* @property int $bank_card_id 医生银行卡id
|
||||||
|
* @property string $account_name 银行卡姓名
|
||||||
|
* @property string $bank_card_code 银行卡号
|
||||||
|
* @property string $bank_card_code_four 银行卡号(后四位)
|
||||||
|
* @property string $applied_withdrawal_amount 提现金额
|
||||||
|
* @property string $actual_withdrawal_amount 实际提现金额
|
||||||
|
* @property string $income_tax 提现所得税金额
|
||||||
|
* @property int $examine_status 审核状态(1:审核中 2:审核通过 3:审核未通过)
|
||||||
|
* @property string $examine_fail_reason 审核失败原因
|
||||||
|
* @property string $examine_time 审核日期
|
||||||
|
* @property \Carbon\Carbon $created_at 创建时间
|
||||||
|
* @property \Carbon\Carbon $updated_at 修改时间
|
||||||
|
*/
|
||||||
|
class DoctorWithdrawal extends Model
|
||||||
|
{
|
||||||
|
use Snowflake;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The table associated with the model.
|
||||||
|
*/
|
||||||
|
protected ?string $table = 'doctor_withdrawal';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The attributes that are mass assignable.
|
||||||
|
*/
|
||||||
|
protected array $fillable = ['withdrawal_id', 'doctor_id', 'bank_card_id', 'account_name', 'bank_card_code', 'bank_card_code_four', 'applied_withdrawal_amount', 'actual_withdrawal_amount', 'income_tax', 'examine_status', 'examine_fail_reason', 'examine_time', 'created_at', 'updated_at'];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The attributes that should be cast to native types.
|
||||||
|
*/
|
||||||
|
protected array $casts = ['withdrawal_id' => '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);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -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 $params
|
||||||
* @param array $reception_time 接诊时间区间 ['2023-01-02','2023-01-03']
|
* @param array $reception_time 接诊时间区间 ['2023-01-02','2023-01-03']
|
||||||
* @param array $fields
|
* @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
|
public static function getDoctorAccountInfoPage(array $params, array $reception_time,array $fields = ["*"], int $page = null, ?int $per_page = 10): mixed
|
||||||
{
|
{
|
||||||
$raw = self::where($params)
|
$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)
|
->whereBetween('finish_time',$reception_time)
|
||||||
->orderBy('finish_time')
|
->orderBy('finish_time')
|
||||||
->orderBy('cancel_time')
|
|
||||||
->paginate($per_page, $fields, "page", $page);
|
->paginate($per_page, $fields, "page", $page);
|
||||||
|
|
||||||
$data = array();
|
$data = array();
|
||||||
|
|||||||
@ -5,8 +5,8 @@ namespace App\Services;
|
|||||||
use App\Constants\HttpEnumCode;
|
use App\Constants\HttpEnumCode;
|
||||||
use App\Model\DoctorAccount;
|
use App\Model\DoctorAccount;
|
||||||
use App\Model\DoctorAccountDay;
|
use App\Model\DoctorAccountDay;
|
||||||
use App\Model\DoctorAccountMonth;
|
|
||||||
use App\Model\DoctorBankCard;
|
use App\Model\DoctorBankCard;
|
||||||
|
use App\Model\DoctorWithdrawal;
|
||||||
use App\Model\OrderInquiry;
|
use App\Model\OrderInquiry;
|
||||||
use App\Model\UserDoctor;
|
use App\Model\UserDoctor;
|
||||||
|
|
||||||
@ -31,31 +31,24 @@ class DoctorAccountService extends BaseService
|
|||||||
$balance_account = $balance_account * 0.75;
|
$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 = array();
|
||||||
$params['doctor_id'] = $user_info['client_user_id'];
|
$params['doctor_id'] = $user_info['client_user_id'];
|
||||||
$params['year'] = date('Y',strtotime($date));
|
$doctor_withdrawal = DoctorWithdrawal::getOne($params);
|
||||||
$params['month'] = date('m',strtotime($date));
|
if (empty($doctor_withdrawal)){
|
||||||
$doctor_account_month = DoctorAccountMonth::getOne($params);
|
$withdrawal_amount_month = 0;
|
||||||
if (!empty($doctor_account_month)){
|
}else{
|
||||||
if (!empty($doctor_account_month['total_amount'])){
|
$withdrawal_amount_month = $doctor_withdrawal['actual_withdrawal_amount'];
|
||||||
$amount_total_month = $doctor_account_month['total_amount'] * 0.75;
|
|
||||||
}
|
|
||||||
|
|
||||||
$withdrawal_amount_month = $doctor_account_month['withdrawal_amount'] ?: 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取医生每日账单数据
|
// 获取医生每日账单数据
|
||||||
$bill = [];
|
$bill = [];
|
||||||
|
|
||||||
$fields = [
|
$fields = [
|
||||||
'total_amount_day',
|
'total_amount',
|
||||||
'month',
|
'month',
|
||||||
'day',
|
'day',
|
||||||
];
|
];
|
||||||
@ -68,7 +61,7 @@ class DoctorAccountService extends BaseService
|
|||||||
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_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['month'] = $doctor_account_day['month'];
|
||||||
$data['day'] = $doctor_account_day['day'];
|
$data['day'] = $doctor_account_day['day'];
|
||||||
$bill[] = $data;
|
$bill[] = $data;
|
||||||
@ -123,12 +116,13 @@ 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['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);
|
$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['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;
|
return $balance_account;
|
||||||
}
|
}
|
||||||
|
|
||||||
// /**
|
/**
|
||||||
// * 获取医生账户某日预计收益
|
* 获取某月医生账户已结束订单金额
|
||||||
// * @param string $doctor_id 医生id
|
* @param string $doctor_id 医生id
|
||||||
// * @param string $day 日期 Ymd形式
|
* @param string $date 日期 Ymd形式
|
||||||
// * @return float|int|mixed|string
|
* @return float|int|mixed|string
|
||||||
// */
|
*/
|
||||||
// public function getDoctorDayAmountTotal(string $doctor_id, string $day): mixed
|
public function getDoctorMonthAmountTotal(string $doctor_id, string $date): mixed
|
||||||
// {
|
{
|
||||||
// $params = array();
|
$params = array();
|
||||||
// $params['doctor_id'] = $doctor_id;
|
$params['doctor_id'] = $doctor_id;
|
||||||
// $params['year'] = date('Y',strtotime($day));
|
$params['year'] = date('Y',strtotime($date));
|
||||||
// $params['month'] = date('m',strtotime($day));
|
$params['month'] = date('m',strtotime($date));
|
||||||
// $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;
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
$total_amount = DoctorAccountDay::getDoctorSumTotalAmount($params);
|
||||||
|
if (empty($total_amount)){
|
||||||
|
$total_amount = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $total_amount;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取医生某月提现数据
|
||||||
|
// 审核通过时间为准
|
||||||
|
public function getDoctorMonthWithdrawalData(){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// 计算个人所得税
|
// 计算个人所得税
|
||||||
protected function computeIndividualIncomeTax(){
|
protected function computeIndividualIncomeTax(){
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user