BannerRepository.php 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. <?php
  2. namespace App\Repositories;
  3. use App\Models\Banner;
  4. use Dingo\Api\Http\Response;
  5. use Symfony\Component\HttpKernel\Exception\HttpException;
  6. use Tymon\JWTAuth\Facades\JWTAuth;
  7. /**
  8. * Created by PhpStorm.
  9. * User: durong
  10. * Date: 2019/6/4
  11. * Time: 上午9:39
  12. */
  13. class BannerRepository
  14. {
  15. public function __construct(Banner $banner)
  16. {
  17. $this->banner = $banner;
  18. }
  19. public function index($request)
  20. {
  21. $perPage = isset($request['per_page']) ? $request['per_page'] : env('PER_PAGE');
  22. $where = [];
  23. if(isset($request['id'])){
  24. $where[] = ['id', '=', $request['id']];
  25. }
  26. if(isset($request['is_open'])){
  27. $where[] = ['is_open', '=', $request['is_open']];
  28. }
  29. if (isset($request['name'])){
  30. $where[] = ['name', 'like', "%{$request['name']}%"];
  31. }
  32. return $this->banner->where($where)->orderBy('id', 'desc')->paginate($perPage);
  33. }
  34. public function bannerSets($request)
  35. {
  36. if ($request['use_background'] == 0){
  37. $banner = [
  38. 'status' => 0,
  39. 'tpl_id' => $request['tpl_id'],
  40. 'area_type' => $request['area_type'],
  41. 'rule' => json_encode($request['rule']),
  42. ];
  43. }else{
  44. $banner = [
  45. 'name' => $request['name'],
  46. 'link_content_id' => $request['link_content_id'],
  47. 'image' => $request['image'],
  48. 'type' => $request['type'],
  49. 'is_open' => $request['is_open'] ?? '',
  50. ];
  51. }
  52. $banner['use_background'] = $request['use_background'];
  53. $banner['created_at'] = date('Y-m-d H:i:s');
  54. $banner['updated_at'] = date('Y-m-d H:i:s');
  55. $res = $this->banner->create($banner);
  56. if (!$res) {
  57. throw new HttpException(500, '添加失败,请重试');
  58. }
  59. if ($request['use_background'] == 0){
  60. $request['type'] = 0;//0表示新增
  61. $request['id'] = $res['id'];
  62. $request['rule'] = $res['rule'];
  63. $this->bannerIds($request);
  64. }
  65. }
  66. public function edit($request)
  67. {
  68. $banner = $this->banner->where('id', $request['id'])->first();
  69. $rule = $request['rule'];
  70. $banner->use_background = $request['use_background'];
  71. $banner->updated_at = date('Y-m-d H:i:s');
  72. if ($request['use_background'] == 0){
  73. $banner->tpl_id = $request['tpl_id'];
  74. $banner->area_type = $request['area_type'];
  75. $banner->rule = json_encode($rule);
  76. $banner->status = 0;
  77. $banner_update = $banner->save();
  78. if (!$banner_update) {
  79. throw new HttpException(500, 'cms-banner更新失败');
  80. }
  81. $old_subject_id = $this->banner->select('rule')->find($request['id']);
  82. $request['id'] = $banner_update['id'];
  83. $request['rule'] = $rule;
  84. $request['old_rule'] = $old_subject_id->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/count_subject';
  103. if ($request['type'] == 0){
  104. $array = [
  105. 'json' => ['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. }
  128. }