[新增] first commit

This commit is contained in:
2021-01-31 11:50:56 +08:00
commit 5500f2ad74
510 changed files with 43315 additions and 0 deletions

View 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');
}
}

View 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();
}
}
}

View 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;
}

View 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();
}
}

View 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'));
}
}

View 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');
}
}
}

View 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,
];
}
}