<?php


namespace app\api\controller;


use app\common\controller\Api;
use app\common\model\Num;
use app\common\model\UserToken;
use app\common\model\XiaoFei;
use app\common\model\Yue;
use app\common\model\YueList;
use think\Db;

/**
 * 买单接口
 */
class Buy extends Api
{
    protected $noNeedLogin = ['*'];
    protected $noNeedRight = '*';

    public function _initialize()
    {
        parent::_initialize();
    }

    /**
     * 买单接口
     */
    public function index()
    {
        $this->success('', ['welcome' => $this->auth->nickname]);
    }


    /**
     * @ApiTitle    (买单接口-买单页面)
     * @ApiSummary  (买单页面)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/buy/seller_html)
     * @ApiParams   (name="id", type="int", required=true, description="店铺ID")
     * @ApiReturnParams   (name="code", type="integer", required=true, sample="0")
     * @ApiReturnParams   (name="msg", type="string", required=true, sample="返回成功")
     * @ApiReturn   ({
    'code':'1',
    'msg':'返回成功',
    "data":{
    "seller_avatar":"店铺头图",
    "seller_name":"店铺名称"
    }
    })
     */
    public function seller_html()
    {
        $id = input('id');
        $model = new \app\common\model\Seller();
        $arr = $model::get(['id' => $id])->toArray();
        $return = [
            'seller_avatar' => cdnurl($arr['seller_avatar']),
            'seller_name' => $arr['seller_name']
        ];
        $this->success('成功', $return);
    }


    /**
     * @ApiTitle    (买单接口-是否使用积分)
     * @ApiSummary  (是否使用积分)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/buy/is_num)
     * @ApiParams   (name="token", type="string", required=true, description="token")
     * @ApiParams   (name="money", type="int", required=true, description="金额")
     * @ApiReturnParams   (name="code", type="integer", required=true, sample="0")
     * @ApiReturnParams   (name="msg", type="string", required=true, sample="返回成功")
     * @ApiReturn   ({
    'code':'1',
    'msg':'返回成功',
    "data":{
    "exp_money":"折扣之后的价格",
    "num":"使用积分数量",
    "dikou_money":"抵扣金额",
    "status":"结算状态[1=余额,2=余额+积分]"
    }
    })
     */
    public function is_num()
    {
        $token = input('token');
        $money = input('money');
        $user_token_model = new UserToken();
        $num_model = new Num();
        $user_id = $user_token_model::get(['token' => $token]);
        $num_zengjia = $num_model::all(['user_id' => $user_id['id'], 'status' => 1]);
        $num_jianshao = $num_model::all(['user_id' => $user_id['id'], 'status' => 0]);
        $num_zengjia_num = array_sum(array_column($num_zengjia, 'num'));
        $num_jianshao_num = array_sum(array_column($num_jianshao, 'num'));
        $num = $num_zengjia_num - $num_jianshao_num;
        if ($money > 9) {
            $bili = Db::name('bili')->where(['id' => 1])->find();
            $xuyao_num = intval($money * $bili['bili']);
            if (!($num < $xuyao_num)) {
                $exp_money = $money - $xuyao_num;
                $num = $xuyao_num;
                $dikou_money = $money - $exp_money;
                $status = 2;
                $return = [
                    'exp_money' => $exp_money,
                    'num' => $num,
                    'dikou_money' => $dikou_money,
                    'status' => $status,
                ];
                $this->success('成功', $return);
            } else {
                $this->success('成功', '', '8');
            }
        } else {
            $this->success('成功', '', '9');
        }
    }


