BannerRepository.php 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  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. if (isset($request['use_background'])){
  34. $where[] = ['use_background', '=', $request['use_background']];
  35. }
  36. return $this->banner->where($where)->orderBy('id', 'desc')->paginate($perPage);
  37. }
  38. public function bannerSets($request)
  39. {
  40. if ($request['use_background'] == 0){
  41. $banner = [
  42. 'status' => 0,
  43. 'tpl_id' => $request['tpl_id'],
  44. 'area_type' => $request['area_type'],
  45. 'rule' => json_encode($request['rule']),
  46. ];
  47. }else{
  48. if (!is_int($request['link_content_id'])){
  49. throw new HttpException(500, '链接内容必须是数字');
  50. }
  51. $banner = [
  52. 'name' => $request['name'],
  53. 'link_content_id' => $request['link_content_id'],
  54. 'image' => $request['image'],
  55. 'type' => $request['type'],
  56. 'is_open' => $request['is_open'] ?? '',
  57. ];
  58. }
  59. $banner['use_background'] = $request['use_background'];
  60. $banner['created_at'] = date('Y-m-d H:i:s');
  61. $banner['updated_at'] = date('Y-m-d H:i:s');
  62. $res = $this->banner->create($banner);
  63. if (!$res) {
  64. throw new HttpException(500, '添加失败,请重试');
  65. }
  66. if ($request['use_background'] == 0){
  67. $request['type'] = 0;//0表示新增
  68. $request['id'] = $res['id'];
  69. $request['rule'] = $res['rule'];
  70. $this->bannerIds($request);
  71. }
  72. }
  73. public function edit($request)
  74. {
  75. $banner = $this->banner->where('id', $request['id'])->first();
  76. $rule = $request['rule'];
  77. $banner->use_background = $request['use_background'];
  78. $banner->updated_at = date('Y-m-d H:i:s');
  79. if ($request['use_background'] == 0){
  80. $request['old_rule'] = $banner->rule;
  81. $banner->tpl_id = $request['tpl_id'];
  82. $banner->area_type = $request['area_type'];
  83. $banner->rule = json_encode($rule);
  84. $banner->status = 0;
  85. $banner_update = $banner->save();
  86. if (!$banner_update) {
  87. throw new HttpException(500, 'cms-banner更新失败');
  88. }
  89. $request['id'] = $banner->id;
  90. $request['rule'] = $rule;
  91. $request['type'] = 1;//1表示修改
  92. $this->bannerIds($request);
  93. }else{
  94. if (!is_int($request['link_content_id'])){
  95. throw new HttpException(500, '链接内容必须是数字');
  96. }
  97. $banner->name = $request['name'];
  98. $banner->link_content_id = $request['link_content_id'];
  99. $banner->image = $request['image'];
  100. $banner->type = $request['type'];
  101. $banner->is_open = $request['is_open'] ?? '';
  102. $banner_update = $banner->save();
  103. if (!$banner_update) {
  104. throw new HttpException(500, '社区banner更新失败');
  105. }
  106. }
  107. }
  108. function bannerIds($request)
  109. {
  110. try {
  111. $url = config("customer.manage_service_url") . '/cms/v2/countSubject';
  112. if ($request['type'] == 0){
  113. $array = [
  114. 'json' => ['id' => $request['id'],'rule' => $request['rule'],'type' => $request['type']], 'query' => [], 'http_errors' => false, 'headers' => ['Authorization' => "Bearer " . JWTAuth::getToken()]
  115. ];
  116. }else{
  117. $array = [
  118. 'json' => ['id' => $request['id'],'rule' => $request['rule'],'type' => $request['type'],'old_rule' =>$request['old_rule']], 'query' => [], 'http_errors' => false, 'headers' => ['Authorization' => "Bearer " . JWTAuth::getToken()]
  119. ];
  120. }
  121. return http($url, $array, 'post');
  122. } catch (\Exception $e) {
  123. return [];
  124. }
  125. }
  126. public function bannerDelete($request)
  127. {
  128. $advertisement = $this->banner->where('id', $request['id'])->first();
  129. $res = $advertisement->delete();
  130. if (!$res){
  131. return Response::create([
  132. 'message' => '删除失败,请重试',
  133. 'status_code' => 500
  134. ]);
  135. }
  136. $request['banner_id'] = $advertisement->id;
  137. $this->editFloorBind($request);
  138. }
  139. public function editStatus($request)
  140. {
  141. $banner_id = $this->banner->find($request['id']);
  142. $banner_id->is_open = $request['is_open'];
  143. $banner_id->updated_at = date('Y-m-d H:i:s');
  144. $res = $banner_id->save();
  145. if (!$res) {
  146. throw new HttpException(500, '修改状态失败');
  147. }
  148. //banner关闭检测绑定楼层是否只有一个banner
  149. if ($request['is_open'] == 0){
  150. $request['banner_id'] = $request['id'];
  151. $this->editFloorBind($request);
  152. }
  153. }
  154. function editFloorBind($request)
  155. {
  156. try {
  157. $url = config("customer.manage_service_url") . '/cms/v2/floorBind';
  158. $array = [
  159. 'json' => ['banner_id' => $request['banner_id']], 'query' => [], 'http_errors' => false, 'headers' => ['Authorization' => "Bearer " . JWTAuth::getToken()]
  160. ];
  161. return http($url, $array, 'post');
  162. } catch (\Exception $e) {
  163. return [];
  164. }
  165. }
  166. }