<?php
namespace App\Http\Controllers\Api\Crm;

use App\Http\Controllers\Api\ApiBaseController;
use Illuminate\Http\Request;
use App\Services\Crm\JobsService;
use App\Services\Crm\CompanyService;
use App\Services\Crm\JobfairService;
use App\Services\Crm\PersonService;
use App\Services\Auth\RegisterService;
use Illuminate\Support\Facades\Cache;
use App\Services\Common\EmailService;
use App\Services\Common\MembersSetmealService;
use App\Services\Common\SmsService;
use App\Services\Common\TaskService;
use App\Services\Common\SetmealService;
use App\Services\Common\SetmealIncrementsService;
use App\Services\Person\MemberPointService;
use App\Services\Common\PaymentService;
use App\Services\Common\PayService;
use App\Services\Common\OrderService;
use App\Services\Company\ServiceService;
use Aix\Pay\Data\PayOrder;
use App\Models\Order;


class IndexController extends ApiBaseController
{
    protected $jobsService;
    protected $companyService;
    protected $jobfairService;
    protected $personService;
    protected $registerService;
    protected $membersSetmealService;
    protected $emailService;
    protected $taskService;
    protected $setmealService;
    protected $setmealIncrementsService;
    protected $memberPointService;
    protected $paymentService;
    protected $payService;
    protected $orderService;
    protected $serviceService;
    protected $hash;

    public function __construct
    (
        JobsService $jobsService,
        CompanyService $companyService,
        JobfairService $jobfairService,
        PersonService $personService,
        RegisterService $registerService,
        MembersSetmealService $membersSetmealService,
        EmailService $emailService,
        TaskService $taskService,
        SetmealService $setmealService,
        SetmealIncrementsService $setmealIncrementsService,
        MemberPointService $memberPointService,
        PaymentService $paymentService,
        PayService $payService,
        OrderService $orderService,
        ServiceService $serviceService
    )
    {
        $this->jobsService              = $jobsService;
        $this->companyService           = $companyService;
        $this->jobfairService           = $jobfairService;
        $this->personService            = $personService;
        $this->registerService          = $registerService;
        $this->membersSetmealService    = $membersSetmealService;
        $this->emailService             = $emailService;
        $this->taskService              = $taskService;
        $this->setmealService           = $setmealService;
        $this->setmealIncrementsService = $setmealIncrementsService;
        $this->memberPointService       = $memberPointService;
        $this->paymentService           = $paymentService;
        $this->payService               = $payService;
        $this->orderService             = $orderService;
        $this->serviceService           = $serviceService;
        $this->hash                     = 'e@LJ9V9YmCm3#CJr';
    }

    //企业会员登录
    public function companyLogin(Request $request)
    {
        $token = $request->input('token');
        $auth_success = $this->check_auth($token);
        if (!$auth_success) {
            $data = ['status'=>'0','msg'=>'验证失败'];
            return response()->json($data);
        }
        $company_id = $request->input('uid', 0);
        if (!$company_id) {
            return false;
        }
        $company = $this->companyService->getCompany($company_id);
        if (!$company) {
            $data = ['status'=>'0','msg'=>'企业不存在'];
            return response()->json($data);
        }
        $key=uniqid();
        Cache::put($key, $company, 1);
        $url=route('auth.thirdlogin.background', ['ticket' => $key])."?redirect_url=".urlencode(route('com.index'));
        return redirect($url);
    }
    public function check_auth($token){
        $auth_success = false;
        if ($token) {
            if ($this->decrypt($token, $this->hash) == $this->hash) {
                $auth_success = true;
            }
        }
        return $auth_success;
    }

    public function decrypt($txt, $key = '_qscms') {
        // $txt 的结果为加密后的字串经过 base64 解码,然后与私有密匙一起,
        // 经过 passport_key() 函数处理后的返回值
        $txt = $this->passport_key(base64_decode($txt), $key);
        // 变量初始化
        $tmp = '';
        // for 循环,$i 为从 0 开始,到小于 $txt 字串长度的整数
        for ($i = 0; $i < strlen($txt); $i++) {
            // $tmp 字串在末尾增加一位,其内容为 $txt 的第 $i 位,
            // 与 $txt 的第 $i + 1 位取异或。然后 $i = $i + 1
            $tmp .= $txt[$i] ^ $txt[++$i];
        }
        // 返回 $tmp 的值作为结果
        return $tmp;
    }

