MemberCashOutService.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  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\member;
  12. use app\dict\member\MemberCashOutDict;
  13. use app\model\member\MemberCashOut;
  14. use app\service\core\member\CoreMemberCashOutService;
  15. use core\base\BaseAdminService;
  16. /**
  17. * 会员提现服务层
  18. */
  19. class MemberCashOutService extends BaseAdminService
  20. {
  21. public function __construct()
  22. {
  23. parent::__construct();
  24. $this->model = new MemberCashOut();
  25. }
  26. /**
  27. * 会员提现列表
  28. * @param array $where
  29. * @return array
  30. */
  31. public function getPage(array $where = [])
  32. {
  33. $field = 'id,member_cash_out.site_id,cash_out_no,member_cash_out.member_id,account_type,transfer_type,transfer_realname,transfer_mobile,transfer_bank,transfer_account,transfer_fail_reason,transfer_status,transfer_time,apply_money,rate,service_money,member_cash_out.money,audit_time,member_cash_out.status,remark,member_cash_out.create_time,refuse_reason,transfer_no';
  34. $member_where = [];
  35. if(!empty($where['keywords']))
  36. {
  37. $member_where = [['member.member_no|member.nickname|member.mobile', '=', $where['keywords']]];
  38. }
  39. $search_model = $this->model->where([['member_cash_out.site_id', '=', $this->site_id]])
  40. ->withSearch(['member_id','status', 'join_create_time' => 'create_time', 'audit_time', 'transfer_time', 'transfer_type', 'cash_out_no'],$where)->with(['transfer'])
  41. ->withJoin(["member" => ['member_id', 'member_no', 'username', 'mobile', 'nickname', 'headimg']])->where($member_where)->field($field)
  42. ->order('create_time desc')->append(['status_name', 'transfer_status_name', 'transfer_type_name', 'account_type_name']);
  43. return $this->pageQuery($search_model);
  44. }
  45. /**
  46. * 提现详情
  47. * @param int $id
  48. * @return array
  49. */
  50. public function getInfo(int $id)
  51. {
  52. $field = 'id,site_id,cash_out_no,member_id,account_type,transfer_type,transfer_realname,transfer_mobile,transfer_bank,transfer_account,transfer_fail_reason,transfer_status,transfer_time,apply_money,rate,service_money,money,audit_time,status,remark,create_time,refuse_reason,transfer_no';
  53. return $this->model->where([['id', '=', $id], ['site_id', '=', $this->site_id]])->with(['memberInfo', 'transfer'])->field($field)->append(['status_name', 'transfer_status_name', 'transfer_type_name', 'account_type_name'])->findOrEmpty()->toArray();
  54. }
  55. /**
  56. * @param int $id
  57. * @param string $action
  58. * @param $data
  59. * @return true|null
  60. */
  61. public function audit(int $id, string $action, $data){
  62. $core_member_cash_out_service = new CoreMemberCashOutService();
  63. return $core_member_cash_out_service->audit($this->site_id, $id, $action, $data);
  64. }
  65. /**
  66. * 转账
  67. * @param int $id
  68. * @param array $data
  69. * @return true
  70. */
  71. public function transfer(int $id, array $data){
  72. $core_member_cash_out_service = new CoreMemberCashOutService();
  73. return $core_member_cash_out_service->transfer($this->site_id, $id, $data);
  74. }
  75. /**
  76. * 统计数据
  77. * @return array
  78. */
  79. public function stat()
  80. {
  81. $stat = [];
  82. //已提现
  83. $stat['transfered'] = $this->model->where([['status', '=', MemberCashOutDict::TRANSFERED], ['site_id', '=', $this->site_id]])->sum("apply_money");
  84. //所有金额(包括提现中,已提现)
  85. $all_money = $this->model->where([['status', '>=', 0], ['site_id', '=', $this->site_id]])->sum("apply_money");
  86. $stat['cash_outing'] = $all_money - $stat['transfered'];
  87. return $stat;
  88. }
  89. /**
  90. * 待处理订单数量统计
  91. * @return int
  92. */
  93. public function getCount()
  94. {
  95. return $this->model->where([ [ 'status', 'in', [MemberCashOutDict::WAIT_AUDIT, MemberCashOutDict::WAIT_TRANSFER] ] ])->count("id");
  96. }
  97. }