0
0
Files
Babyclass/app/Admin/Controllers/ActivityController.php
2020-08-04 10:09:42 +08:00

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