优化渠道后台导出

This commit is contained in:
2022-01-24 16:46:39 +08:00
parent c336370874
commit 1f6079ed12

View File

@@ -12,74 +12,78 @@ use Illuminate\Http\Request;
class IndexController extends Controller class IndexController extends Controller
{ {
protected $query;
public function index(Request $request) public function index(Request $request)
{ {
$user = Auth::guard('merchant')->user(); $user = Auth::guard('merchant')->user();
$action = $request->action ?? 'search'; $action = $request->action ?? 'search';
if ($action == 'search') { $rules = ActivityRule::get();
$rules = ActivityRule::get(); if ($request->start) {
if ($request->start) { $request->start = $request->start.' 00:00:00';
$request->start = $request->start.' 00:00:00'; }
}
if ($request->end) { if ($request->end) {
$request->end = $request->end.' 23:59:59'; $request->end = $request->end.' 23:59:59';
} }
$outlet = $request->outlet; $outlet = $request->outlet;
$status = $request->status; $status = $request->status;
$redemptionCode = $request->redemptionCode; $redemptionCode = $request->redemptionCode;
$start = $request->start; $start = $request->start;
$end = $request->end; $end = $request->end;
$thirdPartyGoodsId = $request->thirdPartyGoodsId; $thirdPartyGoodsId = $request->thirdPartyGoodsId;
$pa_order_id = $request->pa_order_id; $pa_order_id = $request->pa_order_id;
$coupons = Coupon::where('user_id', $user->id) $this->query = Coupon::where('user_id', $user->id)
->when($outlet, function ($q) use ($outlet) { ->when($outlet, function ($q) use ($outlet) {
$q->whereHas('outlet', function ($q) use ($outlet) { $q->whereHas('outlet', function ($q) use ($outlet) {
$q->whereHas('info', function ($q) use ($outlet) { $q->whereHas('info', function ($q) use ($outlet) {
$q->where('nickname', 'like', "%{$outlet}%"); $q->where('nickname', 'like', "%{$outlet}%");
});
}); });
}) });
->when($redemptionCode, function ($q) use ($redemptionCode) { })
$q->where('redemptionCode', $redemptionCode); ->when($redemptionCode, function ($q) use ($redemptionCode) {
}) $q->where('redemptionCode', $redemptionCode);
->when($thirdPartyGoodsId, function ($q) use ($thirdPartyGoodsId) { })
$q->where('thirdPartyGoodsId', $thirdPartyGoodsId); ->when($thirdPartyGoodsId, function ($q) use ($thirdPartyGoodsId) {
}) $q->where('thirdPartyGoodsId', $thirdPartyGoodsId);
->when($pa_order_id, function ($q) use ($pa_order_id) { })
$q->where('pa_order_id', $pa_order_id); ->when($pa_order_id, function ($q) use ($pa_order_id) {
}) $q->where('pa_order_id', $pa_order_id);
->when(is_numeric($status), function ($query) use ($status) { })
if ($status == 4) { ->when(is_numeric($status), function ($query) use ($status) {
$query->where('is_profit', 1); if ($status == 4) {
$query->where('is_profit', 1);
} else {
$query->where('status', $status);
}
} else { }, function ($query) {
$query->where('status', $status); $query->whereIn('status', [2, 3]);
} })
->when($start && $end, function ($query) use ($start, $end) {
}, function ($query) { $query->whereBetween('created_at', [$start, $end]);
$query->whereIn('status', [2, 3]); })
}) ->when($start && ! $end, function ($query) use ($start) {
->when($start && $end, function ($query) use ($start, $end) { $query->where('created_at', '>', $start);
$query->whereBetween('created_at', [$start, $end]); })
}) ->when(! $start && $end, function ($query) use ($end) {
->when($start && ! $end, function ($query) use ($start) { $query->where('created_at', '<', $end);
$query->where('created_at', '>', $start); })
}) ->orderBy('created_at', 'desc')
->when(! $start && $end, function ($query) use ($end) { ->orderBy('id', 'desc');
$query->where('created_at', '<', $end);
})
->orderBy('created_at', 'desc')->orderBy('id', 'desc')->paginate();
if ($action == 'search') {
$data = [ $data = [
'all' => $this->getData($request, 'all', $user), 'all' => $this->getData($request, 'all', $user),
'pass' => $this->getData($request, 'pass', $user), 'pass' => $this->getData($request, 'pass', $user),
'reject' => $this->getData($request, 'reject', $user), 'reject' => $this->getData($request, 'reject', $user),
]; ];
$coupons = (clone $this->query)->paginate();
return view('Merchant::coupon.index', compact('coupons', 'data', 'rules')); return view('Merchant::coupon.index', compact('coupons', 'data', 'rules'));
} else { } else {
@@ -144,104 +148,13 @@ class IndexController extends Controller
switch ($type) { switch ($type) {
case 'all': case 'all':
return Coupon::where('user_id', $user->id) return (clone $this->query)->count();
->when($request->outlet, function ($q) use ($request) {
$q->whereHas('outlet', function ($q) use ($request) {
$q->whereHas('info', function ($q) use ($request) {
$q->where('nickname', 'like', "%{$request->outlet}%");
});
});
})
->when($request->redemptionCode, function ($q) use ($request) {
$q->where('redemptionCode', $request->redemptionCode);
})
->when($request->thirdPartyGoodsId, function ($q) use ($request) {
$q->where('thirdPartyGoodsId', $request->thirdPartyGoodsId);
})
->when($request->pa_order_id, function ($q) use ($request) {
$q->where('pa_order_id', $request->pa_order_id);
})
->when(is_numeric($request->status), function ($query) use ($request) {
$query->where('status', $request->status);
}, function ($query) {
$query->whereIn('status', [2, 3]);
})
->when($request->start && $request->end, function ($query) use ($request) {
$query->whereBetween('created_at', [$request->start, $request->end]);
})
->when($request->start, function ($query) use ($request) {
$query->where('created_at', '>', $request->start);
})
->when($request->end, function ($query) use ($request) {
$query->where('created_at', '<', $request->end);
})
->count();
break; break;
case 'pass': case 'pass':
return Coupon::where('user_id', $user->id) return (clone $this->query)->where('status', 2)->count();
->when($request->outlet, function ($q) use ($request) {
$q->whereHas('outlet', function ($q) use ($request) {
$q->whereHas('info', function ($q) use ($request) {
$q->where('nickname', 'like', "%{$request->outlet}%");
});
});
})
->when($request->redemptionCode, function ($q) use ($request) {
$q->where('redemptionCode', $request->redemptionCode);
})
->when($request->thirdPartyGoodsId, function ($q) use ($request) {
$q->where('thirdPartyGoodsId', $request->thirdPartyGoodsId);
})
->when($request->pa_order_id, function ($q) use ($request) {
$q->where('pa_order_id', $request->pa_order_id);
})
->when(is_numeric($request->status), function ($query) use ($request) {
$query->where('status', $request->status);
})
->where('status', 2)
->when($request->start && $request->end, function ($query) use ($request) {
$query->whereBetween('created_at', [$request->start, $request->end]);
})
->when($request->start, function ($query) use ($request) {
$query->where('created_at', '>', $request->start);
})
->when($request->end, function ($query) use ($request) {
$query->where('created_at', '<', $request->end);
})
->count();
break; break;
case 'reject': case 'reject':
return Coupon::where('user_id', $user->id) return (clone $this->query)->where('status', 3)->count();
->when($request->outlet, function ($q) use ($request) {
$q->whereHas('outlet', function ($q) use ($request) {
$q->whereHas('info', function ($q) use ($request) {
$q->where('nickname', 'like', "%{$request->outlet}%");
});
});
})
->when($request->redemptionCode, function ($q) use ($request) {
$q->where('redemptionCode', $request->redemptionCode);
})
->when($request->thirdPartyGoodsId, function ($q) use ($request) {
$q->where('thirdPartyGoodsId', $request->thirdPartyGoodsId);
})
->when($request->pa_order_id, function ($q) use ($request) {
$q->where('pa_order_id', $request->pa_order_id);
})
->when(is_numeric($request->status), function ($query) use ($request) {
$query->where('status', $request->status);
})
->where('status', 3)
->when($request->start && $request->end, function ($query) use ($request) {
$query->whereBetween('updated_at', [$request->start, $request->end]);
})
->when($request->start, function ($query) use ($request) {
$query->where('updated_at', '>', $request->start);
})
->when($request->end, function ($query) use ($request) {
$query->where('updated_at', '<', $request->end);
})
->count();
break; break;
default: default:
return 0; return 0;
@@ -262,41 +175,10 @@ class IndexController extends Controller
$filename = '卡券记录'.date('YmdHis').'.csv'; $filename = '卡券记录'.date('YmdHis').'.csv';
$response = function () use ($user, $request) { $response = function () use ($user, $request) {
$handle = fopen('php://output', 'w'); $handle = fopen('php://output', 'w');
$titles = ['ID', '网点名称', '平安券编号', '优惠政策', '核销金额', '平安主订单号', '状态', '处理结果', '核销时间']; $titles = ['id', '网点名称', '平安券编号', '优惠政策', '核销金额', '平安主订单号', '状态', '处理结果', '核销时间'];
fputcsv($handle, $titles); fputcsv($handle, $titles);
Coupon::where('user_id', $user->id) $this->query
->when($request->outlet, function ($q) use ($request) {
$q->whereHas('outlet', function ($q) use ($request) {
$q->whereHas('info', function ($q) use ($request) {
$q->where('nickname', 'like', "%{$request->outlet}%");
});
});
})
->when($request->redemptionCode, function ($q) use ($request) {
$q->where('redemptionCode', $request->redemptionCode);
})
->when($request->thirdPartyGoodsId, function ($q) use ($request) {
$q->where('thirdPartyGoodsId', $request->thirdPartyGoodsId);
})
->when($request->pa_order_id, function ($q) use ($request) {
$q->where('pa_order_id', $request->pa_order_id);
})
->when(is_numeric($request->status), function ($query) use ($request) {
$query->where('status', $request->status);
}, function ($query) {
$query->whereIn('status', [2, 3]);
})
->when($request->start && $request->end, function ($query) use ($request) {
$query->whereBetween('created_at',
[Carbon::parse($request->start)->startOfDay(), Carbon::parse($request->end)->endOfDay()]);
})
->when($request->start, function ($query) use ($request) {
$query->where('created_at', '>', Carbon::parse($request->start)->startOfDay());
})
->when($request->end, function ($query) use ($request) {
$query->where('created_at', '<', Carbon::parse($request->end)->endOfDay());
})
->latest() ->latest()
->chunk(5000, function ($coupons) use ($handle) { ->chunk(5000, function ($coupons) use ($handle) {
foreach ($coupons as $index => $info) { foreach ($coupons as $index => $info) {
@@ -306,7 +188,7 @@ class IndexController extends Controller
$info->redemptionCode."\t", $info->redemptionCode."\t",
' '.$info->couponName, ' '.$info->couponName,
$info->price."\t", $info->price."\t",
$info->orderid, $info->pa_order_id,
$info->status_text, $info->status_text,
$info->remark, $info->remark,
$info->created_at, $info->created_at,