all(), [ 'province' => 'required|exists:proxy,province', 'city' => 'required', 'district' => 'required', 'money' => 'required|numeric', 'pay_type' => 'required|between:1,5' // 0-未支付 1-现金 2-支付宝 3-微信 4-银行转账 5-桃牛支付 ]); if ($validator->fails()) { return showJsonErr($validator->errors()->first()); } //用户等级达到并且首次申请代理可免费 $proxyarea=ProxyArea::whereUid(\Auth::id())->first(); if (\Auth::user()->level == 0 || empty(\Auth::user()->province)|| empty(\Auth::user()->city) || empty(\Auth::user()->district)) { return showJsonErr('请完善用户信息'); } //if (\Auth::user()->is_apply > 0) { if (empty($proxyarea)) { $money = 0; } else { $money = Proxy::getApplyMoneyByConfig($param['province'], $param['city'], !empty($param['district']) ? $param['district'] : null, \Auth::user()->level); //$ss = Proxy::getSettingByAreaAndLevel(\Auth::user()->level,\Auth::user()->province,\Auth::user()->city,\Auth::user()->district); //$money=$ss['apply_money']; } if ($money != $param['money']) { return showJsonErr('抱歉,申请金额有误'); } // 查看等级是否满足申请的区域 F-县区 G-地级市 if (!in_array(\Auth::user()->level, [6, 7])) { return showJsonErr('抱歉,您不符合申请地区代理'); } if (empty($param['district']) && !empty($param['city']) && \Auth::user()->level == 6) { return showJsonErr('抱歉,您不符合申请市级地区代理'); } // 判断是否有重复申请 /*if (ProxyArea::whereUid(\Auth::id())->whereStatus(2)->exists()) { return showJsonErr('抱歉,请勿重新提交'); }*/ // 判断是否该地区重复申请 if (ProxyArea::whereUid(\Auth::id())->whereProvince($param['province'])->whereCity($param['city'])->whereDistrict($param['district'])->whereStatus(3)->exists()) { return showJsonErr('抱歉,您已经申请过该地区了,请勿重复申请'); } $orderId = 0; $status = 2; $payData=[]; \DB::beginTransaction(); //$param['money']=0.01; try { if ($param['money'] > 0) { $orderNo = Order::makeOrderNo(); $pay = PayDispatchService::dispatch($param['pay_type']); if($param['pay_type']==2){//支付宝支付$param['money'] $payData = $pay->getAppPayInfo($orderNo,$param['money'] , \Auth::user()->mobile . '申请地区代理');//测试 }elseif($param['pay_type']==3){ $payData = $pay->getPayInfo($orderNo, $param['money'], \Auth::user()->mobile . '申请地区代理');//测试 }elseif($param['pay_type']==21){ $pay = PayDispatchService::dispatch(2); $payData = $pay->getPayInfo($orderNo,$param['money'] , \Auth::user()->mobile . '申请地区代理'); // 测试,金额一致为0.01 }elseif($param['pay_type']==31){ $pay = PayDispatchService::dispatch(3); $getPayInfoh5Data = $pay->getPayInfoh5($orderNo, $param['money'], \Auth::user()->mobile . '申请地区代理'); // 测试,金额一致为0.01 $payData['url'] = env('APP_URL').'/re.php?re='.urlencode($getPayInfoh5Data->getTargetUrl()); } // 生成订单 $orderId = Order::insertData([ 'uid' => \Auth::id(), 'type' => 4, 'order_no' => $orderNo, 'pay_no' => $pay_no = $orderNo, 'price' => $param['money'], 'is_pay' => 0, 'pay_type' => $param['pay_type'], 'status' => 2, ]); $status = 1; if (empty($orderId)) { \DB::rollBack(); return showJsonErr('生成订单失败'); } } // 添加申请记录 $result = ProxyArea::insert([ 'province' => $param['province'], 'city' => $param['city'], 'district' => $param['district'], 'uid' => \Auth::id(), 'user_level' => \Auth::user()->level, 'status' => $status, 'order_id' => $orderId ]); if (!$result) { \DB::rollBack(); return showJsonErr('申请地区代理失败'); } \DB::commit(); return showJsonSucc('申请地区代理成功', [ 'payData' => $payData ]); } catch (\Exception $exception) { \DB::rollBack(); return showJsonErr($exception->getMessage()); } } }