formAdTrait.php 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314
  1. <?php
  2. namespace App\Admin\Controllers\Traits\WxSettingTraits;
  3. use App\Wen\Utils\AdminUtils;
  4. use App\Wen\Utils\FieldUtils;
  5. use App\Wen\Utils\GatewayUtils;
  6. use App\Wen\Utils\Settings;
  7. use App\Wen\Utils\SiteUtils;
  8. use Dcat\Admin\Form\NestedForm;
  9. use Dcat\Admin\Layout\Content;
  10. use Dcat\Admin\Widgets\Form;
  11. use Dcat\Admin\Widgets\Tooltip;
  12. use Illuminate\Http\Request;
  13. use Illuminate\Support\Facades\Cache;
  14. trait formAdTrait{
  15. public function index_ad(Content $content)
  16. {
  17. return $content->title('广告配置')->description('小程序平台展示小程序广告,其他平台展示Dcloud广告,所以每个位置都是需要配置两份,<b>填的均是广告id</b>,微信广告如:adunit-0bf9d9799d0ccd64')
  18. // ->body($this->buildPreviewButton())
  19. // ->body($this->newline())
  20. ->body(
  21. <<<HTML
  22. <div class="card">{$this->form_ad()->render()}</div>
  23. HTML
  24. );
  25. }
  26. protected function form_ad(){
  27. $form = new Form();
  28. $form->confirm('您确定要提交表单吗?', 'content');
  29. $form->disableResetButton();
  30. global $__MINI_GLOBAL_TENANT_ID__;
  31. $form->tab('详情', function (Form $form) {
  32. $form->html(function () {
  33. return '<div style="background-color: powderblue;color: #414750;padding: 10px;border-radius: 5px;">广告位置一:笔记内容底部</div>';
  34. }, '');
  35. $form->html(function () {
  36. $res14 = __system__paycode__tip__(14);
  37. Tooltip::make('.mini_global_admin_open_not_support_tip')
  38. ->bottom()
  39. ->title($res14['tip']);
  40. return $res14['text'];
  41. }, '<b>1、微信小程序广告</b>');
  42. $form->table('ad_mp_words_sticky','笔记详情页', function (NestedForm $table) {
  43. $table->radio('type', '类型')->options([0=>'平台广告', 1=>'图片广告'])->default(0);
  44. $table->text('unit', '广告ID')->help('仅支持“原生模板广告”类型');
  45. $table->image('img', '图片')->help('<a href="https://img.mini.minisns.cn/ad/addefault.png" download="about_logo.jpg" target="_blank">点击下载默认图</a>,最好是png透明图')->url('files/uploads')->autoUpload()->uniqueName()->default('https://img.mini.minisns.cn/ad/addefault.png');
  46. $table->radio('target_type', '跳转类型(图片类型时)')->options(FieldUtils::getUrlTypes())->default(0);
  47. $table->text('target_id', '跳转id(图片类型时)')->help('怎么填请看<a href="https://doc.minisns.cn/doc/44/" target="_blank">路径大全</a>');
  48. })->help('配置多个则是随机出现')->default(Settings::get('ad_mp_words_sticky', '', true));
  49. $form->table('ad_mp_single_sticky','图文详情页', function (NestedForm $table) {
  50. $table->radio('type', '类型')->options([0=>'平台广告', 1=>'图片广告'])->default(0);
  51. $table->text('unit', '广告ID')->help('仅支持“原生模板广告”类型');
  52. $table->image('img', '图片')->help('<a href="https://img.mini.minisns.cn/ad/addefault.png" download="about_logo.jpg" target="_blank">点击下载默认图</a>,最好是png透明图')->url('files/uploads')->autoUpload()->uniqueName()->default('https://img.mini.minisns.cn/ad/addefault.png');
  53. $table->radio('target_type', '跳转类型(图片类型时)')->options(FieldUtils::getUrlTypes())->default(0);
  54. $table->text('target_id', '跳转id(图片类型时)')->help('怎么填请看<a href="https://doc.minisns.cn/doc/44/" target="_blank">路径大全</a>');
  55. })->help('配置多个则是随机出现')->default(Settings::get('ad_mp_single_sticky', '', true));
  56. $form->table('ad_mp_video_sticky','视频详情页', function (NestedForm $table) {
  57. $table->radio('type', '类型')->options([0=>'平台广告', 1=>'图片广告'])->default(0);
  58. $table->text('unit', '广告ID')->help('仅支持“原生模板广告”类型');
  59. $table->image('img', '图片')->help('<a href="https://img.mini.minisns.cn/ad/addefault.png" download="about_logo.jpg" target="_blank">点击下载默认图</a>,最好是png透明图')->url('files/uploads')->autoUpload()->uniqueName()->default('https://img.mini.minisns.cn/ad/addefault.png');
  60. $table->radio('target_type', '跳转类型(图片类型时)')->options(FieldUtils::getUrlTypes())->default(0);
  61. $table->text('target_id', '跳转id(图片类型时)')->help('怎么填请看<a href="https://doc.minisns.cn/doc/44/" target="_blank">路径大全</a>');
  62. })->help('配置多个则是随机出现')->default(Settings::get('ad_mp_video_sticky', '', true));
  63. $form->html(function () {
  64. return '';
  65. }, '<b>2、Dcloud广告</b>');
  66. $form->table('ad_uni_words_sticky','笔记详情页', function (NestedForm $table) {
  67. $table->radio('type', '类型')->options([0=>'平台广告', 1=>'图片广告'])->default(0);
  68. $table->text('unit', '广告ID');
  69. $table->image('img', '图片')->help('<a href="https://img.mini.minisns.cn/ad/addefault.png" download="about_logo.jpg" target="_blank">点击下载默认图</a>,最好是png透明图')->url('files/uploads')->autoUpload()->uniqueName()->default('https://img.mini.minisns.cn/ad/addefault.png');
  70. $table->radio('target_type', '跳转类型(图片类型时)')->options(FieldUtils::getUrlTypes())->default(0);
  71. $table->text('target_id', '跳转id(图片类型时)')->help('怎么填请看<a href="https://doc.minisns.cn/doc/44/" target="_blank">路径大全</a>');
  72. })->help('配置多个则是随机出现')->default(Settings::get('ad_uni_words_sticky', '', true));
  73. $form->table('ad_uni_single_sticky','图文详情页', function (NestedForm $table) {
  74. $table->radio('type', '类型')->options([0=>'平台广告', 1=>'图片广告'])->default(0);
  75. $table->text('unit', '广告ID');
  76. $table->image('img', '图片')->help('<a href="https://img.mini.minisns.cn/ad/addefault.png" download="about_logo.jpg" target="_blank">点击下载默认图</a>,最好是png透明图')->url('files/uploads')->autoUpload()->uniqueName()->default('https://img.mini.minisns.cn/ad/addefault.png');
  77. $table->radio('target_type', '跳转类型(图片类型时)')->options(FieldUtils::getUrlTypes())->default(0);
  78. $table->text('target_id', '跳转id(图片类型时)')->help('怎么填请看<a href="https://doc.minisns.cn/doc/44/" target="_blank">路径大全</a>');
  79. })->help('配置多个则是随机出现')->default(Settings::get('ad_uni_single_sticky', '', true));
  80. $form->table('ad_uni_video_sticky','视频详情页', function (NestedForm $table) {
  81. $table->radio('type', '类型')->options([0=>'平台广告', 1=>'图片广告'])->default(0);
  82. $table->text('unit', '广告ID');
  83. $table->image('img', '图片')->help('<a href="https://img.mini.minisns.cn/ad/addefault.png" download="about_logo.jpg" target="_blank">点击下载默认图</a>,最好是png透明图')->url('files/uploads')->autoUpload()->uniqueName()->default('https://img.mini.minisns.cn/ad/addefault.png');
  84. $table->radio('target_type', '跳转类型(图片类型时)')->options(FieldUtils::getUrlTypes())->default(0);
  85. $table->text('target_id', '跳转id(图片类型时)')->help('怎么填请看<a href="https://doc.minisns.cn/doc/44/" target="_blank">路径大全</a>');
  86. })->help('配置多个则是随机出现')->default(Settings::get('ad_uni_video_sticky', '', true));
  87. });
  88. $form->tab('笔记列表页推流', function (Form $form) {
  89. $form->html(function () {
  90. return '<div style="background-color: powderblue;color: #414750;padding: 10px;border-radius: 5px;">广告位置二:笔记推流</div>';
  91. }, '');
  92. $form->html(function () {
  93. $res14 = __system__paycode__tip__(14);
  94. Tooltip::make('.mini_global_admin_open_not_support_tip')
  95. ->bottom()
  96. ->title($res14['tip']);
  97. return $res14['text'];
  98. }, '<b>1、微信小程序广告</b>');
  99. $form->table('ad_mp_push_flow','笔记推流', function (NestedForm $table) {
  100. $table->radio('type', '类型')->options([0=>'平台广告', 1=>'图片广告'])->default(0);
  101. $table->text('unit', '广告ID')->help('仅支持“原生模板广告”类型');
  102. $table->image('img', '图片')->help('<a href="https://img.mini.minisns.cn/ad/addefault.png" download="about_logo.jpg" target="_blank">点击下载默认图</a>,最好是png透明图')->url('files/uploads')->autoUpload()->uniqueName()->default('https://img.mini.minisns.cn/ad/addefault.png');
  103. $table->radio('target_type', '跳转类型(图片类型时)')->options(FieldUtils::getUrlTypes())->default(0);
  104. $table->text('target_id', '跳转id(图片类型时)')->help('怎么填请看<a href="https://doc.minisns.cn/doc/44/" target="_blank">路径大全</a>');
  105. })->help('配置多个则是随机出现')->default(Settings::get('ad_mp_push_flow', '', true));
  106. $form->html(function () {
  107. return '';
  108. }, '<b>2、Dcloud广告</b>');
  109. $form->table('ad_uni_push_flow','笔记推流', function (NestedForm $table) {
  110. $table->radio('type', '类型')->options([0=>'平台广告', 1=>'图片广告'])->default(0);
  111. $table->text('unit', '广告ID');
  112. $table->image('img', '图片')->help('<a href="https://img.mini.minisns.cn/ad/addefault.png" download="about_logo.jpg" target="_blank">点击下载默认图</a>,最好是png透明图')->url('files/uploads')->autoUpload()->uniqueName()->default('https://img.mini.minisns.cn/ad/addefault.png');
  113. $table->radio('target_type', '跳转类型(图片类型时)')->options(FieldUtils::getUrlTypes())->default(0);
  114. $table->text('target_id', '跳转id(图片类型时)')->help('怎么填请看<a href="https://doc.minisns.cn/doc/44/" target="_blank">路径大全</a>');
  115. })->help('配置多个则是随机出现')->default(Settings::get('ad_uni_push_flow', '', true));
  116. });
  117. $form->tab('评论推流', function (Form $form) {
  118. $form->html(function () {
  119. return '<div style="background-color: powderblue;color: #414750;padding: 10px;border-radius: 5px;">广告位置三:评论推流</div>';
  120. }, '');
  121. $form->html(function () {
  122. return '';
  123. }, '<b>1、微信小程序广告</b>');
  124. $form->table('ad_mp_comment_push_flow','评论推流', function (NestedForm $table) {
  125. $table->radio('type', '类型')->options([0=>'平台广告', 1=>'图片广告'])->default(0);
  126. $table->text('unit', '广告ID')->help('仅支持“原生模板广告”类型');
  127. $table->image('img', '图片')->help('<a href="https://img.mini.minisns.cn/ad/addefault.png" download="about_logo.jpg" target="_blank">点击下载默认图</a>,最好是png透明图')->url('files/uploads')->autoUpload()->uniqueName()->default('https://img.mini.minisns.cn/ad/addefault.png');
  128. $table->radio('target_type', '跳转类型(图片类型时)')->options(FieldUtils::getUrlTypes())->default(0);
  129. $table->text('target_id', '跳转id(图片类型时)')->help('怎么填请看<a href="https://doc.minisns.cn/doc/44/" target="_blank">路径大全</a>');
  130. })->help('配置多个则是随机出现')->default(Settings::get('ad_mp_comment_push_flow', '', true));
  131. $form->html(function () {
  132. return '';
  133. }, '<b>2、Dcloud广告</b>');
  134. $form->table('ad_uni_comment_push_flow','评论推流', function (NestedForm $table) {
  135. $table->radio('type', '类型')->options([0=>'平台广告', 1=>'图片广告'])->default(0);
  136. $table->text('unit', '广告ID');
  137. $table->image('img', '图片')->help('<a href="https://img.mini.minisns.cn/ad/addefault.png" download="about_logo.jpg" target="_blank">点击下载默认图</a>,最好是png透明图')->url('files/uploads')->autoUpload()->uniqueName()->default('https://img.mini.minisns.cn/ad/addefault.png');
  138. $table->radio('target_type', '跳转类型(图片类型时)')->options(FieldUtils::getUrlTypes())->default(0);
  139. $table->text('target_id', '跳转id(图片类型时)')->help('怎么填请看<a href="https://doc.minisns.cn/doc/44/" target="_blank">路径大全</a>');
  140. })->help('配置多个则是随机出现')->default(Settings::get('ad_uni_comment_push_flow', '', true));
  141. });
  142. $form->tab('瀑布流推流', function (Form $form) {
  143. $form->html(function () {
  144. return '<div style="background-color: powderblue;color: #414750;padding: 10px;border-radius: 5px;">广告位置四:瀑布流推流</div>';
  145. }, '');
  146. $form->html(function () {
  147. return '';
  148. }, '<b>1、微信小程序广告</b>');
  149. $form->table('ad_mp_water_flow','瀑布流', function (NestedForm $table) {
  150. $table->radio('type', '类型')->options([0=>'平台广告', 1=>'图片广告'])->default(0);
  151. $table->text('unit', '广告ID')->help('仅支持“原生模板广告”类型');
  152. $table->image('img', '图片')->help('<a href="https://img.mini.minisns.cn/ad/addefault.png" download="about_logo.jpg" target="_blank">点击下载默认图</a>,最好是png透明图')->url('files/uploads')->autoUpload()->uniqueName()->default('https://img.mini.minisns.cn/ad/addefault.png');
  153. $table->radio('target_type', '跳转类型(图片类型时)')->options(FieldUtils::getUrlTypes())->default(0);
  154. $table->text('target_id', '跳转id(图片类型时)')->help('怎么填请看<a href="https://doc.minisns.cn/doc/44/" target="_blank">路径大全</a>');
  155. })->help('配置多个则是随机出现')->default(Settings::get('ad_mp_water_flow', '', true));
  156. $form->html(function () {
  157. return '';
  158. }, '<b>2、Dcloud广告</b>');
  159. $form->table('ad_uni_water_flow','瀑布流', function (NestedForm $table) {
  160. $table->radio('type', '类型')->options([0=>'平台广告', 1=>'图片广告'])->default(0);
  161. $table->text('unit', '广告ID');
  162. $table->image('img', '图片')->help('<a href="https://img.mini.minisns.cn/ad/addefault.png" download="about_logo.jpg" target="_blank">点击下载默认图</a>,最好是png透明图')->url('files/uploads')->autoUpload()->uniqueName()->default('https://img.mini.minisns.cn/ad/addefault.png');
  163. $table->radio('target_type', '跳转类型(图片类型时)')->options(FieldUtils::getUrlTypes())->default(0);
  164. $table->text('target_id', '跳转id(图片类型时)')->help('怎么填请看<a href="https://doc.minisns.cn/doc/44/" target="_blank">路径大全</a>');
  165. })->help('配置多个则是随机出现')->default(Settings::get('ad_uni_water_flow', '', true));
  166. });
  167. if($__MINI_GLOBAL_TENANT_ID__ === 0){
  168. $form->tab('激励广告', function (Form $form) {
  169. $form->html(function () {
  170. return '<div style="background-color: powderblue;color: #414750;padding: 10px;border-radius: 5px;">广告位置五:金币支付不足时,弹出激励视频奖励,或者在“我的钱包”点击硬币进入该页面</div>';
  171. }, '');
  172. $form->image('ad_reward_inspire_img', '激励页面的gif图')->url('files/uploads')->uniqueName()->autoUpload()->default(Settings::get('ad_reward_inspire_img', 'https://img.mini.minisns.cn/images/inspire-face.png'));
  173. $form->divider();
  174. $form->number('ad_mp_reward_every_day_times', '每天观看次数上限(小程序)')->default(Settings::get('ad_mp_reward_every_day_times', 10, true));
  175. $form->number('ad_mp_reward_every', '奖励金币数量(小程序)')->help('每次观看完激励视频后,可以获得多少金币')->default(Settings::get('ad_mp_reward_every', 20, true));
  176. $form->divider();
  177. $form->number('ad_uni_reward_every_day_times', '每天观看次数上限(Dcloud)')->default(Settings::get('ad_uni_reward_every_day_times', 10, true));
  178. $form->number('ad_uni_reward_every', '奖励金币数量(Dcloud)')->help('每次观看完激励视频后,可以获得多少金币')->default(Settings::get('ad_uni_reward_every', 20, true));
  179. $form->html(function () {
  180. return '';
  181. }, '<b>1、微信小程序广告</b>');
  182. $form->text('ad_mp_reward_unit', '激励视频广告')->help('请选择“激励视频”类型的广告,在进行金币支付时,若金币不足,则弹窗提示是否观看激励视频获取奖励。')->default(Settings::get('ad_mp_reward_unit','', true));
  183. $form->html(function () {
  184. return '';
  185. }, '<b>2、Dcloud广告</b>');
  186. $form->text('ad_uni_reward_unit', '激励视频广告')->default(Settings::get('ad_uni_reward_unit','', true));
  187. });
  188. $form->tab('视频前贴片', function (Form $form) {
  189. $form->html(function () {
  190. return '<div style="background-color: powderblue;color: #414750;padding: 10px;border-radius: 5px;">广告位置六:视频前贴片广告,仅支持小程序</div>';
  191. }, '');
  192. $form->text('ad_mp_video_pre_sticker', '视频前贴片广告')->default(Settings::get('ad_mp_video_pre_sticker', '', true));
  193. });
  194. }
  195. $form->action('settings/action/ad');
  196. return $form;
  197. }
  198. public function ad(Request $request){
  199. SiteUtils::forget_config_data();
  200. global $__MINI_GLOBAL_TENANT_ID__;
  201. Settings::set('ad_mp_words_sticky', AdminUtils::_table_data($request->input('ad_mp_words_sticky')), true, true);
  202. Settings::set('ad_mp_single_sticky', AdminUtils::_table_data($request->input('ad_mp_single_sticky')), true, true);
  203. Settings::set('ad_mp_video_sticky', AdminUtils::_table_data($request->input('ad_mp_video_sticky')), true, true);
  204. Settings::set('ad_uni_words_sticky', AdminUtils::_table_data($request->input('ad_uni_words_sticky')), true, true);
  205. Settings::set('ad_uni_single_sticky', AdminUtils::_table_data($request->input('ad_uni_single_sticky')), true, true);
  206. Settings::set('ad_uni_video_sticky', AdminUtils::_table_data($request->input('ad_uni_video_sticky')), true, true);
  207. Settings::set('ad_mp_push_flow', AdminUtils::_table_data($request->input('ad_mp_push_flow')), true, true);
  208. Settings::set('ad_uni_push_flow', AdminUtils::_table_data($request->input('ad_uni_push_flow')), true, true);
  209. Settings::set('ad_mp_comment_push_flow', AdminUtils::_table_data($request->input('ad_mp_comment_push_flow')), true, true);
  210. Settings::set('ad_uni_comment_push_flow', AdminUtils::_table_data($request->input('ad_uni_comment_push_flow')), true, true);
  211. Settings::set('ad_mp_water_flow', AdminUtils::_table_data($request->input('ad_mp_water_flow')), true, true);
  212. Settings::set('ad_uni_water_flow', AdminUtils::_table_data($request->input('ad_uni_water_flow')), true, true);
  213. if($__MINI_GLOBAL_TENANT_ID__ === 0){
  214. Settings::set('ad_mp_reward_unit', $request->input('ad_mp_reward_unit'), true, true);
  215. Settings::set('ad_uni_reward_unit', $request->input('ad_uni_reward_unit'), true, true);
  216. Settings::set('ad_mp_reward_every', $request->input('ad_mp_reward_every'), true, true);
  217. Settings::set('ad_uni_reward_every', $request->input('ad_uni_reward_every'), true, true);
  218. Settings::set('ad_reward_inspire_img', $request->input('ad_reward_inspire_img'), true, true);
  219. Settings::set('ad_mp_reward_every_day_times', $request->input('ad_mp_reward_every_day_times'), true, true);
  220. Settings::set('ad_uni_reward_every_day_times', $request->input('ad_uni_reward_every_day_times'), true, true);
  221. Settings::set('ad_mp_video_pre_sticker', $request->input('ad_mp_video_pre_sticker'), true, true);
  222. }
  223. Cache::forget(_multi_key('ad_config'));
  224. $ad_config = [
  225. 'mp' => [
  226. 'position1' => [
  227. "words" => json_decode(AdminUtils::_table_data($request->input('ad_mp_words_sticky', '[]')), true),
  228. "single" => json_decode(AdminUtils::_table_data($request->input('ad_mp_single_sticky', '[]')), true),
  229. "video" => json_decode(AdminUtils::_table_data($request->input('ad_mp_video_sticky', '[]')), true),
  230. ],
  231. 'position2' => [
  232. "flow" => json_decode(AdminUtils::_table_data($request->input('ad_mp_push_flow', '[]')), true),
  233. ],
  234. 'position3' => [
  235. 'flow' => json_decode(AdminUtils::_table_data($request->input('ad_mp_comment_push_flow', '[]')), true),
  236. ],
  237. 'position4' => [
  238. 'flow' => json_decode(AdminUtils::_table_data($request->input('ad_mp_water_flow', '[]')), true),
  239. ],
  240. 'position5' => [
  241. 'reward' => Settings::get('ad_mp_reward_unit', ''),
  242. ],
  243. 'position6' => [
  244. 'pre_sticker' => Settings::get('ad_mp_video_pre_sticker', ''),
  245. ]
  246. ],
  247. 'uni' => [
  248. 'position1' => [
  249. "words" => json_decode(AdminUtils::_table_data($request->input('ad_uni_words_sticky', '[]')), true),
  250. "single" => json_decode(AdminUtils::_table_data($request->input('ad_uni_single_sticky', '[]')), true),
  251. "video" => json_decode(AdminUtils::_table_data($request->input('ad_uni_video_sticky', '[]')), true),
  252. ],
  253. 'position2' => [
  254. "flow" => json_decode(AdminUtils::_table_data($request->input('ad_uni_push_flow', '[]')), true),
  255. ],
  256. 'position3' => [
  257. 'flow' => json_decode(AdminUtils::_table_data($request->input('ad_uni_comment_push_flow', '[]')), true),
  258. ],
  259. 'position4' => [
  260. 'flow' => json_decode(AdminUtils::_table_data($request->input('ad_uni_water_flow', '[]')), true),
  261. ],
  262. 'position5' => [
  263. 'reward' => Settings::get('ad_uni_reward_unit', '')
  264. ],
  265. 'position6' => [
  266. 'pre_sticker' => null
  267. ]
  268. ]
  269. ];
  270. Cache::put( _multi_key('ad_config'), json_encode($ad_config));
  271. $__global_config_version__ = Settings::get('__global_config_version__', 1) + 1;
  272. Settings::set('__global_config_version__', $__global_config_version__);
  273. GatewayUtils::success('all', 13, [ 'version' => $__global_config_version__, 'file' => basename(__FILE__) ]);
  274. return $this->response()->success('成功!');
  275. }
  276. }