272 lines
9.5 KiB
PHP
272 lines
9.5 KiB
PHP
<?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];
|
|
}
|
|
}
|
|
|
|
}
|