123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202 |
- <?php
- namespace App\Repositories;
- use App\Models\Banner;
- use Dingo\Api\Http\Response;
- use Illuminate\Support\Facades\Log;
- use Symfony\Component\HttpKernel\Exception\HttpException;
- use Tymon\JWTAuth\Facades\JWTAuth;
- /**
- * Created by PhpStorm.
- * User: durong
- * Date: 2019/6/4
- * Time: 上午9:39
- */
- class BannerRepository
- {
- public function __construct(Banner $banner)
- {
- $this->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 [];
- }
- }
- }
|