25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.
 
 
 
 
 
 

146 satır
5.4 KiB

  1. <?php
  2. /**
  3. *
  4. * ============================================================================
  5. * * 版权所有 蜘蛛出行 * *
  6. * 网站地址: http://www.zhizhuchuxing.com
  7. * ----------------------------------------------------------------------------
  8. * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和
  9. * 使用;不允许对程序代码以任何形式任何目的的再发布。
  10. * ============================================================================
  11. * Author By: 倪宗锋
  12. * PhpStorm Shuttle.php
  13. * Create By 2017/7/3 15:15 $
  14. */
  15. namespace zzcx\service\home;
  16. use common\models\OrderTravel;
  17. use common\util\OrderUtil;
  18. use common\util\Util;
  19. class Shuttle
  20. {
  21. /**
  22. * Des:获取行程信息
  23. * Name: getTravelInfo
  24. * @param $params
  25. * @return array
  26. * @author 倪宗锋
  27. */
  28. public function getTravelInfo($params)
  29. {
  30. $orderTravel = new OrderTravel();
  31. $getInfo = $orderTravel->getInfoByTravelId($params);
  32. if (empty($getInfo['start_longitude']) || empty($getInfo['start_latitude'])) {
  33. return Util::returnArrEr('获取目的地站坐标失败!');
  34. }
  35. return Util::returnArrSu('', ['info' => $getInfo]);
  36. }
  37. /**
  38. * Des:获取价格
  39. * Name: getPrice
  40. * @param $params
  41. * @return array
  42. * @author 倪宗锋
  43. */
  44. public function getPrice($params)
  45. {
  46. /**获取两点间的距离*/
  47. $getDistanceForPoi = $this->getDistanceForPoi($params);
  48. if ($getDistanceForPoi['flag'] == false) {
  49. return $getDistanceForPoi;
  50. }
  51. $distance = $getDistanceForPoi['data']['distance'];
  52. $distance = ceil($distance / 1000);
  53. /**获取money 应付金额*/
  54. $totalMoney = $distance * 2;
  55. if ($totalMoney <= 10) {
  56. $totalMoney = 10;
  57. }
  58. /**获取打的金额*/
  59. $taxiMoney = Util::getTaxiMoney($distance);
  60. return Util::returnArrSu('', ['totalMoney' => $totalMoney, 'taxiMoney' => $taxiMoney, 'distance' => $distance]);
  61. }
  62. /**
  63. * Des:获取金额根据POI
  64. * Name: getPriceForPoi
  65. * @param $params
  66. * @return array
  67. * @author 倪宗锋
  68. */
  69. public function getDistanceForPoi($params)
  70. {
  71. if (!Util::checkPattern('lnReg', $params['start_longitude']) || !Util::checkPattern('laReg', $params['start_latitude'])) {
  72. return Util::returnArrEr('上车点POI有误!');
  73. }
  74. if (!Util::checkPattern('lnReg', $params['end_longitude']) || !Util::checkPattern('laReg', $params['end_latitude'])) {
  75. return Util::returnArrEr('下车点POI有误!');
  76. }
  77. $getBd = Util::bd_encrypt($params['start_longitude'], $params['start_latitude']);//获取百度坐标
  78. $params['start_longitude'] = $getBd['bd_lon'];
  79. $params['start_latitude'] = $getBd['bd_lat'];
  80. $getDistance = Util::getDistance($params);//公里数为每公里1元 低于10公里算10元
  81. return Util::returnArrSu('', ['distance' => $getDistance]);
  82. }
  83. /**
  84. * Des:上门接下单
  85. * Name: makeOrder
  86. * @param $params
  87. * @return array
  88. * @author 倪宗锋
  89. */
  90. public function makeOrder($params)
  91. {
  92. //校验参数合法性
  93. if (Util::checkPattern('intVal', $params['travel_id']) == false) {
  94. return Util::returnArrEr('下单失败![params error]');
  95. }
  96. /**获取行程信息*/
  97. $orderTravel = new OrderTravel();
  98. $getTravelInfo = $orderTravel->getInfoByTravelId($params);//获取行程详情
  99. if (empty($getTravelInfo['travel_id'])) {
  100. return Util::returnArrEr('下单失败![params error]');
  101. }
  102. /**获取价格*/
  103. $params['end_latitude'] = $getTravelInfo['start_latitude'];
  104. $params['end_longitude'] = $getTravelInfo['start_longitude'];
  105. $getPrice = $this->getDistanceForPoi($params);
  106. if ($getPrice['flag'] == false) {
  107. return $getPrice;
  108. }
  109. $totalMoney = ceil($getPrice['data']['distance'] / 1000);
  110. $totalMoney = $totalMoney * 2;
  111. if ($totalMoney <= 10) {
  112. $totalMoney = 10;
  113. }
  114. /**设置下单参数*/
  115. $param_arr = [
  116. 'total_money' => $totalMoney * $params['cnt'],//总金额
  117. 'pro_cate_id' => 0,//产品ID
  118. 'prod_cnt' => $params['cnt'],//产品数量
  119. 'order_name' => '上门接服务',//订单名称
  120. 'sh_uid' => 0,//用户ID
  121. 'fx_uid' => 0,//分销商ID
  122. 'start_date' => $getTravelInfo['start_date'],//开始日期
  123. 'start_time' => '00:00:00',//开始时间
  124. 'end_date' => $getTravelInfo['start_date'],//接收日期
  125. 'end_time' => $getTravelInfo['start_time_s'],//结束时间
  126. 'category_id' => 5,//订单类型
  127. 'system' => 2,//系统
  128. 'contacts_name' => $getTravelInfo['contacts_name'],//联系人
  129. 'contacts_ID' => $getTravelInfo['contacts_ID'],//联系人证件ID
  130. 'contacts_phone' => $getTravelInfo['contacts_phone'],//联系人手机号
  131. 'prod_source' => 1,//产品来源
  132. 'start_area' => $params['start_area'],//起始地点
  133. 'end_area' => $getTravelInfo['start_area_name'] . $getTravelInfo['start_res']//结束地点
  134. ];
  135. $makeOrder = OrderUtil::makeUnProdOrder($param_arr);
  136. return $makeOrder;
  137. }
  138. }