海南旅游SAAS
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

143 lines
6.2 KiB

4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
  1. <?php
  2. namespace App\AdminSettled\Controllers;
  3. use App\Admin\Repositories\Agent;
  4. use App\AdminSettled\Common\SettledPay;
  5. use App\Common\AgentType;
  6. use App\Common\UserStatus;
  7. use App\Models\AdminSetting;
  8. use App\Models\Supplier;
  9. use Dcat\Admin\Admin;
  10. use Dcat\Admin\Form;
  11. use Dcat\Admin\Http\Controllers\AdminController;
  12. use Dcat\Admin\Widgets\Alert;
  13. use Illuminate\Support\Facades\Config;
  14. use Illuminate\Support\Facades\Storage;
  15. class AgentController extends AdminController
  16. {
  17. protected $title = '代理商入驻';
  18. public function __construct()
  19. {
  20. admin_inject_section(Admin::SECTION['LEFT_SIDEBAR_MENU'], '');
  21. app('view')->prependNamespace('admin', resource_path('views/admin'));
  22. }
  23. protected function grid()
  24. {
  25. config::set('admin.helpers.enable', false);
  26. $tip = '你可能需要
  27. <a href="' . admin_url('supplier/create') . '" style="color:#ef5228;">供应商入驻</a>
  28. <a href="' . admin_url('agent/create') . '" style="color:#ef5228;">代理商入驻</a>
  29. <a href="' . admin_url('guide/create') . '" style="color:#ef5228;">地接入驻</a>';
  30. return Alert::make($tip, '页面不存在')->danger();
  31. }
  32. /**
  33. * Make a show builder.
  34. *
  35. * @param mixed $id
  36. */
  37. protected function detail($id)
  38. {
  39. config::set('admin.helpers.enable', false);
  40. return Alert::make('', '页面不存在')->danger();
  41. }
  42. /**
  43. * Make a form builder.
  44. *
  45. * @return Form
  46. */
  47. protected function form()
  48. {
  49. config::set('admin.helpers.enable', false);
  50. return Form::make(new Agent(), function (Form $form) {
  51. $form->disableListButton();
  52. $form->disableViewCheck();
  53. $form->disableCreatingCheck();
  54. $form->disableEditingCheck();
  55. $form->disableDeleteButton();
  56. $form->text('username')->required();
  57. $form->password('password')->minLength(6, '密码最少6个字符')->required();
  58. $form->text('name')->required();
  59. // $form->text('appid')->placeholder('可以先不填,审核通过之后再设置');
  60. // $form->text('appsecret')->placeholder('可以先不填,审核通过之后再设置');
  61. // $form->text('mchid')->placeholder('可以先不填,审核通过之后再设置');
  62. // $form->text('mchkey')->placeholder('可以先不填,审核通过之后再设置');
  63. $form->radio('type')
  64. ->options(AgentType::array())
  65. ->default(AgentType::CLUSTER)
  66. ->required();
  67. $form->text('company_name')->required()->help('请正确填写,保持跟营业执照上的完全一致,如:海南易游天下供应链有限公司');
  68. $form->text('address')->required();
  69. $form->distpicker(['province_id', 'city_id', 'area_id'], '请选择区域')->required();
  70. $form->multipleImage('license')->required()->removable(false)->uniqueName();
  71. $form->image('business_license')->required()->removable(false)->uniqueName();
  72. $form->text('credit_codes')->required()->help('请正确填写,保持跟营业执照上的完全一致,如:91440300577652919M');
  73. $form->text('corporate_account')->required()->help('非常重要,该账号作为默认提现账号');
  74. $form->text('deposit_bank')->required();
  75. $form->text('director')->required();
  76. $form->text('contact_phone')->required()->maxLength(15);
  77. $form->text('contact_mobile')->required()->maxLength(11)->help('此号码将用于接收短信提醒(如订单提醒、付款提醒、核销提醒等)');
  78. $form->text('legal_persona_name')->required()->maxLength(20)->help('很重要,注册小程序时需要用到,用于实名认证');
  79. $form->text('legal_persona_wechat')->required()->maxLength(100)->help('很重要,用于接收实名认证信息,不能是手机号或QQ号,微信号请前往微信“我的”页面查看');
  80. $contract_template = Storage::disk('public')->url(AdminSetting::val('settled_agent_contract'));
  81. $form->image('contract')->required()->uniqueName()
  82. ->help('请先 <a target="_blank" href="' . $contract_template . '" download="【易游天下】代理商入驻合同模板">下载入驻合同</a> 并打印,填写完毕之后盖好公章再上传。');
  83. $agreement_template = Storage::disk('public')->url(AdminSetting::val('settled_agent_agreement'));
  84. $form->checkbox('agreement', '')->required()
  85. ->options([1 => '我已认真阅读并完全认同'])->customFormat(fn() => '')
  86. ->script('$(function(){
  87. $(".field_agreement").parent().css("margin-right", 0).after(\'《<a target="_blank" href="'.$agreement_template.'" download="【易游天下】入驻协议">入驻协议</a>》\');
  88. });');
  89. Admin::js('@qrcode');
  90. })->saving(function (Form $form) {
  91. //禁止编辑
  92. if ($form->isEditing()) {
  93. return $form->response()->error('服务器出错了~~');
  94. }
  95. if (empty(array_filter($form->agreement))) {
  96. return $form->response()->error('你必须同意入驻协议才能入驻');
  97. }
  98. $form->deleteInput('agreement');
  99. //判断账号是否唯一
  100. if ($form->repository()->model()->where('username', $form->username)->exists()) {
  101. return $form->response()->error($form->username . ' 的账号已经存在');
  102. }
  103. //如果是供应商版旅行社,也不能存在相同的供应商账号,因为后台审核之后需要再次插入相同的供应商账号
  104. if ($form->type == AgentType::SUPPLIER && Supplier::where('username', $form->username)->exists()) {
  105. return $form->response()->error($form->username . ' 的账号已经存在');
  106. }
  107. //过滤null字段
  108. foreach($form->input() as $k => $v) {
  109. if (is_null($v)) {
  110. $form->$k = '';
  111. }
  112. }
  113. //不允许编辑的字段
  114. $form->ignore(['id', 'remember_token', 'username', 'rate', 'created_at', 'updated_at', 'deleted_at']);
  115. //处理特殊字段
  116. $form->hidden(['status', 'rate']);
  117. $form->status = UserStatus::UNAUDITED;
  118. $form->rate = 5;
  119. $form->type = in_array($form->type, AgentType::key()) ? $form->type : AgentType::CLUSTER;
  120. })->saved(function (Form $form) {
  121. $js = (new SettledPay)->PayJs($form->repository()->model());
  122. return $form->response()->success('操作成功,继续支付入驻费完成入驻')->script($js);
  123. })->deleting(function (Form $form) {
  124. return $form->response()->error('服务器出错了~~');
  125. });
  126. }
  127. }