Hyorder.php 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Administrator
  5. * Date: 2021/2/23
  6. * Time: 14:12
  7. */
  8. namespace addons\ddrive\library;
  9. use addons\ddrive\model\Freight;
  10. class Hyorder{
  11. /**
  12. * 根据经纬度算距离,返回结果单位是公里,先纬度,后经度
  13. * @param $lat1
  14. * @param $lng1
  15. * @param $lat2
  16. * @param $lng2
  17. * @return float|int
  18. */
  19. public static function GetDistance($lat1, $lng1, $lat2, $lng2)
  20. {
  21. $EARTH_RADIUS = 6378.137;
  22. $radLat1 = deg2rad($lat1);
  23. $radLat2 = deg2rad($lat2);
  24. $a = $radLat1 - $radLat2;
  25. $b = deg2rad($lng1) - deg2rad($lng2);
  26. $s = 2 * asin(sqrt(pow(sin($a / 2), 2) + cos($radLat1) * cos($radLat2) * pow(sin($b / 2), 2)));
  27. $s = $s * $EARTH_RADIUS;
  28. $s = round(round($s * 10000) / 10000);
  29. return $s;
  30. }
  31. /**
  32. * 根据距离,计算价格
  33. * @param $distance
  34. */
  35. public static function getPrice($distance,$carInfo){
  36. $distance_price = 0;
  37. if($distance <= $carInfo['start_mileage']){ //起始价距离
  38. $distance_price = $carInfo['start_price'];
  39. }
  40. if($carInfo['section1_min_mileage'] <= $distance && $distance <= $carInfo['section1_max_mileage']){ //分段价距离
  41. $section1_price = ($distance-$carInfo['section1_min_mileage'])*$carInfo['section1_price'];
  42. $distance_price = $carInfo['start_price'] + $section1_price;
  43. }
  44. if($distance >= $carInfo['section2_mileage']){ //分段距离
  45. $section1_price = ($carInfo['section1_max_mileage']-$carInfo['start_mileage'])*$carInfo['section2_price'];
  46. $section2_price = ($distance-$carInfo['section1_max_mileage'])*$carInfo['section2_price'];
  47. $distance_price = $carInfo['start_price'] + $section1_price + $section2_price;
  48. }
  49. return round($distance_price,1);
  50. }
  51. public static function getDemand($demand){
  52. $new_demand = explode(',', $demand);
  53. foreach ($new_demand as $k=>$v){
  54. $new_demand[$k] = (new \addons\ddrive\model\Hyorder())->getDemand()[$v];
  55. }
  56. $new_demand = implode(',', $new_demand);
  57. return $new_demand;
  58. }
  59. /**订单号
  60. * createOrderSn
  61. * @des
  62. * @return string
  63. */
  64. public static function createOrderSn()
  65. {
  66. $sn = date('Ymd', time()) . time() . mt_rand(1111, 9999);
  67. return $sn;
  68. }
  69. }