MemberCashOutService.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  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\api\member;
  12. use app\dict\member\MemberCashOutDict;
  13. use app\model\member\MemberCashOut;
  14. use app\service\core\member\CoreMemberCashOutService;
  15. use app\service\core\member\CoreMemberConfigService;
  16. use core\base\BaseApiService;
  17. use core\exception\ApiException;
  18. use core\exception\CommonException;
  19. /**
  20. * 会员提现服务层
  21. */
  22. class MemberCashOutService extends BaseApiService
  23. {
  24. public function __construct()
  25. {
  26. parent::__construct();
  27. $this->model = new MemberCashOut();
  28. }
  29. /**
  30. * 会员提现列表
  31. * @param array $where
  32. * @return array
  33. */
  34. public function getPage(array $where = [])
  35. {
  36. $where['member_id'] = $this->member_id;
  37. $field = 'id,site_id,cash_out_no,member_id,account_type,transfer_type,transfer_realname,transfer_mobile,transfer_bank,transfer_account,transfer_status,transfer_time,apply_money,rate,service_money,money,audit_time,status,remark,create_time,refuse_reason';
  38. $search_model = $this->model->where($where)->withSearch(['member_id','status', 'create_time'],$where)->with(['memberInfo', 'transfer'])->field($field)->append(['account_type_name', 'transfer_type_name', 'status_name', 'transfer_status_name'])->order('create_time desc');
  39. return $this->pageQuery($search_model);
  40. }
  41. /**
  42. * 提现详情
  43. * @param int $id
  44. * @return array
  45. */
  46. public function getInfo(int $id)
  47. {
  48. $field = 'id,site_id,cash_out_no,member_id,transfer_type,transfer_realname,transfer_mobile,transfer_bank,transfer_account,transfer_fail_reason,transfer_time,apply_money,rate,service_money,money,audit_time,status,remark,create_time,refuse_reason, transfer_no, transfer_payee, transfer_payment_code';
  49. return $this->model->where([['id', '=', $id], ['member_id', '=', $this->member_id]])->with(['memberInfo', 'transfer'])->field($field)->append(['account_type_name', 'transfer_type_name', 'status_name', 'transfer_status_name'])->findOrEmpty()->toArray();
  50. }
  51. /**
  52. * 申请提现
  53. * @param array $data
  54. * @return true
  55. */
  56. public function apply(array $data){
  57. return (new CoreMemberCashOutService())->apply($this->member_id, $data);
  58. }
  59. /**
  60. * 撤销提现申请
  61. * @param int $id
  62. * @return true
  63. */
  64. public function cancel(int $id){
  65. $cash_out = $this->model->where([
  66. ['id', '=', $id],
  67. ['member_id', '=', $this->member_id],
  68. ])->findOrEmpty();
  69. if($cash_out->isEmpty()) throw new ApiException('CASHOUT_LOG_NOT_EXIST');
  70. // if($cash_out['status'] != MemberCashOutDict::WAIT_AUDIT) throw new CommonException('CASHOUT_STATUS_NOT_IN_WAIT_AUDIT');
  71. (new CoreMemberCashOutService())->cancel($id);
  72. return true;
  73. }
  74. /**
  75. * 获取提现配置
  76. * @return array
  77. */
  78. public function getCashOutConfig(){
  79. return (new CoreMemberConfigService())->getCashOutConfig();
  80. }
  81. /**
  82. * 提现转账(主要用于微信商家转账)
  83. * @param int $id
  84. * @return void
  85. */
  86. public function transfer(int $id, array $data){
  87. $data['channel'] = $this->channel;
  88. $result = (new CoreMemberCashOutService())->transfer($id, $data);
  89. return $result;
  90. }
  91. }