OrderService.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. <?php
  2. /**
  3. *
  4. * @file:OrderService.php
  5. * @Date: 2023/5/23
  6. * @Time: 13:40
  7. */
  8. namespace Modules\Channel\Services\Order;
  9. use Illuminate\Support\Facades\DB;
  10. use Modules\Channel\Models\Order;
  11. use Modules\Manage\Models\Miniprogram;
  12. use Modules\User\Models\User;
  13. class OrderService
  14. {
  15. /**
  16. * 订单列表查询
  17. * name: getOrderList
  18. * @param array $param
  19. * date 2023/05/23 13:45
  20. */
  21. public static function getOrderList(array $param, $isAll = false)
  22. {
  23. $sql = self::getOrderQuerySql($param);
  24. if ($isAll) {
  25. $list = $sql->get();
  26. } else {
  27. $list = $sql->simplePaginate(getProp($param, 'limit', 15));
  28. }
  29. if (!$list->isEmpty()) {
  30. foreach ($list as $val) {
  31. $val->username = $val->user_id > 0 ? User::where('id', $val->user_id)->value('username') : "";
  32. $val->company_name = "-";
  33. $val->play_name = '-';
  34. $company = Miniprogram::where('id', $val->miniprogram_id)->first();
  35. if ($company) {
  36. $val->company_name = $company->company();
  37. $val->play_name = $company->play_name;
  38. }
  39. $val->promotion_title = $val->promotion_id > 0 ? DB::table('promotions')->where('id', $val->promotion_id)->value('name') : "";
  40. $val->total_count = Order::where('uid',$val->uid)->where('id',"<=",$val->id)->count();
  41. if ($val->user_id > 0){
  42. $val->caompany_count = Order::where('uid',$val->uid)->where('puser_id','>',0)->where('puser_id',$val->puser_id)->where('id',"<=",$val->id)->count();
  43. $val->promotion_count = Order::where('uid',$val->uid)->where('puser_id','>',0)->where('puser_id',$val->puser_id)->where('user_id',">",0)->where('user_id',$val->user_id)->where('id',"<=",$val->id)->count();
  44. }else{
  45. $val->caompany_count = Order::where('uid',$val->uid)->where('puser_id','>',0)->count();
  46. $val->promotion_count = Order::where('uid',$val->uid)->where('user_id','>',0)->count();
  47. }
  48. $val->tip_text = self::getOrderType()[$val->order_type] ?? "-";
  49. $val->status_txt = self::getOrderPayType()[$val->status] ?? "-";
  50. $val->pay_name = '微信支付';
  51. }
  52. }
  53. return $list;
  54. }
  55. public static function getOrderType(){
  56. return [
  57. "COIN" => "普通充值",
  58. 'MONTH'=>'包月',
  59. 'QUARTER'=>'包季',
  60. 'YEAR'=>'包年',
  61. "FIRST_COIN" => "首冲"
  62. ];
  63. }
  64. public static function getOrderPayType(){
  65. return [
  66. "PAID" => "已支付",
  67. 'REFUND'=>'已退款',
  68. 'UNPAID'=>'未支付',
  69. ];
  70. }
  71. private static function getOrderQuerySql(array $param)
  72. {
  73. $sql = Order::query();
  74. // 优化师查询
  75. if (!empty(getProp($param, 'user_id'))) {
  76. $sql->where('user_id', $param['user_id']);
  77. }
  78. // 公司查询
  79. if (!empty(getProp($param, 'puser_id'))) {
  80. $sql->where('puser_id', $param['puser_id']);
  81. }
  82. // 小程序
  83. if (!empty(getProp($param, 'miniprogram_id'))) {
  84. $sql->where('miniprogram_id', $param['miniprogram_id']);
  85. }
  86. // 推广id
  87. if (!empty(getProp($param, 'promotion_id'))) {
  88. $sql->where('promotion_id', $param['promotion_id']);
  89. }
  90. // 订单状态查询
  91. if (!empty(getProp($param, 'status'))) {
  92. $sql->where('status', $param['status']);
  93. }
  94. // 充值项类型
  95. if (!empty(getProp($param, 'order_type'))) {
  96. $sql->where('order_type', $param['order_type']);
  97. }
  98. // 用户
  99. if (!empty(getProp($param, 'uid'))) {
  100. $sql->where('uid', $param['uid']);
  101. }
  102. // 订单号查询
  103. if (!empty(getProp($param, 'trade_no'))) {
  104. $sql->where('trade_no', "like", "%" . $param['trade_no'] . "%");
  105. // $sql->where('trade_no', $param['trade_no']);
  106. }
  107. if (!empty(getProp($param, 'trade_no'))) {
  108. // $sql->where('trade_no', "like", "%" . $param['trade_no'] . "%");
  109. $sql->where('trade_no', $param['trade_no']);
  110. }
  111. if (!empty(getProp($param, 'pay_end_at_start'))) {
  112. $sql->where('pay_end_at', $param['pay_end_at_start']);
  113. }
  114. if (!empty(getProp($param, 'pay_end_at_end'))) {
  115. $sql->where('pay_end_at', "<=", $param['pay_end_at_end']);
  116. }
  117. return $sql;
  118. }
  119. }