Files
pingan_unionpay_new/app/Merchant/Controllers/Unionpay/CouponController.php
2021-07-30 15:14:40 +08:00

150 lines
6.7 KiB
PHP

<?php
namespace App\Merchant\Controllers\Unionpay;
use App\Merchant\Controllers\Controller;
use App\Models\ActivityRule;
use App\Models\Coupon;
use Auth;
use Illuminate\Http\Request;
use XuanChen\UnionPay\Models\UnionpayCoupon;
class CouponController extends Controller
{
public function index(Request $request)
{
$user = Auth::guard('merchant')->user();
if ($request->start) {
$request->start = $request->start . ' 00:00:00';
}
if ($request->end) {
$request->end = $request->end . ' 23:59:59';
}
$shop_no = $request->shop_no;
$shop_name = $request->shop_name;
$coupon_no = $request->coupon_no;
$start = $request->start;
$end = $request->end;
$action = $request->action ?? 'search';
$coupons = UnionpayCoupon::query()
// ->whereHas('outlet', function ($q) use ($shop_name, $user) {
// $q->where('parent_id', $user->id)
// ->when($shop_name, function ($q) use ($shop_name) {
// $q->whereHas('info', function ($q) use ($shop_name) {
// $q->where('nickname', 'like', "%{$shop_name}%");
// });
// });
// })
->when($coupon_no, function ($q) use ($coupon_no) {
$q->where('coupon_no', $coupon_no);
})
->when($shop_no, function ($q) use ($shop_no) {
$q->where('shop_no', $shop_no);
})
->when($start && $end, function ($query) use ($start, $end) {
$query->whereBetween('created_at', [$start, $end]);
})
->when($start && !$end, function ($query) use ($start) {
$query->where('created_at', '>', $start);
})
->when(!$start && $end, function ($query) use ($end) {
$query->where('created_at', '<', $end);
})
->where('status', UnionpayCoupon::STATUS_INIT)
->latest()
->paginate();
if ($action == 'search') {
return view('Merchant::unionpay.coupon', compact('coupons',));
} else {
$this->excel($request, $user);
}
}
//导出数据
public function excel($request, $user)
{
if (!$request->end) {
$request->end = now()->toDateTimeString();
}
set_time_limit(0);
ini_set('memory_limit', '1024M');
$filename = '银联微信券记录' . date('YmdHis') . '.csv';
$response = function () use ($user, $request) {
$handle = fopen('php://output', 'w');
$titles = [
'ID', '手机号', '门店名称', '优惠券券编号', '原始金额', '优惠的金额', '支付金额', '券码生效时间', '券码过期时间', '门店号', '状态', '核销时间',
];
fputcsv($handle, $titles);
$shop_no = $request->shop_no;
$shop_name = $request->shop_name;
$coupon_no = $request->coupon_no;
$start = $request->start;
$end = $request->end;
UnionpayCoupon::query()
// ->whereHas('outlet', function ($q) use ($shop_name, $user) {
// $q->where('parent_id', $user->id)
// ->when($shop_name, function ($q) use ($shop_name) {
// $q->whereHas('info', function ($q) use ($shop_name) {
// $q->where('nickname', 'like', "%{$shop_name}%");
// });
// });
// })
->when($coupon_no, function ($q) use ($coupon_no) {
$q->where('coupon_no', $coupon_no);
})
->when($shop_no, function ($q) use ($shop_no) {
$q->where('shop_no', $shop_no);
})
->when($start && $end, function ($query) use ($start, $end) {
$query->whereBetween('created_at', [$start, $end]);
})
->when($start && !$end, function ($query) use ($start) {
$query->where('created_at', '>', $start);
})
->when(!$start && $end, function ($query) use ($end) {
$query->where('created_at', '<', $end);
})
->where('status', UnionpayCoupon::STATUS_INIT)
->latest()
->chunk(5000, function ($coupons) use ($handle) {
foreach ($coupons as $index => $coupon) {
fputcsv($handle, [
$coupon->id,
$coupon->mobile,
$coupon->outlet ? $coupon->outlet->nickname : 'Id:' . $coupon->outletId,
$coupon->coupon_no,
$coupon->orig_amt / 100,
$coupon->discount_amt / 100,
$coupon->pay_amt / 100,
$coupon->effective_date_time,
$coupon->expire_date_time,
$coupon->shop_no,
$coupon->status_text,
$coupon->updated_at,
]);
}
});
fclose($handle);
};
response()
->stream($response, 200, [
'Content-Encoding' => 'UTF-8',
'Content-Type' => 'text/csv;charset=UTF-8',
'Content-Disposition' => "attachment;filename=\"{$filename}\"",
])->send();
exit();
}
}