From 758146a02b5c6b7e7bf3a0953adbec13299071e2 Mon Sep 17 00:00:00 2001 From: xuanchen <122383162@qq.com> Date: Wed, 2 Sep 2020 10:18:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B8=A0=E9=81=93=E7=89=88=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=AF=BC=E5=87=BA+=E4=B8=80=E5=A0=86=E5=9B=A0=E4=B8=BA?= =?UTF-8?q?=E6=8D=A2=E8=A1=8C=E7=AC=A6=E4=B8=8D=E5=90=8C=E7=9A=84=E4=B8=BA?= =?UTF-8?q?=E5=BF=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Activity/CouponController.php | 1 + app/Admin/Controllers/HomeController.php | 2 +- .../Controllers/Coupon/IndexController.php | 228 ++++++++++++++---- app/Merchant/Exporters/CouponExport.php | 8 +- app/Models/PinganToken.php | 2 - app/Models/User.php | 16 +- app/Models/UserCode.php | 2 - app/Models/UserInfo.php | 4 +- app/Models/UserPingan.php | 2 +- app/Models/WoCouponLog.php | 2 - app/Observers/ActivityRuleObserver.php | 1 - 11 files changed, 200 insertions(+), 68 deletions(-) diff --git a/app/Admin/Controllers/Activity/CouponController.php b/app/Admin/Controllers/Activity/CouponController.php index 8fbf1cd..1f8fd3c 100644 --- a/app/Admin/Controllers/Activity/CouponController.php +++ b/app/Admin/Controllers/Activity/CouponController.php @@ -40,6 +40,7 @@ class CouponController extends AdminController }); $filter->column(1 / 2, function ($filter) { $filter->like('code', '卡券编号'); + $filter->like('mobile', '手机号'); $filter->where(function ($query) { $query->whereHas('activity', function ($query) { $query->whereHas('rule', function ($query) { diff --git a/app/Admin/Controllers/HomeController.php b/app/Admin/Controllers/HomeController.php index becb49a..4078efd 100644 --- a/app/Admin/Controllers/HomeController.php +++ b/app/Admin/Controllers/HomeController.php @@ -17,7 +17,7 @@ class HomeController extends Controller { return $content - ->title('数据看版') + ->title('数据看版1') ->row(function (Row $row) { $row->column(2, function (Column $column) { $column->append(new InfoBox('渠道商', 'users', 'yellow', '/admin/users?identity[identity_id]=1', User::whereHas('identity', function ($q) {$q->where('identity_id', 1);})->count())); diff --git a/app/Merchant/Controllers/Coupon/IndexController.php b/app/Merchant/Controllers/Coupon/IndexController.php index 6b496ea..b49fbb6 100644 --- a/app/Merchant/Controllers/Coupon/IndexController.php +++ b/app/Merchant/Controllers/Coupon/IndexController.php @@ -54,6 +54,8 @@ class IndexController extends Controller $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]); @@ -64,65 +66,30 @@ class IndexController extends Controller ->when(!$start && $end, function ($query) use ($end) { $query->where('created_at', '<', $end); }) - ->whereIn('status', [2, 3]) ->orderBy('created_at', 'desc')->orderBy('id', 'desc')->paginate(); - $all = 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(is_numeric($status), function ($query) use ($status) { - $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, function ($query) use ($start) { - $query->where('created_at', '>', $start); - }) - ->when($end, function ($query) use ($end) { - $query->where('created_at', '<', $end); - }) - ->orderBy('created_at', 'desc')->orderBy('id', 'desc')->get(); - - $pass = $all->whereIn('status', [2, 4])->all(); - $reject = $all->where('status', 3)->all(); - $pass = collect($pass); - $reject = collect($reject); - $data = [ - 'all' => $all->count(), - 'pass' => $pass->count(), - 'reject' => $reject->count(), - // 'price' => $pass->sum('price'), - // 'profit' => $pass->sum('profit'), - // 'hasPrice' => $pass->where('is_profit', 1)->sum('profit'), + 'all' => $this->getData($request, 'all', $user), + 'pass' => $this->getData($request, 'pass', $user), + 'reject' => $this->getData($request, 'reject', $user), ]; - $rules = ActivityRule::get(); - info(json_encode($rules)); if ($action == 'search') { return view('Merchant::coupon.index', compact('coupons', 'data')); } else { + $this->excel($request, $user); + die(); + response()->stream($this->excel($request, $user), 200, [ + 'Content-Encoding' => 'UTF-8', + 'Content-Type' => 'text/csv;charset=UTF-8', + 'Content-Disposition' => "attachment;filename=\"12346.csv\"", + ])->send(); + return (new CouponExport($request->all(), $user))->download(); } } - public function getData($request, $type) - { - - } - /** * 按照日期分润 * @author 玄尘 2020-03-11 @@ -172,4 +139,173 @@ class IndexController extends Controller } } + //获取分数据 + public function getData($request, $type, $user) + { + 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(); + 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(); + 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('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; + default: + return 0; + break; + + } + + } + + //导出数据 + public function excel($request, $user) + { + set_time_limit(1200); + ini_set('memory_limit', '1024M'); + $filename = '卡券记录' . date('YmdHis') . '.csv'; + $response = function () use ($user, $request) { + $handle = fopen('php://output', 'w'); + $titles = ['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('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); + }) + ->orderBy('created_at', 'desc') + ->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, + $info->status_text, + $info->remark, + $info->created_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(); + } + } diff --git a/app/Merchant/Exporters/CouponExport.php b/app/Merchant/Exporters/CouponExport.php index e535f4e..3019ef7 100644 --- a/app/Merchant/Exporters/CouponExport.php +++ b/app/Merchant/Exporters/CouponExport.php @@ -29,15 +29,15 @@ class CouponExport implements FromQuery, WithMapping, WithHeadings public function __construct($serchDatas, $user) { - $this->fileName = '卡券记录' . date('YmdHis') . '.xlsx'; + $this->fileName = '卡券记录' . date('YmdHis') . '.csv'; $this->user = $user; if (!empty($serchDatas)) { foreach ($serchDatas as $key => $data) { - if ($key == 'start') { + if ($key == 'start' && !empty($data)) { $data = $data . ' 00:00:01'; } - if ($key == 'end') { + if ($key == 'end' && !empty($data)) { $data = $data . ' 23:59:59'; } if ($data) { @@ -97,7 +97,7 @@ class CouponExport implements FromQuery, WithMapping, WithHeadings $data = [ $info->id, $info->outlet ? $info->outlet->nickname : 'Id:' . $info->outletId, - ' ' . $info->redemptionCode, + $info->redemptionCode . "\t", ' ' . $info->couponName, $info->price, $info->status_text, diff --git a/app/Models/PinganToken.php b/app/Models/PinganToken.php index 37bafa9..8242885 100644 --- a/app/Models/PinganToken.php +++ b/app/Models/PinganToken.php @@ -1,10 +1,8 @@ - * @Date : 2019/9/6 11:37 + * @Date: 2019/9/6 11:37 * @param $password */ protected function setPasswordAttribute($password) @@ -127,12 +129,12 @@ class User extends Authenticatable public function getCouponCount($type, $date = '') { return $this->coupons() - ->whereIn('status', [2]) - ->where('thirdPartyGoodsId', $type) - ->when($date, function ($q) { - $q->whereDate('created_at', now()->format('Y-m-d')); - }) - ->count(); + ->whereIn('status', [2]) + ->where('thirdPartyGoodsId', $type) + ->when($date, function ($q) { + $q->whereDate('created_at', now()->format('Y-m-d')); + }) + ->count(); } } diff --git a/app/Models/UserCode.php b/app/Models/UserCode.php index 85c416e..eb16966 100644 --- a/app/Models/UserCode.php +++ b/app/Models/UserCode.php @@ -4,10 +4,8 @@ namespace App\Models; class UserCode extends Model { - protected $casts = [ 'codes' => 'array', 'profit' => 'array', ]; - } diff --git a/app/Models/UserInfo.php b/app/Models/UserInfo.php index f214054..9e201dd 100644 --- a/app/Models/UserInfo.php +++ b/app/Models/UserInfo.php @@ -14,7 +14,7 @@ class UserInfo extends Model /** * Notes: 获取性别的文字显示 * @Author: - * @Date : 2019/9/12 09:46 + * @Date: 2019/9/12 09:46 * @return string */ protected function getSexTextAttribute() @@ -35,7 +35,7 @@ class UserInfo extends Model /** * Notes: 处理默认头像 * @Author: - * @Date : 2019/9/12 13:44 + * @Date: 2019/9/12 13:44 * @param $avatar * @return string */ diff --git a/app/Models/UserPingan.php b/app/Models/UserPingan.php index 4fc3271..174974d 100644 --- a/app/Models/UserPingan.php +++ b/app/Models/UserPingan.php @@ -6,6 +6,6 @@ use App\Models\Traits\BelongsToUser; class UserPingan extends Model { - use BelongsToUser; + } diff --git a/app/Models/WoCouponLog.php b/app/Models/WoCouponLog.php index 688080d..f0962c9 100644 --- a/app/Models/WoCouponLog.php +++ b/app/Models/WoCouponLog.php @@ -4,10 +4,8 @@ namespace App\Models; class WoCouponLog extends Model { - public function coupon() { return $this->belongsTo(WoCoupon::class, 'wo_coupon_id', 'id'); } - } diff --git a/app/Observers/ActivityRuleObserver.php b/app/Observers/ActivityRuleObserver.php index 3655b0c..0f82247 100644 --- a/app/Observers/ActivityRuleObserver.php +++ b/app/Observers/ActivityRuleObserver.php @@ -34,7 +34,6 @@ class ActivityRuleObserver */ public function updated(ActivityRule $rule) { - info(json_encode($rule)); $info = IdentityCode::where('code', $rule->code)->exists(); if (!$info) { IdentityCode::create([