Order.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <?php
  2. namespace App\Models\Service;
  3. use App\Models\Coach\User;
  4. use Illuminate\Database\Eloquent\Factories\HasFactory;
  5. use Illuminate\Database\Eloquent\Model;
  6. use Illuminate\Support\Facades\DB;
  7. class Order extends Model
  8. {
  9. use HasFactory;
  10. protected $table = 'service_order';
  11. protected $guarded = [];
  12. protected $appends = [];
  13. protected $casts = [
  14. 'end_time' => 'datetime'
  15. ];
  16. public function buildPayInfo($user_id, $project_id, $area_id, $lat, $lng,$use_balance = 0, $coach_id = null, $car_type = 0, $coupon_id = 0, $order_id = 0): array
  17. {
  18. $data['project_id'] = $project_id;
  19. // 通过定位获取代理
  20. // 获取代理项目
  21. $project = Project::query()->find($data['project_id']);
  22. // $coupon_model= new Coupon();
  23. $coach_model = new User();
  24. // $car_config_model = new CarPrice();
  25. $coach = $coach_model->info($coach_id);
  26. // 优惠卷
  27. $data['coupon_id'] = $coupon_id ?: 0;
  28. // 优惠金额
  29. $data['coupon_price'] = 0;
  30. // 折扣金额
  31. $data['discount_price'] = 0;
  32. // 物料费
  33. $data['material_price'] = $project['material_price'] ?? 0;
  34. // 车费默认值
  35. $data['car_price'] = 0;
  36. // 选择技师
  37. if ($coach) {
  38. $data['coach_id'] = $coach_id;
  39. if ($lat && $lng) {
  40. // 订单距离
  41. // $data['distance'] = getDriveDistance($coach['lng'], $coach['lat'], $lng, $lat, $coach['uniacid']);
  42. // $data['distance'] += $data['car_config']['invented_distance'] * $data['distance'] / 100;
  43. //车费
  44. $data['car_price'] = 0;
  45. // $data['car_price'] = $this->getCarPrice($data['distance'], $data['car_config'], $car_type);
  46. }
  47. }
  48. // 订单支付价
  49. // 订单总价格
  50. $pay_total_price = $project['price'] + $data['car_price'] + $data['material_price'];
  51. // 订单总优惠
  52. $coupon_total_price = $data['coupon_price'] + $data['discount_price'];
  53. // 支付金额
  54. $pay_price = $pay_total_price - $coupon_total_price;
  55. $pay_price <= 0 && ($pay_price = 0);
  56. $data['pay_price'] = $pay_price;
  57. // 余额支付
  58. $data['balance_price'] = 0;
  59. if ($use_balance) {
  60. // 用户余额
  61. $user['balance'] = 0;
  62. // 余额抵扣金额
  63. $balance_price = $user['balance'] - $pay_price;
  64. if ($balance_price >= 0) {
  65. $data['balance_price'] = $pay_price;
  66. $data['pay_price'] = 0;
  67. } else {
  68. $data['balance_price'] = $user['balance'];
  69. $data['pay_price'] = abs($balance_price);
  70. }
  71. }
  72. // 店铺
  73. // $data['store_id'] = $coach['store_id'];
  74. // 服务时长
  75. $data['time_long'] = $project['time_long'];
  76. return $data;
  77. }
  78. }