| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- <?php
- namespace App\Http\Controllers\Api;
- use App\Modes\Order;
- use App\Modes\Proxy;
- use App\Modes\ProxyArea;
- use App\Service\PayDispatchService;
- use Illuminate\Http\Request;
- use App\Http\Controllers\Controller;
- class ProxyAreaController extends Controller
- {
- /**
- * 申请地区代理
- * @author lyh
- * @date 2019/4/10
- * @param Request $request
- * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response
- * @description
- */
- public function add(Request $request)
- {
- $validator = \Validator::make($param = $request->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());
- }
- }
- }
|