ProxyAreaController.php 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. <?php
  2. namespace App\Http\Controllers\Api;
  3. use App\Modes\Order;
  4. use App\Modes\Proxy;
  5. use App\Modes\ProxyArea;
  6. use App\Service\PayDispatchService;
  7. use Illuminate\Http\Request;
  8. use App\Http\Controllers\Controller;
  9. class ProxyAreaController extends Controller
  10. {
  11. /**
  12. * 申请地区代理
  13. * @author lyh
  14. * @date 2019/4/10
  15. * @param Request $request
  16. * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response
  17. * @description
  18. */
  19. public function add(Request $request)
  20. {
  21. $validator = \Validator::make($param = $request->all(), [
  22. 'province' => 'required|exists:proxy,province',
  23. 'city' => 'required',
  24. 'district' => 'required',
  25. 'money' => 'required|numeric',
  26. 'pay_type' => 'required|between:1,5' // 0-未支付 1-现金 2-支付宝 3-微信 4-银行转账 5-桃牛支付
  27. ]);
  28. if ($validator->fails()) {
  29. return showJsonErr($validator->errors()->first());
  30. }
  31. //用户等级达到并且首次申请代理可免费
  32. $proxyarea=ProxyArea::whereUid(\Auth::id())->first();
  33. if (\Auth::user()->level == 0 || empty(\Auth::user()->province)|| empty(\Auth::user()->city) || empty(\Auth::user()->district)) {
  34. return showJsonErr('请完善用户信息');
  35. }
  36. //if (\Auth::user()->is_apply > 0) {
  37. if (empty($proxyarea)) {
  38. $money = 0;
  39. } else {
  40. $money = Proxy::getApplyMoneyByConfig($param['province'], $param['city'], !empty($param['district']) ? $param['district'] : null, \Auth::user()->level);
  41. //$ss = Proxy::getSettingByAreaAndLevel(\Auth::user()->level,\Auth::user()->province,\Auth::user()->city,\Auth::user()->district);
  42. //$money=$ss['apply_money'];
  43. }
  44. if ($money != $param['money']) {
  45. return showJsonErr('抱歉,申请金额有误');
  46. }
  47. // 查看等级是否满足申请的区域 F-县区 G-地级市
  48. if (!in_array(\Auth::user()->level, [6, 7])) {
  49. return showJsonErr('抱歉,您不符合申请地区代理');
  50. }
  51. if (empty($param['district']) && !empty($param['city']) && \Auth::user()->level == 6) {
  52. return showJsonErr('抱歉,您不符合申请市级地区代理');
  53. }
  54. // 判断是否有重复申请
  55. /*if (ProxyArea::whereUid(\Auth::id())->whereStatus(2)->exists()) {
  56. return showJsonErr('抱歉,请勿重新提交');
  57. }*/
  58. // 判断是否该地区重复申请
  59. if (ProxyArea::whereUid(\Auth::id())->whereProvince($param['province'])->whereCity($param['city'])->whereDistrict($param['district'])->whereStatus(3)->exists()) {
  60. return showJsonErr('抱歉,您已经申请过该地区了,请勿重复申请');
  61. }
  62. $orderId = 0;
  63. $status = 2;
  64. $payData=[];
  65. \DB::beginTransaction();
  66. //$param['money']=0.01;
  67. try {
  68. if ($param['money'] > 0) {
  69. $orderNo = Order::makeOrderNo();
  70. $pay = PayDispatchService::dispatch($param['pay_type']);
  71. if($param['pay_type']==2){//支付宝支付$param['money']
  72. $payData = $pay->getAppPayInfo($orderNo,$param['money'] , \Auth::user()->mobile . '申请地区代理');//测试
  73. }elseif($param['pay_type']==3){
  74. $payData = $pay->getPayInfo($orderNo, $param['money'], \Auth::user()->mobile . '申请地区代理');//测试
  75. }elseif($param['pay_type']==21){
  76. $pay = PayDispatchService::dispatch(2);
  77. $payData = $pay->getPayInfo($orderNo,$param['money'] , \Auth::user()->mobile . '申请地区代理'); // 测试,金额一致为0.01
  78. }elseif($param['pay_type']==31){
  79. $pay = PayDispatchService::dispatch(3);
  80. $getPayInfoh5Data = $pay->getPayInfoh5($orderNo, $param['money'], \Auth::user()->mobile . '申请地区代理'); // 测试,金额一致为0.01
  81. $payData['url'] = env('APP_URL').'/re.php?re='.urlencode($getPayInfoh5Data->getTargetUrl());
  82. }
  83. // 生成订单
  84. $orderId = Order::insertData([
  85. 'uid' => \Auth::id(),
  86. 'type' => 4,
  87. 'order_no' => $orderNo,
  88. 'pay_no' => $pay_no = $orderNo,
  89. 'price' => $param['money'],
  90. 'is_pay' => 0,
  91. 'pay_type' => $param['pay_type'],
  92. 'status' => 2,
  93. ]);
  94. $status = 1;
  95. if (empty($orderId)) {
  96. \DB::rollBack();
  97. return showJsonErr('生成订单失败');
  98. }
  99. }
  100. // 添加申请记录
  101. $result = ProxyArea::insert([
  102. 'province' => $param['province'],
  103. 'city' => $param['city'],
  104. 'district' => $param['district'],
  105. 'uid' => \Auth::id(),
  106. 'user_level' => \Auth::user()->level,
  107. 'status' => $status,
  108. 'order_id' => $orderId
  109. ]);
  110. if (!$result) {
  111. \DB::rollBack();
  112. return showJsonErr('申请地区代理失败');
  113. }
  114. \DB::commit();
  115. return showJsonSucc('申请地区代理成功', [
  116. 'payData' => $payData
  117. ]);
  118. } catch (\Exception $exception) {
  119. \DB::rollBack();
  120. return showJsonErr($exception->getMessage());
  121. }
  122. }
  123. }