🔓 Ultimate Webshell - Penetration Testing Tool

📖 File Reader

<?php
namespace app\api\controller;
use app\api\common\Common_config;
use app\api\model\ModRegion;
use app\api\model\ModShoppingCart;
use app\BaseController;
use app\common\Common_map;
use app\common\Common_note;
use app\common\Common_qrcode;
use app\common\Common_time;
use app\common\Common_api;
use app\api\common\Common_user;
use app\common\Common_wechat;
use think\facade\Db;
use think\facade\View;

class User extends Base
{
    /**
     * 会员信息
     */
    public function user_info()
    {
        $time = time();
        $user_info = Common_user::user_info($this->user_miyao);
        $user_info["region_name"] = $user_info["region_id"] == 0?'请选择':db::name("region")->where("id = $user_info[region_id]")->value("name");//所属地区
        $rank_name = db::name("user_rank")->where("rank_id = $user_info[rank_id]")->value("name");
        $user_info["rank_name"] = $rank_name != ''?$rank_name:'游客';
        $user_info["add_time"] = date("Y-m-d H:i", $user_info["add_time"]);
        $address_id = db::name("user_address")->where("user_id = $this->user_id and is_checked = 1")->value("address_id");
        $user_info["address_id"] = $address_id != ''?$address_id:0;
        $user_info["is_celebrate"] = Common_user::user_birthday($user_info["identity"]);
        $user_info["mobile_encryption"] = $user_info["mobile"] != ''?Common_user::encryptPhoneNumber($user_info["mobile"]):'';//加密手机号
        //会员其它信息
        $user_info_detail = db::name("user_detail")->where("user_id = $this->user_id")->find();
        if (empty($user_info_detail)){
            $info["user_id"] = $this->user_id;
            db::name("user_detail")->insertGetId($info);
            $user_info_detail = db::name("user_detail")->where("user_id = $this->user_id")->find();
        }
        $user_info_detail["motorcycle_expire_time"] = $user_info_detail["motorcycle_expire_time"] != 0?date("Y-m-d",$user_info_detail["motorcycle_expire_time"]):'';
        //优惠卷数量
        $card_count = db::name("user_activity_preferential_card")->where("user_id = $this->user_id and is_employ = 0 and time_past_due >= $time")->count();
        /*订单数量查询*/
        $count_daifukuan = db::name("order")->where("state = 0 and user_id = $this->user_id")->count();
        $count_daifahuo = db::name("order")->where("state = 1 and user_id = $this->user_id")->count();
        $count_daishouhuo = db::name("order")->where("state = 2 and user_id = $this->user_id")->count();
        $count_yiwancheng = db::name("order")->where("state = 3 and user_id = $this->user_id")->count();
        $count_yiquxiao = db::name("order")->where("state = 4 and user_id = $this->user_id")->count();
        $count_quanbu = db::name("order")->where("user_id = $this->user_id")->count();
        $data = [
            'user_info' => $user_info,
            'user_info_detail' => $user_info_detail,
            'card_count'=>$card_count,
            'count_daifukuan'=>$count_daifukuan,
            'count_daifahuo'=>$count_daifahuo,
            'count_daishouhuo'=>$count_daishouhuo,
            'count_yiwancheng'=>$count_yiwancheng,
            'count_yiquxiao'=>$count_yiquxiao,
            'count_quanbu'=>$count_quanbu,
        ];
        return $this->succeed_json("查询成功", $data);
    }

    /*会员级别*/
    public function user_rank()
    {
        $list = db::name("user_rank")->order("rank_id asc")->select()->toArray();
        $data = [
            'list'=>$list,
        ];
        return $this->succeed_json("ok",$data);
    }

    /**
     * 地区联动(多维数组)
     */
    public function region_dw()
    {
        $list = ModRegion::region_dw();
        return $this->succeed_json("ok", $list);
    }

    /*地区联动*/
    public function region_d()
    {
        $region_id = input("param.region_id");
        $list = ModRegion::region_d($region_id);
        $data = [
            'list'=>$list,
        ];
        return $this->succeed_json("ok", $data);
    }

    /*地区联动(英文)*/
    public function region_america()
    {
        $superior_id = input("param.superior_id");
        $where = 1;
        if (empty($superior_id)) {
            $where .= " and superior_id = 0";
        } else {
            $where .= " and superior_id = $superior_id";
        }
        $list = db::name("region_america")->where($where)->order("sort desc")->select();
        $data = [
            'list' => $list,
        ];
        return $this->succeed_json("ok", $data);
    }

    /*所有城市*/
    public function all_city()
    {
        $keyword = input("param.keyword");
        $data = ["A", "B", "C", "D", "E", "F", "G","H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R","S", "T", "U", "V", "W", "X", "Y", "Z"];
        $where = 1;
        if (!empty($keyword)) {
            $where .= " and (name like '%".$keyword."%' or pinyin like '%".$keyword."%')";
        }
        $region_list = db::name("region")->where("level = 2 and $where")->field("id,first,shortname,name,pinyin,first")->order("first asc")->select()->toArray();
        $list = [];
        foreach ($data as $k => $v){
            $data_city = [];
            foreach ($region_list as $k2 => $v2){
                if ($v == $v2["first"]){
                    $data_city[] = $v2;
                }
            }
            $list[$k] = ['name'=>$v,'value'=>$data_city,'value_count'=>count($data_city)];
        }
        $data = [
            'list'=>$list,
        ];
        return $this->succeed_json("ok", $data);
    }

