<?php


namespace app\api\controller;


use app\common\controller\Api;
use app\common\model\Money;
use app\common\model\UserLevel;
use app\common\model\UserToken;
use think\console\command\make\Model;


/**
 * 会员接口
 */
class Vip extends Api
{
    protected $noNeedLogin = ['*'];
    protected $noNeedRight = '*';

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

    /**
     * 会员接口
     *
     */
    public function index()
    {
        $this->success('');
    }


    /**
     * @ApiTitle    (会员接口-判断是否是VIP)
     * @ApiSummary  (判断是否是VIP)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/vip/is_vip)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiReturnParams   (name="code", type="integer", required=true, sample="0")
     * @ApiReturnParams   (name="msg", type="string", required=true, sample="返回成功")
     * @ApiReturn   ({
    'code':'1',
    'msg':'返回成功',
    "data":{
    "status":"是否是会员[0=非会员,1=会员]"
    }
    })
     */
    public function is_vip()
    {
        $token = $this->request->header();
        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');
        }
        $model = new \app\common\model\User();
        $arr = $model::get(['user_id' => $user_id['id']]);
        if ($arr['vip'] == 0) {
            $return = ['status' => 0];
            $this->success('成功', $return);
        } else {
            $return = ['status' => 1];
            $this->success('成功', $return);
        }
    }


    /**
     * @ApiTitle    (会员接口-会员未开通)
     * @ApiSummary  (会员未开通)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/vip/vip_con)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiReturnParams   (name="code", type="integer", required=true, sample="0")
     * @ApiReturnParams   (name="msg", type="string", required=true, sample="返回成功")
     * @ApiReturn   ({
    'code':'1',
    'msg':'返回成功',
    "data":{
    {
    "vip_name":"vip名称",
    "vip_con":"vip权益内容",
    "price":"价钱"
    },
    "avatar":"用户头像",
    "name":"姓名"
    }
    })
     */
    public function vip_con()
    {
        $token = $this->request->header();
        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');
        }
        $model2 = new \app\common\model\User();
        $arr2 = $model2::get(['user_id' => $user_id['id']]);
        $model = new \app\common\model\Vip();
        $arr = $model->select();
        foreach ($arr as $k => $v) {
            $return[$k]['vip_name'] = $v['vip_name'];
            $return[$k]['vip_con'] = $v['vip_con'];
            $return[$k]['price'] = $v['price'];
        }
        $return['avatar'] = $arr2['avatar'];
        $return['name'] = $arr2['name'];
        $this->success('成功', $return);
    }


    /**
     * @ApiTitle    (会员接口-会员已开通)
     * @ApiSummary  (会员已开通)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/vip/vip_ykt)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiReturnParams   (name="code", type="integer", required=true, sample="0")
     * @ApiReturnParams   (name="msg", type="string", required=true, sample="返回成功")
     * @ApiReturn   ({
    'code':'1',
    'msg':'返回成功',
    "data":{
    "avatar":"用户头像",
    "name":"用户姓名",
    "status":"会员级别:[1=普通会员,2=高级会员]",
    "vip_exp_time":"会员过期时间",
    "lj_money":"累计收益",
    "money":"可提现佣金"
    }
    })
     */
    public function vip_ykt()
    {
        $token = $this->request->header();
        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');
        }
        $model = new \app\common\model\User();
        $arr = $model::get(['user_id' => $user_id['id']]);
        $money_model = new Money();
        $money_arr = $money_model::all(['status' => 1, 'user_id' => $user_id['id']]);
        $money2_arr = $money_model::all(['status' => 0, 'user_id' => $user_id['id']]);
        foreach ($money_arr as $k => $v) {
            $lj_money_old[$k]['money'] = $v['money'];
        }
        foreach ($money2_arr as $k => $v) {
            $money_old2[$k]['money'] = $v['money'];
        }
        $lj_money = array_sum(array_column($lj_money_old, 'money'));
        $money_old = array_sum(array_column($money_old2, 'money'));
        $money = $lj_money - $money_old;
        $return = [
            'avatar' => cdnurl($arr['avatar']),
            'name' => $arr['name'],
            'status' => $arr['vip'],
            'vip_exp_time' => date('Y-m-s', $arr['vip_exp_time']),
            'lj_money' => $lj_money,
            'money' => $money,
        ];
        $this->success('成功', $return);
    }


    /**
     * @ApiTitle    (会员接口-累计邀请)
     * @ApiSummary  (累计邀请)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/vip/invite)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiReturnParams   (name="code", type="integer", required=true, sample="0")
     * @ApiReturnParams   (name="msg", type="string", required=true, sample="返回成功")
     * @ApiReturn   ({
    'code':'1',
    'msg':'返回成功',
    "data":{
    "num":
    [{
    "people_count":"累计邀请",
    "money_count":"累计收益",
    "one_level":"一级人数",
    "two_level":"二级人数"
    }],
    "con":
    [{"time":"创建时间",
    "name":"姓名",
    "avatar":"头像",
    "level":"级别:[1=一级,2=二级]",
    "money":"金额"}]
    }
    })
     */
    public function invite()
    {
        $token = $this->request->header();
        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');
        }
        $money_model = new Money();
        $money_arr = $money_model::all(['status' => 1, 'user_id' => $user_id['id']]);
        foreach ($money_arr as $k => $v) {
            $lj_money_old[$k]['money'] = $v['money'];
        }
        //累计收益
        $money_count = array_sum(array_column($lj_money_old, 'money'));
        $user_level_model = new UserLevel();
        $user_id_arr = $user_level_model::all(['user_id' => $user_id['id']]);
        foreach ($user_id_arr as $k => $v) {
            $first_son_arr[$k] = $v['user_son_id'];
        }
        //一级数量
        $first_son = count($first_son_arr);
        $second_son_num = 0;
        foreach ($first_son_arr as $k => $v) {
            $second_son_arr_old[$k] = collection($user_level_model::all(['user_id' => $v]))->toArray();
            $second_son_num += count($second_son_arr_old[$k]);
        }
        //二级数量
        $second_son = $second_son_num;
        //累计邀请
        $people_son = $first_son + $second_son;
        $return3 = [
            'people_count' => $people_son,
            'money_count' => $money_count,
            'one_level' => $first_son,
            'two_level' => $second_son
        ];
        $user_model = new \app\common\model\User();
        foreach ($first_son_arr as $k => $v) {
            $first_son_con_old[$k] = $user_model::all(['user_id' => $v]);
        }
        foreach ($first_son_con_old as $k => $v) {
            $first_son_con[] = $v[0];
        }
        foreach ($first_son_arr as $k => $v) {
            $first_son_money_con[$k] = $money_model->where('huoqu_id', $v)->where('user_id', $user_id['id'])->select();
        }
        $kong2 = [];
        foreach ($first_son_money_con as $k => $v) {
            foreach ($v as $key => $val) {
                $kong2[] = $val;
            }
        }
        foreach ($kong2 as $k => $v) {
            $first_money[$k]['money'] = $v['money'];
        }
        $key = 0;
        foreach ($first_son_con as $k => $v) {
            $return1[$k]['time'] = $v['createtime'];
            $return1[$k]['name'] = $v['name'];
            $return1[$k]['avatar'] = $v['avatar'];
            $return1[$k]['level'] = 1;
            $return1[$k]['money'] = $first_money[$key++]['money'];
        }
        $return['con'] = $return1;
        $kong = [];
        foreach ($second_son_arr_old as $k => $v) {
            foreach ($v as $key => $val) {
                $kong[] = $val;
            }
        }
        foreach ($kong as $k => $v) {
            $kong_arr[$k] = $user_model::all(['user_id' => $v['user_son_id']]);
        }
        foreach ($kong as $k => $v) {
            $seconnd_son_money_con[$k] = $money_model->where('huoqu_id', $v['user_son_id'])->where('user_id', $user_id['id'])->select();
        }
        $kong3 = [];
        foreach ($seconnd_son_money_con as $k => $v) {
            foreach ($v as $key => $val) {
                $kong3[] = $val;
            }
        }
        foreach ($kong3 as $k => $v) {
            $second_money[$k]['money'] = $v['money'];
        }
        foreach ($kong_arr as $k => $v) {
            $new_kong_arr[] = $v[0];
        }
        foreach ($new_kong_arr as $k => $v) {
            $return2[$k]['time'] = $v['createtime'];
            $return2[$k]['name'] = $v['name'];
            $return2[$k]['avatar'] = $v['avatar'];
            $return2[$k]['level'] = 2;
            $return2[$k]['money'] = $second_money[$key++]['money'];
        }
        $return['num'] = $return3;
        $return['con'] = array_merge($return2, $return1);
        $this->success('成功', $return);
    }
}