    /**
     * Passport 密匙处理函数
     *
     * @param        string          待加密或待解密的字串
     * @param        string          私有密匙(用于解密和加密)
     *
     * @return       string          处理后的密匙
     */
    function passport_key($txt, $encrypt_key) {
        // 将 $encrypt_key 赋为 $encrypt_key 经 md5() 后的值
        $encrypt_key = md5($encrypt_key);
        // 变量初始化
        $ctr = 0;
        $tmp = '';
        // for 循环,$i 为从 0 开始,到小于 $txt 字串长度的整数
        for($i = 0; $i < strlen($txt); $i++) {
            // 如果 $ctr = $encrypt_key 的长度,则 $ctr 清零
            $ctr = $ctr == strlen($encrypt_key) ? 0 : $ctr;
            // $tmp 字串在末尾增加一位,其内容为 $txt 的第 $i 位,
            // 与 $encrypt_key 的第 $ctr + 1 位取异或。然后 $ctr = $ctr + 1
            $tmp .= $txt[$i] ^ $encrypt_key[$ctr++];
        }
        // 返回 $tmp 的值作为结果
        return $tmp;
    }

    public function getApplys()
    {
        $data = ['status'=>'1','msg'=>['Aio','Analyze','Crm','Daping','Jobfair']];
        return response()->json($data);
    }

    //获取企业职位信息
    public function getjobs(Request $request)
    {
        $uid = $request->input('com_id');
        $audit = $request->input('audit', 0);
        $jobtype = $request->input('jobtype', 0);
        $limit = $request->input('limit', '');
        $offset = $request->input('offset');

        $order_by = 'field(audit,2) desc, id desc';
        $map = [];
        if($audit){
            $map[] = ['audit','=',$audit];
        }
        /*$map['valid'] = 1;
        $map['display'] = 1;*/
        $where_in = [];
        if($uid){
            $where_in = ['company_id'=>array($uid)];
        }
        $rst = $this->jobsService->getJobs($map, $where_in, $order_by, '', $offset, $limit);
        if ($rst) {
            $list = [];
            if ($rst->isNotEmpty()) {
                $list = $this->jobsService->dealjobFilelds($rst);
            }
            return response()->json(['status'=>1,'msg'=>['list'=>$list]]);
        } else {
            return response()->json(['status'=>0,'msg'=>'查询失败']);
        }
    }

    //获取企业预约刷新的职位
    public function getJobRefresh(Request $request)
    {
        $uid = $request->input('com_uid', 0);
        $type = $request->input('type', 1);
        $return_data = [];
        if($uid && $type){
            $where = array('uid'=>$uid,'type'=>$type);
            $res = $this->jobsService->getAutoRefreshJobs($where, 'pid');
            if ($res->isNotEmpty()) {
                $return_data = $res->toArray();
            }
        }
        return response()->json(['status'=>1,'msg'=>$return_data]);
    }

    //获取招聘会参会企业
    public function jobfairExhibitors(Request $request)
    {
        $com_ids = $request->input('com_id');
        $rst = $this->jobfairService->getJobfairExhibitors($com_ids, $request->all());
        return response()->json(['status'=>1,'msg'=>$rst]);
    }

    //审核招聘会展位预定
    public function auditJobfairExhibitor(Request $request)
    {
        $rst = $request->all();
        $rst = $this->jobfairService->auditExhibitors($request->all());
        return response()->json($rst);
    }

    //获取招聘会职位信息
    public function getJobfairJobs(Request $request)
    {
        $rst = $this->jobfairService->getJobs($request->all());
        return response()->json(['status'=>1,'msg'=>['list'=>$rst]]);
    }
    //获取招聘会详细信息
    public function getJobfairInfo(Request $request)
    {
        $id = $request->input('id', 0);
        if(!$id){
            return response()->json(['status'=>0,'msg'=>'招聘会编号不正确!']);
        }
        $info = $this->jobfairService->getJobfairInfo([['id','=',$id]]);
        if (!$info) {
            return response()->json(['status'=>0,'msg'=>'招聘会编号不正确!']);
        }
        return response()->json(['status'=>1,'msg'=>$info]);
    }

    //企业认证
    public function companyAudit(Request $request)
    {
        $ids = $request->id;
        if (!$ids) {
            return response()->json(['status'=>0,'msg'=>'请选择要审核的企业']);
        }
        $rst = $this->companyService->auditCompany($request->all());
        return response()->json($rst);
    }

