weizong song 3 years ago
parent 5633aa3631
commit 43f880d754

@ -3,6 +3,7 @@
namespace App; namespace App;
use App\Models\Balance; use App\Models\Balance;
use App\Models\Orders;
use App\Models\Patient; use App\Models\Patient;
use App\Models\Recharge; use App\Models\Recharge;
use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Foundation\Auth\User as Authenticatable;
@ -53,7 +54,7 @@ class Customer extends Authenticatable implements JWTSubject
{ {
use Notifiable; use Notifiable;
CONST GUARD_NAME = "customer"; const GUARD_NAME = "customer";
public function guardName() public function guardName()
{ {
@ -130,4 +131,9 @@ class Customer extends Authenticatable implements JWTSubject
return $this->hasMany(Recharge::class, "customer_id")->whereNotNull("paid_at"); return $this->hasMany(Recharge::class, "customer_id")->whereNotNull("paid_at");
} }
public function orders()
{
return $this->hasMany(Orders::class, "customer_id");
}
} }

@ -248,12 +248,11 @@ class StatisticsController extends CommonController
return $this->error($this->noProjects); return $this->error($this->noProjects);
} }
$project_id = request()->project_id ?? $projects->first()->id; $project_id = request()->project_id ?? $projects->first()->id;
$before_date = $request->before_date ?: date("Y-m-d"); $before_date = $request->before_date ?: date("Y-m-d");
$before_datetime = strtotime($before_date . " 23:59:59"); $before_datetime = strtotime($before_date . " 23:59:59");
DB::enableQueryLog(); DB::enableQueryLog();
//todo:子订单的数量增加,用更省查询时间的方式获取项目相关数据
$customers = (new Customer()) $customers = (new Customer())
->whereNull("deleted_at") ->whereNull("deleted_at")
->with([ ->with([
@ -264,16 +263,18 @@ class StatisticsController extends CommonController
$query->whereRaw("UNIX_TIMESTAMP(`created_at`) <= {$before_datetime}")->orderBy("id", "desc"); $query->whereRaw("UNIX_TIMESTAMP(`created_at`) <= {$before_datetime}")->orderBy("id", "desc");
} }
]) ])
->whereHas("balances", function ($query) use ($before_datetime, $project_id) { ->whereHas("oneBalance", function ($query) use ($before_datetime) {
$query->whereRaw("UNIX_TIMESTAMP(`created_at`) <= {$before_datetime}")->where("balance", ">", 0)->orderBy("id", "desc");
})
->whereHas("orders", function ($query) use ($before_datetime, $project_id) {
$query $query
->whereRaw("UNIX_TIMESTAMP(`created_at`) <= {$before_datetime}") ->whereRaw("UNIX_TIMESTAMP(`created_at`) <= {$before_datetime}")
->whereHas("order", function ($query) use ($project_id) { ->where("project_id", $project_id);
$query->where("project_id", $project_id);
});
}) })
->get(); ->get();
return view($this->bladePath . ".customer-balance", compact("customers", "before_datetime")); $laravel_duration = microtime(true) - LARAVEL_START;
return view($this->bladePath . ".customer-balance", compact("customers", "before_datetime", "project_id", "laravel_duration"));
} }
public function fixMonthLastDayCheckout(Request $request) public function fixMonthLastDayCheckout(Request $request)

@ -20,7 +20,16 @@
<div class="card"> <div class="card">
<div class="card-body" style="overflow: auto"> <div class="card-body" style="overflow: auto">
<div class="mb-3"> <div class="mb-3">
<form class="form-inline"> <form class="form-inline">
<select class="form-control mr-1" name="project_id"
onchange="$(this).closest('form').submit()">
@foreach($projects as $pp)
<option
value="{{$pp->id}}" @if($pp->id == $project_id) {{ "selected" }}@endif>{{$pp->name}}</option>
@endforeach
</select>
<label class="control-label mr-1">截止</label><input <label class="control-label mr-1">截止</label><input
value="{{ date("Y-m-d",$before_datetime) }}" class="form-control" name="before_date" value="{{ date("Y-m-d",$before_datetime) }}" class="form-control" name="before_date"
data-plugin="date-picker"> data-plugin="date-picker">

Loading…
Cancel
Save