    /*城市选中处理*/
    public function city_checked()
    {
        $id = input("param.id");
        db::name("user")->where("user_id = $this->user_id")->update(['region_id'=>$id]);
        return $this->succeed_json("操作成功");
    }

    /**
     * 会员地址
     */
    public function address_list()
    {
        $user_miyao = $this->user_miyao;
        $user_info = Common_user::user_info($user_miyao);
        $list = db::name("user_address")->alias("a")
            ->join("region b", "a.province = b.id", "LEFT")
            ->join("region c", "a.city = c.id", "LEFT")
            ->join("region d", "a.district = d.id", "LEFT")
            ->field("a.*, b.name as province_name, c.name as city_name, d.name as district_name")
            ->where("a.user_id = $user_info[user_id]")
            ->order("a.address_id desc")
            ->page($this->page,$this->limit)
            ->select()
            ->toArray();
        //获取总页数
        $count = db::name("user_address")->alias("a")
            ->join("region b", "a.province = b.id", "LEFT")
            ->join("region c", "a.city = c.id", "LEFT")
            ->join("region d", "a.district = d.id", "LEFT")
            ->field("a.*, b.name as province_name, c.name as city_name, d.name as district_name")
            ->where("a.user_id = $user_info[user_id]")
            ->count();
        $pages = $this->vue_pages($count,$this->limit);
        $date = [
            'list'=>$list,
            'pages'=>$pages,
        ];
        return $this->succeed_json("ok", $date);
    }

    /*会员地址设为默认处理*/
    public function address_default()
    {
        $address_id = input("param.address_id");
        $info["is_checked"] = 0;
        db::name("user_address")->where("user_id = $this->user_id")->data($info)->update();
        $info2["is_checked"] = 1;
        db::name("user_address")->where("address_id = $address_id")->data($info2)->update();
        return $this->succeed_json("设置成功");
    }

    /**
     * 会员地址创建
     */
    public function address_add()
    {
        $user_miyao = $this->user_miyao;
        $user_info = Common_user::user_info($user_miyao);
        $info = [
            'user_id' => $user_info["user_id"],
            'name' => input("param.name"),
            'phone' => input("param.phone"),
            'province' => input("param.province"),
            'city' => input("param.city"),
            'district' => input("param.district"),
            'address' => input("param.address"),
            'add_time' => time(),
        ];
        if (input("param.is_checked") == 1) {
            //选中处理
            $info2["is_checked"] = 0;
            db::name("user_address")->where("user_id = $user_info[user_id]")->data($info2)->update();
            $info["is_checked"] = 1;
        }
        db::name("user_address")->insertGetId($info);
        return $this->succeed_json("创建成功");
    }

    /**
     * 会员地址查询
     */
    public function address_info()
    {
        $address_id = input("param.address_id");
        $user_miyao = $this->user_miyao;
        $user_info = Common_user::user_info($user_miyao);
        $user_address_info = db::name("user_address")->alias("a")
            ->join("region b", "a.province = b.id", "LEFT")
            ->join("region c", "a.city = c.id", "LEFT")
            ->join("region d", "a.district = d.id", "LEFT")
            ->field("a.*,b.name as province_name,c.name as city_name,d.name as district_name")
            ->where("a.address_id = $address_id")
            ->find();
        $data["user_address_info"] = $user_address_info;
        return $this->succeed_json("ok", $data);
    }

    /**
     * 会员地址修改
     */
    public function address_edit()
    {
        $address_id = input("param.address_id");
        $user_miyao = $this->user_miyao;
        $user_info = Common_user::user_info($user_miyao);
        $info = [
            'user_id' => $user_info["user_id"],
            'name' => input("param.name"),
            'phone' => input("param.phone"),
            'province' => input("param.province"),
            'city' => input("param.city"),
            'district' => input("param.district"),
            'address' => input("param.address"),
            'add_time' => time(),
        ];
        if (input("param.is_checked") == 1) {
            //选中处理
            $info2["is_checked"] = 0;
            db::name("user_address")->where("user_id = $user_info[user_id]")->data($info2)->update();
            $info["is_checked"] = 1;
        }
        db::name("user_address")->where("address_id = $address_id")->data($info)->update();
        return $this->succeed_json("修改成功");
    }

    /*会员地址删除*/
    public function address_del()
    {
        $address_id = input("param.address_id");
        $address_info = db::name("user_address")->where("address_id = $address_id")->find();
        if ($address_info["is_checked"] == 1) {
            //更改下一个为默认地址
            $info["is_checked"] = 1;
            $address_edit_id = db::name("user_address")->where("user_id = $this->user_id and address_id != $address_id")->order("address_id asc")->value("address_id");
            if (!empty($address_edit_id)) {
                db::name("user_address")->where("address_id = $address_edit_id")->data($info)->update();
            }
        }
        db::name("user_address")->where("address_id = $address_id")->delete();
        return $this->succeed_json("删除成功");
    }

