This commit is contained in:
2022-01-20 10:35:30 +08:00
parent a1be07fe91
commit 3c532e312e

View File

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