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