更新代码
This commit is contained in:
161
app/Admin/Controllers/AccountController.php
Normal file
161
app/Admin/Controllers/AccountController.php
Normal file
@@ -0,0 +1,161 @@
|
||||
<?php
|
||||
|
||||
namespace App\Admin\Controllers;
|
||||
|
||||
use App\Models\Withdraw;
|
||||
use Illuminate\Http\Request;
|
||||
use RuLong\UserAccount\Models\UserAccount;
|
||||
use RuLong\UserAccount\Models\UserAccountLog;
|
||||
use RuLong\UserAccount\Models\UserAccountRule;
|
||||
|
||||
class AccountController extends Controller
|
||||
{
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
$mobile = $request->mobile;
|
||||
$nickname = $request->nickname;
|
||||
$start = $request->start;
|
||||
$end = $request->end;
|
||||
$orderField = $request->orderField;
|
||||
$orderDirection = $request->orderDirection;
|
||||
$numPerPage = $request->numPerPage ?: 30;
|
||||
|
||||
$accounts = UserAccount::when($mobile, function ($query) use ($mobile) {
|
||||
$query->whereHas('user', function ($query) use ($mobile) {
|
||||
$query->where('mobile', 'like', "%{$mobile}%");
|
||||
});
|
||||
})->when($nickname, function ($query) use ($nickname) {
|
||||
$query->whereHas('user.info', function ($query) use ($nickname) {
|
||||
$query->where('nickname', 'like', "%{$nickname}%");
|
||||
});
|
||||
})->when($start && $end, function ($query) use ($start, $end) {
|
||||
return $query->whereBetween('created_at', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]);
|
||||
})->when($start && !$end, function ($query) use ($start) {
|
||||
return $query->where('created_at', '>=', $start);
|
||||
})->when(!$start && $end, function ($query) use ($end) {
|
||||
return $query->where('created_at', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end))));
|
||||
})->when($orderField, function ($query) use ($orderField, $orderDirection) {
|
||||
$query->orderBy($orderField, $orderDirection);
|
||||
})->with(['user'])->latest()->paginate($numPerPage);
|
||||
|
||||
return view('Admin::accounts.index', compact('accounts'));
|
||||
}
|
||||
|
||||
public function rules(Request $request)
|
||||
{
|
||||
$title = $request->title;
|
||||
$orderField = $request->orderField;
|
||||
$orderDirection = $request->orderDirection;
|
||||
$numPerPage = $request->numPerPage ?: 30;
|
||||
|
||||
$rules = UserAccountRule::when($title, function ($query) use ($title) {
|
||||
$query->where('title', 'like', "%{$title}%");
|
||||
})->when($orderField, function ($query) use ($orderField, $orderDirection) {
|
||||
$query->orderBy($orderField, $orderDirection);
|
||||
})->latest()->paginate($numPerPage);
|
||||
return view('Admin::accounts.rules', compact('rules'));
|
||||
}
|
||||
|
||||
public function logs(Request $request)
|
||||
{
|
||||
$mobile = $request->mobile;
|
||||
$rule_id = $request->rule_id;
|
||||
$nickname = $request->nickname;
|
||||
$start = $request->start;
|
||||
$end = $request->end;
|
||||
$orderField = $request->orderField;
|
||||
$orderDirection = $request->orderDirection;
|
||||
$numPerPage = $request->numPerPage ?: 30;
|
||||
|
||||
$logs = UserAccountLog::when($mobile, function ($query) use ($mobile) {
|
||||
$query->whereHas('user', function ($query) use ($mobile) {
|
||||
$query->where('mobile', 'like', "%{$mobile}%");
|
||||
});
|
||||
})->when($nickname, function ($query) use ($nickname) {
|
||||
$query->whereHas('user.info', function ($query) use ($nickname) {
|
||||
$query->where('nickname', 'like', "%{$nickname}%");
|
||||
});
|
||||
})->when($rule_id, function ($query) use ($rule_id) {
|
||||
return $query->where('rule_id', $rule_id);
|
||||
})->when($start && $end, function ($query) use ($start, $end) {
|
||||
return $query->whereBetween('created_at', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]);
|
||||
})->when($start && !$end, function ($query) use ($start) {
|
||||
return $query->where('created_at', '>=', $start);
|
||||
})->when(!$start && $end, function ($query) use ($end) {
|
||||
return $query->where('created_at', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end))));
|
||||
})->when($orderField, function ($query) use ($orderField, $orderDirection) {
|
||||
$query->orderBy($orderField, $orderDirection);
|
||||
})->with(['user.info', 'rule'])->latest()->orderBy('id', 'desc')->paginate($numPerPage);
|
||||
|
||||
$rules = UserAccountRule::get();
|
||||
return view('Admin::accounts.logs', compact('logs', 'rules'));
|
||||
}
|
||||
|
||||
/**
|
||||
* 提现申请
|
||||
* @Author:<C.Jason>
|
||||
* @Date:2018-11-08T16:48:31+0800
|
||||
* @param Request $request [description]
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function withdraws(Request $request)
|
||||
{
|
||||
$mobile = $request->mobile;
|
||||
$nickname = $request->nickname;
|
||||
$start = $request->start;
|
||||
$end = $request->end;
|
||||
$orderField = $request->orderField;
|
||||
$orderDirection = $request->orderDirection;
|
||||
$numPerPage = $request->numPerPage ?: 30;
|
||||
|
||||
$withdraws = Withdraw::when($mobile, function ($query) use ($mobile) {
|
||||
$query->whereHas('user', function ($query) use ($mobile) {
|
||||
$query->where('mobile', 'like', "%{$mobile}%");
|
||||
});
|
||||
})->when($nickname, function ($query) use ($nickname) {
|
||||
$query->whereHas('user.info', function ($query) use ($nickname) {
|
||||
$query->where('nickname', 'like', "%{$nickname}%");
|
||||
});
|
||||
})->when($start && $end, function ($query) use ($start, $end) {
|
||||
return $query->whereBetween('created_at', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]);
|
||||
})->when($start && !$end, function ($query) use ($start) {
|
||||
return $query->where('created_at', '>=', $start);
|
||||
})->when(!$start && $end, function ($query) use ($end) {
|
||||
return $query->where('created_at', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end))));
|
||||
})->when($orderField, function ($query) use ($orderField, $orderDirection) {
|
||||
$query->orderBy($orderField, $orderDirection);
|
||||
})->with(['user.info'])->latest()->paginate($numPerPage);
|
||||
return view('Admin::accounts.withdraws', compact('withdraws'));
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过提现申请
|
||||
* @Author:<C.Jason>
|
||||
* @Date:2018-11-08T16:48:10+0800
|
||||
* @param Request $request [description]
|
||||
* @param Withdraw $withdraw [description]
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function approve(Request $request, Withdraw $withdraw)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 驳回提现申请
|
||||
* @Author:<C.Jason>
|
||||
* @Date:2018-11-08T16:48:19+0800
|
||||
* @param Request $request [description]
|
||||
* @param Withdraw $withdraw [description]
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function reject(Request $request, Withdraw $withdraw)
|
||||
{
|
||||
if ($request->isMethod('POST')) {
|
||||
# code...
|
||||
} else {
|
||||
return view('Admin::accounts.reject', compact('withdraw'));
|
||||
}
|
||||
}
|
||||
}
|
||||
271
app/Admin/Controllers/ActivityController.php
Normal file
271
app/Admin/Controllers/ActivityController.php
Normal file
@@ -0,0 +1,271 @@
|
||||
<?php
|
||||
|
||||
namespace App\Admin\Controllers;
|
||||
|
||||
use App\Models\Activity;
|
||||
use App\Models\ActivityGift;
|
||||
use App\Models\Category;
|
||||
use App\Models\Goods;
|
||||
use App\Models\GoodsParams;
|
||||
use App\Models\Seller;
|
||||
use Illuminate\Http\Request;
|
||||
use Validator;
|
||||
|
||||
class ActivityController extends Controller
|
||||
{
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
if (\Admin::user()->seller->type != 'seller') {
|
||||
return $this->error('您没有权限');
|
||||
}
|
||||
|
||||
$title = $request->title;
|
||||
$orderField = $request->orderField;
|
||||
$orderDirection = $request->orderDirection;
|
||||
$numPerPage = $request->numPerPage ?: 30;
|
||||
|
||||
$activities = Activity::when($title, function ($query) use ($title) {
|
||||
$query->where('title', 'like', "%{$title}%");
|
||||
})
|
||||
->when($orderField, function ($query) use ($orderField, $orderDirection) {
|
||||
$query->orderBy($orderField, $orderDirection);
|
||||
})->orderBy('id', 'desc')->paginate($numPerPage);
|
||||
|
||||
return view('Admin::activities.index', compact('activities'));
|
||||
}
|
||||
|
||||
public function create(Request $request)
|
||||
{
|
||||
$categoies = Category::treeSelect(2);
|
||||
$sellers = Seller::where('status', 1)->where('type', 'seller')->get();
|
||||
|
||||
return view('Admin::activities.create', compact('categoies', 'sellers'));
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'title' => 'required|max:100',
|
||||
'description' => 'required|max:200',
|
||||
'content' => 'required',
|
||||
'storage_id' => 'required',
|
||||
'start_time' => 'required',
|
||||
'end_time' => 'required',
|
||||
|
||||
], [
|
||||
'title.required' => '名称必须填写',
|
||||
'title.max' => '名称长度应在:max以内',
|
||||
'description.required' => '简介必须填写',
|
||||
'content.required' => '内容必须填写',
|
||||
'storage_id.required' => '标题图必须上传',
|
||||
'start_time.required' => '开始时间必须填写',
|
||||
'end_time.required' => '结束时间必须填写',
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
|
||||
if ($request->end_time < $request->start_time) {
|
||||
return $this->error('结束时间必须大于开始时间');
|
||||
}
|
||||
|
||||
if (Activity::create($request->all())) {
|
||||
return $this->success('新增活动成功', 'close');
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
|
||||
public function edit(Activity $activity)
|
||||
{
|
||||
$categoies = Category::treeSelect(2);
|
||||
$sellers = Seller::where('status', 1)->where('type', 'seller')->get();
|
||||
return view('Admin::activities.edit', compact('activity', 'categoies', 'sellers'));
|
||||
}
|
||||
|
||||
public function update(Request $request, Activity $activity)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'title' => 'required|max:100',
|
||||
'description' => 'required|max:200',
|
||||
'content' => 'required',
|
||||
'storage_id' => 'required',
|
||||
'start_time' => 'required',
|
||||
'end_time' => 'required',
|
||||
|
||||
], [
|
||||
'title.required' => '名称必须填写',
|
||||
'title.max' => '名称长度应在:max以内',
|
||||
'description.required' => '简介必须填写',
|
||||
'content.required' => '内容必须填写',
|
||||
'storage_id.required' => '标题图必须上传',
|
||||
'start_time.required' => '开始时间必须填写',
|
||||
'end_time.required' => '结束时间必须填写',
|
||||
]);
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
if ($request->end_time < $request->start_time) {
|
||||
return $this->error('结束时间必须大于开始时间');
|
||||
}
|
||||
$data = $request->all();
|
||||
$activity->update($data);
|
||||
return $this->success('编辑完成', 'close');
|
||||
}
|
||||
|
||||
public function destroy(Activity $activity)
|
||||
{
|
||||
if ($activity->delete()) {
|
||||
return $this->success();
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
|
||||
public function show(Activity $activity)
|
||||
{
|
||||
$gifts = $activity->gifts()->paginate(30);
|
||||
return view('Admin::activities.show', compact('gifts', 'activity'));
|
||||
}
|
||||
|
||||
public function giftsCreate(Activity $activity)
|
||||
{
|
||||
$sellers = Seller::where('status', 1)->get();
|
||||
return view('Admin::activities.giftsCreate', compact('sellers', 'activity'));
|
||||
}
|
||||
|
||||
public function giftsStore(Request $request, Activity $activity)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'goods_id' => 'required|numeric|min:1',
|
||||
'param_id' => 'required|numeric|min:1',
|
||||
'mode' => 'required|numeric',
|
||||
'consume_mode' => 'required|numeric',
|
||||
|
||||
], [
|
||||
'goods_id.required' => '商品必须选择',
|
||||
'param_id.required' => '规格必须选择',
|
||||
'goods_id.min' => '商品必须选择',
|
||||
'param_id.min' => '规格必须选择',
|
||||
'mode.required' => '任务指标必须填写',
|
||||
'consume_mode.required' => '消耗业绩必须填写',
|
||||
'goods_id.numeric' => '商品必须为数字',
|
||||
'param_id.numeric' => '规格必须为数字',
|
||||
'mode.numeric' => '任务指标必须为数字',
|
||||
'consume_mode.numeric' => '消耗业绩必须为数字',
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
if ($request->consume_mode > $request->mode) {
|
||||
return $this->error('消耗业绩不能大于任务指标');
|
||||
}
|
||||
|
||||
if ($activity->gifts()->create($request->all())) {
|
||||
return $this->success('添加奖品成功', 'close');
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
|
||||
public function giftsEdit(ActivityGift $gift)
|
||||
{
|
||||
$sellers = Seller::where('status', 1)->get();
|
||||
$goods = Goods::where('status', 1)
|
||||
->whereHas('params', function ($query) {return $query->where('stock', '>', 0)->where('status', 1);})
|
||||
->where('seller_id', $gift->goods->seller_id)
|
||||
->get();
|
||||
$params = GoodsParams::where('status', 1)
|
||||
->where('goods_id', $gift->goods_id)
|
||||
->get();
|
||||
|
||||
return view('Admin::activities.giftsEdit', compact('sellers', 'goods', 'params', 'gift'));
|
||||
|
||||
}
|
||||
|
||||
public function giftsUpdate(Request $request, ActivityGift $gift)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'goods_id' => 'required|numeric|min:1',
|
||||
'param_id' => 'required|numeric|min:1',
|
||||
'mode' => 'required|numeric',
|
||||
'consume_mode' => 'required|numeric',
|
||||
|
||||
], [
|
||||
'goods_id.required' => '商品必须选择',
|
||||
'param_id.required' => '规格必须选择',
|
||||
'goods_id.min' => '商品必须选择',
|
||||
'param_id.min' => '规格必须选择',
|
||||
'mode.required' => '任务指标必须填写',
|
||||
'consume_mode.required' => '消耗业绩必须填写',
|
||||
'goods_id.numeric' => '商品必须为数字',
|
||||
'param_id.numeric' => '规格必须为数字',
|
||||
'mode.numeric' => '任务指标必须为数字',
|
||||
'consume_mode.numeric' => '消耗业绩必须为数字',
|
||||
]);
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
$data = $request->all();
|
||||
$gift->update($data);
|
||||
return $this->success('', 'close');
|
||||
}
|
||||
|
||||
public function giftsDestroy(ActivityGift $gift)
|
||||
{
|
||||
if ($gift->delete()) {
|
||||
return $this->success();
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
|
||||
public function goods(Request $request)
|
||||
{
|
||||
if (empty($request->seller_id)) {
|
||||
return ['msg' => '请选择商户', 'code' => 0];
|
||||
}
|
||||
|
||||
$goods = Goods::where('status', 1)
|
||||
->whereHas('params', function ($query) {return $query->where('stock', '>', 0)->where('status', 1);})
|
||||
->where('seller_id', $request->seller_id)
|
||||
->select('id', 'title')->get();
|
||||
$data = [];
|
||||
foreach ($goods as $key => $good) {
|
||||
$data[$key]['id'] = $good->id;
|
||||
$data[$key]['title'] = $good->title;
|
||||
}
|
||||
|
||||
if ($data) {
|
||||
return response()->json(['msg' => '', 'code' => 1, 'data' => $data]);
|
||||
} else {
|
||||
return ['msg' => '请选择商户', 'code' => 0];
|
||||
}
|
||||
}
|
||||
|
||||
public function params(Request $request)
|
||||
{
|
||||
if (empty($request->goods_id)) {
|
||||
return ['msg' => '请选择商品', 'code' => 0];
|
||||
}
|
||||
|
||||
$params = GoodsParams::where('status', 1)
|
||||
->where('goods_id', $request->goods_id)
|
||||
->select('id', 'value', 'price', 'cost')->get();
|
||||
$data = [];
|
||||
foreach ($params as $key => $param) {
|
||||
$data[$key]['id'] = $param->id;
|
||||
$data[$key]['title'] = $param->value . ' - 售价' . $param->price . ' - 成本' . $param->cost;
|
||||
}
|
||||
|
||||
if ($data) {
|
||||
return response()->json(['msg' => '', 'code' => 1, 'data' => $data]);
|
||||
} else {
|
||||
return ['msg' => '请选择商品', 'code' => 0];
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
110
app/Admin/Controllers/AdvertController.php
Normal file
110
app/Admin/Controllers/AdvertController.php
Normal file
@@ -0,0 +1,110 @@
|
||||
<?php
|
||||
|
||||
namespace App\Admin\Controllers;
|
||||
|
||||
use App\Models\Advert;
|
||||
use Illuminate\Http\Request;
|
||||
use Validator;
|
||||
|
||||
/**
|
||||
* 轮播管理,基本完成
|
||||
*/
|
||||
class AdvertController extends Controller
|
||||
{
|
||||
protected $models = [
|
||||
'Article' => '资讯模型',
|
||||
'Goods' => '商品模型',
|
||||
];
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
$orderField = $request->orderField;
|
||||
$orderDirection = $request->orderDirection;
|
||||
$numPerPage = $request->numPerPage ?: 30;
|
||||
$model = $request->model;
|
||||
|
||||
$adverts = Advert::when($orderField, function ($query) use ($orderField, $orderDirection) {
|
||||
$query->orderBy($orderField, $orderDirection);
|
||||
})
|
||||
->when($model, function ($query) use ($model) {
|
||||
$query->where('advertable_type', 'like', "%{$model}%");
|
||||
})
|
||||
->paginate($numPerPage);
|
||||
|
||||
return view('Admin::adverts.index', compact('adverts'));
|
||||
}
|
||||
|
||||
public function create()
|
||||
{
|
||||
$models = $this->models;
|
||||
return view('Admin::adverts.create', compact('models'));
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
{
|
||||
|
||||
$validator = Validator::make($request->all(), [
|
||||
'sort' => 'required|numeric',
|
||||
'storage_id' => 'required',
|
||||
], [
|
||||
'sort.required' => '排序必须填写',
|
||||
'sort.numeric' => '排序只能是数字',
|
||||
'url.required' => 'url必须填写',
|
||||
'url.url' => 'url格式不正确',
|
||||
'storage_id.required' => '图片必须上传',
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
|
||||
Advert::create([
|
||||
'storage_id' => $request->storage_id,
|
||||
'sort' => $request->sort,
|
||||
'url' => $request->url,
|
||||
]);
|
||||
|
||||
return $this->success('轮播创建成功', 'close');
|
||||
}
|
||||
|
||||
public function edit(Advert $advert)
|
||||
{
|
||||
$models = $this->models;
|
||||
return view('Admin::adverts.edit', compact('models', 'advert'));
|
||||
}
|
||||
|
||||
public function update(Request $request, Advert $advert)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'sort' => 'required|numeric',
|
||||
'storage_id' => 'required',
|
||||
], [
|
||||
'sort.required' => '排序必须填写',
|
||||
'sort.numeric' => '排序只能是数字',
|
||||
'url.required' => 'url必须填写',
|
||||
'url.url' => 'url格式不正确',
|
||||
'storage_id.required' => '图片必须上传',
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
|
||||
$advert->update([
|
||||
'storage_id' => $request->storage_id,
|
||||
'sort' => $request->sort,
|
||||
'url' => $request->url,
|
||||
]);
|
||||
|
||||
return $this->success('轮播更新成功', 'close');
|
||||
}
|
||||
|
||||
public function destroy(Advert $advert)
|
||||
{
|
||||
if ($advert->delete()) {
|
||||
return $this->success();
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
}
|
||||
150
app/Admin/Controllers/AgencyController.php
Normal file
150
app/Admin/Controllers/AgencyController.php
Normal file
@@ -0,0 +1,150 @@
|
||||
<?php
|
||||
|
||||
namespace App\Admin\Controllers;
|
||||
|
||||
use App\Models\Agency;
|
||||
use App\Rules\Checkmobile;
|
||||
use App\User;
|
||||
use Illuminate\Http\Request;
|
||||
use Validator;
|
||||
|
||||
class AgencyController extends Controller
|
||||
{
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
$orderField = $request->orderField;
|
||||
$orderDirection = $request->orderDirection;
|
||||
$numPerPage = $request->numPerPage ?: 30;
|
||||
|
||||
$lists = Agency::paginate($numPerPage);
|
||||
|
||||
return view('Admin::agency.index', compact('lists'));
|
||||
}
|
||||
|
||||
public function create()
|
||||
{
|
||||
$salesmans = User::where('is_salesman', 1)->get();
|
||||
return view('Admin::agency.create', compact('salesmans'));
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'name' => 'required|min:2|max:50',
|
||||
'status' => 'required',
|
||||
], [
|
||||
'name.required' => '名称必须填写',
|
||||
'name.min' => '名称最少为:min字符',
|
||||
'name.max' => '名称最多为:max字符',
|
||||
'status.required' => '状态必须选择',
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
if (Agency::create($request->all())) {
|
||||
return $this->success('', 'close');
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
|
||||
public function edit(Agency $agency)
|
||||
{
|
||||
$salesmans = User::where('is_salesman', 1)->get();
|
||||
return view('Admin::agency.edit', compact('agency', 'salesmans'));
|
||||
}
|
||||
|
||||
public function update(Request $request, Agency $agency)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'name' => 'required|min:2|max:50',
|
||||
'status' => 'required',
|
||||
], [
|
||||
'name.required' => '名称必须填写',
|
||||
'name.min' => '名称最少为:min字符',
|
||||
'name.max' => '名称最多为:max字符',
|
||||
'status.required' => '状态必须选择',
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
|
||||
if ($agency->update($request->all())) {
|
||||
return $this->success('', 'close');
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
|
||||
//设置管理人
|
||||
public function user(Request $request, Agency $agency)
|
||||
{
|
||||
return view('Admin::agency.user', compact('agency'));
|
||||
}
|
||||
|
||||
public function douser(Request $request, Agency $agency)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'mobile' => 'required|exists:users',
|
||||
'user_id' => 'required|unique:agencies,user_id',
|
||||
], [
|
||||
'mobile.required' => '请输入手机号',
|
||||
'mobile.exists' => '手机号不存在',
|
||||
'user_id.required' => '请点击校验按钮',
|
||||
'user_id.unique' => '此人已经是代理了',
|
||||
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
|
||||
if ($agency->update(['user_id' => $request->user_id])) {
|
||||
$agency->user->identityUpdate(2, 'AgencyUp');
|
||||
return $this->success('', 'close');
|
||||
} else {
|
||||
return $this->error('');
|
||||
}
|
||||
}
|
||||
|
||||
public function show()
|
||||
{
|
||||
#Todo..
|
||||
}
|
||||
|
||||
//删除
|
||||
public function delete(Agency $agency)
|
||||
{
|
||||
if ($agency->delete()) {
|
||||
return $this->success('删除成功');
|
||||
} else {
|
||||
return $this->error('删除成功');
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public function checkuser(Request $request)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'mobile' => ['required', 'exists:users', new Checkmobile],
|
||||
], [
|
||||
'mobile.required' => '手机号必须填写',
|
||||
'mobile.exists' => '手机号不存在',
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
|
||||
$user = User::where('mobile', $request->mobile)->first();
|
||||
$agency = Agency::where('user_id', $user->id)->first();
|
||||
if ($agency) {
|
||||
return $this->error('此人已经是代理了');
|
||||
}
|
||||
return $this->success(['user_id' => $user->id, 'nickname' => $user->info->nickname]);
|
||||
}
|
||||
|
||||
}
|
||||
182
app/Admin/Controllers/AreaController.php
Normal file
182
app/Admin/Controllers/AreaController.php
Normal file
@@ -0,0 +1,182 @@
|
||||
<?php
|
||||
|
||||
namespace App\Admin\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use RuLong\Area\Models\OpenArea;
|
||||
use Validator;
|
||||
|
||||
class AreaController extends Controller
|
||||
{
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
|
||||
$info = $request->info;
|
||||
$type = $request->type;
|
||||
$status = $request->status;
|
||||
$psn = $request->psn;
|
||||
|
||||
$numPerPage = $request->numPerPage ?: 30;
|
||||
|
||||
$areas = OpenArea::when($info, function ($query) use ($info) {
|
||||
$query->where('info', 'like', "%{$info}%");
|
||||
})->when($type, function ($query) use ($type) {
|
||||
$query->where('type', $type);
|
||||
})->when(is_numeric($status), function ($query) use ($status) {
|
||||
$query->where('status', $status);
|
||||
})->when($psn, function ($query) use ($psn) {
|
||||
$query->where('psn', $psn);
|
||||
})->orderBy('sn', 'asc')->whereNotNull('psn')->paginate($numPerPage);
|
||||
|
||||
$list = OpenArea::treeShow();
|
||||
|
||||
return view('Admin::areas.index', compact('areas', 'list'));
|
||||
}
|
||||
|
||||
public function create(Request $request)
|
||||
{
|
||||
$list = OpenArea::treeShow();
|
||||
return view('Admin::areas.create', compact('list'));
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
{
|
||||
|
||||
$validator = Validator::make($request->all(), [
|
||||
'name' => 'required|min:2|max:50',
|
||||
'psn' => 'required',
|
||||
], [
|
||||
'name.required' => '名称必须填写',
|
||||
'name.min' => '名称最少为:min字符',
|
||||
'name.max' => '名称最多为:max字符',
|
||||
'psn.required' => '所属必须选择',
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
|
||||
$name = $request->name;
|
||||
$psn = $request->psn;
|
||||
$status = $request->status;
|
||||
|
||||
$parent = OpenArea::where('sn', $request->psn)->first();
|
||||
$last = OpenArea::where('psn', $parent->sn)->orderBy('sn', 'desc')->first();
|
||||
|
||||
if ($last) {
|
||||
$sn = $last->sn + 1;
|
||||
} else {
|
||||
$sn = $parent->sn + 1;
|
||||
}
|
||||
|
||||
$data = [
|
||||
'sn' => $sn,
|
||||
'psn' => $parent->sn,
|
||||
'province' => $parent->province,
|
||||
'city' => $parent->city,
|
||||
'area' => $name,
|
||||
'name' => $name,
|
||||
'shortname' => $request->name,
|
||||
'info' => $parent->info . ',' . $name,
|
||||
'shortinfo' => $parent->shortinfo . ',' . $name,
|
||||
'type' => '县级',
|
||||
'depth' => 3,
|
||||
'zone' => '',
|
||||
'zip' => '',
|
||||
'cnname' => '',
|
||||
'enname' => '',
|
||||
'name_first_char' => '',
|
||||
'center' => '',
|
||||
'lng' => '',
|
||||
'lat' => '',
|
||||
'status' => $status,
|
||||
];
|
||||
|
||||
if (OpenArea::create($data)) {
|
||||
return $this->success('', 'close');
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
|
||||
public function edit(OpenArea $area)
|
||||
{
|
||||
$list = OpenArea::treeShow();
|
||||
return view('Admin::areas.edit', compact('area', 'list'));
|
||||
}
|
||||
|
||||
public function update(Request $request, OpenArea $area)
|
||||
{
|
||||
|
||||
$validator = Validator::make($request->all(), [
|
||||
'name' => 'required|min:2|max:50',
|
||||
'psn' => 'required',
|
||||
], [
|
||||
'name.required' => '名称必须填写',
|
||||
'name.min' => '名称最少为:min字符',
|
||||
'name.max' => '名称最多为:max字符',
|
||||
'psn.required' => '所属必须选择',
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
|
||||
$name = $request->name;
|
||||
$psn = $request->psn;
|
||||
$status = $request->status;
|
||||
|
||||
$parent = OpenArea::where('sn', $request->psn)->first();
|
||||
|
||||
$data = [
|
||||
'area' => $name,
|
||||
'name' => $name,
|
||||
'shortname' => $name,
|
||||
'info' => $parent->info . ',' . $name,
|
||||
'shortinfo' => $parent->shortinfo . ',' . $name,
|
||||
'status' => $status,
|
||||
];
|
||||
|
||||
if ($area->update($request->all())) {
|
||||
return $this->success('', 'close');
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
|
||||
public function open(Request $request, OpenArea $area)
|
||||
{
|
||||
$status = $request->status;
|
||||
|
||||
$info = OpenArea::when($area, function ($query) use ($area) {
|
||||
switch ($area->depth) {
|
||||
case 1:
|
||||
$query->where('province', $area->name);
|
||||
break;
|
||||
case 2:
|
||||
$query->where('city', $area->name);
|
||||
break;
|
||||
case 3:
|
||||
$query->where('area', $area->name);
|
||||
break;
|
||||
}
|
||||
})->update(['status' => $status]);
|
||||
|
||||
if ($info) {
|
||||
return $this->success('设置成功');
|
||||
} else {
|
||||
return $this->error('设置失败');
|
||||
}
|
||||
}
|
||||
|
||||
public function hot(Request $request, OpenArea $area)
|
||||
{
|
||||
if ($area->update($request->all())) {
|
||||
return $this->success('设置成功');
|
||||
} else {
|
||||
return $this->error('设置失败');
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
117
app/Admin/Controllers/ArticleController.php
Normal file
117
app/Admin/Controllers/ArticleController.php
Normal file
@@ -0,0 +1,117 @@
|
||||
<?php
|
||||
|
||||
namespace App\Admin\Controllers;
|
||||
|
||||
use App\Models\Article;
|
||||
use Illuminate\Http\Request;
|
||||
use Validator;
|
||||
|
||||
class ArticleController extends Controller
|
||||
{
|
||||
|
||||
public function notices(Request $request)
|
||||
{
|
||||
$title = $request->title;
|
||||
$orderField = $request->orderField;
|
||||
$orderDirection = $request->orderDirection;
|
||||
$numPerPage = $request->numPerPage ?: 30;
|
||||
$type = 'notices';
|
||||
|
||||
$articles = Article::where('type', $type)
|
||||
->when($title, function ($query) use ($title) {
|
||||
$query->where('title', 'like', "%{$title}%");
|
||||
})
|
||||
->when($orderField, function ($query) use ($orderField, $orderDirection) {
|
||||
$query->orderBy($orderField, $orderDirection);
|
||||
})->paginate($numPerPage);
|
||||
|
||||
return view('Admin::articles.index', compact('articles', 'type'));
|
||||
}
|
||||
|
||||
public function news(Request $request)
|
||||
{
|
||||
$title = $request->title;
|
||||
$orderField = $request->orderField;
|
||||
$orderDirection = $request->orderDirection;
|
||||
$numPerPage = $request->numPerPage ?: 30;
|
||||
$type = 'news';
|
||||
|
||||
$articles = Article::where('type', $type)
|
||||
->when($title, function ($query) use ($title) {
|
||||
$query->where('title', 'like', "%{$title}%");
|
||||
})
|
||||
->when($orderField, function ($query) use ($orderField, $orderDirection) {
|
||||
$query->orderBy($orderField, $orderDirection);
|
||||
})->paginate($numPerPage);
|
||||
return view('Admin::articles.index', compact('articles', 'type'));
|
||||
}
|
||||
|
||||
public function create(Request $request)
|
||||
{
|
||||
return view('Admin::articles.create');
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'title' => 'required|max:100',
|
||||
'description' => 'required|max:200',
|
||||
'content' => 'required',
|
||||
'storage_id' => 'required',
|
||||
|
||||
], [
|
||||
'title.required' => '名称必须填写',
|
||||
'title.max' => '名称长度应在:max以内',
|
||||
'description.required' => '简介必须填写',
|
||||
'content.required' => '内容必须填写',
|
||||
'storage_id.required' => '标题图必须上传',
|
||||
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
|
||||
if (Article::create($request->all())) {
|
||||
return $this->success('新增文章成功', 'close');
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
|
||||
public function edit(Article $article)
|
||||
{
|
||||
return view('Admin::articles.edit', compact('article'));
|
||||
|
||||
}
|
||||
|
||||
public function update(Request $request, Article $article)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'title' => 'required|max:100',
|
||||
'description' => 'required|max:200',
|
||||
'content' => 'required',
|
||||
'storage_id' => 'required',
|
||||
|
||||
], [
|
||||
'title.required' => '名称必须填写',
|
||||
'title.max' => '名称长度应在:max以内',
|
||||
'description.required' => '简介必须填写',
|
||||
'content.required' => '内容必须填写',
|
||||
'storage_id.required' => '标题图必须上传',
|
||||
|
||||
]);
|
||||
$data = $request->all();
|
||||
$article->update($data);
|
||||
return $this->success('', 'close');
|
||||
}
|
||||
|
||||
public function destroy(Article $article)
|
||||
{
|
||||
if ($article->delete()) {
|
||||
return $this->success();
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
}
|
||||
11
app/Admin/Controllers/BonusController.php
Normal file
11
app/Admin/Controllers/BonusController.php
Normal file
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
namespace App\Admin\Controllers;
|
||||
|
||||
class BonusController extends Controller
|
||||
{
|
||||
public function index()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
103
app/Admin/Controllers/CategoryController.php
Normal file
103
app/Admin/Controllers/CategoryController.php
Normal file
@@ -0,0 +1,103 @@
|
||||
<?php
|
||||
|
||||
namespace App\Admin\Controllers;
|
||||
|
||||
use App\Models\Category;
|
||||
use Illuminate\Http\Request;
|
||||
use Validator;
|
||||
|
||||
class CategoryController extends Controller
|
||||
{
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
$title = $request->title;
|
||||
$parent_id = $request->get('parent_id', 0) ?: 0;
|
||||
$orderField = $request->orderField;
|
||||
$orderDirection = $request->orderDirection;
|
||||
$numPerPage = $request->numPerPage ?: 30;
|
||||
|
||||
$categories = Category::where('parent_id', $parent_id)
|
||||
->when($title, function ($query) use ($title) {
|
||||
$query->where('title', 'like', "%{$title}%");
|
||||
})
|
||||
->when($orderField, function ($query) use ($orderField, $orderDirection) {
|
||||
$query->orderBy($orderField, $orderDirection);
|
||||
})->paginate($numPerPage);
|
||||
|
||||
$categoryTree = Category::with(['children'])->where('parent_id', 0)->orderBy('sort', 'asc')->get();
|
||||
|
||||
return view('Admin::categories.index', compact('categoryTree', 'categories'));
|
||||
}
|
||||
|
||||
public function create()
|
||||
{
|
||||
$topCates = Category::treeShow();
|
||||
return view('Admin::categories.create', compact('topCates'));
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'title' => 'required|max:16',
|
||||
'sort' => 'required|integer',
|
||||
], [
|
||||
'title.required' => '分类名称必须填写',
|
||||
'title.max' => '分类名称长度应在:max以内',
|
||||
'sort.required' => '分类排序必须填写',
|
||||
'sort.integer' => '分类排序只能是数字',
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
|
||||
if (Category::create($request->all())) {
|
||||
return $this->success('新增分类成功', 'close');
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
|
||||
public function edit(Category $category)
|
||||
{
|
||||
$topCates = Category::treeShow($category->id);
|
||||
return view('Admin::categories.edit', compact('topCates', 'category'));
|
||||
}
|
||||
|
||||
public function update(Request $request, Category $category)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'title' => 'required|max:16',
|
||||
'sort' => 'required|integer',
|
||||
], [
|
||||
'title.required' => '分类名称必须填写',
|
||||
'title.max' => '分类名称长度应在:max以内',
|
||||
'sort.required' => '分类排序必须填写',
|
||||
'sort.integer' => '分类排序只能是数字',
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
|
||||
if ($category->update($request->all())) {
|
||||
return $this->success('编辑分类成功', 'close');
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
|
||||
public function destroy(Category $category)
|
||||
{
|
||||
$exclude_ids = [1, 2];
|
||||
if (in_array($category->id, $exclude_ids)) {
|
||||
return $this->error('此分类不能删除');
|
||||
}
|
||||
if ($category->delete()) {
|
||||
return $this->success();
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
}
|
||||
10
app/Admin/Controllers/Controller.php
Normal file
10
app/Admin/Controllers/Controller.php
Normal file
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
namespace App\Admin\Controllers;
|
||||
|
||||
use RuLong\Panel\Controllers\Controller as BaseController;
|
||||
|
||||
class Controller extends BaseController
|
||||
{
|
||||
|
||||
}
|
||||
145
app/Admin/Controllers/CouponController.php
Normal file
145
app/Admin/Controllers/CouponController.php
Normal file
@@ -0,0 +1,145 @@
|
||||
<?php
|
||||
namespace App\Admin\Controllers;
|
||||
|
||||
use Admin;
|
||||
use App\Models\Seller;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use RuLong\Coupon\Models\CouponInfo;
|
||||
use Validator;
|
||||
|
||||
class CouponController extends Controller
|
||||
{
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
$title = $request->title;
|
||||
$orderField = $request->orderField;
|
||||
$orderDirection = $request->orderDirection;
|
||||
$numPerPage = $request->numPerPage ?: 30;
|
||||
|
||||
$coupons = CouponInfo::where('seller_id', Admin::user()->seller_id)
|
||||
->when($title, function ($query) use ($title) {
|
||||
$query->where('title', 'like', "%{$title}%");
|
||||
})
|
||||
->when($orderField, function ($query) use ($orderField, $orderDirection) {
|
||||
$query->orderBy($orderField, $orderDirection);
|
||||
})
|
||||
->orderBy('created_at', 'desc')
|
||||
->paginate($numPerPage);
|
||||
return view('Admin::coupon.index', compact('coupons'));
|
||||
}
|
||||
|
||||
public function create()
|
||||
{
|
||||
$sellers = Seller::where('status', 1)->get();
|
||||
return view('Admin::coupon.create', compact('sellers'));
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'title' => 'required|min:2|max:50',
|
||||
'remark' => 'required|min:4',
|
||||
'bouns' => 'required',
|
||||
], [
|
||||
'title.required' => '标题必须填写',
|
||||
'title.min' => '标题最少为:min字符',
|
||||
'title.max' => '标题最多为:max字符',
|
||||
'remark.required' => '券码描述必须填写',
|
||||
'remark.min' => '券码描述最少:min个字',
|
||||
'bouns.required' => '享用额度必须填写',
|
||||
'bouns.number' => '享用额度必须是数字',
|
||||
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
|
||||
try {
|
||||
DB::transaction(function () use ($request) {
|
||||
$status = 0;
|
||||
if (Admin::user()->seller_id == 1) {
|
||||
$status = 1;
|
||||
}
|
||||
$info = CouponInfo::create($request->all());
|
||||
});
|
||||
return $this->success('操作成功', 'close');
|
||||
} catch (\Exception $e) {
|
||||
return $this->error('操作失败' . $e->getmessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function edit($id)
|
||||
{
|
||||
$info = CouponInfo::find($id);
|
||||
return view('Admin::coupon.edit', compact('info'));
|
||||
}
|
||||
|
||||
public function update(Request $request, $id)
|
||||
{
|
||||
$info = CouponInfo::find($id);
|
||||
$validator = Validator::make($request->all(), [
|
||||
'title' => 'required|min:2|max:50',
|
||||
'remark' => 'required|min:4',
|
||||
'bouns' => 'required',
|
||||
], [
|
||||
'title.required' => '标题必须填写',
|
||||
'title.min' => '标题最少为:min字符',
|
||||
'title.max' => '标题最多为:max字符',
|
||||
'remark.required' => '券码描述必须填写',
|
||||
'remark.min' => '券码描述最少:min个字',
|
||||
'bouns.required' => '享用额度必须填写',
|
||||
'bouns.number' => '享用额度必须是数字',
|
||||
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
|
||||
try {
|
||||
DB::transaction(function () use ($request, $info) {
|
||||
$info = $info->update($request->all());
|
||||
});
|
||||
return $this->success('操作成功', 'close');
|
||||
} catch (\Exception $e) {
|
||||
return $this->error('操作失败' . $e->getmessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function destroy($id)
|
||||
{
|
||||
$info = CouponInfo::find($id);
|
||||
try {
|
||||
$info->status = 0;
|
||||
$info->save();
|
||||
return $this->success('操作成功');
|
||||
} catch (\Exception $e) {
|
||||
return $this->error('操作失败' . $e->getmessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 彻底删除单条目
|
||||
* @Author:<C.Jason>
|
||||
* @Date:2018-11-02T13:43:36+0800
|
||||
* @param [type] $user [description]
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function delete(CouponInfo $info)
|
||||
{
|
||||
try {
|
||||
DB::transaction(function () use ($info) {
|
||||
$info->delete();
|
||||
});
|
||||
return $this->success('操作成功');
|
||||
} catch (\Exception $e) {
|
||||
return $this->error('操作失败' . $e->getmessage());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
1107
app/Admin/Controllers/DataExportController.php
Normal file
1107
app/Admin/Controllers/DataExportController.php
Normal file
File diff suppressed because it is too large
Load Diff
589
app/Admin/Controllers/GoodsController.php
Normal file
589
app/Admin/Controllers/GoodsController.php
Normal file
@@ -0,0 +1,589 @@
|
||||
<?php
|
||||
|
||||
namespace App\Admin\Controllers;
|
||||
|
||||
use Admin;
|
||||
use App\Models\Cart;
|
||||
use App\Models\Category;
|
||||
use App\Models\Goods;
|
||||
use App\Models\GoodsParams;
|
||||
use App\Models\Seller;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Validator;
|
||||
|
||||
class GoodsController extends Controller
|
||||
{
|
||||
|
||||
public function all(Request $request)
|
||||
{
|
||||
$title = $request->title;
|
||||
$seller = $request->seller;
|
||||
$position = $request->position;
|
||||
$is_gift = $request->is_gift;
|
||||
$category_id = $request->category_id;
|
||||
$orderField = $request->orderField;
|
||||
$orderDirection = $request->orderDirection;
|
||||
$numPerPage = $request->numPerPage ?: 30;
|
||||
|
||||
$goods = Goods::where('status', '>=', 0)
|
||||
->when($title, function ($query) use ($title) {
|
||||
$query->where('title', 'like', "%{$title}%");
|
||||
})
|
||||
->when($seller, function ($query) use ($seller) {
|
||||
$query->whereHas('seller', function ($query) use ($seller) {
|
||||
$query->where('name', 'like', "%{$seller}%");
|
||||
});
|
||||
})
|
||||
->when($category_id, function ($query) use ($category_id) {
|
||||
$category_ids = Category::where('id', $category_id)->orWhere('parent_id', $category_id)->pluck('id');
|
||||
return $query->whereIn('category_id', $category_ids);
|
||||
})
|
||||
->when($orderField, function ($query) use ($orderField, $orderDirection) {
|
||||
$query->orderBy($orderField, $orderDirection);
|
||||
})
|
||||
->when($is_gift, function ($query) use ($is_gift) {
|
||||
switch ($is_gift) {
|
||||
case 'is_seller_gift':
|
||||
$query->where('is_seller_gift', 1);
|
||||
break;
|
||||
case 'is_mall_gift':
|
||||
$query->where('is_mall_gift', 1);
|
||||
break;
|
||||
}
|
||||
})
|
||||
->when($position, function ($query) use ($position) {
|
||||
switch ($position) {
|
||||
case 'is_recommend':
|
||||
$query->where('is_recommend', 1);
|
||||
break;
|
||||
case 'is_hot_sell':
|
||||
$query->where('is_hot_sell', 1);
|
||||
break;
|
||||
case 'is_hot_changed':
|
||||
$query->where('is_hot_changed', 1);
|
||||
break;
|
||||
case 'is_seller_package':
|
||||
$query->where('is_seller_package', 1);
|
||||
break;
|
||||
}
|
||||
})
|
||||
->with(['category', 'seller'])
|
||||
->orderBy('seller_id', 'desc')
|
||||
->orderBy('status', 'desc')
|
||||
->orderBy('created_at', 'desc')
|
||||
->paginate($numPerPage);
|
||||
$categoies = Category::treeSelect();
|
||||
|
||||
return view('Admin::goods.all', compact('goods', 'categoies'));
|
||||
}
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
$title = $request->title;
|
||||
$orderField = $request->orderField;
|
||||
$orderDirection = $request->orderDirection;
|
||||
$numPerPage = $request->numPerPage ?: 30;
|
||||
$admin = Admin::user();
|
||||
|
||||
$goods = Goods::when(Admin::user()->seller_id > 1, function ($query) use ($admin) {
|
||||
$query->where('seller_id', $admin->seller_id);
|
||||
})
|
||||
->when($title, function ($query) use ($title) {
|
||||
$query->where('title', 'like', "%{$title}%");
|
||||
})
|
||||
->when($orderField, function ($query) use ($orderField, $orderDirection) {
|
||||
$query->orderBy($orderField, $orderDirection);
|
||||
})
|
||||
->with(['category', 'seller'])
|
||||
->orderBy('status', 'desc')
|
||||
->orderBy('created_at', 'desc')
|
||||
->paginate($numPerPage);
|
||||
|
||||
return view('Admin::goods.index', compact('goods'));
|
||||
}
|
||||
|
||||
public function create()
|
||||
{
|
||||
$sellers = Seller::where('status', 1)->get();
|
||||
$categoies = Category::treeSelect(91);
|
||||
|
||||
return view('Admin::goods.create', compact('categoies', 'sellers'));
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'title' => 'required|min:2|max:50',
|
||||
'category_id' => 'required',
|
||||
'description' => 'required|min:4',
|
||||
'content' => 'required|min:4',
|
||||
'storage_id' => 'required',
|
||||
], [
|
||||
'title.required' => '标题必须填写',
|
||||
'title.min' => '标题最少为:min字符',
|
||||
'title.max' => '标题最多为:max字符',
|
||||
'category_id.required' => '分类必须选择',
|
||||
'description.required' => '简介必须填写',
|
||||
'description.min' => '简介最少:min个字',
|
||||
'content.required' => '内容必须填写',
|
||||
'content.min' => '内容最少:min个字',
|
||||
'storage_id.required' => '标题图必须上传',
|
||||
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
|
||||
if (!isset($request->params)) {
|
||||
return $this->error('商品规格必须填写');
|
||||
}
|
||||
|
||||
foreach ($request->params as $p) {
|
||||
$validator = Validator::make($p, [
|
||||
'original' => 'required|numeric|min:0.001',
|
||||
'price' => 'required|numeric|min:0.001',
|
||||
'stock' => 'required|integer|min:1',
|
||||
'heavy' => 'required|numeric|min:0.001',
|
||||
], [
|
||||
'original.required' => '原价必须填写',
|
||||
'original.numeric' => '原价必须为数字',
|
||||
'original.min' => '原价最小值:min',
|
||||
'price.required' => '售价必须填写',
|
||||
'price.numeric' => '售价必须为数字',
|
||||
'price.min' => '售价最小值:min',
|
||||
'stock.required' => '库存必须填写',
|
||||
'stock.integer' => '库存必须为整数',
|
||||
'stock.min' => '库存最小值:min',
|
||||
'heavy.required' => '重量必须填写',
|
||||
'heavy.numeric' => '重量必须为数字',
|
||||
'heavy.min' => '重量最小值:min',
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
DB::transaction(function () use ($request) {
|
||||
$status = 1;
|
||||
if (Admin::user()->seller_id == 1) {
|
||||
$status = 1;
|
||||
}
|
||||
|
||||
$seller_id = Admin::id() == 1 ? $request->seller_id : Admin::user()->seller_id;
|
||||
$goods = Goods::create([
|
||||
'title' => $request->title,
|
||||
'category_id' => $request->category_id,
|
||||
'description' => $request->description,
|
||||
'content' => $request->content,
|
||||
'storage_id' => $request->storage_id,
|
||||
'seller_id' => $seller_id,
|
||||
'status' => $status,
|
||||
]);
|
||||
|
||||
$goods->params()->createMany($request->params);
|
||||
|
||||
});
|
||||
return $this->success('操作成功', 'close');
|
||||
} catch (\Exception $e) {
|
||||
return $this->error('操作失败' . $e->getmessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function edit(Goods $good)
|
||||
{
|
||||
$categoies = Category::treeSelect(91);
|
||||
$sellers = Seller::where('status', 1)->get();
|
||||
return view('Admin::goods.edit', compact('categoies', 'good', 'sellers'));
|
||||
}
|
||||
|
||||
public function magageedit(Goods $good)
|
||||
{
|
||||
$categoies = Category::treeSelect();
|
||||
return view('Admin::goods.magageedit', compact('categoies', 'good'));
|
||||
}
|
||||
|
||||
public function update(Request $request, Goods $good)
|
||||
{
|
||||
|
||||
$validator = Validator::make($request->all(), [
|
||||
'title' => 'required|min:2|max:50',
|
||||
'category_id' => 'required',
|
||||
'description' => 'required|min:4',
|
||||
'content' => 'required|min:4',
|
||||
'storage_id' => 'required',
|
||||
], [
|
||||
'title.required' => '标题必须填写',
|
||||
'title.min' => '标题最少为:min字符',
|
||||
'title.max' => '标题最多为:max字符',
|
||||
'category_id.required' => '分类必须选择',
|
||||
'description.required' => '简介必须填写',
|
||||
'description.min' => '简介最少:min个字',
|
||||
'content.required' => '内容必须填写',
|
||||
'content.min' => '内容最少:min个字',
|
||||
'storage_id.required' => '标题图必须上传',
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
|
||||
if (!isset($request->params)) {
|
||||
return $this->error('商品规格必须填写');
|
||||
}
|
||||
foreach ($request->params as $p) {
|
||||
$validator = Validator::make($p, [
|
||||
'original' => 'required|numeric|min:0.001',
|
||||
'price' => 'required|numeric|min:0.001',
|
||||
// 'score' => 'required|numeric|min:0',
|
||||
'stock' => 'required|integer|min:1',
|
||||
'heavy' => 'required|numeric|min:0.001',
|
||||
], [
|
||||
'original.required' => '原价必须填写',
|
||||
'original.numeric' => '原价必须为数字',
|
||||
'original.min' => '原价最小值:min',
|
||||
'price.required' => '售价必须填写',
|
||||
'price.numeric' => '售价必须为数字',
|
||||
'price.min' => '售价最小值:min',
|
||||
'stock.required' => '库存必须填写',
|
||||
'stock.integer' => '库存必须为整数',
|
||||
'stock.min' => '库存最小值:min',
|
||||
'heavy.required' => '重量必须填写',
|
||||
'heavy.numeric' => '重量必须为数字',
|
||||
'heavy.min' => '重量最小值:min',
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
DB::transaction(function () use ($good, $request) {
|
||||
|
||||
$seller_id = Admin::id() == 1 ? $request->seller_id : Admin::user()->seller_id;
|
||||
|
||||
$good->update([
|
||||
'title' => $request->title,
|
||||
'category_id' => $request->category_id,
|
||||
'description' => $request->description,
|
||||
'content' => $request->content,
|
||||
'seller_id' => $seller_id,
|
||||
'storage_id' => $request->storage_id,
|
||||
]);
|
||||
|
||||
$ids = [];
|
||||
|
||||
foreach ($request->params as $param) {
|
||||
if (isset($param['id'])) {
|
||||
$params = GoodsParams::find($param['id']);
|
||||
$params->update($param);
|
||||
array_push($ids, $param['id']);
|
||||
} else {
|
||||
$params = $good->params()->create($param);
|
||||
array_push($ids, $params['id']);
|
||||
}
|
||||
}
|
||||
$good->params()->where('status', 1)->whereNotIn('id', $ids)->update(['status' => 0, 'stock' => 0]);
|
||||
});
|
||||
return $this->success('操作成功');
|
||||
} catch (\Exception $e) {
|
||||
return $this->error('操作失败' . $e->getmessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function destroy(Goods $good)
|
||||
{
|
||||
// if ($good->seller_id != Admin::user()->seller_id) {
|
||||
// return $this->error('非法操作');
|
||||
// }
|
||||
try {
|
||||
DB::transaction(function () use ($good) {
|
||||
Cart::where('goods_id', $good->id)->delete();
|
||||
// $good->params()->update(['status' => 0, 'stock' => 0]);
|
||||
$good->status = 0;
|
||||
$good->save();
|
||||
});
|
||||
return $this->success('操作成功');
|
||||
} catch (\Exception $e) {
|
||||
return $this->error('操作失败' . $e->getmessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function recycle(Request $request)
|
||||
{
|
||||
$title = $request->title;
|
||||
$orderField = $request->orderField;
|
||||
$orderDirection = $request->orderDirection;
|
||||
$numPerPage = $request->numPerPage ?: 30;
|
||||
|
||||
$goods = Goods::where('seller_id', Admin::user()->seller_id)->onlyTrashed()
|
||||
->when($title, function ($query) use ($title) {
|
||||
$query->where('title', 'like', "%{$title}%");
|
||||
})
|
||||
->when($orderField, function ($query) use ($orderField, $orderDirection) {
|
||||
$query->orderBy($orderField, $orderDirection);
|
||||
})
|
||||
->with(['category', 'seller'])
|
||||
->paginate($numPerPage);
|
||||
return view('Admin::goods.recycle', compact('goods'));
|
||||
}
|
||||
|
||||
/**
|
||||
* 清空回收站
|
||||
* 未考虑删除关联数据的问题
|
||||
* @Author:<C.Jason>
|
||||
* @Date:2018-11-02T13:41:40+0800
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function clean()
|
||||
{
|
||||
if (Goods::where('seller_id', Admin::user()->seller_id)->onlyTrashed()->forceDelete()) {
|
||||
return $this->success();
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 还原
|
||||
* @Author:<C.Jason>
|
||||
* @Date:2018-11-02T13:43:47+0800
|
||||
* @param [type] $user [description]
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function resume($good)
|
||||
{
|
||||
if (Goods::where('seller_id', Admin::user()->seller_id)->withTrashed()->where('id', $good)->restore()) {
|
||||
return $this->success();
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 彻底删除单条目
|
||||
* @Author:<C.Jason>
|
||||
* @Date:2018-11-02T13:43:36+0800
|
||||
* @param [type] $user [description]
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function delete(Goods $good)
|
||||
{
|
||||
try {
|
||||
DB::transaction(function () use ($good) {
|
||||
$good->params()->delete();
|
||||
$good->delete();
|
||||
});
|
||||
return $this->success('操作成功');
|
||||
} catch (\Exception $e) {
|
||||
return $this->error('操作失败' . $e->getmessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function putOn(Request $request, Goods $good)
|
||||
{
|
||||
if ($request->isMethod('PUT')) {
|
||||
$validator = Validator::make($request->all(), [
|
||||
'title' => 'required|min:2|max:50',
|
||||
'category_id' => 'required',
|
||||
'description' => 'required|min:4',
|
||||
'content' => 'required|min:4',
|
||||
'storage_id' => 'required',
|
||||
], [
|
||||
'title.required' => '标题必须填写',
|
||||
'title.min' => '标题最少为:min字符',
|
||||
'title.max' => '标题最多为:max字符',
|
||||
'category_id.required' => '分类必须选择',
|
||||
'description.required' => '简介必须填写',
|
||||
'description.min' => '简介最少:min个字',
|
||||
'content.required' => '内容必须填写',
|
||||
'content.min' => '内容最少:min个字',
|
||||
'storage_id.required' => '标题图必须上传',
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
|
||||
if (!isset($request->params)) {
|
||||
return $this->error('商品规格必须填写');
|
||||
}
|
||||
foreach ($request->params as $p) {
|
||||
$validator = Validator::make($p, [
|
||||
'original' => 'required|numeric|min:0.001',
|
||||
'price' => 'required|numeric|min:0.001',
|
||||
'stock' => 'required|integer|min:1',
|
||||
'heavy' => 'required|numeric|min:0.001',
|
||||
], [
|
||||
'original.required' => '原价必须填写',
|
||||
'original.numeric' => '原价必须为数字',
|
||||
'original.min' => '原价最小值:min',
|
||||
'price.required' => '售价必须填写',
|
||||
'price.numeric' => '售价必须为数字',
|
||||
'price.min' => '售价最小值:min',
|
||||
'stock.required' => '库存必须填写',
|
||||
'stock.integer' => '库存必须为整数',
|
||||
'stock.min' => '库存最小值:min',
|
||||
'heavy.required' => '重量必须填写',
|
||||
'heavy.numeric' => '重量必须为数字',
|
||||
'heavy.min' => '重量最小值:min',
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
if ($p['score'] > $p['price']) {
|
||||
return $this->error('可使用积分数量不能大于商品价格');
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
DB::transaction(function () use ($good, $request) {
|
||||
$good->update([
|
||||
'title' => $request->title,
|
||||
'category_id' => $request->category_id,
|
||||
'description' => $request->description,
|
||||
'content' => $request->content,
|
||||
'storage_id' => $request->storage_id,
|
||||
'status' => 1,
|
||||
]);
|
||||
|
||||
$ids = [];
|
||||
|
||||
foreach ($request->params as $param) {
|
||||
if (isset($param['id'])) {
|
||||
$params = GoodsParams::find($param['id']);
|
||||
$params->update($param);
|
||||
array_push($ids, $param['id']);
|
||||
} else {
|
||||
$params = $good->params()->create($param);
|
||||
array_push($ids, $params['id']);
|
||||
}
|
||||
}
|
||||
});
|
||||
return $this->success('操作成功');
|
||||
} catch (\Exception $e) {
|
||||
return $this->error('操作失败' . $e->getmessage());
|
||||
}
|
||||
} else {
|
||||
$categoies = Category::treeSelect();
|
||||
return view('Admin::goods.putOn', compact('categoies', 'good'));
|
||||
}
|
||||
}
|
||||
|
||||
public function setting(Request $request, Goods $good)
|
||||
{
|
||||
if ($request->isMethod('PUT')) {
|
||||
try {
|
||||
$good->update([
|
||||
'is_recommend' => $request->is_recommend,
|
||||
'is_hot_sell' => $request->is_hot_sell,
|
||||
'is_hot_changed' => $request->is_hot_changed,
|
||||
'is_seller_package' => $request->is_seller_package,
|
||||
'banner_id' => $request->is_seller_package == 1 && $request->banner_id ? $request->banner_id : 0,
|
||||
]);
|
||||
return $this->success('设置成功', 'close');
|
||||
} catch (\Exception $e) {
|
||||
return $this->error('设置失败' . $e->getmessage());
|
||||
}
|
||||
} else {
|
||||
return view('Admin::goods.setting', compact('good'));
|
||||
}
|
||||
}
|
||||
|
||||
public function setgift(Goods $good)
|
||||
{
|
||||
try {
|
||||
DB::transaction(function () use ($good) {
|
||||
$good->is_seller_gift = 1;
|
||||
$good->save();
|
||||
});
|
||||
return $this->success('设置成功');
|
||||
} catch (\Exception $e) {
|
||||
return $this->error('设置失败' . $e->getmessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function cancelgift(Goods $good)
|
||||
{
|
||||
|
||||
try {
|
||||
DB::transaction(function () use ($good) {
|
||||
$good->is_seller_gift = 0;
|
||||
$good->save();
|
||||
});
|
||||
return $this->success('设置成功');
|
||||
} catch (\Exception $e) {
|
||||
return $this->error('设置失败' . $e->getmessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function setlottery(Goods $good)
|
||||
{
|
||||
try {
|
||||
DB::transaction(function () use ($good) {
|
||||
$good->is_lottery_gift = 1;
|
||||
$good->save();
|
||||
});
|
||||
return $this->success('设置成功');
|
||||
} catch (\Exception $e) {
|
||||
return $this->error('设置失败' . $e->getmessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function cancellottery(Goods $good)
|
||||
{
|
||||
|
||||
try {
|
||||
DB::transaction(function () use ($good) {
|
||||
$good->is_lottery_gift = 0;
|
||||
$good->save();
|
||||
});
|
||||
return $this->success('设置成功');
|
||||
} catch (\Exception $e) {
|
||||
return $this->error('设置失败' . $e->getmessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function setFull(Goods $good)
|
||||
{
|
||||
|
||||
try {
|
||||
DB::transaction(function () use ($good) {
|
||||
$good->is_mall_gift = 1;
|
||||
$good->save();
|
||||
});
|
||||
return $this->success('设置成功');
|
||||
} catch (\Exception $e) {
|
||||
return $this->error('设置失败' . $e->getmessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function cancelFull(Goods $good)
|
||||
{
|
||||
|
||||
try {
|
||||
DB::transaction(function () use ($good) {
|
||||
$good->is_mall_gift = 0;
|
||||
$good->save();
|
||||
});
|
||||
return $this->success('设置成功');
|
||||
} catch (\Exception $e) {
|
||||
return $this->error('设置失败' . $e->getmessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
11
app/Admin/Controllers/HomeController.php
Normal file
11
app/Admin/Controllers/HomeController.php
Normal file
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
namespace App\Admin\Controllers;
|
||||
|
||||
class HomeController extends Controller
|
||||
{
|
||||
public function dashboard()
|
||||
{
|
||||
return view('Admin::home.dashboard');
|
||||
}
|
||||
}
|
||||
20
app/Admin/Controllers/JasonController.php
Normal file
20
app/Admin/Controllers/JasonController.php
Normal file
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace App\Admin\Controllers;
|
||||
|
||||
use App\Helpers\CDKEY;
|
||||
|
||||
class JasonController extends Controller
|
||||
{
|
||||
|
||||
public function index()
|
||||
{
|
||||
$s = request()->get('d');
|
||||
dump($s);
|
||||
dump(CDKEY::parse($s));
|
||||
|
||||
($g = CDKEY::generator());
|
||||
echo $g['qrcode'];
|
||||
return [123];
|
||||
}
|
||||
}
|
||||
146
app/Admin/Controllers/LessonController.php
Normal file
146
app/Admin/Controllers/LessonController.php
Normal file
@@ -0,0 +1,146 @@
|
||||
<?php
|
||||
|
||||
namespace App\Admin\Controllers;
|
||||
|
||||
use App\Models\Category;
|
||||
use App\Models\Seller;
|
||||
use App\Models\SellerLesson;
|
||||
use App\Models\SellerLessonLog;
|
||||
use Illuminate\Http\Request;
|
||||
use Validator;
|
||||
|
||||
class LessonController extends Controller
|
||||
{
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
if (\Admin::id() != 1 && \Admin::user()->seller->type != 'organ') {
|
||||
return $this->error('您没有权限');
|
||||
}
|
||||
$title = $request->title;
|
||||
$orderField = $request->orderField;
|
||||
$orderDirection = $request->orderDirection;
|
||||
$numPerPage = $request->numPerPage ?: 30;
|
||||
|
||||
$lists = SellerLesson::with('organ')
|
||||
->withCount('logs')
|
||||
->when($title, function ($query) use ($title) {
|
||||
$query->where('title', 'like', "%" . $title . "%");
|
||||
})
|
||||
->when($orderField, function ($query) use ($orderField, $orderDirection) {
|
||||
$query->orderBy($orderField, $orderDirection);
|
||||
})
|
||||
->paginate($numPerPage);
|
||||
|
||||
return view('Admin::lesson.index', compact('lists'));
|
||||
}
|
||||
|
||||
public function create()
|
||||
{
|
||||
$organs = Seller::where('status', 1)->where('type', 'organ')->get();
|
||||
$categoies = Category::treeSelect(1);
|
||||
|
||||
return view('Admin::lesson.create', compact('organs', 'categoies'));
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'title' => 'required|min:2|max:50',
|
||||
'chapter' => 'required',
|
||||
'price' => 'required',
|
||||
'crowd' => 'required',
|
||||
'crowd_age' => 'required',
|
||||
'maximum' => 'required',
|
||||
'seller_id' => 'required',
|
||||
'description' => 'required',
|
||||
'storage_id' => 'required',
|
||||
'content' => 'required',
|
||||
], [
|
||||
'name.required' => '课程名称必须填写',
|
||||
'name.min' => '课程名称最少为:min字符',
|
||||
'name.max' => '课程名称最多为:max字符',
|
||||
'chapter.required' => '章节数必须填写',
|
||||
'price.required' => '价格必须填写',
|
||||
'crowd.required' => '适合人群必须填写',
|
||||
'crowd_age.required' => '适合年龄必须填写',
|
||||
'maximum.required' => '报名人数必须填写',
|
||||
'seller_id.required' => '机构必须选择',
|
||||
'description.required' => '简介必须填写',
|
||||
'storage_id.required' => '图片必须上传',
|
||||
'content.required' => '详情必须填写',
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
if (SellerLesson::create($request->all())) {
|
||||
return $this->success('', 'close');
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
|
||||
public function edit(SellerLesson $lesson)
|
||||
{
|
||||
$organs = Seller::where('status', 1)->where('type', 'organ')->get();
|
||||
$categoies = Category::treeSelect(1);
|
||||
return view('Admin::lesson.edit', compact('lesson', 'organs', 'categoies'));
|
||||
}
|
||||
|
||||
public function update(Request $request, SellerLesson $lesson)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'title' => 'required|min:2|max:50',
|
||||
'chapter' => 'required',
|
||||
'price' => 'required',
|
||||
'crowd' => 'required',
|
||||
'crowd_age' => 'required',
|
||||
'maximum' => 'required',
|
||||
'seller_id' => 'required',
|
||||
'description' => 'required',
|
||||
'storage_id' => 'required',
|
||||
'content' => 'required',
|
||||
], [
|
||||
'name.required' => '课程名称必须填写',
|
||||
'name.min' => '课程名称最少为:min字符',
|
||||
'name.max' => '课程名称最多为:max字符',
|
||||
'chapter.required' => '章节数必须填写',
|
||||
'price.required' => '价格必须填写',
|
||||
'crowd.required' => '适合人群必须填写',
|
||||
'crowd_age.required' => '适合年龄必须填写',
|
||||
'maximum.required' => '报名人数必须填写',
|
||||
'seller_id.required' => '机构必须选择',
|
||||
'description.required' => '简介必须填写',
|
||||
'storage_id.required' => '图片必须上传',
|
||||
'content.required' => '详情必须填写',
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
|
||||
if ($lesson->update($request->all())) {
|
||||
return $this->success('', 'close');
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
|
||||
public function delete(SellerLesson $lesson)
|
||||
{
|
||||
if ($lesson->delete()) {
|
||||
return $this->success();
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function logs($lesson)
|
||||
{
|
||||
$logs = SellerLessonLog::where('lesson_id', $lesson)->paginate();
|
||||
return view('Admin::lesson.logs', compact('logs'));
|
||||
}
|
||||
|
||||
}
|
||||
264
app/Admin/Controllers/LotteryController.php
Normal file
264
app/Admin/Controllers/LotteryController.php
Normal file
@@ -0,0 +1,264 @@
|
||||
<?php
|
||||
|
||||
namespace App\Admin\Controllers;
|
||||
|
||||
use App\Models\Activity;
|
||||
use App\Models\GoodsParams;
|
||||
use App\Models\Lottery;
|
||||
use App\Models\LotteryGift;
|
||||
use App\Models\LotteryLog;
|
||||
use Illuminate\Http\Request;
|
||||
use RuLong\Coupon\Models\CouponInfo;
|
||||
use Validator;
|
||||
|
||||
class LotteryController extends Controller
|
||||
{
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
$orderField = $request->orderField;
|
||||
$orderDirection = $request->orderDirection;
|
||||
$numPerPage = $request->numPerPage ?: 30;
|
||||
|
||||
$lists = Lottery::withCount('logs')
|
||||
->withCount('gifts')
|
||||
->when($orderField, function ($query) use ($orderField, $orderDirection) {
|
||||
$query->orderBy($orderField, $orderDirection);
|
||||
})
|
||||
->paginate($numPerPage);
|
||||
|
||||
return view('Admin::lottery.index', compact('lists'));
|
||||
}
|
||||
|
||||
public function create()
|
||||
{
|
||||
return view('Admin::lottery.create');
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'title' => 'required|min:2|max:50',
|
||||
'status' => 'required',
|
||||
'start_at' => 'required',
|
||||
'end_at' => 'required',
|
||||
], [
|
||||
'title.required' => '名称必须填写',
|
||||
'title.min' => '名称最少为:min字符',
|
||||
'title.max' => '名称最多为:max字符',
|
||||
'status.required' => '状态必须选择',
|
||||
'start_at.required' => '开始时间填写',
|
||||
'end_at.required' => '结束时间填写',
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
if (Lottery::create($request->all())) {
|
||||
return $this->success('', 'close');
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
|
||||
public function edit(Lottery $lottery)
|
||||
{
|
||||
return view('Admin::lottery.edit', compact('lottery'));
|
||||
}
|
||||
|
||||
public function update(Request $request, Lottery $lottery)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'title' => 'required|min:2|max:50',
|
||||
'status' => 'required',
|
||||
'start_at' => 'required',
|
||||
'end_at' => 'required',
|
||||
], [
|
||||
'title.required' => '名称必须填写',
|
||||
'title.min' => '名称最少为:min字符',
|
||||
'title.max' => '名称最多为:max字符',
|
||||
'status.required' => '状态必须选择',
|
||||
'start_at.required' => '开始时间填写',
|
||||
'end_at.required' => '结束时间填写',
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
if ($lottery->update($request->all())) {
|
||||
return $this->success('', 'close');
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
|
||||
public function logs(Lottery $lottery)
|
||||
{
|
||||
$logs = LotteryLog::where('lottery_id', $lottery->id)->paginate();
|
||||
return view('Admin::lottery.logs', compact('logs'));
|
||||
}
|
||||
|
||||
public function gifts(Request $request, Lottery $lottery)
|
||||
{
|
||||
$lists = LotteryGift::where('lottery_id', $lottery->id)->orderBy('level', 'asc')->paginate();
|
||||
return view('Admin::lottery.gifts', compact('lottery', 'lists'));
|
||||
}
|
||||
|
||||
//添加奖品
|
||||
public function addgifts(Request $request, Lottery $lottery)
|
||||
{
|
||||
$item_type = LotteryGift::$class[$request->type] ?? 'App\Models\GoodsParams';
|
||||
|
||||
if ($request->isMethod('POST')) {
|
||||
$validator = Validator::make($request->all(), [
|
||||
'number' => 'required',
|
||||
'level' => 'required',
|
||||
'chance' => 'required',
|
||||
], [
|
||||
'number.required' => '请输入商品数量',
|
||||
'level.required' => '请选择奖项',
|
||||
'chance.required' => '请填写概率',
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
|
||||
if ($request->type && empty($request->item_id)) {
|
||||
return $this->error('请选择商品');
|
||||
}
|
||||
|
||||
if (!$request->type) {
|
||||
$request->item_id = '';
|
||||
$request->item_type = '';
|
||||
}
|
||||
|
||||
$data = [
|
||||
'level' => $request->level,
|
||||
'lottery_id' => $request->lottery_id,
|
||||
'chance' => $request->chance,
|
||||
'item_id' => $request->item_id,
|
||||
'item_type' => $request->item_type,
|
||||
'type' => $request->type,
|
||||
'number' => $request->number,
|
||||
'site' => LotteryGift::$chances[$request->level],
|
||||
];
|
||||
|
||||
if (LotteryGift::create($data)) {
|
||||
return $this->success('', 'close');
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
} else {
|
||||
$hasLevels = LotteryGift::where('lottery_id', $lottery->id)->pluck('level')->toArray();
|
||||
$params_id = LotteryGift::where('lottery_id', $lottery->id)
|
||||
->where('type', 1)
|
||||
->where('item_type', $item_type)
|
||||
->pluck('item_id')
|
||||
->toArray();
|
||||
|
||||
if ($request->type == 'activity') {
|
||||
$params = Activity::where('status', 1)
|
||||
->whereNotIn('id', $params_id)
|
||||
->get();
|
||||
} elseif ($request->type == 'goods') {
|
||||
$params = GoodsParams::with(['goods'])
|
||||
->whereHas('goods', function ($query) {
|
||||
$query->where('status', 1)->where('is_lottery_gift', 1);
|
||||
})
|
||||
->whereNotIn('id', $params_id)
|
||||
->get();
|
||||
} elseif ($request->type == 'coupon') {
|
||||
$params = CouponInfo::where('status', 1)->where('type', 'lottery')
|
||||
->whereNotIn('id', $params_id)
|
||||
->get();
|
||||
}
|
||||
|
||||
$levels = LotteryGift::$levels;
|
||||
$item_type = LotteryGift::$class[$request->type] ?? 'App\Models\GoodsParams';
|
||||
|
||||
return view('Admin::lottery.addgifts', compact('lottery', 'params', 'levels', 'hasLevels', 'item_type'));
|
||||
}
|
||||
}
|
||||
|
||||
//编辑奖品
|
||||
public function editgifts(Request $request, LotteryGift $gift)
|
||||
{
|
||||
if ($request->isMethod('PUT')) {
|
||||
|
||||
$validator = Validator::make($request->all(), [
|
||||
'number' => 'required',
|
||||
'level' => 'required',
|
||||
'chance' => 'required',
|
||||
'item_id' => 'required',
|
||||
], [
|
||||
'number.required' => '请输入商品数量',
|
||||
'level.required' => '请选择奖项',
|
||||
'chance.required' => '请填写概率',
|
||||
'item_id.required' => '请选择商品',
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
|
||||
$data = [
|
||||
'level' => $request->level,
|
||||
'chance' => $request->chance,
|
||||
'item_id' => $request->item_id,
|
||||
'type' => $request->type,
|
||||
'number' => $request->number,
|
||||
'site' => LotteryGift::$chances[$request->level],
|
||||
];
|
||||
|
||||
if ($gift->update($data)) {
|
||||
return $this->success('', 'close');
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
} else {
|
||||
$hasLevels = LotteryGift::where('lottery_id', $gift->lottery_id)->pluck('level')->toArray();
|
||||
|
||||
$params_id = LotteryGift::where('lottery_id', $gift->lottery_id)
|
||||
->where('type', 1)
|
||||
->where('item_type', $gift->item_type)
|
||||
->where('id', '<>', $gift->id)
|
||||
->pluck('item_id')
|
||||
->toArray();
|
||||
|
||||
if ($gift->item_type == 'App\Models\Activity') {
|
||||
$params = Activity::where('status', 1)
|
||||
->whereNotIn('id', $params_id)
|
||||
->get();
|
||||
} elseif ($gift->item_type == 'App\Models\GoodsParams') {
|
||||
$params = GoodsParams::with(['goods'])
|
||||
->whereHas('goods', function ($query) {
|
||||
$query->where('status', 1)->where('is_lottery_gift', 1);
|
||||
})
|
||||
->whereNotIn('id', $params_id)
|
||||
->get();
|
||||
} elseif ($gift->item_type == 'RuLong\Coupon\Models\CouponInfo') {
|
||||
$params = CouponInfo::where('status', 1)->where('type', 'lottery')
|
||||
->whereNotIn('id', $params_id)
|
||||
->get();
|
||||
} else {
|
||||
$params = collect();
|
||||
}
|
||||
|
||||
$levels = LotteryGift::$levels;
|
||||
|
||||
return view('Admin::lottery.editgifts', compact('gift', 'params', 'levels', 'hasLevels'));
|
||||
}
|
||||
}
|
||||
|
||||
//删除奖品
|
||||
public function delgifts(Request $request, LotteryGift $gift)
|
||||
{
|
||||
if ($gift->delete()) {
|
||||
return $this->success();
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
46
app/Admin/Controllers/NotificationController.php
Normal file
46
app/Admin/Controllers/NotificationController.php
Normal file
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
namespace App\Admin\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Notifications\DatabaseNotification;
|
||||
|
||||
class NotificationController extends Controller
|
||||
{
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
$nickname = $request->nickname;
|
||||
$start = $request->start;
|
||||
$end = $request->end;
|
||||
$orderField = $request->orderField;
|
||||
$orderDirection = $request->orderDirection;
|
||||
$numPerPage = $request->numPerPage ?: 30;
|
||||
|
||||
$notifications = DatabaseNotification::when($start && $end, function ($query) use ($start,$end) {
|
||||
return $query->whereBetween('created_at', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]);
|
||||
})->when($start && !$end, function ($query) use ($start) {
|
||||
return $query->where('created_at', '>=', $start);
|
||||
})->when(!$start && $end, function ($query) use ($end) {
|
||||
return $query->where('created_at', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end))));
|
||||
})->when($orderField, function ($query) use ($orderField, $orderDirection) {
|
||||
$query->orderBy($orderField, $orderDirection);
|
||||
})->orderBy('created_at', 'desc')->paginate($numPerPage);
|
||||
return view('Admin::notifications.index', compact('notifications'));
|
||||
}
|
||||
|
||||
public function destroy(Request $request, $notification)
|
||||
{
|
||||
if ($notification == 'batch') {
|
||||
$result = DatabaseNotification::whereIn('id', $request->ids)->delete();
|
||||
} else {
|
||||
$result = DatabaseNotification::where('id', $notification)->delete();
|
||||
}
|
||||
|
||||
if ($result) {
|
||||
return $this->success();
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
}
|
||||
108
app/Admin/Controllers/OrderAllController.php
Normal file
108
app/Admin/Controllers/OrderAllController.php
Normal file
@@ -0,0 +1,108 @@
|
||||
<?php
|
||||
|
||||
namespace App\Admin\Controllers;
|
||||
|
||||
use Admin;
|
||||
use Illuminate\Http\Request;
|
||||
use RuLong\Order\Models\Order;
|
||||
use App\Models\GoodsParams;
|
||||
use App\Models\Goods;
|
||||
class OrderAllController extends Controller
|
||||
{
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
|
||||
$orderid = $request->orderid;
|
||||
$mobile = $request->mobile;
|
||||
$nickname = $request->nickname;
|
||||
$seller = $request->seller;
|
||||
$state = $request->state;
|
||||
$start = $request->start;
|
||||
$end = $request->end;
|
||||
$title = $request->title;
|
||||
$item_type = $request->item_type;
|
||||
$orderField = $request->orderField;
|
||||
$orderDirection = $request->orderDirection;
|
||||
$numPerPage = $request->numPerPage ?: 30;
|
||||
|
||||
$orders = Order::when($seller, function ($query) use ($seller) {
|
||||
$query->whereHas('seller', function ($query) use ($seller) {
|
||||
$query->where('name', 'like', "%{$seller}%");
|
||||
});
|
||||
})
|
||||
->when($orderid, function ($query) use ($orderid) {
|
||||
$query->where('orderid', 'like', "%{$orderid}%");
|
||||
})
|
||||
->when($mobile, function ($query) use ($mobile) {
|
||||
$query->whereHas('user', function ($query) use ($mobile) {
|
||||
$query->where('mobile', 'like', "%{$mobile}%");
|
||||
});
|
||||
})
|
||||
->when($nickname, function ($query) use ($nickname) {
|
||||
$query->whereHas('user', function ($query) use ($nickname) {
|
||||
return $query->whereHas('info', function ($query) use ($nickname) {
|
||||
$query->where('nickname', 'like', "%{$nickname}%");
|
||||
});
|
||||
});
|
||||
})
|
||||
->when($title, function ($query) use ($title) {
|
||||
$goods_ids = Goods::where('title', 'like',"%{$title}%")->pluck('id');
|
||||
$params_ids = GoodsParams::whereIn('goods_id',$goods_ids)->pluck('id');
|
||||
$query->whereHas('details', function ($query) use ($params_ids) {
|
||||
return $query->whereIn('item_id',$params_ids);
|
||||
});
|
||||
})
|
||||
->when($item_type, function ($query) use($item_type){
|
||||
return $query->where('item_type',$item_type);
|
||||
})
|
||||
->when($state == '', function ($query){
|
||||
return $query->where('state', '<>',Order::ORDER_CLOSED);
|
||||
})
|
||||
->when($state, function ($query) use ($state) {
|
||||
switch ($state) {
|
||||
case 'UNPAY':
|
||||
return $query->where('state', Order::ORDER_UNPAY);
|
||||
break;
|
||||
case 'PAID':
|
||||
return $query->whereIn('state', [Order::ORDER_PAID, Order::ORDER_DELIVER]);
|
||||
break;
|
||||
case 'DELIVERED':
|
||||
return $query->where('state', Order::ORDER_DELIVERED);
|
||||
break;
|
||||
case 'SIGNED':
|
||||
return $query->where('state', Order::ORDER_SIGNED);
|
||||
break;
|
||||
case 'CLOSED':
|
||||
return $query->where('state', Order::ORDER_CLOSED);
|
||||
break;
|
||||
case 'CANCEL':
|
||||
return $query->where('state', Order::ORDER_CANCEL);
|
||||
break;
|
||||
case 'COMPLETED':
|
||||
return $query->where('state', Order::ORDER_COMPLETED);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
})
|
||||
->when($start && $end, function ($query) use ($start, $end) {
|
||||
$query->whereBetween('created_at', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]);
|
||||
})
|
||||
->when($start && !$end, function ($query) use ($start) {
|
||||
$query->where('created_at', '>=', $start);
|
||||
})
|
||||
->when((!$start && $end), function ($query) use ($end) {
|
||||
$query->where('created_at', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end))));
|
||||
})
|
||||
->when($orderField, function ($query) use ($orderField, $orderDirection) {
|
||||
$query->orderBy($orderField, $orderDirection);
|
||||
})
|
||||
->with(['seller', 'user.info'])
|
||||
->orderBy('created_at', 'desc')
|
||||
->paginate($numPerPage);
|
||||
return view('Admin::orders.allSellerOrder', compact('orders'));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
372
app/Admin/Controllers/OrderController.php
Normal file
372
app/Admin/Controllers/OrderController.php
Normal file
@@ -0,0 +1,372 @@
|
||||
<?php
|
||||
|
||||
namespace App\Admin\Controllers;
|
||||
|
||||
use Admin;
|
||||
use App\Models\Goods;
|
||||
use App\Models\GoodsParams;
|
||||
use Illuminate\Http\Request;
|
||||
use Logistic;
|
||||
use RuLong\Order\Models\Order;
|
||||
|
||||
class OrderController extends Controller
|
||||
{
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
$orderid = $request->orderid;
|
||||
$mobile = $request->mobile;
|
||||
$nickname = $request->nickname;
|
||||
$state = $request->state;
|
||||
$start = $request->start;
|
||||
$end = $request->end;
|
||||
$title = $request->title;
|
||||
$item_type = $request->item_type;
|
||||
$orderField = $request->orderField;
|
||||
$orderDirection = $request->orderDirection;
|
||||
$numPerPage = $request->numPerPage ?: 30;
|
||||
$admin = Admin::user();
|
||||
|
||||
$orders = Order::when($admin->id > 1, function ($query) use ($admin) {
|
||||
$query->where('seller_id', $admin->seller_id);
|
||||
})
|
||||
->when($orderid, function ($query) use ($orderid) {
|
||||
$query->where('orderid', 'like', "%{$orderid}%");
|
||||
})
|
||||
->when($mobile, function ($query) use ($mobile) {
|
||||
$query->whereHas('user', function ($query) use ($mobile) {
|
||||
$query->where('mobile', 'like', "%{$mobile}%");
|
||||
});
|
||||
})
|
||||
->when($nickname, function ($query) use ($nickname) {
|
||||
$query->whereHas('user', function ($query) use ($nickname) {
|
||||
return $query->whereHas('info', function ($query) use ($nickname) {
|
||||
$query->where('nickname', 'like', "%{$nickname}%");
|
||||
});
|
||||
});
|
||||
})
|
||||
->when($title, function ($query) use ($title) {
|
||||
$goods_ids = Goods::where('title', 'like', "%{$title}%")->pluck('id');
|
||||
$params_ids = GoodsParams::whereIn('goods_id', $goods_ids)->pluck('id');
|
||||
$query->whereHas('details', function ($query) use ($params_ids) {
|
||||
return $query->whereIn('item_id', $params_ids);
|
||||
});
|
||||
})
|
||||
->when($item_type, function ($query) use ($item_type) {
|
||||
return $query->where('item_type', $item_type);
|
||||
})
|
||||
->when($state == '', function ($query) {
|
||||
return $query->where('state', '<>', Order::ORDER_CLOSED);
|
||||
})
|
||||
->when($state, function ($query) use ($state) {
|
||||
switch ($state) {
|
||||
case 'UNPAY':
|
||||
return $query->where('state', Order::ORDER_UNPAY);
|
||||
break;
|
||||
case 'PAID':
|
||||
return $query->whereIn('state', [Order::ORDER_PAID, Order::ORDER_DELIVER]);
|
||||
break;
|
||||
case 'DELIVERED':
|
||||
return $query->where('state', Order::ORDER_DELIVERED);
|
||||
break;
|
||||
case 'SIGNED':
|
||||
return $query->where('state', Order::ORDER_SIGNED);
|
||||
break;
|
||||
case 'CLOSED':
|
||||
return $query->where('state', Order::ORDER_CLOSED);
|
||||
break;
|
||||
case 'CANCEL':
|
||||
return $query->where('state', Order::ORDER_CANCEL);
|
||||
break;
|
||||
case 'COMPLETED':
|
||||
return $query->where('state', Order::ORDER_COMPLETED);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
})
|
||||
->when($start && $end, function ($query) use ($start, $end) {
|
||||
$query->whereBetween('created_at', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]);
|
||||
})
|
||||
->when($start && !$end, function ($query) use ($start) {
|
||||
$query->where('created_at', '>=', $start);
|
||||
})
|
||||
->when((!$start && $end), function ($query) use ($end) {
|
||||
$query->where('created_at', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end))));
|
||||
})
|
||||
->when($orderField, function ($query) use ($orderField, $orderDirection) {
|
||||
$query->orderBy($orderField, $orderDirection);
|
||||
})
|
||||
->with(['seller', 'user.info'])
|
||||
->orderBy('created_at', 'desc')
|
||||
->paginate($numPerPage);
|
||||
return view('Admin::orders.index', compact('orders'));
|
||||
}
|
||||
|
||||
public function unpay(Request $request)
|
||||
{
|
||||
$orderid = $request->orderid;
|
||||
$mobile = $request->mobile;
|
||||
$nickname = $request->nickname;
|
||||
$start = $request->start;
|
||||
$end = $request->end;
|
||||
$title = $request->title;
|
||||
$item_type = $request->item_type;
|
||||
$orderField = $request->orderField;
|
||||
$orderDirection = $request->orderDirection;
|
||||
$numPerPage = $request->numPerPage ?: 30;
|
||||
|
||||
$orders = Order::Unpaid()->where('seller_id', Admin::user()->seller_id)
|
||||
->when($orderid, function ($query) use ($orderid) {
|
||||
$query->where('orderid', 'like', "%{$orderid}%");
|
||||
})
|
||||
->when($mobile, function ($query) use ($mobile) {
|
||||
$query->whereHas('user', function ($query) use ($mobile) {
|
||||
$query->where('mobile', 'like', "%{$mobile}%");
|
||||
});
|
||||
})
|
||||
->when($nickname, function ($query) use ($nickname) {
|
||||
$query->whereHas('user', function ($query) use ($nickname) {
|
||||
return $query->whereHas('info', function ($query) use ($nickname) {
|
||||
$query->where('nickname', 'like', "%{$nickname}%");
|
||||
});
|
||||
});
|
||||
})
|
||||
->when($title, function ($query) use ($title) {
|
||||
$goods_ids = Goods::where('title', 'like', "%{$title}%")->pluck('id');
|
||||
$params_ids = GoodsParams::whereIn('goods_id', $goods_ids)->pluck('id');
|
||||
$query->whereHas('details', function ($query) use ($params_ids) {
|
||||
return $query->whereIn('item_id', $params_ids);
|
||||
});
|
||||
})
|
||||
->when($item_type, function ($query) use ($item_type) {
|
||||
return $query->where('item_type', $item_type);
|
||||
})
|
||||
->when($start && $end, function ($query) use ($start, $end) {
|
||||
return $query->whereBetween('created_at', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]);
|
||||
})
|
||||
->when($start && !$end, function ($query) use ($start) {
|
||||
return $query->where('created_at', '>=', $start);
|
||||
})
|
||||
->when(!$start && $end, function ($query) use ($end) {
|
||||
return $query->where('created_at', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end))));
|
||||
})
|
||||
->when($orderField, function ($query) use ($orderField, $orderDirection) {
|
||||
$query->orderBy($orderField, $orderDirection);
|
||||
})
|
||||
->with(['seller', 'user.info'])
|
||||
->orderBy('created_at', 'desc')
|
||||
->paginate($numPerPage);
|
||||
|
||||
return view('Admin::orders.index', compact('orders'));
|
||||
}
|
||||
|
||||
public function paid(Request $request)
|
||||
{
|
||||
$orderid = $request->orderid;
|
||||
$mobile = $request->mobile;
|
||||
$nickname = $request->nickname;
|
||||
$start = $request->start;
|
||||
$end = $request->end;
|
||||
$title = $request->title;
|
||||
$item_type = $request->item_type;
|
||||
$orderField = $request->orderField;
|
||||
$orderDirection = $request->orderDirection;
|
||||
$numPerPage = $request->numPerPage ?: 30;
|
||||
|
||||
$orders = Order::UnDeliver()->where('seller_id', Admin::user()->seller_id)
|
||||
->when($orderid, function ($query) use ($orderid) {
|
||||
$query->where('orderid', 'like', "%{$orderid}%");
|
||||
})
|
||||
->when($mobile, function ($query) use ($mobile) {
|
||||
$query->whereHas('user', function ($query) use ($mobile) {
|
||||
$query->where('mobile', 'like', "%{$mobile}%");
|
||||
});
|
||||
})
|
||||
->when($nickname, function ($query) use ($nickname) {
|
||||
$query->whereHas('user', function ($query) use ($nickname) {
|
||||
return $query->whereHas('info', function ($query) use ($nickname) {
|
||||
$query->where('nickname', 'like', "%{$nickname}%");
|
||||
});
|
||||
});
|
||||
})
|
||||
->when($title, function ($query) use ($title) {
|
||||
$goods_ids = Goods::where('title', 'like', "%{$title}%")->pluck('id');
|
||||
$params_ids = GoodsParams::whereIn('goods_id', $goods_ids)->pluck('id');
|
||||
$query->whereHas('details', function ($query) use ($params_ids) {
|
||||
return $query->whereIn('item_id', $params_ids);
|
||||
});
|
||||
})
|
||||
->when($item_type, function ($query) use ($item_type) {
|
||||
return $query->where('item_type', $item_type);
|
||||
})
|
||||
->when($start && $end, function ($query) use ($start, $end) {
|
||||
return $query->whereBetween('created_at', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]);
|
||||
})
|
||||
->when($start && !$end, function ($query) use ($start) {
|
||||
return $query->where('created_at', '>=', $start);
|
||||
})
|
||||
->when(!$start && $end, function ($query) use ($end) {
|
||||
return $query->where('created_at', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end))));
|
||||
})
|
||||
->when($orderField, function ($query) use ($orderField, $orderDirection) {
|
||||
$query->orderBy($orderField, $orderDirection);
|
||||
})
|
||||
->with(['seller', 'user.info'])
|
||||
->orderBy('created_at', 'desc')
|
||||
->paginate($numPerPage);
|
||||
|
||||
return view('Admin::orders.index', compact('orders'));
|
||||
}
|
||||
|
||||
public function signed(Request $request)
|
||||
{
|
||||
|
||||
$orderid = $request->orderid;
|
||||
$mobile = $request->mobile;
|
||||
$nickname = $request->nickname;
|
||||
$start = $request->start;
|
||||
$end = $request->end;
|
||||
$title = $request->title;
|
||||
$item_type = $request->item_type;
|
||||
$orderField = $request->orderField;
|
||||
$orderDirection = $request->orderDirection;
|
||||
$numPerPage = $request->numPerPage ?: 30;
|
||||
|
||||
$orders = Order::Signed()->where('seller_id', Admin::user()->seller_id)
|
||||
->when($orderid, function ($query) use ($orderid) {
|
||||
$query->where('orderid', 'like', "%{$orderid}%");
|
||||
})
|
||||
->when($mobile, function ($query) use ($mobile) {
|
||||
$query->whereHas('user', function ($query) use ($mobile) {
|
||||
$query->where('mobile', 'like', "%{$mobile}%");
|
||||
});
|
||||
})
|
||||
->when($nickname, function ($query) use ($nickname) {
|
||||
$query->whereHas('user', function ($query) use ($nickname) {
|
||||
return $query->whereHas('info', function ($query) use ($nickname) {
|
||||
$query->where('nickname', 'like', "%{$nickname}%");
|
||||
});
|
||||
});
|
||||
})
|
||||
->when($item_type, function ($query) use ($item_type) {
|
||||
return $query->where('item_type', $item_type);
|
||||
})
|
||||
->when($title, function ($query) use ($title) {
|
||||
$goods_ids = Goods::where('title', 'like', "%{$title}%")->pluck('id');
|
||||
$params_ids = GoodsParams::whereIn('goods_id', $goods_ids)->pluck('id');
|
||||
$query->whereHas('details', function ($query) use ($params_ids) {
|
||||
return $query->whereIn('item_id', $params_ids);
|
||||
});
|
||||
})
|
||||
->when($start && $end, function ($query) use ($start, $end) {
|
||||
return $query->whereBetween('created_at', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]);
|
||||
})
|
||||
->when($start && !$end, function ($query) use ($start) {
|
||||
return $query->where('created_at', '>=', $start);
|
||||
})
|
||||
->when(!$start && $end, function ($query) use ($end) {
|
||||
return $query->where('created_at', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end))));
|
||||
})
|
||||
->when($orderField, function ($query) use ($orderField, $orderDirection) {
|
||||
$query->orderBy($orderField, $orderDirection);
|
||||
})
|
||||
->with(['seller', 'user.info'])
|
||||
->orderBy('created_at', 'desc')
|
||||
->paginate($numPerPage);
|
||||
|
||||
return view('Admin::orders.index', compact('orders'));
|
||||
}
|
||||
|
||||
public function show(Order $order)
|
||||
{
|
||||
return view('Admin::orders.show', compact('order'));
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单发货
|
||||
* @Author:<C.Jason>
|
||||
* @Date:2018-11-02T14:47:34+0800
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function deliver(Request $request, Order $order)
|
||||
{
|
||||
if ($request->isMethod('PUT')) {
|
||||
try {
|
||||
$order->deliver($request->company, $request->number);
|
||||
return $this->success('发货成功', 'close');
|
||||
} catch (\Exception $e) {
|
||||
return $this->error('发货失败' . $e->getmessage());
|
||||
}
|
||||
} else {
|
||||
return view('Admin::orders.deliver', compact('order'));
|
||||
}
|
||||
}
|
||||
|
||||
public function signin(Order $order)
|
||||
{
|
||||
try {
|
||||
$order->deliver('自提', '自提');
|
||||
$order->signin();
|
||||
return $this->success('操作成功');
|
||||
} catch (\Exception $e) {
|
||||
return $this->error('操作失败' . $e->getmessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单发货
|
||||
* @Author:<C.Jason>
|
||||
* @Date:2018-11-02T14:47:34+0800
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function remark(Request $request, Order $order)
|
||||
{
|
||||
if ($request->isMethod('PUT')) {
|
||||
try {
|
||||
$order->remark_mgr = $request->remark_mgr;
|
||||
$order->save();
|
||||
return $this->success('备注成功', 'close');
|
||||
} catch (\Exception $e) {
|
||||
return $this->error('备注失败' . $e->getmessage());
|
||||
}
|
||||
} else {
|
||||
return view('Admin::orders.remark', compact('order'));
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 取消订单
|
||||
* @Author:<C.Jason>
|
||||
* @Date:2018-11-02T14:45:57+0800
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function destroy()
|
||||
{}
|
||||
|
||||
public function close(Order $order)
|
||||
{
|
||||
try {
|
||||
$order->close();
|
||||
return $this->success('操作成功');
|
||||
} catch (\Exception $e) {
|
||||
return $this->error('操作失败' . $e->getmessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function complete(Order $order)
|
||||
{
|
||||
try {
|
||||
$order->complete();
|
||||
return $this->success('操作成功');
|
||||
} catch (\Exception $e) {
|
||||
return $this->error('操作失败' . $e->getmessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function logistic(Order $order)
|
||||
{
|
||||
$message = Logistic::getMessage($order->express->company ?? '', $order->express->number ?? ''); //类型csn,编号
|
||||
return view('Admin::orders.logistic', compact('order', 'message'));
|
||||
}
|
||||
|
||||
}
|
||||
184
app/Admin/Controllers/OrderDataController.php
Normal file
184
app/Admin/Controllers/OrderDataController.php
Normal file
@@ -0,0 +1,184 @@
|
||||
<?php
|
||||
|
||||
namespace App\Admin\Controllers;
|
||||
|
||||
use App\Models\SalesReport;
|
||||
use Illuminate\Http\Request;
|
||||
use Admin;
|
||||
use RuLong\Order\Models\Order;
|
||||
use App\Models\GoodsParams;
|
||||
use App\Models\Goods;
|
||||
use RuLong\Order\Models\OrderDetail;
|
||||
use App\Models\Seller;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
class OrderDataController extends Controller
|
||||
{
|
||||
|
||||
public function report(Request $request)
|
||||
{
|
||||
$seller_id = Admin::id() == 1 ? $request->seller_id : Admin::user()->seller_id;
|
||||
$numPerPage = $request->numPerPage ?: 100;
|
||||
$start = $request->start;
|
||||
$end = $request->end;
|
||||
|
||||
$reports = SalesReport::when($seller_id,function ($q) use($seller_id){$q->where('seller_id', $seller_id);})
|
||||
->where('state','DELIVERED')
|
||||
->when($start && $end, function ($query) use ($start, $end) {
|
||||
$query->whereBetween('action_time', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]);
|
||||
})
|
||||
->when($start && !$end, function ($query) use ($start) {
|
||||
$query->where('action_time', '>=', $start);
|
||||
})
|
||||
->when((!$start && $end), function ($query) use ($end) {
|
||||
$query->where('action_time', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end))));
|
||||
})->orderBy('seller_id','asc')->orderBy('action_time','desc')->paginate($numPerPage);
|
||||
|
||||
$sellers = Seller::where('status', 1)->get();
|
||||
|
||||
return view('Admin::orderData.report', compact('reports','sellers'));
|
||||
}
|
||||
public function signed(Request $request)
|
||||
{
|
||||
$seller_id = Admin::id() == 1 ? $request->seller_id : Admin::user()->seller_id;
|
||||
$numPerPage = $request->numPerPage ?: 100;
|
||||
$start = $request->start;
|
||||
$end = $request->end;
|
||||
|
||||
$reports = SalesReport::when($seller_id,function ($q) use($seller_id){$q->where('seller_id', $seller_id);})
|
||||
->where('state','SIGNED')
|
||||
->when($start && $end, function ($query) use ($start, $end) {
|
||||
$query->whereBetween('action_time', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]);
|
||||
})
|
||||
->when($start && !$end, function ($query) use ($start) {
|
||||
$query->where('action_time', '>=', $start);
|
||||
})
|
||||
->when((!$start && $end), function ($query) use ($end) {
|
||||
$query->where('action_time', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end))));
|
||||
})->orderBy('seller_id','asc')->orderBy('action_time','desc')->paginate($numPerPage);
|
||||
|
||||
$sellers = Seller::where('status', 1)->get();
|
||||
|
||||
return view('Admin::orderData.signed', compact('reports','sellers'));
|
||||
}
|
||||
|
||||
|
||||
public function order(Request $request)
|
||||
{
|
||||
$sellers = Seller::where('status', 1)->get();
|
||||
|
||||
$orderid = $request->orderid;
|
||||
$mobile = $request->mobile;
|
||||
$nickname = $request->nickname;
|
||||
$start = $request->start;
|
||||
$end = $request->end;
|
||||
$item_id = $request->item_id;
|
||||
$item_type = $request->item_type;
|
||||
$type = $request->type;
|
||||
$orderField = $request->orderField;
|
||||
$orderDirection = $request->orderDirection;
|
||||
$numPerPage = $request->numPerPage ?: 30;
|
||||
|
||||
$seller_id = Admin::id() == 1 ? $request->seller_id : Admin::user()->seller_id;
|
||||
|
||||
$orders = Order::when($seller_id,function ($q) use($seller_id){$q->where('seller_id', $seller_id);})
|
||||
->when($orderid, function ($query) use ($orderid) {
|
||||
$query->where('orderid', 'like', "%{$orderid}%");
|
||||
})
|
||||
->when($mobile, function ($query) use ($mobile) {
|
||||
$query->whereHas('user', function ($query) use ($mobile) {
|
||||
$query->where('mobile', 'like', "%{$mobile}%");
|
||||
});
|
||||
})
|
||||
->when($nickname, function ($query) use ($nickname) {
|
||||
$query->whereHas('user', function ($query) use ($nickname) {
|
||||
return $query->whereHas('info', function ($query) use ($nickname) {
|
||||
$query->where('nickname', 'like', "%{$nickname}%");
|
||||
});
|
||||
});
|
||||
})
|
||||
->when($item_id, function ($query) use ($item_id) {
|
||||
$query->whereHas('details', function ($query) use ($item_id) {
|
||||
return $query->where('item_id',$item_id);
|
||||
});
|
||||
})
|
||||
->when($item_type, function ($query) use($item_type){
|
||||
return $query->where('item_type',$item_type);
|
||||
})->
|
||||
whereHas('logs', function ($query) use ($start,$end,$type) {
|
||||
$query->where('state',$type)->when($start && $end, function ($query) use ($start, $end) {
|
||||
$query->whereBetween('created_at', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]);
|
||||
})
|
||||
->when($start && !$end, function ($query) use ($start) {
|
||||
$query->where('created_at', '>=', $start);
|
||||
})
|
||||
->when((!$start && $end), function ($query) use ($end) {
|
||||
$query->where('created_at', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end))));
|
||||
});
|
||||
})->where('state', '<>',Order::ORDER_CLOSED)
|
||||
->when($orderField, function ($query) use ($orderField, $orderDirection) {
|
||||
$query->orderBy($orderField, $orderDirection);
|
||||
})
|
||||
->with(['seller', 'user.info'])
|
||||
->orderBy('created_at', 'desc')
|
||||
->paginate($numPerPage);
|
||||
return view('Admin::orderData.order', compact('sellers','orders','type','item_id'));
|
||||
}
|
||||
|
||||
public function dashboard(Request $request)
|
||||
{
|
||||
|
||||
//已签收
|
||||
//已经发货
|
||||
//日期,商户,已发货订单总量,已发货订单总额,订单商品总成本,已发货商品总计,销售价格总计,抵值积分总计,商家结算总计,
|
||||
|
||||
$sellerids = Seller::get();
|
||||
$start_arr = ['2019-01-22'];
|
||||
foreach ($start_arr as $starta){
|
||||
foreach ($sellerids as $key => $seller){
|
||||
$seller_id = $seller->id;
|
||||
$start = date($starta, strtotime('-1 day'));
|
||||
$end = date($starta);
|
||||
$orderids[$key] = Order::when($seller_id,function ($q) use($seller_id){$q->where('seller_id', $seller_id);})
|
||||
->whereHas('logs', function ($query) use ($start,$end) {
|
||||
$query->where('state','PAID|DELIVERED')->when($start && $end, function ($query) use ($start, $end) {
|
||||
$query->whereBetween('created_at', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]);
|
||||
})
|
||||
->when($start && !$end, function ($query) use ($start) {
|
||||
$query->where('created_at', '>=', $start);
|
||||
})
|
||||
->when((!$start && $end), function ($query) use ($end) {
|
||||
$query->where('created_at', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end))));
|
||||
});
|
||||
})->where('state', '<>',Order::ORDER_CLOSED)->pluck('id');
|
||||
if(!empty($orderids[$key])){
|
||||
$detail[$key] = OrderDetail::select(DB::raw('sum(number) as number_sum, sum(score * number) as score_sum, sum(price * number) as price_sum, sum(seller_price * number) as seller_price_sum'))
|
||||
->whereIn('order_id',$orderids[$key])->first();
|
||||
if(!empty($detail[$key]) && $detail[$key]->number_sum){
|
||||
$order[$key] = Order::select(DB::raw('count(*) as order_total, sum(freight) as freight_sum, sum(seller_freight) as seller_freight_sum, sum(amount) as orders_price, sum(score) as orders_score,sum(seller_amount) as seller_amount_sum'))
|
||||
->whereIn('id',$orderids[$key])->first();
|
||||
$report[$key] = SalesReport::where(['seller_id'=>$seller_id,'state'=>'DELIVERED','action_time'=>$starta])->first();
|
||||
if(empty($report[$key])){
|
||||
SalesReport::create([
|
||||
'state'=>'DELIVERED',
|
||||
'action_time'=>$starta,
|
||||
'goods_total'=>$detail[$key]->number_sum,
|
||||
'goods_price_total'=>$detail[$key]->price_sum,
|
||||
'goods_score_total'=>$detail[$key]->score_sum,
|
||||
'orders_total'=>$order[$key]->order_total,
|
||||
'orders_price'=>$order[$key]->orders_price,
|
||||
'orders_score'=>$order[$key]->orders_score,
|
||||
'orders_freight'=>$order[$key]->freight_sum,
|
||||
'seller_id'=>$seller_id,
|
||||
'seller_total'=>$order[$key]->seller_amount_sum,
|
||||
'seller_freight'=>$order[$key]->seller_freight_sum,
|
||||
]);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
189
app/Admin/Controllers/OrganController.php##
Normal file
189
app/Admin/Controllers/OrganController.php##
Normal file
@@ -0,0 +1,189 @@
|
||||
<?php
|
||||
|
||||
namespace App\Admin\Controllers;
|
||||
|
||||
use Admin;
|
||||
use App\Models\Category;
|
||||
use App\Models\Organ;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Validator;
|
||||
|
||||
class OrganController extends Controller
|
||||
{
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
$title = $request->title;
|
||||
$orderField = $request->orderField;
|
||||
$orderDirection = $request->orderDirection;
|
||||
$numPerPage = $request->numPerPage ?: 30;
|
||||
$start = $request->start;
|
||||
$end = $request->end;
|
||||
|
||||
$lists = Organ::when($title, function ($query) use ($title) {
|
||||
$query->where('title', 'like', "%{$title}%");
|
||||
})
|
||||
->when($orderField, function ($query) use ($orderField, $orderDirection) {
|
||||
$query->orderBy($orderField, $orderDirection);
|
||||
})
|
||||
->orderBy('created_at', 'desc')
|
||||
->when($start && $end, function ($query) use ($start, $end) {
|
||||
return $query->whereBetween('created_at', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]);
|
||||
})->when($start && !$end, function ($query) use ($start) {
|
||||
return $query->where('created_at', '>=', $start);
|
||||
})->when(!$start && $end, function ($query) use ($end) {
|
||||
return $query->where('created_at', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end))));
|
||||
})
|
||||
->paginate($numPerPage);
|
||||
|
||||
return view('Admin::organ.index', compact('lists'));
|
||||
}
|
||||
|
||||
public function create()
|
||||
{
|
||||
$provinces = \Area::index(0);
|
||||
$categoies = Category::treeSelect(1);
|
||||
dd(1);
|
||||
return view('Admin::organ.create', compact('provinces', 'categoies'));
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'title' => 'required|min:2|max:50',
|
||||
'mobile' => 'required',
|
||||
'wechat' => 'required',
|
||||
'province_sn' => 'required',
|
||||
'city_sn' => 'required',
|
||||
'area_sn' => 'required',
|
||||
'address' => 'required',
|
||||
'description' => 'required|min:4',
|
||||
'content' => 'required|min:4',
|
||||
'storage_id' => 'required',
|
||||
], [
|
||||
'title.required' => '机构名称必须填写',
|
||||
'title.min' => '机构名称最少为:min字符',
|
||||
'title.max' => '机构名称最多为:max字符',
|
||||
'mobile.required' => '电话必须填写',
|
||||
'wechat.required' => '微信必须填写',
|
||||
'province_sn.required' => '请选择省',
|
||||
'city_sn.required' => '请选择市',
|
||||
'area_sn.required' => '请选择区',
|
||||
'address.required' => '地址必须填写',
|
||||
'description.required' => '简介必须填写',
|
||||
'description.min' => '简介最少:min个字',
|
||||
'content.required' => '内容必须填写',
|
||||
'content.min' => '内容最少:min个字',
|
||||
'storage_id.required' => '图片必须上传',
|
||||
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
|
||||
try {
|
||||
DB::transaction(function () use ($request) {
|
||||
|
||||
$organ = Organ::create($request->all());
|
||||
|
||||
});
|
||||
return $this->success('操作成功', 'close');
|
||||
} catch (\Exception $e) {
|
||||
return $this->error('操作失败' . $e->getmessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function edit(Organ $organ)
|
||||
{
|
||||
$provinces = \Area::index(0);
|
||||
$cities = \Area::index($organ->province_sn);
|
||||
$areas = \Area::index($organ->city_sn);
|
||||
$categoies = Category::treeSelect(1);
|
||||
return view('Admin::organ.edit', compact('organ', 'provinces', 'cities', 'areas', 'categoies'));
|
||||
}
|
||||
|
||||
public function update(Request $request, Organ $organ)
|
||||
{
|
||||
|
||||
$validator = Validator::make($request->all(), [
|
||||
'title' => 'required|min:2|max:50',
|
||||
'mobile' => 'required',
|
||||
'wechat' => 'required',
|
||||
'province_sn' => 'required',
|
||||
'city_sn' => 'required',
|
||||
'area_sn' => 'required',
|
||||
'address' => 'required',
|
||||
'description' => 'required|min:4',
|
||||
'content' => 'required|min:4',
|
||||
'storage_id' => 'required',
|
||||
], [
|
||||
'title.required' => '机构名称必须填写',
|
||||
'title.min' => '机构名称最少为:min字符',
|
||||
'title.max' => '机构名称最多为:max字符',
|
||||
'mobile.required' => '电话必须填写',
|
||||
'wechat.required' => '微信必须填写',
|
||||
'province_sn.required' => '请选择省',
|
||||
'city_sn.required' => '请选择市',
|
||||
'area_sn.required' => '请选择区',
|
||||
'address.required' => '地址必须填写',
|
||||
'description.required' => '简介必须填写',
|
||||
'description.min' => '简介最少:min个字',
|
||||
'content.required' => '内容必须填写',
|
||||
'content.min' => '内容最少:min个字',
|
||||
'storage_id.required' => '图片必须上传',
|
||||
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
|
||||
try {
|
||||
DB::transaction(function () use ($organ, $request) {
|
||||
|
||||
$organ->update($request->all());
|
||||
});
|
||||
return $this->success('操作成功', 'close');
|
||||
} catch (\Exception $e) {
|
||||
return $this->error('操作失败' . $e->getmessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function destroy(Organ $organ)
|
||||
{
|
||||
try {
|
||||
DB::transaction(function () use ($organ) {
|
||||
$organ->status = 0;
|
||||
$organ->save();
|
||||
});
|
||||
return $this->success('操作成功');
|
||||
} catch (\Exception $e) {
|
||||
return $this->error('操作失败' . $e->getmessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 彻底删除单条目
|
||||
* @Author:<C.Jason>
|
||||
* @Date:2018-11-02T13:43:36+0800
|
||||
* @param [type] $user [description]
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function delete(Organ $organ)
|
||||
{
|
||||
try {
|
||||
DB::transaction(function () use ($organ) {
|
||||
$organ->delete();
|
||||
});
|
||||
return $this->success('操作成功');
|
||||
} catch (\Exception $e) {
|
||||
return $this->error('操作失败' . $e->getmessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
102
app/Admin/Controllers/ParamController.php
Normal file
102
app/Admin/Controllers/ParamController.php
Normal file
@@ -0,0 +1,102 @@
|
||||
<?php
|
||||
|
||||
namespace App\Admin\Controllers;
|
||||
|
||||
use App\Models\Param;
|
||||
use Illuminate\Http\Request;
|
||||
use Validator;
|
||||
|
||||
class ParamController extends Controller
|
||||
{
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
$title = $request->title;
|
||||
$name = $request->name;
|
||||
$orderField = $request->orderField;
|
||||
$orderDirection = $request->orderDirection;
|
||||
$numPerPage = $request->numPerPage ?: 30;
|
||||
|
||||
$params = Param::when($title, function ($query) use ($title) {
|
||||
$query->where('title', 'like', "%{$title}%");
|
||||
})->when($name, function ($query) use ($name) {
|
||||
$query->where('name', 'like', "%{$name}%");
|
||||
})->when($orderField, function ($query) use ($orderField, $orderDirection) {
|
||||
$query->orderBy($orderField, $orderDirection);
|
||||
})->paginate($numPerPage);
|
||||
|
||||
return view('Admin::params.index', compact('params'));
|
||||
}
|
||||
|
||||
public function create()
|
||||
{
|
||||
return view('Admin::params.create');
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'title' => 'required|between:2,50',
|
||||
'name' => 'required|between:2,50|unique:params',
|
||||
'value' => 'required',
|
||||
], [
|
||||
'title.required' => '参数标题必须填写',
|
||||
'title.between' => '参数标题长度:min-:max字符',
|
||||
'name.required' => '调用名称必须填写',
|
||||
'name.between' => '调用名称长度:min-:max字符',
|
||||
'name.unique' => '调用名称已经存在',
|
||||
'value.required' => '参数值必须填写',
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
|
||||
if (Param::create($request->all())) {
|
||||
return $this->success('', 'close');
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
|
||||
public function edit(Param $param)
|
||||
{
|
||||
return view('Admin::params.edit', compact('param'));
|
||||
}
|
||||
|
||||
public function update(Request $request, Param $param)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'title' => 'required|between:2,50',
|
||||
'name' => 'required|between:2,50',
|
||||
'value' => 'required',
|
||||
], [
|
||||
'title.required' => '参数标题必须填写',
|
||||
'title.between' => '参数标题长度:min-:max字符',
|
||||
'name.required' => '调用名称必须填写',
|
||||
'name.between' => '调用名称长度:min-:max字符',
|
||||
'name.unique' => '调用名称已经存在',
|
||||
'value.required' => '参数值必须填写',
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
|
||||
if ($param->update($request->all())) {
|
||||
return $this->success('', 'close');
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function destroy(Param $param)
|
||||
{
|
||||
if ($param->delete()) {
|
||||
return $this->success();
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
}
|
||||
78
app/Admin/Controllers/PaymentController.php
Normal file
78
app/Admin/Controllers/PaymentController.php
Normal file
@@ -0,0 +1,78 @@
|
||||
<?php
|
||||
|
||||
namespace App\Admin\Controllers;
|
||||
|
||||
use App\Models\Payment;
|
||||
use App\Models\VipPament;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class PaymentController extends Controller
|
||||
{
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
|
||||
$orderid = $request->orderid;
|
||||
$trade_no = $request->trade_no;
|
||||
$start = $request->start;
|
||||
$end = $request->end;
|
||||
$orderField = $request->orderField;
|
||||
$orderDirection = $request->orderDirection;
|
||||
$numPerPage = $request->numPerPage ?: 30;
|
||||
|
||||
$payments = Payment::when($trade_no, function ($query) use ($trade_no) {
|
||||
$query->where('trade_no', 'like', "%{$trade_no}%");
|
||||
})->when($orderid, function ($query) use ($orderid) {
|
||||
$query->whereHas('order', function ($query) use ($orderid) {
|
||||
$query->where('orderid', 'like', "%{$orderid}%");
|
||||
});
|
||||
})->when($start && $end, function ($query) use ($start, $end) {
|
||||
return $query->whereBetween('created_at', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]);
|
||||
})->when($start && !$end, function ($query) use ($start) {
|
||||
return $query->where('created_at', '>=', $start);
|
||||
})->when(!$start && $end, function ($query) use ($end) {
|
||||
return $query->where('created_at', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end))));
|
||||
})->when($orderField, function ($query) use ($orderField, $orderDirection) {
|
||||
$query->orderBy($orderField, $orderDirection);
|
||||
})->with(['order'])->latest()->paginate($numPerPage);
|
||||
|
||||
return view('Admin::payments.index', compact('payments'));
|
||||
}
|
||||
public function vip(Request $request)
|
||||
{
|
||||
$user_id = $request->user_id;
|
||||
$nickname = $request->nickname;
|
||||
$trade_no = $request->trade_no;
|
||||
$start = $request->start;
|
||||
$end = $request->end;
|
||||
$pay_type = $request->pay_type;
|
||||
$orderField = $request->orderField;
|
||||
$orderDirection = $request->orderDirection;
|
||||
$numPerPage = $request->numPerPage ?: 30;
|
||||
|
||||
$payments = VipPament::when($trade_no, function ($query) use ($trade_no) {
|
||||
$query->where('trade_no', 'like', "%{$trade_no}%");
|
||||
})->when($user_id, function ($query) use($user_id){
|
||||
return $query->where('user_id',$user_id);
|
||||
})->when($nickname, function ($query) use ($nickname) {
|
||||
$query->whereHas('user', function ($query) use ($nickname) {
|
||||
$query->whereHas('info', function ($query) use ($nickname) {
|
||||
$query->where('nickname', 'like', "%{$nickname}%");
|
||||
});
|
||||
});
|
||||
})->when($pay_type, function ($query) use($pay_type){
|
||||
return $query->where('type',$pay_type);
|
||||
})->when($start && $end, function ($query) use ($start, $end) {
|
||||
return $query->whereBetween('paid_at', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]);
|
||||
})->when($start && !$end, function ($query) use ($start) {
|
||||
return $query->where('paid_at', '>=', $start);
|
||||
})->when(!$start && $end, function ($query) use ($end) {
|
||||
return $query->where('paid_at', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end))));
|
||||
})->when($orderField, function ($query) use ($orderField, $orderDirection) {
|
||||
$query->orderBy($orderField, $orderDirection);
|
||||
})->where('state', 'SUCCESS')->latest()->paginate($numPerPage);
|
||||
|
||||
return view('Admin::payments.vip', compact('payments'));
|
||||
}
|
||||
|
||||
}
|
||||
46
app/Admin/Controllers/ProfitController.php
Normal file
46
app/Admin/Controllers/ProfitController.php
Normal file
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
namespace App\Admin\Controllers;
|
||||
|
||||
use App\Models\ProfitLog;
|
||||
use Illuminate\Http\Request;
|
||||
use RuLong\UserAccount\Models\UserAccountLog;
|
||||
|
||||
class ProfitController extends Controller
|
||||
{
|
||||
public function index(Request $request)
|
||||
{
|
||||
|
||||
$status = $request->status;
|
||||
$start = $request->start;
|
||||
$end = $request->end;
|
||||
$numPerPage = $request->numPerPage ?: 30;
|
||||
|
||||
$profits = ProfitLog::when($status, function ($query) use ($status) {
|
||||
if ($status == 'one') {
|
||||
$query->where('status', 1);
|
||||
} elseif ($status == 'zero') {
|
||||
$query->where('status', 0);
|
||||
}
|
||||
})->when($start && $end, function ($query) use ($start, $end) {
|
||||
return $query->whereBetween('created_at', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]);
|
||||
})->when($start && !$end, function ($query) use ($start) {
|
||||
return $query->where('created_at', '>=', $start);
|
||||
})->when(!$start && $end, function ($query) use ($end) {
|
||||
return $query->where('created_at', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end))));
|
||||
})->orderBy('created_at', 'desc')->paginate($numPerPage);
|
||||
|
||||
return view('Admin::profit.index', compact('profits'));
|
||||
}
|
||||
|
||||
public function logs(Request $request, ProfitLog $profit)
|
||||
{
|
||||
$numPerPage = $request->numPerPage ?: 30;
|
||||
|
||||
$logs = UserAccountLog::whereJsonContains('source->no', $profit->end_at->format('Ymd'))
|
||||
->orderBy('user_id', 'asc')
|
||||
->paginate($numPerPage);
|
||||
|
||||
return view('Admin::profit.logs', compact('logs', 'profit'));
|
||||
}
|
||||
}
|
||||
100
app/Admin/Controllers/ReportController.php
Normal file
100
app/Admin/Controllers/ReportController.php
Normal file
@@ -0,0 +1,100 @@
|
||||
<?php
|
||||
|
||||
namespace App\Admin\Controllers;
|
||||
|
||||
use App\Models\Report;
|
||||
use App\Rules\Checkmobile;
|
||||
use Illuminate\Http\Request;
|
||||
use Validator;
|
||||
|
||||
class ReportController extends Controller
|
||||
{
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
$orderField = $request->orderField;
|
||||
$orderDirection = $request->orderDirection;
|
||||
$numPerPage = $request->numPerPage ?: 30;
|
||||
|
||||
$lists = Report::paginate($numPerPage);
|
||||
|
||||
return view('Admin::report.index', compact('lists'));
|
||||
}
|
||||
|
||||
public function create()
|
||||
{
|
||||
return view('Admin::report.create');
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'name' => 'required|min:2|max:50',
|
||||
'mobile' => ['required', new Checkmobile],
|
||||
], [
|
||||
'name.required' => '名称必须填写',
|
||||
'name.min' => '名称最少为:min字符',
|
||||
'name.max' => '名称最多为:max字符',
|
||||
'mobile.required' => '手机号必须填写',
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
if (Report::create($request->all())) {
|
||||
return $this->success('', 'close');
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
|
||||
public function edit(Report $report)
|
||||
{
|
||||
return view('Admin::report.edit', compact('report'));
|
||||
}
|
||||
|
||||
public function update(Request $request, Report $report)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'name' => 'required|min:2|max:50',
|
||||
'mobile' => ['required', new Checkmobile],
|
||||
], [
|
||||
'name.required' => '名称必须填写',
|
||||
'name.min' => '名称最少为:min字符',
|
||||
'name.max' => '名称最多为:max字符',
|
||||
'mobile.required' => '手机号必须填写',
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
|
||||
if ($report->update($request->all())) {
|
||||
return $this->success('', 'close');
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
|
||||
public function show()
|
||||
{
|
||||
#Todo..
|
||||
}
|
||||
|
||||
//删除
|
||||
public function delete(Report $report)
|
||||
{
|
||||
if ($report->delete()) {
|
||||
return $this->success('删除成功');
|
||||
} else {
|
||||
return $this->error('删除成功');
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public function logs()
|
||||
{
|
||||
#Todo..
|
||||
}
|
||||
|
||||
}
|
||||
563
app/Admin/Controllers/SellerController.php
Normal file
563
app/Admin/Controllers/SellerController.php
Normal file
@@ -0,0 +1,563 @@
|
||||
<?php
|
||||
|
||||
namespace App\Admin\Controllers;
|
||||
|
||||
use App\Models\Agency;
|
||||
use App\Models\Bank;
|
||||
use App\Models\Category;
|
||||
use App\Models\Freight;
|
||||
use App\Models\Seller;
|
||||
use App\User;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use RuLong\Panel\Models\Admin;
|
||||
use Validator;
|
||||
|
||||
class SellerController extends Controller
|
||||
{
|
||||
|
||||
//商家列表
|
||||
public function index(Request $request)
|
||||
{
|
||||
if (\Admin::id() != 1 && \Admin::user()->seller->type != 'seller') {
|
||||
return $this->error('您没有权限');
|
||||
}
|
||||
$name = $request->name;
|
||||
$orderField = $request->orderField;
|
||||
$orderDirection = $request->orderDirection;
|
||||
$numPerPage = $request->numPerPage ?: 30;
|
||||
$type = 'seller';
|
||||
$title = '商家';
|
||||
$sellers = Seller::withCount('admins')
|
||||
->withCount('orders')
|
||||
->withCount('goods')
|
||||
->where('type', $type)
|
||||
->when(\Admin::id() > 1, function ($query) {
|
||||
$query->where('id', \Admin::user()->seller_id);
|
||||
})
|
||||
->when($name, function ($query) use ($name) {
|
||||
$query->where('name', 'like', "%{$name}%");
|
||||
})
|
||||
->when($orderField, function ($query) use ($orderField, $orderDirection) {
|
||||
$query->orderBy($orderField, $orderDirection);
|
||||
})->paginate($numPerPage);
|
||||
|
||||
return view('Admin::sellers.index', compact('sellers', 'type', 'title'));
|
||||
}
|
||||
|
||||
public function search(Request $request)
|
||||
{
|
||||
$name = $request->name;
|
||||
$numPerPage = $request->numPerPage ?: 30;
|
||||
$type = 'organ';
|
||||
$sellers = Seller::where('type', $type)
|
||||
->when($name, function ($query) use ($name) {
|
||||
$query->where('name', 'like', "%{$name}%");
|
||||
})
|
||||
->paginate($numPerPage);
|
||||
|
||||
return view('Admin::sellers.search', compact('sellers', 'type', 'title'));
|
||||
}
|
||||
//机构列表
|
||||
public function organ(Request $request)
|
||||
{
|
||||
if (\Admin::id() != 1 && \Admin::user()->seller->type != 'organ') {
|
||||
return $this->error('您没有权限');
|
||||
}
|
||||
|
||||
$name = $request->name;
|
||||
$orderField = $request->orderField;
|
||||
$orderDirection = $request->orderDirection;
|
||||
$numPerPage = $request->numPerPage ?: 30;
|
||||
$type = 'organ';
|
||||
$title = '机构';
|
||||
|
||||
$sellers = Seller::withCount('admins')
|
||||
->withCount('orders')
|
||||
->withCount('goods')
|
||||
->withCount('lesson')
|
||||
->where('type', $type)
|
||||
->when(\Admin::id() > 1, function ($query) {
|
||||
$query->where('id', \Admin::user()->seller_id);
|
||||
})
|
||||
->when($name, function ($query) use ($name) {
|
||||
$query->where('name', 'like', "%{$name}%");
|
||||
})
|
||||
->when($orderField, function ($query) use ($orderField, $orderDirection) {
|
||||
$query->orderBy($orderField, $orderDirection);
|
||||
})->paginate($numPerPage);
|
||||
|
||||
return view('Admin::sellers.index', compact('sellers', 'type', 'title'));
|
||||
}
|
||||
|
||||
public function show(Seller $seller)
|
||||
{
|
||||
$freights = Freight::where('seller_id', $seller->id)->get();
|
||||
return view('Admin::sellers.show', compact('seller', 'freights'));
|
||||
}
|
||||
|
||||
public function create(Request $request)
|
||||
{
|
||||
$pid = ($request->type == 'organ') ? 1 : 2;
|
||||
$provinces = \OpenArea::index(0);
|
||||
$categoies = Category::treeSelect($pid);
|
||||
$agencys = Agency::where('status', 1)->get();
|
||||
$salesmans = User::where('is_salesman', 1)->get();
|
||||
return view('Admin::sellers.create', compact('provinces', 'categoies', 'agencys', 'salesmans'));
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
{
|
||||
|
||||
$validator = Validator::make($request->all(), [
|
||||
'name' => 'required|min:2|max:50',
|
||||
'mobile' => 'required',
|
||||
'wechat_id' => 'required',
|
||||
'province_sn' => 'required',
|
||||
'city_sn' => 'required',
|
||||
'area_sn' => 'required',
|
||||
'address' => 'required',
|
||||
'description' => 'required|min:4',
|
||||
'content' => 'required|min:4',
|
||||
'storage_id' => 'required',
|
||||
], [
|
||||
'name.required' => '名称必须填写',
|
||||
'name.min' => '名称最少为:min字符',
|
||||
'name.max' => '名称最多为:max字符',
|
||||
'mobile.required' => '电话必须填写',
|
||||
'wechat_id.required' => '微信二维码必须上传',
|
||||
'province_sn.required' => '请选择省',
|
||||
'city_sn.required' => '请选择市',
|
||||
'area_sn.required' => '请选择区',
|
||||
'address.required' => '地址必须填写',
|
||||
'description.required' => '简介必须填写',
|
||||
'description.min' => '简介最少:min个字',
|
||||
'content.required' => '内容必须填写',
|
||||
'content.min' => '内容最少:min个字',
|
||||
'storage_id.required' => 'Logo必须上传',
|
||||
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
if (Seller::create($request->all())) {
|
||||
return $this->success('', 'close');
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
|
||||
public function edit(Seller $seller)
|
||||
{
|
||||
$banks = Bank::orderBy('sort', 'asc')->get();
|
||||
$provinces = \OpenArea::index(0);
|
||||
$cities = \OpenArea::index($seller->province_sn);
|
||||
$areas = \OpenArea::index($seller->city_sn);
|
||||
$pid = ($seller->type == 'organ') ? 1 : 2;
|
||||
|
||||
$categoies = Category::treeSelect($pid);
|
||||
$agencys = Agency::where('status', 1)->get();
|
||||
$salesmans = User::where('is_salesman', 1)->get();
|
||||
|
||||
return view('Admin::sellers.edit', compact('seller', 'banks', 'categoies', 'provinces', 'cities', 'areas', 'agencys', 'salesmans'));
|
||||
}
|
||||
|
||||
public function update(Request $request, Seller $seller)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'name' => 'required|min:2|max:50',
|
||||
'mobile' => 'required',
|
||||
'wechat_id' => 'required',
|
||||
'province_sn' => 'required',
|
||||
'city_sn' => 'required',
|
||||
'area_sn' => 'required',
|
||||
'address' => 'required',
|
||||
'description' => 'required|min:4',
|
||||
'content' => 'required|min:4',
|
||||
'storage_id' => 'required',
|
||||
], [
|
||||
'name.required' => '名称必须填写',
|
||||
'name.min' => '名称最少为:min字符',
|
||||
'name.max' => '名称最多为:max字符',
|
||||
'mobile.required' => '电话必须填写',
|
||||
'wechat_id.required' => '微信二维码必须上传',
|
||||
'province_sn.required' => '请选择省',
|
||||
'city_sn.required' => '请选择市',
|
||||
'area_sn.required' => '请选择区',
|
||||
'address.required' => '地址必须填写',
|
||||
'description.required' => '简介必须填写',
|
||||
'description.min' => '简介最少:min个字',
|
||||
'content.required' => '内容必须填写',
|
||||
'content.min' => '内容最少:min个字',
|
||||
'storage_id.required' => 'Logo必须上传',
|
||||
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
if ($seller->update($request->all())) {
|
||||
return $this->success('', 'close');
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
|
||||
public function destroy(Seller $seller)
|
||||
{
|
||||
//删除
|
||||
if ($seller->canDel()) {
|
||||
if ($seller->delete()) {
|
||||
if ($seller->admins) {
|
||||
$seller->admins()->delete();
|
||||
}
|
||||
return $this->success();
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
} else {
|
||||
if ($seller->canCancel()) {
|
||||
$seller->status = 0;
|
||||
$seller->save();
|
||||
} else {
|
||||
return $this->error('请下架所有商品,再关闭商户');
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function setting(Request $request)
|
||||
{
|
||||
if ($request->isMethod('PUT')) {
|
||||
$validator = Validator::make($request->all(), [
|
||||
'name' => 'required|min:2|max:50',
|
||||
'description' => 'required|min:4',
|
||||
'storage_id' => 'required',
|
||||
], [
|
||||
'name.required' => '商户名称必须填写',
|
||||
'name.min' => '商户名称最少为:min字符',
|
||||
'name.max' => '商户名称最多为:max字符',
|
||||
'description.required' => '简介必须填写',
|
||||
'description.min' => '简介最少:min个字',
|
||||
'storage_id.required' => 'Logo必须上传',
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
$seller = Seller::find(\Admin::user()->seller_id);
|
||||
|
||||
if ($seller->update($request->all())) {
|
||||
return $this->success('操作成功');
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
$banks = Bank::orderBy('sort', 'asc')->get();
|
||||
$seller = Seller::find(\Admin::user()->seller_id);
|
||||
return view('Admin::sellers.setting', compact('seller', 'banks'));
|
||||
}
|
||||
|
||||
public function freights(Request $request)
|
||||
{
|
||||
$freights = Freight::where('seller_id', \Admin::user()->seller_id)->get();
|
||||
return view('Admin::sellers.freights', compact('freights'));
|
||||
}
|
||||
|
||||
public function freightsEdit(Request $request, Freight $freight)
|
||||
{
|
||||
if ($request->isMethod('PUT')) {
|
||||
|
||||
$validator = Validator::make($request->all(), [
|
||||
'basic' => 'required|numeric',
|
||||
'heavy' => 'required|numeric',
|
||||
'added' => 'required|numeric',
|
||||
], [
|
||||
'basic.required' => '基本邮费必须填写',
|
||||
'basic.numeric' => '基本邮费必须是数字',
|
||||
'heavy.required' => '起重必须填写',
|
||||
'heavy.numeric' => '起重必须是数字',
|
||||
'added.required' => '续重必须填写',
|
||||
'added.numeric' => '续重必须是数字',
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
|
||||
$freight->update([
|
||||
'basic' => $request->basic,
|
||||
'heavy' => $request->heavy,
|
||||
'added' => $request->added,
|
||||
]);
|
||||
|
||||
return $this->success('', 'close');
|
||||
} else {
|
||||
return view('Admin::sellers.freightsEdit', compact('freight'));
|
||||
}
|
||||
}
|
||||
|
||||
public function users(Request $request, Seller $seller)
|
||||
{
|
||||
|
||||
$username = $request->username;
|
||||
$nickname = $request->nickname;
|
||||
$orderField = $request->orderField;
|
||||
$orderDirection = $request->orderDirection;
|
||||
$numPerPage = $request->numPerPage ?: 30;
|
||||
$seller_id = $request->seller_id ?? \Admin::user()->seller_id;
|
||||
|
||||
$admins = Admin::where('seller_id', $seller->id)
|
||||
->where('id', '<>', 1)
|
||||
->when($username, function ($query) use ($username) {
|
||||
return $query->where('username', 'like', "%{$username}%");
|
||||
})
|
||||
->when($nickname, function ($query) use ($nickname) {
|
||||
return $query->where('nickname', 'like', "%{$nickname}%");
|
||||
})->when($orderField, function ($query) use ($orderField, $orderDirection) {
|
||||
$query->orderBy($orderField, $orderDirection);
|
||||
})->with('lastLogin')->withCount('logins')->paginate($numPerPage);
|
||||
|
||||
return view('Admin::sellers.users', compact('admins', 'seller'));
|
||||
}
|
||||
|
||||
public function usersCreate()
|
||||
{
|
||||
return view('Admin::sellers.usersCreate');
|
||||
|
||||
}
|
||||
|
||||
public function usersStore(Request $request)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'username' => ['required', 'between:4,32', 'unique:admins'],
|
||||
'password' => 'required|between:6,32',
|
||||
'nickname' => 'nullable|between:2,16',
|
||||
], [
|
||||
'username.required' => '用户名称必须填写',
|
||||
'username.between' => '用户名称长度应在:min-:max位之间',
|
||||
'username.unique' => '用户名称已经存在',
|
||||
'password.required' => '登录密码必须填写',
|
||||
'password.between' => '登录密码长度应在:min-:max位之间',
|
||||
'nickname.between' => '用户昵称长度应在:min-:max位之间',
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
|
||||
try {
|
||||
DB::transaction(function () use ($request) {
|
||||
|
||||
$admin = Admin::create([
|
||||
'username' => $request->username,
|
||||
'password' => $request->password,
|
||||
'nickname' => $request->nickname,
|
||||
'seller_id' => $request->seller_id ?? \Admin::user()->seller_id,
|
||||
]);
|
||||
DB::table('admin_role_user')->insert([
|
||||
'role_id' => $request->role_id,
|
||||
'admin_id' => $admin->id,
|
||||
'created_at' => now(),
|
||||
'updated_at' => now(),
|
||||
]);
|
||||
});
|
||||
return $this->success('操作成功', 'close');
|
||||
} catch (\Exception $e) {
|
||||
return $this->error('操作失败' . $e->getmessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function usersEdit(Admin $admin)
|
||||
{
|
||||
return view('Admin::sellers.usersEdit', compact('admin'));
|
||||
}
|
||||
|
||||
public function usersUpdate(Request $request, Admin $admin)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'password' => 'required|between:6,32',
|
||||
'nickname' => 'nullable|between:2,16',
|
||||
], [
|
||||
'password.required' => '登录密码必须填写',
|
||||
'password.between' => '登录密码长度应在:min-:max位之间',
|
||||
'nickname.between' => '用户昵称长度应在:min-:max位之间',
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
|
||||
try {
|
||||
DB::transaction(function () use ($request, $admin) {
|
||||
$admin->update([
|
||||
'password' => $request->password,
|
||||
'nickname' => $request->nickname,
|
||||
]);
|
||||
//这里还需要更新管理员的操作权限
|
||||
});
|
||||
return $this->success('操作成功', 'close');
|
||||
} catch (\Exception $e) {
|
||||
return $this->error('操作失败' . $e->getmessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function usersDestroy(Admin $admin)
|
||||
{
|
||||
if ($admin->delete()) {
|
||||
//同时删除管理员的权限
|
||||
return $this->success();
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
|
||||
public function manager(Seller $seller)
|
||||
{
|
||||
$adminids = DB::table('admin_role_user')->where('role_id', 1)->pluck('admin_id');
|
||||
$manager = Admin::where('seller_id', $seller->id)->whereIN('id', $adminids)->first();
|
||||
return $manager ? view('Admin::sellers.manager', compact('manager', 'seller')) : view('Admin::sellers.managerCreate', compact('seller'));
|
||||
}
|
||||
|
||||
public function managerUpdate(Request $request, Admin $admin)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'password' => 'required|between:6,32',
|
||||
'nickname' => 'nullable|between:2,16',
|
||||
], [
|
||||
'password.required' => '登录密码必须填写',
|
||||
'password.between' => '登录密码长度应在:min-:max位之间',
|
||||
'nickname.between' => '用户昵称长度应在:min-:max位之间',
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
|
||||
try {
|
||||
DB::transaction(function () use ($request, $admin) {
|
||||
$admin->update([
|
||||
'password' => $request->password,
|
||||
'nickname' => $request->nickname,
|
||||
'seller_id' => $request->seller_id,
|
||||
]);
|
||||
//这里还需要更新管理员的操作权限
|
||||
});
|
||||
return $this->success('操作成功', 'close');
|
||||
} catch (\Exception $e) {
|
||||
return $this->error('操作失败' . $e->getmessage());
|
||||
}
|
||||
}
|
||||
public function managerStore(Request $request, Seller $seller)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'username' => ['required', 'between:4,32', 'unique:admins'],
|
||||
'password' => 'required|between:6,32',
|
||||
'nickname' => 'nullable|between:2,16',
|
||||
], [
|
||||
'username.required' => '用户名称必须填写',
|
||||
'username.between' => '用户名称长度应在:min-:max位之间',
|
||||
'username.unique' => '用户名称已经存在',
|
||||
'password.required' => '登录密码必须填写',
|
||||
'password.between' => '登录密码长度应在:min-:max位之间',
|
||||
'nickname.between' => '用户昵称长度应在:min-:max位之间',
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
|
||||
try {
|
||||
DB::transaction(function () use ($request, $seller) {
|
||||
$admin = Admin::create([
|
||||
'username' => $request->username,
|
||||
'password' => $request->password,
|
||||
'nickname' => $request->nickname,
|
||||
'seller_id' => $seller->id,
|
||||
]);
|
||||
DB::table('admin_role_user')->insert([
|
||||
'role_id' => $request->role_id,
|
||||
'admin_id' => $admin->id,
|
||||
'created_at' => now(),
|
||||
'updated_at' => now(),
|
||||
]);
|
||||
});
|
||||
return $this->success('操作成功', 'close');
|
||||
} catch (\Exception $e) {
|
||||
return $this->error('操作失败' . $e->getmessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function bindUser(Seller $seller)
|
||||
{
|
||||
$users = User::whereHas('identity', function ($query) {
|
||||
$query->where('identity_id', '>=', 0);
|
||||
})->doesntHave('seller')->get();
|
||||
|
||||
if ($users->count() == 0) {
|
||||
return $this->error('没有用户', 'close');
|
||||
}
|
||||
return view('Admin::sellers.bindUser', compact('seller', 'users'));
|
||||
}
|
||||
|
||||
public function dobindUser(Request $request, Seller $seller)
|
||||
{
|
||||
if (empty($request->user_id)) {
|
||||
return $this->error('用户必须选择');
|
||||
}
|
||||
|
||||
$user = User::find($request->user_id);
|
||||
|
||||
if (empty($user)) {
|
||||
return $this->error('用户信息有误');
|
||||
}
|
||||
|
||||
if ($user->seller) {
|
||||
return $this->error('用户已绑定商户');
|
||||
}
|
||||
|
||||
$seller->user_id = $request->user_id;
|
||||
if ($seller->save()) {
|
||||
// $uids = UserRelation::where('bloodline', 'like', "%," . $user->id . ",%")
|
||||
// ->pluck('user_id')
|
||||
// ->toArray();
|
||||
// User::whereIn('id', $uids)->update(['seller_id' => $seller->id]);
|
||||
return $this->success('操作成功', 'close');
|
||||
} else {
|
||||
return $this->error('操作失败');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//取消绑定
|
||||
public function cancelUser(Request $request, Seller $seller)
|
||||
{
|
||||
|
||||
if (!$seller->user) {
|
||||
return $this->error('没有绑定用户');
|
||||
}
|
||||
|
||||
$seller->user_id = null;
|
||||
if ($seller->save()) {
|
||||
return $this->success('操作成功');
|
||||
} else {
|
||||
return $this->error('操作失败');
|
||||
}
|
||||
}
|
||||
|
||||
public function certificate(Request $request, Seller $seller)
|
||||
{
|
||||
return view('Admin::sellers.certificate', compact('seller'));
|
||||
}
|
||||
|
||||
public function docertificate(Request $request, Seller $seller)
|
||||
{
|
||||
if ($seller->update($request->all())) {
|
||||
return $this->success('上传成功', 'close');
|
||||
} else {
|
||||
return $this->error('上传失败');
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
126
app/Admin/Controllers/StationController.php
Normal file
126
app/Admin/Controllers/StationController.php
Normal file
@@ -0,0 +1,126 @@
|
||||
<?php
|
||||
|
||||
namespace App\Admin\Controllers;
|
||||
|
||||
use Admin;
|
||||
use App\Models\Seller;
|
||||
use App\Models\Station;
|
||||
use Illuminate\Http\Request;
|
||||
use Validator;
|
||||
|
||||
class StationController extends Controller
|
||||
{
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
$name = $request->name;
|
||||
$orderField = $request->orderField;
|
||||
$orderDirection = $request->orderDirection;
|
||||
$numPerPage = $request->numPerPage ?: 30;
|
||||
|
||||
if (Admin::id() == 1) {
|
||||
$stations = Station::when($name, function ($query) use ($name) {
|
||||
$query->where('name', 'like', "%{$name}%");
|
||||
})
|
||||
->when($orderField, function ($query) use ($orderField, $orderDirection) {
|
||||
$query->orderBy($orderField, $orderDirection);
|
||||
})->paginate($numPerPage);
|
||||
} else {
|
||||
$stations = Station::when($name, function ($query) use ($name) {
|
||||
$query->where('name', 'like', "%{$name}%");
|
||||
})->where('seller_id', Admin::user()->seller_id)
|
||||
->when($orderField, function ($query) use ($orderField, $orderDirection) {
|
||||
$query->orderBy($orderField, $orderDirection);
|
||||
})->paginate($numPerPage);
|
||||
}
|
||||
|
||||
return view('Admin::stations.index', compact('stations'));
|
||||
}
|
||||
|
||||
public function create()
|
||||
{
|
||||
$sellers = Seller::where('status', 1)->get();
|
||||
return view('Admin::stations.create', compact('sellers'));
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'name' => 'required|min:2|max:50',
|
||||
'address' => 'required|min:4',
|
||||
'mobile' => 'required',
|
||||
], [
|
||||
'name.required' => '商户名称必须填写',
|
||||
'name.min' => '商户名称最少为:min字符',
|
||||
'name.max' => '商户名称最多为:max字符',
|
||||
'address.required' => '地址必须填写',
|
||||
'address.min' => '地址最少:min个字',
|
||||
'mobile.required' => '手机号必须填写',
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
if (Station::create($request->all())) {
|
||||
return $this->success('', 'close');
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
|
||||
public function edit(Station $station)
|
||||
{
|
||||
$sellers = Seller::where('status', 1)->get();
|
||||
return view('Admin::stations.edit', compact('station', 'sellers'));
|
||||
}
|
||||
|
||||
public function update(Request $request, Station $station)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'name' => 'required|min:2|max:50',
|
||||
'address' => 'required|min:4',
|
||||
'mobile' => 'required',
|
||||
], [
|
||||
'name.required' => '商户名称必须填写',
|
||||
'name.min' => '商户名称最少为:min字符',
|
||||
'name.max' => '商户名称最多为:max字符',
|
||||
'address.required' => '地址必须填写',
|
||||
'address.min' => '地址最少:min个字',
|
||||
'mobile.required' => '手机号必须填写',
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
if ($station->update($request->all())) {
|
||||
return $this->success('', 'close');
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
|
||||
public function destroy(station $station)
|
||||
{
|
||||
if ($station->delete()) {
|
||||
return $this->success();
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function areas(Request $request)
|
||||
{
|
||||
if (empty($request->psn)) {
|
||||
return $this->error('请选择省份');
|
||||
}
|
||||
|
||||
$areas = \OpenArea::index($request->psn);
|
||||
if ($areas) {
|
||||
return $this->success(['msg' => '', 'code' => 1, 'data' => $areas]);
|
||||
} else {
|
||||
return $this->error('请选择省份/城市');
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
138
app/Admin/Controllers/TeacherController.php
Normal file
138
app/Admin/Controllers/TeacherController.php
Normal file
@@ -0,0 +1,138 @@
|
||||
<?php
|
||||
namespace App\Admin\Controllers;
|
||||
|
||||
use Admin;
|
||||
use App\Models\Seller;
|
||||
use App\Models\SellerTeacher;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Validator;
|
||||
|
||||
class TeacherController extends Controller
|
||||
{
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
$seller_id = $request->seller_id;
|
||||
$title = $request->title;
|
||||
$orderField = $request->orderField;
|
||||
$orderDirection = $request->orderDirection;
|
||||
$numPerPage = $request->numPerPage ?: 30;
|
||||
$admin = Admin::user();
|
||||
|
||||
$teachers = SellerTeacher::when($seller_id, function ($query) use ($seller_id) {
|
||||
$query->where('seller_id', $seller_id);
|
||||
})
|
||||
->when($title, function ($query) use ($title) {
|
||||
$query->where('title', 'like', "%{$title}%");
|
||||
})
|
||||
->when($orderField, function ($query) use ($orderField, $orderDirection) {
|
||||
$query->orderBy($orderField, $orderDirection);
|
||||
})
|
||||
->orderBy('created_at', 'desc')
|
||||
->paginate($numPerPage);
|
||||
|
||||
return view('Admin::teacher.index', compact('teachers'));
|
||||
}
|
||||
|
||||
public function create()
|
||||
{
|
||||
$sellers = Seller::where('type', 'organ')->get();
|
||||
return view('Admin::teacher.create', compact('sellers'));
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'name' => 'required|min:2|max:50',
|
||||
'rank' => 'required|min:2',
|
||||
'school_age' => 'required',
|
||||
'storage_id' => 'required',
|
||||
], [
|
||||
'name.required' => '标题必须填写',
|
||||
'name.min' => '标题最少为:min字符',
|
||||
'name.max' => '标题最多为:max字符',
|
||||
'rank.required' => '职级必须填写',
|
||||
'rank.min' => '职级最少:min个字',
|
||||
'school_age.required' => '教龄必须填写',
|
||||
'storage_id.required' => '教师头像必须上传',
|
||||
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
|
||||
try {
|
||||
DB::transaction(function () use ($request) {
|
||||
$info = SellerTeacher::create($request->all());
|
||||
});
|
||||
return $this->success('操作成功', 'close');
|
||||
} catch (\Exception $e) {
|
||||
return $this->error('操作失败' . $e->getmessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function edit($id)
|
||||
{
|
||||
$info = SellerTeacher::find($id);
|
||||
$sellers = Seller::where('type', 'organ')->get();
|
||||
return view('Admin::teacher.edit', compact('info', 'sellers'));
|
||||
}
|
||||
|
||||
public function update(Request $request, $id)
|
||||
{
|
||||
$info = SellerTeacher::find($id);
|
||||
|
||||
$validator = Validator::make($request->all(), [
|
||||
'name' => 'required|min:2|max:50',
|
||||
'rank' => 'required|min:2',
|
||||
'school_age' => 'required',
|
||||
'storage_id' => 'required',
|
||||
], [
|
||||
'name.required' => '标题必须填写',
|
||||
'name.min' => '标题最少为:min字符',
|
||||
'name.max' => '标题最多为:max字符',
|
||||
'rank.required' => '职级必须填写',
|
||||
'rank.min' => '职级最少:min个字',
|
||||
'school_age.required' => '教龄必须填写',
|
||||
'storage_id.required' => '教师头像必须上传',
|
||||
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
|
||||
try {
|
||||
DB::transaction(function () use ($request, $info) {
|
||||
$info = $info->update($request->all());
|
||||
});
|
||||
return $this->success('操作成功', 'close');
|
||||
} catch (\Exception $e) {
|
||||
return $this->error('操作失败' . $e->getmessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 彻底删除单条目
|
||||
* @Author:<C.Jason>
|
||||
* @Date:2018-11-02T13:43:36+0800
|
||||
* @param [type] $user [description]
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function delete(SellerTeacher $info)
|
||||
{
|
||||
try {
|
||||
DB::transaction(function () use ($info) {
|
||||
$info->delete();
|
||||
});
|
||||
return $this->success('操作成功');
|
||||
} catch (\Exception $e) {
|
||||
return $this->error('操作失败' . $e->getmessage());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
32
app/Admin/Controllers/TeamController.php
Normal file
32
app/Admin/Controllers/TeamController.php
Normal file
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
namespace App\Admin\Controllers;
|
||||
|
||||
use App\Models\Team;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class TeamController extends Controller
|
||||
{
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
$mobile = $request->mobile;
|
||||
$wechat = $request->wechat;
|
||||
$orderField = $request->orderField;
|
||||
$orderDirection = $request->orderDirection;
|
||||
$numPerPage = $request->numPerPage ?: 30;
|
||||
|
||||
$lists = Team::when($mobile, function ($query) use ($mobile) {
|
||||
$query->where('mobile', $mobile);
|
||||
})
|
||||
->when($wechat, function ($query) use ($wechat) {
|
||||
$query->where('wechat', 'like', "%" . $wechat . "%");
|
||||
})
|
||||
->when($orderField, function ($query) use ($orderField, $orderDirection) {
|
||||
$query->orderBy($orderField, $orderDirection);
|
||||
})
|
||||
->paginate($numPerPage);
|
||||
|
||||
return view('Admin::team.index', compact('lists'));
|
||||
}
|
||||
}
|
||||
70
app/Admin/Controllers/TestController.php
Normal file
70
app/Admin/Controllers/TestController.php
Normal file
@@ -0,0 +1,70 @@
|
||||
<?php
|
||||
|
||||
namespace App\Admin\Controllers;
|
||||
|
||||
// use RuLong\UserAccount\Models\UserAccount;
|
||||
use App\User;
|
||||
// use App\Jobs\ProfitJob;
|
||||
// use App\Models\ProfitLog;
|
||||
// use RuLong\Identity\Models\IdentityPoint;
|
||||
use RuLong\UserAccount\Models\UserAccountLog;
|
||||
use RuLong\UserRelation\Models\UserRelation;
|
||||
|
||||
class TestController extends Controller
|
||||
{
|
||||
public function test()
|
||||
{
|
||||
$lists = UserAccountLog::select('sum(variable) as count')->where('count', '>', 1000)->group('user_id')->orderBy('count desc')->limit(10)->get();
|
||||
dump($lists);
|
||||
}
|
||||
|
||||
/**
|
||||
* 准备做调整关系流程
|
||||
* @Author:<Leady>
|
||||
* @Date:2018-12-20T18:54:09+0800
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function relation()
|
||||
{
|
||||
$users = [4189];
|
||||
$parent_id = 18;
|
||||
$parent = UserRelation::where('user_id', $parent_id)->first();
|
||||
if ($parent) {
|
||||
foreach ($users as $key => $user_id) {
|
||||
$user = UserRelation::where('user_id', $user_id)->first();
|
||||
if ($user) {
|
||||
$bloodline = $parent->bloodline . $parent_id . ','; //改变后血缘线
|
||||
$oldblood = $user->bloodline . $user->user_id . ','; //目标替换血缘线
|
||||
$newblood = $bloodline . $user->user_id . ','; //目标新血缘线
|
||||
$layer_cha = ($parent->layer + 1) - $user->layer;
|
||||
$user->layer += $layer_cha;
|
||||
$user->parent_id = $parent_id;
|
||||
$user->bloodline = $bloodline;
|
||||
$user->save();
|
||||
$childs = UserRelation::where('bloodline', 'like', '%,' . $user->user_id . ',%')->get();
|
||||
foreach ($childs as $key => $child) {
|
||||
$child->bloodline = str_replace($oldblood, $newblood, $child->bloodline);
|
||||
$child->layer += $layer_cha;
|
||||
$child->save();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 准备做没有分润的人产生分润流程
|
||||
* @Author:<Leady>
|
||||
* @Date:2018-12-20T18:54:21+0800
|
||||
* @param [type] $user_id [description]
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function fenrun($user_id)
|
||||
{
|
||||
$user_id = 340;
|
||||
$user = UserRelation::where('user_id', $user_id)->first();
|
||||
$payment_vip = \App\Models\VipPament::where('user_id', $user_id)->where('state', 'SUCCESS')->first();
|
||||
\App\Bonus\Direct::settlement($user, ['orderid' => 'vip' . $payment_vip->id]);
|
||||
}
|
||||
}
|
||||
391
app/Admin/Controllers/UserController.php
Normal file
391
app/Admin/Controllers/UserController.php
Normal file
@@ -0,0 +1,391 @@
|
||||
<?php
|
||||
|
||||
namespace App\Admin\Controllers;
|
||||
|
||||
use App\Models\Seller;
|
||||
use App\User;
|
||||
use Illuminate\Http\Request;
|
||||
use RuLong\Identity\Models\Identity;
|
||||
use RuLong\Identity\Models\IdentityLog;
|
||||
use RuLong\UserRelation\Models\UserRelation;
|
||||
use Validator;
|
||||
|
||||
class UserController extends Controller
|
||||
{
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
$user_id = $request->user_id;
|
||||
$mobile = $request->mobile;
|
||||
$nickname = $request->nickname;
|
||||
$identity = $request->identity;
|
||||
$parent_id = $request->parent_id;
|
||||
$start = $request->start;
|
||||
$end = $request->end;
|
||||
$is_salesman = $request->is_salesman;
|
||||
$orderField = $request->orderField;
|
||||
$orderDirection = $request->orderDirection;
|
||||
$numPerPage = $request->numPerPage ?: 30;
|
||||
|
||||
$users = User::with('organ')->when($mobile, function ($query) use ($mobile) {
|
||||
return $query->where('mobile', 'like', "%{$mobile}%");
|
||||
})->when($user_id, function ($query) use ($user_id) {
|
||||
return $query->where('id', $user_id);
|
||||
})->when(is_numeric($is_salesman), function ($query) use ($is_salesman) {
|
||||
return $query->where('is_salesman', $is_salesman);
|
||||
})->when($nickname, function ($query) use ($nickname) {
|
||||
return $query->whereHas('info', function ($query) use ($nickname) {
|
||||
$query->where('nickname', 'like', "%{$nickname}%");
|
||||
});
|
||||
})->when(is_numeric($identity), function ($query) use ($identity) {
|
||||
$query->whereHas('identity', function ($query) use ($identity) {
|
||||
$query->where('identity_id', $identity);
|
||||
});
|
||||
})->when($parent_id, function ($query) use ($parent_id) {
|
||||
$query->whereHas('relation', function ($query) use ($parent_id) {
|
||||
$query->where('parent_id', $parent_id);
|
||||
});
|
||||
})->when($start && $end, function ($query) use ($start, $end) {
|
||||
return $query->whereBetween('created_at', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]);
|
||||
})->when($start && !$end, function ($query) use ($start) {
|
||||
return $query->where('created_at', '>=', $start);
|
||||
})->when(!$start && $end, function ($query) use ($end) {
|
||||
return $query->where('created_at', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end))));
|
||||
})->when($orderField, function ($query) use ($orderField, $orderDirection) {
|
||||
$query->orderBy($orderField, $orderDirection);
|
||||
})->with(['info', 'lastLogin'])->withCount('logins')->orderBy('created_at', 'desc')->paginate($numPerPage);
|
||||
|
||||
$identitys = Identity::get();
|
||||
return view('Admin::users.index', compact('users', 'identitys'));
|
||||
}
|
||||
|
||||
public function edit(User $user)
|
||||
{
|
||||
return view('Admin::users.edit', compact('user'));
|
||||
}
|
||||
|
||||
public function update(Request $request, User $user)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'password' => 'nullable|between:6,32',
|
||||
], [
|
||||
'password.between' => '登录密码长度应在:min-:max位之间',
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
|
||||
if ($user->update($request->all())) {
|
||||
return $this->success('修改成功', 'close');
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 软删除
|
||||
* @Author:<C.Jason>
|
||||
* @Date:2018-11-02T13:44:52+0800
|
||||
* @param User $user [description]
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function destroy(User $user)
|
||||
{
|
||||
if ($user->delete()) {
|
||||
return $this->success();
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 回收站
|
||||
* @Author:<C.Jason>
|
||||
* @Date:2018-11-02T13:43:57+0800
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function recycle(Request $request)
|
||||
{
|
||||
$mobile = $request->mobile;
|
||||
$nickname = $request->nickname;
|
||||
$orderField = $request->orderField;
|
||||
$orderDirection = $request->orderDirection;
|
||||
$numPerPage = $request->numPerPage ?: 30;
|
||||
|
||||
$users = User::onlyTrashed()->when($mobile, function ($query) use ($mobile) {
|
||||
return $query->where('mobile', 'like', "%{$mobile}%");
|
||||
})->when($nickname, function ($query) use ($nickname) {
|
||||
return $query->whereHas('info', function ($query) use ($nickname) {
|
||||
$query->where('nickname', 'like', "%{$nickname}%");
|
||||
});
|
||||
})->when($orderField, function ($query) use ($orderField, $orderDirection) {
|
||||
$query->orderBy($orderField, $orderDirection);
|
||||
})->with(['info', 'lastLogin'])->withCount('logins')->paginate($numPerPage);
|
||||
return view('Admin::users.recycle', compact('users'));
|
||||
}
|
||||
|
||||
/**
|
||||
* 清空回收站
|
||||
* 未考虑删除关联数据的问题
|
||||
* @Author:<C.Jason>
|
||||
* @Date:2018-11-02T13:41:40+0800
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function clean()
|
||||
{
|
||||
if (User::onlyTrashed()->forceDelete()) {
|
||||
return $this->success();
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 还原
|
||||
* @Author:<C.Jason>
|
||||
* @Date:2018-11-02T13:43:47+0800
|
||||
* @param [type] $user [description]
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function resume($user)
|
||||
{
|
||||
if (User::withTrashed()->where('id', $user)->restore()) {
|
||||
return $this->success();
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 彻底删除单条目
|
||||
* @Author:<C.Jason>
|
||||
* @Date:2018-11-02T13:43:36+0800
|
||||
* @param [type] $user [description]
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function delete($user)
|
||||
{
|
||||
if (User::withTrashed()->where('id', $user)->forceDelete()) {
|
||||
return $this->success();
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 线下开通身份
|
||||
* @Author:<Leady>
|
||||
* @Date:2018-11-20T15:32:24+0800
|
||||
* @param Request $request [description]
|
||||
* @param [type] $user [description]
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function identity(User $user)
|
||||
{
|
||||
if ($user->seller_id) {
|
||||
$identity = Identity::where('id', '>', $user->identity->identity_id)->get();
|
||||
} else {
|
||||
$identity = Identity::where('id', '>', $user->identity->identity_id)->whereIn('id', [1, 2])->get();
|
||||
}
|
||||
return view('Admin::users.identity', compact('user', 'identity'));
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 开通身份执行事件
|
||||
* @Author:<Leady>
|
||||
* @Date:2018-11-20T15:34:36+0800
|
||||
* @param Request $request [description]
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function identityrun(Request $request, User $user)
|
||||
{
|
||||
$identity_id = $request->identity_id ?? '';
|
||||
$pay = $request->pay ?? '';
|
||||
$max_key = $request->max_key ?? '0';
|
||||
if (!$identity_id) {
|
||||
return $this->error('请选择要变更的身份');
|
||||
}
|
||||
$user->identityUpdate($identity_id, 'AdminUp', $pay, $max_key);
|
||||
return $this->success('变更成功', 'close');
|
||||
}
|
||||
|
||||
/**
|
||||
* 缴费用户列表
|
||||
* @Author:<Leady>
|
||||
* @Date:2018-11-26T12:03:39+0800
|
||||
* @param Request $request [description]
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function paycostUser(Request $request)
|
||||
{
|
||||
$numPerPage = $request->numPerPage ?: 30;
|
||||
$identity = $request->identity;
|
||||
$mobile = $request->mobile;
|
||||
$nickname = $request->nickname;
|
||||
$lists = IdentityLog::where('channel', 'AdminUp')
|
||||
->when(is_numeric($identity), function ($query) use ($identity) {
|
||||
$query->where('after', $identity);
|
||||
})
|
||||
->when($mobile, function ($query) use ($mobile) {
|
||||
$query->whereHas('user_obj', function ($query) use ($mobile) {
|
||||
$query->where('mobile', 'like', "%{$mobile}%");
|
||||
});
|
||||
})
|
||||
->when($nickname, function ($query) use ($nickname) {
|
||||
$query->whereHas('user_obj', function ($query) use ($nickname) {
|
||||
return $query->whereHas('info', function ($query) use ($nickname) {
|
||||
$query->where('nickname', 'like', "%{$nickname}%");
|
||||
});
|
||||
});
|
||||
})->orderBy('created_at', 'desc')->paginate($numPerPage);
|
||||
|
||||
$identitys = Identity::get();
|
||||
return view('Admin::users.paycostuser', compact('lists', 'identitys'));
|
||||
}
|
||||
|
||||
/**
|
||||
* 缴费用户确认返款
|
||||
* @Author:<Leady>
|
||||
* @Date:2018-11-26T12:03:30+0800
|
||||
* @param Request $request [description]
|
||||
* @param IdentityLog $log [description]
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function rebates(Request $request, IdentityLog $log)
|
||||
{
|
||||
return view('Admin::users.rebates', compact('log'));
|
||||
}
|
||||
|
||||
/**
|
||||
* 缴费用户确认返款
|
||||
* @Author:<Leady>
|
||||
* @Date:2018-11-26T12:03:30+0800
|
||||
* @param Request $request [description]
|
||||
* @param IdentityLog $log [description]
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function rebatesdo(Request $request, IdentityLog $log)
|
||||
{
|
||||
|
||||
$log->other = array_merge($log->other, ['rebates' => '已返款', 'rebates_remark' => $request->rebates_remark]);
|
||||
if ($log->save()) {
|
||||
return $this->success('操作成功', 'close');
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 更改上级ID
|
||||
* @Author:<Leady>
|
||||
* @Date:2018-11-20T15:32:24+0800
|
||||
* @param Request $request [description]
|
||||
* @param [type] $user [description]
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function parent(User $user)
|
||||
{
|
||||
return view('Admin::users.parent', compact('user'));
|
||||
}
|
||||
|
||||
/**
|
||||
* 更改上级ID执行事件
|
||||
* @Author:<Leady>
|
||||
* @Date:2018-11-20T15:34:36+0800
|
||||
* @param Request $request [description]
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function parentrun(Request $request, User $user)
|
||||
{
|
||||
$parent_id = $request->parent_id ?? '';
|
||||
if (!$parent_id || !is_numeric($parent_id)) {
|
||||
return $this->error('请输入正确的编号');
|
||||
}
|
||||
$parent = UserRelation::where('user_id', (int) $parent_id)->first();
|
||||
if ($parent) {
|
||||
$user = $user->relation;
|
||||
$bloodline = $parent->bloodline . $parent_id . ','; //改变后血缘线
|
||||
$oldblood = $user->bloodline . $user->user_id . ','; //目标替换血缘线
|
||||
$newblood = $bloodline . $user->user_id . ','; //目标新血缘线
|
||||
$layer_cha = ($parent->layer + 1) - $user->layer;
|
||||
$user->layer += $layer_cha;
|
||||
$user->parent_id = $parent_id;
|
||||
$user->bloodline = $bloodline;
|
||||
$user->save();
|
||||
$user->user->update(['seller_id' => $parent->user->seller_id]);
|
||||
|
||||
$childs = UserRelation::where('bloodline', 'like', '%,' . $user->user_id . ',%')->get();
|
||||
foreach ($childs as $key => $child) {
|
||||
$child->bloodline = str_replace($oldblood, $newblood, $child->bloodline);
|
||||
$child->layer += $layer_cha;
|
||||
$child->save();
|
||||
$child->user->update(['seller_id' => $parent->user->seller_id]);
|
||||
}
|
||||
} else {
|
||||
return $this->error('推荐人不存在');
|
||||
}
|
||||
return $this->success('变更成功', 'close');
|
||||
}
|
||||
|
||||
public function direct(User $user)
|
||||
{
|
||||
// if ($user->direct != 2) {
|
||||
// return $this->error('状态不正确');
|
||||
// }
|
||||
// $payment_vip = \App\Models\VipPament::where('user_id', $user->id)->where('state', 'SUCCESS')->first();
|
||||
// \App\Bonus\Direct::settlement($user, ['orderid' => 'vip' . $payment_vip->id]);
|
||||
return $this->success('执行完毕');
|
||||
}
|
||||
|
||||
public function bloodview(User $user)
|
||||
{
|
||||
$lists = $user->relation->list2tree('user_id', 'parent_id', 'children', $user->id);
|
||||
$root = [
|
||||
"text" => $user->id . ' - ' . $user->info->nickname . '(' . ($user->identity->identity_id > 0 ? '已激活' : '未激活') . ')',
|
||||
"children" => $lists,
|
||||
];
|
||||
return view('Admin::users.bloodview', compact('root'));
|
||||
}
|
||||
|
||||
//更改组织
|
||||
public function seller(Request $request, User $user)
|
||||
{
|
||||
$sellers = Seller::where('type', 'organ')->whereNotIn('id', [$user->seller_id])->get();
|
||||
return view('Admin::users.seller', compact('user', 'sellers'));
|
||||
}
|
||||
|
||||
//更改组织执行
|
||||
public function sellerdo(Request $request, User $user)
|
||||
{
|
||||
|
||||
$seller_id = $request->organ_id;
|
||||
if (!$seller_id || !is_numeric($seller_id)) {
|
||||
return $this->error('请选择组织');
|
||||
}
|
||||
|
||||
$seller = Seller::find($seller_id);
|
||||
if ($seller) {
|
||||
$uids = UserRelation::where('bloodline', 'like', "%," . $user->id . ",%")
|
||||
->orWhere('user_id', $user->id)
|
||||
->pluck('user_id')
|
||||
->toArray();
|
||||
User::whereIn('id', $uids)->update(['seller_id' => $seller->id]);
|
||||
} else {
|
||||
return $this->error('组织不存在');
|
||||
}
|
||||
return $this->success('变更成功', 'close');
|
||||
}
|
||||
|
||||
//设置取消业务员
|
||||
public function salesman(Request $request, User $user)
|
||||
{
|
||||
$value = $request->value;
|
||||
if ($user->update(['is_salesman' => $value])) {
|
||||
return $this->success('设置成功');
|
||||
} else {
|
||||
return $this->error('设置失败');
|
||||
}
|
||||
}
|
||||
}
|
||||
120
app/Admin/Controllers/WechatController.php
Normal file
120
app/Admin/Controllers/WechatController.php
Normal file
@@ -0,0 +1,120 @@
|
||||
<?php
|
||||
|
||||
namespace App\Admin\Controllers;
|
||||
|
||||
use App\Models\WechatMenu;
|
||||
use Illuminate\Http\Request;
|
||||
use Validator;
|
||||
|
||||
class WechatController extends Controller
|
||||
{
|
||||
|
||||
public function menus(Request $request)
|
||||
{
|
||||
|
||||
$name = $request->name;
|
||||
|
||||
$menus = WechatMenu::when($name, function ($query) use ($name) {
|
||||
$query->where('name', 'like', "%{$name}%");
|
||||
})->orderBy('sort', 'asc')->get();
|
||||
$genMenus = WechatMenu::where('parent_id', 0)->orderBy('sort', 'asc')->get();
|
||||
return view('Admin::wechat.menus', compact('menus', 'genMenus'));
|
||||
}
|
||||
|
||||
/**
|
||||
* 发布菜单到微信
|
||||
* @Author:<C.Jason>
|
||||
* @Date:2018-11-15T16:05:55+0800
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function publish()
|
||||
{
|
||||
$buttons = WechatMenu::getPublishArray();
|
||||
|
||||
$app = app('wechat.official_account');
|
||||
$result = $app->menu->create($buttons);
|
||||
|
||||
if ($result->errcode == 0) {
|
||||
return $this->success();
|
||||
} else {
|
||||
return $this->error($result->errmsg);
|
||||
}
|
||||
}
|
||||
|
||||
public function create()
|
||||
{
|
||||
$topMenus = WechatMenu::where('parent_id', 0)->get();
|
||||
return view('Admin::wechat.create', compact('topMenus'));
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'name' => 'required|min:2|max:5',
|
||||
'parent_id' => 'required',
|
||||
'type' => 'required|in:view,click,miniprogram',
|
||||
'value' => 'required',
|
||||
], [
|
||||
'name.required' => '菜单名称必须填写',
|
||||
'name.min' => '菜单名称最小:min位',
|
||||
'name.max' => '菜单名称最大:max位',
|
||||
'parent_id.required' => '上级菜单必须选择',
|
||||
'type.required' => '菜单类型必须选择',
|
||||
'type.in' => '菜单类型选择有误',
|
||||
'value.required' => '菜单键值必须填写',
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
|
||||
if (WechatMenu::create($request->all())) {
|
||||
return $this->success('', 'close');
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
|
||||
public function edit(WechatMenu $menu)
|
||||
{
|
||||
$topMenus = WechatMenu::where('parent_id', 0)->where('id', '<>', $menu->id)->get();
|
||||
return view('Admin::wechat.edit', compact('topMenus', 'menu'));
|
||||
}
|
||||
|
||||
public function update(Request $request, WechatMenu $menu)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'name' => 'required|min:2|max:5',
|
||||
'parent_id' => 'required',
|
||||
'type' => 'required|in:view,click,miniprogram',
|
||||
'value' => 'required',
|
||||
], [
|
||||
'name.required' => '菜单名称必须填写',
|
||||
'name.min' => '菜单名称最小:min位',
|
||||
'name.max' => '菜单名称最大:max位',
|
||||
'parent_id.required' => '上级菜单必须选择',
|
||||
'type.required' => '菜单类型必须选择',
|
||||
'type.in' => '菜单类型选择有误',
|
||||
'value.required' => '菜单键值必须填写',
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
|
||||
if ($menu->update($request->all())) {
|
||||
return $this->success('编辑成功', 'close');
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
|
||||
public function destroy(WechatMenu $menu)
|
||||
{
|
||||
if ($menu->delete()) {
|
||||
return $this->success();
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
}
|
||||
91
app/Admin/Controllers/WechatRulesController.php
Normal file
91
app/Admin/Controllers/WechatRulesController.php
Normal file
@@ -0,0 +1,91 @@
|
||||
<?php
|
||||
|
||||
namespace App\Admin\Controllers;
|
||||
|
||||
use App\Models\WechatRule;
|
||||
use Illuminate\Http\Request;
|
||||
use Validator;
|
||||
|
||||
class WechatRulesController extends Controller
|
||||
{
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
$orderField = $request->orderField;
|
||||
$orderDirection = $request->orderDirection;
|
||||
$numPerPage = $request->numPerPage ?: 30;
|
||||
|
||||
$wechatRules = WechatRule::when($orderField, function ($query) use ($orderField, $orderDirection) {
|
||||
$query->orderBy($orderField, $orderDirection);
|
||||
})->paginate($numPerPage);
|
||||
|
||||
return view('Admin::wechatRules.index', compact('wechatRules'));
|
||||
}
|
||||
|
||||
|
||||
public function create(Request $request)
|
||||
{
|
||||
return view('Admin::wechatRules.create');
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'title' => 'required|max:100',
|
||||
'name' => 'required|max:100',
|
||||
'description' => 'required|max:200',
|
||||
'storage_id' => 'required',
|
||||
|
||||
], [
|
||||
'title.required' => '名称必须填写',
|
||||
'title.max' => '名称长度应在:max以内',
|
||||
'name.required' => '规则必须填写',
|
||||
'name.max' => '规则长度应在:max以内',
|
||||
'description.required' => '简介必须填写',
|
||||
'storage_id.required' => '标题图必须上传',
|
||||
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->error($validator->errors()->first());
|
||||
}
|
||||
|
||||
if (WechatRule::create($request->all())) {
|
||||
return $this->success('新增文章成功', 'close');
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
|
||||
public function edit(WechatRule $wechatRule)
|
||||
{
|
||||
return view('Admin::wechatRules.edit', compact('wechatRule'));
|
||||
|
||||
}
|
||||
|
||||
public function update(Request $request, WechatRule $wechatRule)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'title' => 'required|max:100',
|
||||
'name' => 'required|max:100',
|
||||
'description' => 'required|max:200',
|
||||
'storage_id' => 'required',
|
||||
|
||||
], [
|
||||
'title.required' => '名称必须填写',
|
||||
'title.max' => '名称长度应在:max以内',
|
||||
'name.required' => '规则必须填写',
|
||||
'name.max' => '规则长度应在:max以内',
|
||||
'description.required' => '简介必须填写',
|
||||
'storage_id.required' => '标题图必须上传',
|
||||
|
||||
]);
|
||||
$data = $request->all();
|
||||
$wechatRule->update($data);
|
||||
return $this->success('', 'close');
|
||||
}
|
||||
|
||||
public function destroy($id)
|
||||
{
|
||||
}
|
||||
}
|
||||
179
app/Admin/Controllers/WindupsController.php
Normal file
179
app/Admin/Controllers/WindupsController.php
Normal file
@@ -0,0 +1,179 @@
|
||||
<?php
|
||||
|
||||
namespace App\Admin\Controllers;
|
||||
|
||||
use Admin;
|
||||
use App\Models\Seller;
|
||||
use App\Models\WindupReport;
|
||||
use Illuminate\Http\Request;
|
||||
use RuLong\Order\Models\Order;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Validator;
|
||||
|
||||
class WindupsController extends Controller
|
||||
{
|
||||
|
||||
/**
|
||||
* 全部商户待结算列表-平台管理员
|
||||
* @Author:<ZhaoxiaWang>
|
||||
* @Date:2018-11-30
|
||||
*/
|
||||
public function index(Request $request)
|
||||
{
|
||||
$sellers = Seller::whereHas('orders')->get();
|
||||
|
||||
$numPerPage = $request->numPerPage ?: 30;
|
||||
$start = $request->start;
|
||||
$end = $request->end;
|
||||
$seller_id = Admin::id() == 1 ? $request->seller_id : Admin::user()->seller_id;
|
||||
$seller_orders = WindupReport::when($seller_id, function ($q) use ($seller_id) {$q->where('seller_id', $seller_id);})
|
||||
->when($start && $end, function ($query) use ($start, $end) {
|
||||
$query->whereBetween('start_time', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]);
|
||||
})
|
||||
->when($start && !$end, function ($query) use ($start) {
|
||||
$query->where('start_time', '>=', $start);
|
||||
})
|
||||
->when((!$start && $end), function ($query) use ($end) {
|
||||
$query->where('start_time', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end))));
|
||||
})->where('state',0)->orderBy('id','desc')->paginate($numPerPage);
|
||||
|
||||
$unwinduped = WindupReport::when($seller_id, function ($q) use ($seller_id) {$q->where('seller_id', $seller_id);})->where('state',0)
|
||||
->select(DB::raw('SUM(seller_freight_sum + seller_amount_sum) AS sum_total'))->first();
|
||||
|
||||
$winduped = WindupReport::when($seller_id, function ($q) use ($seller_id) {$q->where('seller_id', $seller_id);})->where('state',1)
|
||||
->select(DB::raw('SUM(seller_freight_sum + seller_amount_sum) AS sum_total'))->first();
|
||||
|
||||
$curr_unwinduped = Order::when($seller_id, function ($q) use ($seller_id) {$q->where('seller_id', $seller_id);})
|
||||
->whereHas('logs', function ($query) {
|
||||
$query->where('state','DELIVERED|SIGNED');
|
||||
})
|
||||
->where('state', '<>',Order::ORDER_CLOSED)
|
||||
->where('windup_report_id',0)
|
||||
->select(DB::raw('SUM(seller_freight + seller_amount) AS sum_total'))->first();
|
||||
|
||||
return view('Admin::windups.index', compact('seller_orders','sellers','unwinduped','winduped','curr_unwinduped'));
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 待结算订单明细-平台管理员、商户管理员同时可查看
|
||||
* @Author:<ZhaoxiaWang>
|
||||
* @Date:2018-11-30
|
||||
*/
|
||||
public function orders(Request $request)
|
||||
{
|
||||
$orderid = $request->orderid;
|
||||
$windup_report_id = $request->windup_report_id;
|
||||
$numPerPage = $request->numPerPage ?: 30;
|
||||
|
||||
$orders = Order::where('windup_report_id', $windup_report_id)
|
||||
->when($orderid, function ($query) use ($orderid) {
|
||||
$query->where('orderid', 'like', "%{$orderid}%");
|
||||
})
|
||||
->with(['seller', 'user.info'])
|
||||
->orderBy('created_at', 'desc')
|
||||
->paginate($numPerPage);
|
||||
return view('Admin::windups.orders', compact('orders'));
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建商户结算记录-平台管理员
|
||||
* @Author:<ZhaoxiaWang>
|
||||
* @Date:2018-11-30
|
||||
*/
|
||||
public function create(Request $request)
|
||||
{
|
||||
$windup_report_id = $request->windup_report_id;
|
||||
|
||||
$windup = WindupReport::find($windup_report_id);
|
||||
|
||||
return view('Admin::windups.create', compact('windup'));
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存商户结算记录-平台管理员
|
||||
* @Author:<ZhaoxiaWang>
|
||||
* @Date:2018-11-30
|
||||
*/
|
||||
public function dostate(Request $request)
|
||||
{
|
||||
$windup_report_id = $request->windup_report_id;
|
||||
$windup = WindupReport::find($windup_report_id);
|
||||
if(!$windup->seller || empty($windup->seller->account_name)){
|
||||
return $this->error('商户必须设置收款账户才能结算', 'close');
|
||||
}
|
||||
|
||||
$windup->remark = $request->remark;
|
||||
$windup->is_provide_invoice = $request->is_provide_invoice;
|
||||
$windup->state = 1;
|
||||
$windup->seller_account_name = $windup->seller->account_name;
|
||||
$windup->seller_account_bank = $windup->seller->bank_name;
|
||||
$windup->seller_account_number = $windup->seller->account_number;
|
||||
$windup->winduped_at = now();
|
||||
|
||||
$windup->save();
|
||||
return $this->success('操作成功', 'close');
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 全部已结算记录-平台管理员
|
||||
* @Author:<ZhaoxiaWang>
|
||||
* @Date:2018-11-30
|
||||
*/
|
||||
public function winduped(Request $request)
|
||||
{
|
||||
$sellers = Seller::whereHas('orders')->get();
|
||||
|
||||
$numPerPage = $request->numPerPage ?: 30;
|
||||
$start = $request->start;
|
||||
$end = $request->end;
|
||||
$seller_id = Admin::id() == 1 ? $request->seller_id : Admin::user()->seller_id;
|
||||
$seller_orders = WindupReport::when($seller_id, function ($q) use ($seller_id) {$q->where('seller_id', $seller_id);})
|
||||
->when($start && $end, function ($query) use ($start, $end) {
|
||||
$query->whereBetween('start_time', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]);
|
||||
})
|
||||
->when($start && !$end, function ($query) use ($start) {
|
||||
$query->where('start_time', '>=', $start);
|
||||
})
|
||||
->when((!$start && $end), function ($query) use ($end) {
|
||||
$query->where('start_time', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end))));
|
||||
})->where('state',1)->orderBy('id','desc')->paginate($numPerPage);
|
||||
|
||||
$unwinduped = WindupReport::when($seller_id, function ($q) use ($seller_id) {$q->where('seller_id', $seller_id);})->where('state',0)
|
||||
->select(DB::raw('SUM(seller_freight_sum + seller_amount_sum) AS sum_total'))->first();
|
||||
|
||||
$winduped = WindupReport::when($seller_id, function ($q) use ($seller_id) {$q->where('seller_id', $seller_id);})->where('state',1)
|
||||
->select(DB::raw('SUM(seller_freight_sum + seller_amount_sum) AS sum_total'))->first();
|
||||
|
||||
$curr_unwinduped = Order::when($seller_id, function ($q) use ($seller_id) {$q->where('seller_id', $seller_id);})
|
||||
->whereHas('logs', function ($query) {
|
||||
$query->where('state','DELIVERED|SIGNED');
|
||||
})
|
||||
->where('state', '<>',Order::ORDER_CLOSED)
|
||||
->where('windup_report_id',0)
|
||||
->select(DB::raw('SUM(seller_freight + seller_amount) AS sum_total'))->first();
|
||||
return view('Admin::windups.winduped', compact('seller_orders','sellers','unwinduped','winduped','curr_unwinduped'));
|
||||
|
||||
}
|
||||
|
||||
|
||||
public function rule()
|
||||
{
|
||||
$info = \Params::get('windup_rule');
|
||||
$info = str_replace("\r", "<br />", $info);
|
||||
return view('Admin::windups.rule', compact('info'));
|
||||
|
||||
}
|
||||
|
||||
public function invoice()
|
||||
{
|
||||
$info = \Params::get('invoice_info');
|
||||
$info = str_replace("\r", "<br />", $info);
|
||||
return view('Admin::windups.invoice', compact('info'));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
73
app/Admin/Controllers/WithdrawsController.php
Normal file
73
app/Admin/Controllers/WithdrawsController.php
Normal file
@@ -0,0 +1,73 @@
|
||||
<?php
|
||||
|
||||
namespace App\Admin\Controllers;
|
||||
|
||||
use App\Models\Withdraw;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class WithdrawsController extends Controller
|
||||
{
|
||||
|
||||
public function status(Request $request, Withdraw $withdraw)
|
||||
{
|
||||
return view('Admin::withdraws.status', compact('withdraw'));
|
||||
}
|
||||
|
||||
public function doStatus(Request $request, Withdraw $withdraw)
|
||||
{
|
||||
$state = $request->state;
|
||||
if(empty($state)){
|
||||
return $this->error('请选择审核结果');
|
||||
}
|
||||
|
||||
if($state == 1){
|
||||
//提现处理-提现到微信零钱
|
||||
if($withdraw->way == 'Wechat'){
|
||||
if(empty($withdraw->openid)){
|
||||
return $this->error('提现失败,未找到提现用户微信');
|
||||
}
|
||||
$app = app('wechat.payment');
|
||||
$result = $app->transfer->toBalance([
|
||||
'partner_trade_no' => 'WTN' . date('ymdHis') . sprintf("%07d", mt_rand(0, pow(10, 7) - 1)),
|
||||
'openid' => $withdraw->openid,
|
||||
'check_name' => 'NO_CHECK',
|
||||
're_user_name' => '',
|
||||
'amount' => $withdraw->take * 100,
|
||||
'desc' => '余额提现到微信零钱',
|
||||
]);
|
||||
if($result['result_code'] == 'SUCCESS'){
|
||||
$withdraw->update(['state' => 1]);
|
||||
return $this->success('操作成功','close');
|
||||
}else{
|
||||
return $this->error($result['err_code_des']);
|
||||
}
|
||||
|
||||
}else{
|
||||
if($withdraw->update(['state' => 1])){
|
||||
return $this->success('操作成功','close');
|
||||
}else{
|
||||
return $this->error('操作失败');
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if($state == 2) {
|
||||
//驳回处理
|
||||
$remark = $request->remark;
|
||||
if (empty($remark)) {
|
||||
return $this->error('请填写驳回原因');
|
||||
}
|
||||
try {
|
||||
DB::transaction(function () use ($remark,$withdraw){
|
||||
$withdraw->user->rule('withdraw_reject', $withdraw->amount, false, 'withdraw'.$withdraw->id);
|
||||
$withdraw->update(['state' => 2, 'remark' => $remark]);
|
||||
});
|
||||
return $this->success('操作成功','close');
|
||||
} catch (\Exception $e) {
|
||||
return $this->error('操作失败' . $e->getmessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user