formLuckDrawTrait.php 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. <?php
  2. namespace App\Admin\Controllers\Traits\WxLckDrawTraits;
  3. use App\Admin\Renderable\ShopGoodsProductRender;
  4. use App\Models\Shop\WxShopGoodsProduct;
  5. use App\Wen\Utils\AdminUtils;
  6. use App\Wen\Utils\FieldUtils;
  7. use App\Wen\Utils\GatewayUtils;
  8. use App\Wen\Utils\Settings;
  9. use App\Wen\Utils\SiteUtils;
  10. use Dcat\Admin\Form\NestedForm;
  11. use Dcat\Admin\Layout\Content;
  12. use Dcat\Admin\Widgets\Form;
  13. use Dcat\Admin\Widgets\Tooltip;
  14. use Illuminate\Http\Request;
  15. use Illuminate\Support\Facades\Cache;
  16. trait formLuckDrawTrait{
  17. public function index_config(Content $content)
  18. {
  19. return $content->title('抽奖转盘')
  20. // ->body($this->buildPreviewButton())
  21. // ->body($this->newline())
  22. ->body(
  23. <<<HTML
  24. <div class="card">{$this->form_config()->render()}</div>
  25. HTML
  26. );
  27. }
  28. protected function form_config(){
  29. $form = new Form();
  30. $form->confirm('您确定要提交表单吗?', 'content');
  31. $form->disableResetButton();
  32. $form->image('app_luck_draw_background', '页面背景')->help('<a href="https://img.mini.minisns.cn/hbx/video/luckdrawtopbg.png" download="app_share_vip_img.jpg" target="_blank" style="color: steelblue">点击下载默认图</a>')->url('files/uploads')->uniqueName()->autoUpload()
  33. ->default(Settings::get('app_luck_draw_background', 'https://img.mini.minisns.cn/hbx/video/luckdrawtopbg.png'));
  34. $form->html(function () {
  35. return '<div style="background-color: powderblue;color: #414750;padding: 10px;border-radius: 5px;">小提示: 用户的每次抽奖可以在菜单[用户管理-抽奖]中查看</div>';
  36. }, '');
  37. $form->number('app_luck_draw_coin_pay', '每次抽奖花费')->help('不要填奇怪的数字,比如负数')->default(Settings::get('app_luck_draw_coin_pay', 20));
  38. $form->number('app_luck_draw_times', '免费抽奖次数')->help('不要填奇怪的数字,比如负数')->default(Settings::get('app_luck_draw_times', 3));
  39. $form->html(function () {
  40. return '<div style="background-color: powderblue;color: #414750;padding: 10px;border-radius: 5px;">示例: <br>本次活动由XXXXXXX发起,与Apple.Inc无关。
  41. <br>苹果公司不是本活动的赞助商且没有以任何形式参与活动。<br>本活动仅限17岁以上用户参加。<br>本活动最终解释权归XXXXXXX所有。</div>';
  42. }, '');
  43. $form->table('app_luck_draw_tips','抽奖说明', function (NestedForm $table) {
  44. $table->text('text', '说明')->default('本次活动由XXXXXXX发起,与Apple.Inc无关。');
  45. })->default(Settings::get('app_luck_draw_tips', ''));
  46. $form->html(function () {
  47. $res26 = __system__paycode__tip__(26);
  48. Tooltip::make('.mini_global_admin_open_not_support_tip')
  49. ->bottom()
  50. ->title($res26['tip']);
  51. return '<div style="background-color: powderblue;color: #414750;padding: 10px;border-radius: 5px;">Tips: 1、[权重]决定了中奖概率,[权重]越大,奖励概率越大<br>2、类型和数量是用户实际获得的,你应该在奖项名字里提及,不会特意显示。<br>3、图片不适必须的,仅仅为后面的实物扩展准备<br>4、如需要谢谢惠顾等奖项,只需在奖项名字里填:谢谢参与,然后类型选择金币,数值选择0
  52. <br>5、商品规格在奖励为商品时,才需要选择,若抽中了商品,相当于你购买一次该商品,该功能需要模块26,'.$res26['text'].'</div>';
  53. }, '');
  54. $form->table('app_luck_draw','转盘抽奖', function (NestedForm $table) {
  55. $table->text('id', 'id')->help('保证唯一性')->required()->default('l001');
  56. $table->image('img', '图片')->help('建议图片 100*100 px。 <a href="https://img.mini.minisns.cn/images/luck/coin.png" download="app_share_vip_img.jpg" target="_blank" style="color: steelblue">点击下载默认图</a>')->url('files/uploads')->uniqueName()->autoUpload();
  57. $table->text('name', '奖项名称')->default('奖品一')->required();
  58. $table->number('weight', '权重')->default('99999')->required();
  59. $table->select('type', '奖励类型')->options(FieldUtils::getGiftTypes('luckdraw'))->default(0)->required();
  60. $table->number('num', '奖励数量')->default(1)->required();
  61. $table->multipleSelectTable('product', '商品规格')
  62. ->title('商品规格库')
  63. ->max(1)
  64. ->from(ShopGoodsProductRender::make())
  65. ->model(WxShopGoodsProduct::class, 'id', 'id');
  66. })->default(Settings::get('app_luck_draw', ''));
  67. $form->action('luckdraw/action/config');
  68. return $form;
  69. }
  70. public function config(Request $request){
  71. $luck_draw_id_arr = [];
  72. if(is_array($request->input('app_luck_draw'))){
  73. $app_luck_draw = $request->input('app_luck_draw');
  74. if($app_luck_draw){
  75. foreach ($app_luck_draw as $luck_draw){
  76. if($luck_draw['_remove_'] == 1){
  77. continue;
  78. }
  79. if(in_array($luck_draw['id'], $luck_draw_id_arr)){
  80. return $this->response()->error('抽奖选项的ID重复了,请保持各项唯一');
  81. }else{
  82. $luck_draw_id_arr[] = $luck_draw['id'];
  83. }
  84. }
  85. }
  86. }
  87. SiteUtils::forget_config_data();
  88. Settings::set('app_luck_draw_background', $request->input('app_luck_draw_background'), true);
  89. Settings::set('app_luck_draw_coin_pay', $request->input('app_luck_draw_coin_pay'), true);
  90. Settings::set('app_luck_draw_times', $request->input('app_luck_draw_times'), true);
  91. Settings::set('app_luck_draw_tips', AdminUtils::_table_data($request->input('app_luck_draw_tips')), true);
  92. Settings::set('app_luck_draw', AdminUtils::_table_data($request->input('app_luck_draw')), true);
  93. $__global_config_version__ = Settings::get('__global_config_version__', 1) + 1;
  94. Settings::set('__global_config_version__', $__global_config_version__);
  95. GatewayUtils::success('all', 13, [ 'version' => $__global_config_version__, 'file' => basename(__FILE__) ]);
  96. return $this->response()->success('成功!');
  97. }
  98. }