    /*根据微信小程序收货地址查系统地址*/
    public function wx_address_check()
    {
        $name_province = input("param.name_province");
        $name_city = input("param.name_city");
        $name_district = input("param.name_district");
        if (empty($name_province)){
            return $this->error_json("请上传省名称");
        }
        if (empty($name_city)){
            return $this->error_json("请上传市名称");
        }
        if (empty($name_district)){
            return $this->error_json("请上传区名称");
        }
        $region_list = db::name("region")->where("shortname in ('$name_province','$name_city','$name_district') or name in ('$name_province','$name_city','$name_district')")->field("id,shortname,name,level")->select()->toArray();
        $province_id = 0;//省id
        $city_id = 0;//市id
        $district_id = 0;//区id
        foreach ($region_list as $v){
            if ($name_province == $v["shortname"] || $name_province == $v["name"]){$province_id = $v["id"];}
            if ($name_city == $v["shortname"] || $name_city == $v["name"]){$city_id = $v["id"];}
            if ($name_district == $v["shortname"] || $name_district == $v["name"]){$district_id = $v["id"];}
        }
        $data = [
            'name_province'=>$name_province,
            'province_id'=>$province_id,
            'name_city'=>$name_city,
            'city_id'=>$city_id,
            'name_district'=>$name_district,
            'district_id'=>$district_id,
        ];
        return $this->error_json("ok",$data);
    }

    /*微信小程序完善信息*/
    public function wx_user_update()
    {
        if (!empty($_FILES["imageData"])){
            $url = 'https://'.$_SERVER['SERVER_NAME'].'/public/uploads/'.$this->upload('imageData');
            $info["head"] = $url;
        }
        $info["nickname"] = input("param.nickname");
        $info["mobile"] = input("param.mobile");
        db::name("user")->where("user_id = $this->user_id")->data($info)->update();
        return $this->succeed_json("操作成功");
    }

    /**
     * 实名认证
     */
    public function user_upload()
    {
        $code = input("param.code");
        $mobile = input("param.mobile");
//        if (empty(input("param.identity_z"))) {
//            return $this->error_json("请选择身份证正面");
//        }
//        if (empty(input("param.identity_f"))) {
//            return $this->error_json("请选择身份证反面");
//        }
//        if (empty(input("param.name"))) {
//            return $this->error_json("请输入姓名");
//        }
//        if (empty($mobile)) {
//            return $this->error_json("请输入手机号");
//        }
//        if (empty($code)) {
//            return $this->error_json("请输入验证码");
//        }
        /*实名认证检测*/
//        $certification = Common_api::certification(input("param.name"), input("param.identity"));
//        if ($certification["code"] != 200) {
//            return $this->error_json($certification["msg"]);
//        }
        $user_info = Common_user::user_info($this->user_miyao);
        //验证码验证
//        $verify = Common_note::verify($mobile, $code);
//        if ($verify["code"] == 400) {
//            return $this->error_json($verify["msg"]);
//        }
        if (!empty(input("param.head"))){
            $info["head"] = input("param.head");
        }
        if (!empty(input("param.nickname"))){
            $info["nickname"] = input("param.nickname");
        }
        if (!empty(input("param.name"))){
            $info["name"] = input("param.name");
        }
        if (!empty(input("param.mobile"))){
            $info["mobile"] = input("param.mobile");
        }
        db::name("user")->where("user_id = $user_info[user_id]")->data($info)->update();
        return $this->succeed_json("操作成功");
    }

    /*身份证识别*/
    public function identity_recognition()
    {
        $img_url = input("param.img_url");
        if (empty($img_url)) {
            return $this->error_json("请上传证件地址");
        }
        $identity_recognition = Common_api::identity_recognition($img_url);
        if ($identity_recognition["code"] != 200) {
            return $this->error_json($identity_recognition["msg"]);
        }
        $data = [
            'name' => $identity_recognition["rbody"]["name"],
            'num' => $identity_recognition["rbody"]["num"],
        ];
        return $this->succeed_json("ok", $data);
    }

    /*会员基本信息修改*/
    public function user_basic_upload()
    {
        $info = [
            'nickname' => input("param.nickname"),
            'name' => input("param.name"),
            'mobile' => input("param.mobile"),
            'identity'=>input("param.identity"),
        ];
        $info2 = [
            'motorcycle_type'=>input("param.motorcycle_type"),
            'plate_number'=>input("param.plate_number"),
            'motorcycle_expire_time'=>strtotime(input("param.motorcycle_expire_time")),
        ];
        db::name("user")->where("user_id = $this->user_id")->data($info)->update();
        //db::name("user_detail")->where("user_id = $this->user_id")->data($info2)->update();
        return $this->succeed_json("操作成功");
    }

