RechargeOrderService.php 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | Niucloud-admin 企业快速开发的saas管理平台
  4. // +----------------------------------------------------------------------
  5. // | 官方网址:https://www.niucloud.com
  6. // +----------------------------------------------------------------------
  7. // | niucloud团队 版权所有 开源版本可自由商用
  8. // +----------------------------------------------------------------------
  9. // | Author: Niucloud Team
  10. // +----------------------------------------------------------------------
  11. namespace app\service\admin\order;
  12. use app\dict\order\RechargeOrderDict;
  13. use app\model\order\RechargeOrder;
  14. use core\base\BaseAdminService;
  15. /**
  16. * 充值订单
  17. * Class RechargeOrderService
  18. * @package app\service\admin\order
  19. */
  20. class RechargeOrderService extends BaseAdminService
  21. {
  22. public function __construct()
  23. {
  24. parent::__construct();
  25. $this->model = new RechargeOrder();
  26. }
  27. /**
  28. * 充值订单分页列表
  29. * @param array $where
  30. * @return array
  31. */
  32. public function getPage(array $where)
  33. {
  34. $field = 'order_id, site_id, order_no, order_from, order_type, out_trade_no, order_status, refund_status, member_id, ip, member_message, order_item_money, order_discount_money, order_money, create_time, pay_time, close_time, is_delete, is_enable_refund, remark, invoice_id, close_reason';
  35. $order = 'create_time desc';
  36. $where['order_type'] = 'recharge';
  37. $search_model = $this->model->where([['site_id', '=', $this->site_id]])->withSearch(['order_no', 'order_money', 'order_from', 'order_status', 'order_type', 'member_id', 'out_trade_no', 'create_time', 'pay_time'], $where)->field($field)->with(['item' => function($query) {
  38. $query->field('order_item_id, order_id, member_id, item_id, item_type, item_name, item_image, price, num, item_money, is_refund, refund_no, refund_status, create_time');
  39. }, 'member' => function($query) {
  40. $query->field('member_id, nickname, mobile, headimg');
  41. }, 'pay' => function($query) {
  42. $query->field('');
  43. } ])->order($order)->append(['order_from_name' ]);
  44. $list = $this->pageQuery($search_model);
  45. $order_status = RechargeOrderDict::getStatus();
  46. $refund_status = RechargeOrderDict::getRefundStatus();
  47. foreach ($list['data'] as $k => $v)
  48. {
  49. $list['data'][$k]['order_status_info'] = $order_status[$v['order_status']] ?? [];
  50. $list['data'][$k]['refund_status_name'] = $refund_status[$v['refund_status']]['name'] ?? '';
  51. }
  52. return $list;
  53. }
  54. /**
  55. * 充值订单详情
  56. * @param int $order_id
  57. * @return array
  58. */
  59. public function getDetail(int $order_id)
  60. {
  61. $field = 'order_id, site_id, order_no, order_from, order_type, out_trade_no, order_status, refund_status, member_id, ip, member_message, order_item_money, order_discount_money, order_money, create_time, pay_time, close_time, is_delete, is_enable_refund, remark, invoice_id, close_reason';
  62. $detail = $this->model->where([['order_type', '=', 'recharge'], ['site_id', '=', $this->site_id], ['order_id', '=', $order_id]])->field($field)->with(['item' => function($query) {
  63. $query->field('order_item_id, order_id, member_id, item_id, item_type, item_name, item_image, price, num, item_money, is_refund, refund_no, refund_status, create_time');
  64. }, 'member' => function($query) {
  65. $query->field('member_id, nickname, mobile, headimg');
  66. }, 'pay' => function($query) {
  67. $query->field('');
  68. } ])->append(['order_from_name'])->findOrEmpty()->toArray();
  69. if(!empty($detail))
  70. {
  71. $detail['order_status_info'] = RechargeOrderDict::getStatus($detail['order_status']) ?? [];
  72. }
  73. return $detail;
  74. }
  75. /**
  76. * 充值订单状态
  77. * @return array|array[]|string
  78. */
  79. public function getStatus()
  80. {
  81. return RechargeOrderDict::getStatus();
  82. }
  83. /**
  84. * 充值订单
  85. * @param array $data
  86. * @return int[]
  87. */
  88. public function stat(array $data = [])
  89. {
  90. $res = [
  91. 'recharge_money' => 0,
  92. 'recharge_refund_money' => 0
  93. ];
  94. $where = [
  95. ['site_id', '=', $this->site_id],
  96. ['order_type', '=', 'recharge'],
  97. ['order_status', '=', RechargeOrderDict::FINISH],
  98. ];
  99. if(!empty($data['member_id'])) $where[] = ['member_id', '=', $data['member_id']];
  100. $res['recharge_money'] = $this->model->where($where)->sum('order_money');
  101. $where = [
  102. ['site_id', '=', $this->site_id],
  103. ['order_type', '=', 'recharge'],
  104. ['refund_status', '=', RechargeOrderDict::REFUND_COMPLETED],
  105. ];
  106. if(!empty($data['member_id'])) $where[] = ['member_id', '=', $data['member_id']];
  107. $res['recharge_refund_money'] = $this->model->where($where)->sum('order_money');
  108. return $res;
  109. }
  110. }