    //获取职位详细信息
    public function getJobInfo(Request $request)
    {
        $id = $request->input('id', 0);
        if (!$id) {
            return response()->json(['status'=>0,'msg'=>'职位id不正确!']);
        }
        $jtype = $request->input('jtype', '');
        if ($jtype == 'network') {  //网络职位信息
            $info = $this->jobsService->getJobInfo($id);
            return response()->json($info);
        } elseif ($jtype == 'jobFair') {    //招聘会职位信息
            $info = $this->jobfairService->getJobInfo($id);
            return response()->json($info);
        } else {
            return response()->json(['status'=>0,'msg'=>'参数错误']);
        }
    }

    //审核网络职位
    public function auditJobs(Request $request)
    {
        //审核职位、刷新职位
        $rst = $this->jobsService->auditJobs($request->all());
        return response()->json($rst);
    }

    //审核招聘会职位
    public function auditFairJobs(Request $request)
    {
        $rst =$this->jobfairService->auditJobs($request->all());
        return response()->json($rst);
    }

    //获取网络职位数量
    public function jobNums(Request $request){
        $uid = $request->input('com_id', 0);
        $audit = $request->input('audit', 0);
        $jobtype = $request->input('jobtype', 0);
        $map = [];
        if($audit){
            $map[] = ['audit','=',$audit];
        }
        $whereIn = [];
        if ($uid) {
            $whereIn['company_id'] = explode(',', $uid);
        }
        $num = $this->jobsService->getJobNums($map, $whereIn);
        if ($num !== false) {
            return response()->json(['status'=>1,'msg'=>['total'=>$num]]);
        } else {
            return response()->json(['status'=>0,'msg'=>'查询失败']);
        }
    }
    //获取在招职位数量
    public function validJobNums(Request $request)
    {
        $uid = $request->input('com_id', 0);
        $map = [];
        if (config('aix.companyset.comset.show_set.jobs_display')==1) {
            $map[] = array('audit','=',1);
        } else {
            $map[] = array('audit','<>',3);
        }
        $whereIn = [];
        if ($uid) {
            $whereIn['company_id'] = explode(',', $uid);
        }
        $num = $this->jobsService->getJobNums($map, $whereIn);
        if ($num !== false) {
            return response()->json(['status'=>1,'msg'=>['total'=>$num]]);
        } else {
            return response()->json(['status'=>0,'msg'=>'查询失败']);
        }
    }

    //获取招聘会职位数量
    public function fairjobsNums(Request $request)
    {
        $uid = $request->input('com_id', 0);
        $audit = $request->input('audit', 0);

        $map = [];
        if($audit){
            $map[] = ['audit','=',$audit];
        }
        $whereIn = [];
        if ($uid) {
            $whereIn['company_id'] = $uid;
        }
        $num = $this->jobfairService->getJobNums($map, $whereIn);
        if ($num !== false) {
            return response()->json(['status'=>1,'msg'=>['total'=>$num]]);
        } else {
            return response()->json(['status'=>0,'msg'=>'查询失败']);
        }
    }

    //获取招聘会预定数量
    public function jobfairExhibitorsNum(Request $request)
    {
        $rst = $this->jobfairService->getJobfairExhibitorNums($request->all());
        return response()->json($rst);
    }

    //获取简历信息
    public function getResume(Request $request)
    {
        $resume_id = $request->input('resume_id', 0);
        if (!$resume_id) {
            return response()->json(['status'=>0,'msg'=>'请选择简历!']);
        }
        $resume_info = $this->personService->getResume($resume_id);

        return response()->json($resume_info);
    }

    //审核简历
    public function auditResume(Request $request)
    {
        $id = $request->input('id', 0);
        if (!$id) {
            return response()->json(['staus'=>0, 'msg'=>'请选择简历!']);
        }
        $id = explode(",", $id);
        $rst = $this->personService->auditResume($id, $request->all());
        return response()->json($rst);
    }

    //获取付款方式
    public function getPayments(){

    }

    //添加企业会员
    public function addCompany(Request $request)
    {
        $company=$this->registerService->registerCompany($request->all());
        $this->membersSetmealService->addMemberSetmeal($company, config('aix.companyset.setmeal_com.setmeal_com_set.reg_service'));
        $company->uid = $company->id;
        $this->taskService->doUserTask($company, 17);
        $this->emailService->setAuthTag('company')->setCallback('App\Services\Company\CompanyService', 'sendAuthEmailHook', [$request->email, $company])->sendAuthMail($request->email, EmailService::TEMPLATE_VALIDATION);
        if ($company) {
            return response()->json(['status'=>1,'msg'=>$company]);
        } else {
            return response()->json(['status'=>0,'msg'=>'操作失败']);
        }
    }

