| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484 |
- <?php
- namespace App\Http\Controllers\Api;
- use App\Modes\Order;
- use App\Modes\ProxyArea;
- use App\Modes\Proxy;
- use App\Modes\Upgrade;
- use App\Modes\User;
- use App\Modes\Area;
- use App\Modes\Config;
- use App\Modes\UserMsg;
- use App\Service\PayDispatchService;
- use Doctrine\DBAL\Driver\PDOException;
- use Illuminate\Http\Request;
- use App\Http\Controllers\Controller;
- use Mockery\Exception;
- use phpDocumentor\Reflection\DocBlock\Tags\Uses;
- class UpgradeController extends Controller
- {
- /**
- * 升级记录
- * @author lyh
- * @date 2019/3/25
- * @description
- */
- public function index()
- {
- return showJsonSucc('获取待审核升级申请', Upgrade::whereStatus(2)->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());
- }
- }
- }
|