    /*手机号检测*/
    public function mobile_verify()
    {
        $verify = Common_note::verify(input("param.mobile"), input("param.code"));
        if ($verify["code"] != 200) {
            return $this->error_json($verify["msg"]);
        } else {
            return $this->succeed_json($verify["msg"]);
        }
    }

    /*手机号修改*/
    public function mobile_upload()
    {
        $mobile = input("param.mobile");
        $verify = Common_note::verify(input("param.mobile"), input("param.code"));
        if ($verify["code"] != 200) {
            return $this->error_json($verify["msg"]);
        }
        $user_info = db::name("user")->where("mobile = '$mobile' and user_id != $this->user_id")->find();
        if (!empty($user_info)){
            return $this->error_json("该手机号已存在!");
        }
        $info = [
            'mobile' => input("param.mobile"),
        ];
        db::name("user")->where("user_id = $this->user_id")->data($info)->update();
        return $this->succeed_json("修改成功");
    }

    /*密码修改*/
    public function password_edit()
    {
        $user_info = $this->user_info;
        if (empty($user_info["mobile"])) {
            return $this->error_json("请先完成实名认证", 301);
        }
        $mobile = $user_info["mobile"];
        $code = input("param.code");
        if (empty(input("param.password"))) {
            return $this->error_json("请输入密码");
        }
        if (input("param.password2") != input("param.password")) {
            return $this->error_json("两次密码不一致");
        }
        if (empty(input("param.code"))) {
            return $this->error_json("请输入验证码");
        }
        //验证码验证
        $verify = Common_note::verify($mobile, $code);
        if ($verify["code"] == 400) {
            return $this->error_json($verify["msg"]);
        }
        $info["password"] = md5(input("param.password"));
        db::name("user")->where("user_id = $this->user_id")->data($info)->update();
        return $this->succeed_json("操作成功");
    }

    /*支付密码修改*/
    public function pay_passord_upload()
    {
        $password = input("param.password");
        $mobile = input("param.mobile");
        if (empty($password)) {
            return $this->error_json("请输入密码");
        }
        if ($password != input("param.password2")) {
            return $this->error_json("两次密码不一致");
        }
        if (empty($mobile)) {
            return $this->error_json("请输入手机号");
        }
        /*短信验证*/
        $verify = Common_note::verify($mobile, input("param.code"));
        if ($verify["code"] != 200) {
            return $this->error_json($verify["msg"]);
        }
        $info = [
            'pay_password' => md5(input("password")),
        ];
        db::name("user")->where("user_id = $this->user_id")->data($info)->update();
        return $this->succeed_json("设置成功");
    }

    /*头像上传*/
    public function head_upload()
    {
        if (empty(input("param.head"))) {
            return $this->error_json("请上传头像");
        }
        $info["head"] = $_POST["head"];
        db::name("user")->where("user_id = $this->user_id")->data($info)->update();
        return $this->succeed_json("上传成功");
    }

    /*平台充值信息*/
    public function platform_chongzhi()
    {
        $config = Common_config::config("'platform_bank','platform_bank_card','is_platform_bank','platform_weixin','is_platform_weixin','platform_zhifubao','is_platform_zhifubao'");
        if ($config["is_platform_bank"] != 1){
            $config["platform_bank"] = '';
            $config["platform_bank_card"] = '';
        }
        if ($config["is_platform_weixin"] != 1){
            $config["platform_weixin"] = '';
        }
        if ($config["is_platform_zhifubao"] != 1){
            $config["platform_zhifubao"] = '';
        }
        $data = [
            'platform_bank'=>$config["platform_bank"],
            'platform_bank_card'=>$config["platform_bank_card"],
            'platform_weixin'=>$config["platform_weixin"],
            'platform_zhifubao'=>$config["platform_zhifubao"],
        ];
        return $this->succeed_json("ok", $data);
    }

    /*充值*/
    public function chongzhi()
    {
        if (empty(input("param.money"))){
            return $this->error_json("请如实填写充值金额");
        }
        if (empty(input("param.img_evidence"))) {
            return $this->error_json("请上传充值凭证图");
        }
        $order_sn = $this->user_id . Common_user::suijishu(20, 1);
        $info = [
            'order_sn' => $order_sn,
            'user_id' => $this->user_id,
            'money'=>input("param.money"),
            'img_evidence'=>input("param.img_evidence"),
            'type' => 0,
            'state' => 0,
            'add_time' => time(),
        ];
        db::name("money_request")->insertGetId($info);
        return $this->succeed_json("提交成功,请等待审核~");
    }

