diff --git a/app/Merchant/Controllers/Coupon/IndexController.php b/app/Merchant/Controllers/Coupon/IndexController.php index cd30d24..4f0a4bf 100644 --- a/app/Merchant/Controllers/Coupon/IndexController.php +++ b/app/Merchant/Controllers/Coupon/IndexController.php @@ -6,6 +6,7 @@ use App\Merchant\Controllers\Controller; use App\Models\ActivityRule; use App\Models\Coupon; use Auth; +use Carbon\Carbon; use Illuminate\Http\Request; class IndexController extends Controller @@ -19,11 +20,11 @@ class IndexController extends Controller if ($action == 'search') { $rules = ActivityRule::get(); if ($request->start) { - $request->start = $request->start . ' 00:00:00'; + $request->start = $request->start.' 00:00:00'; } if ($request->end) { - $request->end = $request->end . ' 23:59:59'; + $request->end = $request->end.' 23:59:59'; } $outlet = $request->outlet; @@ -34,40 +35,40 @@ class IndexController extends Controller $thirdPartyGoodsId = $request->thirdPartyGoodsId; $coupons = Coupon::where('user_id', $user->id) - ->when($outlet, function ($q) use ($outlet) { - $q->whereHas('outlet', function ($q) use ($outlet) { - $q->whereHas('info', function ($q) use ($outlet) { - $q->where('nickname', 'like', "%{$outlet}%"); - }); - }); - }) - ->when($redemptionCode, function ($q) use ($redemptionCode) { - $q->where('redemptionCode', $redemptionCode); - }) - ->when($thirdPartyGoodsId, function ($q) use ($thirdPartyGoodsId) { - $q->where('thirdPartyGoodsId', $thirdPartyGoodsId); - }) - ->when(is_numeric($status), function ($query) use ($status) { - if ($status == 4) { - $query->where('is_profit', 1); + ->when($outlet, function ($q) use ($outlet) { + $q->whereHas('outlet', function ($q) use ($outlet) { + $q->whereHas('info', function ($q) use ($outlet) { + $q->where('nickname', 'like', "%{$outlet}%"); + }); + }); + }) + ->when($redemptionCode, function ($q) use ($redemptionCode) { + $q->where('redemptionCode', $redemptionCode); + }) + ->when($thirdPartyGoodsId, function ($q) use ($thirdPartyGoodsId) { + $q->where('thirdPartyGoodsId', $thirdPartyGoodsId); + }) + ->when(is_numeric($status), function ($query) use ($status) { + if ($status == 4) { + $query->where('is_profit', 1); - } else { - $query->where('status', $status); - } + } else { + $query->where('status', $status); + } - }, function ($query) { - $query->whereIn('status', [2, 3]); - }) - ->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); - }) - ->orderBy('created_at', 'desc')->orderBy('id', 'desc')->paginate(); + }, function ($query) { + $query->whereIn('status', [2, 3]); + }) + ->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); + }) + ->orderBy('created_at', 'desc')->orderBy('id', 'desc')->paginate(); $data = [ 'all' => $this->getData($request, 'all', $user), @@ -84,9 +85,10 @@ class IndexController extends Controller /** * 按照日期分润 - * @author 玄尘 2020-03-11 + * * @param Request $request [description] * @return array|\Illuminate\Contracts\View\Factory|\Illuminate\View\View + * @author 玄尘 2020-03-11 */ public function profits(Request $request) { @@ -100,9 +102,9 @@ class IndexController extends Controller return $this->error('分润失败!没有可处理的数据'); } if (Coupon::where('user_id', $user->id) - ->whereDate('created_at', $date) - ->where('status', 2) - ->update(['status' => 4])) { + ->whereDate('created_at', $date) + ->where('status', 2) + ->update(['status' => 4])) { return $this->success('分润成功!'); } else { return $this->error('分润失败!'); @@ -115,9 +117,10 @@ class IndexController extends Controller /** * 分润 - * @author 玄尘 2020-03-11 + * * @param Coupon $coupon [description] * @return [type] [description] + * @author 玄尘 2020-03-11 */ public function profit(Coupon $coupon) { @@ -138,94 +141,94 @@ class IndexController extends Controller switch ($type) { case 'all': return Coupon::where('user_id', $user->id) - ->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(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(); + ->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(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; case 'pass': return Coupon::where('user_id', $user->id) - ->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(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(); + ->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(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; case 'reject': return Coupon::where('user_id', $user->id) - ->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(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(); + ->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(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; default: return 0; @@ -238,61 +241,62 @@ class IndexController extends Controller //导出数据 public function excel($request, $user) { - if (!$request->end) { + if (! $request->end) { $request->end = now()->toDateTimeString(); } set_time_limit(0); ini_set('memory_limit', '1024M'); - $filename = '卡券记录' . date('YmdHis') . '.csv'; + $filename = '卡券记录'.date('YmdHis').'.csv'; $response = function () use ($user, $request) { $handle = fopen('php://output', 'w'); $titles = ['ID', '网点名称', '平安券编号', '优惠政策', '核销金额', '订单id', '状态', '处理结果', '核销时间']; fputcsv($handle, $titles); Coupon::where('user_id', $user->id) - ->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(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('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); - }) - ->latest() - ->chunk(5000, function ($coupons) use ($handle) { - foreach ($coupons as $index => $info) { - fputcsv($handle, [ - $info->id, - $info->outlet ? $info->outlet->nickname : 'Id:' . $info->outletId, - $info->redemptionCode . "\t", - ' ' . $info->couponName, - $info->price . "\t", - $info->orderid, - $info->status_text, - $info->remark, - $info->created_at, - ]); - } - }); + ->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(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() + ->chunk(5000, function ($coupons) use ($handle) { + foreach ($coupons as $index => $info) { + fputcsv($handle, [ + $info->id, + $info->outlet ? $info->outlet->nickname : 'Id:'.$info->outletId, + $info->redemptionCode."\t", + ' '.$info->couponName, + $info->price."\t", + $info->orderid, + $info->status_text, + $info->remark, + $info->created_at, + ]); + } + }); fclose($handle); };