优化渠道后台导出
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user