    //处理订单
    public function setOrder(Request $request)
    {
        //参数
        $order_id = $request->input('id', 0);
        $notes = $request->input('notes', '');
        if (!$order_id) {
            return response()->json(['status'=>0,'msg'=>'请选择订单!']);
        }
        //获取订单信息
        $order = Order::where('id', $order_id)->first();
        if ($order->is_pay != '1') {
            return response()->json(['status'=>0,'msg'=>'只有未付款订单可以确认收款!']);
        }
        $up_data['is_pay'] = 2;
        $up_data['out_trade_no'] = $order->oid;
        $up_data['notes'] = $notes;
        $up_data['admin_id'] = 0;
        $up_data['operate_time'] = date('Y-m-d H:i:s', time());
        if (!$this->payService->offlineHook($up_data)) {
            return response()->json(['status'=>0,'msg'=>'订单操作失败!']);
        }
        return response()->json(['status'=>1,'msg'=>'订单操作成功!']);
    }

    //修改简历联系方式(手机和邮箱)
    //获取订单信息
    public function getSetmealInfo($order_type,$setmeal_id=0)
    {
        switch($order_type){
            case 1:
                $setmeal = $this->setmealService->getSetmealOne($setmeal_id);
                if ($setmeal) {
                    return $setmeal->setmeal_name;
                } else {
                    return '会员套餐';
                }
                break;
            case 2:
                return '充值积分';
                break;
            case 6:
            case 7:
            case 8:
            case 9:
            case 12:
            case 15:
            case 16:
                $rst = $this->setmealIncrementsService->getIncrement($setmeal_id);
                if ($rst) {
                    return $rst->name;
                } else {
                    return '';
                }
                break;
            case 11:
                return '诚聘通';
                break;
            case 10:
                return '企业模板';
                break;
            default:
                return "CRM自定义类型订单";
                break;
        }
    }

