floor = $floor; } public function index($request) { $where = []; if(isset($request['id'])){ $where[] = ['id', '=', $request['id']]; } return $this->floor->where($where)->orderBy('id', 'asc')->paginate(20); } public function create($request) { $strlen = mb_strlen($request['name'], "utf-8"); if ($strlen > 20) { throw new HttpException(500, '名称不能超过20字'); } if (is_array($request['group_ids'])){ $group_ids = implode(',',$request['group_ids']); }else{ $group_ids = $request['group_ids']; } $data = [ 'name' => $request['name'], 'floor_location' => $request['floor_location'], 'group_ids' => $group_ids,//多个banner用英文,隔开 'floor_type' => $request['floor_type'], 'is_open' => $request['is_open'] ]; if (!$this->floor->create($data)) { throw new HttpException(500, '添加失败'); } } public function edit($request) { $floor = $this->floor->where('id', $request['id'])->first(); $strlen = mb_strlen($request['name'], "utf-8"); if ($strlen > 20) { throw new HttpException(500, '名称不能超过20字'); } if (is_array($request['group_ids'])){ $group_ids = implode(',',$request['group_ids']); }else{ $group_ids = $request['group_ids']; } $floor->name = $request['name']; $floor->floor_location = $request['floor_location']; $floor->group_ids = $group_ids; $floor->floor_type = $request['floor_type']; $floor->is_open = $request['is_open'] ?? 0; DB::beginTransaction(); try{ $res = $floor->save(); Redis::DEL('suggest_post_floor'); if($res){ DB::commit(); return Response::create(); } DB::rollBack(); return Response::create([ 'message' => '编辑失败,请重试', 'status_code' => 500 ]); }catch (QueryException $exception){ Log::debug('编辑楼层:'.$exception->getMessage()); DB::rollBack(); return Response::create([ 'message' => '编辑失败,请重试', 'error' => $exception->getMessage(), 'status_code' => 500 ]); } } public function editStatus($request) { $floor = $this->floor->find($request['id']); $floor->is_open = $request['is_open']; $floor->updated_at = date('Y-m-d H:i:s'); $res = $floor->save(); if (!$res) { throw new HttpException(500, '修改状态失败'); } } public function floorBind($request) { $banner_id = $request['banner_id']; $floor_array = $this->floor->select('id','group_ids')->where('floor_type',0)->get(); $floor_ids = []; foreach ($floor_array->toArray() as $value){ if ($banner_id == $value['group_ids']){ $floor_ids[] = $value['id']; } } if (count($floor_ids)>0){ $edit_floor = $this->floor->whereIn('id',$floor_ids)->update(['is_open'=>0]); if (!$edit_floor){ throw new HttpException(500, '该楼层关闭失败'); } } } }