orderByDesc('status')->whereUid(\Auth::id())->get()); } /** * 获取升级费用 * @author lyh * @date 2019/3/25 * @param Request $request * @description */ public function cost(Request $request) { $level = $request->post('level', 0); if ($level < \Auth::user()->level) { return showJsonErr('请申请大于当前的等级'); } if (\Auth::user()->level == 0) { return showJsonErr('请完善用户信息'); } // 获取代理费 $money = Upgrade::getCost($level, \Auth::user()); return showJsonSucc(1001, $money); } /** * 交费升级 * @author lyh * @date 2019/3/25 * @description */ public function add(Request $request) { $validator = \Validator::make($param = $request->post(), [ 'level' => 'required|integer|between:2,7', //申请等级 'money' => 'required|numeric', // 费用 'pay_type' => 'required|between:1,5', // 'province' => 'required_if:level,6,7|numeric|exists:area,id', // 代理省份 // 'city' => 'required_if:level,6,7|numeric|exists:area,id', // 代理地级市 // 'district' => 'required_if:level,6,7|numeric|exists:area,id', //代理区 ]); if ($validator->fails()) { return showJson(102, $validator->errors()->first()); } if ($param['level'] < \Auth::user()->level) { return showJsonErr('请申请大于当前的等级'); } if (\Auth::user()->level == 0 || empty(\Auth::user()->province)|| empty(\Auth::user()->city) || empty(\Auth::user()->district)) { return showJsonErr('请完善用户信息'); } if (Upgrade::whereUid(\Auth::id())->whereStatus(2)->exists()) { return showJsonErr('您的升级申请正在审核中,请耐心等候'); } // 获取代理费 //$money = Upgrade::getCost($param['level'], \Auth::user()); $user=User::whereId(\Auth::id())->first()->toArray(); $uplevelarr=[]; for($i=$user['level']+1;$i<8;$i++) $uplevelarr[]=$i; if(!empty($uplevelarr)){ $money=$this->getUpgradeMoney($user,$param['level'],$uplevelarr); }else{ return showJsonErr('您的等级已经是最高级了!'); } if ($money != $param['money'] && $param['money']>0) { return showJsonErr('代理费用有误,请重新申请', [ 'money' => $money ]); } \DB::beginTransaction(); try { $orderId = 0; $payData = []; $status = 1; // $param['money']=0.01; if ($money > 0) { // 生成支付订单、并返回参数 $orderId = Order::insertData([ 'uid' => \Auth::id(), 'type' => 1, 'order_no' => $param['order_no'] = $orderNo = Order::makeOrderNo(), 'pay_no' => $pay_no = $orderNo, 'price' => $param['money'], 'is_pay' => 0, 'pay_type' => $param['pay_type'], 'status' => 2, ]); if (empty($orderId)) { \DB::rollBack(); return showJsonErr('生成订单失败'); } $pay = PayDispatchService::dispatch($param['pay_type']); // 获取支付信息 // $payData = $pay->getPayInfo($orderNo, $param['money'], \Auth::user()->mobile . '升级支付'); if($param['pay_type']==2){//支付宝支付 $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 . '升级支付');//测试 }elseif ($param['pay_type'] == 31) {//微信支付h5 $pay = PayDispatchService::dispatch(3); $getPayInfoh5Data = $pay->getPayInfoh5($orderNo, $param['money'], \Auth::user()->mobile . '升级支付');//测试 $payData['url'] = env('APP_URL').'/re.php?re='.urlencode($getPayInfoh5Data->getTargetUrl()); } } else { $status = 2; } $upGradeData = [ 'uid' => \Auth::id(), 'order_id' => $orderId, 'user_level' => \Auth::user()->level, 'apply_level' => $param['level'], 'money' => $param['money'], 'remark' => sprintf("用户[ID:%s]申请从等级[%s]升级到等级[%s],通过[%s]支付[%s]", \Auth::id(), \Auth::user()->level, $param['level'], Order::getPayType($param['pay_type']), $param['money']), 'upgrade_way' => 1, 'status' => $status ]; $upGradeData['province'] = \Auth::user()->province; $upGradeData['city'] = \Auth::user()->city; $upGradeData['district'] = \Auth::user()->district; // if (!empty(($param['province']))) { // $upGradeData['province'] = \Auth::user()->province; // } // if (!empty(($param['city']))) { // $upGradeData['city'] = $param['city']; // } // if (!empty(($param['district']))) { // $upGradeData['district'] = $param['district']; // } $upgradeRes = Upgrade::insertGetId($upGradeData); if (empty($upgradeRes)) { \DB::rollBack(); return showJsonErr('生成升级记录失败'); } \DB::commit(); return showJsonSucc('获取成功', [ 'payData' => $payData ]); } catch (Exception $exception) { \DB::rollBack(); return showJsonErr($exception->getMessage()); } } /* * 支付成功的回调 * author wsl * date 20190627 * ordersn 订单号 * */ public function upCheck(Request $request){ $param = $request->post(); $arr['user_area']=''; $userarea=Area::orWhere('id','=',\Auth::user()->city) ->orWhere('id','=',\Auth::user()->district) ->orderBy('pid','asc') ->get()->toArray(); foreach($userarea as $val)$arr['user_area'].=$val['name'].' '; if(empty($param['ordersn']) && !empty($param['type']) && $param['type']==4 ){ //免费申请区域代理的订单 $arr['price']=0; $arr['apply_area']=''; //申请区域代理 $proxyarea=ProxyArea::whereUid(\Auth::id())->whereOrderId(0)->whereProvince($param['province'])->whereCity($param['city']); if(!empty($param['district'])){ $proxyarea->whereDistrict($param['district']); } $proxyareaar=$proxyarea->orderBy('created_at','desc')->first()->toArray(); $applyarea=Area::orWhere('id','=',$proxyareaar['city']) ->orWhere('id','=',$proxyareaar['district']) ->orderBy('pid','asc') ->get()->toArray(); foreach($applyarea as $val)$arr['apply_area'].=$val['name'].' '; return showJsonSucc('获取数据成功',$arr); } if (empty($param['ordersn'])) { return showJsonErr('订单号不能为空'); } $order=Order::from('order as o')->join('user as u','o.uid','u.id') ->select('o.id as orderid','o.order_no','o.uid','o.type','o.price','u.province','u.city','u.district') ->where('o.order_no','=',$param['ordersn']) ->first()->toArray(); $arr['price']=$order['price']; if($order['type']==1){ //申请升级 $upgrade=Upgrade::whereOrderId($order['orderid'])->first()->toArray(); $arr['apply_level']=$upgrade['apply_level']; }elseif($order['type']==4){ $arr['apply_area']=''; //申请区域代理 $proxyarea=ProxyArea::whereOrderId($order['orderid'])->first()->toArray(); $applyarea=Area::orWhere('id','=',$proxyarea['city']) ->orWhere('id','=',$proxyarea['district']) ->orderBy('pid','asc') ->get()->toArray(); foreach($applyarea as $val)$arr['apply_area'].=$val['name'].' '; } return showJsonSucc('获取数据成功',$arr); } /* * 获取升级记录 * wsl 20190910 * */ public function getUpgradeLogs(Request $request){ $list=Upgrade::whereUid(\Auth::id())->whereIn('status',[2,3,5])->get(); return showJsonSucc('数据获取成功',$list); } /* * 获取当前用户等级+1的配置信息 * wsl 20190627 * * */ public function getNextLevelInfo(){ $user=User::whereId(\Auth::id())->first()->toArray(); $setting=Proxy::getSettingByAreaAndLevel($user['level']+1,$user['province'],$user['city'],$user['district']); $data['upgrade_money']=$setting['upgrade_money']; $data['upgrade_level']=$setting['user_level']; return showJsonSucc('获取数据成功',$data); } /* * 等级变换时所交的金钱 * wsl 20190627 * */ public function changeLevel(Request $request){ $data=[]; $param=$request->all(); if(empty($param['upgrade_level'])){ return showJsonErr('upgrade_level必传,1-8的数字!'); } $upgrade_level=$param['upgrade_level']; $user=User::whereId(\Auth::id())->first()->toArray(); if($upgrade_level<=$user['level']){ return showJsonErr('您已经是当前等级了'); } if($user['level']==7){ return showJsonErr('您已经是最高等级了哦'); } //获取自己等级之上的配置信息 $payedMoney = Upgrade::whereUid(\Auth::id())->whereStatus(3)->sum('money'); $uplevelarr=[]; for($i=$user['level']+1;$i<8;$i++) $uplevelarr[]=$i; if(!empty($uplevelarr)){ $data['upgrade_money'] = $this->getUpgradeMoney($user,$upgrade_level,$uplevelarr); $data['upgrade_money'] = round( max(bcsub($data['upgrade_money'] , $payedMoney,2),0),2) ; } $levelMapper = ['A','A','B','C','D','E','F','G','G']; $text = sprintf( '您已经是%s级代理,已经缴纳过%s元,现在只需支付%s元即可成为%s级代理', $levelMapper[$user['level']], $payedMoney, $data['upgrade_money'], $levelMapper[$param['upgrade_level']] ); $data['upgrade_level']=$param['upgrade_level']; $data['protocol'] = $text; return showJsonSucc('获取数据成功',$data); } /* * 获取升级费用 * add by wsl * 20190630 * $user array * $upgrede_level 要升级的等级 * $uplevelarr 当前用户所有上一级的数组 * */ function getUpgradeMoney($user,$upgrade_level,$uplevelarr){ $upgrade_money=0; $levelsSetting=[]; $newlevetset=[]; //所属地区价格 $areasetting=Proxy::select('user_level','upgrade_money') ->where('uid','=',0) ->where('province','=',$user['province']) ->where('city','=',$user['city']) ->where('status','=',1) ->where('district','=',$user['district'])->whereIn('user_level',$uplevelarr) ->get()->toArray(); //全局升级价格 $globalsetting=Proxy::select('user_level','upgrade_money') ->where('uid','=',0) ->where('province','=',0) ->where('city','=',0) ->where('district','=',0)->whereIn('user_level',$uplevelarr) ->get()->toArray(); if(!empty($areasetting)){ foreach($areasetting as $k=>$item){ foreach($item as $kk=>$vv){ if(empty($vv)||$vv==0||$vv==null||$vv=='0.0'||$vv=='0.00'||$vv=='0.000'){ $levelsSetting[$k][$kk]=$globalsetting[$k][$kk]; }else{ $levelsSetting[$k][$kk]=$vv; } } } }else{ $levelsSetting=$globalsetting; } foreach($levelsSetting as $key=>$value){ $newlevetset[$value['user_level']]=$value['upgrade_money']; } for($j=$user['level']+1;$j<=$upgrade_level;$j++)$upgrade_money+=$newlevetset[$j]; return round($upgrade_money,2); } function getList(){ $user = User::whereId(\Auth::id())->first()->toArray(); $level = $user['level']; if($level<7){ $op = '>'; }else{ $op = '='; $level = 7; } //所属地区价格 $list = $areasetting = Proxy::where('uid','=',0) ->where('province','=',$user['province']) ->where('city','=',$user['city']) ->where('status','=',1) ->where('district','=',$user['district']) ->where('user_level',$op,$level) ->get()->toArray(); if(empty($areasetting)){ //全局升级价格 $globalsetting = Proxy::where('uid','=',0) ->where('province','=',0) ->where('city','=',0) ->where('district','=',0) ->where('user_level',$op,$level) ->get()->toArray(); $list = $globalsetting; } return showJson(101,'',['req_list'=>$list]); } /* * 获取协议 * wsl * 20190628 * */ function getrule($level) { $setting=Proxy::getSettingByAreaAndLevel($level,\Auth::user()->province,\Auth::user()->city,\Auth::user()->district); $result =empty($setting)?'':$setting['protocol']; return $result; } /** * 业务达到要求升级 * @author lyh * @date 2019/3/25 * @param Request $request * @description */ public function addByCondition(Request $request) { $validator = \Validator::make($param = $request->all(), [ 'level' => 'required|integer|between:2,7', //申请等级 // 'province' => 'required_if:level,6,7|numeric|exists:area,id', // 代理省份 // 'city' => 'required_if:level,6,7|numeric|exists:area,id', // 代理地级市 // 'district' => 'required_if:level,6,7|numeric|exists:area,id', //代理区 ]); if ($validator->fails()) { return showJson(102, $validator->errors()->first()); } if ($param['level'] < \Auth::user()->level) { return showJsonErr('请申请大于当前的等级'); } if (\Auth::user()->level == 0) { return showJsonErr('请完善用户信息'); } // 判断业务是否达标 /*if (($upgrade_way = Upgrade::requierdLevel($param['level'], \Auth::id())) == false) { return showJsonErr('业务未达到要求,请选择其他等级'); }*/ $upgrade_way=1; if (Upgrade::whereUid(\Auth::id())->whereStatus(2)->exists()) { return showJsonErr('您的升级申请正在审核中,请耐心等候'); } \DB::beginTransaction(); try { $upGradeData = [ 'uid' => \Auth::id(), 'user_level' => \Auth::user()->level, 'apply_level' => $param['level'], 'money' => 0, 'remark' => sprintf("用户[ID:%s]业务达标,申请从等级[%s]升级到等级[%s]", \Auth::id(), \Auth::user()->level, $param['level']), 'status' => 2, 'upgrade_way' => $upgrade_way ]; $upGradeData['province'] = \Auth::user()->province; $upGradeData['city'] = \Auth::user()->city; $upGradeData['district'] = \Auth::user()->district; // if (!empty(($param['province']))) { // $upGradeData['province'] = $param['province']; // } // if (!empty(($param['city']))) { // $upGradeData['city'] = $param['city']; // } // if (!empty(($param['district']))) { // $upGradeData['district'] = $param['district']; // } $upgradeRes = Upgrade::insertGetId($upGradeData); if (empty($upgradeRes)) { \DB::rollBack(); return showJsonErr('生成升级记录失败'); } \DB::commit(); return showJsonSucc('申请升级成功', isset($payData) ? $payData : []); } catch (Exception $exception) { \DB::rollBack(); return showJsonErr($exception->getMessage()); } } }