    /**
     * 提现出来
     */
    public function tixian()
    {
        $money = input("param.money");
        if (empty(input("param.bank"))) {
            return $this->error_json("请输入开户行名称");
        }
        if (empty(input("param.bank_card"))) {
            return $this->error_json("请输入开户行卡号");
        }
        if (!preg_match("/^[1-9][0-9]*$/" ,$money)){
            return $this->error_json("提现金额错误,不可输入小数");
        }
        /*支付密码验证*/
//        $pay_password_verify = Common_user::pay_password_verify($this->user_miyao, input("param.pay_password"));
//        if ($pay_password_verify["code"] != 200) {
//            return $this->error_json($pay_password_verify["msg"]);
//        }
        $order_sn = $this->user_id . Common_user::suijishu(20, 1);
        $this->record_log("提现", 9, $this->user_id, '-' . $money, 0);
        $info = [
            'order_sn' => $order_sn,
            'user_id' => $this->user_id,
            'bank' => input("param.bank"),
            'bank_card' => input("param.bank_card"),
            'type' => 1,
            'state' => 0,
            'money' => $money,
            'add_time' => time(),
        ];
        db::name("money_request")->insertGetId($info);
        return $this->succeed_json("提交成功,请等待审核~");
    }

    /*会员充值、提现记录*/
    public function money_request()
    {
        $type = input("param.type");
        $list = db::name("money_request")->where("user_id = $this->user_id and type = $type")->order("id desc")->page($this->page,$this->limit)->select();
        $list = json_decode($list,true);
        foreach ($list as $k => $v){
            $list[$k]["add_time"] = date("Y-m-d H:i",$v["add_time"]);
            $list[$k]["audit_time"] = $v["audit_time"] > 0?date("Y-m-d H:i",$v["add_time"]):'';
        }
        /*获取最大页数*/
        $count = db::name("money_request")->where("user_id = $this->user_id and type = $type")->count();
        $pages = $this->vue_pages($count,$this->limit);
        $data = [
            'list'=>$list,
            'pages'=>$pages,
        ];
        return $this->succeed_json("ok",$data);
    }

    /*转账*/
    public function zhuanzhang()
    {
        $mobile = input("param.mobile");//目标人手机号
        $type = input("param.type");//转账类型:1余额 2积分
        $money = input("param.money");
        if (empty($mobile)){
            return $this->error_json("请输入目标人手机号");
        }
        if (empty($money)){
            return $this->error_json("请输入转账金额");
        }
        $user_mubiao = db::name("user")->where("mobile = '$mobile'")->find();
        if (empty($user_mubiao)){
            return $this->error_json("目标认不存在");
        }
        if ($type == 1) {
            $this->record_log("转出「目标人:" . $user_mubiao["mobile"] . "」", 11, $this->user_id, '-' .$money, 0, 0);
            $this->record_log("转入「操作人:" . $this->user_info["mobile"] . "」", 12, $user_mubiao["user_id"], $money, 0, 0);
        }else if($type == 2){
            $this->record_log("转出「目标人:" . $user_mubiao["mobile"] . "」", 11, $this->user_id,0, '-'.$money,0);
            $this->record_log("转入「操作人:" . $this->user_info["mobile"] . "」", 12, $user_mubiao["user_id"],0,$money,0);
        }
        return $this->succeed_json("操作成功");
    }

    /*会员钱包列表*/
    public function wallet_list()
    {
        $list = db::name("wallet")->where("user_id = $this->user_id")->order("wallet_id desc")->select();
        $list = json_decode($list, true);
        foreach ($list as $k => $v) {
            $list[$k]["add_time"] = date("Y-m-d H:i", $v["add_time"]);
        }
        $data = [
            'list' => $list,
        ];
        return $this->succeed_json("ok", $data);
    }

    /*银行卡创建*/
    public function wallet_add()
    {
        $code = input("param.code");
        $mobile = db::name("user")->where("user_id = $this->user_id")->value("mobile");
        if (empty($mobile)) {
            return $this->error_json("请先完成实名认证", 301);
        }
        $is_default = input("param.is_default");
        if (empty(input("param.name"))) {
            return $this->error_json("请输入持卡人");
        }
        if (empty(input("param.identity"))) {
            return $this->error_json("请输入持卡人身份证号");
        }
        if (empty(input("param.bank"))) {
            return $this->error_json("请输入开户行");
        }
        if (empty(input("param.bank_card"))) {
            return $this->error_json("请输入卡号");
        }
        if (input("param.is_default") == '') {
            return $this->error_json("请选择是否默认");
        }
        if (empty($code)) {
            return $this->error_json("请输入验证码");
        }
        /*银行卡检测*/
        $bank_card_detection = Common_api::bank_card_detection(input("param.bank_card"), input("param.identity"), input("param.name"));
        if ($bank_card_detection["code"] != 200) {
            return $this->error_json($bank_card_detection["msg"]);
        }
        $yanzheng = Common_note::verify($mobile, $code);
        if ($yanzheng["code"] != 200) {
            return $this->error_json($yanzheng["msg"]);
        }
        $info = [
            'user_id' => $this->user_id,
            'bank' => input("param.bank"),
            'name' => input("param.name"),
            'identity' => input("param.identity"),
            'bank_card' => input("param.bank_card"),
            'add_time' => time(),
        ];
        if (input("param.is_default") == 1) {
            $info["is_default"] = 1;
            $info2["is_default"] = 0;
            db::name("wallet")->where("user_id = $this->user_id")->data($info2)->update();
        }
        db::name("wallet")->insertGetId($info);
        return $this->succeed_json("创建成功");
    }

