AdvertisementController.php 6.5 KB

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