AdvertisementController.php 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use App\Filters\AdvertisementFilter;
  4. use App\Http\Requests\AdvertisementRequest;
  5. use App\Http\Resources\AdvertisementResource;
  6. use App\Models\AdminUser;
  7. use App\Models\AdminUserArea;
  8. use App\Models\Advertisement;
  9. use App\Models\Area;
  10. use App\Utils\Admin;
  11. use App\Utils\QiNiuUpload;
  12. use Illuminate\Http\Request;
  13. use App\Http\Controllers\Controller;
  14. use Illuminate\Support\Facades\Log;
  15. class AdvertisementController extends Controller
  16. {
  17. /**
  18. * @param AdvertisementFilter $filter
  19. * @param Request $request
  20. * @return \Illuminate\Http\JsonResponse
  21. * @author Fx
  22. */
  23. public function index(AdvertisementFilter $filter, Request $request)
  24. {
  25. $admin_id = Admin::user()->id;
  26. $advertisement = Advertisement::query()->filter($filter)->orderByDesc('id');
  27. if (!Admin::isAdministrator()) {
  28. $area_ids = AdminUser::getAreaIdsByAdminId($admin_id);
  29. if (count($area_ids) !== 0) {
  30. $advertisement = $advertisement->where(function ($q) use ($area_ids) {
  31. $q->whereIn('area_id', $area_ids)->orWhere('area_id', 0);
  32. });
  33. } else {
  34. return $this->error('暂无权限');
  35. $area = AdminUserArea::query()->where('admin_id', $admin_id)->first();
  36. $area_id = $area->area_id ?? 0;
  37. $advertisement = $advertisement->where(function ($q) use ($area_id) {
  38. $q->where('area_id', $area_id)->orWhere('area_id', 0);
  39. });
  40. }
  41. }
  42. $advertisement = $request->get('all') ? $advertisement->get() : $advertisement->paginate();
  43. return $this->ok(AdvertisementResource::collection($advertisement));
  44. }
  45. /**
  46. * Show the form for creating a new resource.
  47. *
  48. * @return \Illuminate\Http\Response
  49. *
  50. * @author Fx
  51. */
  52. public function create()
  53. {
  54. //
  55. }
  56. /**
  57. * @param AdvertisementRequest $request
  58. * @param Advertisement $model
  59. * @return \Illuminate\Http\JsonResponse
  60. * @author Fx
  61. */
  62. public function store(AdvertisementRequest $request, Advertisement $model)
  63. {
  64. //
  65. $inputs = $request->validated();
  66. $inputs['pid'] = $inputs['pid'] ?? 0;
  67. $inputs['start_time'] = date('Y-m-d H:i:s', strtotime($inputs['start_time']));
  68. $inputs['end_time'] = date('Y-m-d H:i:s', strtotime($inputs['end_time']));
  69. if ($inputs['area_id'] == 0) {
  70. $admin_id = Admin::user()->id;
  71. if (!Admin::isAdministrator()) {
  72. return $this->error('无权限设置');
  73. }
  74. }
  75. $model->create($inputs);
  76. return $this->ok(AdvertisementResource::make($model));
  77. }
  78. /**
  79. * Display the specified resource.
  80. *
  81. * @param int $id
  82. * @return \Illuminate\Http\Response
  83. */
  84. public function show($id)
  85. {
  86. //
  87. }
  88. /**
  89. * Show the form for editing the specified resource.
  90. *
  91. * @param int $id
  92. * @return \Illuminate\Http\Response
  93. *
  94. * @author Fx
  95. */
  96. public function edit(Advertisement $advertisement)
  97. {
  98. //
  99. return $this->ok(AdvertisementResource::make($advertisement));
  100. }
  101. /**
  102. * @param AdvertisementRequest $request
  103. * @param Advertisement $advertisement
  104. * @return \Illuminate\Http\JsonResponse
  105. * @author Fx
  106. */
  107. public function update(AdvertisementRequest $request, Advertisement $advertisement)
  108. {
  109. //
  110. $inputs = $request->validated();
  111. $inputs['start_time'] = date('Y-m-d H:i:s', strtotime($inputs['start_time']));
  112. $inputs['end_time'] = date('Y-m-d H:i:s', strtotime($inputs['end_time']));
  113. if ($inputs['area_id'] == 0) {
  114. $admin_id = Admin::user()->id;
  115. if (!Admin::isAdministrator()) {
  116. return $this->error('无权限设置');
  117. }
  118. }
  119. $advertisement->update($inputs);
  120. if ($inputs['advertisement_position_slug'] == config('systemConfig.advertisement.footer_slug')) {
  121. Advertisement::where('pid', $advertisement->id)->update(['area_id' => $inputs['area_id']]);
  122. }
  123. return $this->ok(AdvertisementResource::make($advertisement));
  124. }
  125. /**
  126. * Remove the specified resource from storage.
  127. *
  128. * @param int $id
  129. * @return \Illuminate\Http\Response
  130. *advertisementChildrenDestory
  131. * @author Fx
  132. */
  133. public function destroy(Advertisement $advertisement)
  134. {
  135. //
  136. $advertisement->delete();
  137. return $this->noContent();
  138. }
  139. /**
  140. * Remove the specified resource from storage.
  141. *
  142. * @param int $id
  143. * @return \Illuminate\Http\Response
  144. *
  145. * @author Fx
  146. */
  147. public function advertisementChildrenDestory($id)
  148. {
  149. //
  150. $advertisement = Advertisement::query()->find($id);
  151. $advertisement->delete();
  152. return $this->noContent();
  153. }
  154. /**
  155. * 广告位 广告类型
  156. *
  157. * @return array ['advertisementPosition' => '广告位','advertisementType' => '广告类型']
  158. *
  159. * @author Fx
  160. * */
  161. public function advertisementSelectData()
  162. {
  163. // Log::info(111);
  164. $advertisementPosition = Advertisement::advertisementPositioin();
  165. $advertisementType = Advertisement::advertisementType();
  166. $data = [
  167. 'advertisementPosition' => $advertisementPosition,
  168. 'advertisementType' => $advertisementType
  169. ];
  170. return $this->ok($data);
  171. }
  172. /**
  173. * 广告相关图片上传 //缩略图
  174. *
  175. * @return array ['path'=>'上传图片后返回的绝对路径']
  176. *
  177. * @author Fx
  178. * */
  179. public function uploadImg(Request $request)
  180. {
  181. $file = $request->file('surface');
  182. $qiNiuUpload = new QiNiuUpload();
  183. $path = $qiNiuUpload->upload_image('/advertisement/surface', $file);
  184. return $this->ok(['path' => $path]);
  185. }
  186. /**
  187. * 广告相关图片上传 //富文本
  188. *
  189. * @return array ['path'=>'上传图片后返回的绝对路径']
  190. *
  191. * @author Fx
  192. * */
  193. public function uploadImg2(Request $request)
  194. {
  195. $file = $request->file('img');
  196. $qiNiuUpload = new QiNiuUpload();
  197. $path = $qiNiuUpload->upload_image('/advertisement/editor', $file);
  198. return $this->ok(['path' => $path]);
  199. }
  200. }