渠道版优化导出+一堆因为换行符不同的为念
This commit is contained in:
@@ -40,6 +40,7 @@ class CouponController extends AdminController
|
|||||||
});
|
});
|
||||||
$filter->column(1 / 2, function ($filter) {
|
$filter->column(1 / 2, function ($filter) {
|
||||||
$filter->like('code', '卡券编号');
|
$filter->like('code', '卡券编号');
|
||||||
|
$filter->like('mobile', '手机号');
|
||||||
$filter->where(function ($query) {
|
$filter->where(function ($query) {
|
||||||
$query->whereHas('activity', function ($query) {
|
$query->whereHas('activity', function ($query) {
|
||||||
$query->whereHas('rule', function ($query) {
|
$query->whereHas('rule', function ($query) {
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ class HomeController extends Controller
|
|||||||
{
|
{
|
||||||
|
|
||||||
return $content
|
return $content
|
||||||
->title('数据看版')
|
->title('数据看版1')
|
||||||
->row(function (Row $row) {
|
->row(function (Row $row) {
|
||||||
$row->column(2, function (Column $column) {
|
$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()));
|
$column->append(new InfoBox('渠道商', 'users', 'yellow', '/admin/users?identity[identity_id]=1', User::whereHas('identity', function ($q) {$q->where('identity_id', 1);})->count()));
|
||||||
|
|||||||
@@ -54,6 +54,8 @@ class IndexController extends Controller
|
|||||||
$query->where('status', $status);
|
$query->where('status', $status);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}, function ($query) {
|
||||||
|
$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]);
|
||||||
@@ -64,65 +66,30 @@ class IndexController extends Controller
|
|||||||
->when(!$start && $end, function ($query) use ($end) {
|
->when(!$start && $end, function ($query) use ($end) {
|
||||||
$query->where('created_at', '<', $end);
|
$query->where('created_at', '<', $end);
|
||||||
})
|
})
|
||||||
->whereIn('status', [2, 3])
|
|
||||||
->orderBy('created_at', 'desc')->orderBy('id', 'desc')->paginate();
|
->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 = [
|
$data = [
|
||||||
'all' => $all->count(),
|
'all' => $this->getData($request, 'all', $user),
|
||||||
'pass' => $pass->count(),
|
'pass' => $this->getData($request, 'pass', $user),
|
||||||
'reject' => $reject->count(),
|
'reject' => $this->getData($request, 'reject', $user),
|
||||||
// 'price' => $pass->sum('price'),
|
|
||||||
// 'profit' => $pass->sum('profit'),
|
|
||||||
// 'hasPrice' => $pass->where('is_profit', 1)->sum('profit'),
|
|
||||||
];
|
];
|
||||||
|
|
||||||
$rules = ActivityRule::get();
|
|
||||||
info(json_encode($rules));
|
|
||||||
if ($action == 'search') {
|
if ($action == 'search') {
|
||||||
return view('Merchant::coupon.index', compact('coupons', 'data'));
|
return view('Merchant::coupon.index', compact('coupons', 'data'));
|
||||||
|
|
||||||
} else {
|
} 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();
|
return (new CouponExport($request->all(), $user))->download();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getData($request, $type)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 按照日期分润
|
* 按照日期分润
|
||||||
* @author 玄尘 2020-03-11
|
* @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();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,15 +29,15 @@ class CouponExport implements FromQuery, WithMapping, WithHeadings
|
|||||||
|
|
||||||
public function __construct($serchDatas, $user)
|
public function __construct($serchDatas, $user)
|
||||||
{
|
{
|
||||||
$this->fileName = '卡券记录' . date('YmdHis') . '.xlsx';
|
$this->fileName = '卡券记录' . date('YmdHis') . '.csv';
|
||||||
$this->user = $user;
|
$this->user = $user;
|
||||||
|
|
||||||
if (!empty($serchDatas)) {
|
if (!empty($serchDatas)) {
|
||||||
foreach ($serchDatas as $key => $data) {
|
foreach ($serchDatas as $key => $data) {
|
||||||
if ($key == 'start') {
|
if ($key == 'start' && !empty($data)) {
|
||||||
$data = $data . ' 00:00:01';
|
$data = $data . ' 00:00:01';
|
||||||
}
|
}
|
||||||
if ($key == 'end') {
|
if ($key == 'end' && !empty($data)) {
|
||||||
$data = $data . ' 23:59:59';
|
$data = $data . ' 23:59:59';
|
||||||
}
|
}
|
||||||
if ($data) {
|
if ($data) {
|
||||||
@@ -97,7 +97,7 @@ class CouponExport implements FromQuery, WithMapping, WithHeadings
|
|||||||
$data = [
|
$data = [
|
||||||
$info->id,
|
$info->id,
|
||||||
$info->outlet ? $info->outlet->nickname : 'Id:' . $info->outletId,
|
$info->outlet ? $info->outlet->nickname : 'Id:' . $info->outletId,
|
||||||
' ' . $info->redemptionCode,
|
$info->redemptionCode . "\t",
|
||||||
' ' . $info->couponName,
|
' ' . $info->couponName,
|
||||||
$info->price,
|
$info->price,
|
||||||
$info->status_text,
|
$info->status_text,
|
||||||
|
|||||||
@@ -1,10 +1,8 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Models;
|
namespace App\Models;
|
||||||
|
|
||||||
class PinganToken extends Model
|
class PinganToken extends Model
|
||||||
{
|
{
|
||||||
|
|
||||||
protected $dates = [
|
protected $dates = [
|
||||||
'get_token_time',
|
'get_token_time',
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -16,12 +16,14 @@ class User extends Authenticatable
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* The attributes that are mass assignable.
|
* The attributes that are mass assignable.
|
||||||
|
*
|
||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
protected $guarded = [];
|
protected $guarded = [];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The attributes that should be hidden for arrays.
|
* The attributes that should be hidden for arrays.
|
||||||
|
*
|
||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
protected $hidden = [
|
protected $hidden = [
|
||||||
@@ -89,7 +91,7 @@ class User extends Authenticatable
|
|||||||
/**
|
/**
|
||||||
* Notes: 密码加密
|
* Notes: 密码加密
|
||||||
* @Author: <C.Jason>
|
* @Author: <C.Jason>
|
||||||
* @Date : 2019/9/6 11:37
|
* @Date: 2019/9/6 11:37
|
||||||
* @param $password
|
* @param $password
|
||||||
*/
|
*/
|
||||||
protected function setPasswordAttribute($password)
|
protected function setPasswordAttribute($password)
|
||||||
|
|||||||
@@ -4,10 +4,8 @@ namespace App\Models;
|
|||||||
|
|
||||||
class UserCode extends Model
|
class UserCode extends Model
|
||||||
{
|
{
|
||||||
|
|
||||||
protected $casts = [
|
protected $casts = [
|
||||||
'codes' => 'array',
|
'codes' => 'array',
|
||||||
'profit' => 'array',
|
'profit' => 'array',
|
||||||
];
|
];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ class UserInfo extends Model
|
|||||||
/**
|
/**
|
||||||
* Notes: 获取性别的文字显示
|
* Notes: 获取性别的文字显示
|
||||||
* @Author: <C.Jason>
|
* @Author: <C.Jason>
|
||||||
* @Date : 2019/9/12 09:46
|
* @Date: 2019/9/12 09:46
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
protected function getSexTextAttribute()
|
protected function getSexTextAttribute()
|
||||||
@@ -35,7 +35,7 @@ class UserInfo extends Model
|
|||||||
/**
|
/**
|
||||||
* Notes: 处理默认头像
|
* Notes: 处理默认头像
|
||||||
* @Author: <C.Jason>
|
* @Author: <C.Jason>
|
||||||
* @Date : 2019/9/12 13:44
|
* @Date: 2019/9/12 13:44
|
||||||
* @param $avatar
|
* @param $avatar
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -6,6 +6,6 @@ use App\Models\Traits\BelongsToUser;
|
|||||||
|
|
||||||
class UserPingan extends Model
|
class UserPingan extends Model
|
||||||
{
|
{
|
||||||
|
|
||||||
use BelongsToUser;
|
use BelongsToUser;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,10 +4,8 @@ namespace App\Models;
|
|||||||
|
|
||||||
class WoCouponLog extends Model
|
class WoCouponLog extends Model
|
||||||
{
|
{
|
||||||
|
|
||||||
public function coupon()
|
public function coupon()
|
||||||
{
|
{
|
||||||
return $this->belongsTo(WoCoupon::class, 'wo_coupon_id', 'id');
|
return $this->belongsTo(WoCoupon::class, 'wo_coupon_id', 'id');
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,7 +34,6 @@ class ActivityRuleObserver
|
|||||||
*/
|
*/
|
||||||
public function updated(ActivityRule $rule)
|
public function updated(ActivityRule $rule)
|
||||||
{
|
{
|
||||||
info(json_encode($rule));
|
|
||||||
$info = IdentityCode::where('code', $rule->code)->exists();
|
$info = IdentityCode::where('code', $rule->code)->exists();
|
||||||
if (!$info) {
|
if (!$info) {
|
||||||
IdentityCode::create([
|
IdentityCode::create([
|
||||||
|
|||||||
Reference in New Issue
Block a user