123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- <?php
- // +----------------------------------------------------------------------
- // | Niucloud-admin 企业快速开发的saas管理平台
- // +----------------------------------------------------------------------
- // | 官方网址:https://www.niucloud.com
- // +----------------------------------------------------------------------
- // | niucloud团队 版权所有 开源版本可自由商用
- // +----------------------------------------------------------------------
- // | Author: Niucloud Team
- // +----------------------------------------------------------------------
- namespace app\service\admin\member;
- use app\dict\member\MemberCashOutDict;
- use app\dict\pay\TransferDict;
- use app\model\member\MemberCashOut;
- use app\service\core\member\CoreMemberCashOutService;
- use core\base\BaseAdminService;
- use core\exception\CommonException;
- /**
- * 会员提现服务层
- */
- class MemberCashOutService extends BaseAdminService
- {
- public function __construct()
- {
- parent::__construct();
- $this->model = new MemberCashOut();
- }
- /**
- * 会员提现列表
- * @param array $where
- * @return array
- */
- public function getPage(array $where = [])
- {
- $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';
- $member_where = [];
- if(!empty($where['keywords']))
- {
- $member_where = [['member.member_no|member.nickname|member.mobile|member.username', '=', $where['keywords']]];
- }
- $search_model = $this->model
- ->withSearch(['member_id','status', 'join_create_time' => 'create_time', 'audit_time', 'transfer_time', 'transfer_type', 'cash_out_no'],$where)->with(['transfer'])
- ->withJoin(["member" => ['member_id', 'member_no', 'username', 'mobile', 'nickname', 'headimg']])->where($member_where)->field($field)
- ->order('create_time desc')->append(['status_name', 'transfer_status_name', 'transfer_type_name', 'account_type_name']);
- return $this->pageQuery($search_model);
- }
- /**
- * 提现详情
- * @param int $id
- * @return array
- */
- public function getInfo(int $id)
- {
- $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';
- 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();
- }
- /**
- * @param int $id
- * @param string $action
- * @param $data
- * @return true|null
- */
- public function audit(int $id, string $action, $data){
- $core_member_cash_out_service = new CoreMemberCashOutService();
- return $core_member_cash_out_service->audit($id, $action, $data);
- }
- /**
- * 转账
- * @param int $id
- * @param array $data
- * @return true
- */
- public function transfer(int $id, array $data){
- $core_member_cash_out_service = new CoreMemberCashOutService();
- $cash_out = $core_member_cash_out_service->find($id);
- if ($cash_out->isEmpty()) throw new CommonException('CASHOUT_LOG_NOT_EXIST');
- if ($cash_out['status'] != MemberCashOutDict::WAIT_TRANSFER && $cash_out['transfer_type'] == TransferDict::WECHAT) throw new CommonException('CASH_OUT_WECHAT_ACCOUNT_NOT_ALLOW_ADMIN');
- return $core_member_cash_out_service->transfer($id, $data);
- }
- /**
- * 备注
- * @param int $id
- * @param array $data
- * @return true
- */
- public function remark(int $id, array $data){
- $core_member_cash_out_service = new CoreMemberCashOutService();
- return $core_member_cash_out_service->remark($id, $data);
- }
- /**
- * 统计数据
- * @return array
- */
- public function stat()
- {
- $stat = [];
- //已提现
- $stat['transfered'] = $this->model->where([['status', '=', MemberCashOutDict::TRANSFERED], ])->sum("apply_money");
- //所有金额(包括提现中,已提现)
- $all_money = $this->model->where([['status', '>=', 0], ])->sum("apply_money");
- $stat['cash_outing'] = $all_money - $stat['transfered'];
- return $stat;
- }
- /**
- * 检测实际的转账状态
- * @param int $id
- * @return true
- */
- public function checkTransferStatus(int $id){
- $core_member_cash_out_service = new CoreMemberCashOutService();
- return $core_member_cash_out_service->checkTransferStatus($id);
- }
- /**
- * 取消体现
- * @param int $id
- * @return mixed
- */
- public function cancel(int $id){
- $core_member_cash_out_service = new CoreMemberCashOutService();
- return $core_member_cash_out_service->cancel($id);
- }
- /**
- * 待处理订单数量统计
- * @return int
- */
- public function getCount()
- {
- return $this->model->where([ [ 'status', 'in', [MemberCashOutDict::WAIT_AUDIT, MemberCashOutDict::WAIT_TRANSFER] ] ])->count("id");
- }
- }
|