RechargeOrderRefundService.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  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\RechargeOrderItemRefund;
  14. use app\service\core\order\recharge\CoreRechargeRefundService;
  15. use core\base\BaseAdminService;
  16. use Exception;
  17. /**
  18. * 充值订单
  19. * Class RechargeOrderService
  20. * @package app\service\admin\order
  21. */
  22. class RechargeOrderRefundService extends BaseAdminService
  23. {
  24. public function __construct()
  25. {
  26. parent::__construct();
  27. $this->model = new RechargeOrderItemRefund();
  28. }
  29. public function create($order_id) {
  30. try {
  31. (new CoreRechargeRefundService())->create($this->site_id, $order_id);
  32. return true;
  33. } catch ( Exception $e) {
  34. return $e->getMessage();
  35. }
  36. }
  37. /**
  38. * 查询退款列表
  39. * @param array $where
  40. * @return array
  41. */
  42. public function getPage(array $where) {
  43. $field = 'recharge_order_item_refund.refund_id,recharge_order_item_refund.num,recharge_order_item_refund.money,recharge_order_item_refund.refund_no,recharge_order_item_refund.status,recharge_order_item_refund.create_time,recharge_order_item_refund.audit_time,recharge_order_item_refund.transfer_time,recharge_order_item_refund.item_type,recharge_order_item_refund.order_item_id, recharge_order_item_refund.order_id,recharge_order_item_refund.member_id,recharge_order_item_refund.order_no';
  44. $member_where = [];
  45. if(!empty($where['keywords']))
  46. {
  47. $member_where[] = ["member.member_id|member.nickname|member.mobile", '=', $where['keywords']];
  48. }
  49. $search_model = $this->model->where([['recharge_order_item_refund.site_id', '=', $this->site_id]])->with(['item' => function($query) {
  50. $query->with('orderNo')->field('order_id, order_item_id, item_name, item_image');
  51. }])->withSearch(['join_order_no' => 'order_no', 'join_status' => 'status', 'join_member_id' => 'member_id', 'refund_no' => 'refund_no', 'join_create_time' => 'create_time'],$where)
  52. ->withJoin(['member' => ['memeber_id', 'member_no', 'username', 'mobile', 'nickname', 'headimg']
  53. ])->where($member_where)->field($field)->order('create_time desc')->append(['status_name', 'payrefund.type_name']);
  54. return $this->pageQuery($search_model);
  55. }
  56. /**
  57. * 查询退款详情
  58. * @param int $refund_id
  59. * @return array
  60. */
  61. public function getDetail(int $refund_id) {
  62. $field = 'refund_id,num,money,refund_no,status,create_time,audit_time,transfer_time,item_type,order_item_id, order_id,member_id';
  63. return $this->model->where([ ['site_id', '=', $this->site_id], ['refund_id', '=', $refund_id]])->field($field)->with(['item' => function($query) {
  64. $query->field('order_item_id, item_name, item_image');
  65. }, 'member' => function($query) {
  66. $query->field('member_id, nickname, mobile, headimg');
  67. }, 'payrefund' => function($query) {
  68. $query->field('refund_no');
  69. }])->append(['status_name', 'payrefund.type_name'])->findOrEmpty()->toArray();
  70. }
  71. /**
  72. * 获取退款状态
  73. * @return array|array[]|string
  74. */
  75. public function getStatus(){
  76. return RechargeOrderDict::getRefundStatus();
  77. }
  78. /**
  79. * 退款统计数据(根据状态查询)
  80. */
  81. public function stat()
  82. {
  83. $status = RechargeOrderDict::getRefundStatus();
  84. $all = 0;
  85. $have = 0;
  86. foreach ($status as $k => &$v)
  87. {
  88. $money = $this->model->where([['status', '=', $v['status']], ['site_id', '=', $this->site_id]])->sum("money");
  89. if($money == null)
  90. {
  91. $money = 0;
  92. }
  93. if($k == 1 || $k == 2){
  94. $have += $money;
  95. }
  96. $v['money'] = number_format($money, 2);
  97. $all += $money;
  98. }
  99. $status['all'] = [
  100. 'name' => get_lang('dict_refund.all'),
  101. 'key' => 'all',
  102. 'money' => number_format($all, 2)
  103. ];
  104. $status['have'] = [
  105. 'name' => get_lang('dict_refund.have'),
  106. 'key' => 'all',
  107. 'money' => number_format($have, 2)
  108. ];
  109. return $status;
  110. }
  111. }