<?php

namespace app\home\controller;
use app\home\service\WalletService;
use app\model\PreUsStockModel;
use think\response\Json;
use think\Request;

/***
 * 处理用户中心业务
 */
class Wallet extends HomeBaseController
{
    /**
     * 获取用户全部资产
     * @return Json
     */
    public function getAllAssets(Request $request): Json
    {
        $user_id=$request->userId;
        $account_type=$request->post('account_type',0);
        $result = (new WalletService())->getUserAssets($user_id,$account_type);
        return json($result);
    }


    public function userRechargeList(Request $request): Json
    {
        $data['user_id']=$request->userId;
        $data['account_type']=$request->post('account_type');
        $data['page']=$request->post('page');
        $data['page_size']=$request->post('page_size');
        $result = (new WalletService())->getUserRechargeList($data);
        return json($result);
    }

    /**
     * 用户添加钱包地址
     * @param Request $request
     * @return Json
     */
    public function addWalletAddress(Request $request): Json
    {
        $data['user_id']=$request->userId;
        $data['wallet_type']=$request->post('wallet_type');
        $data['wallet_address']=$request->post('wallet_address');
        $data['remark']=$request->post('remark');
        $data['adr_id']=$request->post('address_id');
        $data['is_default']=$request->post('is_default');

        $result=(new WalletService())->insertWalletAdress($data);
        return json($result);
    }

    /**
     * 获取用户钱包地址列表
     * @param Request $request
     * @return Json
     */
    public function getWalletAddress(Request $request): Json
    {
        $data['user_id']=$request->userId;
        $data['page']=$request->post('page');
        $data['page_size']=$request->post('page_size');
        $data['wallet_type']=$request->post('wallet_type');
        $result=(new WalletService())->getUserWalletAddress($data);
        return json($result);
    }

    /**
     * 获取用户钱包地址详情
     * @param Request $request
     * @return Json
     */
    public function getWalletAddressInfo(Request $request): Json
    {
        $data['user_id']=$request->userId;
        $data['adr_id']=$request->post('address_id',0);
        $result=(new WalletService())->getUserWalletAddressInfo($data);
        return json($result);
    }

    /**
     * 删除用户钱包地址
     * @param Request $request
     * @return Json
     * @throws \think\db\exception\DbException
     */
    public function delWalletAddress(Request $request): Json
    {
        $data['user_id']=$request->userId;
        $data['adr_id']=$request->post('address_id');
        $result=(new WalletService())->delUserWalletAddress($data);
        return json($result);
    }

    /**
     * 获取银行卡列表
     * @param Request $request
     * @return Json
     */
    public function getUserBank(Request $request): Json
    {
        $data['user_id']=$request->userId;
        $data['page']=$request->post('page');
        $data['page_size']=$request->post('page_size');
        $result=(new WalletService())->getUserBank($data);
        return json($result);
    }

    /**
     *
     * @param Request $request
     * @return Json
     */
    public function getUserBankInfo(Request $request): Json
    {
        $data['user_id']=$request->userId;
        $data['id']=$request->post('id');
        $result=(new WalletService())->getUserBankInfo($data);
        return json($result);
    }
    /**
     * 添加编辑银行卡
     * @param Request $request
     * @return Json
     */
    public function addUserBank(Request $request): Json
    {
        $data['user_id']=$request->userId;
        $data['id']=$request->post('id');
        $data['true_name']=$request->post('true_name');
        $data['identity_card']=$request->post('identity_card');
        $data['bank_card']=$request->post('bank_card');
        $data['bank_name']=$request->post('bank_name');
        $data['bank_email']=$request->post('bank_email');
        $data['bank_phone']=$request->post('bank_phone');
        $data['bank_code']=$request->post('bank_code');
        $data['branch_name']=$request->post('branch_name');
        $data['branch_phone']=$request->post('branch_phone');
        $data['is_default']=$request->post('is_default');
        $data['ifsc']=$request->post('ifsc');
        $data['bank_address']=$request->post('bank_address');
        $data['user_address']=$request->post('user_address');
        $data['bank_country']=$request->post('bank_country');
        $result=(new WalletService())->insertUserBank($data);
        return json($result);
    }