    public function getCat($order_type)
    {
        $cat = 'jobs';
        switch($order_type){
            case 5:
                $cat = 'tpl';
                break;
            case 6:
                $cat = 'download_resume';
                break;
            case 7:
                $cat = 'sms';
                break;
            case 8:
                $cat = 'stick';
                break;
            case 9:
                $cat = 'emergency';
                break;
            case 12:
                $cat = 'auto_refresh_jobs';
                break;
            case 15:
                $cat = "jobs";
                break;
            case 16:
                $cat = "jobfair_num";
                break;
            default:
                $cat = "";
                break;
        }
        return $cat;

    }
    //添加企业订单
    public function addCompanyOrder(Request $request)
    {
        $member_uid = $request->input('uid', 0);
        if(!$member_uid){
            return response()->json(['status'=>0,'msg'=>'客户uid错误!']);
        }

        $order_type = $request->input('order_type', 0);
        if($order_type==1 || $order_type==6 || $order_type==7 || $order_type==8 || $order_type==9 || $order_type==12 || $order_type==15|| $order_type==16){
            $setmeal_id = $request->input('setmeal_id', 0);
            if($setmeal_id==0){
                return response()->json(['status'=>0,'msg'=>'请选择套餐!']);
            }
            $points = 0;
        }elseif($order_type==2){
            $setmeal_id = 0;
            $points = $request->input('points', 0);
            if($points==0){
                return response()->json(['status'=>0,'msg'=>'请填写充值积分数!']);
            }
            //判断是否开启积分充值功能
            if (!config('aix.companyset.points.points_set.enable_com_buy_points')) {
                return response()->json(['status'=>0,'msg'=>'企业充值未开启,请联系网站管理员!']);
            }
            //判断充值数量是否大于最小值
            if ($points < config('aix.companyset.points.points_set.com_buy_points_min')) {
                return response()->json(['status'=>0,'msg'=>'企业积分充值不能小于'.config('aix.companyset.points.points_set.com_buy_points_min').'!']);
            }
        } elseif ($order_type==10) {
            $setmeal_id = $request->input('setmeal_id', 0);
            if($setmeal_id==0){
                return response()->json(['status'=>0,'msg'=>'请选择套餐!']);
            }
            $points = 0;
            //判断当前企业模板是否存在
            $tpl_info = $this->companyService->getTpl($setmeal_id);
            if (!$tpl_info) {
                return response()->json(['status'=>0,'msg'=>'所选企业模板不存在!']);
            }
            //判断所选模板是否已购买
            $company_tpl = $this->companyService->getCompanyTpl(['uid'=>$member_uid,'tplid'=>$setmeal_id]);
            if ($company_tpl) {
                return response()->json(['status'=>0,'msg'=>'所选企业模板已购买!']);
            }
        } else{
            $setmeal_id = 0;
            $points = 0;
        }
        //职位置顶/职位紧急时判断是否选择了职位
        if($order_type == 8 || $order_type == 9 || $order_type == 12){
            $job_id = $request->input('job_id', 0);
            if(!$job_id){
                return response()->json(['status'=>0,'msg'=>'请选择职位!']);
            }
            //判断职位是否已预约刷新
            if($order_type == 12){
                $promotion_field = $this->jobsService->getAutoRefresh(['pid'=>$job_id,'type'=>1]);
                if($promotion_field){
                    return response()->json(['status'=>0,'msg'=>'该职位已预约刷新!']);
                }
            }
        }

        $payment = $request->input('payment', '');
        $payment_cn = $request->input('payment_cn', '');
        if($payment=='' || $payment_cn==''){
            return response()->json(['status'=>0,'msg'=>'请选择支付方式!']);
        }

        //获取服务名称
        $setmeal_name = $this->getSetmealInfo($order_type,$setmeal_id);
        $amount = $request->input('amount', '');
        if($amount==''){
            return response()->json(['status'=>0,'msg'=>'请填写支付金额!']);
        }
        $ordtotal_fee = $request->input('ordtotal_fee', '');
        if($ordtotal_fee==''){
            return response()->json(['status'=>0,'msg'=>'请填写实付金额!']);
        }
        $uid = $request->input('uid', 0);
        if($uid==0){
            return response()->json(['status'=>0,'msg'=>'请选择会员!']);
        }
        //订单类型是crm自定义
        if(!array_key_exists($order_type, [1,2,3,4,5,6,7,8,9,10,12,13,14,15]) && $order_type!=15 && $order_type!=16){
            $setmeal_name = $request->input('setmeal_name', '');
            if(!$setmeal_name){
                return response()->json(['status'=>0,'msg'=>'请选择订单类型!']);
            }
        }
        $description = '购买服务:'.$setmeal_name.';'.$payment_cn.$ordtotal_fee.'元';
        $notes = $request->input('notes', '');
        $cat = $this->getCat($order_type);

        //获取会员信息
        $user = $this->companyService->getCompany($uid);
        $user->uid = $uid;
        $my_setmeal =  $this->membersSetmealService->getUserSetmeal($user, '1');    //获取会员套餐信息
        $my_point = $this->memberPointService->getPoints($user->id, 1);  //获取会员积分信息
        $increment_info = $this->setmealIncrementsService->getIncrement($setmeal_id);       //获取所选简历增值包信息

        //职位置顶、职位紧急、职位刷新、简历包、短信包
        if ($order_type== 7 || $order_type== 8 || $order_type== 9 || $order_type== 12 || $order_type== 15 || $order_type== 16) {
            $my_discount = $this->setmealIncrementsService->getIncrementDiscountByArray($cat, $my_setmeal);     //套餐折扣
            $params = array();
            if ($order_type != 15 && $order_type != 7  && $order_type != 16 ) {
                $params['jobs_id'] = $job_id;
                $params['days'] = $increment_info->value;
                $nowtime = time();
                $params['starttime'] = $nowtime;
                for ($i=0; $i < $params['days']*4; $i++) {
                    $timespace = 3600*6*$i;
                    if($i+1==$params['days']*4){
                        $params['endtime'] = $nowtime+$timespace;
                    }
                }
            }
            $callback = "App\Services\Common\OrderService.incrementSave";
            $rst = $this->callCashPay($user, $my_setmeal, $my_point, $setmeal_name, $order_type, $payment, $ordtotal_fee, 0, 0, $description, $params, 0, $setmeal_id, '专享'.$my_discount.'折优惠', $notes, $callback);
        } elseif ($order_type == 2) {
            //积分充值
            $params['points'] = $points;
            $params['cash'] = $ordtotal_fee;
            $params['rate'] = config('aix.companyset.points.points_set.payment_rate');
            $callback = "App\Services\Common\OrderService.pointsSave";
            $rst = $this->callCashPay($user, $my_setmeal, $my_point, $setmeal_name, $order_type, $payment, $ordtotal_fee, 0, 0, $description, $params, 0, $setmeal_id, '', $notes, $callback);
        } elseif ($order_type == 1) {
            //套餐
            $params = [
                'setmeal_id'=>$setmeal_id,
                'setmeal_name'=>$setmeal_name,
                'company_id'=>$user->id,
                'utype'=>$user->utype,
                'companyname'=>$user->companyname,
                'amount'=>$ordtotal_fee,
                'points'=>$points,
                'payment'=>$payment_cn,
                'username'=>$user->username,
                'subsite_id'=>$user->subsite_id,
            ];
            $callback = "App\Services\Common\OrderService.updateCompany";
            $rst = $this->callCashPay($user, $my_setmeal, $my_point, $setmeal_name, $order_type, $payment, $ordtotal_fee, 0, 0, $description, $params, 0, $setmeal_id, '', $notes, $callback);
        } elseif ($order_type == 10) {  //企业模板
            $callback = "App\Services\Common\OrderService.incrementTplUpdate";
            $rst = $this->callCashPay($user, $my_setmeal, $my_point, $setmeal_name, $order_type, $payment, $ordtotal_fee, 0, 0, $description, '', 0, $setmeal_id, '', $notes, $callback);

        } else {
            //添加其他类型订单 - CRM自定义项目
            $callback = "App\Services\Common\OrderService.crmOrderUpdate";
            $rst = $this->callCashPay($user, $my_setmeal, $my_point, $setmeal_name, $order_type, $payment, $ordtotal_fee, 0, 0, $description, '', 0, $setmeal_id, '', $notes, $callback);
        }
        if ($rst['status'] == 0) {
            return response()->json(['status'=>1,'msg'=>$rst['msg']]);
        }
        return response()->json(['status'=>1,'msg'=>['order'=>$rst['order']]]);
    }
    //现金支付
    public function callCashPay($user, $my_setmeal, $my_point, $setmeal_name, $order_pay_type, $payment_name = '', $amount = '0.0', $is_deductible, $deductible = 0, $description = '', $params = '', $points = 0, $stemeal = 0, $discount = '', $notes = '', $callback = "App\Services\Common\OrderService.orderPaid")
    {
        $paymenttpye = $this->paymentService->returnPayment($payment_name); //获取支付方式
        if (!$paymenttpye) {
            return array( 'status'=>0, 'msg' => '支付方式错误!');
        }
        if (!config("aix.system.pay.{$payment_name}.is_on")) {
            return array( 'status'=>0, 'msg' => "支付方式未开启!请联系客服电话:【".config('aix.system.pay.offline.service_tel')."】");
        }

        $is_deductible=0;
        $type='pay';

        $m_amount = $amount;
        $paysetarr['ordtotal_fee']=$m_amount;
        if ($description=='') {
            $description = '购买服务:'.$setmeal_name;
        }
        $description .= ';'.$paymenttpye->name.$paysetarr['ordtotal_fee'].'元';
        $stime = time();

        //生成订单
        $order = $this->orderService->addOrder($user, $order_pay_type, $amount, $paysetarr['ordtotal_fee'], $deductible, $setmeal_name, $payment_name, $paymenttpye->name, $description, 1, $deductible, $stemeal, 0, serialize($params), $discount, $notes);
        $tradeNo = $this->payService->getTradeNo($order->id);
        if (!$this->serviceService->updateOid($order->id, $tradeNo)) {
            return array( 'status'=>0, 'msg' => '生成订单号失败!');
        }

        $payOrder = new PayOrder();
        $payOrder->trade_no = $tradeNo;
        $payOrder->subject = '购买'.$setmeal_name;
        $payOrder->detail = $description;
        $payOrder->price = round($m_amount, 2);
        $payOrder->callback = $callback;
        $payOrder->return_url = route('service.order.index');
        $result = $this->payService->pay($payment_name, $type, $payOrder);
        return [
            'status'=>1,
            'tradeNo'=>$tradeNo,
            'url'=>route("service.order.detail",['id'=>$order->id]),
            'order'=>$order
        ];
    }

    //修改企业信息
    public function updateCompany(Request $request)
    {
        $params = $request->except('_method', 'token');
        $rst = $this->companyService->companySave($params);
        return response()->json($rst);
    }
}