更新代码
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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
92
app/Admin/Views/accounts/index.blade.php
Normal file
92
app/Admin/Views/accounts/index.blade.php
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
<div class="pageHeader">
|
||||||
|
<form rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="post">
|
||||||
|
<div class="searchBar">
|
||||||
|
<table class="searchContent">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
手机号:
|
||||||
|
<input type="text" name="mobile" value="{{ Request::input('mobile') }}"/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
昵称:
|
||||||
|
<input type="text" name="nickname" value="{{ Request::input('nickname') }}"/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
起:
|
||||||
|
<input type="text" name="start" value="{{ Request::get('start') }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
止:
|
||||||
|
<input type="text" name="end" value="{{ Request::get('end') }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
|
||||||
|
</td>
|
||||||
|
<td><div class="buttonActive"><div class="buttonContent"><button type="submit">检索结果</button></div></div></td>
|
||||||
|
<td><div class="buttonActive"><div class="buttonContent"><button type="button" class="export-data">导出数据</button></div></div></td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pageContent">
|
||||||
|
|
||||||
|
|
||||||
|
<table class="table" width="100%" layoutH="112">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th width="100">手机号</th>
|
||||||
|
<th width="100">昵称</th>
|
||||||
|
<th width="100">现金账户</th>
|
||||||
|
<!-- <th width="100">积分账户</th> -->
|
||||||
|
<!-- <th width="100">满仓次数</th> -->
|
||||||
|
<!-- <th width="100">备用账户B</th> -->
|
||||||
|
<!-- <th width="100">备用账户C</th> -->
|
||||||
|
<!-- <th width="100">备用账户D</th> -->
|
||||||
|
<th width="120" orderField="created_at" @if (Request::input('orderField') == 'created_at') class="{{ Request::input('orderDirection') }}" @endif>注册时间</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@foreach ($accounts as $account)
|
||||||
|
<tr>
|
||||||
|
<td>{{ $account->user->mobile }}</td>
|
||||||
|
<td>{{ $account->user->info->nickname }}</td>
|
||||||
|
<td>{{ $account->cash }}</td>
|
||||||
|
<!-- <td>{{ $account->score }}</td> -->
|
||||||
|
<!-- <td>{{ $account->act_a }}</td> -->
|
||||||
|
<!-- <td>{{ $account->act_b }}</td> -->
|
||||||
|
<!-- <td>{{ $account->act_c }}</td> -->
|
||||||
|
<!-- <td>{{ $account->act_d }}</td> -->
|
||||||
|
<td>{{ $account->created_at }}</td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
@endforeach
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<div class="panelBar">
|
||||||
|
<form id="pagerForm" method="post" action="#rel#">
|
||||||
|
<input type="hidden" name="page" value="{{ $accounts->currentPage() }}" />
|
||||||
|
<input type="hidden" name="numPerPage" value="{{ $accounts->perPage() }}" />
|
||||||
|
<input type="hidden" name="orderField" value="{{ Request::input('orderField') }}" />
|
||||||
|
<input type="hidden" name="orderDirection" value="{{ Request::input('orderDirection') }}" />
|
||||||
|
</form>
|
||||||
|
<div class="pages">
|
||||||
|
<span>显示</span>
|
||||||
|
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
|
||||||
|
<option @if ($accounts->perPage() == 30) selected @endif value="30">30</option>
|
||||||
|
<option @if ($accounts->perPage() == 100) selected @endif value="100">100</option>
|
||||||
|
<option @if ($accounts->perPage() == 200) selected @endif value="200">200</option>
|
||||||
|
</select>
|
||||||
|
<span>条,共 {{ $accounts->total() }} 条</span>
|
||||||
|
</div>
|
||||||
|
<div class="pagination" targetType="navTab" totalCount="{{ $accounts->total() }}" numPerPage="{{ $accounts->perPage() }}" pageNumShown="10" currentPage="{{ $accounts->currentPage() }}"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
//点击导出
|
||||||
|
$('.export-data').click(function (event) {
|
||||||
|
location.href = "{{ route('Admin.export.accounts') }}?" + $(this).parents('form').serialize();
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
102
app/Admin/Views/accounts/logs.blade.php
Normal file
102
app/Admin/Views/accounts/logs.blade.php
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
<div class="pageHeader">
|
||||||
|
<form rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="post">
|
||||||
|
<div class="searchBar">
|
||||||
|
<table class="searchContent">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
类型:
|
||||||
|
<select name="rule_id">
|
||||||
|
<option value="" @if(Request::input('rule_id')=="") selected @endif>账户变更类型</option>
|
||||||
|
@foreach ($rules as $key => $rule)
|
||||||
|
<option value="{{ $rule->id }}" @if(Request::input('rule_id')==$rule->id) selected @endif>{{ $rule->title }}</option>
|
||||||
|
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
手机号:
|
||||||
|
<input type="text" name="mobile" value="{{ Request::input('mobile') }}"/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
用户昵称:
|
||||||
|
<input type="text" name="nickname" value="{{ Request::input('nickname') }}"/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
起:
|
||||||
|
<input type="text" name="start" value="{{ Request::get('start') }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
止:
|
||||||
|
<input type="text" name="end" value="{{ Request::get('end') }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
|
||||||
|
</td>
|
||||||
|
<td><div class="buttonActive"><div class="buttonContent"><button type="submit">检索结果</button></div></div></td>
|
||||||
|
<td><div class="buttonActive"><div class="buttonContent"><button type="button" class="export-data">导出数据</button></div></div></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pageContent">
|
||||||
|
<table class="table" width="100%" layoutH="85">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th width="50">编号</th>
|
||||||
|
<th width="100">用户手机号</th>
|
||||||
|
<th width="100">用户昵称</th>
|
||||||
|
<th width="150">规则名称</th>
|
||||||
|
<th width="60">账户类型</th>
|
||||||
|
<th width="100">变动数额</th>
|
||||||
|
<th width="100">当期余额</th>
|
||||||
|
<th width="60">冻结</th>
|
||||||
|
<th width="">备注</th>
|
||||||
|
<th width="120" orderField="created_at" @if (Request::input('orderField') == 'created_at') class="{{ Request::input('orderDirection') }}" @endif>创建时间</th>
|
||||||
|
<th width="120" orderField="updated_at" @if (Request::input('orderField') == 'updated_at') class="{{ Request::input('orderDirection') }}" @endif>更新时间</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@foreach ($logs as $log)
|
||||||
|
<tr>
|
||||||
|
<td>{{ $log->id }}</td>
|
||||||
|
<td>{{ $log->user->mobile }}</td>
|
||||||
|
<td>{{ $log->user->info->nickname }}</td>
|
||||||
|
<td>{{ $log->rule->title }}</td>
|
||||||
|
<td>{{ $log->type }}</td>
|
||||||
|
<td>{{ $log->variable }}</td>
|
||||||
|
<td>{{ $log->balance }}</td>
|
||||||
|
<td>{{ $log->frozen }}</td>
|
||||||
|
<td>@json($log->source)</td>
|
||||||
|
<td>{{ $log->created_at }}</td>
|
||||||
|
<td>{{ $log->updated_at }}</td>
|
||||||
|
</tr>
|
||||||
|
@endforeach
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<div class="panelBar">
|
||||||
|
<form id="pagerForm" method="post" action="#rel#">
|
||||||
|
<input type="hidden" name="page" value="{{ $logs->currentPage() }}" />
|
||||||
|
<input type="hidden" name="numPerPage" value="{{ $logs->perPage() }}" />
|
||||||
|
<input type="hidden" name="orderField" value="{{ Request::input('orderField') }}" />
|
||||||
|
<input type="hidden" name="orderDirection" value="{{ Request::input('orderDirection') }}" />
|
||||||
|
</form>
|
||||||
|
<div class="pages">
|
||||||
|
<span>显示</span>
|
||||||
|
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
|
||||||
|
<option @if ($logs->perPage() == 30) selected @endif value="30">30</option>
|
||||||
|
<option @if ($logs->perPage() == 100) selected @endif value="100">100</option>
|
||||||
|
<option @if ($logs->perPage() == 200) selected @endif value="200">200</option>
|
||||||
|
</select>
|
||||||
|
<span>条,共 {{ $logs->total() }} 条</span>
|
||||||
|
</div>
|
||||||
|
<div class="pagination" targetType="navTab" totalCount="{{ $logs->total() }}" numPerPage="{{ $logs->perPage() }}" pageNumShown="10" currentPage="{{ $logs->currentPage() }}"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
//点击导出
|
||||||
|
$('.export-data').click(function (event) {
|
||||||
|
location.href = "{{ route('Admin.export.logs') }}?" + $(this).parents('form').serialize();
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
80
app/Admin/Views/accounts/rules.blade.php
Normal file
80
app/Admin/Views/accounts/rules.blade.php
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
<div class="pageHeader">
|
||||||
|
<form rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="post">
|
||||||
|
<div class="searchBar">
|
||||||
|
<table class="searchContent">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
规则名称:
|
||||||
|
<input type="text" name="title" value="{{ Request::input('title') }}"/>
|
||||||
|
</td>
|
||||||
|
<td><div class="buttonActive"><div class="buttonContent"><button type="submit">检索结果</button></div></div></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pageContent">
|
||||||
|
<div class="panelBar">
|
||||||
|
<ul class="toolBar">
|
||||||
|
{{-- <li><a class="add" href="{{ route('Admin.rules.create') }}" mask="true" target="dialog" rel="dialog_{{ time() }}" title="创建用户"><span>创建用户</span></a></li> --}}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<table class="table" width="100%" layoutH="112">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th width="50">编号</th>
|
||||||
|
<th width="150">规则名称</th>
|
||||||
|
<th width="150">调用标识</th>
|
||||||
|
<th width="60">账户类型</th>
|
||||||
|
<th width="60">变动数量</th>
|
||||||
|
<th width="60">调用次数</th>
|
||||||
|
<th width="60">直接到帐</th>
|
||||||
|
<th width="">备注说明</th>
|
||||||
|
<th width="120" orderField="created_at" @if (Request::input('orderField') == 'created_at') class="{{ Request::input('orderDirection') }}" @endif>创建时间</th>
|
||||||
|
<th width="120" orderField="updated_at" @if (Request::input('orderField') == 'updated_at') class="{{ Request::input('orderDirection') }}" @endif>更新时间</th>
|
||||||
|
<th width="60"></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@foreach ($rules as $rule)
|
||||||
|
<tr>
|
||||||
|
<td>{{ $rule->id }}</td>
|
||||||
|
<td>{{ $rule->title }}</td>
|
||||||
|
<td>{{ $rule->name }}</td>
|
||||||
|
<td>{{ $rule->type }}</td>
|
||||||
|
<td>{{ $rule->variable }}</td>
|
||||||
|
<td>{{ $rule->trigger_text }}</td>
|
||||||
|
<td>{{ $rule->deductions }}</td>
|
||||||
|
<td>{{ $rule->remark }}</td>
|
||||||
|
<td>{{ $rule->created_at }}</td>
|
||||||
|
<td>{{ $rule->updated_at }}</td>
|
||||||
|
<td>
|
||||||
|
{{-- <a title="编辑产品" target="dialog" href="{{ route('Admin.rules.edit', $rule) }}" rel="dialog{{ time() }}" class="btnEdit">编辑</a> --}}
|
||||||
|
{{-- <a title="删除产品" target="ajaxDelete" href="{{ route('Admin.rules.destroy', $rule) }}" class="btnDel">删除</a> --}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
@endforeach
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<div class="panelBar">
|
||||||
|
<form id="pagerForm" method="post" action="#rel#">
|
||||||
|
<input type="hidden" name="page" value="{{ $rules->currentPage() }}" />
|
||||||
|
<input type="hidden" name="numPerPage" value="{{ $rules->perPage() }}" />
|
||||||
|
<input type="hidden" name="orderField" value="{{ Request::input('orderField') }}" />
|
||||||
|
<input type="hidden" name="orderDirection" value="{{ Request::input('orderDirection') }}" />
|
||||||
|
</form>
|
||||||
|
<div class="pages">
|
||||||
|
<span>显示</span>
|
||||||
|
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
|
||||||
|
<option @if ($rules->perPage() == 30) selected @endif value="30">30</option>
|
||||||
|
<option @if ($rules->perPage() == 100) selected @endif value="100">100</option>
|
||||||
|
<option @if ($rules->perPage() == 200) selected @endif value="200">200</option>
|
||||||
|
</select>
|
||||||
|
<span>条,共 {{ $rules->total() }} 条</span>
|
||||||
|
</div>
|
||||||
|
<div class="pagination" targetType="navTab" totalCount="{{ $rules->total() }}" numPerPage="{{ $rules->perPage() }}" pageNumShown="10" currentPage="{{ $rules->currentPage() }}"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
94
app/Admin/Views/accounts/withdraws.blade.php
Normal file
94
app/Admin/Views/accounts/withdraws.blade.php
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
<div class="pageHeader">
|
||||||
|
<form rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="post">
|
||||||
|
<div class="searchBar">
|
||||||
|
<table class="searchContent">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
手机号:
|
||||||
|
<input type="text" name="mobile" value="{{ Request::input('mobile') }}"/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
用户昵称:
|
||||||
|
<input type="text" name="nickname" value="{{ Request::input('nickname') }}"/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
起:
|
||||||
|
<input type="text" name="start" value="{{ Request::get('start') }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
止:
|
||||||
|
<input type="text" name="end" value="{{ Request::get('end') }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
|
||||||
|
</td>
|
||||||
|
<td><div class="buttonActive"><div class="buttonContent"><button type="submit">检索结果</button></div></div></td>
|
||||||
|
<td><div class="buttonActive"><div class="buttonContent"><button type="button" class="export-data">导出数据</button></div></div></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pageContent">
|
||||||
|
<table class="table" width="100%" layoutH="85">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th width="50">编号</th>
|
||||||
|
<th width="80">用户手机号</th>
|
||||||
|
<th width="80">用户昵称</th>
|
||||||
|
<th width="100">提现金额</th>
|
||||||
|
<th width="100">手续费</th>
|
||||||
|
<th width="100">实到金额</th>
|
||||||
|
<th width="100">提现方式</th>
|
||||||
|
<th width="60">状态</th>
|
||||||
|
<th >备注</th>
|
||||||
|
<th width="120" orderField="created_at" @if (Request::input('orderField') == 'created_at') class="{{ Request::input('orderDirection') }}" @endif>创建时间</th>
|
||||||
|
<th width="120" orderField="updated_at" @if (Request::input('orderField') == 'updated_at') class="{{ Request::input('orderDirection') }}" @endif>更新时间</th>
|
||||||
|
<th width="120">操作</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@foreach ($withdraws as $withdraw)
|
||||||
|
<tr>
|
||||||
|
<td>{{ $withdraw->id }}</td>
|
||||||
|
<td>{{ $withdraw->user->mobile }}</td>
|
||||||
|
<td>{{ $withdraw->user->info->nickname }}</td>
|
||||||
|
<td>{{ $withdraw->amount }}</td>
|
||||||
|
<td>{{ $withdraw->tax }}</td>
|
||||||
|
<td>{{ $withdraw->take }}</td>
|
||||||
|
<td>{{ $withdraw->type_text }}</td>
|
||||||
|
<td>{{ $withdraw->state_text }}</td>
|
||||||
|
<td>{{ $withdraw->remark }}</td>
|
||||||
|
<td>{{ $withdraw->created_at }}</td>
|
||||||
|
<td>{{ $withdraw->updated_at }}</td>
|
||||||
|
<td>@if($withdraw->state == 0)<a title="审核" target="dialog" href="{{ route('Admin.withdraws.status',$withdraw) }}" width="350" height="250">审核</a>@endif</td>
|
||||||
|
</tr>
|
||||||
|
@endforeach
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<div class="panelBar">
|
||||||
|
<form id="pagerForm" method="post" action="#rel#">
|
||||||
|
<input type="hidden" name="page" value="{{ $withdraws->currentPage() }}" />
|
||||||
|
<input type="hidden" name="numPerPage" value="{{ $withdraws->perPage() }}" />
|
||||||
|
<input type="hidden" name="orderField" value="{{ Request::input('orderField') }}" />
|
||||||
|
<input type="hidden" name="orderDirection" value="{{ Request::input('orderDirection') }}" />
|
||||||
|
</form>
|
||||||
|
<div class="pages">
|
||||||
|
<span>显示</span>
|
||||||
|
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
|
||||||
|
<option @if ($withdraws->perPage() == 30) selected @endif value="30">30</option>
|
||||||
|
<option @if ($withdraws->perPage() == 100) selected @endif value="100">100</option>
|
||||||
|
<option @if ($withdraws->perPage() == 200) selected @endif value="200">200</option>
|
||||||
|
</select>
|
||||||
|
<span>条,共 {{ $withdraws->total() }} 条</span>
|
||||||
|
</div>
|
||||||
|
<div class="pagination" targetType="navTab" totalCount="{{ $withdraws->total() }}" numPerPage="{{ $withdraws->perPage() }}" pageNumShown="10" currentPage="{{ $withdraws->currentPage() }}"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
//点击导出
|
||||||
|
$('.export-data').click(function (event) {
|
||||||
|
location.href = "{{ route('Admin.export.withdraws') }}?" + $(this).parents('form').serialize();
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
94
app/Admin/Views/activities/create.blade.php
Normal file
94
app/Admin/Views/activities/create.blade.php
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
<div class="pageContent">
|
||||||
|
<form method="post" action="{{ route('Admin.activities.store') }}" class="pageForm required-validate" onsubmit="return validateCallback(this, dialogAjaxDone)">
|
||||||
|
<div class="pageFormContent" layoutH="55">
|
||||||
|
<div class="unit">
|
||||||
|
<label>活动标题:</label>
|
||||||
|
<input type="text" name="title" value="" size="79" class="required"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>分类:</label>
|
||||||
|
<select name="category_id" class="combox">
|
||||||
|
@foreach ($categoies as $category)
|
||||||
|
<option value="{{ $category['id'] }}">{{ $category['title_show'] }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>所属商家:</label>
|
||||||
|
<select name="seller_id" >
|
||||||
|
<option value="">请选择商家</option>
|
||||||
|
@foreach ($sellers as $seller)
|
||||||
|
<option value="{{ $seller->id }}">{{ $seller->name }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>原价:</label>
|
||||||
|
<input type="text" name="original" value="" size="79" class="required"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>现价:</label>
|
||||||
|
<input type="text" name="price" value="" size="79" class="required"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>活动描述:</label>
|
||||||
|
<textarea name="description" rows="3" cols="80"></textarea>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>开始时间:</label>
|
||||||
|
<input type="text" name="start_time" value="" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="00:00:00" readonly="true">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>结束时间:</label>
|
||||||
|
<input type="text" name="end_time" value="" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
|
||||||
|
</div>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-8">
|
||||||
|
@ueditor('', 'content',"activity")
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<input id="testFileInput" type="file" name="image" uploaderOption="{
|
||||||
|
swf:'{{ admin_assets('uploadify/scripts/uploadify.swf') }}',
|
||||||
|
uploader:'{{ route('RuLong.storages.upload', ['name'=>'fileup']) }}',
|
||||||
|
formData:{_token: '{{ csrf_token() }}'},
|
||||||
|
fileObjName: 'fileup',
|
||||||
|
buttonText:'选择封面图片',
|
||||||
|
fileSizeLimit:'20MB',
|
||||||
|
auto:true,
|
||||||
|
multi:false,
|
||||||
|
onUploadSuccess: function(file, res) {
|
||||||
|
var d = JSON.parse(res)
|
||||||
|
$('.cover img').attr('src', d.data.url).show();
|
||||||
|
$('#storageID').val(d.data.id);
|
||||||
|
}}"/>
|
||||||
|
<div class="cover" style="border:1px solid #B8D0D6;min-height:200px">
|
||||||
|
<img src="" style="display:none;width:100%" alt="">
|
||||||
|
</div>
|
||||||
|
<input type="hidden" id="storageID" name="storage_id" value="">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@csrf
|
||||||
|
<div class="formBar">
|
||||||
|
<ul>
|
||||||
|
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
|
||||||
|
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
101
app/Admin/Views/activities/edit.blade.php
Normal file
101
app/Admin/Views/activities/edit.blade.php
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
<div class="pageContent">
|
||||||
|
<form method="post" action="{{ route('Admin.activities.update', $activity) }}" class="pageForm required-validate" onsubmit="return validateCallback(this, dialogAjaxDone)">
|
||||||
|
<div class="pageFormContent" layoutH="55">
|
||||||
|
<div class="unit">
|
||||||
|
<label>活动标题:</label>
|
||||||
|
<input type="text" name="title" value="{{ $activity->title }}" size="79" class="required"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>分类:</label>
|
||||||
|
<select name="category_id" class="combox">
|
||||||
|
@foreach ($categoies as $category)
|
||||||
|
<option value="{{ $category['id'] }}">{{ $category['title_show'] }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>所属商家:</label>
|
||||||
|
<select name="seller_id" >
|
||||||
|
<option value="">请选择商家</option>
|
||||||
|
@foreach ($sellers as $seller)
|
||||||
|
<option value="{{ $seller->id }}" @if($activity->seller_id==$seller->id) selected @endif>{{ $seller->name }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>原价:</label>
|
||||||
|
<input type="text" name="original" value="{{ $activity->original }}" size="79" class="required"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>现价:</label>
|
||||||
|
<input type="text" name="price" value="{{ $activity->price }}" size="79" class="required"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>活动描述:</label>
|
||||||
|
<textarea name="description" rows="3" cols="80">{{ $activity->description }}</textarea>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>开始时间:</label>
|
||||||
|
<input type="text" name="start_time" value="{{ $activity->start_time }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="00:00:00" readonly="true">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>结束时间:</label>
|
||||||
|
<input type="text" name="end_time" value="{{ $activity->end_time }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
|
||||||
|
</div>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-8">
|
||||||
|
@ueditor($activity->content, 'content',"activities{{ $activity->id }}")
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<input id="testFileInput" type="file" name="image" uploaderOption="{
|
||||||
|
swf:'{{ admin_assets('uploadify/scripts/uploadify.swf') }}',
|
||||||
|
uploader:'{{ route('RuLong.storages.upload', ['name'=>'fileup']) }}',
|
||||||
|
formData:{_token: '{{ csrf_token() }}'},
|
||||||
|
fileObjName: 'fileup',
|
||||||
|
buttonText:'选择封面图片',
|
||||||
|
fileSizeLimit:'20MB',
|
||||||
|
auto:true,
|
||||||
|
multi:false,
|
||||||
|
onUploadSuccess: function(file, res) {
|
||||||
|
var d = JSON.parse(res)
|
||||||
|
$('.cover img').attr('src', d.data.url).show();
|
||||||
|
$('#storageID').val(d.data.id);
|
||||||
|
}}"/>
|
||||||
|
<div class="cover" style="border:1px solid #B8D0D6;min-height:200px">
|
||||||
|
@if ($activity->storage->path)
|
||||||
|
<img src="{{$activity->storage->path}}" style="width:100%" alt="">
|
||||||
|
@else
|
||||||
|
<img src="" style="display:none;width:100%" alt="">
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
<input type="hidden" id="storageID" name="storage_id" value="{{ $activity->storage_id }}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@csrf
|
||||||
|
<div class="formBar">
|
||||||
|
<ul>
|
||||||
|
@csrf
|
||||||
|
@method('PUT')
|
||||||
|
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
|
||||||
|
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
32
app/Admin/Views/activities/giftEdit.blade.php
Normal file
32
app/Admin/Views/activities/giftEdit.blade.php
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
<div class="pageContent">
|
||||||
|
<form method="post" action="{{ route('Admin.activityGifts.update', $gift) }}" class="pageForm required-validate" onsubmit="return validateCallback(this, dialogAjaxDone)">
|
||||||
|
<div class="pageFormContent" layoutH="55">
|
||||||
|
<div class="unit">
|
||||||
|
<label>任务指标:</label>
|
||||||
|
<input type="text" name="mode" value="{{ $gift->mode }}" size="50" class="required"/>
|
||||||
|
</div>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>领取消耗业绩:</label>
|
||||||
|
<input type="text" name="consume_mode" value="{{ $gift->consume_mode }}" size="50" class="required"/>
|
||||||
|
</div>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>商家是否结算成本:</label>
|
||||||
|
<select name="is_windup" class="combox">
|
||||||
|
<option value="0">否</option>
|
||||||
|
<option value="1">是</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@csrf
|
||||||
|
<div class="formBar">
|
||||||
|
<ul>
|
||||||
|
@csrf
|
||||||
|
@method('PUT')
|
||||||
|
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
|
||||||
|
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
90
app/Admin/Views/activities/giftsCreate.blade.php
Normal file
90
app/Admin/Views/activities/giftsCreate.blade.php
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
<div class="pageContent">
|
||||||
|
<form method="post" action="{{ route('Admin.activityGifts.store',$activity) }}" class="pageForm required-validate" onsubmit="return validateCallback(this, dialogAjaxDone)">
|
||||||
|
<div class="pageFormContent" layoutH="55">
|
||||||
|
<div class="unit">
|
||||||
|
<label>选择商品:</label>
|
||||||
|
<div style="width: 70%">
|
||||||
|
<select id="seller">
|
||||||
|
<option value="">选择商户</option>
|
||||||
|
@foreach ($sellers as $seller)
|
||||||
|
<option value="{{ $seller['id'] }}">{{ $seller['name'] }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
<select id="goods" name="goods_id">
|
||||||
|
<option value="">选择商品</option>
|
||||||
|
</select>
|
||||||
|
<select id="params" name="param_id">
|
||||||
|
<option value="">选择规格</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="unit">
|
||||||
|
<label>任务指标:</label>
|
||||||
|
<input type="number" name="mode" value="" size="50" class="required"/>
|
||||||
|
</div>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>领取消耗业绩:</label>
|
||||||
|
<input type="number" name="consume_mode" value="0" size="50" class="required"/>
|
||||||
|
</div>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>商家是否结算成本:</label>
|
||||||
|
<select name="is_windup" class="combox">
|
||||||
|
<option value="0">否</option>
|
||||||
|
<option value="1">是</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@csrf
|
||||||
|
<div class="formBar">
|
||||||
|
<ul>
|
||||||
|
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
|
||||||
|
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript">
|
||||||
|
$("#seller").on('change', function() {
|
||||||
|
var seller_id = $(this).val();
|
||||||
|
$.post('{{ route('Admin.activities.goods')}}', {seller_id: seller_id, _token:"{{ csrf_token() }}"}, function(res) {
|
||||||
|
if (res.code) {
|
||||||
|
$('#goods').html("");
|
||||||
|
var option1 = $("<option>").val(0).text('请选择商品');
|
||||||
|
$('#goods').append(option1);
|
||||||
|
$.each(res.data, function(key, val) {
|
||||||
|
var option1 = '<option value="' + val.id + '">'+ val.title +'</option>';
|
||||||
|
$('#goods').append(option1);
|
||||||
|
});
|
||||||
|
$("#params").get(0).selectedIndex = 0;
|
||||||
|
$("#goods").get(0).selectedIndex = 0;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
updateAlert(res.msg);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#goods").on('change', function() {
|
||||||
|
var goods_id = $(this).val();
|
||||||
|
$.post('{{ route('Admin.activities.params')}}', {goods_id: goods_id, _token:"{{ csrf_token() }}"}, function(res) {
|
||||||
|
if (res.code) {
|
||||||
|
$('#params').html("");
|
||||||
|
var option1 = $("<option>").val(0).text('请选择规格');
|
||||||
|
$('#params').append(option1);
|
||||||
|
$.each(res.data, function(key, val) {
|
||||||
|
var option1 = '<option value="' + val.id + '">'+ val.title +'</option>';
|
||||||
|
$('#params').append(option1);
|
||||||
|
});
|
||||||
|
$("#params").get(0).selectedIndex=0;
|
||||||
|
} else {
|
||||||
|
updateAlert(res.msg);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
99
app/Admin/Views/activities/giftsEdit.blade.php
Normal file
99
app/Admin/Views/activities/giftsEdit.blade.php
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
<div class="pageContent">
|
||||||
|
<form method="post" action="{{ route('Admin.activityGifts.update', $gift) }}" class="pageForm required-validate" onsubmit="return validateCallback(this, dialogAjaxDone)">
|
||||||
|
<div class="pageFormContent" layoutH="55">
|
||||||
|
<div class="unit">
|
||||||
|
<label>选择商品:</label>
|
||||||
|
<div style="width: 70%">
|
||||||
|
<select id="seller">
|
||||||
|
<option value="">选择商户</option>
|
||||||
|
@foreach ($sellers as $seller)
|
||||||
|
<option value="{{ $seller['id'] }}" @if($gift->goods->seller_id == $seller->id) selected @endif>{{ $seller['name'] }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
<select id="goods" name="goods_id">
|
||||||
|
<option value="">选择商品</option>
|
||||||
|
@foreach ($goods as $good)
|
||||||
|
<option value="{{ $good['id'] }}" @if($gift->goods_id == $good->id) selected @endif>{{ $good['title'] }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
<select id="params" name="param_id">
|
||||||
|
<option value="">选择规格</option>
|
||||||
|
@foreach ($params as $param)
|
||||||
|
<option value="{{ $param['id'] }}" @if($gift->param_id == $param->id) selected @endif>
|
||||||
|
{{ $param['value'] }} - 售价{{ $param['price'] }} - 成本{{ $param['cost'] }}
|
||||||
|
</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>任务指标:</label>
|
||||||
|
<input type="text" name="mode" value="{{ $gift->mode }}" size="50" class="required"/>
|
||||||
|
</div>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>领取消耗业绩:</label>
|
||||||
|
<input type="text" name="consume_mode" value="{{ $gift->consume_mode }}" size="50" class="required"/>
|
||||||
|
</div>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>商家是否结算成本:</label>
|
||||||
|
<select name="is_windup" class="combox">
|
||||||
|
<option value="0">否</option>
|
||||||
|
<option value="1">是</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@csrf
|
||||||
|
<div class="formBar">
|
||||||
|
<ul>
|
||||||
|
@csrf
|
||||||
|
@method('PUT')
|
||||||
|
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
|
||||||
|
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript">
|
||||||
|
$("#seller").on('change', function() {
|
||||||
|
var seller_id = $(this).val();
|
||||||
|
$.post('{{ route('Admin.activities.goods')}}', {seller_id: seller_id, _token:"{{ csrf_token() }}"}, function(res) {
|
||||||
|
if (res.code) {
|
||||||
|
$('#goods').html("");
|
||||||
|
var option1 = $("<option>").val(0).text('请选择商品');
|
||||||
|
$('#goods').append(option1);
|
||||||
|
$.each(res.data, function(key, val) {
|
||||||
|
var option1 = '<option value="' + val.id + '">'+ val.title +'</option>';
|
||||||
|
$('#goods').append(option1);
|
||||||
|
});
|
||||||
|
$("#params").get(0).selectedIndex = 0;
|
||||||
|
$("#goods").get(0).selectedIndex = 0;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
updateAlert(res.msg);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#goods").on('change', function() {
|
||||||
|
var goods_id = $(this).val();
|
||||||
|
$.post('{{ route('Admin.activities.params')}}', {goods_id: goods_id, _token:"{{ csrf_token() }}"}, function(res) {
|
||||||
|
if (res.code) {
|
||||||
|
$('#params').html("");
|
||||||
|
var option1 = $("<option>").val(0).text('请选择规格');
|
||||||
|
$('#params').append(option1);
|
||||||
|
$.each(res.data, function(key, val) {
|
||||||
|
var option1 = '<option value="' + val.id + '">'+ val.title +'</option>';
|
||||||
|
$('#params').append(option1);
|
||||||
|
});
|
||||||
|
$("#params").get(0).selectedIndex=0;
|
||||||
|
} else {
|
||||||
|
updateAlert(res.msg);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
87
app/Admin/Views/activities/index.blade.php
Normal file
87
app/Admin/Views/activities/index.blade.php
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
<div class="pageHeader">
|
||||||
|
<form rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="post">
|
||||||
|
<div class="searchBar">
|
||||||
|
<table class="searchContent">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
活动名称:
|
||||||
|
<input type="text" name="title" value="{{ Request::input('title') }}"/>
|
||||||
|
</td>
|
||||||
|
<td><div class="buttonActive"><div class="buttonContent"><button type="submit">检索结果</button></div></div></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pageContent">
|
||||||
|
<div class="panelBar">
|
||||||
|
<ul class="toolBar">
|
||||||
|
<li><a class="add" href="{{ route('Admin.activities.create') }}" mask="true" target="dialog" width="800" height="600" rel="navTab_{{ time() }}" title="添加活动"><span>添加活动</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<table class="table" width="100%" layoutH="112">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th width="50" orderField="id" @if (Request::input('orderField') == 'id') class="{{ Request::input('orderDirection') }}" @endif>编号</th>
|
||||||
|
<th>活动标题</th>
|
||||||
|
<th>所属商家</th>
|
||||||
|
<th width="140">所属地域</th>
|
||||||
|
<th>所属分类</th>
|
||||||
|
<th>状态</th>
|
||||||
|
<th>原价</th>
|
||||||
|
<th>现价</th>
|
||||||
|
<th>开始时间</th>
|
||||||
|
<th>结束时间</th>
|
||||||
|
<!-- <th>奖品数量</th> -->
|
||||||
|
<th width="140" orderField="created_at" @if (Request::input('orderField') == 'created_at') class="{{ Request::input('orderDirection') }}" @endif>创建时间</th>
|
||||||
|
<th width="240"></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@foreach ($activities as $activity)
|
||||||
|
<tr>
|
||||||
|
<td>{{ $activity->id }}</td>
|
||||||
|
<td>{{ $activity->title }}</td>
|
||||||
|
<td>{{ $activity->seller->name }}</td>
|
||||||
|
<td>{{ $activity->seller->Area->info??'' }}</td>
|
||||||
|
<td>{{ $activity->category->title }}</td>
|
||||||
|
<td>{!! $activity->status_text !!}</td>
|
||||||
|
<td>{{ $activity->original }}</td>
|
||||||
|
<td>{{ $activity->price }}</td>
|
||||||
|
<td>{{ $activity->start_time }}</td>
|
||||||
|
<td>{{ $activity->end_time }}</td>
|
||||||
|
<!-- <td>
|
||||||
|
<a title="奖品设置" target="dialog" width="800" height="600" href="{{ route('Admin.activities.show', $activity) }}" rel="navTab_{{ time() }}">{{ $activity->gifts->count() }}</a>
|
||||||
|
</td> -->
|
||||||
|
<td>{{ $activity->created_at }}</td>
|
||||||
|
<td>
|
||||||
|
<a title="编辑活动" target="dialog" width="800" height="600" href="{{ route('Admin.activities.edit', $activity) }}" rel="navTab_{{ time() }}">编辑</a>
|
||||||
|
<a title="删除活动" target="ajaxDelete" href="{{ route('Admin.activities.destroy', $activity) }}">删除</a>
|
||||||
|
<!-- <a title="奖品设置" target="dialog" width="800" height="600" href="{{ route('Admin.activities.show', $activity) }}" rel="navTab_{{ time() }}">奖品设置</a> -->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
@endforeach
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<div class="panelBar">
|
||||||
|
<form id="pagerForm" method="post" action="#rel#">
|
||||||
|
<input type="hidden" name="page" value="{{ $activities->currentPage() }}" />
|
||||||
|
<input type="hidden" name="numPerPage" value="{{ $activities->perPage() }}" />
|
||||||
|
<input type="hidden" name="orderField" value="{{ Request::input('orderField') }}" />
|
||||||
|
<input type="hidden" name="orderDirection" value="{{ Request::input('orderDirection') }}" />
|
||||||
|
</form>
|
||||||
|
<div class="pages">
|
||||||
|
<span>显示</span>
|
||||||
|
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
|
||||||
|
<option @if ($activities->perPage() == 30) selected @endif value="30">30</option>
|
||||||
|
<option @if ($activities->perPage() == 100) selected @endif value="100">100</option>
|
||||||
|
<option @if ($activities->perPage() == 200) selected @endif value="200">200</option>
|
||||||
|
</select>
|
||||||
|
<span>条,共 {{ $activities->total() }} 条</span>
|
||||||
|
</div>
|
||||||
|
<div class="pagination" targetType="navTab" totalCount="{{ $activities->total() }}" numPerPage="{{ $activities->perPage() }}" pageNumShown="10" currentPage="{{ $activities->currentPage() }}"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
54
app/Admin/Views/activities/show.blade.php
Normal file
54
app/Admin/Views/activities/show.blade.php
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
<div class="pageContent">
|
||||||
|
<div class="panelBar">
|
||||||
|
<ul class="toolBar">
|
||||||
|
<li><a class="add" href="{{ route('Admin.activityGifts.create',$activity) }}" mask="true" target="dialog" width="600" height="600" rel="navTab_{{ time() }}" title="添加奖品"><span>添加奖品</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<table class="table" width="100%" layoutH="112">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th width="50" orderField="id" @if (Request::input('orderField') == 'id') class="{{ Request::input('orderDirection') }}" @endif>编号</th>
|
||||||
|
<th>奖品</th>
|
||||||
|
<th width="80">任务指标</th>
|
||||||
|
<th width="80">领取消耗</th>
|
||||||
|
<th width="140" orderField="created_at" @if (Request::input('orderField') == 'created_at') class="{{ Request::input('orderDirection') }}" @endif>创建时间</th>
|
||||||
|
<th width="80"></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@foreach ($gifts as $gift)
|
||||||
|
<tr>
|
||||||
|
<td>{{ $gift->id }}</td>
|
||||||
|
<td>{{ $gift->goods->title ?? ''}}-{{ $gift->param->value ?? ''}}</td>
|
||||||
|
<td>{{ $gift->mode}}</td>
|
||||||
|
<td>{{ $gift->consume_mode}}</td>
|
||||||
|
<td>{{ $gift->created_at }}</td>
|
||||||
|
<td>
|
||||||
|
<a title="编辑奖品" target="dialog" width="600" height="600" href="{{ route('Admin.activityGifts.edit', $gift) }}" rel="navTab_{{ time() }}" class="btnEdit">编辑</a>
|
||||||
|
<a title="删除奖品" target="ajaxDelete" href="{{ route('Admin.activityGifts.destroy', $gift) }}" class="btnDel">删除</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
@endforeach
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<div class="panelBar">
|
||||||
|
<form id="pagerForm" method="post" action="#rel#">
|
||||||
|
<input type="hidden" name="page" value="{{ $gifts->currentPage() }}" />
|
||||||
|
<input type="hidden" name="numPerPage" value="{{ $gifts->perPage() }}" />
|
||||||
|
<input type="hidden" name="orderField" value="{{ Request::input('orderField') }}" />
|
||||||
|
<input type="hidden" name="orderDirection" value="{{ Request::input('orderDirection') }}" />
|
||||||
|
</form>
|
||||||
|
<div class="pages">
|
||||||
|
<span>显示</span>
|
||||||
|
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
|
||||||
|
<option @if ($gifts->perPage() == 30) selected @endif value="30">30</option>
|
||||||
|
<option @if ($gifts->perPage() == 100) selected @endif value="100">100</option>
|
||||||
|
<option @if ($gifts->perPage() == 200) selected @endif value="200">200</option>
|
||||||
|
</select>
|
||||||
|
<span>条,共 {{ $gifts->total() }} 条</span>
|
||||||
|
</div>
|
||||||
|
<div class="pagination" targetType="navTab" totalCount="{{ $gifts->total() }}" numPerPage="{{ $gifts->perPage() }}" pageNumShown="10" currentPage="{{ $gifts->currentPage() }}"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
45
app/Admin/Views/adverts/create.blade.php
Normal file
45
app/Admin/Views/adverts/create.blade.php
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
<div class="pageContent">
|
||||||
|
<form method="post" action="{{ route('Admin.adverts.store') }}" class="pageForm required-validate" onsubmit="return validateCallback(this, dialogAjaxDone)">
|
||||||
|
<div class="pageFormContent" layoutH="60">
|
||||||
|
<div class="unit">
|
||||||
|
<label>url:</label>
|
||||||
|
<input type="text" name="url" value="" />
|
||||||
|
</div>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>轮播排序:</label>
|
||||||
|
<input type="text" name="sort" value="99" size="5" class="required digits"/>
|
||||||
|
</div>
|
||||||
|
<div class="divider"></div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12">
|
||||||
|
<input id="testFileInput" type="file" name="image" uploaderOption="{
|
||||||
|
swf:'{{ admin_assets('uploadify/scripts/uploadify.swf') }}',
|
||||||
|
uploader:'{{ route('RuLong.storages.upload', ['name'=>'fileup']) }}',
|
||||||
|
formData:{_token: '{{ csrf_token() }}'},
|
||||||
|
fileObjName: 'fileup',
|
||||||
|
buttonText:'选择封面图片',
|
||||||
|
fileSizeLimit:'20MB',
|
||||||
|
auto:true,
|
||||||
|
multi:false,
|
||||||
|
onUploadSuccess: function(file, res) {
|
||||||
|
var d = JSON.parse(res)
|
||||||
|
$('.cover img').attr('src', d.data.url).show();
|
||||||
|
$('#storageID').val(d.data.id);
|
||||||
|
}}"/>
|
||||||
|
<div class="cover" style="border:1px solid #B8D0D6;width:200px;min-height:100px">
|
||||||
|
<img src="" style="display:none;width:200px;height: 100px" alt="">
|
||||||
|
</div>
|
||||||
|
<input type="hidden" id="storageID" name="storage_id" value="">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@csrf
|
||||||
|
<div class="formBar">
|
||||||
|
<ul>
|
||||||
|
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
|
||||||
|
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
53
app/Admin/Views/adverts/edit.blade.php
Normal file
53
app/Admin/Views/adverts/edit.blade.php
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
<div class="pageContent">
|
||||||
|
<form method="post" action="{{ route('Admin.adverts.update', $advert) }}" class="pageForm required-validate" onsubmit="return validateCallback(this, dialogAjaxDone)">
|
||||||
|
<div class="pageFormContent" layoutH="60">
|
||||||
|
<div class="unit">
|
||||||
|
<label>url:</label>
|
||||||
|
<input type="text" name="url" value="{{ $advert->url }}" />
|
||||||
|
</div>
|
||||||
|
<div class="divider"></div>
|
||||||
|
|
||||||
|
<div class="unit">
|
||||||
|
<label>轮播排序:</label>
|
||||||
|
<input type="text" name="sort" value="{{ $advert->sort }}" size="5" class="required digits"/>
|
||||||
|
</div>
|
||||||
|
<div class="divider"></div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="unit">
|
||||||
|
<input id="testFileInput" type="file" name="image" uploaderOption="{
|
||||||
|
swf:'{{ admin_assets('uploadify/scripts/uploadify.swf') }}',
|
||||||
|
uploader:'{{ route('RuLong.storages.upload', ['name'=>'fileup']) }}',
|
||||||
|
formData:{_token: '{{ csrf_token() }}'},
|
||||||
|
fileObjName: 'fileup',
|
||||||
|
buttonText:'选择图片',
|
||||||
|
fileSizeLimit:'20MB',
|
||||||
|
auto:true,
|
||||||
|
multi:false,
|
||||||
|
onUploadSuccess: function(file, res) {
|
||||||
|
var d = JSON.parse(res)
|
||||||
|
$('.cover img').attr('src', d.data.url).show();
|
||||||
|
$('#storageID').val(d.data.id);
|
||||||
|
}}"/>
|
||||||
|
<div class="cover" style="border:1px solid #B8D0D6;width:200px;min-height:100px">
|
||||||
|
@if ($advert->storage)
|
||||||
|
<img src="{{$advert->storage->path}}" style="width:200px;height: 100px" alt="">
|
||||||
|
@else
|
||||||
|
<img src="" style="display:none;width:200px;height: 100px" alt="">
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
<input type="hidden" id="storageID" name="storage_id" value="{{ $advert->storage_id }}">
|
||||||
|
</div>
|
||||||
|
<div class="divider"></div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
@method('PUT')
|
||||||
|
@csrf
|
||||||
|
<div class="formBar">
|
||||||
|
<ul>
|
||||||
|
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
|
||||||
|
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
68
app/Admin/Views/adverts/index.blade.php
Normal file
68
app/Admin/Views/adverts/index.blade.php
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
<div class="pageHeader">
|
||||||
|
<form rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="get">
|
||||||
|
<div class="searchBar">
|
||||||
|
<table class="searchContent">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
轮播模型:
|
||||||
|
<input type="text" name="model" value="{{ Request::input('model') }}"/>
|
||||||
|
</td>
|
||||||
|
<td><div class="buttonActive"><div class="buttonContent"><button type="submit">检索结果</button></div></div></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pageContent">
|
||||||
|
<div class="panelBar">
|
||||||
|
<ul class="toolBar">
|
||||||
|
<li><a class="add" href="{{ route('Admin.adverts.create') }}" mask="true" width="480" height="350" target="dialog" rel="dialog_{{ time() }}" title="创建轮播" ><span>创建轮播</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<table class="table" width="100%" layoutH="112">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th width="">链接地址</th>
|
||||||
|
<th width="">排序</th>
|
||||||
|
<th width="120" orderField="created_at" @if (Request::input('orderField') == 'created_at') class="{{ Request::input('orderDirection') }}" @endif>创建时间</th>
|
||||||
|
<th width="120" orderField="updated_at" @if (Request::input('orderField') == 'updated_at') class="{{ Request::input('orderDirection') }}" @endif>更新时间</th>
|
||||||
|
<th width="80"></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@foreach ($adverts as $advert)
|
||||||
|
<tr>
|
||||||
|
<td>{{ $advert->url }}</td>
|
||||||
|
<td>{{ $advert->sort }}</td>
|
||||||
|
<td>{{ $advert->created_at }}</td>
|
||||||
|
<td>{{ $advert->updated_at }}</td>
|
||||||
|
<td>
|
||||||
|
<a title="编辑轮播" target="dialog" href="{{ route('Admin.adverts.edit', $advert) }}" width="650" height="390" rel="dialog_{{ time() }}" class="btnEdit">编辑</a>
|
||||||
|
<a title="删除轮播" target="ajaxDelete" href="{{ route('Admin.adverts.destroy', $advert) }}" class="btnDel">删除</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
@endforeach
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<div class="panelBar">
|
||||||
|
<form id="pagerForm" method="post" action="#rel#">
|
||||||
|
<input type="hidden" name="page" value="{{ $adverts->currentPage() }}" />
|
||||||
|
<input type="hidden" name="numPerPage" value="{{ $adverts->perPage() }}" />
|
||||||
|
<input type="hidden" name="orderField" value="{{ Request::input('orderField') }}" />
|
||||||
|
<input type="hidden" name="orderDirection" value="{{ Request::input('orderDirection') }}" />
|
||||||
|
</form>
|
||||||
|
<div class="pages">
|
||||||
|
<span>显示</span>
|
||||||
|
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
|
||||||
|
<option @if ($adverts->perPage() == 30) selected @endif value="30">30</option>
|
||||||
|
<option @if ($adverts->perPage() == 100) selected @endif value="100">100</option>
|
||||||
|
<option @if ($adverts->perPage() == 200) selected @endif value="200">200</option>
|
||||||
|
</select>
|
||||||
|
<span>条,共 {{ $adverts->total() }} 条</span>
|
||||||
|
</div>
|
||||||
|
<div class="pagination" targetType="navTab" totalCount="{{ $adverts->total() }}" numPerPage="{{ $adverts->perPage() }}" pageNumShown="10" currentPage="{{ $adverts->currentPage() }}"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
38
app/Admin/Views/agency/create.blade.php
Normal file
38
app/Admin/Views/agency/create.blade.php
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
<div class="pageContent">
|
||||||
|
<form method="post" action="{{ route('Admin.agencies.store') }}" class="pageForm required-validate" onsubmit="return validateCallback(this, dialogAjaxDone)">
|
||||||
|
<div class="pageFormContent" layoutH="55">
|
||||||
|
<div class="unit">
|
||||||
|
<label>名称:</label>
|
||||||
|
<input type="text" name="name" value="" size="35" class="required" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>业务员:</label>
|
||||||
|
<select name="salesman_id" >
|
||||||
|
<option value="0">选择业务员</option>
|
||||||
|
@foreach($salesmans as $salesman)
|
||||||
|
<option value="{{ $salesman->id }}">{{ $salesman->info->nickname }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>状态:</label>
|
||||||
|
<select name="status" >
|
||||||
|
<option value="1">正常</option>
|
||||||
|
<option value="2">关闭</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@csrf
|
||||||
|
<div class="formBar">
|
||||||
|
<ul>
|
||||||
|
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
|
||||||
|
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
40
app/Admin/Views/agency/edit.blade.php
Normal file
40
app/Admin/Views/agency/edit.blade.php
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
<div class="pageContent">
|
||||||
|
<form method="post" action="{{ route('Admin.agencies.update',$agency) }}" class="pageForm required-validate" onsubmit="return validateCallback(this, dialogAjaxDone)">
|
||||||
|
<div class="pageFormContent" layoutH="55">
|
||||||
|
<div class="unit">
|
||||||
|
<label>名称:</label>
|
||||||
|
<input type="text" name="name" value="{{ $agency->name }}" size="35" class="required" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>业务员:</label>
|
||||||
|
<select name="salesman_id" >
|
||||||
|
<option value="0">选择业务员</option>
|
||||||
|
@foreach($salesmans as $salesman)
|
||||||
|
<option value="{{ $salesman->id }}" @if($agency->salesman_id == $salesman->id) selected @endif >{{ $salesman->info->nickname }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>状态:</label>
|
||||||
|
<select name="status" >
|
||||||
|
<option value="1" @if($agency->status==1) selected @endif>正常</option>
|
||||||
|
<option value="0" @if($agency->status===0) selected @endif>关闭</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
@csrf
|
||||||
|
@method('PUT')
|
||||||
|
<div class="formBar">
|
||||||
|
<ul>
|
||||||
|
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
|
||||||
|
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
61
app/Admin/Views/agency/index.blade.php
Normal file
61
app/Admin/Views/agency/index.blade.php
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
<div class="pageHeader">
|
||||||
|
<form rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="get">
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pageContent">
|
||||||
|
<div class="panelBar">
|
||||||
|
<ul class="toolBar">
|
||||||
|
<li><a class="add" href="{{ route('Admin.agencies.create') }}" mask="true" width="480" height="350" target="dialog" rel="dialog_{{ time() }}" title="创建代理" ><span>创建代理</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<table class="table" width="100%" layoutH="112">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th width="50">编号</th>
|
||||||
|
<th width="100">标题</th>
|
||||||
|
<th width="100">状态</th>
|
||||||
|
<th width="100">管理人</th>
|
||||||
|
<th width="100">业务员</th>
|
||||||
|
<th width="120" orderField="created_at" @if (Request::input('orderField') == 'created_at') class="{{ Request::input('orderDirection') }}" @endif>创建时间</th>
|
||||||
|
<th width="200"></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@foreach ($lists as $agency)
|
||||||
|
<tr>
|
||||||
|
<td>{{ $agency->id }}</td>
|
||||||
|
<td>{{ $agency->name }}</td>
|
||||||
|
<td>{!! $agency->status_text !!}</td>
|
||||||
|
<td>{{ $agency->user->info->nickname }}</td>
|
||||||
|
<td>{{ $agency->salesman->info->nickname }}</td>
|
||||||
|
<td>{{ $agency->created_at }}</td>
|
||||||
|
<td>
|
||||||
|
<a title="编辑" target="dialog" href="{{ route('Admin.agencies.edit', $agency) }}" width="650" height="390" rel="dialog_{{ time() }}" >编辑</a>
|
||||||
|
<a title="绑定管理人" target="dialog" href="{{ route('Admin.agencies.user', $agency) }}" width="800" height="600" rel="dialog_{{ time() }}" >绑定管理</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
@endforeach
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<div class="panelBar">
|
||||||
|
<form id="pagerForm" method="post" action="#rel#">
|
||||||
|
<input type="hidden" name="page" value="{{ $lists->currentPage() }}" />
|
||||||
|
<input type="hidden" name="numPerPage" value="{{ $lists->perPage() }}" />
|
||||||
|
<input type="hidden" name="orderField" value="{{ Request::input('orderField') }}" />
|
||||||
|
<input type="hidden" name="orderDirection" value="{{ Request::input('orderDirection') }}" />
|
||||||
|
</form>
|
||||||
|
<div class="pages">
|
||||||
|
<span>显示</span>
|
||||||
|
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
|
||||||
|
<option @if ($lists->perPage() == 30) selected @endif value="30">30</option>
|
||||||
|
<option @if ($lists->perPage() == 100) selected @endif value="100">100</option>
|
||||||
|
<option @if ($lists->perPage() == 200) selected @endif value="200">200</option>
|
||||||
|
</select>
|
||||||
|
<span>条,共 {{ $lists->total() }} 条</span>
|
||||||
|
</div>
|
||||||
|
<div class="pagination" targetType="navTab" totalCount="{{ $lists->total() }}" numPerPage="{{ $lists->perPage() }}" pageNumShown="10" currentPage="{{ $lists->currentPage() }}"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
40
app/Admin/Views/agency/user.blade.php
Normal file
40
app/Admin/Views/agency/user.blade.php
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
<div class="pageContent">
|
||||||
|
<form method="post" action="{{ route('Admin.agencies.douser',$agency) }}" class="pageForm required-validate" onsubmit="return validateCallback(this, dialogAjaxDone)">
|
||||||
|
<div class="pageFormContent" layoutH="55">
|
||||||
|
<div class="unit">
|
||||||
|
<label>当前管理人:</label>
|
||||||
|
<input type="text" value="{{ $agency->user->info->nickname }}" size="35" class="required" disabled="" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>新管理人:</label>
|
||||||
|
<input type="text" name="mobile" placeholder="新管理人手机号" size="35" class="mobile" />
|
||||||
|
<input type="hidden" value="" size="35" name="user_id" />
|
||||||
|
<button type="button" class="check">校验</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@csrf
|
||||||
|
<div class="formBar">
|
||||||
|
<ul>
|
||||||
|
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
|
||||||
|
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
$('.check').click(function(){
|
||||||
|
var mobile = $('.mobile').val();
|
||||||
|
$.get("{{ route('Admin.agencies.checkuser') }}",{mobile:mobile},function(res){
|
||||||
|
if (res.statusCode==200) {
|
||||||
|
$('input[name=user_id]').val(res.message.user_id);
|
||||||
|
alertMsg.confirm('校验成功,昵称:'+res.message.nickname);
|
||||||
|
}else{
|
||||||
|
alertMsg.confirm(res.message);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
38
app/Admin/Views/areas/create.blade.php
Normal file
38
app/Admin/Views/areas/create.blade.php
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
<div class="pageContent">
|
||||||
|
<form method="post" action="{{ route('Admin.areas.store') }}" class="pageForm required-validate" onsubmit="return validateCallback(this, dialogAjaxDone)">
|
||||||
|
<div class="pageFormContent" layoutH="60">
|
||||||
|
|
||||||
|
<div class="unit">
|
||||||
|
<label>所属:</label>
|
||||||
|
<select name="psn" class="combox">
|
||||||
|
@foreach ($list as $area)
|
||||||
|
<option value="{{ $area['sn'] }}">{{ $area['title_show'] }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>状态:</label>
|
||||||
|
<select name="status" class="combox">
|
||||||
|
<option value="1">开通</option>
|
||||||
|
<option value="0">关闭</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>名称:</label>
|
||||||
|
<input type="text" name="name" value="" class="required"/>
|
||||||
|
</div>
|
||||||
|
<div class="divider"></div>
|
||||||
|
</div>
|
||||||
|
@csrf
|
||||||
|
<div class="formBar">
|
||||||
|
<ul>
|
||||||
|
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
|
||||||
|
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
38
app/Admin/Views/areas/edit.blade.php
Normal file
38
app/Admin/Views/areas/edit.blade.php
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
<div class="pageContent">
|
||||||
|
<form method="post" action="{{ route('Admin.areas.update', $area) }}" class="pageForm required-validate" onsubmit="return validateCallback(this, dialogAjaxDone)">
|
||||||
|
<div class="pageFormContent" layoutH="60">
|
||||||
|
<div class="unit">
|
||||||
|
<label>所属:</label>
|
||||||
|
<select name="psn" class="combox">
|
||||||
|
@foreach ($list as $value)
|
||||||
|
<option value="{{ $value['sn'] }}" @if ($area->psn == $value['sn']) selected @endif >{{ $value['title_show'] }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>状态:</label>
|
||||||
|
<select name="status" class="combox">
|
||||||
|
<option value="1" @if ($area->status == 1) selected @endif>开通</option>
|
||||||
|
<option value="0" @if ($area->status === 0) selected @endif>关闭</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>名称:</label>
|
||||||
|
<input type="text" name="name" value="{{ $area->name }}" class="required"/>
|
||||||
|
</div>
|
||||||
|
<div class="divider"></div>
|
||||||
|
</div>
|
||||||
|
@csrf
|
||||||
|
@method('PUT')
|
||||||
|
<div class="formBar">
|
||||||
|
<ul>
|
||||||
|
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
|
||||||
|
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
114
app/Admin/Views/areas/index.blade.php
Normal file
114
app/Admin/Views/areas/index.blade.php
Normal file
@@ -0,0 +1,114 @@
|
|||||||
|
<div class="pageHeader">
|
||||||
|
<form rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="post">
|
||||||
|
<div class="searchBar">
|
||||||
|
<table class="searchContent">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<select class="combox" name="psn">
|
||||||
|
<option value="">全部</option>
|
||||||
|
@foreach($list as $area)
|
||||||
|
<option value="{{ $area['sn'] }}" @if (Request::input('psn') == $area['sn']) selected @endif>{{ $area['title_show'] }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
地区名称:
|
||||||
|
<input type="text" name="info" value="{{ Request::input('info') }}"/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<select class="combox" name="type">
|
||||||
|
<option value="">类型</option>
|
||||||
|
<option @if (Request::input('type') == '省级') selected @endif value="省级">省级</option>
|
||||||
|
<option @if (Request::input('type') == '地级') selected @endif value="地级">地级</option>
|
||||||
|
<option @if (Request::input('type') == '县级') selected @endif value="县级">县级</option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<select class="combox" name="status">
|
||||||
|
<option value="">状态</option>
|
||||||
|
<option @if (Request::input('status') == 1) selected @endif value="1">已开通</option>
|
||||||
|
<option @if (Request::input('status') === 0) selected @endif value="0">未开通</option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td><div class="buttonActive"><div class="buttonContent"><button type="submit">检索结果</button></div></div></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pageContent">
|
||||||
|
<div class="panelBar">
|
||||||
|
<ul class="toolBar">
|
||||||
|
<li><a class="add" href="{{ route('Admin.areas.create') }}" mask="true" rel="dialog_{{ time() }}" target="dialog" width="800" height="600" title="添加"><span>添加</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<table class="table" width="100%" layoutH="112">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th width="22"><input type="checkbox" group="ids[]" class="checkboxCtrl"></th>
|
||||||
|
<th width="120">省份名称</th>
|
||||||
|
<th width="120">市名称</th>
|
||||||
|
<th width="120">区名称</th>
|
||||||
|
<th width="60">类型</th>
|
||||||
|
<th width="80">状态</th>
|
||||||
|
<th width="80">热门</th>
|
||||||
|
<th width="120">更新时间</th>
|
||||||
|
<th width=""></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@foreach ($areas as $area)
|
||||||
|
<tr>
|
||||||
|
<td><input name="ids[]" value="{{ $area->id }}" type="checkbox"></td>
|
||||||
|
<td>{{ $area->province }}</td>
|
||||||
|
<td> {{ $area->city }} </td>
|
||||||
|
<td>{{ $area->area }}</td>
|
||||||
|
<td>{{ $area->type }}</td>
|
||||||
|
<td>{{ $area->status_text }}</td>
|
||||||
|
<td>{!! $area->hot_text !!}</td>
|
||||||
|
<td>{{ $area->updated_at }}</td>
|
||||||
|
<td>
|
||||||
|
@if($area->status!=1)
|
||||||
|
<a title="开通区域" target="ajaxDelete" href="{{ route('Admin.areas.open', ['area'=>$area,'status'=>1]) }}" style="color: blue">开通</a>
|
||||||
|
@else
|
||||||
|
<a title="取消开通区域" target="ajaxDelete" href="{{ route('Admin.areas.open', ['area'=>$area,'status'=>0]) }}" style="color: grey" >关闭区域</a>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
@if($area->depth==2)
|
||||||
|
@if($area->hot==1)
|
||||||
|
<a title="取消热门" target="ajaxTodo" href="{{ route('Admin.areas.hot', ['area'=>$area,'hot'=>0]) }}" style="color: blue">取消热门</a>
|
||||||
|
@else
|
||||||
|
<a title="设置热门" target="ajaxTodo" href="{{ route('Admin.areas.hot', ['area'=>$area,'hot'=>1]) }}" style="color: blue">开通热门</a>
|
||||||
|
@endif
|
||||||
|
@endif
|
||||||
|
|
||||||
|
@if($area->depth>2)
|
||||||
|
<a title="编辑" target="dialog" href="{{ route('Admin.areas.edit', $area) }}" rel="dialog{{ time() }}" mask="true" width="800" height="600">编辑</a>
|
||||||
|
@endif
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
@endforeach
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<div class="panelBar">
|
||||||
|
<form id="pagerForm" method="post" action="#rel#">
|
||||||
|
<input type="hidden" name="page" value="{{ $areas->currentPage() }}" />
|
||||||
|
<input type="hidden" name="numPerPage" value="{{ $areas->perPage() }}" />
|
||||||
|
<input type="hidden" name="orderField" value="{{ Request::input('orderField') }}" />
|
||||||
|
<input type="hidden" name="orderDirection" value="{{ Request::input('orderDirection') }}" />
|
||||||
|
</form>
|
||||||
|
<div class="pages">
|
||||||
|
<span>显示</span>
|
||||||
|
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
|
||||||
|
<option @if ($areas->perPage() == 30) selected @endif value="30">30</option>
|
||||||
|
<option @if ($areas->perPage() == 100) selected @endif value="100">100</option>
|
||||||
|
<option @if ($areas->perPage() == 200) selected @endif value="200">200</option>
|
||||||
|
</select>
|
||||||
|
<span>条,共 {{ $areas->total() }} 条</span>
|
||||||
|
</div>
|
||||||
|
<div class="pagination" targetType="navTab" totalCount="{{ $areas->total() }}" numPerPage="{{ $areas->perPage() }}" pageNumShown="10" currentPage="{{ $areas->currentPage() }}"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
52
app/Admin/Views/articles/create.blade.php
Normal file
52
app/Admin/Views/articles/create.blade.php
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
<div class="pageContent">
|
||||||
|
<form method="post" action="{{ route('Admin.articles.store') }}" class="pageForm required-validate" onsubmit="return validateCallback(this, navTabAjaxDone)">
|
||||||
|
<div class="pageFormContent" layoutH="55">
|
||||||
|
|
||||||
|
<input type="hidden" name="type" value="{{ Request::input('type') }}">
|
||||||
|
<input type="hidden" name="click" value="0">
|
||||||
|
<div class="unit">
|
||||||
|
<label>文章标题:</label>
|
||||||
|
<input type="text" name="title" value="" size="79" class="required"/>
|
||||||
|
</div>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>文章描述:</label>
|
||||||
|
<textarea name="description" rows="3" cols="80"></textarea>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-8">
|
||||||
|
@ueditor('', 'content',"{{ Request::input('type') }}")
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<input id="testFileInput" type="file" name="image" uploaderOption="{
|
||||||
|
swf:'{{ admin_assets('uploadify/scripts/uploadify.swf') }}',
|
||||||
|
uploader:'{{ route('RuLong.storages.upload', ['name'=>'fileup']) }}',
|
||||||
|
formData:{_token: '{{ csrf_token() }}'},
|
||||||
|
fileObjName: 'fileup',
|
||||||
|
buttonText:'选择封面图片',
|
||||||
|
fileSizeLimit:'20MB',
|
||||||
|
auto:true,
|
||||||
|
multi:false,
|
||||||
|
onUploadSuccess: function(file, res) {
|
||||||
|
var d = JSON.parse(res)
|
||||||
|
$('.cover img').attr('src', d.data.url).show();
|
||||||
|
$('#storageID').val(d.data.id);
|
||||||
|
}}"/>
|
||||||
|
<div class="cover" style="border:1px solid #B8D0D6;min-height:200px">
|
||||||
|
<img src="" style="display:none;width:100%" alt="">
|
||||||
|
</div>
|
||||||
|
<input type="hidden" id="storageID" name="storage_id" value="">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@csrf
|
||||||
|
<div class="formBar">
|
||||||
|
<ul>
|
||||||
|
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
|
||||||
|
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
55
app/Admin/Views/articles/edit.blade.php
Normal file
55
app/Admin/Views/articles/edit.blade.php
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
<div class="pageContent">
|
||||||
|
<form method="post" action="{{ route('Admin.articles.update', $article) }}" class="pageForm required-validate" onsubmit="return validateCallback(this, navTabAjaxDone)">
|
||||||
|
<div class="pageFormContent" layoutH="55">
|
||||||
|
<div class="unit">
|
||||||
|
<label>文章标题:</label>
|
||||||
|
<input type="text" name="title" value="{{ $article->title }}" size="79" class="required"/>
|
||||||
|
</div>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>文章描述:</label>
|
||||||
|
<textarea name="description" rows="3" cols="80">{{ $article->description }}</textarea>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-8">
|
||||||
|
@ueditor($article->content, 'content',"articles{{ $article->id }}")
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<input id="testFileInput" type="file" name="image" uploaderOption="{
|
||||||
|
swf:'{{ admin_assets('uploadify/scripts/uploadify.swf') }}',
|
||||||
|
uploader:'{{ route('RuLong.storages.upload', ['name'=>'fileup']) }}',
|
||||||
|
formData:{_token: '{{ csrf_token() }}'},
|
||||||
|
fileObjName: 'fileup',
|
||||||
|
buttonText:'选择封面图片',
|
||||||
|
fileSizeLimit:'20MB',
|
||||||
|
auto:true,
|
||||||
|
multi:false,
|
||||||
|
onUploadSuccess: function(file, res) {
|
||||||
|
var d = JSON.parse(res)
|
||||||
|
$('.cover img').attr('src', d.data.url).show();
|
||||||
|
$('#storageID').val(d.data.id);
|
||||||
|
}}"/>
|
||||||
|
<div class="cover" style="border:1px solid #B8D0D6;min-height:200px">
|
||||||
|
@if ($article->storage->path)
|
||||||
|
<img src="{{$article->storage->path}}" style="width:100%" alt="">
|
||||||
|
@else
|
||||||
|
<img src="" style="display:none;width:100%" alt="">
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
<input type="hidden" id="storageID" name="storage_id" value="{{ $article->storage_id }}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@csrf
|
||||||
|
<div class="formBar">
|
||||||
|
<ul>
|
||||||
|
@csrf
|
||||||
|
@method('PUT')
|
||||||
|
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
|
||||||
|
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
66
app/Admin/Views/articles/index.blade.php
Normal file
66
app/Admin/Views/articles/index.blade.php
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
<div class="pageHeader">
|
||||||
|
<form rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="post">
|
||||||
|
<div class="searchBar">
|
||||||
|
<table class="searchContent">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
新闻标题:
|
||||||
|
<input type="text" name="title" value="{{ Request::input('title') }}"/>
|
||||||
|
</td>
|
||||||
|
<td><div class="buttonActive"><div class="buttonContent"><button type="submit">检索结果</button></div></div></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pageContent">
|
||||||
|
<div class="panelBar">
|
||||||
|
<ul class="toolBar">
|
||||||
|
<li><a class="add" href="{{ route('Admin.articles.create',['type'=>$type]) }}" mask="true" target="navTab" rel="navTab_{{ time() }}" title="添加文章"><span>添加文章</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<table class="table" width="100%" layoutH="112">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th width="50" orderField="id" @if (Request::input('orderField') == 'id') class="{{ Request::input('orderDirection') }}" @endif>编号</th>
|
||||||
|
<th>文章标题</th>
|
||||||
|
<th width="140" orderField="created_at" @if (Request::input('orderField') == 'created_at') class="{{ Request::input('orderDirection') }}" @endif>创建时间</th>
|
||||||
|
<th width="80"></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@foreach ($articles as $article)
|
||||||
|
<tr>
|
||||||
|
<td>{{ $article->id }}</td>
|
||||||
|
<td>{{ $article->title }}</td>
|
||||||
|
<td>{{ $article->created_at }}</td>
|
||||||
|
<td>
|
||||||
|
<a title="编辑文章" target="navTab" href="{{ route('Admin.articles.edit', $article) }}" rel="navTab_{{ time() }}" class="btnEdit">编辑</a>
|
||||||
|
<a title="删除文章" target="ajaxDelete" href="{{ route('Admin.articles.destroy', $article) }}" class="btnDel">删除</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
@endforeach
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<div class="panelBar">
|
||||||
|
<form id="pagerForm" method="post" action="#rel#">
|
||||||
|
<input type="hidden" name="page" value="{{ $articles->currentPage() }}" />
|
||||||
|
<input type="hidden" name="numPerPage" value="{{ $articles->perPage() }}" />
|
||||||
|
<input type="hidden" name="orderField" value="{{ Request::input('orderField') }}" />
|
||||||
|
<input type="hidden" name="orderDirection" value="{{ Request::input('orderDirection') }}" />
|
||||||
|
</form>
|
||||||
|
<div class="pages">
|
||||||
|
<span>显示</span>
|
||||||
|
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
|
||||||
|
<option @if ($articles->perPage() == 30) selected @endif value="30">30</option>
|
||||||
|
<option @if ($articles->perPage() == 100) selected @endif value="100">100</option>
|
||||||
|
<option @if ($articles->perPage() == 200) selected @endif value="200">200</option>
|
||||||
|
</select>
|
||||||
|
<span>条,共 {{ $articles->total() }} 条</span>
|
||||||
|
</div>
|
||||||
|
<div class="pagination" targetType="navTab" totalCount="{{ $articles->total() }}" numPerPage="{{ $articles->perPage() }}" pageNumShown="10" currentPage="{{ $articles->currentPage() }}"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
63
app/Admin/Views/categories/create.blade.php
Normal file
63
app/Admin/Views/categories/create.blade.php
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
<div class="pageContent">
|
||||||
|
<form method="post" action="{{ route('Admin.categories.store') }}" class="pageForm required-validate" onsubmit="return validateCallback(this, dialogAjaxDone)">
|
||||||
|
<div class="pageFormContent" layoutH="60">
|
||||||
|
<div class="unit">
|
||||||
|
<label>分类名称:</label>
|
||||||
|
<input type="text" name="title" value="" class="required"/>
|
||||||
|
</div>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>上级分类:</label>
|
||||||
|
<select name="parent_id" class="combox">
|
||||||
|
@foreach ($topCates as $cate)
|
||||||
|
<option @if ($cate['id'] == Request::get('parent_id')) selected @endif value="{{ $cate['id'] }}">{!! $cate['title_show'] !!}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>分类排序:</label>
|
||||||
|
<input type="text" name="sort" value="99" size="5" class="required digits"/>
|
||||||
|
</div>
|
||||||
|
<div class="unit" style="display: none">
|
||||||
|
<label>是否推荐:</label>
|
||||||
|
<select name="is_recommend" class="combox">
|
||||||
|
<option value="0">否</option>
|
||||||
|
<option value="1">是</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="unit" style="display: none">
|
||||||
|
<label>推荐排序:</label>
|
||||||
|
<input type="text" name="recommend_sort" value="0" size="5" class="required digits"/>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12">
|
||||||
|
<input id="testFileInput" type="file" name="image" uploaderOption="{
|
||||||
|
swf:'{{ admin_assets('uploadify/scripts/uploadify.swf') }}',
|
||||||
|
uploader:'{{ route('RuLong.storages.upload', ['name'=>'fileup']) }}',
|
||||||
|
formData:{_token: '{{ csrf_token() }}'},
|
||||||
|
fileObjName: 'fileup',
|
||||||
|
buttonText:'选择封面图片',
|
||||||
|
fileSizeLimit:'20MB',
|
||||||
|
auto:true,
|
||||||
|
multi:false,
|
||||||
|
onUploadSuccess: function(file, res) {
|
||||||
|
var d = JSON.parse(res)
|
||||||
|
$('.cover img').attr('src', d.data.url).show();
|
||||||
|
$('#storageID').val(d.data.id);
|
||||||
|
}}"/>
|
||||||
|
<div class="cover" style="border:1px solid #B8D0D6;min-height:50px;max-width: 50px">
|
||||||
|
<img src="" style="display:none;width:50px" alt="">
|
||||||
|
</div>
|
||||||
|
<input type="hidden" id="storageID" name="storage_id" value="">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@csrf
|
||||||
|
<div class="formBar">
|
||||||
|
<ul>
|
||||||
|
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
|
||||||
|
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
70
app/Admin/Views/categories/edit.blade.php
Normal file
70
app/Admin/Views/categories/edit.blade.php
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
<div class="pageContent">
|
||||||
|
<form method="post" action="{{ route('Admin.categories.update', $category) }}" class="pageForm required-validate" onsubmit="return validateCallback(this, dialogAjaxDone)">
|
||||||
|
<div class="pageFormContent" layoutH="60">
|
||||||
|
<div class="unit">
|
||||||
|
<label>分类名称:</label>
|
||||||
|
<input type="text" name="title" value="{{ $category->title }}" class="required"/>
|
||||||
|
</div>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>上级分类:</label>
|
||||||
|
<select name="parent_id" class="combox">
|
||||||
|
@foreach ($topCates as $top)
|
||||||
|
<option @if ($top['id'] == $category->parent_id) selected @endif value="{{ $top['id'] }}">{!! $top['title_show'] !!}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>分类排序:</label>
|
||||||
|
<input type="text" name="sort" value="{{ $category->sort }}" size="5" class="required digits"/>
|
||||||
|
</div>
|
||||||
|
<div class="unit" style="display: none;">
|
||||||
|
<label>是否推荐:</label>
|
||||||
|
<select name="is_recommend" class="combox">
|
||||||
|
<option value="0"@if (0 == $category->is_recommend) selected @endif>否</option>
|
||||||
|
<option value="1"@if (1 == $category->is_recommend) selected @endif>是</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="unit" style="display: none;">
|
||||||
|
<label>推荐排序:</label>
|
||||||
|
<input type="text" name="recommend_sort" value="{{ $category->recommend_sort }}" size="5" class="required digits"/>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12">
|
||||||
|
<input id="testFileInput" type="file" name="image" uploaderOption="{
|
||||||
|
swf:'{{ admin_assets('uploadify/scripts/uploadify.swf') }}',
|
||||||
|
uploader:'{{ route('RuLong.storages.upload', ['name'=>'fileup']) }}',
|
||||||
|
formData:{_token: '{{ csrf_token() }}'},
|
||||||
|
fileObjName: 'fileup',
|
||||||
|
buttonText:'选择封面图片',
|
||||||
|
fileSizeLimit:'20MB',
|
||||||
|
auto:true,
|
||||||
|
multi:false,
|
||||||
|
onUploadSuccess: function(file, res) {
|
||||||
|
var d = JSON.parse(res)
|
||||||
|
$('.cover img').attr('src', d.data.url).show();
|
||||||
|
$('#storageID').val(d.data.id);
|
||||||
|
}}"/>
|
||||||
|
<div class="cover" style="border:1px solid #B8D0D6;min-height:50px;max-width: 50px">
|
||||||
|
@if ($category->storage->path)
|
||||||
|
<img src="{{$category->storage->path}}" style="width:50px" alt="">
|
||||||
|
@else
|
||||||
|
<img src="" style="display:none;width:50px" alt="">
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
<input type="hidden" id="storageID" name="storage_id" value="{{ $category->storage_id }}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
@csrf
|
||||||
|
@method('PUT')
|
||||||
|
<div class="formBar">
|
||||||
|
<ul>
|
||||||
|
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
|
||||||
|
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
110
app/Admin/Views/categories/index.blade.php
Normal file
110
app/Admin/Views/categories/index.blade.php
Normal file
@@ -0,0 +1,110 @@
|
|||||||
|
<div class="pageContent">
|
||||||
|
<div style="float:left;width:240px;border-right:1px #B8D0D6 solid;">
|
||||||
|
<div class="pageHeader">
|
||||||
|
<h2 style="line-height:24px;">分类结构</h2>
|
||||||
|
</div>
|
||||||
|
<ul class="tree treeFolder expand" layoutH="36">
|
||||||
|
@foreach($categoryTree as $category)
|
||||||
|
<li><a>{{ $category->title }}</a>
|
||||||
|
@if ($category->children->count())
|
||||||
|
<ul>
|
||||||
|
@foreach($category->children as $child)
|
||||||
|
<li><a href="" title="">{{ $child->title }}</a>
|
||||||
|
@if ($child->children->count())
|
||||||
|
<ul>
|
||||||
|
@foreach($child->children as $son)
|
||||||
|
<li><a href="" title="">{{ $son->title }}</a></li>
|
||||||
|
@endforeach
|
||||||
|
</ul>
|
||||||
|
@endif
|
||||||
|
</li>
|
||||||
|
@endforeach
|
||||||
|
</ul>
|
||||||
|
@endif
|
||||||
|
</li>
|
||||||
|
@endforeach
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div style="margin-left:245px;border-left:1px #B8D0D6 solid;">
|
||||||
|
<div class="pageHeader">
|
||||||
|
<form rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="post">
|
||||||
|
<div class="searchBar">
|
||||||
|
<table class="searchContent">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
分类名称:
|
||||||
|
<input type="text" name="title" value="{{ Request::input('title') }}"/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="hidden" name="parent_id" value="{{ Request::get('parent_id') }}">
|
||||||
|
<div class="buttonActive"><div class="buttonContent"><button type="submit">检索结果</button></div></div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<div class="panelBar">
|
||||||
|
<ul class="toolBar">
|
||||||
|
@if (Request::get('parent_id'))
|
||||||
|
<li><a class="add" href="{{ route('Admin.categories.create', ['parent_id' => Request::get('parent_id')]) }}" target="dialog" mask="true" width="600" height="400" rel="diaolog_{{ time() }}" title="添加分类"><span>添加分类</span></a></li>
|
||||||
|
@else
|
||||||
|
<li><a class="add" href="{{ route('Admin.categories.create') }}" target="dialog" mask="true" width="600" height="400" rel="diaolog_{{ time() }}" title="添加分类"><span>添加分类</span></a></li>
|
||||||
|
@endif
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<table class="table" width="100%" layoutH="112">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th width="40">ID</th>
|
||||||
|
<th width="130">分类名称</th>
|
||||||
|
<th width="50">排序</th>
|
||||||
|
<th width="100">是否推荐</th>
|
||||||
|
<th width="100">推荐排序</th>
|
||||||
|
<th></th>
|
||||||
|
<th width="120">创建时间</th>
|
||||||
|
<th width="120">更新时间</th>
|
||||||
|
<th width="80"></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@foreach ($categories as $category)
|
||||||
|
<tr target="sid" rel="{$vo.id}">
|
||||||
|
<td>{{ $category->id }}</td>
|
||||||
|
<td><a href="{{ route('Admin.categories.index', ['parent_id' => $category->id]) }}" target="navTab" rel="categories" title="分类管理">{{ $category->title }}</a></td>
|
||||||
|
<td>{{ $category->sort }}</td>
|
||||||
|
<td>{{ $category->is_recommend == 1 ? '是' : '否' }}</td>
|
||||||
|
<td>{{ $category->recommend_sort }}</td>
|
||||||
|
<td>{{ $category->description }}</td>
|
||||||
|
<td>{{ $category->created_at }}</td>
|
||||||
|
<td>{{ $category->updated_at }}</td>
|
||||||
|
<td>
|
||||||
|
<a title="编辑" target="dialog" href="{{ route('Admin.categories.edit', $category) }}" rel="dialog_{{ time() }}" mask="true" width="600" height="400" class="btnEdit">编辑</a>
|
||||||
|
<a title="删除" target="ajaxDelete" href="{{ route('Admin.categories.destroy', $category) }}" class="btnDel">删除</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
@endforeach
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<div class="panelBar">
|
||||||
|
<form id="pagerForm" method="post" action="#rel#">
|
||||||
|
<input type="hidden" name="page" value="{{ $categories->currentPage() }}" />
|
||||||
|
<input type="hidden" name="numPerPage" value="{{ $categories->perPage() }}" />
|
||||||
|
<input type="hidden" name="orderField" value="{{ Request::input('orderField') }}" />
|
||||||
|
<input type="hidden" name="orderDirection" value="{{ Request::input('orderDirection') }}" />
|
||||||
|
</form>
|
||||||
|
<div class="pages">
|
||||||
|
<span>显示</span>
|
||||||
|
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
|
||||||
|
<option @if ($categories->perPage() == 30) selected @endif value="30">30</option>
|
||||||
|
<option @if ($categories->perPage() == 100) selected @endif value="100">100</option>
|
||||||
|
<option @if ($categories->perPage() == 200) selected @endif value="200">200</option>
|
||||||
|
</select>
|
||||||
|
<span>条,共 {{ $categories->total() }} 条</span>
|
||||||
|
</div>
|
||||||
|
<div class="pagination" targetType="navTab" totalCount="{{ $categories->total() }}" numPerPage="{{ $categories->perPage() }}" pageNumShown="10" currentPage="{{ $categories->currentPage() }}"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
11
app/Admin/Views/common/tree.blade.php
Normal file
11
app/Admin/Views/common/tree.blade.php
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
@foreach ($children as $item)
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a>{{ $item['text'] }}</a>
|
||||||
|
@isset($item['children'])
|
||||||
|
@component('Admin::tree', ['children' => $item['children']])
|
||||||
|
@endcomponent
|
||||||
|
@endisset
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
@endforeach
|
||||||
174
app/Admin/Views/coupon/all.blade.php
Normal file
174
app/Admin/Views/coupon/all.blade.php
Normal file
@@ -0,0 +1,174 @@
|
|||||||
|
<div class="pageHeader">
|
||||||
|
<form rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="post">
|
||||||
|
<div class="searchBar">
|
||||||
|
<table class="searchContent">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
商家名称:
|
||||||
|
<input type="text" name="seller" value="{{ Request::input('seller') }}" placeholder=""/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
商品名称:
|
||||||
|
<input type="text" name="title" value="{{ Request::input('title') }}" placeholder=""/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<select name="is_gift" class="combox">
|
||||||
|
<option value="">按赠品检索</option>
|
||||||
|
<option value="is_seller_gift" @if(Request::get('is_gift') == 'is_seller_gift') selected @endif>开通会员赠品</option>
|
||||||
|
<option value="is_mall_gift" @if(Request::get('is_gift') == 'is_mall_gift') selected @endif>满仓赠品</option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<select name="position" class="combox">
|
||||||
|
<option value="">首页推荐位</option>
|
||||||
|
<option value="is_seller_package" @if(Request::get('position') == 'is_seller_package') selected @endif>首页99套餐</option>
|
||||||
|
<option value="is_recommend" @if(Request::get('position') == 'is_recommend') selected @endif>首页全积分购</option>
|
||||||
|
<option value="is_hot_sell" @if(Request::get('position') == 'is_hot_sell') selected @endif>首页全现金购</option>
|
||||||
|
<option value="is_hot_changed" @if(Request::get('position') == 'is_hot_changed') selected @endif>首页积分+现金</option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td><div class="buttonActive"><div class="buttonContent"><button type="submit">检索结果</button></div></div></td>
|
||||||
|
<td><div class="buttonActive"><div class="buttonContent"><button type="button" class="export-data">导出数据</button></div></div></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pageContent">
|
||||||
|
<div class="panelBar">
|
||||||
|
<ul class="toolBar">
|
||||||
|
<li><a class="add" href="{{ route('Admin.goods.create') }}" mask="true" target="navTab" rel="navTab_{{ time() }}" title="添加商品"><span>添加商品</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<table class="table" width="100%" layoutH="112">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th width="50" orderField="id" @if (Request::input('orderField') == 'id') class="{{ Request::input('orderDirection') }}" @endif>编号</th>
|
||||||
|
<th width="80">商品类型</th>
|
||||||
|
<th>商品名称</th>
|
||||||
|
<th width="100">商户名称</th>
|
||||||
|
<th width="100">规格</th>
|
||||||
|
<th width="100">售价</th>
|
||||||
|
<th width="100">成本价</th>
|
||||||
|
<th width="100">会员赠品</th>
|
||||||
|
<th width="100">满仓赠品</th>
|
||||||
|
<th width="100">平台推荐位</th>
|
||||||
|
<th width="60">排序</th>
|
||||||
|
<th width="60">状态</th>
|
||||||
|
<th width="140" orderField="created_at" @if (Request::input('orderField') == 'created_at') class="{{ Request::input('orderDirection') }}" @endif>创建时间</th>
|
||||||
|
<th width="200"></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@php
|
||||||
|
$goodids = array();
|
||||||
|
@endphp
|
||||||
|
@foreach ($goods as $good)
|
||||||
|
|
||||||
|
@foreach($good->params()->where('status',1)->get() as $params)
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
@if(!in_array($good->id, $goodids))
|
||||||
|
<td>{{ $good->id }}</td>
|
||||||
|
<td>{{ $good->category->title }}</td>
|
||||||
|
<td>{{ $good->title }}</td>
|
||||||
|
<td>{{ $good->seller->name }}</td>
|
||||||
|
@else
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
|
||||||
|
@endif
|
||||||
|
<td>{{ $params->value }}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
@if($params->score == 0){{ number_format($params->price,2) }}元
|
||||||
|
@else
|
||||||
|
@if($params->price - $params->score > 0){{ number_format($params->price - $params->score,2) }}元 + @endif
|
||||||
|
{{ number_format($params->score,2) }}积分
|
||||||
|
@endif
|
||||||
|
</td>
|
||||||
|
<td>{{ number_format($params->cost,2) }}元
|
||||||
|
</td>
|
||||||
|
@if(!in_array($good->id, $goodids))
|
||||||
|
|
||||||
|
<td>@if($good->is_seller_gift == 0 && $good->status == 1)<a title="设为开通会员商品" target="ajaxTodo" href="{{ route('Admin.goods.setgift', $good) }}">设为赠品</a>@endif
|
||||||
|
@if($good->is_seller_gift == 1 && $good->status == 1)<span style="color: red">赠品</span> <a title="取消赠品" target="ajaxTodo" href="{{ route('Admin.goods.cancelgift', $good) }}">取消</a>@endif
|
||||||
|
</td>
|
||||||
|
<td>@if($good->is_mall_gift == 0 && $good->status == 1)<a title="设为满仓商品" target="ajaxTodo" href="{{ route('Admin.goods.setFull', $good) }}">设为满仓赠</a>@endif
|
||||||
|
@if($good->is_mall_gift == 1 && $good->status == 1)<span style="color: red">满仓</span> <a title="取消满仓赠品" target="ajaxTodo" href="{{ route('Admin.goods.cancelFull', $good) }}">取消</a>@endif
|
||||||
|
</td>
|
||||||
|
<td>@if($good->is_recommend == 1) 1.全积分购 @endif
|
||||||
|
@if($good->is_hot_sell == 1) 2.全现金购 @endif
|
||||||
|
@if($good->is_hot_changed == 1) 3.积分现金购 @endif
|
||||||
|
@if($good->is_seller_package == 1) 4.首页99套餐 @endif
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td>{{ $good->sort }}</td>
|
||||||
|
<td>{!! $good->status_text !!}</td>
|
||||||
|
<td>{{ $good->created_at }}</td>
|
||||||
|
<td>
|
||||||
|
@if($good->status == 1)<a title="编辑商品" target="navTab" href="{{ route('Admin.goods.edit', $good) }}" rel="navTab_{{ time() }}">编辑</a>@endif
|
||||||
|
|
||||||
|
{{--@if($good->status == 1)<a title="编辑商品" target="navTab" href="{{ route('Admin.goods.magageedit', $good) }}" rel="navTab_{{ time() }}">编辑</a>@endif--}}
|
||||||
|
@if($good->canDel())<a title="请确认要删除商品吗?" target="ajaxDelete" href="{{ route('Admin.goods.delete', $good) }}">删除</a>@endif
|
||||||
|
@if($good->canCancel())<a title="请确认要下架商品吗?" target="ajaxDelete" href="{{ route('Admin.goods.destroy', $good) }}">下架</a>@endif
|
||||||
|
<a title="推荐到首页" target="dialog" href="{{ route('Admin.goods.setting', $good) }}" rel="dialog{{ time() }}" mask="true" width="800" height="460">推荐到首页</a>
|
||||||
|
@if($good->status == 0)<a title="上架商品" target="navTab" href="{{ route('Admin.goods.putOn', $good) }}" rel="navTab_{{ time() }}">上架</a>@endif
|
||||||
|
@if($good->is_seller_gift == 1 && $good->status == 1)<a title="取消赠品" target="ajaxTodo" href="{{ route('Admin.goods.cancelgift', $good) }}">取消赠品</a> @endif
|
||||||
|
</td>
|
||||||
|
@else
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
@endif
|
||||||
|
</tr>
|
||||||
|
@php
|
||||||
|
array_push($goodids,$good->id);
|
||||||
|
@endphp
|
||||||
|
@endforeach
|
||||||
|
|
||||||
|
@endforeach
|
||||||
|
<tr><td colspan="11" height="50px">
|
||||||
|
<p style="color: red;padding: 10px;">
|
||||||
|
注:1》删除商品- 未产生订单的商品可删除,删除操作不可逆。2》下架商品- 已产生订单的商品不可删除,只能下架,下架后不会再产生新订单,下架操作可通过上架操作恢复商品。
|
||||||
|
</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<div class="panelBar">
|
||||||
|
<form id="pagerForm" method="post" action="#rel#">
|
||||||
|
<input type="hidden" name="page" value="{{ $goods->currentPage() }}" />
|
||||||
|
<input type="hidden" name="numPerPage" value="{{ $goods->perPage() }}" />
|
||||||
|
<input type="hidden" name="orderField" value="{{ Request::input('orderField') }}" />
|
||||||
|
<input type="hidden" name="orderDirection" value="{{ Request::input('orderDirection') }}" />
|
||||||
|
</form>
|
||||||
|
<div class="pages">
|
||||||
|
<span>显示</span>
|
||||||
|
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
|
||||||
|
<option @if ($goods->perPage() == 30) selected @endif value="30">30</option>
|
||||||
|
<option @if ($goods->perPage() == 100) selected @endif value="100">100</option>
|
||||||
|
<option @if ($goods->perPage() == 200) selected @endif value="200">200</option>
|
||||||
|
</select>
|
||||||
|
<span>条,共 {{ $goods->total() }} 条</span>
|
||||||
|
</div>
|
||||||
|
<div class="pagination" targetType="navTab" totalCount="{{ $goods->total() }}" numPerPage="{{ $goods->perPage() }}" pageNumShown="10" currentPage="{{ $goods->currentPage() }}"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
//点击导出
|
||||||
|
$('.export-data').click(function (event) {
|
||||||
|
location.href = "{{ route('Admin.export.goods') }}?" + $(this).parents('form').serialize();
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
65
app/Admin/Views/coupon/create.blade.php
Normal file
65
app/Admin/Views/coupon/create.blade.php
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
<div class="pageContent">
|
||||||
|
<form method="post" action="{{ route('Admin.coupon.store') }}" class="pageForm required-validate" onsubmit="return validateCallback(this, navTabAjaxDone)">
|
||||||
|
<div class="pageFormContent" layoutH="55">
|
||||||
|
<div class="unit">
|
||||||
|
<label>券码名称:</label>
|
||||||
|
<input type="text" name="title" value="" size="79" class="required"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>券码描述:</label>
|
||||||
|
<textarea name="remark" rows="3" cols="80"></textarea>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>使用途径:</label>
|
||||||
|
<select name="online" class="combox">
|
||||||
|
<option value="">请选择途径</option>
|
||||||
|
<option value="1">线上使用</option>
|
||||||
|
<option value="0">线下使用</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- <div class="unit">
|
||||||
|
<label>最大数量:</label>
|
||||||
|
<input type="text" name="number" value="0" size="5" class="required"/>
|
||||||
|
</div> -->
|
||||||
|
<div class="unit">
|
||||||
|
<label>享用额度:</label>
|
||||||
|
<input type="text" name="bouns" value="0" size="5" class="required"/>
|
||||||
|
</div>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>有效期起始:</label>
|
||||||
|
<input type="text" name="start_at" value="{{ Request::get('start') }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd" readonly="true">
|
||||||
|
</div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>有效期结束:</label>
|
||||||
|
<input type="text" name="end_at" value="{{ Request::get('end') }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd" readonly="true">
|
||||||
|
</div>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>使用条件:</label>
|
||||||
|
<select name="type" class="combox">
|
||||||
|
<option value="">请选择使用条件</option>
|
||||||
|
<option value="lesson">报课</option>
|
||||||
|
<option value="lottery">抽奖</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<!-- <div class="unit">
|
||||||
|
<label>条件数额:</label>
|
||||||
|
<input type="text" name="rule_number" value="0" size="5" class="required"/>
|
||||||
|
</div> -->
|
||||||
|
</div>
|
||||||
|
@csrf
|
||||||
|
<input type="hidden" name="seller_id" value="{{ Admin::user()->username }}">
|
||||||
|
<div class="formBar">
|
||||||
|
<ul>
|
||||||
|
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
|
||||||
|
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
68
app/Admin/Views/coupon/edit.blade.php
Normal file
68
app/Admin/Views/coupon/edit.blade.php
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
<div class="pageContent">
|
||||||
|
<form method="post" action="{{ route('Admin.coupon.update',$info) }}" class="pageForm required-validate" onsubmit="return validateCallback(this, navTabAjaxDone)">
|
||||||
|
<div class="pageFormContent" layoutH="55">
|
||||||
|
<div class="unit">
|
||||||
|
<label>券码名称:</label>
|
||||||
|
<input type="text" name="title" value="{{ $info->title }}" size="79" class="required"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<input type="hidden" name="seller_id" value="{{ $info->seller_id }}">
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>券码描述:</label>
|
||||||
|
<textarea name="remark" rows="3" cols="80">{{ $info->remark }}</textarea>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>使用途径:</label>
|
||||||
|
<select name="online" class="combox">
|
||||||
|
<option value="">请选择途径</option>
|
||||||
|
<option value="1" @if($info->online==1) selected @endif>线上使用</option>
|
||||||
|
<option value="0" @if($info->online===0) selected @endif>线下使用</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>状态:</label>
|
||||||
|
<select name="status" class="combox">
|
||||||
|
<option value="1" @if($info->status==1) selected @endif>正常</option>
|
||||||
|
<option value="0" @if($info->status===0) selected @endif>下架</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>享用额度:</label>
|
||||||
|
<input type="text" name="bouns" value="{{ $info->bouns }}" size="5" class="required"/>
|
||||||
|
</div>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>有效期起始:</label>
|
||||||
|
<input type="text" name="start_at" value="{{ $info->start_at->format('Y-m-d') }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd" readonly="true">
|
||||||
|
</div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>有效期结束:</label>
|
||||||
|
<input type="text" name="end_at" value="{{ $info->end_at->format('Y-m-d') }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd" readonly="true">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>使用条件:</label>
|
||||||
|
<select name="type" class="combox">
|
||||||
|
<option value="">请选择使用条件</option>
|
||||||
|
<option value="lesson" @if($info->type=='lesson') selected @endif>报名课程</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@csrf
|
||||||
|
@method('PUT')
|
||||||
|
<div class="formBar">
|
||||||
|
<ul>
|
||||||
|
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
|
||||||
|
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
84
app/Admin/Views/coupon/index.blade.php
Normal file
84
app/Admin/Views/coupon/index.blade.php
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
<div class="pageHeader">
|
||||||
|
<form rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="post">
|
||||||
|
<div class="searchBar">
|
||||||
|
<table class="searchContent">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
名称:
|
||||||
|
<input type="text" name="title" value="{{ Request::input('title') }}" placeholder=""/>
|
||||||
|
</td>
|
||||||
|
<td><div class="buttonActive"><div class="buttonContent"><button type="submit">检索结果</button></div></div></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pageContent">
|
||||||
|
<div class="panelBar">
|
||||||
|
<ul class="toolBar">
|
||||||
|
<li><a class="add" href="{{ route('Admin.coupon.create') }}" mask="true" target="navTab" rel="navTab_{{ time() }}" title="添加券码"><span>添加券码</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<table class="table" width="100%" layoutH="112">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th width="50" orderField="id" @if (Request::input('orderField') == 'id') class="{{ Request::input('orderDirection') }}" @endif>编号</th>
|
||||||
|
<th width="200">券码名称</th>
|
||||||
|
<th width="100">线上</th>
|
||||||
|
<th width="100">有效起始</th>
|
||||||
|
<th width="100">有效结束</th>
|
||||||
|
<th width="60">状态</th>
|
||||||
|
<th width="60">用途</th>
|
||||||
|
<th width="140" orderField="created_at" @if (Request::input('orderField') == 'created_at') class="{{ Request::input('orderDirection') }}" @endif>创建时间</th>
|
||||||
|
<th width="120"></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@foreach ($coupons as $coupon)
|
||||||
|
<tr>
|
||||||
|
<td>{{ $coupon->id }}</td>
|
||||||
|
<td>{{ $coupon->title }}</td>
|
||||||
|
<td>
|
||||||
|
@if($coupon->online == 1)
|
||||||
|
是
|
||||||
|
@else
|
||||||
|
否
|
||||||
|
@endif
|
||||||
|
</td>
|
||||||
|
<td>{{ $coupon->start_at }}</td>
|
||||||
|
<td>{{ $coupon->end_at }}</td>
|
||||||
|
<td>{!! $coupon->status_text !!}</td>
|
||||||
|
<td>{!! $coupon->type_text !!}</td>
|
||||||
|
<td>{{ $coupon->created_at }}</td>
|
||||||
|
<td>
|
||||||
|
<a title="编辑券码" target="navTab" href="{{ route('Admin.coupon.edit', $coupon) }}" rel="navTab_{{ time() }}">编辑</a>
|
||||||
|
@if($coupon->canCancel())
|
||||||
|
<a title="请确认要下架券码吗?" target="ajaxDelete" href="{{ route('Admin.coupon.destroy', $coupon) }}">下架</a>
|
||||||
|
@endif
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
@endforeach
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<div class="panelBar">
|
||||||
|
<form id="pagerForm" method="post" action="#rel#">
|
||||||
|
<input type="hidden" name="page" value="{{ $coupons->currentPage() }}" />
|
||||||
|
<input type="hidden" name="numPerPage" value="{{ $coupons->perPage() }}" />
|
||||||
|
<input type="hidden" name="orderField" value="{{ Request::input('orderField') }}" />
|
||||||
|
<input type="hidden" name="orderDirection" value="{{ Request::input('orderDirection') }}" />
|
||||||
|
</form>
|
||||||
|
<div class="pages">
|
||||||
|
<span>显示</span>
|
||||||
|
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
|
||||||
|
<option @if ($coupons->perPage() == 30) selected @endif value="30">30</option>
|
||||||
|
<option @if ($coupons->perPage() == 100) selected @endif value="100">100</option>
|
||||||
|
<option @if ($coupons->perPage() == 200) selected @endif value="200">200</option>
|
||||||
|
</select>
|
||||||
|
<span>条,共 {{ $coupons->total() }} 条</span>
|
||||||
|
</div>
|
||||||
|
<div class="pagination" targetType="navTab" totalCount="{{ $coupons->total() }}" numPerPage="{{ $coupons->perPage() }}" pageNumShown="10" currentPage="{{ $coupons->currentPage() }}"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
182
app/Admin/Views/goods/all.blade.php
Normal file
182
app/Admin/Views/goods/all.blade.php
Normal file
@@ -0,0 +1,182 @@
|
|||||||
|
<div class="pageHeader">
|
||||||
|
<form rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="post">
|
||||||
|
<div class="searchBar">
|
||||||
|
<table class="searchContent">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
商家名称:
|
||||||
|
<input type="text" name="seller" value="{{ Request::input('seller') }}" placeholder=""/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
商品名称:
|
||||||
|
<input type="text" name="title" value="{{ Request::input('title') }}" placeholder=""/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<select name="category_id" class="combox">
|
||||||
|
<option value="">按商品分类</option>
|
||||||
|
@foreach ($categoies as $category)
|
||||||
|
<option value="{{ $category['id'] }}" @if(Request::get('category_id') == $category['id']) selected @endif>{{ $category['title_show'] }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<select name="is_gift" class="combox">
|
||||||
|
<option value="">按赠品检索</option>
|
||||||
|
<option value="is_seller_gift" @if(Request::get('is_gift') == 'is_seller_gift') selected @endif>开通会员赠品</option>
|
||||||
|
<option value="is_mall_gift" @if(Request::get('is_gift') == 'is_mall_gift') selected @endif>满仓赠品</option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<select name="position" class="combox">
|
||||||
|
<option value="">首页推荐位</option>
|
||||||
|
<option value="is_seller_package" @if(Request::get('position') == 'is_seller_package') selected @endif>首页99套餐</option>
|
||||||
|
<option value="is_recommend" @if(Request::get('position') == 'is_recommend') selected @endif>首页全积分购</option>
|
||||||
|
<option value="is_hot_sell" @if(Request::get('position') == 'is_hot_sell') selected @endif>首页全现金购</option>
|
||||||
|
<option value="is_hot_changed" @if(Request::get('position') == 'is_hot_changed') selected @endif>首页积分+现金</option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td><div class="buttonActive"><div class="buttonContent"><button type="submit">检索结果</button></div></div></td>
|
||||||
|
<td><div class="buttonActive"><div class="buttonContent"><button type="button" class="export-data">导出数据</button></div></div></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pageContent">
|
||||||
|
<div class="panelBar">
|
||||||
|
<ul class="toolBar">
|
||||||
|
<li><a class="add" href="{{ route('Admin.goods.create') }}" mask="true" target="navTab" rel="navTab_{{ time() }}" title="添加商品"><span>添加商品</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<table class="table" width="100%" layoutH="112">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th width="50" orderField="id" @if (Request::input('orderField') == 'id') class="{{ Request::input('orderDirection') }}" @endif>编号</th>
|
||||||
|
<th width="80">商品类型</th>
|
||||||
|
<th>商品名称</th>
|
||||||
|
<th width="100">商户名称</th>
|
||||||
|
<th width="100">规格</th>
|
||||||
|
<th width="100">售价</th>
|
||||||
|
<th width="100">成本价</th>
|
||||||
|
<th width="100">会员赠品</th>
|
||||||
|
<th width="100">满仓赠品</th>
|
||||||
|
<th width="100">平台推荐位</th>
|
||||||
|
<th width="60">排序</th>
|
||||||
|
<th width="60">状态</th>
|
||||||
|
<th width="140" orderField="created_at" @if (Request::input('orderField') == 'created_at') class="{{ Request::input('orderDirection') }}" @endif>创建时间</th>
|
||||||
|
<th width="200"></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@php
|
||||||
|
$goodids = array();
|
||||||
|
@endphp
|
||||||
|
@foreach ($goods as $good)
|
||||||
|
|
||||||
|
@foreach($good->params()->where('status',1)->get() as $params)
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
@if(!in_array($good->id, $goodids))
|
||||||
|
<td>{{ $good->id }}</td>
|
||||||
|
<td>{{ $good->category->title }}</td>
|
||||||
|
<td>{{ $good->title }}</td>
|
||||||
|
<td>{{ $good->seller->name }}</td>
|
||||||
|
@else
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
|
||||||
|
@endif
|
||||||
|
<td>{{ $params->value }}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
@if($params->score == 0){{ number_format($params->price,2) }}元
|
||||||
|
@else
|
||||||
|
@if($params->price - $params->score > 0){{ number_format($params->price - $params->score,2) }}元 + @endif
|
||||||
|
{{ number_format($params->score,2) }}积分
|
||||||
|
@endif
|
||||||
|
</td>
|
||||||
|
<td>{{ number_format($params->cost,2) }}元
|
||||||
|
</td>
|
||||||
|
@if(!in_array($good->id, $goodids))
|
||||||
|
|
||||||
|
<td>@if($good->is_seller_gift == 0 && $good->status == 1)<a title="设为开通会员商品" target="ajaxTodo" href="{{ route('Admin.goods.setgift', $good) }}">设为赠品</a>@endif
|
||||||
|
@if($good->is_seller_gift == 1 && $good->status == 1)<span style="color: red">赠品</span> <a title="取消赠品" target="ajaxTodo" href="{{ route('Admin.goods.cancelgift', $good) }}">取消</a>@endif
|
||||||
|
</td>
|
||||||
|
<td>@if($good->is_mall_gift == 0 && $good->status == 1)<a title="设为满仓商品" target="ajaxTodo" href="{{ route('Admin.goods.setFull', $good) }}">设为满仓赠</a>@endif
|
||||||
|
@if($good->is_mall_gift == 1 && $good->status == 1)<span style="color: red">满仓</span> <a title="取消满仓赠品" target="ajaxTodo" href="{{ route('Admin.goods.cancelFull', $good) }}">取消</a>@endif
|
||||||
|
</td>
|
||||||
|
<td>@if($good->is_recommend == 1) 1.全积分购 @endif
|
||||||
|
@if($good->is_hot_sell == 1) 2.全现金购 @endif
|
||||||
|
@if($good->is_hot_changed == 1) 3.积分现金购 @endif
|
||||||
|
@if($good->is_seller_package == 1) 4.首页99套餐 @endif
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td>{{ $good->sort }}</td>
|
||||||
|
<td>{!! $good->status_text !!}</td>
|
||||||
|
<td>{{ $good->created_at }}</td>
|
||||||
|
<td>
|
||||||
|
@if($good->status == 1)<a title="编辑商品" target="navTab" href="{{ route('Admin.goods.edit', $good) }}" rel="navTab_{{ time() }}">编辑</a>@endif
|
||||||
|
|
||||||
|
{{--@if($good->status == 1)<a title="编辑商品" target="navTab" href="{{ route('Admin.goods.magageedit', $good) }}" rel="navTab_{{ time() }}">编辑</a>@endif--}}
|
||||||
|
@if($good->canDel())<a title="请确认要删除商品吗?" target="ajaxDelete" href="{{ route('Admin.goods.delete', $good) }}">删除</a>@endif
|
||||||
|
@if($good->canCancel())<a title="请确认要下架商品吗?" target="ajaxDelete" href="{{ route('Admin.goods.destroy', $good) }}">下架</a>@endif
|
||||||
|
<a title="推荐到首页" target="dialog" href="{{ route('Admin.goods.setting', $good) }}" rel="dialog{{ time() }}" mask="true" width="800" height="460">推荐到首页</a>
|
||||||
|
@if($good->status == 0)<a title="上架商品" target="navTab" href="{{ route('Admin.goods.putOn', $good) }}" rel="navTab_{{ time() }}">上架</a>@endif
|
||||||
|
@if($good->is_seller_gift == 1 && $good->status == 1)<a title="取消赠品" target="ajaxTodo" href="{{ route('Admin.goods.cancelgift', $good) }}">取消赠品</a> @endif
|
||||||
|
</td>
|
||||||
|
@else
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
@endif
|
||||||
|
</tr>
|
||||||
|
@php
|
||||||
|
array_push($goodids,$good->id);
|
||||||
|
@endphp
|
||||||
|
@endforeach
|
||||||
|
|
||||||
|
@endforeach
|
||||||
|
<tr><td colspan="11" height="50px">
|
||||||
|
<p style="color: red;padding: 10px;">
|
||||||
|
注:1》删除商品- 未产生订单的商品可删除,删除操作不可逆。2》下架商品- 已产生订单的商品不可删除,只能下架,下架后不会再产生新订单,下架操作可通过上架操作恢复商品。
|
||||||
|
</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<div class="panelBar">
|
||||||
|
<form id="pagerForm" method="post" action="#rel#">
|
||||||
|
<input type="hidden" name="page" value="{{ $goods->currentPage() }}" />
|
||||||
|
<input type="hidden" name="numPerPage" value="{{ $goods->perPage() }}" />
|
||||||
|
<input type="hidden" name="orderField" value="{{ Request::input('orderField') }}" />
|
||||||
|
<input type="hidden" name="orderDirection" value="{{ Request::input('orderDirection') }}" />
|
||||||
|
</form>
|
||||||
|
<div class="pages">
|
||||||
|
<span>显示</span>
|
||||||
|
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
|
||||||
|
<option @if ($goods->perPage() == 30) selected @endif value="30">30</option>
|
||||||
|
<option @if ($goods->perPage() == 100) selected @endif value="100">100</option>
|
||||||
|
<option @if ($goods->perPage() == 200) selected @endif value="200">200</option>
|
||||||
|
</select>
|
||||||
|
<span>条,共 {{ $goods->total() }} 条</span>
|
||||||
|
</div>
|
||||||
|
<div class="pagination" targetType="navTab" totalCount="{{ $goods->total() }}" numPerPage="{{ $goods->perPage() }}" pageNumShown="10" currentPage="{{ $goods->currentPage() }}"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
//点击导出
|
||||||
|
$('.export-data').click(function (event) {
|
||||||
|
location.href = "{{ route('Admin.export.goods') }}?" + $(this).parents('form').serialize();
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
109
app/Admin/Views/goods/create.blade.php
Normal file
109
app/Admin/Views/goods/create.blade.php
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
<div class="pageContent">
|
||||||
|
<form method="post" action="{{ route('Admin.goods.store') }}" class="pageForm required-validate" onsubmit="return validateCallback(this, navTabAjaxDone)">
|
||||||
|
<div class="pageFormContent" layoutH="55">
|
||||||
|
|
||||||
|
@if(Admin::id() == 1)
|
||||||
|
<div class="unit">
|
||||||
|
<label>所属商户:</label>
|
||||||
|
<select name="seller_id" class="combox">
|
||||||
|
@foreach ($sellers as $seller)
|
||||||
|
<option value="{{ $seller['id'] }}">{{ $seller['name'] }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>商品分类:</label>
|
||||||
|
<select name="category_id" class="combox">
|
||||||
|
@foreach ($categoies as $category)
|
||||||
|
<option value="{{ $category['id'] }}">{{ $category['title_show'] }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>商品名称:</label>
|
||||||
|
<input type="text" name="title" value="" size="79" class="required"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>商品描述:</label>
|
||||||
|
<textarea name="description" rows="3" cols="80"></textarea>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-8">
|
||||||
|
@ueditor('', 'content','goods')
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<input id="testFileInput" type="file" name="image" uploaderOption="{
|
||||||
|
swf:'{{ admin_assets('uploadify/scripts/uploadify.swf') }}',
|
||||||
|
uploader:'{{ route('RuLong.storages.upload', ['name'=>'fileup']) }}',
|
||||||
|
formData:{_token: '{{ csrf_token() }}'},
|
||||||
|
fileObjName: 'fileup',
|
||||||
|
buttonText:'选择封面图片',
|
||||||
|
fileSizeLimit:'20MB',
|
||||||
|
auto:true,
|
||||||
|
multi:false,
|
||||||
|
onUploadSuccess: function(file, res) {
|
||||||
|
var d = JSON.parse(res)
|
||||||
|
$('.cover img').attr('src', d.data.url).show();
|
||||||
|
$('#storageID').val(d.data.id);
|
||||||
|
}}"/>
|
||||||
|
<div class="cover" style="border:1px solid #B8D0D6;min-height:200px">
|
||||||
|
<img src="" style="display:none;width:100%" alt="">
|
||||||
|
</div>
|
||||||
|
<input type="hidden" id="storageID" name="storage_id" value="">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="tabs">
|
||||||
|
|
||||||
|
<div class="tabsContent" style="height: 150px;">
|
||||||
|
<div>
|
||||||
|
<table class="list nowrap itemDetail" addButton="添加规格" width="100%">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th type="text" name="params[#index#][value]" size="30" fieldClass="required" fieldAttrs="{remote:'validate_remote.html', maxlength:40}">规格名称</th>
|
||||||
|
<th type="text" name="params[#index#][original]" defaultVal="0" size="18" fieldClass="number">原价</th>
|
||||||
|
<th type="text" name="params[#index#][price]" defaultVal="0" size="18" fieldClass="number">售价</th>
|
||||||
|
<th type="text" name="params[#index#][stock]" defaultVal="0" size="15" fieldClass="digits">库存</th>
|
||||||
|
<th type="text" name="params[#index#][heavy]" defaultVal="0" size="15" fieldClass="number">单品重量(kg)</th>
|
||||||
|
<th type="text" name="params[#index#][is_free_freight]" defaultVal="0" size="15" fieldClass="number">包邮(0:不包邮;1:包邮)</th>
|
||||||
|
<th type="del" width="60">操作</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr class="unitBox">
|
||||||
|
<td><input type="text" name="params[0][value]" value="0" size="30" class="required" maxlength="40"></td>
|
||||||
|
<td><input type="text" name="params[0][original]" value="0" size="18" class="number textInput"></td>
|
||||||
|
<td><input type="text" name="params[0][price]" value="0" size="18" class="number textInput"></td>
|
||||||
|
<td><input type="text" name="params[0][stock]" value="0" size="15" class="digits textInput"></td>
|
||||||
|
<td><input type="text" name="params[0][heavy]" value="0" size="15" class="number textInput"></td>
|
||||||
|
<td><input type="text" name="params[0][is_free_freight]" value="0" size="15" class="number textInput"></td>
|
||||||
|
<td><a href="javascript:void(0)" class="btnDel">删除</a></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="tabsFooter">
|
||||||
|
<div class="tabsFooterContent"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@csrf
|
||||||
|
<div class="formBar">
|
||||||
|
<ul>
|
||||||
|
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
|
||||||
|
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
64
app/Admin/Views/goods/create.blade.php##
Normal file
64
app/Admin/Views/goods/create.blade.php##
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
<div class="pageContent">
|
||||||
|
<form method="post" action="{{ route('Admin.goods.store') }}" class="pageForm required-validate" onsubmit="return validateCallback(this, navTabAjaxDone)">
|
||||||
|
<div class="pageFormContent" layoutH="55">
|
||||||
|
<div class="unit">
|
||||||
|
<label>产品名称:</label>
|
||||||
|
<input type="text" name="title" value="" size="79" class="required"/>
|
||||||
|
</div>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>产品描述:</label>
|
||||||
|
<textarea name="description" rows="3" cols="80"></textarea>
|
||||||
|
</div>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>产品分类:</label>
|
||||||
|
<select name="" class="combox">
|
||||||
|
@foreach ($categoies as $category)
|
||||||
|
<option value="{{ $category['id'] }}">{{ $category['title_show'] }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>产品单价:</label>
|
||||||
|
<input type="text" name="price" value="" class="required"/>
|
||||||
|
<label>产品库存:</label>
|
||||||
|
<input type="text" name="stock" value="" class="required"/>
|
||||||
|
</div>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-8">
|
||||||
|
@ueditor('', 'content')
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<input id="testFileInput" type="file" name="image" uploaderOption="{
|
||||||
|
swf:'{{ admin_assets('uploadify/scripts/uploadify.swf') }}',
|
||||||
|
uploader:'{{ route('RuLong.storages.upload', ['name'=>'fileup']) }}',
|
||||||
|
formData:{_token: '{{ csrf_token() }}'},
|
||||||
|
fileObjName: 'fileup',
|
||||||
|
buttonText:'选择封面图片',
|
||||||
|
fileSizeLimit:'20MB',
|
||||||
|
auto:true,
|
||||||
|
multi:false,
|
||||||
|
onUploadSuccess: function(file, res) {
|
||||||
|
var d = JSON.parse(res)
|
||||||
|
$('.cover img').attr('src', d.data.url).show();
|
||||||
|
$('#storageID').val(d.data.id);
|
||||||
|
}}"/>
|
||||||
|
<div class="cover" style="border:1px solid #B8D0D6;min-height:200px">
|
||||||
|
<img src="" style="display:none;width:100%" alt="">
|
||||||
|
</div>
|
||||||
|
<input type="hidden" id="storageID" name="storage_id" value="">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@csrf
|
||||||
|
<div class="formBar">
|
||||||
|
<ul>
|
||||||
|
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
|
||||||
|
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
117
app/Admin/Views/goods/edit.blade.php
Normal file
117
app/Admin/Views/goods/edit.blade.php
Normal file
@@ -0,0 +1,117 @@
|
|||||||
|
<div class="pageContent">
|
||||||
|
<form method="post" action="{{ route('Admin.goods.update', $good) }}" class="pageForm required-validate" onsubmit="return validateCallback(this, navTabAjaxDone)">
|
||||||
|
<div class="pageFormContent" layoutH="55">
|
||||||
|
@if(Admin::id() == 1)
|
||||||
|
<div class="unit">
|
||||||
|
<label>所属商户:</label>
|
||||||
|
<select name="seller_id" class="combox">
|
||||||
|
@foreach ($sellers as $seller)
|
||||||
|
<option value="{{ $seller['id'] }}" @if($good->seller_id == $seller['id']) selected @endif>{{ $seller['name'] }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>商品分类:</label>
|
||||||
|
<select name="category_id" class="combox">
|
||||||
|
@foreach ($categoies as $category)
|
||||||
|
<option value="{{ $category['id'] }}" @if($category['id'] == $good->category_id) selected @endif>{{ $category['title_show'] }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>商品名称:</label>
|
||||||
|
<input type="text" name="title" value="{{ $good->title }}" size="79" class="required"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>商品描述:</label>
|
||||||
|
<textarea name="description" rows="3" cols="80">{{ $good->description }}</textarea>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-8">
|
||||||
|
@ueditor($good->content, 'content',"goods{{ $good->id }}")
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<input id="testFileInput" type="file" name="image" uploaderOption="{
|
||||||
|
swf:'{{ admin_assets('uploadify/scripts/uploadify.swf') }}',
|
||||||
|
uploader:'{{ route('RuLong.storages.upload', ['name'=>'fileup']) }}',
|
||||||
|
formData:{_token: '{{ csrf_token() }}'},
|
||||||
|
fileObjName: 'fileup',
|
||||||
|
buttonText:'选择封面图片',
|
||||||
|
fileSizeLimit:'20MB',
|
||||||
|
auto:true,
|
||||||
|
multi:false,
|
||||||
|
onUploadSuccess: function(file, res) {
|
||||||
|
var d = JSON.parse(res)
|
||||||
|
$('.cover img').attr('src', d.data.url).show();
|
||||||
|
$('#storageID').val(d.data.id);
|
||||||
|
}}"/>
|
||||||
|
<div class="cover" style="border:1px solid #B8D0D6;min-height:200px">
|
||||||
|
@if ($good->storage->path)
|
||||||
|
<img src="{{$good->storage->path}}" style="width:100%" alt="">
|
||||||
|
@else
|
||||||
|
<img src="" style="display:none;width:100%" alt="">
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
<input type="hidden" id="storageID" name="storage_id" value="{{ $good->storage_id }}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="tabs">
|
||||||
|
|
||||||
|
<div class="tabsContent" style="height: 150px;">
|
||||||
|
<div>
|
||||||
|
<table class="list nowrap itemDetail" addButton="添加规格" width="100%">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th type="text" name="params[#index#][value]" size="30" fieldClass="required" fieldAttrs="{remote:'validate_remote.html', maxlength:40}">规格名称</th>
|
||||||
|
<th type="text" name="params[#index#][original]" defaultVal="0" size="18" fieldClass="number">原价</th>
|
||||||
|
<th type="text" name="params[#index#][price]" defaultVal="0" size="18" fieldClass="number">售价</th>
|
||||||
|
<th type="text" name="params[#index#][stock]" defaultVal="0" size="15" fieldClass="digits">库存</th>
|
||||||
|
<th type="text" name="params[#index#][heavy]" defaultVal="0" size="15" fieldClass="number">单品重量(kg)</th>
|
||||||
|
<th type="text" name="params[#index#][is_free_freight]" defaultVal="0" size="15" fieldClass="number">包邮(0:不包邮;1:包邮)</th>
|
||||||
|
<th type="del" width="60">操作</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@foreach($good->params()->where('status',1)->get() as $key => $params)
|
||||||
|
<tr class="unitBox">
|
||||||
|
<input type="hidden" name="params[{{ $key }}][id]" value="{{ $params->id }}">
|
||||||
|
<td><input type="text" name="params[{{ $key }}][value]" value="{{ $params->value }}" size="30" class="required" maxlength="40"></td>
|
||||||
|
<td><input type="text" name="params[{{ $key }}][original]" value="{{ $params->original }}" size="18" class="number textInput"></td>
|
||||||
|
<td><input type="text" name="params[{{ $key }}][price]" value="{{ $params->price }}" size="18" class="number textInput"></td>
|
||||||
|
<td><input type="text" name="params[{{ $key }}][stock]" value="{{ $params->stock }}" size="15" class="digits textInput"></td>
|
||||||
|
<td><input type="text" name="params[{{ $key }}][heavy]" value="{{ $params->heavy }}" size="15" class="number textInput"></td>
|
||||||
|
<td><input type="text" name="params[{{ $key }}][is_free_freight]" value="{{ $params->is_free_freight }}" size="15" class="number textInput"></td>
|
||||||
|
<td><a href="javascript:void(0)" class="btnDel">删除</a></td>
|
||||||
|
</tr>
|
||||||
|
@endforeach
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="tabsFooter">
|
||||||
|
<div class="tabsFooterContent"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@csrf
|
||||||
|
<div class="formBar">
|
||||||
|
<ul>
|
||||||
|
@csrf
|
||||||
|
@method('PUT')
|
||||||
|
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
|
||||||
|
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
33
app/Admin/Views/goods/giftseltting.blade.php
Normal file
33
app/Admin/Views/goods/giftseltting.blade.php
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
<div class="pageContent">
|
||||||
|
<form method="post" action="{{ route('Admin.goods.giftsetting', $good) }}" class="pageForm required-validate" onsubmit="return validateCallback(this, navTabAjaxDone)">
|
||||||
|
<div class="pageFormContent" layoutH="55">
|
||||||
|
<div class="unit">
|
||||||
|
<label>商品名称:</label>
|
||||||
|
<input type="text" value="{{ $good->title }}" size="50" readonly/>
|
||||||
|
</div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>开通会员平台赠品:</label>
|
||||||
|
<select name="is_recommend" class="combox">
|
||||||
|
<option value="0" @if($good->is_mall_gift == 0) selected @endif>否</option>
|
||||||
|
<option value="1" @if($good->is_mall_gift == 1) selected @endif>是</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>开通会员商户赠品:</label>
|
||||||
|
<select name="is_hot_sell" class="combox">
|
||||||
|
<option value="0" @if($good->is_seller_gift == 0) selected @endif>否</option>
|
||||||
|
<option value="1" @if($good->is_seller_gift == 1) selected @endif>是</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@csrf
|
||||||
|
<div class="formBar">
|
||||||
|
<ul>
|
||||||
|
@csrf
|
||||||
|
@method('PUT')
|
||||||
|
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
|
||||||
|
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
130
app/Admin/Views/goods/index.blade.php
Normal file
130
app/Admin/Views/goods/index.blade.php
Normal file
@@ -0,0 +1,130 @@
|
|||||||
|
<div class="pageHeader">
|
||||||
|
<form rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="post">
|
||||||
|
<div class="searchBar">
|
||||||
|
<table class="searchContent">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
商品名称:
|
||||||
|
<input type="text" name="title" value="{{ Request::input('title') }}" placeholder=""/>
|
||||||
|
</td>
|
||||||
|
<td><div class="buttonActive"><div class="buttonContent"><button type="submit">检索结果</button></div></div></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pageContent">
|
||||||
|
<div class="panelBar">
|
||||||
|
<ul class="toolBar">
|
||||||
|
<li><a class="add" href="{{ route('Admin.goods.create') }}" mask="true" target="navTab" rel="navTab_{{ time() }}" title="添加商品"><span>添加商品</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<table class="table" width="100%" layoutH="112">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th width="50" orderField="id" @if (Request::input('orderField') == 'id') class="{{ Request::input('orderDirection') }}" @endif>编号</th>
|
||||||
|
<th width="80">商品类型</th>
|
||||||
|
<th width="200">商品名称</th>
|
||||||
|
<th width="100">商户名称</th>
|
||||||
|
<th width="100">规格</th>
|
||||||
|
<th width="100">售价</th>
|
||||||
|
<th width="100">成本价</th>
|
||||||
|
<th width="80">赠品设置</th>
|
||||||
|
<th width="80">奖品设置</th>
|
||||||
|
<th width="60">状态</th>
|
||||||
|
<th width="140" orderField="created_at" @if (Request::input('orderField') == 'created_at') class="{{ Request::input('orderDirection') }}" @endif>创建时间</th>
|
||||||
|
<th width="120"></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@php
|
||||||
|
$goodids = array();
|
||||||
|
@endphp
|
||||||
|
@foreach ($goods as $good)
|
||||||
|
|
||||||
|
@foreach($good->params()->where('status',1)->get() as $params)
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
@if(!in_array($good->id, $goodids))
|
||||||
|
<td>{{ $good->id }}</td>
|
||||||
|
<td>{{ $good->category->title }}</td>
|
||||||
|
<td>{{ $good->title }}</td>
|
||||||
|
<td>{{ $good->seller->name }}</td>
|
||||||
|
@else
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
@endif
|
||||||
|
<td>{{ $params->value }}</td>
|
||||||
|
<td>
|
||||||
|
{{ number_format($params->price,2) }}元
|
||||||
|
</td>
|
||||||
|
<td>{{ number_format($params->cost,2) }}元
|
||||||
|
</td>
|
||||||
|
@if(!in_array($good->id, $goodids))
|
||||||
|
<td>
|
||||||
|
@if($good->is_seller_gift == 0 && $good->status == 1)
|
||||||
|
<a title="设为赠品" target="ajaxTodo" href="{{ route('Admin.goods.setgift', $good) }}">设为赠品</a>
|
||||||
|
@endif
|
||||||
|
@if($good->is_seller_gift == 1 && $good->status == 1)
|
||||||
|
<span style="color: red">赠品</span>
|
||||||
|
<a title="取消赠品" target="ajaxTodo" href="{{ route('Admin.goods.cancelgift', $good) }}">取消</a>
|
||||||
|
@endif
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
@if($good->is_lottery_gift == 0 && $good->status == 1)<a title="设为奖品" target="ajaxTodo" href="{{ route('Admin.goods.setlottery', $good) }}">设为奖品</a>@endif
|
||||||
|
@if($good->is_lottery_gift == 1 && $good->status == 1)<span style="color: red">奖品</span> <a title="取消奖品" target="ajaxTodo" href="{{ route('Admin.goods.cancellottery', $good) }}">取消</a>@endif
|
||||||
|
</td>
|
||||||
|
<td>{!! $good->status_text !!}</td>
|
||||||
|
<td>{{ $good->created_at }}</td>
|
||||||
|
<td>
|
||||||
|
@if($good->status == 1)<a title="编辑商品" target="navTab" href="{{ route('Admin.goods.edit', $good) }}" rel="navTab_{{ time() }}">编辑</a>@endif
|
||||||
|
@if($good->canDel())<a title="请确认要删除商品吗?" target="ajaxDelete" href="{{ route('Admin.goods.delete', $good) }}">删除</a>@endif
|
||||||
|
@if($good->canCancel())<a title="请确认要下架商品吗?" target="ajaxDelete" href="{{ route('Admin.goods.destroy', $good) }}">下架</a>@endif
|
||||||
|
@if($good->is_seller_gift == 1 && $good->status == 1)<a title="取消赠品" target="ajaxTodo" href="{{ route('Admin.goods.cancelgift', $good) }}">取消赠品</a> @endif
|
||||||
|
</td>
|
||||||
|
|
||||||
|
@else
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
@endif
|
||||||
|
</tr>
|
||||||
|
@php
|
||||||
|
array_push($goodids,$good->id);
|
||||||
|
@endphp
|
||||||
|
@endforeach
|
||||||
|
|
||||||
|
@endforeach
|
||||||
|
<tr><td colspan="10" height="50px">
|
||||||
|
<p style="color: red;padding: 10px;">
|
||||||
|
注:1》删除商品- 未产生订单的商品可删除,删除操作不可逆。2》下架商品- 已产生订单的商品不可删除,只能下架,下架后不会再产生新订单,下架操作可通过上架操作恢复商品。
|
||||||
|
</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<div class="panelBar">
|
||||||
|
<form id="pagerForm" method="post" action="#rel#">
|
||||||
|
<input type="hidden" name="page" value="{{ $goods->currentPage() }}" />
|
||||||
|
<input type="hidden" name="numPerPage" value="{{ $goods->perPage() }}" />
|
||||||
|
<input type="hidden" name="orderField" value="{{ Request::input('orderField') }}" />
|
||||||
|
<input type="hidden" name="orderDirection" value="{{ Request::input('orderDirection') }}" />
|
||||||
|
</form>
|
||||||
|
<div class="pages">
|
||||||
|
<span>显示</span>
|
||||||
|
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
|
||||||
|
<option @if ($goods->perPage() == 30) selected @endif value="30">30</option>
|
||||||
|
<option @if ($goods->perPage() == 100) selected @endif value="100">100</option>
|
||||||
|
<option @if ($goods->perPage() == 200) selected @endif value="200">200</option>
|
||||||
|
</select>
|
||||||
|
<span>条,共 {{ $goods->total() }} 条</span>
|
||||||
|
</div>
|
||||||
|
<div class="pagination" targetType="navTab" totalCount="{{ $goods->total() }}" numPerPage="{{ $goods->perPage() }}" pageNumShown="10" currentPage="{{ $goods->currentPage() }}"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
115
app/Admin/Views/goods/magageedit.blade.php
Normal file
115
app/Admin/Views/goods/magageedit.blade.php
Normal file
@@ -0,0 +1,115 @@
|
|||||||
|
<div class="pageContent">
|
||||||
|
<form method="post" action="{{ route('Admin.goods.update', $good) }}" class="pageForm required-validate" onsubmit="return validateCallback(this, navTabAjaxDone)">
|
||||||
|
<div class="pageFormContent" layoutH="55">
|
||||||
|
<div class="unit">
|
||||||
|
<label>商品名称:</label>
|
||||||
|
<input type="text" name="title" value="{{ $good->title }}" size="79" class="required"/>
|
||||||
|
</div>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>商品描述:</label>
|
||||||
|
<textarea name="description" rows="3" cols="80">{{ $good->description }}</textarea>
|
||||||
|
</div>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>商品分类:</label>
|
||||||
|
<select name="category_id" class="combox">
|
||||||
|
@foreach ($categoies as $category)
|
||||||
|
<option value="{{ $category['id'] }}" @if($category['id'] == $good->category_id) selected @endif>{{ $category['title_show'] }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-8">
|
||||||
|
@ueditor($good->content, 'content',"goods{{ $good->id }}")
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<input id="testFileInput" type="file" name="image" uploaderOption="{
|
||||||
|
swf:'{{ admin_assets('uploadify/scripts/uploadify.swf') }}',
|
||||||
|
uploader:'{{ route('RuLong.storages.upload', ['name'=>'fileup']) }}',
|
||||||
|
formData:{_token: '{{ csrf_token() }}'},
|
||||||
|
fileObjName: 'fileup',
|
||||||
|
buttonText:'选择封面图片',
|
||||||
|
fileSizeLimit:'20MB',
|
||||||
|
auto:true,
|
||||||
|
multi:false,
|
||||||
|
onUploadSuccess: function(file, res) {
|
||||||
|
var d = JSON.parse(res)
|
||||||
|
$('.cover img').attr('src', d.data.url).show();
|
||||||
|
$('#storageID').val(d.data.id);
|
||||||
|
}}"/>
|
||||||
|
<div class="cover" style="border:1px solid #B8D0D6;min-height:200px">
|
||||||
|
@if ($good->storage->path)
|
||||||
|
<img src="{{$good->storage->path}}" style="width:100%" alt="">
|
||||||
|
@else
|
||||||
|
<img src="" style="display:none;width:100%" alt="">
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
<input type="hidden" id="storageID" name="storage_id" value="{{ $good->storage_id }}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<h3 class="contentTitle">商品规格</h3>
|
||||||
|
<div class="tabs">
|
||||||
|
|
||||||
|
<div class="tabsContent" style="height: 150px;">
|
||||||
|
<div>
|
||||||
|
<table class="list nowrap itemDetail" addButton="添加规格" width="100%">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th type="text" name="params[#index#][value]" size="30" fieldClass="required" fieldAttrs="{remote:'validate_remote.html', maxlength:40}">规格名称</th>
|
||||||
|
<th type="text" name="params[#index#][cost]" defaultVal="0" size="18" fieldClass="number">成本</th>
|
||||||
|
@if(Amind::user()->id==1)
|
||||||
|
<th type="text" name="params[#index#][repeat]" defaultVal="0" size="18" fieldClass="number">复消分润</th>
|
||||||
|
<th type="text" name="params[#index#][profit]" defaultVal="0" size="18" fieldClass="number">总裁分红</th>
|
||||||
|
@endif
|
||||||
|
<th type="text" name="params[#index#][original]" defaultVal="0" size="18" fieldClass="number">原价</th>
|
||||||
|
<th type="text" name="params[#index#][taobao]" defaultVal="0" size="18" fieldClass="number">某宝</th>
|
||||||
|
<th type="text" name="params[#index#][price]" defaultVal="0" size="18" fieldClass="number">售价</th>
|
||||||
|
<th type="text" name="params[#index#][score]" defaultVal="0" size="18" fieldClass="number">可抵扣积分</th>
|
||||||
|
<th type="text" name="params[#index#][stock]" defaultVal="0" size="15" fieldClass="digits">库存</th>
|
||||||
|
<th type="text" name="params[#index#][heavy]" defaultVal="0" size="15" fieldClass="number">单品重量(kg)</th>
|
||||||
|
<th type="del" width="60">操作</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@foreach($good->params()->where('status',1)->get() as $key => $params)
|
||||||
|
<tr class="unitBox">
|
||||||
|
<input type="hidden" name="params[{{ $key }}][id]" value="{{ $params->id }}">
|
||||||
|
<td><input type="text" name="params[{{ $key }}][value]" value="{{ $params->value }}" size="30" class="required" maxlength="40"></td>
|
||||||
|
<td><input type="text" name="params[{{ $key }}][cost]" value="{{ $params->cost }}" size="18" class="number textInput"></td>
|
||||||
|
@if(Amind::user()->id==1)
|
||||||
|
<td><input type="text" name="params[{{ $key }}][repeat]" value="{{ $params->repeat }}" size="18" class="number textInput"></td>
|
||||||
|
<td><input type="text" name="params[{{ $key }}][profit]" value="{{ $params->profit }}" size="18" class="number textInput"></td>
|
||||||
|
@endif
|
||||||
|
<td><input type="text" name="params[{{ $key }}][original]" value="{{ $params->original }}" size="18" class="number textInput"></td>
|
||||||
|
<td><input type="text" name="params[{{ $key }}][taobao]" value="{{ $params->taobao }}" size="18" class="number textInput"></td>
|
||||||
|
<td><input type="text" name="params[{{ $key }}][price]" value="{{ $params->price }}" size="18" class="number textInput"></td>
|
||||||
|
<td><input type="text" name="params[{{ $key }}][score]" value="{{ $params->score }}" size="18" class="number textInput"></td>
|
||||||
|
<td><input type="text" name="params[{{ $key }}][stock]" value="{{ $params->stock }}" size="15" class="digits textInput"></td>
|
||||||
|
<td><input type="text" name="params[{{ $key }}][heavy]" value="{{ $params->heavy }}" size="15" class="number textInput"></td>
|
||||||
|
<td><a href="javascript:void(0)" class="btnDel">删除</a></td>
|
||||||
|
</tr>
|
||||||
|
@endforeach
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="tabsFooter">
|
||||||
|
<div class="tabsFooterContent"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@csrf
|
||||||
|
<div class="formBar">
|
||||||
|
<ul>
|
||||||
|
@csrf
|
||||||
|
@method('PUT')
|
||||||
|
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
|
||||||
|
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
106
app/Admin/Views/goods/putOn.blade.php
Normal file
106
app/Admin/Views/goods/putOn.blade.php
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
<div class="pageContent">
|
||||||
|
<form method="post" action="{{ route('Admin.goods.putOn', $good) }}" class="pageForm required-validate" onsubmit="return validateCallback(this, navTabAjaxDone)">
|
||||||
|
<div class="pageFormContent" layoutH="55">
|
||||||
|
<div class="unit">
|
||||||
|
<label>商品名称:</label>
|
||||||
|
<input type="text" name="title" value="{{ $good->title }}" size="79" class="required"/>
|
||||||
|
</div>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>商品描述:</label>
|
||||||
|
<textarea name="description" rows="3" cols="80">{{ $good->description }}</textarea>
|
||||||
|
</div>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>商品分类:</label>
|
||||||
|
<select name="category_id" class="combox">
|
||||||
|
@foreach ($categoies as $category)
|
||||||
|
<option value="{{ $category['id'] }}" @if($category['id'] == $good->category_id) selected @endif>{{ $category['title_show'] }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-8">
|
||||||
|
@ueditor($good->content, 'content',"goods{{ $good->id }}")
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<input id="testFileInput" type="file" name="image" uploaderOption="{
|
||||||
|
swf:'{{ admin_assets('uploadify/scripts/uploadify.swf') }}',
|
||||||
|
uploader:'{{ route('RuLong.storages.upload', ['name'=>'fileup']) }}',
|
||||||
|
formData:{_token: '{{ csrf_token() }}'},
|
||||||
|
fileObjName: 'fileup',
|
||||||
|
buttonText:'选择封面图片',
|
||||||
|
fileSizeLimit:'20MB',
|
||||||
|
auto:true,
|
||||||
|
multi:false,
|
||||||
|
onUploadSuccess: function(file, res) {
|
||||||
|
var d = JSON.parse(res)
|
||||||
|
$('.cover img').attr('src', d.data.url).show();
|
||||||
|
$('#storageID').val(d.data.id);
|
||||||
|
}}"/>
|
||||||
|
<div class="cover" style="border:1px solid #B8D0D6;min-height:200px">
|
||||||
|
@if ($good->storage->path)
|
||||||
|
<img src="{{$good->storage->path}}" style="width:100%" alt="">
|
||||||
|
@else
|
||||||
|
<img src="" style="display:none;width:100%" alt="">
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
<input type="hidden" id="storageID" name="storage_id" value="{{ $good->storage_id }}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<h3 class="contentTitle">商品规格</h3>
|
||||||
|
<div class="tabs">
|
||||||
|
|
||||||
|
<div class="tabsContent" style="height: 150px;">
|
||||||
|
<div>
|
||||||
|
<table class="list nowrap itemDetail" addButton="添加规格" width="100%">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th type="text" name="params[#index#][value]" size="30" fieldClass="required" fieldAttrs="{remote:'validate_remote.html', maxlength:40}">规格名称</th>
|
||||||
|
<th type="text" name="params[#index#][cost]" defaultVal="0" size="18" fieldClass="number">成本</th>
|
||||||
|
<th type="text" name="params[#index#][original]" defaultVal="0" size="18" fieldClass="number">原价</th>
|
||||||
|
<th type="text" name="params[#index#][price]" defaultVal="0" size="18" fieldClass="number">售价</th>
|
||||||
|
<th type="text" name="params[#index#][score]" defaultVal="0" size="18" fieldClass="number">可抵扣积分</th>
|
||||||
|
<th type="text" name="params[#index#][stock]" defaultVal="0" size="15" fieldClass="digits">库存</th>
|
||||||
|
<th type="text" name="params[#index#][heavy]" defaultVal="0" size="15" fieldClass="number">单品重量(kg)</th>
|
||||||
|
<th type="del" width="60">操作</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@foreach($good->params()->get() as $key => $params)
|
||||||
|
<tr class="unitBox">
|
||||||
|
<input type="hidden" name="params[{{ $key }}][id]" value="{{ $params->id }}">
|
||||||
|
<input type="hidden" name="params[{{ $key }}][status]" value="1">
|
||||||
|
<td><input type="text" name="params[{{ $key }}][value]" value="{{ $params->value }}" size="30" class="required" maxlength="40"></td>
|
||||||
|
<td><input type="text" name="params[{{ $key }}][cost]" value="{{ $params->cost }}" size="18" class="number textInput"></td>
|
||||||
|
<td><input type="text" name="params[{{ $key }}][original]" value="{{ $params->original }}" size="18" class="number textInput"></td>
|
||||||
|
<td><input type="text" name="params[{{ $key }}][price]" value="{{ $params->price }}" size="18" class="number textInput"></td>
|
||||||
|
<td><input type="text" name="params[{{ $key }}][score]" value="{{ $params->score }}" size="18" class="number textInput"></td>
|
||||||
|
<td><input type="text" name="params[{{ $key }}][stock]" value="{{ $params->stock }}" size="15" class="digits textInput"></td>
|
||||||
|
<td><input type="text" name="params[{{ $key }}][heavy]" value="{{ $params->heavy }}" size="15" class="number textInput"></td>
|
||||||
|
<td><a href="javascript:void(0)" class="btnDel">删除</a></td>
|
||||||
|
</tr>
|
||||||
|
@endforeach
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="tabsFooter">
|
||||||
|
<div class="tabsFooterContent"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@csrf
|
||||||
|
<div class="formBar">
|
||||||
|
<ul>
|
||||||
|
@csrf
|
||||||
|
@method('PUT')
|
||||||
|
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">上架</button></div></div></li>
|
||||||
|
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
74
app/Admin/Views/goods/recycle.blade.php
Normal file
74
app/Admin/Views/goods/recycle.blade.php
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
<div class="pageHeader">
|
||||||
|
<form rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="post">
|
||||||
|
<div class="searchBar">
|
||||||
|
<table class="searchContent">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
商品名称:
|
||||||
|
<input type="text" name="title" value="{{ Request::input('title') }}"/>
|
||||||
|
</td>
|
||||||
|
<td><div class="buttonActive"><div class="buttonContent"><button type="submit">检索结果</button></div></div></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pageContent">
|
||||||
|
<div class="panelBar">
|
||||||
|
<ul class="toolBar">
|
||||||
|
<li><a class="delete" href="{{ route('Admin.goods.clean') }}" target="ajaxDelete" title="清空回收站?"><span>清空回收站</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<table class="table" width="100%" layoutH="112">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th width="50" orderField="id" @if (Request::input('orderField') == 'id') class="{{ Request::input('orderDirection') }}" @endif>编号</th>
|
||||||
|
<th>商品名称</th>
|
||||||
|
<th width="100">商户名称</th>
|
||||||
|
<th width="80">单价</th>
|
||||||
|
<th width="80">库存</th>
|
||||||
|
<th width="80">销量</th>
|
||||||
|
<th width="140" orderField="created_at" @if (Request::input('orderField') == 'created_at') class="{{ Request::input('orderDirection') }}" @endif>创建时间</th>
|
||||||
|
<th width="80"></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@foreach ($goods as $good)
|
||||||
|
<tr>
|
||||||
|
<td>{{ $good->id }}</td>
|
||||||
|
<td>{{ $good->title }}</td>
|
||||||
|
<td>{{ $good->seller->name }}</td>
|
||||||
|
<td>{{ $good->price }}</td>
|
||||||
|
<td>{{ $good->stock }}</td>
|
||||||
|
<td>{{ $good->sales }}</td>
|
||||||
|
<td>{{ $good->created_at }}</td>
|
||||||
|
<td>
|
||||||
|
<a title="还原商品?" target="ajaxTodo" href="{{ route('Admin.goods.resume', $good) }}" class="btnSelect">还原</a>
|
||||||
|
<a title="删除商品?" target="ajaxDelete" href="{{ route('Admin.goods.delete', $good) }}" class="btnDel">彻底删除</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
@endforeach
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<div class="panelBar">
|
||||||
|
<form id="pagerForm" method="post" action="#rel#">
|
||||||
|
<input type="hidden" name="page" value="{{ $goods->currentPage() }}" />
|
||||||
|
<input type="hidden" name="numPerPage" value="{{ $goods->perPage() }}" />
|
||||||
|
<input type="hidden" name="orderField" value="{{ Request::input('orderField') }}" />
|
||||||
|
<input type="hidden" name="orderDirection" value="{{ Request::input('orderDirection') }}" />
|
||||||
|
</form>
|
||||||
|
<div class="pages">
|
||||||
|
<span>显示</span>
|
||||||
|
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
|
||||||
|
<option @if ($goods->perPage() == 30) selected @endif value="30">30</option>
|
||||||
|
<option @if ($goods->perPage() == 100) selected @endif value="100">100</option>
|
||||||
|
<option @if ($goods->perPage() == 200) selected @endif value="200">200</option>
|
||||||
|
</select>
|
||||||
|
<span>条,共 {{ $goods->total() }} 条</span>
|
||||||
|
</div>
|
||||||
|
<div class="pagination" targetType="navTab" totalCount="{{ $goods->total() }}" numPerPage="{{ $goods->perPage() }}" pageNumShown="10" currentPage="{{ $goods->currentPage() }}"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
90
app/Admin/Views/goods/setting.blade.php
Normal file
90
app/Admin/Views/goods/setting.blade.php
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
<div class="pageContent">
|
||||||
|
<form method="post" action="{{ route('Admin.goods.setting', $good) }}" class="pageForm required-validate" onsubmit="return validateCallback(this, dialogAjaxDone)">
|
||||||
|
<div class="pageFormContent" layoutH="55">
|
||||||
|
<div class="unit">
|
||||||
|
<label style="width: 150px">商品名称:</label>
|
||||||
|
<input type="text" value="{{ $good->title }}" size="50" readonly/>
|
||||||
|
</div>
|
||||||
|
<div class="unit">
|
||||||
|
<label style="width: 150px">推荐到[首页全积分购]:</label>
|
||||||
|
<select name="is_recommend" class="combox">
|
||||||
|
<option value="0" @if($good->is_recommend == 0) selected @endif>否</option>
|
||||||
|
<option value="1" @if($good->is_recommend == 1) selected @endif>是</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="unit">
|
||||||
|
<label style="width: 150px">推荐到[首页全现金购]:</label>
|
||||||
|
<select name="is_hot_sell" class="combox">
|
||||||
|
<option value="0" @if($good->is_hot_sell == 0) selected @endif>否</option>
|
||||||
|
<option value="1" @if($good->is_hot_sell == 1) selected @endif>是</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="unit">
|
||||||
|
<label style="width: 150px">推荐到[首页积分+现金]:</label>
|
||||||
|
<select name="is_hot_changed" class="combox">
|
||||||
|
<option value="0" @if($good->is_hot_changed == 0) selected @endif>否</option>
|
||||||
|
<option value="1" @if($good->is_hot_changed == 1) selected @endif>是</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="unit">
|
||||||
|
<label style="width: 150px">推荐到[首页99套餐]:</label>
|
||||||
|
<select name="is_seller_package" class="combox" id="banner_setting">
|
||||||
|
<option value="0" @if($good->is_seller_package == 0) selected @endif>否</option>
|
||||||
|
<option value="1" @if($good->is_seller_package == 1) selected @endif>是</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="unit" id="banner_cover" @if($good->is_seller_package == 0) style="display: none" @endif>
|
||||||
|
<label style="width: 150px">[首页99套餐推荐图]:</label>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<input id="testFileInput" type="file" name="image" uploaderOption="{
|
||||||
|
swf:'{{ admin_assets('uploadify/scripts/uploadify.swf') }}',
|
||||||
|
uploader:'{{ route('RuLong.storages.upload', ['name'=>'fileup']) }}',
|
||||||
|
formData:{_token: '{{ csrf_token() }}'},
|
||||||
|
fileObjName: 'fileup',
|
||||||
|
buttonText:'选择封面图片',
|
||||||
|
fileSizeLimit:'20MB',
|
||||||
|
auto:true,
|
||||||
|
multi:false,
|
||||||
|
onUploadSuccess: function(file, res) {
|
||||||
|
var d = JSON.parse(res)
|
||||||
|
$('.cover img').attr('src', d.data.url).show();
|
||||||
|
$('#storageID').val(d.data.id);
|
||||||
|
}}"/>
|
||||||
|
<div class="cover" style="border:1px solid #B8D0D6;min-width:200px;min-height:100px">
|
||||||
|
@if ($good->banner->path)
|
||||||
|
<img src="{{$good->banner->path}}" style="width:200px;height: 100px" alt="">
|
||||||
|
@else
|
||||||
|
<img src="" style="display:none;width:200px;height: 100px" alt="">
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
<input type="hidden" id="storageID" name="banner_id" value="{{ $good->banner_id }}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="unit">
|
||||||
|
<label style="width: 150px">推荐位排序:</label>
|
||||||
|
<input type="text" value="{{ $good->sort }}" size="40" name="sort"/>
|
||||||
|
<span style="float:right;color: red">数字越大,手机端越靠前显示</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@csrf
|
||||||
|
<div class="formBar">
|
||||||
|
<ul>
|
||||||
|
@csrf
|
||||||
|
@method('PUT')
|
||||||
|
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
|
||||||
|
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript">
|
||||||
|
$('#banner_setting').change(function(){
|
||||||
|
var banner_setting=$(this).val();
|
||||||
|
if (banner_setting == 1) {
|
||||||
|
$('#banner_cover').show();
|
||||||
|
}else{
|
||||||
|
$('#banner_cover').hide();
|
||||||
|
}
|
||||||
|
})
|
||||||
|
</script>
|
||||||
91
app/Admin/Views/home/dashboard.blade.php
Normal file
91
app/Admin/Views/home/dashboard.blade.php
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
@extends('RuLong::layouts.app')
|
||||||
|
|
||||||
|
@section('content')
|
||||||
|
<h1 class="m-b">Dashboard</h1>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-4 m-b">
|
||||||
|
<div class="ibox">
|
||||||
|
<div class="ibox-content">
|
||||||
|
<table class="table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>参数名称</th>
|
||||||
|
<th>参数值</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>PHP 版本</td>
|
||||||
|
<td>PHP/{{ phpversion() }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Laravel 版本</td>
|
||||||
|
<td>{{ app()->version() }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>CGI 模式</td>
|
||||||
|
<td>{{ php_sapi_name() }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Web Server</td>
|
||||||
|
<td>{{ array_get($_SERVER, 'SERVER_SOFTWARE') }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Cache Driver</td>
|
||||||
|
<td>{{ config('cache.default') }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Session Driver</td>
|
||||||
|
<td>{{ config('session.driver') }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Queue Driver</td>
|
||||||
|
<td>{{ config('queue.driver') }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Timezone</td>
|
||||||
|
<td>{{ config('app.timezone') }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Locale</td>
|
||||||
|
<td>{{ config('app.locale') }}</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 m-b">
|
||||||
|
<div class="ibox">
|
||||||
|
<div class="ibox-content">
|
||||||
|
<table class="table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>参数名称</th>
|
||||||
|
<th>参数值</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>Panel版本</td>
|
||||||
|
<td><img src="https://poser.pugx.org/rulong/laravel-panel/v/stable" alt=""></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>模板库地址</td>
|
||||||
|
<td><a href="http://tpl.cjango.com/" target="_blank">模板库</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Laravel文档</td>
|
||||||
|
<td><a href="https://laravel-china.org/docs/laravel/5.6" target="_blank">Laravel文档</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>PHP设计模式</td>
|
||||||
|
<td><a href="https://laravel-china.org/docs/php-design-patterns/2018" target="_blank">PHP设计模式</a></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endsection
|
||||||
132
app/Admin/Views/lesson/create.blade.php
Normal file
132
app/Admin/Views/lesson/create.blade.php
Normal file
@@ -0,0 +1,132 @@
|
|||||||
|
<div class="pageContent">
|
||||||
|
<form method="post" action="{{ route('Admin.lessons.store') }}" class="pageForm required-validate" onsubmit="return validateCallback(this, navTabAjaxDone)">
|
||||||
|
<div class="pageFormContent" layoutH="55">
|
||||||
|
<div class="unit">
|
||||||
|
<label>课程名称:</label>
|
||||||
|
<input type="text" name="title" value="" size="79" class="required"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>章介数:</label>
|
||||||
|
<input type="text" name="chapter" value="" size="79" class="required"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>价格:</label>
|
||||||
|
<input type="text" name="price" value="" size="79" class="required number"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>库存:</label>
|
||||||
|
<input type="text" name="stock" value="" size="79" class="required number"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>适合基础:</label>
|
||||||
|
<input type="text" name="crowd" value="" size="79" class="required"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>适合年龄:</label>
|
||||||
|
<input type="text" name="crowd_age" value="" size="79" class="required "/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>上课人数:</label>
|
||||||
|
<input type="text" name="maximum" value="" size="79" class="required number"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>状态:</label>
|
||||||
|
<select name="status" >
|
||||||
|
<option value="1">正常</option>
|
||||||
|
<option value="2">禁用</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>所属机构:</label>
|
||||||
|
<select name="seller_id" >
|
||||||
|
<option value="">请选择机构</option>
|
||||||
|
@foreach ($organs as $organ)
|
||||||
|
<option value="{{ $organ->id }}">{{ $organ->name }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>分类:</label>
|
||||||
|
<select name="category_id" class="combox">
|
||||||
|
@foreach ($categoies as $category)
|
||||||
|
<option value="{{ $category['id'] }}" >{{ $category['title_show'] }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>课程开始时间:</label>
|
||||||
|
<input type="text" name="start_at" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="00:00:00" readonly="true">
|
||||||
|
<a class="inputDateButton" href="javascript:;">选择</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>课程结束时间:</label>
|
||||||
|
<input type="text" name="end_at" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
|
||||||
|
<a class="inputDateButton" href="javascript:;">选择</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>简介:</label>
|
||||||
|
<textarea name="description" rows="3" cols="80"></textarea>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-8">
|
||||||
|
@ueditor('', 'content')
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<input id="testFileInput" type="file" name="image" uploaderOption="{
|
||||||
|
swf:'{{ admin_assets('uploadify/scripts/uploadify.swf') }}',
|
||||||
|
uploader:'{{ route('RuLong.storages.upload', ['name'=>'fileup']) }}',
|
||||||
|
formData:{_token: '{{ csrf_token() }}'},
|
||||||
|
fileObjName: 'fileup',
|
||||||
|
buttonText:'选择封面图片',
|
||||||
|
fileSizeLimit:'20MB',
|
||||||
|
auto:true,
|
||||||
|
multi:false,
|
||||||
|
onUploadSuccess: function(file, res) {
|
||||||
|
var d = JSON.parse(res)
|
||||||
|
$('.cover img').attr('src', d.data.url).show();
|
||||||
|
$('#storageID').val(d.data.id);
|
||||||
|
}}"/>
|
||||||
|
<div class="cover" style="border:1px solid #B8D0D6;min-height:200px">
|
||||||
|
<img src="" style="display:none;width:100%" alt="">
|
||||||
|
</div>
|
||||||
|
<input type="hidden" id="storageID" name="storage_id" value="">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@csrf
|
||||||
|
<div class="formBar">
|
||||||
|
<ul>
|
||||||
|
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
|
||||||
|
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
136
app/Admin/Views/lesson/edit.blade.php
Normal file
136
app/Admin/Views/lesson/edit.blade.php
Normal file
@@ -0,0 +1,136 @@
|
|||||||
|
<div class="pageContent">
|
||||||
|
<form method="post" action="{{ route('Admin.lessons.update',$lesson) }}" class="pageForm required-validate" onsubmit="return validateCallback(this, navTabAjaxDone)">
|
||||||
|
<div class="pageFormContent" layoutH="55">
|
||||||
|
<div class="unit">
|
||||||
|
<label>课程名称:</label>
|
||||||
|
<input type="text" name="title" value="{{ $lesson->title }}" size="79" class="required"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>章介数:</label>
|
||||||
|
<input type="text" name="chapter" value="{{ $lesson->chapter }}" size="79" class="required"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>价格:</label>
|
||||||
|
<input type="text" name="price" value="{{ $lesson->price }}" size="79" class="required number"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>库存:</label>
|
||||||
|
<input type="text" name="stock" value="{{ $lesson->stock }}" size="79" class="required number"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>适合基础:</label>
|
||||||
|
<input type="text" name="crowd" value="{{ $lesson->crowd }}" size="79" class="required "/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>适合年龄:</label>
|
||||||
|
<input type="text" name="crowd_age" value="{{ $lesson->crowd_age }}" size="79" class="required "/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>上课人数:</label>
|
||||||
|
<input type="text" name="maximum" value="{{ $lesson->maximum }}" size="79" class="required number"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>状态:</label>
|
||||||
|
<select name="status" >
|
||||||
|
<option value="1" @if($lesson->status==1) selected @endif >正常</option>
|
||||||
|
<option value="0" @if($lesson->status===0) selected @endif >禁用</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>所属机构:</label>
|
||||||
|
<select name="seller_id" >
|
||||||
|
<option value="">请选择机构</option>
|
||||||
|
@foreach ($organs as $organ)
|
||||||
|
<option value="{{ $organ->id }}" @if($lesson->seller_id==$organ->id) selected @endif >{{ $organ->name }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>分类:</label>
|
||||||
|
<select name="category_id" class="combox">
|
||||||
|
@foreach ($categoies as $category)
|
||||||
|
<option value="{{ $category['id'] }}" @if($lesson->category_id==$category['id']) selected @endif >{{ $category['title_show'] }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>课程开始时间:</label>
|
||||||
|
<input type="text" name="start_at" class="date textInput readonly valid" value="{{ $lesson->start_at }}" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
|
||||||
|
<a class="inputDateButton" href="javascript:;">选择</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>课程结束时间:</label>
|
||||||
|
<input type="text" name="end_at" value="{{ $lesson->end_at }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
|
||||||
|
<a class="inputDateButton" href="javascript:;">选择</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>简介:</label>
|
||||||
|
<textarea name="description" rows="3" cols="80"> {{ $lesson->description }} </textarea>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-8">
|
||||||
|
@ueditor($lesson->content, 'content')
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<input id="testFileInput" type="file" name="image" uploaderOption="{
|
||||||
|
swf:'{{ admin_assets('uploadify/scripts/uploadify.swf') }}',
|
||||||
|
uploader:'{{ route('RuLong.storages.upload', ['name'=>'fileup']) }}',
|
||||||
|
formData:{_token: '{{ csrf_token() }}'},
|
||||||
|
fileObjName: 'fileup',
|
||||||
|
buttonText:'选择封面图片',
|
||||||
|
fileSizeLimit:'20MB',
|
||||||
|
auto:true,
|
||||||
|
multi:false,
|
||||||
|
onUploadSuccess: function(file, res) {
|
||||||
|
var d = JSON.parse(res)
|
||||||
|
$('.cover img').attr('src', d.data.url).show();
|
||||||
|
$('#storageID').val(d.data.id);
|
||||||
|
}}"/>
|
||||||
|
<div class="cover" style="border:1px solid #B8D0D6;min-height:200px">
|
||||||
|
@if ($lesson->storage->path)
|
||||||
|
<img src="{{$lesson->storage->path}}" style="width:100%" alt="">
|
||||||
|
@else
|
||||||
|
<img src="" style="display:none;width:100%" alt="">
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
<input type="hidden" id="storageID" name="storage_id" value="{{ $lesson->storage_id }}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@csrf
|
||||||
|
@method('PUT')
|
||||||
|
<div class="formBar">
|
||||||
|
<ul>
|
||||||
|
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
|
||||||
|
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
99
app/Admin/Views/lesson/index.blade.php
Normal file
99
app/Admin/Views/lesson/index.blade.php
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
<div class="pageHeader">
|
||||||
|
<form id="searchForm_{{ uniqid() }}" rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="post">
|
||||||
|
<div class="searchBar">
|
||||||
|
<table class="searchContent">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
课程名称:
|
||||||
|
<input type="text" name="title" value="{{ Request::input('title') }}"/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
起:
|
||||||
|
<input type="text" name="start" value="{{ Request::get('start') }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
止:
|
||||||
|
<input type="text" name="end" value="{{ Request::get('end') }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
|
||||||
|
</td>
|
||||||
|
<td><div class="buttonActive"><div class="buttonContent"><button type="submit">检索结果</button></div></div></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pageContent">
|
||||||
|
<div class="panelBar">
|
||||||
|
<ul class="toolBar">
|
||||||
|
<li><a class="add" href="{{ route('Admin.lessons.create') }}" mask="true" target="navTab" rel="navTab_{{ time() }}" title="添加课程"><span>添加课程</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<table class="table" width="100%" layoutH="112">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th width="50">课程编号</th>
|
||||||
|
<th width="140">课程名称</th>
|
||||||
|
<th width="140">所属机构</th>
|
||||||
|
<th width="140">所属地域</th>
|
||||||
|
<th width="140">分类</th>
|
||||||
|
<th width="80">章节数</th>
|
||||||
|
<th width="80">价格</th>
|
||||||
|
<th width="80">状态</th>
|
||||||
|
<th width="80">库存</th>
|
||||||
|
<th width="80">报名人数</th>
|
||||||
|
<th width="150">适合基础</th>
|
||||||
|
<th width="80">适合年龄</th>
|
||||||
|
<th width="80">上课人数</th>
|
||||||
|
<th width="80" orderField="start_at" @if (Request::input('orderField') == 'start_at') class="{{ Request::input('orderDirection') }}" @endif>开始时间</th>
|
||||||
|
<th width="150" orderField="end_at" @if (Request::input('orderField') == 'end_at') class="{{ Request::input('orderDirection') }}" @endif>结束时间</th>
|
||||||
|
<th width="100" orderField="created_at" @if (Request::input('orderField') == 'created_at') class="{{ Request::input('orderDirection') }}" @endif>创建时间</th>
|
||||||
|
<th width="200"></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@foreach ($lists as $lesson)
|
||||||
|
<tr target="sid" rel="{{ $lesson->id }}">
|
||||||
|
<td>{{ $lesson->id }}</td>
|
||||||
|
<td>{{ $lesson->title }}</td>
|
||||||
|
<td>{{ $lesson->organ->name }}</td>
|
||||||
|
<td>{{ $lesson->organ->Area->info??'' }}</td>
|
||||||
|
<td>{{ $lesson->category->title }}</td>
|
||||||
|
<td>{{ $lesson->chapter }}</td>
|
||||||
|
<td>{{ $lesson->price }}</td>
|
||||||
|
<td>{!! $lesson->status_text !!}</td>
|
||||||
|
<td>{{ $lesson->stock }}</td>
|
||||||
|
<td> <a href="{{ route('Admin.lessons.logs',$lesson) }}" mask="true" target="navTab" rel="navTab_{{ time() }}" ><span>{{ $lesson->logs()->where('status',1)->count() }}</span></a></td>
|
||||||
|
<td>{{ $lesson->crowd }}</td>
|
||||||
|
<td>{{ $lesson->crowd_age }}</td>
|
||||||
|
<td>{{ $lesson->maximum }}</td>
|
||||||
|
<td>{{ $lesson->start_at }}</td>
|
||||||
|
<td>{{ $lesson->end_at }}</td>
|
||||||
|
<td>{{ $lesson->created_at }}</td>
|
||||||
|
<td>
|
||||||
|
<a title="编辑课程" target="navTab" rel="listshow" href="{{ route('Admin.lessons.edit', $lesson) }}">编辑</a>
|
||||||
|
<a title="请确认要删除课程吗?" target="ajaxDelete" href="{{ route('Admin.lessons.delete', $lesson) }}">删除</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
@endforeach
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<div class="panelBar">
|
||||||
|
<form id="pagerForm" method="post" action="#rel#">
|
||||||
|
<input type="hidden" name="page" value="{{ $lists->currentPage() }}" />
|
||||||
|
<input type="hidden" name="numPerPage" value="{{ $lists->perPage() }}" />
|
||||||
|
<input type="hidden" name="orderField" value="{{ Request::input('orderField') }}" />
|
||||||
|
<input type="hidden" name="orderDirection" value="{{ Request::input('orderDirection') }}" />
|
||||||
|
</form>
|
||||||
|
<div class="pages">
|
||||||
|
<span>显示</span>
|
||||||
|
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
|
||||||
|
<option @if ($lists->perPage() == 30) selected @endif value="30">30</option>
|
||||||
|
<option @if ($lists->perPage() == 100) selected @endif value="100">100</option>
|
||||||
|
<option @if ($lists->perPage() == 200) selected @endif value="200">200</option>
|
||||||
|
</select>
|
||||||
|
<span>条,共 {{ $lists->total() }} 条</span>
|
||||||
|
</div>
|
||||||
|
<div class="pagination" targetType="navTab" totalCount="{{ $lists->total() }}" numPerPage="{{ $lists->perPage() }}" pageNumShown="10" currentPage="{{ $lists->currentPage() }}"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
48
app/Admin/Views/lesson/logs.blade.php
Normal file
48
app/Admin/Views/lesson/logs.blade.php
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
<div class="pageContent">
|
||||||
|
<table class="table" width="100%" layoutH="85">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th width="150">用户</th>
|
||||||
|
<th width="150">宝宝姓名</th>
|
||||||
|
<th width="150">宝宝年龄</th>
|
||||||
|
<th width="150">手机号</th>
|
||||||
|
<th width="150">课程</th>
|
||||||
|
<th width="150">报名时间</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@foreach ($logs as $log)
|
||||||
|
<tr>
|
||||||
|
<td>{{ $log->user->info->nickname }}</td>
|
||||||
|
<td>{{ $log->name }}</td>
|
||||||
|
<td>{{ $log->age }}</td>
|
||||||
|
<td>{{ $log->mobile }}</td>
|
||||||
|
<td>{{ $log->lesson->title }}</td>
|
||||||
|
<td>{{ $log->created_at }}</td>
|
||||||
|
</tr>
|
||||||
|
@endforeach
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<div class="panelBar">
|
||||||
|
<form id="pagerForm" method="post" action="{{ url()->current() }}">
|
||||||
|
<input type="hidden" name="page" value="{{ $logs->currentPage() }}" />
|
||||||
|
<input type="hidden" name="numPerPage" value="{{ $logs->perPage() }}" />
|
||||||
|
<input type="hidden" name="orderField" value="{{ Request::input('orderField') }}" />
|
||||||
|
<input type="hidden" name="orderDirection" value="{{ Request::input('orderDirection') }}" />
|
||||||
|
</form>
|
||||||
|
<div class="pages">
|
||||||
|
<span>显示</span>
|
||||||
|
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
|
||||||
|
<option @if ($logs->perPage() == 30) selected @endif value="30">30</option>
|
||||||
|
<option @if ($logs->perPage() == 100) selected @endif value="100">100</option>
|
||||||
|
<option @if ($logs->perPage() == 200) selected @endif value="200">200</option>
|
||||||
|
</select>
|
||||||
|
<span>条,共 {{ $logs->total() }} 条</span>
|
||||||
|
</div>
|
||||||
|
<div class="pagination" targetType="navTab" totalCount="{{ $logs->total() }}" numPerPage="{{ $logs->perPage() }}" pageNumShown="10" currentPage="{{ $logs->currentPage() }}"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript">
|
||||||
|
//点击导出
|
||||||
|
</script>
|
||||||
62
app/Admin/Views/lottery/addgifts.blade.php
Normal file
62
app/Admin/Views/lottery/addgifts.blade.php
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
<div class="pageContent">
|
||||||
|
<form method="post" action="{{ route('Admin.lottery.addgifts',$lottery) }}" class="pageForm required-validate" onsubmit="return validateCallback(this, dialogAjaxDone)">
|
||||||
|
<div class="pageFormContent" layoutH="55">
|
||||||
|
|
||||||
|
<div class="unit">
|
||||||
|
<label>奖项:</label>
|
||||||
|
<select name="level" >
|
||||||
|
<option value=""> 请选择奖项 </option>
|
||||||
|
@foreach($levels as $key=>$level)
|
||||||
|
@if(!in_array($key,$hasLevels))
|
||||||
|
<option value="{{ $key }}">{{ $level }}</option>
|
||||||
|
@endif
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>奖品:</label>
|
||||||
|
<select name="item_id" >
|
||||||
|
<option value=""> 请选择奖品 </option>
|
||||||
|
@foreach($params as $gift)
|
||||||
|
<option value="{{ $gift->id }}">{{ $gift->getTitle() }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>类型:</label>
|
||||||
|
<select name="type" >
|
||||||
|
<option value="1"> 正常奖品 </option>
|
||||||
|
<option value="0"> 谢谢参与 </option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>概率:</label>
|
||||||
|
<input type="text" name="chance" value="" size="35" class="required"/>
|
||||||
|
<span class="info"> 数字如:4</sp an>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>数量:</label>
|
||||||
|
<input type="text" name="number" value="1" size="35" class="required"/>
|
||||||
|
<span class="info"> 谢谢参与不减少这个数据</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
@csrf
|
||||||
|
<input type="hidden" name="item_type" value="{{ $item_type }}">
|
||||||
|
<input type="hidden" name="lottery_id" value="{{ $lottery->id }}">
|
||||||
|
<div class="formBar">
|
||||||
|
<ul>
|
||||||
|
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
|
||||||
|
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
43
app/Admin/Views/lottery/create.blade.php
Normal file
43
app/Admin/Views/lottery/create.blade.php
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
<div class="pageContent">
|
||||||
|
<form method="post" action="{{ route('Admin.lottery.store') }}" class="pageForm required-validate" onsubmit="return validateCallback(this, dialogAjaxDone)">
|
||||||
|
<div class="pageFormContent" layoutH="55">
|
||||||
|
<div class="unit">
|
||||||
|
<label>名称:</label>
|
||||||
|
<input type="text" name="title" value="" size="35" class="required"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>状态:</label>
|
||||||
|
<select name="status" >
|
||||||
|
<option value="1">正常</option>
|
||||||
|
<option value="2">关闭</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>开始时间:</label>
|
||||||
|
<input type="text" name="start_at" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="00:00:00" readonly="true">
|
||||||
|
<a class="inputDateButton" href="javascript:;">选择</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>结束时间:</label>
|
||||||
|
<input type="text" name="end_at" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
|
||||||
|
<a class="inputDateButton" href="javascript:;">选择</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
@csrf
|
||||||
|
<div class="formBar">
|
||||||
|
<ul>
|
||||||
|
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
|
||||||
|
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
44
app/Admin/Views/lottery/edit.blade.php
Normal file
44
app/Admin/Views/lottery/edit.blade.php
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
<div class="pageContent">
|
||||||
|
<form method="post" action="{{ route('Admin.lottery.update',$lottery) }}" class="pageForm required-validate" onsubmit="return validateCallback(this, dialogAjaxDone)">
|
||||||
|
<div class="pageFormContent" layoutH="55">
|
||||||
|
<div class="unit">
|
||||||
|
<label>名称:</label>
|
||||||
|
<input type="text" name="title" value="{{ $lottery->title }}" size="35" class="required"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>状态:</label>
|
||||||
|
<select name="status" >
|
||||||
|
<option value="1">正常</option>
|
||||||
|
<option value="2">关闭</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>开始时间:</label>
|
||||||
|
<input type="text" name="start_at" class="date textInput readonly valid" value="{{ $lottery->start_at }}" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="00:00:00" readonly="true">
|
||||||
|
<a class="inputDateButton" href="javascript:;">选择</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>结束时间:</label>
|
||||||
|
<input type="text" name="end_at" class="date textInput readonly valid" value="{{ $lottery->end_at }}" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
|
||||||
|
<a class="inputDateButton" href="javascript:;">选择</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
@csrf
|
||||||
|
@method('PUT')
|
||||||
|
<div class="formBar">
|
||||||
|
<ul>
|
||||||
|
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
|
||||||
|
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
58
app/Admin/Views/lottery/editgifts.blade.php
Normal file
58
app/Admin/Views/lottery/editgifts.blade.php
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
<div class="pageContent">
|
||||||
|
<form method="post" action="{{ route('Admin.lottery.editgifts',$gift) }}" class="pageForm required-validate" onsubmit="return validateCallback(this, dialogAjaxDone)">
|
||||||
|
<div class="pageFormContent" layoutH="55">
|
||||||
|
|
||||||
|
<div class="unit">
|
||||||
|
<label>奖项:</label>
|
||||||
|
<select name="level" >
|
||||||
|
@foreach($levels as $key=>$level)
|
||||||
|
<option value="{{ $key }}" @if($key==$gift->level) selected @endif >{{ $level }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>奖品:</label>
|
||||||
|
<select name="item_id" >
|
||||||
|
<option value=""> 请选择奖品 </option>
|
||||||
|
@foreach($params as $param)
|
||||||
|
<option value="{{ $param->id }}" @if($param->id==$gift->item_id) selected @endif >{{ $param->getTitle() }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider" style="display: none"></div>
|
||||||
|
<div class="unit" style="display: none">
|
||||||
|
<label>类型:</label>
|
||||||
|
<select name="type" >
|
||||||
|
<option value="1" @if(1==$gift->type) selected @endif > 正常奖品 </option>
|
||||||
|
<option value="0" @if(0===$gift->type) selected @endif > 谢谢参与 </option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>概率:</label>
|
||||||
|
<input type="text" name="chance" value="{{ $gift->chance }}" size="35" class="required"/>
|
||||||
|
<span class="info">数字如:4</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>数量:</label>
|
||||||
|
<input type="text" name="number" value="{{ $gift->number }}" size="35" class="required"/>
|
||||||
|
<span class="info"> 谢谢参与不减少这个数据</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@csrf
|
||||||
|
@method('PUT')
|
||||||
|
<input type="hidden" name="item_type" value="App\Models\GoodsParams">
|
||||||
|
<div class="formBar">
|
||||||
|
<ul>
|
||||||
|
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
|
||||||
|
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
76
app/Admin/Views/lottery/gifts.blade.php
Normal file
76
app/Admin/Views/lottery/gifts.blade.php
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
<div class="pageHeader">
|
||||||
|
<form rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="get">
|
||||||
|
<div class="searchBar">
|
||||||
|
<table class="searchContent">
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pageContent">
|
||||||
|
<div class="panelBar">
|
||||||
|
<ul class="toolBar">
|
||||||
|
<li>
|
||||||
|
<a class="add" href="{{ route('Admin.lottery.addgifts',['lottery'=>$lottery,'type'=>'goods']) }}" mask="true" width="600" height="400" target="dialog" rel="dialog_{{ time() }}" title="添加奖品" ><span>添加奖品(商品)</span></a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="add" href="{{ route('Admin.lottery.addgifts',['lottery'=>$lottery,'type'=>'coupon']) }}" mask="true" width="600" height="400" target="dialog" rel="dialog_{{ time() }}" title="添加奖品" ><span>添加奖品(优惠券)</span></a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="add" href="{{ route('Admin.lottery.addgifts',['lottery'=>$lottery,'type'=>'activity']) }}" mask="true" width="600" height="400" target="dialog" rel="dialog_{{ time() }}" title="添加奖品" ><span>添加奖品(服务)</span></a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<table class="table" width="100%" layoutH="112">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th width="50">编号</th>
|
||||||
|
<th width="">奖品</th>
|
||||||
|
<th width="">奖项</th>
|
||||||
|
<th width="">概率</th>
|
||||||
|
<th width="">类型</th>
|
||||||
|
<th width="">所属</th>
|
||||||
|
<th width="">数量</th>
|
||||||
|
<th width="120" orderField="created_at" @if (Request::input('orderField') == 'created_at') class="{{ Request::input('orderDirection') }}" @endif>创建时间</th>
|
||||||
|
<th width="200"></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@foreach ($lists as $gift)
|
||||||
|
<tr>
|
||||||
|
<td>{{ $gift->id }}</td>
|
||||||
|
<td>{{ $gift->getTitle() }}</td>
|
||||||
|
<td>{{ $gift->level_text }}</td>
|
||||||
|
<td>{{ $gift->chance }}({{ $gift->chance_text }}%)</td>
|
||||||
|
<td>{{ $gift->type_text }}</td>
|
||||||
|
<td>{{ $gift->class }}</td>
|
||||||
|
<td>{{ $gift->number }}</td>
|
||||||
|
<td>{{ $gift->created_at }}</td>
|
||||||
|
<td>
|
||||||
|
<a title="编辑" target="dialog" href="{{ route('Admin.lottery.editgifts', $gift) }}" width="650" height="390" rel="dialog_{{ time() }}" >编辑</a>
|
||||||
|
<a title="请确认要删除吗?" target="ajaxDelete" href="{{ route('Admin.lottery.delgifts', $gift) }}">删除</a>
|
||||||
|
</tr>
|
||||||
|
@endforeach
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<div class="panelBar">
|
||||||
|
<form id="pagerForm" method="post" action="#rel#">
|
||||||
|
<input type="hidden" name="page" value="{{ $lists->currentPage() }}" />
|
||||||
|
<input type="hidden" name="numPerPage" value="{{ $lists->perPage() }}" />
|
||||||
|
<input type="hidden" name="orderField" value="{{ Request::input('orderField') }}" />
|
||||||
|
<input type="hidden" name="orderDirection" value="{{ Request::input('orderDirection') }}" />
|
||||||
|
</form>
|
||||||
|
<div class="pages">
|
||||||
|
<span>显示</span>
|
||||||
|
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
|
||||||
|
<option @if ($lists->perPage() == 30) selected @endif value="30">30</option>
|
||||||
|
<option @if ($lists->perPage() == 100) selected @endif value="100">100</option>
|
||||||
|
<option @if ($lists->perPage() == 200) selected @endif value="200">200</option>
|
||||||
|
</select>
|
||||||
|
<span>条,共 {{ $lists->total() }} 条</span>
|
||||||
|
</div>
|
||||||
|
<div class="pagination" targetType="navTab" totalCount="{{ $lists->total() }}" numPerPage="{{ $lists->perPage() }}" pageNumShown="10" currentPage="{{ $lists->currentPage() }}"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
62
app/Admin/Views/lottery/index.blade.php
Normal file
62
app/Admin/Views/lottery/index.blade.php
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
<div class="pageHeader">
|
||||||
|
<form rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="get">
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pageContent">
|
||||||
|
<div class="panelBar">
|
||||||
|
<ul class="toolBar">
|
||||||
|
<!-- <li><a class="add" href="{{ route('Admin.lottery.create') }}" mask="true" width="480" height="350" target="dialog" rel="dialog_{{ time() }}" title="创建抽奖" ><span>创建抽奖</span></a></li> -->
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<table class="table" width="100%" layoutH="112">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th width="50">编号</th>
|
||||||
|
<th width="200">标题</th>
|
||||||
|
<th width="100">状态</th>
|
||||||
|
<th width="120">开始时间</th>
|
||||||
|
<th width="120">结束时间</th>
|
||||||
|
<th width="120" orderField="created_at" @if (Request::input('orderField') == 'created_at') class="{{ Request::input('orderDirection') }}" @endif>创建时间</th>
|
||||||
|
<th width="200"></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@foreach ($lists as $lottery)
|
||||||
|
<tr>
|
||||||
|
<td>{{ $lottery->id }}</td>
|
||||||
|
<td>{{ $lottery->title }}</td>
|
||||||
|
<td>{{ $lottery->status_text }}</td>
|
||||||
|
<td>{{ $lottery->start_at }}</td>
|
||||||
|
<td>{{ $lottery->end_at }}</td>
|
||||||
|
<td>{{ $lottery->created_at }}</td>
|
||||||
|
<td>
|
||||||
|
<a title="编辑" target="dialog" href="{{ route('Admin.lottery.edit', $lottery) }}" width="650" height="390" rel="dialog_{{ time() }}" >编辑</a>
|
||||||
|
<a title="记录" target="dialog" href="{{ route('Admin.lottery.logs', $lottery) }}" width="800" height="600" rel="dialog_{{ time() }}" >记录</a>
|
||||||
|
<a title="奖品管理" target="navTab" href="{{ route('Admin.lottery.gifts', $lottery) }}" width="800" height="600" rel="navTab_{{ time() }}" >奖品管理</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
@endforeach
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<div class="panelBar">
|
||||||
|
<form id="pagerForm" method="post" action="#rel#">
|
||||||
|
<input type="hidden" name="page" value="{{ $lists->currentPage() }}" />
|
||||||
|
<input type="hidden" name="numPerPage" value="{{ $lists->perPage() }}" />
|
||||||
|
<input type="hidden" name="orderField" value="{{ Request::input('orderField') }}" />
|
||||||
|
<input type="hidden" name="orderDirection" value="{{ Request::input('orderDirection') }}" />
|
||||||
|
</form>
|
||||||
|
<div class="pages">
|
||||||
|
<span>显示</span>
|
||||||
|
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
|
||||||
|
<option @if ($lists->perPage() == 30) selected @endif value="30">30</option>
|
||||||
|
<option @if ($lists->perPage() == 100) selected @endif value="100">100</option>
|
||||||
|
<option @if ($lists->perPage() == 200) selected @endif value="200">200</option>
|
||||||
|
</select>
|
||||||
|
<span>条,共 {{ $lists->total() }} 条</span>
|
||||||
|
</div>
|
||||||
|
<div class="pagination" targetType="navTab" totalCount="{{ $lists->total() }}" numPerPage="{{ $lists->perPage() }}" pageNumShown="10" currentPage="{{ $lists->currentPage() }}"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
49
app/Admin/Views/lottery/logs.blade.php
Normal file
49
app/Admin/Views/lottery/logs.blade.php
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
<div class="pageHeader">
|
||||||
|
<form rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="get">
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pageContent">
|
||||||
|
|
||||||
|
<table class="table" width="100%" layoutH="112">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th width="50">编号</th>
|
||||||
|
<th width="200">活动名称</th>
|
||||||
|
<th width="150">用户</th>
|
||||||
|
<th width="120">奖品</th>
|
||||||
|
<th width="120" orderField="created_at" @if (Request::input('orderField') == 'created_at') class="{{ Request::input('orderDirection') }}" @endif>抽奖时间</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@foreach ($logs as $log)
|
||||||
|
<tr>
|
||||||
|
<td>{{ $log->id }}</td>
|
||||||
|
<td>{{ $log->lottery->title }}</td>
|
||||||
|
<td>{{ $log->user->info->nickname }}</td>
|
||||||
|
<td>{{ $log->gift->item->getTitle() }}</td>
|
||||||
|
<td>{{ $log->created_at }}</td>
|
||||||
|
</tr>
|
||||||
|
@endforeach
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<div class="panelBar">
|
||||||
|
<form id="pagerForm" method="post" action="#rel#">
|
||||||
|
<input type="hidden" name="page" value="{{ $logs->currentPage() }}" />
|
||||||
|
<input type="hidden" name="numPerPage" value="{{ $logs->perPage() }}" />
|
||||||
|
<input type="hidden" name="orderField" value="{{ Request::input('orderField') }}" />
|
||||||
|
<input type="hidden" name="orderDirection" value="{{ Request::input('orderDirection') }}" />
|
||||||
|
</form>
|
||||||
|
<div class="pages">
|
||||||
|
<span>显示</span>
|
||||||
|
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
|
||||||
|
<option @if ($logs->perPage() == 30) selected @endif value="30">30</option>
|
||||||
|
<option @if ($logs->perPage() == 100) selected @endif value="100">100</option>
|
||||||
|
<option @if ($logs->perPage() == 200) selected @endif value="200">200</option>
|
||||||
|
</select>
|
||||||
|
<span>条,共 {{ $logs->total() }} 条</span>
|
||||||
|
</div>
|
||||||
|
<div class="pagination" targetType="navTab" totalCount="{{ $logs->total() }}" numPerPage="{{ $logs->perPage() }}" pageNumShown="10" currentPage="{{ $logs->currentPage() }}"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
76
app/Admin/Views/notifications/index.blade.php
Normal file
76
app/Admin/Views/notifications/index.blade.php
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
<div class="pageHeader">
|
||||||
|
<form rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="post">
|
||||||
|
<div class="searchBar">
|
||||||
|
<table class="searchContent">
|
||||||
|
<tr>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
起:
|
||||||
|
<input type="text" name="start" value="{{ Request::get('start') }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
止:
|
||||||
|
<input type="text" name="end" value="{{ Request::get('end') }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
|
||||||
|
</td>
|
||||||
|
<td><div class="buttonActive"><div class="buttonContent"><button type="submit">检索结果</button></div></div></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pageContent">
|
||||||
|
<div class="panelBar">
|
||||||
|
<ul class="toolBar">
|
||||||
|
<li><a title="确实要删除这些记录吗?" target="selectedDelete" rel="ids[]" href="{{ route('Admin.notifications.destroy', 'batch') }}" class="delete"><span>批量删除</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<table class="table" width="100%" layoutH="112">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th width="22"><input type="checkbox" group="ids[]" class="checkboxCtrl"></th>
|
||||||
|
<th width="100">通知用户</th>
|
||||||
|
<th width="200">通知类型</th>
|
||||||
|
<th>交付数据</th>
|
||||||
|
<th width="120" orderField="read_at" @if (Request::input('orderField') == 'read_at') class="{{ Request::input('orderDirection') }}" @endif>阅读时间</th>
|
||||||
|
<th width="120" orderField="created_at" @if (Request::input('orderField') == 'created_at') class="{{ Request::input('orderDirection') }}" @endif>发送时间</th>
|
||||||
|
<th width="60"></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@foreach ($notifications as $notification)
|
||||||
|
<tr>
|
||||||
|
<td><input name="ids[]" value="{{ $notification->id }}" type="checkbox"></td>
|
||||||
|
<td>{{ $notification->notifiable->info->nickname }}</td>
|
||||||
|
<td>{{ $notification->type::title() }}</td>
|
||||||
|
<td>@json($notification->data)</td>
|
||||||
|
<td>{{ $notification->read_at }}</td>
|
||||||
|
<td>{{ $notification->created_at }}</td>
|
||||||
|
<td>
|
||||||
|
<a title="删除消息" target="ajaxDelete" href="{{ route('Admin.notifications.destroy', $notification) }}" class="btnDel">删除</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
@endforeach
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<div class="panelBar">
|
||||||
|
<form id="pagerForm" method="post" action="#rel#">
|
||||||
|
<input type="hidden" name="page" value="{{ $notifications->currentPage() }}" />
|
||||||
|
<input type="hidden" name="numPerPage" value="{{ $notifications->perPage() }}" />
|
||||||
|
<input type="hidden" name="orderField" value="{{ Request::input('orderField') }}" />
|
||||||
|
<input type="hidden" name="orderDirection" value="{{ Request::input('orderDirection') }}" />
|
||||||
|
</form>
|
||||||
|
<div class="pages">
|
||||||
|
<span>显示</span>
|
||||||
|
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.value})">
|
||||||
|
<option @if ($notifications->perPage() == 30) selected @endif value="30">30</option>
|
||||||
|
<option @if ($notifications->perPage() == 100) selected @endif value="100">100</option>
|
||||||
|
<option @if ($notifications->perPage() == 200) selected @endif value="200">200</option>
|
||||||
|
</select>
|
||||||
|
<span>条,共 {{ $notifications->total() }} 条</span>
|
||||||
|
</div>
|
||||||
|
<div class="pagination" targetType="navTab" totalCount="{{ $notifications->total() }}" numPerPage="{{ $notifications->perPage() }}" pageNumShown="10" currentPage="{{ $notifications->currentPage() }}"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
89
app/Admin/Views/orderData/index.blade.php
Normal file
89
app/Admin/Views/orderData/index.blade.php
Normal file
@@ -0,0 +1,89 @@
|
|||||||
|
<div class="pageHeader">
|
||||||
|
<form id="searchForm_{{ uniqid() }}" rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="post">
|
||||||
|
<div class="searchBar">
|
||||||
|
<table class="searchContent">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
发货开始时间:
|
||||||
|
<input type="text" name="start" value="{{ $start }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="00:00:00" readonly="true">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
发货结束时间:
|
||||||
|
<input type="text" name="end" value="{{ $end }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
|
||||||
|
</td>
|
||||||
|
@if(Admin::id() == 1)
|
||||||
|
<td>
|
||||||
|
所属商户:
|
||||||
|
<select name="seller_id">
|
||||||
|
<option value="">全部商户</option>
|
||||||
|
@foreach ($sellers as $seller)
|
||||||
|
<option value="{{ $seller['id'] }}" @if($seller['id'] == Request::get('seller_id')) selected @endif>{{ $seller['name'] }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
@endif
|
||||||
|
<input name="type" type="hidden" value="PAID|DELIVERED">
|
||||||
|
|
||||||
|
<td><div class="buttonActive"><div class="buttonContent"><button type="submit">检索结果</button></div></div></td>
|
||||||
|
<td><div class="buttonActive"><div class="buttonContent"><button type="button" class="export-data">导出数据</button></div></div></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pageContent">
|
||||||
|
<table class="table" width="100%" layoutH="112">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th width="250">已发货商品信息</th>
|
||||||
|
<th width="150">已发货商品总数</th>
|
||||||
|
<th width="150">支付现金总额</th>
|
||||||
|
<th width="150">消耗积分总额</th>
|
||||||
|
<th width="150">结算成本总额</th>
|
||||||
|
<th width="150">操作</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@foreach ($details as $detail)
|
||||||
|
<tr>
|
||||||
|
<td>{{ \App\Models\GoodsParams::find($detail->item_id)->getTitle() }}</td>
|
||||||
|
<td>{{ $detail->number_sum }}</td>
|
||||||
|
<td>{{ $detail->price_sum }}</td>
|
||||||
|
<td>{{ $detail->score_sum }}</td>
|
||||||
|
<td>{{ $detail->seller_price_sum }}</td>
|
||||||
|
<td>
|
||||||
|
<a title="订单明细" target="navTab" rel="ordershow" href="{{ route('Admin.orderData.order', ['item_id'=>$detail->item_id,'start'=>$start,'end'=>$end,'type'=>'PAID|DELIVERED']) }}">
|
||||||
|
订单明细
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
@endforeach
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<div class="panelBar">
|
||||||
|
<form id="pagerForm" method="post" action="#rel#">
|
||||||
|
<input type="hidden" name="page" order="{{ $details->currentPage() }}" />
|
||||||
|
<input type="hidden" name="numPerPage" order="{{ $details->perPage() }}" />
|
||||||
|
<input type="hidden" name="orderField" order="{{ Request::input('orderField') }}" />
|
||||||
|
<input type="hidden" name="orderDirection" order="{{ Request::input('orderDirection') }}" />
|
||||||
|
</form>
|
||||||
|
<div class="pages">
|
||||||
|
<span>显示</span>
|
||||||
|
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.order})">
|
||||||
|
<option @if ($details->perPage() == 30) selected @endif value="30">30</option>
|
||||||
|
<option @if ($details->perPage() == 100) selected @endif value="100">100</option>
|
||||||
|
<option @if ($details->perPage() == 200) selected @endif value="200">200</option>
|
||||||
|
</select>
|
||||||
|
<span>条,共 {{ $details->total() }} 条</span>
|
||||||
|
</div>
|
||||||
|
<div class="pagination" targetType="navTab" totalCount="{{ $details->total() }}" numPerPage="{{ $details->perPage() }}" pageNumShown="10" currentPage="{{ $details->currentPage() }}"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript">
|
||||||
|
//点击导出
|
||||||
|
$('.export-data').click(function (event) {
|
||||||
|
location.href = "{{ route('Admin.export.report') }}?" + $(this).parents('form').serialize();
|
||||||
|
});
|
||||||
|
</script>
|
||||||
191
app/Admin/Views/orderData/order.blade.php
Normal file
191
app/Admin/Views/orderData/order.blade.php
Normal file
@@ -0,0 +1,191 @@
|
|||||||
|
<div class="pageHeader">
|
||||||
|
<form id="searchForm_{{ uniqid() }}" rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="post">
|
||||||
|
<div class="searchBar">
|
||||||
|
<table class="searchContent">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
订单编号:
|
||||||
|
<input type="text" name="orderid" value="{{ Request::input('orderid') }}"/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
商品名称:
|
||||||
|
<input type="text" name="title" value="{{ Request::input('title') }}"/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
买家手机号:
|
||||||
|
<input type="text" name="mobile" value="{{ Request::input('mobile') }}"/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
买家昵称:
|
||||||
|
<input type="text" name="nickname" value="{{ Request::input('nickname') }}"/>
|
||||||
|
</td>
|
||||||
|
<input name="type" type="hidden" value="{{ $type }}">
|
||||||
|
<input name="seller_id" type="hidden" value="{{ Request::get('seller_id') }}">
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
开始时间:
|
||||||
|
<input type="text" name="start" value="{{ Request::get('start') }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="00:00:00" readonly="true">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
结束时间:
|
||||||
|
<input type="text" name="end" value="{{ Request::get('end') }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<select class="combox" name="item_type">
|
||||||
|
<option value="">订单类型</option>
|
||||||
|
<option value="GOODS" @if(Request::get('item_type') == 'GOODS') selected @endif>商品订单</option>
|
||||||
|
<option value="VIP_GIFT" @if(Request::get('item_type') == 'VIP_GIFT') selected @endif>会员赠品</option>
|
||||||
|
<option value="FULL_GIFT" @if(Request::get('item_type') == 'FULL_GIFT') selected @endif>满仓赠品</option>
|
||||||
|
<option value="ACTIVITY_GIFT" @if(Request::get('item_type') == 'ACTIVITY_GIFT') selected @endif>活动赠品</option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td><div class="buttonActive"><div class="buttonContent"><button type="submit">检索结果</button></div></div></td>
|
||||||
|
<td><div class="buttonActive"><div class="buttonContent"><button type="button" class="export-data">导出数据</button></div></div></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pageContent">
|
||||||
|
<table class="table" width="100%" layoutH="112">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th width="200">订单编号</th>
|
||||||
|
<th width="200">商品信息</th>
|
||||||
|
<th width="60">商品数量</th>
|
||||||
|
<th width="60">商品总额</th>
|
||||||
|
<th width="60">商品积分</th>
|
||||||
|
<th width="60">订单金额</th>
|
||||||
|
<th width="60">订单运费</th>
|
||||||
|
<th width="60">积分抵扣</th>
|
||||||
|
<th width="60">总计支付</th>
|
||||||
|
<th width="60">总成本</th>
|
||||||
|
<th width="60">结算运费</th>
|
||||||
|
<th width="60">商家结算</th>
|
||||||
|
<th width="60">配送</th>
|
||||||
|
<th width="120">收件地址</th>
|
||||||
|
<th width="60">状态</th>
|
||||||
|
@if($type == 'DELIVERED|SIGNED')
|
||||||
|
<th width="100">发货时间</th>
|
||||||
|
<th width="100">签收时间</th>
|
||||||
|
@endif
|
||||||
|
@if($type == 'PAID|DELIVERED')
|
||||||
|
<th width="100">支付时间</th>
|
||||||
|
<th width="100">发货时间</th>
|
||||||
|
@endif
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@php
|
||||||
|
$orderids = array();
|
||||||
|
@endphp
|
||||||
|
@foreach ($orders as $order)
|
||||||
|
@foreach($order->details as $detail)
|
||||||
|
<tr target="sid" rel="{{ $order->id }}">
|
||||||
|
@if(!in_array($order->id, $orderids))
|
||||||
|
<td>@switch($order->item_type)
|
||||||
|
@case('GOODS')
|
||||||
|
<span style="font-size: .6rem;padding: 0 .2rem;border:.05rem solid #39a6ad;color: #39a6ad;line-height: .9rem;margin-top: .05rem;border-radius: .2rem;margin-right: .05rem">商品</span>
|
||||||
|
@break
|
||||||
|
@case('FULL_GIFT')
|
||||||
|
<span style="font-size: .6rem;padding: 0 .2rem;border:.05rem solid #1153ff;color: #1153ff;line-height: .9rem;margin-top: .05rem;border-radius: .2rem;margin-right: .05rem">满仓</span>
|
||||||
|
@break
|
||||||
|
@case('ACTIVITY_GIFT')
|
||||||
|
<span style="font-size: .6rem;padding: 0 .2rem;border:.05rem solid #ff6417;color: #ff6417;line-height: .9rem;margin-top: .05rem;border-radius: .2rem;margin-right: .05rem">活动</span>
|
||||||
|
@break
|
||||||
|
@case('VIP_GIFT')
|
||||||
|
<span style="font-size: .6rem;padding: 0 .2rem;border:.05rem solid #ec6d64;color: #ec6d64;line-height: .9rem;margin-top: .05rem;border-radius: .2rem;margin-right: .05rem">赠品</span>
|
||||||
|
@break
|
||||||
|
@endswitch{{ $order->orderid }}
|
||||||
|
</td>
|
||||||
|
@else<td></td>
|
||||||
|
@endif
|
||||||
|
<td>{{$detail->item->getTitle() }}
|
||||||
|
</td>
|
||||||
|
<td>{{$detail->number }}
|
||||||
|
</td>
|
||||||
|
<td>{{$detail->price * $detail->number - $detail->score * $detail->number }}
|
||||||
|
</td>
|
||||||
|
<td>{{$detail->score * $detail->number }}
|
||||||
|
</td>
|
||||||
|
@if(!in_array($order->id, $orderids))
|
||||||
|
|
||||||
|
<td>{{ number_format($order->amount,2) }}</td>
|
||||||
|
<td>{{ number_format($order->freight, 2)}}</td>
|
||||||
|
<td>{{ number_format($order->score, 2) }}</td>
|
||||||
|
<td>{{ number_format($order->total - $order->score, 2) }}</td>
|
||||||
|
<td>{{ number_format($order->seller_amount, 2) }}</td>
|
||||||
|
<td>{{ number_format($order->seller_freight, 2) }}</td>
|
||||||
|
<td>{{ number_format($order->seller_freight + $order->seller_amount, 2) }}</td>
|
||||||
|
<td>{!! $order->express_type == 1 ? '快递' : '<span style="color: #ec6d64;">自提</span>' !!}</td>
|
||||||
|
<td>{{ $order->express->name ?? $order->user->info->nickname }} {{ $order->express->mobile ?? $order->user->mobile }} {{ $order->express->address ?? '' }}</td>
|
||||||
|
<td>{{ $order->state_text }}</td>
|
||||||
|
@if($type == 'DELIVERED|SIGNED')
|
||||||
|
<td>{{ $order->logs()->where('state','PAID|DELIVERED')->first()->created_at }}</td>
|
||||||
|
<td>{{ $order->logs()->where('state','DELIVERED|SIGNED')->first()->created_at }}</td>
|
||||||
|
@endif
|
||||||
|
@if($type == 'PAID|DELIVERED')
|
||||||
|
<td>{{ $order->paid_at }}</td>
|
||||||
|
<td>{{ $order->logs()->where('state','PAID|DELIVERED')->first()->created_at }}</td>
|
||||||
|
@endif
|
||||||
|
@else
|
||||||
|
<td colspan="12"></td>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
@php
|
||||||
|
array_push($orderids,$order->id);
|
||||||
|
@endphp
|
||||||
|
@endforeach
|
||||||
|
@endforeach
|
||||||
|
<tr>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
{{ $orders->count() }}单
|
||||||
|
</td>
|
||||||
|
<td colspan="8">
|
||||||
|
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ number_format($orders->sum('seller_amount'),2) }}元
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ number_format($orders->sum('seller_freight'),2) }}元
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ number_format($orders->sum('seller_freight') + $orders->sum('seller_amount'),2) }}元
|
||||||
|
</td>
|
||||||
|
<td colspan="5">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<div class="panelBar">
|
||||||
|
<form id="pagerForm" method="post" action="#rel#">
|
||||||
|
<input type="hidden" name="page" order="{{ $orders->currentPage() }}" />
|
||||||
|
<input type="hidden" name="numPerPage" order="{{ $orders->perPage() }}" />
|
||||||
|
<input type="hidden" name="orderField" order="{{ Request::input('orderField') }}" />
|
||||||
|
<input type="hidden" name="orderDirection" order="{{ Request::input('orderDirection') }}" />
|
||||||
|
</form>
|
||||||
|
<div class="pages">
|
||||||
|
<span>显示</span>
|
||||||
|
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.order})">
|
||||||
|
<option @if ($orders->perPage() == 30) selected @endif value="30">30</option>
|
||||||
|
<option @if ($orders->perPage() == 100) selected @endif value="100">100</option>
|
||||||
|
<option @if ($orders->perPage() == 200) selected @endif value="200">200</option>
|
||||||
|
</select>
|
||||||
|
<span>条,共 {{ $orders->total() }} 条</span>
|
||||||
|
</div>
|
||||||
|
<div class="pagination" targetType="navTab" totalCount="{{ $orders->total() }}" numPerPage="{{ $orders->perPage() }}" pageNumShown="10" currentPage="{{ $orders->currentPage() }}"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript">
|
||||||
|
//点击导出
|
||||||
|
$('.export-data').click(function (event) {
|
||||||
|
location.href = "{{ route('Admin.export.report') }}?" + $(this).parents('form').serialize();
|
||||||
|
});
|
||||||
|
</script>
|
||||||
127
app/Admin/Views/orderData/report.blade.php
Normal file
127
app/Admin/Views/orderData/report.blade.php
Normal file
@@ -0,0 +1,127 @@
|
|||||||
|
<div class="pageHeader">
|
||||||
|
<form id="searchForm_{{ uniqid() }}" rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="post">
|
||||||
|
<div class="searchBar">
|
||||||
|
<table class="searchContent">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
发货开始时间:
|
||||||
|
<input type="text" name="start" value="" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="00:00:00" readonly="true">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
发货结束时间:
|
||||||
|
<input type="text" name="end" value="" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
|
||||||
|
</td>
|
||||||
|
@if(Admin::id() == 1)
|
||||||
|
<td>
|
||||||
|
所属商户:
|
||||||
|
<select name="seller_id">
|
||||||
|
<option value="">全部商户</option>
|
||||||
|
@foreach ($sellers as $seller)
|
||||||
|
<option value="{{ $seller['id'] }}" @if($seller['id'] == Request::get('seller_id')) selected @endif>{{ $seller['name'] }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
@endif
|
||||||
|
<input type="hidden" name="type" value="DELIVERED">
|
||||||
|
<td><div class="buttonActive"><div class="buttonContent"><button type="submit">检索结果</button></div></div></td>
|
||||||
|
<td><div class="buttonActive"><div class="buttonContent"><button type="button" class="export-data">导出数据</button></div></div></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pageContent">
|
||||||
|
<table class="table" width="100%" layoutH="112">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th width="250">发货商户</th>
|
||||||
|
<th width="150">日期</th>
|
||||||
|
<th width="150">商品总数</th>
|
||||||
|
<th width="150">订单总数</th>
|
||||||
|
<th width="150">商品现金总额</th>
|
||||||
|
<th width="150">商品积分总额</th>
|
||||||
|
<th width="150">支付现金总额</th>
|
||||||
|
<th width="150">消耗积分总额</th>
|
||||||
|
<th width="150">订单运费总额</th>
|
||||||
|
<th width="150">结算成本</th>
|
||||||
|
<th width="150">结算运费</th>
|
||||||
|
<th width="150">结算总额</th>
|
||||||
|
<th width="240">操作</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@foreach ($reports as $report)
|
||||||
|
<tr>
|
||||||
|
<td>{{ $report->seller->name }}</td>
|
||||||
|
<td>{{ $report->action_time }}</td>
|
||||||
|
<td>{{ $report->goods_total }}</td>
|
||||||
|
<td>{{ $report->orders_total }}</td>
|
||||||
|
<td>{{ $report->goods_price_total - $report->goods_score_total}}</td>
|
||||||
|
<td>{{ $report->goods_score_total }}</td>
|
||||||
|
<td>{{ $report->orders_price - $report->orders_score }}</td>
|
||||||
|
<td>{{ $report->orders_score }}</td>
|
||||||
|
<td>{{ $report->orders_freight }}</td>
|
||||||
|
<td>{{ $report->seller_total }}</td>
|
||||||
|
<td>{{ $report->seller_freight }}</td>
|
||||||
|
<td>{{ number_format($report->seller_total + $report->seller_freight,2) }}</td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
<a title="订单明细" target="navTab" rel="ordershow" href="{{ route('Admin.orderData.order', ['seller_id'=>$report->seller_id,'start'=>$report->action_time,'end'=>$report->action_time,'type'=>'PAID|DELIVERED']) }}">
|
||||||
|
明细
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
@endforeach
|
||||||
|
<tr>
|
||||||
|
<td colspan="2">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ $reports->sum('goods_total') }}件
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ $reports->sum('orders_total') }}单
|
||||||
|
</td>
|
||||||
|
<td colspan="5">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ number_format($reports->sum('seller_total'),2) }}元
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ number_format($reports->sum('seller_freight'),2) }}元
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ number_format($reports->sum('seller_freight') + $reports->sum('seller_total'),2) }}元
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<div class="panelBar">
|
||||||
|
<form id="pagerForm" method="post" action="#rel#">
|
||||||
|
<input type="hidden" name="page" order="{{ $reports->currentPage() }}" />
|
||||||
|
<input type="hidden" name="numPerPage" order="{{ $reports->perPage() }}" />
|
||||||
|
<input type="hidden" name="orderField" order="{{ Request::input('orderField') }}" />
|
||||||
|
<input type="hidden" name="orderDirection" order="{{ Request::input('orderDirection') }}" />
|
||||||
|
</form>
|
||||||
|
<div class="pages">
|
||||||
|
<span>显示</span>
|
||||||
|
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.order})">
|
||||||
|
<option @if ($reports->perPage() == 30) selected @endif value="30">30</option>
|
||||||
|
<option @if ($reports->perPage() == 100) selected @endif value="100">100</option>
|
||||||
|
<option @if ($reports->perPage() == 200) selected @endif value="200">200</option>
|
||||||
|
</select>
|
||||||
|
<span>条,共 {{ $reports->total() }} 条</span>
|
||||||
|
</div>
|
||||||
|
<div class="pagination" targetType="navTab" totalCount="{{ $reports->total() }}" numPerPage="{{ $reports->perPage() }}" pageNumShown="10" currentPage="{{ $reports->currentPage() }}"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
//点击导出
|
||||||
|
$('.export-data').click(function (event) {
|
||||||
|
location.href = "{{ route('Admin.export.dataReport') }}?" + $(this).parents('form').serialize();
|
||||||
|
});
|
||||||
|
</script>
|
||||||
128
app/Admin/Views/orderData/signed.blade.php
Normal file
128
app/Admin/Views/orderData/signed.blade.php
Normal file
@@ -0,0 +1,128 @@
|
|||||||
|
<div class="pageHeader">
|
||||||
|
<form id="searchForm_{{ uniqid() }}" rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="post">
|
||||||
|
<div class="searchBar">
|
||||||
|
<table class="searchContent">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
发货开始时间:
|
||||||
|
<input type="text" name="start" value="" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="00:00:00" readonly="true">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
发货结束时间:
|
||||||
|
<input type="text" name="end" value="" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
|
||||||
|
</td>
|
||||||
|
@if(Admin::id() == 1)
|
||||||
|
<td>
|
||||||
|
所属商户:
|
||||||
|
<select name="seller_id">
|
||||||
|
<option value="">全部商户</option>
|
||||||
|
@foreach ($sellers as $seller)
|
||||||
|
<option value="{{ $seller['id'] }}" @if($seller['id'] == Request::get('seller_id')) selected @endif>{{ $seller['name'] }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
<input type="hidden" name="type" value="SIGNED">
|
||||||
|
<td><div class="buttonActive"><div class="buttonContent"><button type="submit">检索结果</button></div></div></td>
|
||||||
|
<td><div class="buttonActive"><div class="buttonContent"><button type="button" class="export-data">导出数据</button></div></div></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pageContent">
|
||||||
|
<table class="table" width="100%" layoutH="112">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th width="250">签收商户</th>
|
||||||
|
<th width="150">签收日期</th>
|
||||||
|
<th width="150">商品总数</th>
|
||||||
|
<th width="150">订单总数</th>
|
||||||
|
<th width="150">商品现金总额</th>
|
||||||
|
<th width="150">商品积分总额</th>
|
||||||
|
<th width="150">支付现金总额</th>
|
||||||
|
<th width="150">消耗积分总额</th>
|
||||||
|
<th width="150">订单运费总额</th>
|
||||||
|
<th width="150">结算成本</th>
|
||||||
|
<th width="150">结算运费</th>
|
||||||
|
<th width="150">结算总额</th>
|
||||||
|
<th width="240">操作</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@foreach ($reports as $report)
|
||||||
|
<tr>
|
||||||
|
<td>{{ $report->seller->name }}</td>
|
||||||
|
<td>{{ $report->action_time }}</td>
|
||||||
|
<td>{{ $report->goods_total }}</td>
|
||||||
|
<td>{{ $report->orders_total }}</td>
|
||||||
|
<td>{{ $report->goods_price_total - $report->goods_score_total}}</td>
|
||||||
|
<td>{{ $report->goods_score_total }}</td>
|
||||||
|
<td>{{ $report->orders_price - $report->orders_score }}</td>
|
||||||
|
<td>{{ $report->orders_score }}</td>
|
||||||
|
<td>{{ $report->orders_freight }}</td>
|
||||||
|
<td>{{ $report->seller_total }}</td>
|
||||||
|
<td>{{ $report->seller_freight }}</td>
|
||||||
|
<td>{{ number_format($report->seller_total + $report->seller_freight,2) }}</td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
<a title="订单明细" target="navTab" rel="ordershow" href="{{ route('Admin.orderData.order', ['seller_id'=>$report->seller_id,'start'=>$report->action_time,'end'=>$report->action_time,'type'=>'DELIVERED|SIGNED']) }}">
|
||||||
|
明细
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
@endforeach
|
||||||
|
<tr>
|
||||||
|
<td colspan="2">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ $reports->sum('goods_total') }}件
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ $reports->sum('orders_total') }}单
|
||||||
|
</td>
|
||||||
|
<td colspan="5">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ number_format($reports->sum('seller_total'),2) }}元
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ number_format($reports->sum('seller_freight'),2) }}元
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ number_format($reports->sum('seller_freight') + $reports->sum('seller_total'),2) }}元
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<div class="panelBar">
|
||||||
|
<form id="pagerForm" method="post" action="#rel#">
|
||||||
|
<input type="hidden" name="page" order="{{ $reports->currentPage() }}" />
|
||||||
|
<input type="hidden" name="numPerPage" order="{{ $reports->perPage() }}" />
|
||||||
|
<input type="hidden" name="orderField" order="{{ Request::input('orderField') }}" />
|
||||||
|
<input type="hidden" name="orderDirection" order="{{ Request::input('orderDirection') }}" />
|
||||||
|
</form>
|
||||||
|
<div class="pages">
|
||||||
|
<span>显示</span>
|
||||||
|
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.order})">
|
||||||
|
<option @if ($reports->perPage() == 30) selected @endif value="30">30</option>
|
||||||
|
<option @if ($reports->perPage() == 100) selected @endif value="100">100</option>
|
||||||
|
<option @if ($reports->perPage() == 200) selected @endif value="200">200</option>
|
||||||
|
</select>
|
||||||
|
<span>条,共 {{ $reports->total() }} 条</span>
|
||||||
|
</div>
|
||||||
|
<div class="pagination" targetType="navTab" totalCount="{{ $reports->total() }}" numPerPage="{{ $reports->perPage() }}" pageNumShown="10" currentPage="{{ $reports->currentPage() }}"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
//点击导出
|
||||||
|
$('.export-data').click(function (event) {
|
||||||
|
location.href = "{{ route('Admin.export.dataReport') }}?" + $(this).parents('form').serialize();
|
||||||
|
});
|
||||||
|
</script>
|
||||||
181
app/Admin/Views/orders/allSellerOrder.blade.php
Normal file
181
app/Admin/Views/orders/allSellerOrder.blade.php
Normal file
@@ -0,0 +1,181 @@
|
|||||||
|
<div class="pageHeader">
|
||||||
|
<form id="searchForm_{{ uniqid() }}" rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="post">
|
||||||
|
<div class="searchBar">
|
||||||
|
<table class="searchContent">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
订单编号:
|
||||||
|
<input type="text" name="orderid" value="{{ Request::input('orderid') }}"/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
商户名称:
|
||||||
|
<input type="text" name="seller" value="{{ Request::input('seller') }}"/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
买家手机号:
|
||||||
|
<input type="text" name="mobile" value="{{ Request::input('mobile') }}"/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
买家昵称:
|
||||||
|
<input type="text" name="nickname" value="{{ Request::input('nickname') }}"/>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
商品名称:
|
||||||
|
<input type="text" name="title" value="{{ Request::input('title') }}"/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
起:
|
||||||
|
<input type="text" name="start" value="{{ Request::get('start') }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
止:
|
||||||
|
<input type="text" name="end" value="{{ Request::get('end') }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<select class="combox" name="item_type">
|
||||||
|
<option value="">订单类型</option>
|
||||||
|
<option value="GOODS" @if(Request::get('item_type') == 'GOODS') selected @endif>商品订单</option>
|
||||||
|
<option value="LESSON" @if(Request::get('item_type') == 'LESSON') selected @endif>报名</option>
|
||||||
|
<option value="GIFT" @if(Request::get('item_type') == 'GIFT') selected @endif>赠品</option>
|
||||||
|
<option value="ACTIVITY" @if(Request::get('item_type') == 'ACTIVITY') selected @endif>娱乐/生活</option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<select class="combox" name="state">
|
||||||
|
<option value="">订单状态</option>
|
||||||
|
<option value="UNPAY" @if(Request::get('state') == 'UNPAY') selected @endif>待支付</option>
|
||||||
|
<option value="UNADDRESS" @if(Request::get('state') == 'UNADDRESS') selected @endif>待设收货地址</option>
|
||||||
|
<option value="PAID" @if(Request::get('state') == 'PAID') selected @endif>已支付</option>
|
||||||
|
<option value="DELIVERED" @if(Request::get('state') == 'DELIVERED') selected @endif>已发货</option>
|
||||||
|
<option value="SIGNED" @if(Request::get('state') == 'SIGNED') selected @endif>已签收</option>
|
||||||
|
<option value="CLOSED" @if(Request::get('state') == 'CLOSED') selected @endif>已关闭</option>
|
||||||
|
<option value="CANCEL" @if(Request::get('state') == 'CANCEL') selected @endif>已取消</option>
|
||||||
|
<option value="COMPLETED" @if(Request::get('state') == 'COMPLETED') selected @endif>已完成</option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td></td>
|
||||||
|
<td><div class="buttonActive"><div class="buttonContent"><button type="submit">检索结果</button></div></div></td>
|
||||||
|
<td><div class="buttonActive"><div class="buttonContent"><button type="button" class="export-data">导出数据</button></div></div></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pageContent">
|
||||||
|
<table class="table" width="100%" layoutH="112">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th width="140">订单编号</th>
|
||||||
|
<th width="80">商户名称</th>
|
||||||
|
<th width="80">手机号</th>
|
||||||
|
<th width="80">用户名</th>
|
||||||
|
<th width="200">商品信息</th>
|
||||||
|
<th width="60">商品金额</th>
|
||||||
|
<th width="60">运费</th>
|
||||||
|
<th width="60">抵值</th>
|
||||||
|
<th width="60">总计支付</th>
|
||||||
|
<th width="60">总成本</th>
|
||||||
|
<!-- <th width="60">结算运费</th> -->
|
||||||
|
<!-- <th width="60">商家结算</th> -->
|
||||||
|
<th width="60">配送</th>
|
||||||
|
<th width="120">收件地址</th>
|
||||||
|
<th width="60">状态</th>
|
||||||
|
<th></th>
|
||||||
|
<th width="100" orderField="created_at" @if (Request::input('orderField') == 'created_at') class="{{ Request::input('orderDirection') }}" @endif>创建时间</th>
|
||||||
|
<th width="100" orderField="paid_at" @if (Request::input('orderField') == 'paid_at') class="{{ Request::input('orderDirection') }}" @endif>支付时间</th>
|
||||||
|
<th width="200"></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@foreach ($orders as $order)
|
||||||
|
<tr target="sid" rel="{{ $order->id }}">
|
||||||
|
<td>@switch($order->item_type)
|
||||||
|
@case('GOODS')
|
||||||
|
<span style="font-size: .6rem;padding: 0 .2rem;border:.05rem solid #39a6ad;color: #39a6ad;line-height: .9rem;margin-top: .05rem;border-radius: .2rem;margin-right: .05rem">商品</span>
|
||||||
|
@break
|
||||||
|
@case('ACTIVITY_GIFT')
|
||||||
|
<span style="font-size: .6rem;padding: 0 .2rem;border:.05rem solid #ec6d64;color: #ec6d64;line-height: .9rem;margin-top: .05rem;border-radius: .2rem;margin-right: .05rem">活动</span>
|
||||||
|
@break
|
||||||
|
@case('VIP_GIFT')
|
||||||
|
<span style="font-size: .6rem;padding: 0 .2rem;border:.05rem solid #ec6d64;color: #ec6d64;line-height: .9rem;margin-top: .05rem;border-radius: .2rem;margin-right: .05rem">赠品</span>
|
||||||
|
@break
|
||||||
|
@case('FULL_GIFT')
|
||||||
|
<span style="font-size: .6rem;padding: 0 .2rem;border:.05rem solid #1153ff;color: #1153ff;line-height: .9rem;margin-top: .05rem;border-radius: .2rem;margin-right: .05rem">满仓</span>
|
||||||
|
@break
|
||||||
|
@endswitch{{ $order->orderid }}</td>
|
||||||
|
<td>{{ $order->seller->name }}</td>
|
||||||
|
<td>{{ $order->user->mobile }}</td>
|
||||||
|
<td>{{ $order->user->info->nickname }}</td>
|
||||||
|
<td> @foreach ($order->details as $detail)
|
||||||
|
@if($detail->item){{ $detail->item->getTitle() ?? '未知'}} @endif <span style="color: red;font-size: 12px"><b>{{ number_format($detail->price,2) }}</b> * {{ $detail->number }}</span>
|
||||||
|
@endforeach
|
||||||
|
</td>
|
||||||
|
<td>{{ number_format($order->amount,2) }}</td>
|
||||||
|
<td>{{ number_format($order->freight, 2)}}</td>
|
||||||
|
<td>{{ number_format($order->score, 2) }}</td>
|
||||||
|
<td>{{ number_format($order->total - $order->score, 2) }}</td>
|
||||||
|
<td>{{ number_format($order->seller_amount, 2) }}</td>
|
||||||
|
<!-- <td>{{ number_format($order->seller_freight, 2) }}</td> -->
|
||||||
|
<!-- <td>{{ number_format($order->seller_freight + $order->seller_amount, 2) }}</td> -->
|
||||||
|
<td>{!! $order->express_type == 1 ? '快递' : '<span style="color: #ec6d64;">不需邮寄</span>' !!}</td>
|
||||||
|
<td>{{ $order->express->name ?? '' }} {{ $order->express->mobile ?? '' }} {{ $order->express->address ?? '' }}</td>
|
||||||
|
<td>{{ $order->state_text }}</td>
|
||||||
|
<td>{{ $order->remark }}</td>
|
||||||
|
<td>{{ $order->created_at }}</td>
|
||||||
|
<td>{{ $order->paid_at }}</td>
|
||||||
|
<td>
|
||||||
|
@if ($order->canDeliver() && $order->express_type == 1)
|
||||||
|
<a title="订单发货" target="dialog" href="{{ route('Admin.orders.deliver', $order) }}" width="550" height="250">订单发货</a>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
@if ($order->canDeliver() && $order->express_type == 0)
|
||||||
|
<a title="自提完成" target="ajaxTodo" href="{{ route('Admin.orders.signin', $order) }}">自提完成</a>
|
||||||
|
@endif
|
||||||
|
@if ($order->canComplete())
|
||||||
|
<a title="完成订单?" target="ajaxTodo" href="{{ route('Admin.orders.complete', $order) }}">完成订单</a>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
@if (!empty($order->express->company) && !empty($order->express->number))
|
||||||
|
<a title="物流跟踪" target="dialog" href="{{ route('Admin.orders.logistic', $order) }}" width="550" height="450">物流跟踪</a>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
@if ($order->canClose())
|
||||||
|
<a title="关闭订单?" target="ajaxTodo" href="{{ route('Admin.orders.close', $order) }}">关闭订单</a>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
<a title="订单详情" target="navTab" rel="ordershow" href="{{ route('Admin.orders.show', $order) }}">订单详情</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
@endforeach
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<div class="panelBar">
|
||||||
|
<form id="pagerForm" method="post" action="#rel#">
|
||||||
|
<input type="hidden" name="page" order="{{ $orders->currentPage() }}" />
|
||||||
|
<input type="hidden" name="numPerPage" order="{{ $orders->perPage() }}" />
|
||||||
|
<input type="hidden" name="orderField" order="{{ Request::input('orderField') }}" />
|
||||||
|
<input type="hidden" name="orderDirection" order="{{ Request::input('orderDirection') }}" />
|
||||||
|
</form>
|
||||||
|
<div class="pages">
|
||||||
|
<span>显示</span>
|
||||||
|
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.order})">
|
||||||
|
<option @if ($orders->perPage() == 30) selected @endif value="30">30</option>
|
||||||
|
<option @if ($orders->perPage() == 100) selected @endif value="100">100</option>
|
||||||
|
<option @if ($orders->perPage() == 200) selected @endif value="200">200</option>
|
||||||
|
</select>
|
||||||
|
<span>条,共 {{ $orders->total() }} 条</span>
|
||||||
|
</div>
|
||||||
|
<div class="pagination" targetType="navTab" totalCount="{{ $orders->total() }}" numPerPage="{{ $orders->perPage() }}" pageNumShown="10" currentPage="{{ $orders->currentPage() }}"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript">
|
||||||
|
//点击导出
|
||||||
|
$('.export-data').click(function (event) {
|
||||||
|
location.href = "{{ route('Admin.export.allOrders') }}?" + $(this).parents('form').serialize();
|
||||||
|
});
|
||||||
|
</script>
|
||||||
41
app/Admin/Views/orders/deliver.blade.php
Normal file
41
app/Admin/Views/orders/deliver.blade.php
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
<div class="pageContent">
|
||||||
|
<form method="post" action="{{ url()->current() }}" class="pageForm required-validate" onsubmit="return validateCallback(this, dialogAjaxDone)">
|
||||||
|
<div class="pageFormContent" layoutH="59">
|
||||||
|
<div class="unit">
|
||||||
|
<label>订单编号:</label>
|
||||||
|
<input type="text" value="{{ $order->orderid }}" disabled/>
|
||||||
|
</div>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>收件人信息:</label>
|
||||||
|
<input type="text" size="50" value="{{ $order->express->name ?? '' }} {{ $order->express->mobile ?? '' }}" disabled/>
|
||||||
|
</div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>收件人地址:</label>
|
||||||
|
<input type="text" size="50" value="{{ $order->express->address ?? '' }}" disabled/>
|
||||||
|
</div>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>物流名称:</label>
|
||||||
|
<select name="company" class="combox">
|
||||||
|
@foreach (Params::get('deliver_list', 'array') as $key => $deliver)
|
||||||
|
<option value="{{ $key }}">{{ $deliver }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>物流单号:</label>
|
||||||
|
<input type="text" name="number" value="" class="required"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="formBar">
|
||||||
|
<ul>
|
||||||
|
@csrf
|
||||||
|
@method('PUT')
|
||||||
|
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
|
||||||
|
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
173
app/Admin/Views/orders/index.blade.php
Normal file
173
app/Admin/Views/orders/index.blade.php
Normal file
@@ -0,0 +1,173 @@
|
|||||||
|
<div class="pageHeader">
|
||||||
|
<form id="searchForm_{{ uniqid() }}" rel="pagerForm" onsubmit="return navTabSearch(this);" action="{{ url()->current() }}" method="post">
|
||||||
|
<div class="searchBar">
|
||||||
|
<table class="searchContent">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
订单编号:
|
||||||
|
<input type="text" name="orderid" value="{{ Request::input('orderid') }}"/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
商品名称:
|
||||||
|
<input type="text" name="title" value="{{ Request::input('title') }}"/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
买家手机号:
|
||||||
|
<input type="text" name="mobile" value="{{ Request::input('mobile') }}"/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
买家昵称:
|
||||||
|
<input type="text" name="nickname" value="{{ Request::input('nickname') }}"/>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
起:
|
||||||
|
<input type="text" name="start" value="{{ Request::get('start') }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
止:
|
||||||
|
<input type="text" name="end" value="{{ Request::get('end') }}" class="date textInput readonly valid" datefmt="yyyy-MM-dd HH:mm:ss" defaulttime="23:59:59" readonly="true">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<select class="combox" name="item_type">
|
||||||
|
<option value="">订单类型</option>
|
||||||
|
<!-- <option value="GOODS" @if(Request::get('item_type') == 'GOODS') selected @endif>商品订单</option> -->
|
||||||
|
<option value="LESSON" @if(Request::get('item_type') == 'LESSON') selected @endif>报课</option>
|
||||||
|
<option value="GIFT" @if(Request::get('item_type') == 'GIFT') selected @endif>赠品</option>
|
||||||
|
<option value="ACTIVITY" @if(Request::get('item_type') == 'ACTIVITY') selected @endif>娱乐/生活</option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<select class="combox" name="state">
|
||||||
|
@switch(url()->current())
|
||||||
|
@case(route('Admin.orders.index'))
|
||||||
|
<option value="">订单状态</option>
|
||||||
|
<option value="UNPAY" @if(Request::get('state') == 'UNPAY') selected @endif>待支付</option>
|
||||||
|
<option value="PAID" @if(Request::get('state') == 'PAID') selected @endif>已支付</option>
|
||||||
|
<option value="DELIVERED" @if(Request::get('state') == 'DELIVERED') selected @endif>已发货</option>
|
||||||
|
<option value="SIGNED" @if(Request::get('state') == 'SIGNED') selected @endif>已签收</option>
|
||||||
|
<option value="CLOSED" @if(Request::get('state') == 'CLOSED') selected @endif>已关闭</option>
|
||||||
|
<option value="CANCEL" @if(Request::get('state') == 'CANCEL') selected @endif>已取消</option>
|
||||||
|
<option value="COMPLETED" @if(Request::get('state') == 'COMPLETED') selected @endif>已完成</option>
|
||||||
|
@break
|
||||||
|
@case(route('Admin.orders.unpay'))
|
||||||
|
<option value="UNPAY">待支付</option>
|
||||||
|
@break
|
||||||
|
@case(route('Admin.orders.paid'))
|
||||||
|
<option value="PAID">已支付</option>
|
||||||
|
@break
|
||||||
|
@case(route('Admin.orders.signed'))
|
||||||
|
<option value="SIGNED">已签收</option>
|
||||||
|
@break
|
||||||
|
@endswitch
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td></td>
|
||||||
|
<td><div class="buttonActive"><div class="buttonContent"><button type="submit">检索结果</button></div></div></td>
|
||||||
|
<td><div class="buttonActive"><div class="buttonContent"><button type="button" class="export-data">导出数据</button></div></div></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pageContent">
|
||||||
|
<table class="table" width="100%" layoutH="112">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th width="140">订单编号</th>
|
||||||
|
<th width="80">商户名称</th>
|
||||||
|
<th width="80">手机号</th>
|
||||||
|
<th width="80">用户名</th>
|
||||||
|
<th width="200">商品信息</th>
|
||||||
|
<th width="60">商品金额</th>
|
||||||
|
<th width="60">运费</th>
|
||||||
|
<th width="60">抵值</th>
|
||||||
|
<th width="60">实际支付</th>
|
||||||
|
<th width="60">配送</th>
|
||||||
|
<th width="120">收件地址</th>
|
||||||
|
<th width="60">状态</th>
|
||||||
|
<th></th>
|
||||||
|
<th width="100" orderField="created_at" @if (Request::input('orderField') == 'created_at') class="{{ Request::input('orderDirection') }}" @endif>创建时间</th>
|
||||||
|
<th width="100" orderField="paid_at" @if (Request::input('orderField') == 'paid_at') class="{{ Request::input('orderDirection') }}" @endif>支付时间</th>
|
||||||
|
<th width="200"></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@foreach ($orders as $order)
|
||||||
|
<tr target="sid" rel="{{ $order->id }}">
|
||||||
|
<td>
|
||||||
|
{{ $order->orderid }}
|
||||||
|
</td>
|
||||||
|
<td>{{ $order->seller->name }}</td>
|
||||||
|
<td>{{ $order->user->mobile }}</td>
|
||||||
|
<td>{{ $order->user->info->nickname }}</td>
|
||||||
|
<td> @foreach ($order->details as $detail)
|
||||||
|
@if($detail->item){{ $detail->item->getTitle() ?? '未知'}} @endif <span style="color: red;font-size: 12px"><b>{{ number_format($detail->price,2) }}</b> * {{ $detail->number }}</span>
|
||||||
|
@endforeach
|
||||||
|
</td>
|
||||||
|
<td>{{ number_format($order->amount,2) }}</td>
|
||||||
|
<td>{{ number_format($order->freight, 2)}}</td>
|
||||||
|
<td>{{ number_format($order->score, 2) }}</td>
|
||||||
|
<td>{{ number_format($order->total - $order->score, 2) }}</td>
|
||||||
|
<td>{!! $order->express_type == 1 ? '快递' : '<span style="color: #ec6d64;">不需邮寄</span>' !!}</td>
|
||||||
|
<td>{{ $order->express->name ?? '' }} {{ $order->express->mobile ?? '' }} {{ $order->express->address ?? '' }}</td>
|
||||||
|
<td>{{ $order->state_text }}</td>
|
||||||
|
<td>{{ $order->remark }}</td>
|
||||||
|
<td>{{ $order->created_at }}</td>
|
||||||
|
<td>{{ $order->paid_at }}</td>
|
||||||
|
<td>
|
||||||
|
@if ($order->canDeliver() && $order->express_type == 1)
|
||||||
|
<a title="订单发货" target="dialog" href="{{ route('Admin.orders.deliver', $order) }}" width="550" height="250">订单发货</a>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
@if ($order->canDeliver() && $order->express_type == 0)
|
||||||
|
<a title="自提完成" target="ajaxTodo" href="{{ route('Admin.orders.signin', $order) }}">自提完成</a>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
@if ($order->canComplete())
|
||||||
|
<a title="完成订单?" target="ajaxTodo" href="{{ route('Admin.orders.complete', $order) }}">完成订单</a>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
@if (!empty($order->express->company) && !empty($order->express->number))
|
||||||
|
<a title="物流跟踪" target="dialog" href="{{ route('Admin.orders.logistic', $order) }}" width="550" height="450">物流跟踪</a>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
@if ($order->canClose())
|
||||||
|
<a title="关闭订单?" target="ajaxTodo" href="{{ route('Admin.orders.close', $order) }}">关闭订单</a>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
<a title="订单详情" target="navTab" rel="ordershow" href="{{ route('Admin.orders.show', $order) }}">订单详情</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
@endforeach
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<div class="panelBar">
|
||||||
|
<form id="pagerForm" method="post" action="#rel#">
|
||||||
|
<input type="hidden" name="page" order="{{ $orders->currentPage() }}" />
|
||||||
|
<input type="hidden" name="numPerPage" order="{{ $orders->perPage() }}" />
|
||||||
|
<input type="hidden" name="orderField" order="{{ Request::input('orderField') }}" />
|
||||||
|
<input type="hidden" name="orderDirection" order="{{ Request::input('orderDirection') }}" />
|
||||||
|
</form>
|
||||||
|
<div class="pages">
|
||||||
|
<span>显示</span>
|
||||||
|
<select class="combox" name="numPerPage" onchange="navTabPageBreak({numPerPage:this.order})">
|
||||||
|
<option @if ($orders->perPage() == 30) selected @endif value="30">30</option>
|
||||||
|
<option @if ($orders->perPage() == 100) selected @endif value="100">100</option>
|
||||||
|
<option @if ($orders->perPage() == 200) selected @endif value="200">200</option>
|
||||||
|
</select>
|
||||||
|
<span>条,共 {{ $orders->total() }} 条</span>
|
||||||
|
</div>
|
||||||
|
<div class="pagination" targetType="navTab" totalCount="{{ $orders->total() }}" numPerPage="{{ $orders->perPage() }}" pageNumShown="10" currentPage="{{ $orders->currentPage() }}"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript">
|
||||||
|
//点击导出
|
||||||
|
$('.export-data').click(function (event) {
|
||||||
|
location.href = "{{ route('Admin.export.orders') }}?" + $(this).parents('form').serialize();
|
||||||
|
});
|
||||||
|
</script>
|
||||||
40
app/Admin/Views/orders/logistic.blade.php
Normal file
40
app/Admin/Views/orders/logistic.blade.php
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
<div class="pageContent">
|
||||||
|
<div class="pageFormContent" layoutH="59">
|
||||||
|
<div class="unit">
|
||||||
|
<label>订单编号:</label>
|
||||||
|
<input type="text" value="{{ $order->orderid }}" disabled/>
|
||||||
|
</div>
|
||||||
|
@if($message['code'] == 'OK')
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>物流信息:</label>
|
||||||
|
<input type="text" value="{{ $message['name'] }}" disabled/>
|
||||||
|
</div>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>物流单号:</label>
|
||||||
|
<input type="text" value="{{ $message['no'] }}" disabled/>
|
||||||
|
</div>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>物流跟踪:</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="unit">
|
||||||
|
<div style="width: 100%">
|
||||||
|
@foreach($message['list'] as $logistic)
|
||||||
|
<p style="line-height: 18px;height: 60px">{{ $logistic->content }}<br>{{ $logistic->time }}</p>
|
||||||
|
@endforeach
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
@else
|
||||||
|
<div class="unit">
|
||||||
|
<label>物流跟踪:</label>
|
||||||
|
<p style="color: red">{{ $message['msg'] }}</p>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
24
app/Admin/Views/orders/remark.blade.php
Normal file
24
app/Admin/Views/orders/remark.blade.php
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<div class="pageContent">
|
||||||
|
<form method="post" action="{{ url()->current() }}" class="pageForm required-validate" onsubmit="return validateCallback(this, dialogAjaxDone)">
|
||||||
|
<div class="pageFormContent" layoutH="59">
|
||||||
|
<div class="unit">
|
||||||
|
<label>订单编号:</label>
|
||||||
|
<input type="text" value="{{ $order->orderid }}" disabled/>
|
||||||
|
</div>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<div class="unit">
|
||||||
|
<label>订单备注:</label>
|
||||||
|
<textarea name="remark_mgr" placeholder="请输入备注内容" rows="3"></textarea>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="formBar">
|
||||||
|
<ul>
|
||||||
|
@csrf
|
||||||
|
@method('PUT')
|
||||||
|
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
|
||||||
|
<li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
106
app/Admin/Views/orders/show.blade.php
Normal file
106
app/Admin/Views/orders/show.blade.php
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
<div class="pageContent">
|
||||||
|
<table class="table" width="100%" layoutH="85">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td colspan="12" style="text-align: right;color: red;font-weight: bold">订单信息:</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="3" style="text-align: right">@switch($order->item_type)
|
||||||
|
@case('GOODS')
|
||||||
|
<span style="font-size: .6rem;padding: 0 .2rem;border:.05rem solid #39a6ad;color: #39a6ad;line-height: .9rem;margin-top: .05rem;border-radius: .2rem;margin-right: .5rem">商品订单</span>
|
||||||
|
@break
|
||||||
|
@case('ACTIVITY')
|
||||||
|
<span style="font-size: .6rem;padding: 0 .2rem;border:.05rem solid #ec6d64;color: #ec6d64;line-height: .9rem;margin-top: .05rem;border-radius: .2rem;margin-right: .5rem">娱乐/生活</span>
|
||||||
|
@break
|
||||||
|
@case('GIFT')
|
||||||
|
<span style="font-size: .6rem;padding: 0 .2rem;border:.05rem solid #ec6d64;color: #ec6d64;line-height: .9rem;margin-top: .05rem;border-radius: .2rem;margin-right: .5rem">报名赠品</span>
|
||||||
|
@break
|
||||||
|
@case('LESSON')
|
||||||
|
<span style="font-size: .6rem;padding: 0 .2rem;border:.05rem solid #ec6d64;color: #ec6d64;line-height: .9rem;margin-top: .05rem;border-radius: .2rem;margin-right: .5rem">课程</span>
|
||||||
|
@break
|
||||||
|
@endswitch{{ $order->orderid }}</td>
|
||||||
|
<td colspan="3" style="text-align: right">下单用户:{{ $order->user->mobile }}{{ $order->user->info->nickname }}</td>
|
||||||
|
<td colspan="3" style="text-align: right">创建时间:{{ $order->created_at }}</td>
|
||||||
|
<td colspan="3" style="text-align: right">订单状态:{{ $order->status_text }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="12" style="text-align: right;color: red;font-weight: bold">支付时间:{{ $order->paid_at }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="3" style="text-align: right">商品金额:{{ number_format($order->amount,2) }}</td>
|
||||||
|
<td colspan="3" style="text-align: right">订单运费:{{ number_format($order->freight, 2)}}</td>
|
||||||
|
<td colspan="3" style="text-align: right">抵值:-{{ number_format($order->score, 2) }}</td>
|
||||||
|
<td colspan="3" style="text-align: right">总计支付:{{ number_format($order->total - $order->score, 2) }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="12" style="text-align: right;color: red;font-weight: bold">商户信息:</td>
|
||||||
|
</tr>
|
||||||
|
<!-- <tr>
|
||||||
|
<td colspan="3" style="text-align: right">商户名称:{{ $order->seller->name }}</td>
|
||||||
|
<td colspan="3" style="text-align: right">
|
||||||
|
总成本:{{ number_format($order->seller_amount, 2) }}</td>
|
||||||
|
<td colspan="3" style="text-align: right">
|
||||||
|
结算运费:{{ number_format($order->seller_freight, 2) }}</td>
|
||||||
|
<td colspan="3" style="text-align: right">
|
||||||
|
结算金额:{{ number_format($order->seller_amount + $order->seller_freight, 2) }}</td>
|
||||||
|
</tr> -->
|
||||||
|
<tr>
|
||||||
|
<td colspan="12" style="text-align: right;color: red;font-weight: bold">产品信息:</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="4" style="text-align: right">产品名称:</td>
|
||||||
|
<td colspan="4" style="text-align: right">单价*数量:</td>
|
||||||
|
<td colspan="4" style="text-align: right">小计:</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
@foreach ($order->details as $detail)
|
||||||
|
<tr>
|
||||||
|
|
||||||
|
<td colspan="4" style="text-align: right">{{ $detail->item->getTitle() }}</td>
|
||||||
|
<td colspan="4" style="text-align: right">{{ $detail->price }} * {{ $detail->number }}</td>
|
||||||
|
<td colspan="4" style="text-align: right">{{ number_format($detail->total,2) }}</td>
|
||||||
|
</tr>
|
||||||
|
@endforeach
|
||||||
|
<tr>
|
||||||
|
<td colspan="12" style="text-align: right;color: red;font-weight: bold">收货信息:</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="3" style="text-align: right">配送方式:{!! $order->express_type == 1 ? '快递' : '<span style="color: #ec6d64;">自提</span>' !!}</td>
|
||||||
|
<td colspan="3" style="text-align: right">收件人:{{ $order->express->name ?? '' }}</td>
|
||||||
|
<td colspan="3" style="text-align: right">手机号:{{ $order->express->mobile ?? '' }}</td>
|
||||||
|
<td colspan="3" style="text-align: right">地址:{{ $order->express->address ?? '' }}</td>
|
||||||
|
</tr>
|
||||||
|
@if(!empty($order->express->number))
|
||||||
|
<tr>
|
||||||
|
<td colspan="12" style="text-align: right;color: red;font-weight: bold">发货信息:</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
|
||||||
|
|
||||||
|
<td colspan="6" style="text-align: right">物流公司:{{ $order->express->company ?? '' }}</td>
|
||||||
|
<td colspan="6" style="text-align: right">快递单号:{{ $order->express->number ?? '' }}</td>
|
||||||
|
</tr>
|
||||||
|
@endif
|
||||||
|
<tr>
|
||||||
|
<td colspan="12" style="text-align: right;color: red;font-weight: bold">买家留言:</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="12" style="text-align: right">{{ $order->remark ?? '买家无留言' }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="12" style="text-align: right;color: red;font-weight: bold">管理员备注:</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="12" style="text-align: right;height: 40px">
|
||||||
|
@if($order->remark_mgr)
|
||||||
|
管理元备注内容:{{ $order->remark_mgr }}
|
||||||
|
|
||||||
|
@else
|
||||||
|
<a title="备注订单" target="dialog" href="{{ route('Admin.orders.remark', $order) }}" width="350" height="250" ><span style="border: solid 1px #ededed; background-color:#1153ff;color:white;padding: 5px;border-radius: 3px">备注订单</span></a>
|
||||||
|
@endif
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</div>
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user