    /*银行卡查询*/
    public function wallet_info()
    {
        $wallet_id = input("param.wallet_id");
        $info = db::name("wallet")->where("wallet_id = $wallet_id")->find();
        $info["add_time"] = date("Y-m-d H:i", $info["add_time"]);
        $data = [
            'info' => $info,
        ];
        return $this->succeed_json("ok", $info);
    }

    /*银行卡编辑*/
    public function wallet_edit()
    {
        $wallet_id = input("param.wallet_id");
        $code = input("param.code");
        $mobile = db::name("user")->where("user_id = $this->user_id")->value("mobile");
        if (empty($mobile)) {
            return $this->error_json("请先完成实名认证", 301);
        }
        $is_default = input("param.is_default");
        if (empty(input("param.name"))) {
            return $this->error_json("请输入持卡人");
        }
        if (empty(input("param.identity"))) {
            return $this->error_json("请输入持卡人身份证号");
        }
        if (empty(input("param.bank"))) {
            return $this->error_json("请输入开户行");
        }
        if (empty(input("param.bank_card"))) {
            return $this->error_json("请输入卡号");
        }
        if (input("param.is_default") == '') {
            return $this->error_json("请选择是否默认");
        }
        if (empty($code)) {
            return $this->error_json("请输入验证码");
        }
        $yanzheng = Common_note::verify($mobile, $code);
        if ($yanzheng["code"] != 200) {
            return $this->error_json($yanzheng["msg"]);
        }
        $info = [
            'user_id' => $this->user_id,
            'bank' => input("param.bank"),
            'name' => input("param.name"),
            'identity' => input("param.identity"),
            'bank_card' => input("param.bank_card"),
            'add_time' => time(),
        ];
        if (input("param.is_default") == 1) {
            $info["is_default"] = 1;
            $info2["is_default"] = 0;
            db::name("wallet")->where("user_id = $this->user_id")->data($info2)->update();
        }
        db::name("wallet")->where("wallet_id = $wallet_id")->data($info)->update();
        return $this->succeed_json("修改成功");
    }

    /*银行卡删除*/
    public function wallet_del()
    {
        $wallet_id = input("param.wallet_id");
        db::name("wallet")->where("user_id = $this->user_id and wallet_id = $wallet_id")->delete();
        return $this->succeed_json("删除成功");
    }

    /*优惠卷信息*/
    public function preferential_card()
    {
        $type = input("param.type");//状态:1未领取 2已领取 3已使用 4未使用 5已过期(只计算未使用的)
        $time = time();
        $where = 1;
        $user_card = db::name("user_activity_preferential_card")->where("user_id = $this->user_id")->order("id desc")->field("id,card_id,card_name,is_employ,time_past_due")->select()->toArray();
        $user_card_id = '';//会员已领取优惠卷id
        $user_card_id_employ = '';//会员已使用优惠卷id
        $user_card_id_unused = '';//会员未使用优惠卷id
        $user_card_id_overdue = '';//会员过期优惠卷id
        foreach ($user_card as $v){
            $user_card_id .= $v["card_id"].',';
            if ($v["is_employ"] == 1){$user_card_id_employ .= $v["card_id"].',';}
            if ($v["is_employ"] == 0){$user_card_id_unused .= $v["card_id"].',';}
            if ($v["is_employ"] == 0 && $time >= $v["time_past_due"]){$user_card_id_overdue .= $v["card_id"].',';}
        }
        $user_card_id = $user_card_id != ''?substr($user_card_id,0,strlen($user_card_id)-1):0;
        $user_card_id_employ = $user_card_id_employ != ''?substr($user_card_id_employ,0,strlen($user_card_id_employ)-1):0;
        $user_card_id_unused = $user_card_id_unused != ''?substr($user_card_id_unused,0,strlen($user_card_id_unused)-1):0;
        $user_card_id_overdue = $user_card_id_overdue != ''?substr($user_card_id_overdue,0,strlen($user_card_id_overdue)-1):0;
        if ($type == 1){
            $where .= " and time_ks <= $time and time_js >= $time and id not in ($user_card_id)";
        }else if($type == 2){
            $where .= " and id in ($user_card_id)";
        }else if($type == 3){
            $where .= " and id in ($user_card_id_employ)";
        }else if($type == 4){
            $where .= " and id in ($user_card_id_unused)";
        }else if($type == 5){
            $where .= " and id in ($user_card_id_overdue)";
        }
        $list = db::name("activity_preferential_card")->where("num_surplus > 0 and is_show = 1 and $where")->order("id desc")->page($this->page,$this->limit)->select()->toArray();
        foreach ($list as $k => $v){
            $user_card = db::name("user_activity_preferential_card")->where("card_id = $v[id] and user_id = $this->user_id")->find();
            $is_employ = 0;
            $is_guoqi = 0;//是否过期:1是 0否
            if (!empty($user_card)){
                $is_employ = $user_card["is_employ"];
                if ($time >= $user_card["time_past_due"]){
                    $is_guoqi = 1;
                }
            }
            $list[$k]["is_employ"] = $is_employ;
            $list[$k]["is_guoqi"] = $is_guoqi;
            $list[$k]["time_past_due"] = date("Y-m-d H:i",$v["time_past_due"]);
            $list[$k]["time_ks"] = date("Y.m.d",$v["time_ks"]);
            $list[$k]["time_js"] = date("Y.m.d",$v["time_js"]);
            $list[$k]["time_add"] = date("Y-m-d H:i",$v["time_add"]);
        }
        /*获取总页数*/
        $count = db::name("activity_preferential_card")->where("num_surplus > 0 and is_show = 1 and $where")->count();
        $pages = $this->vue_pages($count,$this->limit);
        $data = [
            'list'=>$list,
            'pages'=>$pages,
        ];
        return $this->succeed_json('ok',$data);
    }

