<?php
// +----------------------------------------------------------------------
// | ThinkCMF [ WE CAN DO IT MORE SIMPLE ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013-2018 http://www.thinkcmf.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: Powerless < wzxaini9@gmail.com>
// +----------------------------------------------------------------------
namespace app\user\controller;

use cmf\controller\AdminBaseController;
use think\Db;
use think\Loader;
use think\Request;

class AdminOauthController extends AdminBaseController
{

    /**
     * 后台第三方用户列表
     * @adminMenu(
     *     'name'   => '第三方用户',
     *     'parent' => 'user/AdminIndex/default1',
     *     'display'=> true,
     *     'hasView'=> true,
     *     'order'  => 10000,
     *     'icon'   => '',
     *     'remark' => '第三方用户',
     *     'param'  => ''
     * )
     */
    public function index()
    {

        $oauthUserQuery = Db::name('third_party_user');

        $lists = $oauthUserQuery->field('a.*,u.user_nickname,u.sex,u.avatar')->alias('a')->join('__USER__ u', 'a.user_id = u.id')->where("status", 1)->order("create_time DESC")->paginate(10);
        // 获取分页显示
        $page = $lists->render();
        $this->assign('lists', $lists);
        $this->assign('page', $page);
        // 渲染模板输出
        return $this->fetch();
    }
//    用户列表
    public function user()
    {
//        用户
        $where_member['type'] = 1;
        $data = $this->request->param();
        if($data){
            $startTime = empty($data['start_time']) ? 0 : strtotime($data['start_time']);
            $endTime   = empty($data['end_time']) ? 0 : strtotime($data['end_time']);
            if ($startTime && $endTime) {
                $where_member['create_time'] = array('between',"$startTime,$endTime");
                $this->assign('start_time', $data['start_time']);
                $this->assign('end_time', $data['end_time']);
            }else{
                if($startTime){
                    $where_member['create_time'] = array('egt',$startTime);
                    $this->assign('start_time', $data['start_time']);
                }
                if($endTime){
                    $where_member['create_time'] = array('elt',$endTime);
                    $this->assign('end_time', $data['end_time']);
                }
            }

            if(!empty($data['name'])){
                $where_member['name'] = array('like','%'.$data['name'].'%');
                $this->assign('name', $data['name']);
            }
            if(!empty($data['tel'])){
                $where_member['tel'] = array('like','%'.$data['tel'].'%');
                $this->assign('tel', $data['tel']);
            }
        }
        $lists = Db::name('Member')->where($where_member)->order('status')->select()->toArray();
        foreach ($lists as $lk=>$lv){
           $where_referee['id'] = $lv['referee_id'];
           $referee =  Db::name('Member')->where($where_referee)->field('id,name')->find();
           if($referee){
               $lists[$lk]['referee_name'] = $referee['name'];
           }else{
               $lists[$lk]['referee_name'] = '';
           }
        }
        // 获取分页显示
//        $page = $lists->render();
        $this->assign('lists', $lists);
//        $this->assign('page', $page);
        // 渲染模板输出
        return $this->fetch();
    }

//    用户详细信息
    public function userDetail(){
        $data = $this->request->param();
        if(empty($data['id'])){
            $this->error("用户id不能为空");
        }else{
            $where_member['id'] = $data['id'];
            $member = Db::name('Member')->where($where_member)->find();
            $this->assign('list',$member);
            return $this->fetch();
        }
    }

//    修改用户信息
    public function changeUser(){
        $data = $this->request->param();
        if($data){
            //            验证
            $validate = Loader::validate('Member');
            if (!$validate->scene('change')->check($data)) {
//                return json(array('code' => 0, 'msg' => $validate->getError()));
                $this->error($validate->getError());
            }
//            更新数据
            $where_update['id'] = $data['id'];
            $save = $data;
            $save['login_time'] = strtotime($save['login_time']);
            $save['last_login_time'] = strtotime($save['last_login_time']);
            $save['create_time'] = strtotime($save['create_time']);
            $member_change = Db::name('Member')->where($where_update)->update($save);
            if($member_change){
                $this->success('修改成功',url('user'));
            }else{
                $this->error('修改失败');
            }
        }
    }

