BannerRepository.php 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. <?php
  2. namespace App\Repositories;
  3. use App\Models\Banner;
  4. use Dingo\Api\Http\Response;
  5. use Illuminate\Support\Facades\Log;
  6. use Symfony\Component\HttpKernel\Exception\HttpException;
  7. use Tymon\JWTAuth\Facades\JWTAuth;
  8. /**
  9. * Created by PhpStorm.
  10. * User: durong
  11. * Date: 2019/6/4
  12. * Time: 上午9:39
  13. */
  14. class BannerRepository
  15. {
  16. public function __construct(Banner $banner)
  17. {
  18. $this->banner = $banner;
  19. }
  20. public function index($request)
  21. {
  22. $perPage = isset($request['per_page']) ? $request['per_page'] : env('PER_PAGE');
  23. $where = [];
  24. if(isset($request['id'])){
  25. $where[] = ['id', '=', $request['id']];
  26. }
  27. if(isset($request['is_open'])){
  28. $where[] = ['is_open', '=', $request['is_open']];
  29. }
  30. if (isset($request['name'])){
  31. $where[] = ['name', 'like', "%{$request['name']}%"];
  32. }
  33. return $this->banner->where($where)->orderBy('id', 'desc')->paginate($perPage);
  34. }
  35. public function bannerSets($request)
  36. {
  37. if ($request['use_background'] == 0){
  38. $banner = [
  39. 'status' => 0,
  40. 'tpl_id' => $request['tpl_id'],
  41. 'area_type' => $request['area_type'],
  42. 'rule' => json_encode($request['rule']),
  43. ];
  44. }else{
  45. $banner = [
  46. 'name' => $request['name'],
  47. 'link_content_id' => $request['link_content_id'],
  48. 'image' => $request['image'],
  49. 'type' => $request['type'],
  50. 'is_open' => $request['is_open'] ?? '',
  51. ];
  52. }
  53. $banner['use_background'] = $request['use_background'];
  54. $banner['created_at'] = date('Y-m-d H:i:s');
  55. $banner['updated_at'] = date('Y-m-d H:i:s');
  56. $res = $this->banner->create($banner);
  57. if (!$res) {
  58. throw new HttpException(500, '添加失败,请重试');
  59. }
  60. if ($request['use_background'] == 0){
  61. $request['type'] = 0;//0表示新增
  62. $request['id'] = $res['id'];
  63. $request['rule'] = $res['rule'];
  64. $this->bannerIds($request);
  65. }
  66. }
  67. public function edit($request)
  68. {
  69. $banner = $this->banner->where('id', $request['id'])->first();
  70. $rule = $request['rule'];
  71. $banner->use_background = $request['use_background'];
  72. $banner->updated_at = date('Y-m-d H:i:s');
  73. if ($request['use_background'] == 0){
  74. $request['old_rule'] = $banner->rule;
  75. $banner->tpl_id = $request['tpl_id'];
  76. $banner->area_type = $request['area_type'];
  77. $banner->rule = json_encode($rule);
  78. $banner->status = 0;
  79. $banner_update = $banner->save();
  80. if (!$banner_update) {
  81. throw new HttpException(500, 'cms-banner更新失败');
  82. }
  83. $request['id'] = $banner->id;
  84. $request['rule'] = $rule;
  85. $request['type'] = 1;//1表示修改
  86. $this->bannerIds($request);
  87. }else{
  88. $banner->name = $request['name'];
  89. $banner->link_content_id = $request['link_content_id'];
  90. $banner->image = $request['image'];
  91. $banner->type = $request['type'];
  92. $banner->is_open = $request['is_open'] ?? '';
  93. $banner_update = $banner->save();
  94. if (!$banner_update) {
  95. throw new HttpException(500, '社区banner更新失败');
  96. }
  97. }
  98. }
  99. function bannerIds($request)
  100. {
  101. try {
  102. $url = config("customer.manage_service_url") . '/cms/v2/countSubject';
  103. if ($request['type'] == 0){
  104. $array = [
  105. 'json' => ['id' => $request['id'],'rule' => $request['rule'],'type' => $request['type']], 'query' => [], 'http_errors' => false, 'headers' => ['Authorization' => "Bearer " . JWTAuth::getToken()]
  106. ];
  107. }else{
  108. $array = [
  109. 'json' => ['id' => $request['id'],'rule' => $request['rule'],'type' => $request['type'],'old_rule' =>$request['old_rule']], 'query' => [], 'http_errors' => false, 'headers' => ['Authorization' => "Bearer " . JWTAuth::getToken()]
  110. ];
  111. }
  112. return http($url, $array, 'post');
  113. } catch (\Exception $e) {
  114. return [];
  115. }
  116. }
  117. public function bannerDelete($request)
  118. {
  119. $advertisement = $this->banner->where('id', $request['id'])->first();
  120. $res = $advertisement->delete();
  121. if (!$res){
  122. return Response::create([
  123. 'message' => '删除失败,请重试',
  124. 'status_code' => 500
  125. ]);
  126. }
  127. $request['banner_id'] = $advertisement->id;
  128. $this->editFloorBind($request);
  129. }
  130. public function editStatus($request)
  131. {
  132. $banner_id = $this->banner->find($request['id']);
  133. $banner_id->is_open = $request['is_open'];
  134. $banner_id->updated_at = date('Y-m-d H:i:s');
  135. $res = $banner_id->save();
  136. if (!$res) {
  137. throw new HttpException(500, '修改状态失败');
  138. }
  139. //banner关闭检测绑定楼层是否只有一个banner
  140. if ($request['is_open'] == 0){
  141. $request['banner_id'] = $request['id'];
  142. $this->editFloorBind($request);
  143. }
  144. }
  145. function editFloorBind($request)
  146. {
  147. try {
  148. $url = config("customer.manage_service_url") . '/cms/v2/floorBind';
  149. $array = [
  150. 'json' => ['banner_id' => $request['banner_id']], 'query' => [], 'http_errors' => false, 'headers' => ['Authorization' => "Bearer " . JWTAuth::getToken()]
  151. ];
  152. return http($url, $array, 'post');
  153. } catch (\Exception $e) {
  154. return [];
  155. }
  156. }
  157. }