    /*优惠卷领取*/
    public function preferential_card_lingqu()
    {
        $id = input("param.id");
        if (empty($id)){
            return $this->error_json("参数错误");
        }
        $card_info = db::name("activity_preferential_card")->where("id = $id")->find();
        if (empty($card_info)){
            return $this->error_json("暂无优惠卷");
        }
        if ($card_info["num_surplus"] < 1){
            return $this->error_json("优惠卷已被抢光");
        }
        $user_card_count = db::name("user_activity_preferential_card")->where("user_id = $this->user_id and card_id = $card_info[id]")->count();
        if (!empty($user_card_count)){
            return $this->error_json("不可重复领取");
        }
        $info = [
            'user_id'=>$this->user_id,
            'card_id'=>$card_info["id"],
            'card_name'=>$card_info["title"],
            'price_yh'=>$card_info["price_yh"],
            'price_satisfy'=>$card_info["price_satisfy"],
            'time_past_due'=>$card_info["time_past_due"],
            'is_employ'=>0,
            'time_add'=>time(),
        ];
        db::name("user_activity_preferential_card")->insertGetId($info);
        $info2["num_surplus"]= $card_info["num_surplus"]-1;
        db::name("activity_preferential_card")->where("id = $id")->data($info2)->update();
        return $this->succeed_json("领取成功");
    }

    /*我的团队*/
    public function group_list()
    {
        $keyword = input("param.keyword");
        $where = 1;
        if (!empty($keyword)) {
            $where .= " and (a.name like '%" . $keyword . "%' or a.mobile = '$keyword')";
        }
        $list = db::name("user")->alias("a")
            ->join("user_rank b","a.rank_id = b.rank_id","LEFT")
            ->field("a.user_id,a.head,a.nickname,a.name,a.mobile,a.add_time,b.name as rank_name")
            ->where("a.superior_id = $this->user_id and " . $where)
            ->order("a.user_id desc")
            ->page($this->page,$this->limit)
            ->select()
            ->toarray();
        foreach ($list as $k => $v){
            $list[$k]["mobile_encryption"] = $v["mobile"] != ''?Common_user::encryptPhoneNumber($v["mobile"]):'';//加密手机号
            $list[$k]["add_time"] = date("Y-m-d H:i",$v["add_time"]);
        }
        /*总页数*/
        $count = db::name("user")->alias("a")
            ->join("user_rank b","a.rank_id = b.rank_id","LEFT")
            ->where("a.superior_id = $this->user_id and " . $where)
            ->count();
        $pages = $this->vue_pages($count,$this->limit);
        $data = [
            'list' => $list,
            'count' => $count,
            'pages'=>$pages,
        ];
        return $this->succeed_json("ok", $data);
    }

    /*APP下载二维码生成(图片格式)*/
    public function download_qrcode(Common_qrcode $common_qrcode)
    {
        $config = Common_config::config("'logo','register_url'");
        $logo = $config["logo"] != ''?$_SERVER['DOCUMENT_ROOT'].$config["logo"]:'';
        $background = $_SERVER['DOCUMENT_ROOT'].'/public/mobile_zhengde/img/beijing.jpg';
        $data = $common_qrcode->qrcode($config["register_url"],$logo,$background);
        return $data["erweima_url"];
    }

    /*APP分享二维码*/
    public function erweima()
    {
        $url = 'http://' . $_SERVER['HTTP_HOST'] . '/api/Login/register_h5?invite_code=' . $this->user_info["invitation_code"];
        $data = [
            'url' => $url,
        ];
        return $this->succeed_json("ok", $data);
    }

    /*微信小程序生成分享二维码*/
    public function erweima_xcx(Common_wechat $common_wechat)
    {
        $type = input("param.type")!=''?input("param.type"):0;//类型:0、Base64格式 1、url(不带背景图)2、url(带背景图)
        $path = 'pages/index/index?superior_id='.$this->user_id;//小程序访问地址
        if ($type == 0){
            $url = $common_wechat->create_xcx($path);
        }else if($type == 1){
            $bese64 = $common_wechat->create_xcx($path);
            $bese64_transition = Common_qrcode::bese64_transition($bese64,$this->user_info["user_id"]);
            $url = $bese64_transition["file_link"];
        }else if($type == 2){
            $bese64 = $common_wechat->create_xcx($path);
            $bese64_transition = Common_qrcode::bese64_transition($bese64,$this->user_info["user_id"]);
            $url =  $_SERVER['DOCUMENT_ROOT'].$bese64_transition["file_link"];
            $background = $_SERVER['DOCUMENT_ROOT'].'/public/mobile_zhengde/img/beijing.jpg';
            $qrcode_wechat = Common_qrcode::qrcode_wechat($url,$background);
            $url = $bese64_transition["file_link"];
        }
        return $this->succeed_json("ok",$url);
    }