    /**
     * @ApiTitle    (买单接口-支付)
     * @ApiSummary  (支付)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/buy/pay)
     * @ApiParams   (name="token", type="string", required=true, description="token")
     * @ApiParams   (name="id", type="int", required=true, description=商家ID")
     * @ApiParams   (name="money", type="int", required=true, description="金额")
     * @ApiParams   (name="num", type="int", required=true, description=使用积分数量")
     * @ApiParams   (name="status", type="int", required=true, description=结算方式[1=余额,2=余额+积分]")
     * @ApiReturnParams   (name="code", type="integer", required=true, sample="0")
     * @ApiReturnParams   (name="msg", type="string", required=true, sample="返回成功")
     * @ApiReturn   ({
    'code':'1',
    'msg':'返回成功',
    "data":{
    }
    })
     */
    public function pay()
    {
        $token['token'] = input('token');
        if (empty($token['token'])) {
            $this->error('请登陆后再操作!', '', '9');
        }
        $token_model = new UserToken();
        $user_id = $token_model::get(['token' => $token['token']]);
        if (!$user_id) {
            $this->error('Token不存在', '', '8');
        }
        $param = $this->request->param();
        $xiaofei_model = new XiaoFei();
        //生成订单号
        $yCode = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J');
        $dingdan_id = $yCode[intval(date('Y')) - 2011] . strtoupper(dechex(date('m'))) . date('d') . substr(time(), -5) . substr(microtime(), 2, 5) . sprintf('%02d', rand(0, 99));
        $yue_model = new Yue();
        $yue_arr = $yue_model::get(['user_id' => $user_id['id']]);
        if ($yue_arr['tixian_yes'] < $param['money']) {
            $this->success('支付失败', '', '9');
            die;
        }
        $new_tixian_yse = $yue_arr['tixian_yes'] - $param['money'];
        $yue_model->save(['tixian_yes' => $new_tixian_yse], ['user_id' => $user_id['id']]);
//        $tixian_yes_aaa = Db::name('yue')->where(['user_id' => $user_id['user_id']])->value('tixian_yes');
//        $yue_list_model = new YueList();
//        $yue_list_arr = [
//            'user_id' => $user_id['user_id'],
//            'money' => $param['money'] + $param['num'],
//            'status' => 0,
//            'yue_aaa' => $tixian_yes_aaa
//        ];
//        $yue_list_model->save($yue_list_arr);
        $num_model = new Num();
        //+++++++++++++++++++++++++++++++++++++++++
        $zengjia_arr2[0] = Db::name('num')->where(['status' => 1])->where(['user_id' => $user_id['id']])->select();
        $jianshao_arr2[0] = Db::name('num')->where(['status' => 0])->where(['user_id' => $user_id['id']])->select();
        if (empty($zengjia_arr2[0])) {
            $zengjia = 0;
        } else {
            $zengjia_arr = $this->three_arr($zengjia_arr2);
            $zengjia = array_sum(array_column($zengjia_arr, 'num'));
        }
        if (empty($jianshao_arr2[0])) {
            $jianshao = 0;
        } else {
            $jianshao_arr = $this->three_arr($jianshao_arr2);
            $jianshao = array_sum(array_column($jianshao_arr, 'num'));
        }
        $money = $zengjia - $jianshao - $param['num'];
        //+++++++++++++++++++++++++++++++++++++++++
        $num_model->save(['num' => $param['num'], 'user_id' => $user_id['id'], 'status' => 0, 'no_tixian' => $money]);
        $xiaofei_model->save(['user_id' => $user_id['id'], 'dingdan_id' => $dingdan_id, 'seller_id' => $param['id'], 'money' => $param['money'], 'pay_num' => $param['num'], 'pay_status' => $param['status']]);
        //商家加钱
        $seller_tixian_yes1 = $param['money'] + $param['num'];
        $seller_model = new \app\common\model\Seller();
        $seller_user_id = $seller_model::get(['id' => $param['id']]);
        $is_seller_id = $yue_model::get(['user_id' => $seller_user_id['user_id']]);
        if (!$is_seller_id) {
            $yue_model->save(['user_id' => $seller_user_id['user_id'], 'tixian_yes' => 0, 'tixian_no' => 0]);
        }
        $seller_tixian_yes_old = $yue_model::get(['user_id' => $seller_user_id['user_id']]);
        $seller_tixian_yes = $seller_tixian_yes_old['tixian_yes'] + $seller_tixian_yes1;
        $yue_model->save(['tixian_yes' => $seller_tixian_yes], ['user_id' => $seller_user_id['user_id']]);
        $tixian_yes_aaa = Db::name('yue')->where(['user_id' => $seller_user_id['user_id']])->value('tixian_yes');
        $yue_list_model = new YueList();
        $yue_list_arr = [
            'user_id' => $seller_user_id['user_id'],
            'money' => $param['money'] + $param['num'],
            'status' => 4,
            'yue_aaa' => $tixian_yes_aaa
        ];
        $yue_list_model->save($yue_list_arr);
//        //商家加钱
        $return = [
            'dingdan_id' => $dingdan_id
        ];
        $this->success('成功', $return);
    }


    //三维数组转二维
    function three_arr($arr)
    {
        foreach ($arr as $value) {
            foreach ($value as $v) {
                $new_return_arr[] = $v;
            }
        }
        return $new_return_arr;
    }
}