    //    支出明细
    public function money()
    {
//        用户
        $data = $this->request->param();
        if(!empty($data['start_time'])){
            $start = strtotime($data['start_time']);
            if(!empty($data['end_time'])){
                $end = strtotime($data['end_time']);
            }else{
                $end = time();
            }
            $where_money['update_time'] = array('between',"$start,$end");
            $this->assign('start_time',date('Y-m-d H:i',$start));
            $this->assign('end_time',date('Y-m-d H:i',$end));
        }
        if(!empty($data['title'])){
            $where_money['title'] = array('like',"%".$data['title']."%");
            $this->assign('title',$data['title']);
        }
        if(!empty($data['money'])){
            $where_money['money'] = $data['money'];
            $this->assign('money',$data['money']);
        }
        $where_member['id'] = $data['id'];
        $member = Db::name('Member')->where($where_member)->field('id,name,tel')->find();
        $this->assign('user',$member);
        if($member){
//            $final['user'] = $member;
            $where_money['user_id'] = $member['id'];
            $where_money['user_type'] = 1;
            $where_money['type'] = 2;
            $where_money['status'] = 1;
            $money =  Db::name('MoneyDetail')->where($where_money)->select()->toArray();
            $this->assign('lists',$money);
        }else{
            $this->error('用户信息错误');
        }
        $this->assign('uid',$data['id']);
        return $this->fetch();
    }

