<?php namespace App\Admin\Controllers; use App\Command\Log; use App\Models\HfCompanyMember; use App\Models\HfProvAreaCode; use App\Models\Adapay; use Dcat\Admin\Form; use Dcat\Admin\Grid; use Dcat\Admin\Show; use Dcat\Admin\Http\Controllers\AdminController; use Dcat\Admin\Widgets\Card; use App\Models\Merchant; use Illuminate\Support\Facades\DB; class HfCompanyMemberController extends AdminController { /** * Make a grid builder. * * @return Grid */ protected function grid() { return Grid::make(new HfCompanyMember(), function (Grid $grid) { $grid->column('id')->sortable(); $grid->model()->orderBy('created_at', 'DESC'); //$grid->column('order_no'); $grid->column('cont_name', '联系人姓名'); $grid->column('cont_phone', '手机号'); //$grid->column('email'); $grid->column('entry_mer_type')->display(function ($val) { return $val == 1 ? '企业' : '个体工商户'; }); $grid->column('social_credit_code'); $grid->column('name'); $grid->column('social_credit_code_begin'); $grid->column('social_credit_code_expires'); $grid->column('address'); $grid->column('business_scope')->display('点击查看')->modal(function ($modal) { //设置弹窗标题 $modal->title('经营范围'); $content = $this->business_scope . "<br/>"; $card = new Card(null, $content); return "<div style='padding:10px 10px 0;width:100%;'>$card</div>"; }); $grid->column('legal_person', '法人信息')->display('点击查看')->modal(function ($modal) { //设置弹窗标题 $modal->title('法人信息'); $content = '法人姓名:' . $this->legal_person . "<br/>"; $content .= '法人身份证号:' . $this->legal_cert_id . "<br/>"; $content .= '法人证件有效期起始日期:' . $this->legal_cert_id_begin . "<br/>"; $content .= '法人证件有效期截止日期:' . $this->legal_cert_id_expires . "<br/>"; $content .= '法人手机号:' . $this->legal_mp . "<br/>"; $card = new Card(null, $content); return "<div style='padding:10px 10px 0;width:100%;'>$card</div>"; }); $grid->column('status', '审核状态')->display(function ($val) { $str = '等待审核'; if ($val == 'failed') { $str = '拒绝'; } elseif ($val == 'succeeded') { $str = '通过'; } return $str; }); $grid->column('audit_desc', '审核原因')->display('点击查看')->modal(function ($modal) { //设置弹窗标题 $modal->title('审核原因'); $content = $this->audit_desc . "<br/>"; $card = new Card(null, $content); return "<div style='padding:10px 10px 0;width:100%;'>$card</div>"; }); $grid->disableViewButton(); $grid->disableDeleteButton(); $grid->disableRowSelector(); $grid->actions(function (Grid\Displayers\Actions $actions) { $rowData = $actions->row; if ($rowData['status'] != 'failed') { $actions->disableEdit(); } }); $grid->filter(function (Grid\Filter $filter) { // 更改为 panel 布局 $filter->panel(); $filter->like('cont_name', '联系人姓名')->width(3); $filter->like('cont_phone')->width(3); }); }); } /** * Make a show builder. * * @param mixed $id * * @return Show */ protected function detail($id) { return Show::make($id, new HfCompanyMember(), function (Show $show) { $show->field('id'); $show->field('order_no'); $show->field('cont_name'); $show->field('cont_phone'); $show->field('email'); $show->field('entry_mer_type'); $show->field('social_credit_code'); $show->field('name'); $show->field('social_credit_code_begin'); $show->field('social_credit_code_expires'); $show->field('address'); $show->field('business_scope'); $show->field('legal_cert_type'); $show->field('legal_cert_id'); $show->field('legal_person'); $show->field('legal_cert_id_begin'); $show->field('legal_cert_id_expires'); $show->field('legal_mp'); $show->field('attach_file'); $show->field('created_at'); $show->field('updated_at'); }); } /** * Make a form builder. * * @return Form */ protected function form() { $form = Form::make(new HfCompanyMember(), function (Form $form) { $form->display('id'); //$form->text('order_no'); $form->select('merchant_id', '商家名称') ->options(Merchant::whereNull('deleted_at')->get()->pluck('name', 'id'))->required(); // $order_no = 'cm' . date("YmdHis") . mt_rand(10000, 99999); // $form->text('order_no')->default($order_no); //请求订单号 $form->text('cont_name')->required(); $form->text('cont_phone')->required(); $form->text('email')->required(); $form->radio('entry_mer_type')->options(['0' => '个体工商户', '1' => '企业'])->default(1); $form->text('social_credit_code')->required()->help('示例值:91310104660736427E'); $form->text('name')->required()->help('示例值:上海汇付支付有限公司'); $form->select('prov_code', '省份')->options(HfProvAreaCode::where('parent_id', 0)->pluck('title', 'area_code'))->rules('required')->load('area_code', '/hf-area-code'); // 城市 $form->select('area_code', '城市')->required(); $form->text('social_credit_code_begin')->required()->help('示例值:20220427'); $form->text('social_credit_code_expires')->required()->help('示例值:20270427'); $form->text('address')->required(); $form->text('business_scope')->required(); $form->hidden('legal_cert_type')->default('00'); $form->text('legal_cert_id', '法人身份证号码')->required(); $form->text('legal_person')->required(); $form->text('legal_cert_id_begin')->required()->help('示例值:20170428'); $form->text('legal_cert_id_expires')->required()->help('示例值:20370428'); $form->text('legal_mp')->required(); $form->file('attach_file', '附件') ->url('upload/huifu') ->deleteUrl('upload/delete-public-oss-file') ->autoUpload() ->required() ->help('内容须包含三证合一证件照、法人身份证正面照、法人身份证反面照、开户银行许可证照。 压缩 zip包后上传,最大限制为 9 M'); //hf $form->text('card_no', '银行卡号(对公)')->required(); $form->text('card_name', '银行卡对应的户名')->required(); $form->hidden('audit_state'); $form->hidden('audit_desc'); $form->disableCreatingCheck(); $form->disableEditingCheck(); $form->disableViewCheck(); $form->disableDeleteButton(); $form->disableViewButton(); // $form->display('created_at'); // $form->display('updated_at'); }); //汇付注册企业用户 $form->saved( function (Form $form, $result) { $hf_id = $form->getKey(); $params = $_POST ?? []; $member_params = array( # app_id "app_id" => env('HUIFU_APPID'), # 商户用户id "member_id" => "cm_id" . $params['merchant_id'], # 订单号 "order_no" => 'corp_member' . date("YmdHis") . mt_rand(10000, 99999), # 企业名称 "name" => $params['name'], 'prod_mode' => false, # 省份 "prov_code" => $params['prov_code'], # 地区 "area_code" => $params['area_code'], # 统一社会信用码 "social_credit_code" => $params['social_credit_code'], "social_credit_code_expires" => $params['social_credit_code_expires'], # 经营范围 "business_scope" => $params['business_scope'], # 证件类型 "legal_cert_type" => '00', # 法人姓名 "legal_person" => $params['legal_person'], # 法人身份证号码 "legal_cert_id" => $params['legal_cert_id'], # 法人身份证有效期 "legal_cert_id_expires" => $params['legal_cert_id_expires'], # 法人手机号 "legal_mp" => $params['legal_mp'], # 企业地址 "address" => $params['address'], # 邮编 "zip_code" => "", # 异步通知 "notify_url" => env('API_URL') . '/hf-company-member-notify', # 企业邮箱 "email" => $params['email'], # 上传附件 "attach_file" => new \CURLFile($params['attach_file']), # 银行卡号 "card_no" => $params['card_no'], //如果需要自动开结算账户,本字段必填 # 银行卡对应的户名 "card_name" => $params['card_name'], //如果需要自动开结算账户,本字段必填 ); $result = (new Adapay())->createCompany($member_params); Log::add('创建企业用户响应结果', $result); if ($result['status'] == 'failed') { DB::table('hf_company_member')->where('id', $hf_id)->delete(); return $form->response()->error($result['error_msg']); } else { DB::table('hf_company_member')->where('id', $hf_id)->update(['member_id' => $result['member_id'], 'status' => $result['status']]); } } ); return $form; } }