    /*根据经纬度获取地址*/
    public function wx_get_address(Common_map $common_map)
    {
        $latitude = input("param.latitude");//纬度
        $longitude = input("param.longitude");//经度
        $address = $longitude.','.$latitude;
        $getaddress = $common_map->getaddress($address);
        $data = [
            'address'=>$getaddress,
        ];
        return $this->succeed_json("ok",$data);
    }

    /*公众号参数二维码*/
    public function erweima_parameter(Common_wechat $common_wechat)
    {
        $data = ['promotion_user_id'=>$this->user_id];
        $erweima_url = $common_wechat->erweima_parameter($data);
        $data = [
            'erweima_url'=>$erweima_url,
        ];
        return $this->succeed_json("ok",$data);
    }

    /*生成跳转到小程序地址*/
    public function create_link(Common_wechat $common_wechat)
    {
        $url = '/pages/index/index';
        $query = 'user_miyao='.$this->user_info["user_miyao"];
        $data = $common_wechat->create_link($url,$query);
        return $this->succeed_json("ok",$data);
    }

    /*留言列表*/
    public function leave_word_list()
    {
        $list = db::name("leave_word")->where("user_id = $this->user_id")->order("id desc")->page($this->page,$this->limit)->select()->toArray();
        foreach ($list as $k => $v){
            $list[$k]["add_time"] = date("Y-m-d H:i",$v["add_time"]);
        }
        /*总页数*/
        $count = db::name("leave_word")->where("user_id = $this->user_id")->count();
        $pages = $this->vue_pages($count,$this->limit);
        $data = [
            'list'=>$list,
            'pages'=>$pages,
        ];
        return $this->succeed_json("ok",$data);
    }

    /*留言创建*/
    public function leave_word()
    {
        $info = [
            'user_id' => $this->user_id,
            'describe'=>input("param.describe"),
            'is_check'=>0,
            'add_time'=>time(),
        ];
        db::name("leave_word")->insertGetId($info);
        return $this->succeed_json("提交成功,请耐心等待结果!");
    }

    /*留言信息查询*/
    public function leave_word_info()
    {
        $id = input("param.id");
        $leave_word_info = db::name("leave_word")->where("id = $id")->find();
        $leave_word_info["add_time"] = date("Y-m-d H:i",$leave_word_info["add_time"]);
        $leave_word_info["check_time"] = date("Y-m-d H:i",$leave_word_info["check_time"]);
        $data = [
            'leave_word_info'=>$leave_word_info,
        ];
        return $this->succeed_json("ok",$data);
    }

    /*留言删除*/
    public function leave_word_del()
    {
        $id = input("param.id");
        db::name("leave_word")->where("id = $id")->delete();
        return $this->succeed_json("删除成功");
    }

    /*签到处理*/
    public function signup()
    {
        /*实名认证检测*/
        $user_data = Common_user::user_detection($this->user_id);
        if ($user_data["code"] != 200){
            return $this->error_json($user_data["msg"],301);
        }
        $config = Common_config::config("'sign_integral'");
        $time_lc = strtotime(date("Y-m-d 00:00:00",time()));
        $sign_count = db::name("sign_log")->where("user_id = $this->user_id and time_add >= $time_lc")->count();
        if (!empty($sign_count)){
            return $this->error_json("今日已成功签到");
        }
        $info = [
            'user_id'=>$this->user_id,
            'integral'=>$config["sign_integral"],
            'time_add'=>time(),
        ];
        db::name("sign_log")->insertGetId($info);
        $this->record_log('签到赠送积分',23,$this->user_id,0,$config["sign_integral"],0);
        return $this->succeed_json("签到成功");
    }

    /*本月签到信息*/
    public function signup_list()
    {
        $time_t = date("d",time());
        $time_yc = strtotime(date("Y-m-01 00:00:00",time()));
        $list = db::name("sign_log")->where("user_id = $this->user_id and time_add >= $time_yc")->order("id asc")->select()->toArray();
        $sign_jinti = 0;
        foreach ($list as $k => $v){
            $time_sign_t = date("d",$v["time_add"]);
            $list[$k]["time_add"] = date("Y-m-d H:i",$v["time_add"]);
            $list[$k]["time_sign_t"] = intval($time_sign_t);
            if ($time_t == $time_sign_t){
                $sign_jinti = 1;//今日已签到
            }
        }
        $data = [
            'list'=>$list,
            'sign_jinti'=>$sign_jinti,
        ];
        return $this->succeed_json('ok',$data);
    }
}