    //    收入明细
    public function inmoney()
    {
//        用户
        $data = $this->request->param();
        if(!empty($data['start_time'])){
            $start = strtotime($data['start_time']);
            if(!empty($data['end_time'])){
                $end = strtotime($data['end_time']);
            }else{
                $end = time();
            }
            $where_money['update_time'] = array('between',"$start,$end");
            $this->assign('start_time',date('Y-m-d H:i',$start));
            $this->assign('end_time',date('Y-m-d H:i',$end));
        }
        if(!empty($data['title'])){
            $where_money['title'] = array('like',"%".$data['title']."%");
            $this->assign('title',$data['title']);
        }
        if(!empty($data['money'])){
            $where_money['money'] = $data['money'];
            $this->assign('money',$data['money']);
        }
        $where_member['id'] = $data['id'];
        $member = Db::name('Member')->where($where_member)->field('id,name,tel')->find();
        $this->assign('user',$member);
        if($member){
//            $final['user'] = $member;
            $where_money['user_id'] = $member['id'];
            $where_money['user_type'] = 1;
            $where_money['type'] = 1;
            $where_money['status'] = 1;
            $money =  Db::name('MoneyDetail')->where($where_money)->select()->toArray();
            $this->assign('lists',$money);
        }else{
            $this->error('用户信息错误');
        }
        $this->assign('uid',$data['id']);
        return $this->fetch();
    }

//    收支明细删除
    public function moneyDel(){
        $data = $this->request->param();
        $where_money['id'] = $data['id'];
        $where_money['status'] = 1;
        $money = Db::name('MoneyDetail')->where($where_money)->find();
        if($money){
            $save['status'] = 9;
            $update = Db::name('MoneyDetail')->where($where_money)->update($save);
            if($update){
                $this->success('删除成功');
            }else{
                $this->error('删除失败');
            }
        }else{
            $this->error('明细信息错误');
        }
    }

//    查询订单
    public function findOrder(){
        $data = $this->request->param();
        $where_order['id'] = $data['order_id'];
        $order = Db::name('Order')->where($where_order)->find();
        if(!$order) {
            $this->error('订单错误');
        }
        $this->assign('list',$order);
        return $this->fetch('order');
    }

//    邀请人
    public function referee(){
        $data = $this->request->param();
        if($data){
            $startTime = empty($data['start_time']) ? 0 : strtotime($data['start_time']);
            $endTime   = empty($data['end_time']) ? 0 : strtotime($data['end_time']);
            if ($startTime && $endTime) {
                $where_referee['create_time'] = array('between',"$startTime,$endTime");
                $this->assign('start_time', $data['start_time']);
                $this->assign('end_time', $data['end_time']);
            }else{
                if($startTime){
                    $where_referee['create_time'] = array('egt',$startTime);
                    $this->assign('start_time', $data['start_time']);
                }
                if($endTime){
                    $where_referee['create_time'] = array('elt',$endTime);
                    $this->assign('end_time', $data['end_time']);
                }
            }

            if(!empty($data['name'])){
                $where_referee['name'] = array('like','%'.$data['name'].'%');
                $this->assign('name', $data['name']);
            }
            if(!empty($data['tel'])){
                $where_referee['tel'] = array('like','%'.$data['tel'].'%');
                $this->assign('tel', $data['tel']);
            }
        }
        $where_member['id'] = $data['id'];
        $member = Db::name('Member')->where($where_member)->field('id,name,tel')->find();
        $this->assign('user',$member);
        $this->assign('uid',$member['id']);
        $where_referee['referee_id'] = $data['id'];
        $member = Db::name('Member')->where($where_referee)->select()->toArray();
        $this->assign('lists',$member);
        return $this->fetch();
    }

//    提现申请
    public function getMoneyDetail(){
        $data = $this->request->param();
        if($data){
            $startTime = empty($data['start_time']) ? 0 : strtotime($data['start_time']);
            $endTime   = empty($data['end_time']) ? 0 : strtotime($data['end_time']);
            if ($startTime && $endTime) {
                $where_money['create_time'] = array('between',"$startTime,$endTime");
                $this->assign('start_time', $data['start_time']);
                $this->assign('end_time', $data['end_time']);
            }else{
                if($startTime){
                    $where_money['create_time'] = array('egt',$startTime);
                    $this->assign('start_time', $data['start_time']);
                }
                if($endTime){
                    $where_money['create_time'] = array('elt',$endTime);
                    $this->assign('end_time', $data['end_time']);
                }
            }
        }
        $where_money['user_id'] = $data['id'];
        $where_money['order_type'] = 6;
        $where_money['type'] = 3;
        $where_money['status'] = array('neq',9);
        $money_list = Db::name('MoneyDetail')->where($where_money)->select();
        $this->assign('uid',$data['id']);
        $this->assign('lists',$money_list);
        return $this->fetch('getdetail');
    }



//    同意提现
    public function agree(){

    }




//    提现
    public function getmoney(){
        $data = $this->request->param();
        $where_member['id'] = $data['id'];
        $member = Db::name('Member')->where($where_member)->field('id,name,tel')->find();
        if($member){
            $where_money['user_id'] = $member['id'];
            $where_money['user_type'] = 1;
            $where_money['order_type'] = 6;
            $detail = Db::name('MoneyDetail')->where($where_money)->select()->toArray();
            $this->assign('lists',$detail);
        }else{
            $this->error('用户信息获取失败');
        }
    }





//        中介
    public function intermediary()
    {
//        中介
        $data = $this->request->param();
        if($data){
            $startTime = empty($data['start_time']) ? 0 : strtotime($data['start_time']);
            $endTime   = empty($data['end_time']) ? 0 : strtotime($data['end_time']);
            if ($startTime && $endTime) {
                $where_member['create_time'] = array('between',"$startTime,$endTime");
                $this->assign('start_time', $data['start_time']);
                $this->assign('end_time', $data['end_time']);
            }else{
                if($startTime){
                    $where_member['create_time'] = array('egt',$startTime);
                    $this->assign('start_time', $data['start_time']);
                }
                if($endTime){
                    $where_member['create_time'] = array('elt',$endTime);
                    $this->assign('end_time', $data['end_time']);
                }
            }

            if(!empty($data['name'])){
                $where_member['name'] = array('like','%'.$data['name'].'%');
                $this->assign('name', $data['name']);
            }
            if(!empty($data['tel'])){
                $where_member['tel'] = array('like','%'.$data['tel'].'%');
                $this->assign('tel', $data['tel']);
            }
        }
        $where_member['type'] = 2;
        $lists = Db::name('Member')->where($where_member)->select()->toArray();
        foreach ($lists as $lk=>$lv){
            $where_referee['id'] = $lv['referee_id'];
            $referee =  Db::name('Member')->where($where_referee)->field('id,name')->find();
            if($referee){
                $lists[$lk]['referee_name'] = $referee['name'];
            }else{
                $lists[$lk]['referee_name'] = '';
            }
        }
        // 获取分页显示
//        $page = $lists->render();
        $this->assign('lists', $lists);
//        $this->assign('page', $page);
        // 渲染模板输出
        return $this->fetch();
    }
    /**
     * 后台删除第三方用户绑定
     * @adminMenu(
     *     'name'   => '删除第三方用户绑定',
     *     'parent' => 'index',
     *     'display'=> false,
     *     'hasView'=> false,
     *     'order'  => 10000,
     *     'icon'   => '',
     *     'remark' => '删除第三方用户绑定',
     *     'param'  => ''
     * )
     */
    public function delete()
    {
        $id = input('param.id', 0, 'intval');
        if (empty($id)) {
            $this->error('非法数据!');
        }
        Db::name("third_party_user")->where("id", $id)->delete();
        $this->success("删除成功!", "admin_oauth/index");
    }
//    加入黑名单
    public function del(Request $request)
    {
        $where_member['id'] = $request->param('id');
        $is_isset = Db::name('Member')->where($where_member)->field('status')->find();
        if(!$is_isset){
            $this->error('用户信息错误!');
        }
        $save['status'] = 8;
        $save['update_time'] = time();
        $update = Db::name('Member')->where($where_member)->update($save);
        if($update){
            $this->success("删除成功!", "admin_oauth/intermediary");
        }else{
            $this->error('删除失败!');
        }
    }


//    黑名单列表
    public function black(Request $request)
    {
        $where_member['status'] = 8;
        $data = $request->param();
        if($data){
            $startTime = empty($data['start_time']) ? 0 : strtotime($data['start_time']);
            $endTime   = empty($data['end_time']) ? 0 : strtotime($data['end_time']);
            if ($startTime && $endTime) {
                $where_member['create_time'] = array('between',"$startTime,$endTime");
                $this->assign('start_time', $data['start_time']);
                $this->assign('end_time', $data['end_time']);
            }else{
                if($startTime){
                    $where_member['create_time'] = array('egt',$startTime);
                    $this->assign('start_time', $data['start_time']);
                }
                if($endTime){
                    $where_member['create_time'] = array('elt',$endTime);
                    $this->assign('end_time', $data['end_time']);
                }
            }

            if(!empty($data['name'])){
                $where_member['name'] = array('like','%'.$data['name'].'%');
                $this->assign('name', $data['name']);
            }
            if(!empty($data['tel'])){
                $where_member['tel'] = array('like','%'.$data['tel'].'%');
                $this->assign('tel', $data['tel']);
            }
        }
        $is_isset = Db::name('Member')->where($where_member)->select()->toArray();
        if(!$is_isset){
            $is_isset = array();
        }else{
            foreach ($is_isset as $lk=>$lv){
                $where_referee['id'] = $lv['referee_id'];
                $referee =  Db::name('Member')->where($where_referee)->field('id,name')->find();
                if($referee){
                    $is_isset[$lk]['referee_name'] = $referee['name'];
                }else{
                    $is_isset[$lk]['referee_name'] = '';
                }
            }
        }
        $this->assign('lists', $is_isset);
        return $this->fetch();
    }

//    恢复黑名单
    public function recovery(Request $request)
    {
        $where_member['id'] = $request->param('id');
        $where_member['status'] = 8;
        $is_isset = Db::name('Member')->where($where_member)->field('status')->find();
        if(!$is_isset){
            $this->error('用户信息错误!');
        }
        $save['status'] = 1;
        $save['update_time'] = time();
        $update = Db::name('Member')->where($where_member)->update($save);
        if($update){
            $this->success("恢复成功!", "admin_oauth/black");
        }else{
            $this->error('恢复失败!');
        }
    }
}