banner = $banner; } public function index($request) { $perPage = isset($request['per_page']) ? $request['per_page'] : env('PER_PAGE'); $where = []; if(isset($request['id'])){ $where[] = ['id', '=', $request['id']]; } if(isset($request['is_open'])){ $where[] = ['is_open', '=', $request['is_open']]; } if (isset($request['name'])){ $where[] = ['name', 'like', "%{$request['name']}%"]; } if (isset($request['use_background'])){ $where[] = ['use_background', '=', $request['use_background']]; } return $this->banner->where($where)->orderBy('id', 'desc')->paginate($perPage); } public function bannerSets($request) { if ($request['use_background'] == 0){ $banner = [ 'status' => 0, 'tpl_id' => $request['tpl_id'], 'area_type' => $request['area_type'], 'rule' => json_encode($request['rule']), ]; }else{ if (!is_int($request['link_content_id'])){ throw new HttpException(500, '链接内容必须是数字'); } $strlen = mb_strlen($request['name'], "utf-8"); if ($strlen > 20) { throw new HttpException(500, '名称不能超过20字'); } $banner = [ 'name' => $request['name'], 'link_content_id' => $request['link_content_id'], 'image' => $request['image'], 'type' => $request['type'], 'is_open' => $request['is_open'] ?? '', ]; } $banner['use_background'] = $request['use_background']; $banner['created_at'] = date('Y-m-d H:i:s'); $banner['updated_at'] = date('Y-m-d H:i:s'); $res = $this->banner->create($banner); if (!$res) { throw new HttpException(500, '添加失败,请重试'); } if ($request['use_background'] == 0){ $request['type'] = 0;//0表示新增 $request['id'] = $res['id']; $request['rule'] = $res['rule']; $this->bannerIds($request); } } public function edit($request) { $banner = $this->banner->where('id', $request['id'])->first(); $rule = $request['rule']; $banner->use_background = $request['use_background']; $banner->updated_at = date('Y-m-d H:i:s'); if ($request['use_background'] == 0){ $request['old_rule'] = $banner->rule; $banner->tpl_id = $request['tpl_id']; $banner->area_type = $request['area_type']; $banner->rule = json_encode($rule); $banner->status = 0; $banner_update = $banner->save(); if (!$banner_update) { throw new HttpException(500, 'cms-banner更新失败'); } $request['id'] = $banner->id; $request['rule'] = $rule; $request['type'] = 1;//1表示修改 $this->bannerIds($request); }else{ if (!is_int($request['link_content_id'])){ throw new HttpException(500, '链接内容必须是数字'); } $strlen = mb_strlen($request['name'], "utf-8"); if ($strlen > 20) { throw new HttpException(500, '名称不能超过20字'); } $banner->name = $request['name']; $banner->link_content_id = $request['link_content_id']; $banner->image = $request['image']; $banner->type = $request['type']; $banner->is_open = $request['is_open'] ?? ''; $banner_update = $banner->save(); if (!$banner_update) { throw new HttpException(500, '社区banner更新失败'); } } } function bannerIds($request) { try { $url = config("customer.manage_service_url") . '/cms/v2/countSubject'; if ($request['type'] == 0){ $array = [ 'json' => ['id' => $request['id'],'rule' => $request['rule'],'type' => $request['type']], 'query' => [], 'http_errors' => false, 'headers' => ['Authorization' => "Bearer " . JWTAuth::getToken()] ]; }else{ $array = [ 'json' => ['id' => $request['id'],'rule' => $request['rule'],'type' => $request['type'],'old_rule' =>$request['old_rule']], 'query' => [], 'http_errors' => false, 'headers' => ['Authorization' => "Bearer " . JWTAuth::getToken()] ]; } return http($url, $array, 'post'); } catch (\Exception $e) { return []; } } public function bannerDelete($request) { $advertisement = $this->banner->where('id', $request['id'])->first(); $res = $advertisement->delete(); if (!$res){ return Response::create([ 'message' => '删除失败,请重试', 'status_code' => 500 ]); } $request['banner_id'] = $advertisement->id; $this->editFloorBind($request); } public function editStatus($request) { $banner_id = $this->banner->find($request['id']); $banner_id->is_open = $request['is_open']; $banner_id->updated_at = date('Y-m-d H:i:s'); $res = $banner_id->save(); if (!$res) { throw new HttpException(500, '修改状态失败'); } //banner关闭检测绑定楼层是否只有一个banner if ($request['is_open'] == 0){ $request['banner_id'] = $request['id']; $this->editFloorBind($request); } } function editFloorBind($request) { try { $url = config("customer.manage_service_url") . '/cms/v2/floorBind'; $array = [ 'json' => ['banner_id' => $request['banner_id']], 'query' => [], 'http_errors' => false, 'headers' => ['Authorization' => "Bearer " . JWTAuth::getToken()] ]; return http($url, $array, 'post'); } catch (\Exception $e) { return []; } } }