AdController.php 51 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071
  1. <?php
  2. namespace App\Admin\Controllers\Content;
  3. use App\Admin\Extensions\Field\Template;
  4. use App\Admin\Extensions\Form\ValueForm;
  5. use App\Http\Controllers\Controller;
  6. use App\Models\Ad;
  7. use App\Models\AdCategory;
  8. use App\Models\Subsite;
  9. use App\Models\SubsiteAd;
  10. use Encore\Admin\Controllers\HasResourceActions;
  11. use Encore\Admin\Facades\Admin;
  12. use Encore\Admin\Form;
  13. use Encore\Admin\Grid;
  14. use Encore\Admin\Grid\Filter;
  15. use Encore\Admin\Layout\Content;
  16. use Encore\Admin\Show;
  17. use Illuminate\Http\Request;
  18. use Illuminate\Support\Facades\Cache;
  19. //use Encore\Admin\Grid;
  20. class AdController extends Controller
  21. {
  22. use HasResourceActions;
  23. /**
  24. * Index interface.
  25. *
  26. * @param Content $content
  27. * @return Content
  28. */
  29. public function index(Content $content)
  30. {
  31. return $content
  32. ->header('广告列表')
  33. ->description(' ')
  34. ->body(view('admin.content.ad_list')->with(['grid' => $this->grid()]));
  35. }
  36. /**
  37. * Show interface.
  38. *
  39. * @param mixed $id
  40. * @param Content $content
  41. * @return Content
  42. */
  43. public function show($id, Content $content)
  44. {
  45. return $content
  46. ->header('广告列表')
  47. ->description(' ')
  48. ->body($this->detail($id));
  49. }
  50. /**
  51. * Edit interface.
  52. *
  53. * @param mixed $id
  54. * @param Content $content
  55. * @return Content
  56. */
  57. public function edit($id, Content $content)
  58. {
  59. $info = Ad::find($id);
  60. $form = new ValueForm();
  61. $ad_info = Ad::findOrFail($id);
  62. //$form->action('/admin/content/ads/update');
  63. $form->action(route('admin.ad.update'));
  64. $form->attribute('enctype', 'multipart/form-data');
  65. $form->disablePjax();
  66. $form->text('title', '广告标题')->default($ad_info->title)->help('(区分不同广告条目,并不在广告中显示)')->setWidth(4)->setMustMark();
  67. $display_option = [
  68. 'on' => ['value' => 1, 'text' => '是', 'color' => 'success'],
  69. 'off' => ['value' => 0, 'text' => '否', 'color' => 'danger'],
  70. ];
  71. $form->switch('is_display', '显示状态')->states($display_option)->default($ad_info->is_display)->setMustMark();
  72. if ($info->subsite_id == 0) {
  73. $subsites = Subsite::where(['effective' => 1])->orderBy('order', 'asc')->get()->pluck('sitename', 'id');
  74. } else {
  75. $subsites = Subsite::where([['effective', '=', 1], ['id', '<>', $info->subsite_id]])->orderBy('order', 'asc')->get()->pluck('sitename', 'id')->toArray();
  76. $subsites['0'] = '总站';
  77. $subsites = collect($subsites);
  78. }
  79. if ($subsites->isNotEmpty() && $info->subsite_id == 0) {
  80. $relations = SubsiteAd::where(['ad_id' => $id])->get()->pluck('subsite_id')->toArray();
  81. $form->multipleSelect('relate_subsites', '同步分站')->options($subsites)->default($relations);
  82. } else {
  83. $form->hidden('relate_subsites');
  84. }
  85. $form->ignore(['relate_subsites']);
  86. $cate_option = AdCategory::all()->pluck('category_name', 'id');
  87. $form->select('category_id', '广告位')->options($cate_option)->default($ad_info->category_id)->setWidth(4)->attribute(['id' => 'sub_category'])->setMustMark();
  88. $form->number('list_order', '显示顺序')->default($ad_info->list_order)->min(0)->help('(数字越大越靠前)')->setMustMark();
  89. $form->date('started_at', '开始日期')
  90. ->format('YYYY-MM-DD')
  91. ->default($ad_info->started_at)
  92. ->rules('required|date', ['required' => '开始日期不能为空。', 'date' => '开始日期格式不正确。'])
  93. ->help('(设置广告起始日期,格式yyyy-mm-dd,留空为不限制起始日期)');
  94. $form->date('ended_at', '结束日期')
  95. ->format('YYYY-MM-DD')
  96. ->default($ad_info->ended_at)
  97. ->rules('required|date', ['required' => '结束日期不能为空。', 'date' => '结束日期格式不正确。'])
  98. ->help('(设置广告结束日期,格式yyyy-mm-dd,留空为不限制结束日期)');
  99. $form->textarea('note', '备注')->default($ad_info->note);
  100. $form->html("<div id='change_field'></div>")->plain();
  101. $form->hidden('alias')->value($ad_info->alias)->attribute('id', 'alias');
  102. $form->hidden('theme')->value($ad_info->theme);
  103. $form->hidden('type_id')->value($ad_info->type_id)->attribute('id', 'type_id');
  104. $form->hidden('id')->value($ad_info->id);
  105. $template = new Template();
  106. $template->setTemplatesId("text_div");
  107. if ($ad_info->type_id == '1') {
  108. $template->text('content', '文字内容')->default($ad_info->content)->help('(文字广告的显示内容)')->setMustMark();
  109. $template->url('url', '文字链接')->default($ad_info->url)->help('(请输入包含http://或https://的完整链接,如:http://www.baidu.com)');
  110. $template->color('text_color', '文字颜色')->default($ad_info->text_color)->setMustMark();
  111. } else {
  112. $template->text('content', '文字内容')->help('(文字广告的显示内容)')->setMustMark();
  113. $template->url('url', '文字链接')->help('(请输入包含http://或https://的完整链接,如:http://www.baidu.com)');
  114. $template->color('text_color', '文字颜色')->setMustMark();
  115. }
  116. $template->setTemplatesId("image_div");
  117. if ($ad_info->type_id == '2') {
  118. $img_file = null;
  119. $img_url = null;
  120. if (preg_match('/^http/', $ad_info->content)) {
  121. $img_url = $ad_info->content;
  122. } else {
  123. $img_file = $ad_info->content;
  124. }
  125. $template->image('img_file', '本地上传')->uniqueName()->help('(允许格式为gif/jpg/bmp/png,文件大小1000KB)')->value($img_file)->setMustMark()->options(['layoutTemplates' => ['actionDelete' => '']]);
  126. $template->text('img_url', '或图片地址')->default($img_url)->help('(请输入包含http://或https://的完整链接,如:http://www.baidu.com/img/baidu_logo.gif)');
  127. $template->url('url', '图片链接')->default($ad_info->url)->help('(请输入包含http://或https://的完整链接,如:http://www.baidu.com)');
  128. $template->text('target', 'target')->default($ad_info->target)->help('(请输入_self等,默认_blank)');
  129. $template->text('explain', '图片说明文字')->default($ad_info->explain);
  130. $template->number('uid', '会员UID')->default($ad_info->uid)->min(0)->help('(设置会员UID后,当鼠标移动到图片上将会显示相关的职位和企业信息)');
  131. } else {
  132. $template->image('img_file', '本地上传')->uniqueName()->setWidth(3)->help('(允许格式为gif/jpg/bmp/png,文件大小1000KB)')->setMustMark()->options(['layoutTemplates' => ['actionDelete' => '']]);
  133. $template->text('img_url', '或图片地址')->help('(请输入包含http://或https://的完整链接,如http://www.baidu.com/img/baidu_logo.gif)');
  134. $template->url('url', '图片链接')->help('(请输入包含http://或https://的完整链接,如:http://www.baidu.com)');
  135. $template->text('explain', '图片说明文字');
  136. $template->number('uid', '会员UID')->min(0)->help('(设置会员UID后,当鼠标移动到图片上将会显示相关的职位和企业信息)');
  137. }
  138. $template->setTemplatesId("code_div");
  139. if ($ad_info->type_id == '3') {
  140. $template->textarea('content', '代码')->default($ad_info->content)->rows(1)->help('(请直接输入需要展现的广告代码)')->setMustMark();
  141. } else {
  142. $template->textarea('content', '代码')->rows(1)->help('(请直接输入需要展现的广告代码)')->setMustMark();
  143. }
  144. $template->setTemplatesId("flash_div");
  145. if ($ad_info->type_id == '4') {
  146. $flash_file = null;
  147. $flash_url = null;
  148. if (preg_match('/^images\//', $ad_info->content)) {
  149. $flash_file = $ad_info->content;
  150. } else {
  151. $flash_url = $ad_info->content;
  152. }
  153. $template->image('content', '本地上传')->default($flash_file)->uniqueName()->setWidth(3)->help('(允许格式为:swf,文件大小:1000KB)')->setMustMark()->options(['layoutTemplates' => ['actionDelete' => '']]);
  154. $template->url('url', '或者Flash地址')->default($flash_url)->help('(请输入包含http://或https://的完整链接,如: http://www.baidu.com/123.swf)');
  155. } else {
  156. $template->file('content', '本地上传')->uniqueName()->setWidth(3)->help('(允许格式为:swf,文件大小:1000KB)')->setMustMark()->options(['layoutTemplates' => ['actionDelete' => '']]);
  157. $template->url('url', '或者Flash地址')->help('(请输入包含http://或https://的完整链接,如:http://www.baidu.com/123.swf)');
  158. }
  159. $template->setTemplatesId("vedio_div");
  160. if ($ad_info->type_id == '5') {
  161. $vedio_file = null;
  162. $vedio_url = null;
  163. if (preg_match('/^images\//', $ad_info->content)) {
  164. $vedio_file = $ad_info->content;
  165. } else {
  166. $vedio_url = $ad_info->content;
  167. }
  168. $template->file('content', '本地上传')->default($vedio_file)->uniqueName()->setWidth(3)->help('(允许格式为swf/flv/f4v,文件大小5000KB,大文件FTP上传)')->setMustMark()->options(['layoutTemplates' => ['actionDelete' => '']]);
  169. $template->url('url', '或者视频地址')->default($vedio_url)->help('(请输入包含http://或https://的完整链接,如:http://www.baidu.com/123.swf)');
  170. } else {
  171. $template->file('content', '本地上传')->uniqueName()->setWidth(3)->help('(允许格式为swf/flv/f4v,文件大小5000KB,大文件FTP上传)')->setMustMark()->options(['layoutTemplates' => ['actionDelete' => '']]);
  172. $template->url('url', '或者视频地址')->help('(请输入包含http://或https://的完整链接,如:http://www.baidu.com/123.swf)');
  173. }
  174. $form->disableReset();
  175. $data['custom_form'] = $form->render();
  176. $data['temp'] = $template->render();
  177. $data['ad_info'] = $ad_info;
  178. return $content
  179. ->header('广告')
  180. ->description(' ')
  181. ->body(view('admin.content.ad_edit')->with($data));
  182. }
  183. public function update(Request $request)
  184. {
  185. $ad = Ad::findOrFail($request->input('id'));
  186. $rules = [
  187. 'title' => 'required|max:50',
  188. 'is_display' => 'required',
  189. 'category_id' => 'required',
  190. 'list_order' => 'required|max:10',
  191. 'note' => 'max:80',
  192. ];
  193. $message = [
  194. 'title.required' => '广告标题不能为空。',
  195. 'title.max' => '广告标题长度不能超过50。',
  196. 'is_display.required' => '请选择显示状态。',
  197. 'category_id.required' => '请选择广告位。',
  198. 'list_order.required' => '显示顺序不能为空。',
  199. 'list_order.max' => '显示顺序长度不能大于10。',
  200. 'note.max' => '备注长度不能超过80。',
  201. ];
  202. if ($request->input('started_at')) {
  203. $rules['started_at'] = 'date';
  204. $message['started_at.date'] = '开始日期格式不正确。';
  205. }
  206. if ($request->input('ended_at')) {
  207. $rules['ended_at'] = 'date|after_or_equal:started_at';
  208. $message['ended_at.date'] = '结束日期格式不正确。';
  209. $message['ended_at.after_or_equal'] = '结束日期不能早于开始日期。';
  210. }
  211. $type_id = $request->input('type_id');
  212. if ($type_id == '1') {
  213. $rules['content'] = 'required';
  214. $rules['text_color'] = 'required';
  215. $message['content.required'] = '文字内容不能为空。';
  216. $message['text_color.required'] = '文字颜色不能为空。';
  217. } else if ($type_id == '2') {
  218. $rules['img_file'] = 'mimes:gif,jpeg,bmp,png|max:1024';
  219. $rules['explain'] = 'max:80';
  220. $rules['uid'] = 'nullable|numeric';
  221. $message['img_file.mimes'] = '本地上传格式不正确。';
  222. $message['img_file.max'] = '本地上传文件大小不能超过1M。';
  223. $message['explain.max'] = '图片说明文字长度不能大于80。';
  224. /*$message['uid.required'] = 'UID不能为空。';*/
  225. $message['uid.numeric'] = 'UID只能填写数字。';
  226. } else if ($type_id == '3') {
  227. $rules['content'] = 'required';
  228. $message['content.required'] = '代码不能为空。';
  229. } else if ($type_id == '4') {
  230. $rules['content'] = 'mimes:swf';
  231. $message['content.mimes'] = '本地上传格式不正确。';
  232. } else if ($type_id == '5') {
  233. $rules['content'] = 'mimes:swf,flv,f4v';
  234. $message['content.mimes'] = '本地上传格式不正确。';
  235. }
  236. $request->validate($rules, $message);
  237. $time = date('Y-m-d H:i:s', time());
  238. $is_display = $request->input('is_display') == 'on' ? 1 : 0;
  239. $started_at = $request->input('started_at') ? strtotime($request->input('started_at')) : 0;
  240. $ended_at = $request->input('ended_at') ? strtotime($request->input('ended_at')) : 0;
  241. $type_id = $request->input('type_id');
  242. $theme = $request->input('theme') ? $request->input('theme') : 'default';
  243. $note = $request->input('note') ? $request->input('note') : '';
  244. $ad->theme = $theme;
  245. $ad->alias = $request->input('alias');
  246. $ad->is_display = $request->input('is_display') == 'on' ? 1 : 0;
  247. $ad->category_id = $request->input('category_id');
  248. $ad->type_id = $type_id;
  249. $ad->title = $request->input('title');
  250. $ad->note = $request->input('note') ? $request->input('note') : '';
  251. $ad->list_order = $request->input('list_order');
  252. $ad->started_at = $request->input('started_at') ? strtotime($request->input('started_at')) : 0;
  253. $ad->ended_at = $request->input('ended_at') ? strtotime($request->input('ended_at')) : 0;
  254. $ad->updated_at = $time;
  255. if ($type_id == '1') { //文字广告
  256. $ad->content = $request->input('content');
  257. $ad->url = $request->input('url') ? $request->input('url') : '';
  258. $ad->text_color = $request->input('text_color') ? $request->input('text_color') : '#000000';
  259. $ad->uid = 0;
  260. } else if ($type_id == '2') { //图片广告
  261. $img_file = $request->input('img_file');
  262. $img_url = $request->input('img_url');
  263. $url = $request->input('url') ? $request->input('url') : '';
  264. $target = $request->input('target') ? $request->input('target') : '_blank';
  265. $explain = $request->input('explain');
  266. $uid = $request->input('uid');
  267. $up_file = null;
  268. if ($request->hasFile('img_file')) {
  269. $file = 'img_file';
  270. $up_file = $request->$file->store(config('admin.upload.directory.image'), config('admin.upload.disk'));
  271. }
  272. $content = $up_file ? $up_file : $img_url;
  273. if ($content) {
  274. $ad->content = $content;
  275. }
  276. $ad->url = $url;
  277. $ad->target = $target;
  278. $ad->text_color = '#000000';
  279. $ad->uid = $uid ? $uid : 0;
  280. $ad->explain = $explain;
  281. } else if ($type_id == '3') { //代码广告
  282. $content = $request->input('content') ? $request->input('content') : 0;
  283. if ($content) {
  284. $ad->content = $content;
  285. }
  286. $ad->uid = 0;
  287. $ad->text_color = '#000000';
  288. $ad->url = '';
  289. } else if ($type_id == '4' || $type_id == '5') { //flash广告 、视频广告
  290. $url = $request->input('url') ? $request->input('url') : '';
  291. $up_file = null;
  292. if ($request->hasFile('content')) {
  293. $file = 'content';
  294. $up_file = $request->$file->store(config('admin.upload.directory.file'), config('admin.upload.disk'));
  295. }
  296. $content = $up_file ? $up_file : $url;
  297. if ($content) {
  298. $ad->content = $content;
  299. }
  300. $ad->url = '';
  301. $ad->uid = 0;
  302. $ad->text_color = '#000000';
  303. }
  304. $set_data = [];
  305. $subsites = $request->input('relate_subsites');
  306. if (empty($subsites)) {
  307. $subsites = [];
  308. }
  309. $subsites = array_merge([$ad->subsite_id], $subsites);
  310. foreach ($subsites as $k => $v) {
  311. if ($v !== null) {
  312. $set_data[] = [
  313. 'ad_id' => $ad->id,
  314. 'subsite_id' => $v,
  315. ];
  316. }
  317. }
  318. if ($ad->save()) {
  319. if ($set_data) {
  320. SubsiteAd::where('ad_id', $ad->id)->delete();
  321. SubsiteAd::insert($set_data);
  322. }
  323. admin_toastr(trans('admin.save_succeeded'), 'success');
  324. return redirect(admin_base_path() . '/content/ad/index');
  325. } else {
  326. throw new \Exception(trans('admin.save_failed'));
  327. }
  328. }
  329. public function updates(Request $request)
  330. {
  331. $rules = [
  332. 'title' => 'required|max:50',
  333. 'is_display' => 'required',
  334. 'category_id' => 'required',
  335. 'list_order' => 'required|max:10',
  336. 'note' => 'max:80',
  337. ];
  338. $message = [
  339. 'title.required' => '广告标题不能为空。',
  340. 'title.max' => '广告标题长度不能超过50。',
  341. 'is_display.required' => '请选择显示状态。',
  342. 'category_id.required' => '请选择广告位。',
  343. 'list_order.required' => '显示顺序不能为空。',
  344. 'list_order.max' => '显示顺序长度不能大于10。',
  345. 'note.max' => '备注长度不能超过80。',
  346. ];
  347. if ($request->input('started_at')) {
  348. $rules['started_at'] = 'date';
  349. $message['started_at.date'] = '开始日期格式不正确。';
  350. }
  351. if ($request->input('ended_at')) {
  352. $rules['ended_at'] = 'date|after_or_equal:started_at';
  353. $message['ended_at.date'] = '结束日期格式不正确。';
  354. $message['ended_at.after_or_equal'] = '结束日期不能早于开始日期。';
  355. }
  356. $type_id = $request->input('type_id');
  357. if ($type_id == '1') {
  358. $rules['content'] = 'required';
  359. $rules['text_color'] = 'required';
  360. $message['content.required'] = '文字内容不能为空。';
  361. $message['text_color.required'] = '文字颜色不能为空。';
  362. } else if ($type_id == '2') {
  363. $rules['img_file'] = 'required_without:img_url|mimes:gif,jpeg,bmp,png';
  364. $rules['img_url'] = 'required_without:img_file';
  365. $rules['explain'] = 'max:80';
  366. $rules['uid'] = 'required|numeric';
  367. $message['img_file.required_without'] = '本地上传或者图片地址填写一项。';
  368. $message['img_file.mimes'] = '本地上传格式不正确。';
  369. $message['img_url.required_without'] = '本地上传或者图片地址填写一项。';
  370. $message['explain.max'] = '图片说明文字长度不能大于80。';
  371. $message['uid.required'] = 'UID不能为空。';
  372. $message['uid.numeric'] = 'UID只能填写数字。';
  373. } else if ($type_id == '3') {
  374. $rules['content'] = 'required';
  375. $message['content.required'] = '代码不能为空。';
  376. } else if ($type_id == '4') {
  377. $rules['content'] = 'required_without:url|mimes:swf';
  378. $rules['url'] = 'required_without:content';
  379. $message['content.required_without'] = '本地上传或者Flash地址填写一项。';
  380. $message['content.mimes'] = '本地上传格式不正确。';
  381. $message['url.required_without'] = '本地上传或者Flash地址填写一项。';
  382. } else if ($type_id == '5') {
  383. $rules['content'] = 'required_without:url|mimes:swf,flv,f4v';
  384. $rules['url'] = 'required_without:content';
  385. $message['content.required_without'] = '本地上传或者填写视频地址填写一项。';
  386. $message['content.mimes'] = '本地上传格式不正确。';
  387. $message['url.required_without'] = '本地上传或者填写视频地址填写一项。';
  388. }
  389. $request->validate($rules, $message);
  390. $is_display = $request->input('is_display') == 'on' ? 1 : 0;
  391. $time = date('Y-m-d H:i:s', time());
  392. $started_at = $request->input('started_at') ? strtotime($request->input('started_at')) : 0;
  393. $ended_at = $request->input('ended_at') ? strtotime($request->input('ended_at')) : 0;
  394. $type_id = $request->input('type_id');
  395. $theme = $request->input('theme') ? $request->input('theme') : 'default';
  396. $note = $request->input('note') ? $request->input('note') : '';
  397. $form_data = [
  398. 'theme' => $theme,
  399. 'alias' => $request->input('alias'),
  400. 'is_display' => $is_display,
  401. 'category_id' => $request->input('category_id'),
  402. 'type_id' => $type_id,
  403. 'title' => $request->input('title'),
  404. 'note' => $note,
  405. 'list_order' => $request->input('list_order'),
  406. 'started_at' => $started_at,
  407. 'ended_at' => $ended_at,
  408. 'updated_at' => $time,
  409. ];
  410. if ($type_id == '1') {
  411. //文字广告
  412. $form_data['content'] = $request->input('content');
  413. $form_data['url'] = $request->input('url');
  414. $form_data['text_color'] = $request->input('text_color') ? $request->input('text_color') : '#000000';
  415. $form_data['uid'] = 0;
  416. } else if ($type_id == '2') {
  417. //图片广告
  418. $img_file = $request->input('img_file');
  419. $img_url = $request->input('img_url');
  420. $url = $request->input('url');
  421. $explain = $request->input('explain');
  422. $uid = $request->input('uid');
  423. $up_file = null;
  424. if ($request->hasFile('img_file')) {
  425. $file = 'img_file';
  426. $up_file = $request->$file->store(config('admin.upload.directory.image'), config('admin.upload.disk'));
  427. }
  428. $content = $up_file ? $up_file : $img_url;
  429. $form_data['content'] = $content;
  430. $form_data['url'] = $url;
  431. $form_data['text_color'] = '#000000';
  432. $form_data['uid'] = $uid;
  433. $form_data['explain'] = $explain;
  434. } else if ($type_id == '3') {
  435. //代码广告
  436. $content = $request->input('content') ? $request->input('content') : 0;
  437. $form_data['content'] = $content;
  438. $form_data['uid'] = 0;
  439. $form_data['text_color'] = '#000000';
  440. $form_data['url'] = '';
  441. } else if ($type_id == '4' || $type_id == '5') {
  442. //flash广告 、视频广告
  443. $url = $request->input('url') ? $request->input('url') : '';
  444. $up_file = null;
  445. if ($request->hasFile('content')) {
  446. $file = 'content';
  447. $up_file = $request->$file->store(config('admin.upload.directory.file'), config('admin.upload.disk'));
  448. }
  449. $content = $up_file ? $up_file : $url;
  450. $form_data['content'] = $content;
  451. $form_data['url'] = '';
  452. $form_data['uid'] = 0;
  453. $form_data['text_color'] = '#000000';
  454. }
  455. if (Ad::where(['id' => $request->input('id')])->update($form_data)) {
  456. admin_toastr(trans('admin.save_succeeded'), 'success');
  457. return redirect(admin_base_path() . '/content/ad/index');
  458. } else {
  459. throw new \Exception(trans('admin.save_failed'));
  460. }
  461. }
  462. /**
  463. * Create interface.
  464. *
  465. * @param Content $content
  466. * @return Content
  467. */
  468. public function create(Content $content)
  469. {
  470. $form = new ValueForm();
  471. $form->action(route('ad.index'));
  472. $form->text('title', '广告标题')->help('(区分不同广告条目,并不在广告中显示)')->setWidth(4)->setMustMark();
  473. $display_option = [
  474. 'on' => ['value' => 1, 'text' => '是', 'color' => 'success'],
  475. 'off' => ['value' => 0, 'text' => '否', 'color' => 'danger'],
  476. ];
  477. $form->switch('is_display', '显示状态')->states($display_option)->default('1')->setMustMark();
  478. if (get_subsite_id() == 0) {
  479. $subsites = Subsite::where(['effective' => 1])->orderBy('order', 'asc')->get()->pluck('sitename', 'id');
  480. } else {
  481. $subsites = Subsite::where([['effective', '=', 1], ['id', '<>', get_subsite_id()]])->orderBy('order', 'asc')->get()->pluck('sitename', 'id')->toArray();
  482. $subsites['0'] = '总站';
  483. $subsites = collect($subsites);
  484. }
  485. if ($subsites->isNotEmpty() && get_subsite_id() == 0) {
  486. $form->multipleSelect('relate_subsites', '同步分站')->options($subsites);
  487. } else {
  488. $form->hidden('relate_subsites');
  489. }
  490. $form->ignore(['relate_subsites']);
  491. $form->hidden('subsite_id')->value(get_subsite_id());
  492. $cate_option = AdCategory::all()->pluck('category_name', 'id');
  493. $form->select('category_id', '广告位')->options($cate_option)
  494. ->rules('required', ['required' => '请选择广告位。'])
  495. ->setWidth(4)->attribute(['id' => 'sub_category'])->setMustMark();
  496. $form->number('list_order', '显示顺序')->min(0)->default(0)->help('(数字越大越靠前)')->setMustMark();
  497. $form->date('started_at', '开始日期')
  498. ->format('YYYY-MM-DD')
  499. ->rules('required|date', ['required' => '开始日期不能为空。', 'date' => '开始日期格式不正确。'])
  500. ->help('(设置广告起始日期,格式yyyy-mm-dd,留空为不限制起始日期)');
  501. $form->date('ended_at', '结束日期')
  502. ->format('YYYY-MM-DD')
  503. ->rules('required|date', ['required' => '结束日期不能为空。', 'date' => '结束日期格式不正确。'])
  504. ->help('(设置广告结束日期,格式yyyy-mm-dd,留空为不限制结束日期)');
  505. $form->textarea('note', '备注');
  506. $form->html("<div id='change_field'></div>")->plain();
  507. $form->hidden('alias')->attribute('id', 'alias');
  508. $form->hidden('theme')->value('default');
  509. $form->hidden('type_id')->attribute('id', 'type_id');
  510. $template = new Template();
  511. $template->setTemplatesId("text_div");
  512. $template->text('content', '文字内容')->help('(文字广告的显示内容)')->setMustMark();
  513. $template->url('url', '文字链接')->help('(请输入包含http://或https://的完整链接,如:http://www.baidu.com)');
  514. $template->color('text_color', '文字颜色')->default('#000000')->setMustMark();
  515. $template->setTemplatesId("image_div");
  516. $template->image('img_file', '本地上传')->uniqueName()->setWidth(3)->help('(允许格式为gif/jpg/bmp/png,文件大小1000KB)')->setMustMark();
  517. $template->text('img_url', '或图片地址')->help('(如/images/logo.gif 或 http://www.baidu.com/img/baidu_logo.gif)');
  518. $template->url('url', '图片链接')->help('(请输入包含http://或https://的完整链接,如:http://www.baidu.com)');
  519. $template->text('target', 'target')->help('(请输入_self等,默认_blank)');
  520. $template->text('explain', '图片说明文字');
  521. $template->number('uid', '会员UID')->min(0)->default(0)
  522. ->help('(设置会员UID后,当鼠标移动到图片上将会显示相关的职位和企业信息)')
  523. ->attribute(['maxlength' => '10', 'onkeyup' => 'if(event.keyCode !=37 && event.keyCode != 39) value=value.replace(/\D/g,\'\');', 'onbeforepaste' => "clipboardData.setData('text',clipboardData.getData('text').replace(/\D/g,''))"]);
  524. $template->setTemplatesId("code_div");
  525. $template->textarea('content', '代码')->rows(1)->help('(请直接输入需要展现的广告代码)')->setMustMark();
  526. $template->setTemplatesId("flash_div");
  527. $template->image('content', '本地上传')->uniqueName()->setWidth(3)->help('(允许格式为:swf,文件大小:1000KB)')->setMustMark();
  528. $template->url('url', '或者Flash地址')->help('(请输入包含http://或https://的完整链接,如:http://www.baidu.com/123.swf)');
  529. $template->setTemplatesId("vedio_div");
  530. $template->image('content', '本地上传')->uniqueName()->setWidth(3)->help('(允许格式为swf/flv/f4v,文件大小5000KB,大文件FTP上传)')->setMustMark();
  531. $template->url('url', '或者视频地址')->help('(请输入包含http://或https://的完整链接,如:http://www.baidu.com/123.swf)');
  532. $form->disableReset();
  533. $data['custom_form'] = $form->render();
  534. $data['temp'] = $template->render();
  535. return $content
  536. ->header('广告')
  537. ->description(' ')
  538. ->body(view('admin.content.ad')->with($data));
  539. }
  540. public function changeCategory(Request $request)
  541. {
  542. $cate_option = AdCategory::all()->toArray();
  543. return response()->json(['data' => $cate_option, 'status' => '1']);
  544. }
  545. public function store(Request $request)
  546. {
  547. $rules = [
  548. 'title' => 'required|max:50',
  549. 'is_display' => 'required',
  550. 'category_id' => 'required',
  551. 'list_order' => 'required|max:10',
  552. 'note' => 'max:80',
  553. ];
  554. $message = [
  555. 'title.required' => '广告标题不能为空。',
  556. 'title.max' => '广告标题长度不能超过50。',
  557. 'is_display.required' => '请选择显示状态。',
  558. 'category_id.required' => '请选择广告位。',
  559. 'list_order.required' => '显示顺序不能为空。',
  560. 'list_order.max' => '显示顺序长度不能大于10。',
  561. 'note.max' => '备注长度不能超过80。',
  562. ];
  563. if ($request->input('started_at')) {
  564. $rules['started_at'] = 'date';
  565. $message['started_at.date'] = '开始日期格式不正确。';
  566. }
  567. if ($request->input('ended_at')) {
  568. $rules['ended_at'] = 'date|after_or_equal:started_at';
  569. $message['ended_at.date'] = '结束日期格式不正确。';
  570. $message['ended_at.after_or_equal'] = '结束日期不能早于开始日期。';
  571. }
  572. $type_id = $request->input('type_id');
  573. if ($type_id == '1') {
  574. $rules['content'] = 'required';
  575. $rules['text_color'] = 'required';
  576. $message['content.required'] = '文字内容不能为空。';
  577. $message['text_color.required'] = '文字颜色不能为空。';
  578. } else if ($type_id == '2') {
  579. $rules['img_file'] = 'required_without:img_url|mimes:gif,jpeg,bmp,png|max:1024';
  580. $rules['img_url'] = 'required_without:img_file';
  581. $rules['explain'] = 'max:80';
  582. $rules['uid'] = 'nullable|numeric';
  583. $message['img_file.required_without'] = '本地上传或者图片地址填写一项。';
  584. $message['img_file.mimes'] = '本地上传格式不正确。';
  585. $message['img_file.max'] = '本地上传文件大小不能超过1M。';
  586. $message['img_url.required_without'] = '本地上传或者图片地址填写一项。';
  587. $message['explain.max'] = '图片说明文字长度不能大于80。';
  588. //$message['uid.required'] = 'UID不能为空。';
  589. $message['uid.numeric'] = 'UID只能填写数字。';
  590. } else if ($type_id == '3') {
  591. $rules['content'] = 'required';
  592. $message['content.required'] = '代码不能为空。';
  593. } else if ($type_id == '4') {
  594. $rules['content'] = 'required_without:url|mimes:swf';
  595. $rules['url'] = 'required_without:content';
  596. $message['content.required_without'] = '本地上传或者Flash地址填写一项。';
  597. $message['content.mimes'] = '本地上传格式不正确。';
  598. $message['url.required_without'] = '本地上传或者Flash地址填写一项。';
  599. } else if ($type_id == '5') {
  600. $rules['content'] = 'required_without:url|mimes:swf,flv,f4v';
  601. $rules['url'] = 'required_without:content';
  602. $message['content.required_without'] = '本地上传或者填写视频地址填写一项。';
  603. $message['content.mimes'] = '本地上传格式不正确。';
  604. $message['url.required_without'] = '本地上传或者填写视频地址填写一项。';
  605. }
  606. $request->validate($rules, $message);
  607. $is_display = $request->input('is_display') == 'on' ? 1 : 0;
  608. $time = date('Y-m-d H:i:s', time());
  609. $started_at = $request->input('started_at') ? strtotime($request->input('started_at')) : 0;
  610. $ended_at = $request->input('ended_at') ? strtotime($request->input('ended_at')) : 0;
  611. $subsite_id = $request->input('subsite_id');
  612. $theme = $request->input('theme') ? $request->input('theme') : 'default';
  613. $note = $request->input('note') ? $request->input('note') : '';
  614. $form_data = [
  615. 'theme' => $theme,
  616. 'alias' => $request->input('alias'),
  617. 'is_display' => $is_display,
  618. 'category_id' => $request->input('category_id'),
  619. 'type_id' => $type_id,
  620. 'title' => $request->input('title'),
  621. 'note' => $note,
  622. 'list_order' => $request->input('list_order'),
  623. 'started_at' => $started_at,
  624. 'ended_at' => $ended_at,
  625. 'subsite_id' => $subsite_id,
  626. 'created_at' => $time,
  627. 'updated_at' => $time,
  628. ];
  629. if ($type_id == '1') {
  630. //文字广告
  631. $form_data['content'] = $request->input('content');
  632. $form_data['url'] = $request->input('url') ? $request->input('url') : '';
  633. $form_data['text_color'] = $request->input('text_color') ? $request->input('text_color') : '#000000';
  634. $form_data['uid'] = 0;
  635. } else if ($type_id == '2') {
  636. //图片广告
  637. $img_file = $request->input('img_file');
  638. $img_url = $request->input('img_url');
  639. $url = $request->input('url') ? $request->input('url') : '';
  640. $target = $request->input('target') ? $request->input('target') : '_blank';
  641. $explain = $request->input('explain');
  642. $uid = $request->input('uid', 0);
  643. $up_file = null;
  644. if ($request->hasFile('img_file')) {
  645. $file = 'img_file';
  646. $up_file = $request->$file->store(config('admin.upload.directory.image'), config('admin.upload.disk'));
  647. }
  648. $content = $up_file ? $up_file : $img_url;
  649. $form_data['content'] = $content;
  650. $form_data['url'] = $url;
  651. $form_data['target'] = $target;
  652. $form_data['text_color'] = '#000000';
  653. $form_data['uid'] = $uid ? $uid : 0;
  654. $form_data['explain'] = $explain;
  655. } else if ($type_id == '3') {
  656. //代码广告
  657. $content = $request->input('content') ? $request->input('content') : 0;
  658. $form_data['content'] = $content;
  659. $form_data['uid'] = 0;
  660. $form_data['text_color'] = '#000000';
  661. $form_data['url'] = '';
  662. } else if ($type_id == '4' || $type_id == '5') {
  663. //flash广告 、视频广告
  664. $url = $request->input('url') ? $request->input('url') : '';
  665. $up_file = null;
  666. if ($request->hasFile('content')) {
  667. $file = 'content';
  668. $up_file = $request->$file->store(config('admin.upload.directory.file'), config('admin.upload.disk'));
  669. }
  670. $content = $up_file ? $up_file : $url;
  671. $form_data['content'] = $content;
  672. $form_data['url'] = '';
  673. $form_data['uid'] = 0;
  674. $form_data['text_color'] = '#000000';
  675. }
  676. $subsites = $request->input('relate_subsites');
  677. if (empty($subsites)) {
  678. $subsites = [];
  679. }
  680. if ($ad = Ad::create($form_data)) {
  681. $set_data = [];
  682. $set_data[] = [
  683. 'ad_id' => $ad->id,
  684. 'subsite_id' => get_subsite_id(),
  685. ];
  686. if ($subsites) {
  687. foreach ($subsites as $k => $v) {
  688. if ($v) {
  689. $set_data[] = [
  690. 'ad_id' => $ad->id,
  691. 'subsite_id' => $v,
  692. ];
  693. }
  694. }
  695. }
  696. if ($set_data) {
  697. SubsiteAd::insert($set_data);
  698. }
  699. admin_toastr(trans('admin.save_succeeded'), 'success');
  700. return redirect(admin_base_path() . '/content/ad/index');
  701. } else {
  702. throw new \Exception(trans('admin.save_failed'));
  703. }
  704. }
  705. /**
  706. * Make a grid builder.
  707. *
  708. * @return Grid
  709. */
  710. protected function grid()
  711. {
  712. $grid = new Grid(new Ad);
  713. $grid->model()->when(get_subsite_id() > 0, function ($query) {
  714. $query->where('subsite_id', get_subsite_id());
  715. })->orderBy('list_order', 'DESC')->orderBy('created_at', 'DESC');
  716. $grid->title('广告标题')->display(function () {
  717. $logo_html = '';
  718. if ($this->type_id == '2') {
  719. //判断图片中是否包含http
  720. if (preg_match('/^http/', $this->content)) {
  721. $logo_html = '<span class="vtip" title="<img src=\'' . $this->content . '\' height=120>">
  722. <img class="avatar small" src="' . $this->content . '" align="absmiddle" style="width: 22px;height: 22px;">
  723. </span>';
  724. } else {
  725. $logo_html = '<span class="vtip" title="<img src=\'' . upload_asset($this->content) . '\' height=120>">
  726. <img class="avatar small" src="' . upload_asset($this->content) . '" align="absmiddle" style="width: 22px;height: 22px;">
  727. </span>';
  728. }
  729. }
  730. return $logo_html . $this->title;
  731. })->width(250);
  732. $grid->show_category()->category_name('所属广告位')->width(200);
  733. $grid->type_id('广告类型')->display(function () {
  734. if ($this->type_id == '1') {
  735. return '文字';
  736. } else if ($this->type_id == '2') {
  737. return '图片';
  738. } else if ($this->type_id == '3') {
  739. return '代码';
  740. } else if ($this->type_id == '4') {
  741. return 'Flash';
  742. } else if ($this->type_id == '5') {
  743. return '视频';
  744. }
  745. });
  746. if (get_subsite_open()) {
  747. $grid->subsite_id('所属分站')->display(function () {
  748. $subsites = Cache::get('subsites_list');
  749. if (array_has($subsites, $this->subsite_id)) {
  750. return $subsites[$this->subsite_id]['sitename'];
  751. }
  752. return '';
  753. });
  754. }
  755. $grid->started_at('开始日期')->display(function () {
  756. if (!$this->started_at) {
  757. return date('Y-m-d', strtotime($this->created_at));
  758. } else {
  759. return $this->started_at;
  760. }
  761. });
  762. $grid->ended_at('到期日期')->display(function () {
  763. if ($this->ended_at > 0 && strtotime($this->ended_at) <= strtotime(date('Y-m-d'))) {
  764. return '<span style="color:#FF6600">已经到期</span>';
  765. } else {
  766. return $this->ended_at ? $this->ended_at : '无限制';
  767. }
  768. });
  769. $grid->is_display('状态')->display(function () {
  770. return $this->is_display ? '正常' : '暂停';
  771. });
  772. $grid->list_order('排序');
  773. //新增按钮
  774. if (Admin::user()->can('content_ad_list_create')) {
  775. $grid->disableCreateButton(false);
  776. }
  777. //批量删除
  778. if (Admin::user()->can('content_ad_list_delete')) {
  779. $grid->tools(function ($tools) {
  780. $tools->batch(function ($batch) {
  781. $batch->disableDelete(false);
  782. });
  783. });
  784. } else {
  785. $grid->disableRowSelector();
  786. }
  787. $grid->actions(function ($actions) {
  788. if (Admin::user()->can('content_ad_list_edit')) {
  789. if ($actions->row['subsite_id'] == get_subsite_id() || get_subsite_id() == 0) {
  790. $actions->disableEdit(false);
  791. }
  792. }
  793. if (Admin::user()->can('content_ad_list_delete')) {
  794. if ($actions->row['subsite_id'] == get_subsite_id() || get_subsite_id() == 0) {
  795. $actions->disableDelete(false);
  796. }
  797. }
  798. });
  799. $grid->filter(function (Filter $filter) {
  800. $filter->disableIdFilter();
  801. $filter->column(2 / 3, function ($filter) {
  802. $display_option = ['' => '不限', '1' => '正常', '0' => '暂停'];
  803. $filter->equal('is_display', '显示状态')->radio($display_option);
  804. $date1 = strtotime(date('Y-m-d', strtotime("+1 day") - 1)) - 1;
  805. $date3 = strtotime(date('Y-m-d', strtotime("+4 day") - 1)) - 1;
  806. $date7 = strtotime(date('Y-m-d', strtotime("+8 day") - 1)) - 1;
  807. $date_option = [
  808. '' => '不限',
  809. $date1 => '已经到期',
  810. $date3 => '三天内',
  811. $date7 => '一周内',
  812. ];
  813. $filter->where(function ($query) {
  814. $ended_at = "{$this->input}";
  815. $start = strtotime(date('Y-m-d', strtotime("+1 day") - 1)) - 1;
  816. $start_time = 0;
  817. if ($ended_at > $start) {
  818. $start_time = strtotime(date('Y-m-d', time())) - 1;
  819. }
  820. $query->whereRaw('ended_at > ' . $start_time . ' and ended_at < ' . "{$this->input}");
  821. }, '到期时间', 'ended_at')->radio($date_option);
  822. $subsites = Subsite::where(['effective' => 1])->orderBy('order', 'asc')->get()->pluck('sitename', 'id')->toArray();
  823. if ($subsites) {
  824. $subsites = ['' => '不限', '0' => '总站'] + $subsites;
  825. $filter->equal('subsite_id', '所属分站')->select($subsites);
  826. }
  827. $cates = AdCategory::get(['id', 'category_name'])->toArray();
  828. $pre_arr = ['id' => '', 'category_name' => '不限'];
  829. array_unshift($cates, $pre_arr);
  830. $cates = collect($cates)->pluck('category_name', 'id');
  831. $filter->equal('category_id', '广告位')->select($cates);
  832. $filter->like('title', '广告标题');
  833. });
  834. });
  835. return $grid;
  836. }
  837. public function getCategory(Request $request)
  838. {
  839. $subsite_id = $request->input('q');
  840. $where = [];
  841. if ($subsite_id === null) {
  842. $where = [];
  843. } else {
  844. $where = ['subsite_id' => $subsite_id];
  845. }
  846. $cates = AdCategory::where($where)->get(['id', 'category_name'])->toArray();
  847. $pre_arr = ['id' => '', 'category_name' => '不限'];
  848. array_unshift($cates, $pre_arr);
  849. return collect($cates);
  850. }
  851. /**
  852. * Make a show builder.
  853. *
  854. * @param mixed $id
  855. * @return Show
  856. */
  857. protected function detail($id)
  858. {
  859. $show = new Show(Ad::findOrFail($id));
  860. $ad_info = Ad::findOrFail($id);
  861. $show->id('ID');
  862. $show->title('广告标题');
  863. $show->is_display('显示状态')->as(function ($is_display) {
  864. return $is_display ? '正常' : '暂停';
  865. });
  866. if (get_subsite_open()) {
  867. $show->subsite_id('所属分站')->as(function ($subsite_id) {
  868. if ($subsite_id) {
  869. $Subsite = Subsite::findOrFail($subsite_id);
  870. return $Subsite->sitename;
  871. }
  872. return '总站';
  873. });
  874. }
  875. $show->category_id('广告位')->as(function ($category_id) {
  876. $cate_info = AdCategory::where(['id' => $category_id])->first();
  877. if ($cate_info) {
  878. return $cate_info->category_name;
  879. } else {
  880. return '&nbsp';
  881. }
  882. });
  883. $show->list_order('显示顺序');
  884. $show->started_at('开始日期')->as(function ($started_at) {
  885. return $started_at ? $started_at : '无限制';
  886. });
  887. $show->ended_at('结束日期')->as(function ($ended_at) {
  888. return $ended_at ? $ended_at : '无限制';
  889. });
  890. $show->note('备注')->as(function ($note) {
  891. return $note ? $note : '&nbsp';
  892. })->setEscape(false);
  893. if ($ad_info->type_id == '1') {
  894. $show->content('文字内容');
  895. $show->url('文字链接')->as(function ($url) {
  896. return $url ? $url : '&nbsp';
  897. })->setEscape(false);
  898. $show->text_color('文字颜色')->as(function ($text_color) {
  899. $html = '<i style="background-color: ' . $text_color . ';padding: 5px 15px;"></i>';
  900. return $html;
  901. })->setEscape(false);
  902. } else if ($ad_info->type_id == '2') {
  903. $show->content('图片')->image();
  904. $show->url('图片链接')->as(function ($url) {
  905. return $url ? $url : '&nbsp';
  906. })->setEscape(false);
  907. $show->explain('图片说明文字')->as(function ($explain) {
  908. return $explain ? $explain : '&nbsp';
  909. })->setEscape(false);
  910. $show->uid('会员UID');
  911. } else if ($ad_info->type_id == '3') {
  912. $show->content('代码');
  913. } else if ($ad_info->type_id == '4') {
  914. $show->content('Flash地址')->image();
  915. } else if ($ad_info->type_id == '5') {
  916. $show->content('视频地址')->image();
  917. }
  918. $show->created_at('添加时间');
  919. $show->updated_at('更新时间');
  920. return $show;
  921. }
  922. /**
  923. * Make a form builder.
  924. *
  925. * @return Form
  926. */
  927. protected function form()
  928. {
  929. $form = new Form(new Ad);
  930. $form->text('title', '广告标题')->help('(区分不同广告条目,并不在广告中显示)');
  931. $display_option = [
  932. 'on' => ['value' => 1, 'text' => '是', 'color' => 'success'],
  933. 'off' => ['value' => 0, 'text' => '否', 'color' => 'danger'],
  934. ];
  935. $form->switch('is_display', '显示状态')->states($display_option)->default('1');
  936. $subsites = array_merge(['0' => '总站'], ['1' => '定海', '2' => '普陀']);
  937. $form->checkbox('subsite_id', '所属分站')->options($subsites)->default('0');
  938. $cate_option = AdCategory::all()->pluck('category_name', 'id');
  939. $form->select('category_id', '广告位')->options($cate_option)->setWidth(3);
  940. $form->number('list_order', '显示顺序')->help('(数字越大越靠前)');
  941. $form->date('started_at', '开始日期')
  942. ->format('YYYY-MM-DD')
  943. ->rules('required|date', ['required' => '开始日期不能为空。', 'date' => '开始日期格式不正确。'])
  944. ->help('(设置广告起始日期,格式yyyy-mm-dd,留空为不限制起始日期)');
  945. $form->date('ended_at', '结束日期')
  946. ->format('YYYY-MM-DD')
  947. ->rules('required|date', ['required' => '结束日期不能为空。', 'date' => '结束日期格式不正确。'])
  948. ->help('(设置广告结束日期,格式yyyy-mm-dd,留空为不限制结束日期)');
  949. $form->textarea('note', '备注');
  950. return $form;
  951. }
  952. public function destroy($id)
  953. {
  954. $ids = [];
  955. if ($id) {
  956. $ids = explode(',', $id);
  957. }
  958. if (get_subsite_id() == 0) {
  959. $filter_id = $id;
  960. } else {
  961. $seletctors = Ad::where(['subsite_id' => get_subsite_id()])->whereIn('id', $ids)->get()->pluck('id')->toarray();
  962. if ($seletctors) {
  963. $filter_id = implode(',', $seletctors);
  964. } else {
  965. $filter_id = '';
  966. }
  967. }
  968. if ($filter_id) {
  969. if ($this->form()->destroy($filter_id)) {
  970. $data = [
  971. 'status' => true,
  972. 'message' => trans('admin.delete_succeeded'),
  973. ];
  974. } else {
  975. $data = [
  976. 'status' => false,
  977. 'message' => trans('admin.delete_failed'),
  978. ];
  979. }
  980. } else {
  981. $data = [
  982. 'status' => false,
  983. 'message' => '不能删除其它分站数据!',
  984. ];
  985. }
  986. return response()->json($data);
  987. }
  988. }