[新增] first commit
This commit is contained in:
67
app/Merchant/Controllers/AuthController.php
Normal file
67
app/Merchant/Controllers/AuthController.php
Normal file
@@ -0,0 +1,67 @@
|
||||
<?php
|
||||
|
||||
namespace App\Merchant\Controllers;
|
||||
|
||||
use Auth;
|
||||
use Illuminate\Http\Request;
|
||||
use Validator;
|
||||
|
||||
class AuthController extends Controller
|
||||
{
|
||||
|
||||
public function login(Request $request)
|
||||
{
|
||||
if ($request->isMethod('post')) {
|
||||
|
||||
$validator = Validator::make($request->all(), [
|
||||
'username' => 'required|min:4',
|
||||
'password' => 'required|min:6',
|
||||
], [
|
||||
'username.requird' => '用户名不能为空',
|
||||
'username.min' => '用户名不能小于:min字符',
|
||||
'password.requird' => '密码不能为空',
|
||||
'password.min' => '密码不能小于:min字符',
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return [
|
||||
'code' => 0,
|
||||
'msg' => $validator->errors()->first(),
|
||||
];
|
||||
}
|
||||
|
||||
$remember = $request->remember ?: false;
|
||||
if (Auth::guard('merchant')->attempt(['username' => $request->username, 'password' => $request->password], $remember)) {
|
||||
$user = Auth::guard('merchant')->user();
|
||||
if (in_array($user->identity->identity_id, ['1'])) {
|
||||
return [
|
||||
'code' => 1,
|
||||
'msg' => '登录成功',
|
||||
'url' => route('merchant.index'),
|
||||
];
|
||||
} else {
|
||||
Auth::guard('merchant')->logout();
|
||||
session()->flush();
|
||||
return [
|
||||
'code' => 0,
|
||||
'msg' => '没有登录权限',
|
||||
];
|
||||
}
|
||||
} else {
|
||||
return [
|
||||
'code' => 0,
|
||||
'msg' => '用户名或密码错误',
|
||||
];
|
||||
}
|
||||
} else {
|
||||
return view('Merchant::auth.login');
|
||||
}
|
||||
}
|
||||
|
||||
public function logout(Request $request)
|
||||
{
|
||||
Auth::guard('merchant')->logout();
|
||||
session()->flush();
|
||||
return $this->success('注销成功', 'merchant.login');
|
||||
}
|
||||
}
|
||||
59
app/Merchant/Controllers/Census/IndexController.php
Normal file
59
app/Merchant/Controllers/Census/IndexController.php
Normal file
@@ -0,0 +1,59 @@
|
||||
<?php
|
||||
|
||||
namespace App\Merchant\Controllers\Census;
|
||||
|
||||
use App\Merchant\Controllers\Controller;
|
||||
use App\Merchant\Exporters\CensusExport;
|
||||
use App\Models\ActivityRule;
|
||||
use App\Models\Coupon;
|
||||
use Auth;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class IndexController extends Controller
|
||||
{
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
$user = Auth::guard('merchant')->user();
|
||||
$month = $request->month ?? now()->format('Y-m');
|
||||
$action = $request->action ?? 'search';
|
||||
$month = explode('-', $month);
|
||||
|
||||
$coupons = Coupon::where('user_id', $user->id)
|
||||
->whereYear('created_at', $month[0])
|
||||
->whereMonth('created_at', $month[1])
|
||||
->where('status', 2)
|
||||
->get(['id', 'thirdPartyGoodsId', 'created_at']);
|
||||
|
||||
$rules = ActivityRule::get();
|
||||
|
||||
$coupons = $coupons->groupBy('create_day')->map(function ($items, $key) use ($rules) {
|
||||
$data = [
|
||||
'day' => $key,
|
||||
// 'ysd10' => $items->where('thirdPartyGoodsId', 'YSD-full100-10')->count(),
|
||||
// 'ysd25' => $items->where('thirdPartyGoodsId', 'YSD-full100-25')->count(),
|
||||
// 'ysd50' => $items->where('thirdPartyGoodsId', 'YSD-full100-50')->count(),
|
||||
// 'ysd100' => $items->where('thirdPartyGoodsId', 'YSD-full200-100')->count(),
|
||||
];
|
||||
foreach ($rules as $rule) {
|
||||
$data[$rule->code] = $items->where('thirdPartyGoodsId', $rule->code)->count();
|
||||
}
|
||||
|
||||
return collect($data);
|
||||
});
|
||||
|
||||
$all = [];
|
||||
foreach ($rules as $rule) {
|
||||
$all[$rule->code] = $coupons->sum($rule->code);
|
||||
}
|
||||
|
||||
$coupons = $coupons->sortByDesc('day');
|
||||
|
||||
if ($action == 'search') {
|
||||
return view('Merchant::census.index', compact('coupons', 'all', 'rules'));
|
||||
} else {
|
||||
return (new CensusExport($month, $user))->download();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
13
app/Merchant/Controllers/Controller.php
Normal file
13
app/Merchant/Controllers/Controller.php
Normal file
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
namespace App\Merchant\Controllers;
|
||||
|
||||
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
|
||||
use Illuminate\Foundation\Bus\DispatchesJobs;
|
||||
use Illuminate\Foundation\Validation\ValidatesRequests;
|
||||
use Illuminate\Routing\Controller as BaseController;
|
||||
|
||||
class Controller extends BaseController
|
||||
{
|
||||
use AuthorizesRequests, DispatchesJobs, ValidatesRequests, Traits\AjaxResponse;
|
||||
}
|
||||
310
app/Merchant/Controllers/Coupon/IndexController.php
Normal file
310
app/Merchant/Controllers/Coupon/IndexController.php
Normal file
@@ -0,0 +1,310 @@
|
||||
<?php
|
||||
|
||||
namespace App\Merchant\Controllers\Coupon;
|
||||
|
||||
use App\Merchant\Controllers\Controller;
|
||||
use App\Models\ActivityRule;
|
||||
use App\Models\Coupon;
|
||||
use Auth;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class IndexController 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';
|
||||
}
|
||||
|
||||
$outlet = $request->outlet;
|
||||
$status = $request->status;
|
||||
$redemptionCode = $request->redemptionCode;
|
||||
$start = $request->start;
|
||||
$end = $request->end;
|
||||
$thirdPartyGoodsId = $request->thirdPartyGoodsId;
|
||||
$action = $request->action ?? 'search';
|
||||
|
||||
$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);
|
||||
|
||||
} 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();
|
||||
|
||||
$data = [
|
||||
'all' => $this->getData($request, 'all', $user),
|
||||
'pass' => $this->getData($request, 'pass', $user),
|
||||
'reject' => $this->getData($request, 'reject', $user),
|
||||
];
|
||||
|
||||
if ($action == 'search') {
|
||||
$rules = ActivityRule::get();
|
||||
|
||||
return view('Merchant::coupon.index', compact('coupons', 'data', 'rules'));
|
||||
|
||||
} else {
|
||||
$this->excel($request, $user);
|
||||
|
||||
// return (new CouponExport($request->all(), $user))->download();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 按照日期分润
|
||||
* @author 玄尘 2020-03-11
|
||||
* @param Request $request [description]
|
||||
* @return array|\Illuminate\Contracts\View\Factory|\Illuminate\View\View
|
||||
*/
|
||||
public function profits(Request $request)
|
||||
{
|
||||
$user = Auth::guard('merchant')->user();
|
||||
|
||||
if ($request->isMethod('POST')) {
|
||||
$date = $request->date;
|
||||
|
||||
$list = Coupon::where('user_id', $user->id)->whereDate('created_at', $date)->where('status', 2)->get();
|
||||
if ($list->isEmpty()) {
|
||||
return $this->error('分润失败!没有可处理的数据');
|
||||
}
|
||||
if (Coupon::where('user_id', $user->id)
|
||||
->whereDate('created_at', $date)
|
||||
->where('status', 2)
|
||||
->update(['status' => 4])) {
|
||||
return $this->success('分润成功!');
|
||||
} else {
|
||||
return $this->error('分润失败!');
|
||||
}
|
||||
} else {
|
||||
return view('Merchant::coupon.profits');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 分润
|
||||
* @author 玄尘 2020-03-11
|
||||
* @param Coupon $coupon [description]
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function profit(Coupon $coupon)
|
||||
{
|
||||
if ($coupon->status == 2) {
|
||||
$coupon->status = 4;
|
||||
$coupon->save();
|
||||
|
||||
return $this->success('分润成功');
|
||||
} else {
|
||||
return $this->error('分润失败');
|
||||
}
|
||||
}
|
||||
|
||||
//获取分数据
|
||||
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)
|
||||
{
|
||||
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);
|
||||
|
||||
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);
|
||||
})
|
||||
->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,
|
||||
$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();
|
||||
}
|
||||
|
||||
}
|
||||
20
app/Merchant/Controllers/IndexController.php
Normal file
20
app/Merchant/Controllers/IndexController.php
Normal file
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace App\Merchant\Controllers;
|
||||
|
||||
use Auth;
|
||||
|
||||
class IndexController extends Controller
|
||||
{
|
||||
|
||||
public function index()
|
||||
{
|
||||
return view('Merchant::index.index');
|
||||
}
|
||||
|
||||
public function dashboard()
|
||||
{
|
||||
$user = Auth::guard('merchant')->user();
|
||||
return view('Merchant::index.dashboard', compact('user'));
|
||||
}
|
||||
}
|
||||
55
app/Merchant/Controllers/Setting/IndexController.php
Normal file
55
app/Merchant/Controllers/Setting/IndexController.php
Normal file
@@ -0,0 +1,55 @@
|
||||
<?php
|
||||
// +------------------------------------------------+
|
||||
// |http://www.cjango.com |
|
||||
// +------------------------------------------------+
|
||||
// | 修复BUG不是一朝一夕的事情,等我喝醉了再说吧! |
|
||||
// +------------------------------------------------+
|
||||
// | Author: 小陈叔叔 <Jason.Chen> |
|
||||
// +------------------------------------------------+
|
||||
namespace App\Merchant\Controllers\Setting;
|
||||
|
||||
use App\Merchant\Controllers\Controller;
|
||||
use Auth;
|
||||
use Illuminate\Http\Request;
|
||||
use Validator;
|
||||
|
||||
class IndexController extends Controller
|
||||
{
|
||||
|
||||
/**
|
||||
* 修改密码
|
||||
* @param Request $request 数据集
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function password(Request $request)
|
||||
{
|
||||
$user = Auth::guard('merchant')->user();
|
||||
|
||||
if ($request->isMethod('post')) {
|
||||
|
||||
$validator = Validator::make($request->all(), [
|
||||
'password' => 'required|confirmed',
|
||||
'password_confirmation' => 'required',
|
||||
], [
|
||||
'password.required' => '新密码必须填写',
|
||||
'password_confirmation.required' => '确认密码必须填写',
|
||||
'password.confirmed' => '两次密码不一致',
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
|
||||
$user->password = $request->password;
|
||||
$res = $user->save();
|
||||
if ($res === true) {
|
||||
return $this->success('修改成功');
|
||||
} else {
|
||||
return $this->error('修改失败');
|
||||
}
|
||||
} else {
|
||||
return view('Merchant::setting.password');
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
26
app/Merchant/Controllers/Traits/AjaxResponse.php
Normal file
26
app/Merchant/Controllers/Traits/AjaxResponse.php
Normal file
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
namespace App\Merchant\Controllers\Traits;
|
||||
|
||||
trait AjaxResponse
|
||||
{
|
||||
|
||||
protected function success($message = '', $url = null, $data = null)
|
||||
{
|
||||
return [
|
||||
'code' => 1,
|
||||
'msg' => $message ?: '操作成功',
|
||||
'url' => is_null($url) ? '' : route($url),
|
||||
'data' => $data,
|
||||
];
|
||||
}
|
||||
|
||||
protected function error($message = '', $url = null, $data = null)
|
||||
{
|
||||
return [
|
||||
'code' => 0,
|
||||
'msg' => $message ?: '操作失败',
|
||||
'url' => is_null($url) ? '' : route($url),
|
||||
'data' => $data,
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user