PayOrdersService.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. <?php
  2. namespace App\Services\Common;
  3. use App\Models\PayOrdersModel;
  4. use App\Models\MemberModel;
  5. use App\Services\BaseService;
  6. /**
  7. * 充值缴费订单服务
  8. */
  9. class PayOrdersService extends BaseService
  10. {
  11. /**
  12. * 获取列表
  13. */
  14. public function getList()
  15. {
  16. $params = request()->all();
  17. $page = $params['page'] ?? 1;
  18. $limit = $params['limit'] ?? 20;
  19. $type = $params['type'] ?? '';
  20. $status = $params['status'] ?? '';
  21. $keyword = $params['keyword'] ?? '';
  22. $startTime = $params['start_time'] ?? '';
  23. $endTime = $params['end_time'] ?? '';
  24. $query = PayOrdersModel::where('mark', 1);
  25. // 类型筛选
  26. if ($type !== '') {
  27. $query->where('type', $type);
  28. }
  29. // 状态筛选
  30. if ($status !== '') {
  31. $query->where('status', $status);
  32. }
  33. // 关键词搜索
  34. if (!empty($keyword)) {
  35. $query->where(function($q) use ($keyword) {
  36. $q->where('order_no', 'like', "%{$keyword}%")
  37. ->orWhere('account', 'like', "%{$keyword}%")
  38. ->orWhere('transaction_id', 'like', "%{$keyword}%")
  39. ->orWhereHas('user', function($sq) use ($keyword) {
  40. $sq->where('nickname', 'like', "%{$keyword}%")
  41. ->orWhere('mobile', 'like', "%{$keyword}%");
  42. });
  43. });
  44. }
  45. // 时间范围
  46. if (!empty($startTime)) {
  47. $query->where('create_time', '>=', strtotime($startTime));
  48. }
  49. if (!empty($endTime)) {
  50. $query->where('create_time', '<=', strtotime($endTime . ' 23:59:59'));
  51. }
  52. $total = $query->count();
  53. $list = $query->with(['user:id,nickname,mobile'])
  54. ->orderBy('create_time', 'desc')
  55. ->offset(($page - 1) * $limit)
  56. ->limit($limit)
  57. ->get()
  58. ->toArray();
  59. // 格式化数据
  60. foreach ($list as &$item) {
  61. $item['total'] = number_format($item['total'], 2, '.', '');
  62. $item['discount'] = number_format($item['discount'], 2, '.', '');
  63. $item['pay_total'] = number_format($item['pay_total'], 2, '.', '');
  64. $item['create_time_text'] = date('Y-m-d H:i:s', (int)$item['create_time']);
  65. $item['update_time_text'] = date('Y-m-d H:i:s', (int)$item['update_time']);
  66. // 用户信息
  67. if (isset($item['user'])) {
  68. $item['user_nickname'] = $item['user']['nickname'] ?? '';
  69. $item['user_mobile'] = $item['user']['mobile'] ?? '';
  70. }
  71. }
  72. return [
  73. 'code' => 0,
  74. 'msg' => '获取成功',
  75. 'data' => $list,
  76. 'count' => $total
  77. ];
  78. }
  79. /**
  80. * 获取详情
  81. */
  82. public function getInfo($id = null)
  83. {
  84. if ($id === null) {
  85. $id = request()->input('id');
  86. }
  87. $info = PayOrdersModel::where('id', $id)
  88. ->where('mark', 1)
  89. ->with(['user:id,nickname,mobile', 'meal'])
  90. ->first();
  91. if (!$info) {
  92. return ['code' => 1, 'msg' => '记录不存在'];
  93. }
  94. $info = $info->toArray();
  95. $info['total'] = number_format($info['total'], 2, '.', '');
  96. $info['discount'] = number_format($info['discount'], 2, '.', '');
  97. $info['pay_total'] = number_format($info['pay_total'], 2, '.', '');
  98. $info['create_time_text'] = date('Y-m-d H:i:s', (int)$info['create_time']);
  99. $info['update_time_text'] = date('Y-m-d H:i:s', (int)$info['update_time']);
  100. return [
  101. 'code' => 0,
  102. 'msg' => '获取成功',
  103. 'data' => $info
  104. ];
  105. }
  106. /**
  107. * 删除
  108. */
  109. public function delete()
  110. {
  111. $id = request()->input('id');
  112. $order = PayOrdersModel::where('id', $id)
  113. ->where('mark', 1)
  114. ->first();
  115. if (!$order) {
  116. return ['code' => 1, 'msg' => '记录不存在'];
  117. }
  118. $order->mark = 0;
  119. $order->save();
  120. return ['code' => 0, 'msg' => '删除成功'];
  121. }
  122. /**
  123. * 批量删除
  124. */
  125. public function deleteAll($ids = null)
  126. {
  127. if ($ids === null) {
  128. $ids = request()->input('ids', []);
  129. }
  130. $count = PayOrdersModel::whereIn('id', $ids)
  131. ->where('mark', 1)
  132. ->update(['mark' => 0]);
  133. return [
  134. 'code' => 0,
  135. 'msg' => "成功删除{$count}条记录"
  136. ];
  137. }
  138. }