    /**
     * 删除银行卡
     * @param Request $request
     * @return Json
     */
    public function delUserBank(Request $request): Json
    {
        $data['user_id']=$request->userId;
        $data['id']=$request->post('id');
        $result=(new WalletService())->delUserBank($data);
        return json($result);
    }

    /**
     * 获取用户账户可用余额
     * @param Request $request
     * @return Json
     */
    public function getUserBalance(Request $request): Json
    {
        $data['user_id']=$request->userId;
        $data['account_type']=$request->post('account_type');
        $data['trade_name']=$request->post('trade_name');
        $result=(new WalletService())->getUserBalance($data);
        return json($result);
    }

    public function drawalFee(Request $request): Json
    {
        $account_type=$request->post('account_type',0,'intval');
        $result=(new WalletService())->getDrawalFee($account_type);
        return json($result);
    }

    /**
     * 用户提款申请
     * @param Request $request
     * @return Json
     */
    public function drawalApply(Request $request): Json
    {
        $data['user_id']=$request->userId;
        $data['account_type']=$request->post('account_type');
        $data['apply_num']=$request->post('apply_num');
        $data['apply_type']=$request->post('apply_type');
        $data['bank_id']=$request->post('bank_id');
        $data['address_id']=$request->post('address_id');
        $data['wallet_address']=$request->post('wallet_address');
        $data['drawal_type']=$request->post('drawal_type');
        $data['trade_pwd']=$request->post('trade_pwd');
        $data['country']=$request->post('country');

        $result=(new WalletService())->dealDrawalApply($data);
        return json($result);
    }    /**
     * 用户提款申请
     * @param Request $request
     * @return Json
     */
    public function canncelDrawalApply(Request $request): Json
    {
        $data['user_id']=$request->userId;
        $data['order_no']=$request->post('order_no');
        $result=(new WalletService())->canncelDrawalApply($data);
        return json($result);
    }
    public function userDrawalList(Request $request): Json
    {
        $data['user_id']=$request->userId;
        $data['account_type']=$request->post('account_type');
        $data['page']=$request->post('page');
        $data['page_size']=$request->post('page_size');
        $result=(new WalletService())->getDrawalList($data);
        return json($result);
    }

    /**
     * 获取用户资金明细数据
     * @param Request $request
     * @return Json
     */
    public function UserBalanceRecord(Request $request): Json
    {
        $data['user_id']=$request->userId;
        $data['account_type']=$request->post('account_type');
        $data['page']=$request->post('page');
        $data['page_size']=$request->post('page_size');
        $result=(new WalletService())->getUserBalanceRecord($data);
        return json($result);
    }

    /**
     * 处理用户资金账户相互划转接口
     * @param Request $request
     * @return Json
     */
    public function userTransfer(Request $request): Json
    {
        $data['user_id']=$request->userId;
        $data['from_account']=$request->post('from_account');
        $data['to_account']=$request->post('to_account');
        $data['change_num']=$request->post('change_num');
        $result=(new WalletService())->doUserTransfer($data);
        return json($result);
    }
    public function userRechargeWallet(Request $request): Json
    {
        $data['user_id']=$request->userId;
        $data['wallet_type']=$request->post('wallet_type');
        $result=(new WalletService())->getUserRechargeWallet($data);
        return json($result);
    }

    /**
     * 获取用户划转资金明细
     * @param Request $request
     * @return Json
     */
    public function userTransferRecord(Request $request): Json
    {
        $data['user_id']=$request->userId;
        $data['page']=$request->post('page');
        $data['page_size']=$request->post('page_size');
        $result=(new WalletService())->getUserTransfer($data);
        return json($result);
    }
    public function userHasNotPay(Request $request):Json
    {
        $data['user_id']=$request->userId;
        $data['market_type']=$request->post('market_type');
        $result=(new WalletService())->userHasNotPay($data);
        return json($result);
    }
    public function dealUnPayIPO(Request $request):Json
    {
        $data['user_id']=$request->userId;
        $data['market_type']=$request->post('market_type');
        $result=(new WalletService())->dealUnPayIPO($data);
        return json($result);
    }


    // 获取用户账户之间划转的费率 支持计算具体值
    public function getRateToTransfer()
    {
        $result=(new WalletService())->getRateToTransfer($this->request->param());
        return json($result);
    }

}