MemberCashOutService.php 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  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\dict\pay\TransferDict;
  14. use app\model\member\MemberCashOut;
  15. use app\service\core\member\CoreMemberCashOutService;
  16. use core\base\BaseAdminService;
  17. use core\exception\CommonException;
  18. /**
  19. * 会员提现服务层
  20. */
  21. class MemberCashOutService extends BaseAdminService
  22. {
  23. public function __construct()
  24. {
  25. parent::__construct();
  26. $this->model = new MemberCashOut();
  27. }
  28. /**
  29. * 会员提现列表
  30. * @param array $where
  31. * @return array
  32. */
  33. public function getPage(array $where = [])
  34. {
  35. $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, transfer_payment_code';
  36. $member_where = [];
  37. if(!empty($where['keywords']))
  38. {
  39. $member_where = [['member.member_no|member.nickname|member.mobile|member.username', '=', $where['keywords']]];
  40. }
  41. $search_model = $this->model
  42. ->withSearch(['member_id','status', 'join_create_time' => 'create_time', 'audit_time', 'transfer_time', 'transfer_type', 'cash_out_no'],$where)->with(['transfer'])
  43. ->withJoin(["member" => ['member_id', 'member_no', 'username', 'mobile', 'nickname', 'headimg']])->where($member_where)->field($field)
  44. ->order('create_time desc')->append(['status_name', 'transfer_status_name', 'transfer_type_name', 'account_type_name']);
  45. return $this->pageQuery($search_model);
  46. }
  47. /**
  48. * 提现详情
  49. * @param int $id
  50. * @return array
  51. */
  52. public function getInfo(int $id)
  53. {
  54. $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, transfer_payment_code';
  55. return $this->model->where([['id', '=', $id]])->with(['memberInfo', 'transfer'])->field($field)->append(['status_name', 'transfer_status_name', 'transfer_type_name', 'account_type_name'])->findOrEmpty()->toArray();
  56. }
  57. /**
  58. * @param int $id
  59. * @param string $action
  60. * @param $data
  61. * @return true|null
  62. */
  63. public function audit(int $id, string $action, $data){
  64. $core_member_cash_out_service = new CoreMemberCashOutService();
  65. return $core_member_cash_out_service->audit($id, $action, $data);
  66. }
  67. /**
  68. * 转账
  69. * @param int $id
  70. * @param array $data
  71. * @return true
  72. */
  73. public function transfer(int $id, array $data){
  74. $core_member_cash_out_service = new CoreMemberCashOutService();
  75. $cash_out = $core_member_cash_out_service->find($id);
  76. if ($cash_out->isEmpty()) throw new CommonException('CASHOUT_LOG_NOT_EXIST');
  77. if ($cash_out['status'] != MemberCashOutDict::WAIT_TRANSFER && $cash_out['transfer_type'] == TransferDict::WECHAT) throw new CommonException('CASH_OUT_WECHAT_ACCOUNT_NOT_ALLOW_ADMIN');
  78. return $core_member_cash_out_service->transfer($id, $data);
  79. }
  80. /**
  81. * 备注
  82. * @param int $id
  83. * @param array $data
  84. * @return true
  85. */
  86. public function remark(int $id, array $data){
  87. $core_member_cash_out_service = new CoreMemberCashOutService();
  88. return $core_member_cash_out_service->remark($id, $data);
  89. }
  90. /**
  91. * 统计数据
  92. * @return array
  93. */
  94. public function stat()
  95. {
  96. $stat = [];
  97. //已提现
  98. $stat['transfered'] = $this->model->where([['status', '=', MemberCashOutDict::TRANSFERED], ])->sum("apply_money");
  99. //所有金额(包括提现中,已提现)
  100. $all_money = $this->model->where([['status', '>=', 0], ])->sum("apply_money");
  101. $stat['cash_outing'] = $all_money - $stat['transfered'];
  102. return $stat;
  103. }
  104. /**
  105. * 检测实际的转账状态
  106. * @param int $id
  107. * @return true
  108. */
  109. public function checkTransferStatus(int $id){
  110. $core_member_cash_out_service = new CoreMemberCashOutService();
  111. return $core_member_cash_out_service->checkTransferStatus($id);
  112. }
  113. /**
  114. * 取消体现
  115. * @param int $id
  116. * @return mixed
  117. */
  118. public function cancel(int $id){
  119. $core_member_cash_out_service = new CoreMemberCashOutService();
  120. return $core_member_cash_out_service->cancel($id);
  121. }
  122. /**
  123. * 待处理订单数量统计
  124. * @return int
  125. */
  126. public function getCount()
  127. {
  128. return $this->model->where([ [ 'status', 'in', [MemberCashOutDict::WAIT_AUDIT, MemberCashOutDict::WAIT_TRANSFER] ] ])->count("id");
  129. }
  130. }