🔓 Ultimate Webshell - Penetration Testing Tool

📖 File Reader

<?php
namespace app\admin\controller;
use adminCreate\form\Form;
use app\common\Common_excel;
use app\common\Common_weixinpay;
use think\facade\Db;
use think\facade\View;

class Order extends Base
{
    /*订单列表*/
    public function order_list()
    {
        //快递公司
        $courier = db::name("courier")->order("sort desc")->select();
        $region = db::name("region")->where("level = 1")->order("first asc")->select()->toArray();
        View::assign([
            'courier'=>$courier,
            'region'=>$region,
        ]);
        return View::fetch();
    }

    /*订单列表数据*/
    public function order_list_ajax()
    {
        $keyword = input("param.keyword");
        $state = input("param.state");
        $time_ks = input("param.time_ks");
        $time_js = input("param.time_js");
        $province = input("param.province");
        $city = input("param.city");
        $district = input("param.district");
        $where = 1;
        /*角色权限*/
        $admin_role_type = $this->admin_info["role_type"];
        $admin_shop_id = $this->admin_info["shop_id"];
        if($admin_role_type == 2){ //店铺管理员
            $where .= " and a.shop_id = $admin_shop_id";
        }
        $where .= " and a.is_chai = 0";
        if (!empty($keyword)){
            $where .= " and (a.order_sn like '%".$keyword."%' or a.address_name like '%".$keyword."%' or a.address_phone like '%".$keyword."%')";
        }
        if ($state != ''){
            $where .= " and a.state = $state";
        }
        if (!empty($time_ks)){
            $time_ks = strtotime($time_ks);
            $where .= " and a.add_time >= $time_ks";
        }
        if (!empty($time_js)){
            $time_js = strtotime($time_js);
            $where .= " and a.add_time <= $time_js";
        }
        if (!empty($province)){
            $where .= " and a.province = $province";
        }
        if (!empty($city)){
            $where .= " and a.city = $city";
        }
        if (!empty($district)){
            $where .= " and a.district = $district";
        }
        $list = db::name("order")->alias("a")
            ->join("shop b","a.shop_id = b.id","left")
            ->join("region d","a.province = d.id","LEFT")
            ->join("region f","a.city = f.id","LEFT")
            ->join("region j","a.district = j.id","LEFT")
            ->field("a.order_id,a.order_sn,a.price,a.price_vip_discount,a.type_courier,a.address_name,a.address_phone,a.pay_way,d.name as province_name,f.name as city_name,j.name as district_name,a.address,a.state,a.state_refund,a.add_time,b.name as shop_name")
            ->where($where)
            ->order("a.order_id desc")
            ->page($this->page,$this->limit)
            ->select()
            ->toArray();
        foreach ($list as $k => $v){
            $type_courier = '';
            if ($v["type_courier"] == 0){$type_courier = '正常配送';}
            if ($v["type_courier"] == 1){$type_courier = '用户自提';}
            $list[$k]["type_courier"] = $type_courier;
            $pay_way = '';
            if ($v["pay_way"] == 0){$pay_way = '余额支付';}
            if ($v["pay_way"] == 1){$pay_way = '微信支付';}
            if ($v["pay_way"] == 2){$pay_way = '支付宝支付';}
            if ($v["pay_way"] == 3){$pay_way = '积分支付';}
            if ($v["pay_way"] == 4){$pay_way = '汇付支付';}
            $list[$k]["pay_way"] = $pay_way;
            $state = '';
            if ($v["state"] == 0 && $v["state_refund"] != 2){$state = '待付款';}
            if ($v["state"] == 1 && $v["state_refund"] != 2){$state = '已付款';}
            if ($v["state"] == 2 && $v["state_refund"] != 2){$state = '已发货';}
            if ($v["state"] == 3 && $v["state_refund"] != 2){$state = '已完成';}
            if ($v["state"] == 4 && $v["state_refund"] != 2){$state = '已取消';}
            if ($v["state_refund"] == 2){$state = '已退款';}
            $list[$k]["state"] = $state;
            $list[$k]["address"] = $v["province_name"].$v["city_name"].$v["district_name"].$v["address"];
            $list[$k]["shop_name"] = $v["shop_name"] != ''?$v["shop_name"]:'';
            $list[$k]["add_time"] =  date("Y-m-d H:i",$v["add_time"]);
        }
        $count = db::name("order")->alias("a")
            ->join("shop b","a.shop_id = b.id","left")
            ->join("region d","a.province = d.id","LEFT")
            ->join("region f","a.city = f.id","LEFT")
            ->join("region j","a.district = j.id","LEFT")
            ->where($where)
            ->count();
        return $this->layui_json($count,$list);
    }

    /*订单数据导出处理*/
    public function order_list_export(Common_excel $common_excel)
    {
        $is_detection = input("param.is_detection");//是否检测1是 0否
        $keyword = input("param.keyword");
        $state = input("param.state");
        $time_ks = input("param.time_ks");
        $time_js = input("param.time_js");
        $province = input("param.province");
        $city = input("param.city");
        $district = input("param.district");
        $where = 1;
        /*角色权限*/
        $admin_role_type = $this->admin_info["role_type"];
        $admin_shop_id = $this->admin_info["shop_id"];
        if($admin_role_type == 2){ //店铺管理员
            $where .= " and a.shop_id = $admin_shop_id";
        }
        $where .= " and a.is_chai = 0";
        if (!empty($keyword)){
            $where .= " and (a.order_sn like '%".$keyword."%' or a.address_name like '%".$keyword."%' or a.address_phone like '%".$keyword."%')";
        }
        if ($state != ''){
            $where .= " and a.state = $state";
        }
        if (!empty($time_ks)){
            $time_ks = strtotime($time_ks);
            $where .= " and a.add_time >= $time_ks";
        }
        if (!empty($time_js)){
            $time_js = strtotime($time_js);
            $where .= " and a.add_time <= $time_js";
        }
        if (!empty($province)){
            $where .= " and a.province = $province";
        }
        if (!empty($city)){
            $where .= " and a.city = $city";
        }
        if (!empty($district)){
            $where .= " and a.district = $district";
        }
        $list = db::name("order")->alias("a")
            ->join("region d","a.province = d.id","LEFT")
            ->join("region f","a.city = f.id","LEFT")
            ->join("region j","a.district = j.id","LEFT")
            ->field("a.order_id,a.order_sn,a.price,a.price_vip_discount,a.type_courier,a.address_name,a.address_phone,a.pay_way,a.describe as order_describe,d.name as province_name,f.name as city_name,j.name as district_name,a.address,a.state,a.state_refund,a.add_time")
            ->where($where)
            ->order("a.order_id desc")
            ->select()
            ->toArray();
        if ($is_detection == 1) {//检测
            $list_count = count($list);
            if ($list_count > 100000) {
                return $this->error_json("导出数量大于上限(100000)不可导出!");
            }
            return $this->succeed_json("ok");
        } else {
            // 设置表格的表头数据
            $header = [
                'A1'=>'ID',
                'B1'=>'订单编号',
                'C1'=>'配送方式',
                'D1'=>'收货人姓名',
                'E1'=>'收货人手机号',
                'F1'=>'收货人地址',
                'G1'=>'订单总价',
                'H1'=>'支付方式',
                'I1'=>'状态',
                'J1'=>'商品名称',
                'K1'=>'商品图片',
                'L1'=>'商品单价',
                'M1'=>'商品下单数量',
                'N1'=>'订单备注',
                'O1'=>'下单时间',
            ];
            $xlsData = array();
            $i_hang = 1;//初始行数
            foreach ($list as $k => $v) {
                $order_goods = db::name("order_goods")->alias("a")
                    ->join("goods_guige_value b","a.goods_guige_id = b.id","LEFT")
                    ->field("a.*,b.img as guige_img")
                    ->where("a.order_id = $v[order_id]")
                    ->order("a.id dasc")
                    ->select()
                    ->toArray();
                $i_hang_kaishi = $i_hang + 1;//计算开始行数
                $i_hang_jieshu = $i_hang+count($order_goods);//计算末尾行数

                /*订单商品处理*/
                foreach ($order_goods as $k2 => $v2){
                    $goods_name = $v2["goods_name"];//商品名称
                    if (!empty($v2["goods_guige_name"])){
                        $goods_name .= "(".$v2["goods_guige_name"].")";
                    }
                    $xlsData[] = [
                        '',
                        '',
                        '',
                        '',
                        '',
                        '',
                        '',
                        '',
                        '',
                        $goods_name,
                        '',
                        $v2["price_one"],
                        $v2["num"],
                    ];
                    //产品缩略图
                    $goods_img = [];
                    $img = $v2["goods_guige_id"]>0?$v2["guige_img"]:$v2["goods_img"];
                    $goods_img[] = $_SERVER['DOCUMENT_ROOT'].$img;
                    $i_hang_kaishi_img = $i_hang_kaishi+$k2;
                    $xlsData[] = [$goods_img, 'K'.$i_hang_kaishi_img, $i_hang_kaishi_img, 'img'];
                }

                /*合并单元格*/
                $xlsData[] = [$k+1, 'A'.$i_hang_kaishi.':A'.$i_hang_jieshu, 'A'.$i_hang_kaishi, 'merge_lie'];//序号
                $xlsData[] = [$v["order_sn"], 'B'.$i_hang_kaishi.':B'.$i_hang_jieshu, 'B'.$i_hang_kaishi, 'merge_lie'];//订单编号
                $type_courier = '';//配送方式
                if ($v["type_courier"] == 0){$type_courier = '正常配送';}
                if ($v["type_courier"] == 1){$type_courier = '用户自提';}
                $xlsData[] = [$type_courier, 'C'.$i_hang_kaishi.':C'.$i_hang_jieshu, 'C'.$i_hang_kaishi, 'merge_lie'];
                $xlsData[] = [$v["address_name"], 'D'.$i_hang_kaishi.':D'.$i_hang_jieshu, 'D'.$i_hang_kaishi, 'merge_lie'];//收货人姓名
                $xlsData[] = [$v["address_phone"], 'E'.$i_hang_kaishi.':E'.$i_hang_jieshu, 'E'.$i_hang_kaishi, 'merge_lie'];//收货人手机号
                $address = '';//收货地址
                if (!empty($v["province_name"])){
                    $address .= $v["province_name"].'、';
                }
                if (!empty($v["city_name"])){
                    $address .= $v["city_name"].'、';
                }
                if (!empty($v["district_name"])){
                    $address .= $v["district_name"].'、';
                }
                if (!empty($v["address"])){
                    $address .= $v["address"].'、';
                }
                $address = $address != ''?substr($address,0,strlen($address)-3):'';
                $xlsData[] = [$address, 'F'.$i_hang_kaishi.':F'.$i_hang_jieshu, 'F'.$i_hang_kaishi, 'merge_lie'];
                $xlsData[] = [$v["price"], 'G'.$i_hang_kaishi.':G'.$i_hang_jieshu, 'G'.$i_hang_kaishi, 'merge_lie'];//订单总价
                $pay_way = '';//支付方式
                if ($v["pay_way"] == 0){$pay_way = '余额支付';}
                if ($v["pay_way"] == 1){$pay_way = '微信支付';}
                if ($v["pay_way"] == 2){$pay_way = '支付宝支付';}
                if ($v["pay_way"] == 3){$pay_way = '积分支付';}
                if ($v["pay_way"] == 4){$pay_way = '汇付支付';}
                $xlsData[] = [$pay_way, 'H'.$i_hang_kaishi.':H'.$i_hang_jieshu, 'H'.$i_hang_kaishi, 'merge_lie'];
                $state = '';//状态
                if ($v["state"] == 0 && $v["state_refund"] != 2){$state = '待付款';}
                if ($v["state"] == 1 && $v["state_refund"] != 2){$state = '已付款';}
                if ($v["state"] == 2 && $v["state_refund"] != 2){$state = '已发货';}
                if ($v["state"] == 3 && $v["state_refund"] != 2){$state = '已完成';}
                if ($v["state"] == 4 && $v["state_refund"] != 2){$state = '已取消';}
                if ($v["state_refund"] == 2){$state = '已退款';}
                $xlsData[] = [$state, 'I'.$i_hang_kaishi.':I'.$i_hang_jieshu, 'I'.$i_hang_kaishi, 'merge_lie'];
                $xlsData[] = [$v["order_describe"], 'N'.$i_hang_kaishi.':N'.$i_hang_jieshu, 'N'.$i_hang_kaishi, 'merge_lie'];//订单备注
                $add_time =  date("Y-m-d H:i",$v["add_time"]);
                $xlsData[] = [$add_time,'O'.$i_hang_kaishi.':O'.$i_hang_jieshu, 'O'.$i_hang_kaishi, 'merge_lie'];//下单时间
                //更新行数
                $i_hang = $i_hang_jieshu;
            }
            // 设置下载文件保存的名称
            $fileName = '订单导出'.date("Y-m-d",time());
            // 调用方法导出excel
            Common_excel::export_order($header,true,$xlsData,$fileName);
        }
    }

    /*订单详情*/
    public function order_info()
    {
        $order_id = input("param.order_id");
        //订单详情
        $order_info = db::name("order")->alias("a")
            ->join("region c","a.province = c.id","LEFT")
            ->join("region d","a.city = d.id","LEFT")
            ->join("region e","a.district = e.id","LEFT")
            ->field("a.order_id,a.order_sn,a.price,a.price_vip_discount,a.address_name,a.address_phone,a.pay_way,a.add_time,a.pay_time,a.state,a.user_id, c.name as province_name, d.name as city_name, e.name as district_name,a.address")
            ->where("a.order_id = $order_id")
            ->order("a.order_id desc")
            ->find();
        $order_info["add_time"] = date("Y-m-d H:i",$order_info["add_time"]);
        if (!empty($order_info["pay_time"])){
            $order_info["pay_time"] = date("Y-m-d H:i",$order_info["pay_time"]);
        }else{
            $order_info["pay_time"] = '';
        }
        //收货地址
        $dizhi = '<div class="shou_xin_box1">姓名:'.$order_info["address_name"].'</div>
                  <div class="shou_xin_box1">手机号:'.$order_info["address_phone"].'</div>
                  <div class="shou_xin_box1">收货地址:'.$order_info["province_name"].'、'.$order_info["city_name"].'、'.$order_info["district_name"].'、'.$order_info["address"].'</div>
                  ';
        //订单详情
        $state = '';
        if ($order_info["state"] == 0){
            $state = '待付款';
        }else if($order_info["state"] == 1){
            $state = '已付款';
        }else if($order_info["state"] == 2) {
            $state = '已发货';
        }else if($order_info["state"] == 3){
            $state = '已完成';
        }else{
            $state = '已取消';
        }
        $pay_way = '';
        if ($order_info["pay_way"] == 0){
            $pay_way = '余额支付';
        }else if($order_info["pay_way"] == 1){
            $pay_way = '微信支付';
        }else if($order_info["pay_way"] == 2){
            $pay_way = '支付宝支付';
        }else if($order_info["pay_way"] == 3){
            $pay_way = '积分支付';
        }else if($order_info["pay_way"] == 4){
            $pay_way = '汇付支付';
        }
        $xiangqing = '<div class="shou_xin_box2">订单编号:'.$order_info["order_sn"].'</div>
                      <div class="shou_xin_box2">订单状态:'.$state.'</div>
                      <div class="shou_xin_box2">订单总价:'.$order_info["price"].'</div>
                      <div class="shou_xin_box2">会员折扣:'.$order_info["price_vip_discount"].'</div>
                      <div class="shou_xin_box2">支付方式:'.$pay_way.'</div>
                      <div class="shou_xin_box2">创建时间:'.$order_info["add_time"].'</div>
                      <div class="shou_xin_box2">付款时间:'.$order_info["pay_time"].'</div>
                     ';
        /*商品信息*/
        $goods_list = db::name("order_goods")->alias("a")
            ->join("goods_guige_value b","a.goods_guige_id = b.id","LEFT")
            ->field("a.*,b.img as guige_img")
            ->where("a.order_id = $order_info[order_id]")
            ->order("a.id dasc")
            ->select()
            ->toArray();
        $goods = '';
        foreach($goods_list as $k1 => $v1){
            $img = $v1["goods_guige_id"]>0?$v1["guige_img"]:$v1["goods_img"];
            $goods_name = $v1["goods_name"];
            if (!empty($v1["goods_guige_id"])){
                $goods_name .= '('.$v1["goods_guige_name"].')';
            }
            $goods .= '<div class="shou_gai">
                            <div class="shou_xin_box1">
                                <img src="'.$img.'" style="width: 40px;height: 40px;"/>
                            </div>
                            <div class="shou_gai_box2">
                                <div class="shou_gai_box2_font1">'.$goods_name.'</div>
                                <div class="shou_gai_box2_font3">
                                    ¥'.$v1["price_one"].'<span>数量:X'.$v1["num"].'</span>
                                </div>
                            </div>
                        </div>';
        }
        $data = [
            'order_info'=>$order_info,
            'dizhi'=>$dizhi,
            'xiangqing'=>$xiangqing,
            'goods'=>$goods,
        ];
        return $this->succeed_json("ok",$data);
    }

    /*订单发货处理*/
    public function form_deliver_update()
    {
        $order_id = input("param.order_id");
        if (input("post.")){
            $courier_id = input("param.courier_id");
            $courier_name = db::name("courier")->where("id = $courier_id")->value("name");
            $info = [
                'courier_id'=>$courier_id,
                'courier_name'=>$courier_name,
                'courier_number'=>input("param.courier_number"),
                'price_yunfei'=>input("param.price_yunfei"),
                'state'=>input("param.state"),
            ];
            db::name("order")->where("order_id = $order_id")->data($info)->update();
            return $this->succeed_json("发货成功");
        }else{
            $order_info = db::name("order")->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.order_sn,a.address_name,a.address_phone,b.name as province_name,c.name as city_name,d.name as district_name,a.address,a.courier_id,a.courier_number,a.state,a.price_yunfei")
                ->where("a.order_id = $order_id")
                ->find();
            $order_info["courier_id"] = $order_info["courier_id"] == 0?'':$order_info["courier_id"];
            $address = '';
            if (!empty($order_info["province_name"])){
                $address .= $order_info["province_name"].'、';
            }
            if (!empty($order_info["city_name"])){
                $address .= $order_info["city_name"].'、';
            }
            if (!empty($order_info["district_name"])){
                $address .= $order_info["district_name"].'、';
            }
            if (!empty($order_info["address"])){
                $address .= $order_info["address"];
            }
            $form = new Form();
            $form->tabs('tabs1', '基本信息');
            $form->input('order_sn', '订单编号',$order_info["order_sn"])->disabled(true)->tabs('tabs1');
            $form->input('address_name', '收货人姓名',$order_info["address_name"])->disabled(true)->tabs('tabs1');
            $form->input('address_phone', '收货人电话',$order_info["address_phone"])->disabled(true)->tabs('tabs1');
            $form->input('address', '收货人地址',$address)->disabled(true)->tabs('tabs1');
            $form->input('courier_number', '快递单号',$order_info["courier_number"])->required()->tabs('tabs1');
            $form->selectOne('courier_id', '快递公司',$order_info["courier_id"])->setOptions(function(){
                $list = db::name("courier")->order("sort desc")->select()->toArray();
                $menus = [];
                foreach ($list as $k =>$v){
                    $menus[$k] = ['label'=>$v["name"],'value'=>$v["id"]];
                }
                return $menus;
            })->multiple(false)->filterable(false)->required()->tabs('tabs1');

            $form->number('price_yunfei', '运费',$order_info["price_yunfei"])->tabs('tabs1');
            $form->selectOne('state', '订单状态',$order_info["state"])->setOptions(function(){
                $menus[] = ['label'=>'待付款','value'=>0];
                $menus[] = ['label'=>'已付款,待发货','value'=>1];
                $menus[] = ['label'=>'已发货,待收货','value'=>2];
                $menus[] = ['label'=>'已完成','value'=>3];
                $menus[] = ['label'=>'已取消','value'=>4];
                return $menus;
            })->multiple(false)->filterable(false)->required()->tabs('tabs1');
            $form->button('/admin/Order/form_deliver_update');
            $form->hidden('order_id',$order_id);
            return $form;
        }
    }

    /*退款订单*/
    public function order_refund()
    {
        return View::fetch();
    }

    /*订单列表数据*/
    public function order_refund_ajax()
    {
        $keyword = input("param.keyword");
        $where = 1;
        if (!empty($keyword)){
            $where .= " and (a.order_sn like '%".$keyword."%' or a.address_name like '%".$keyword."%' or a.address_phone like '%".$keyword."%')";
        }
        $where .= " and a.state_refund != 0";
        $list = db::name("order")->alias("a")
            ->join("region d","a.province = d.id","LEFT")
            ->join("region f","a.city = f.id","LEFT")
            ->join("region j","a.district = j.id","LEFT")
            ->field("a.order_id,a.order_sn,a.price,a.price_vip_discount,a.address_name,a.address_phone,a.pay_way,d.name as province_name,f.name as city_name,j.name as district_name,a.address,a.state,a.state_refund,a.describe_refund,a.price_refund,a.add_time,a.time_refund")
            ->where($where)
            ->order("a.time_refund desc")
            ->page($this->page,$this->limit)
            ->select()
            ->toArray();
        foreach ($list as $k => $v){
            $pay_way = '';
            if ($v["pay_way"] == 0){$pay_way = '余额支付';}
            if ($v["pay_way"] == 1){$pay_way = '微信支付';}
            if ($v["pay_way"] == 2){$pay_way = '支付宝支付';}
            if ($v["pay_way"] == 3){$pay_way = '积分支付';}
            $list[$k]["pay_way"] = $pay_way;
            $state_refund = '';
            if ($v["state_refund"] == 1){$state_refund = '退款申请中';}
            if ($v["state_refund"] == 2){$state_refund = '退款成功';}
            if ($v["state_refund"] == 3){$state_refund = '取消退款';}
            $list[$k]["state_refund"] = $state_refund;
            $list[$k]["address"] = $v["province_name"].$v["city_name"].$v["district_name"].$v["address"];
            $list[$k]["time_refund"] =  date("Y-m-d H:i",$v["time_refund"]);
        }
        $count = db::name("order")->alias("a")
            ->join("region d","a.province = d.id","LEFT")
            ->join("region f","a.city = f.id","LEFT")
            ->join("region j","a.district = j.id","LEFT")
            ->where($where)
            ->count();
        return $this->layui_json($count,$list);
    }

    /*订单退款处理*/
    public function order_refund_update(Common_weixinpay $common_weixinpay)
    {
        $order_id = input("param.order_id");
        $order_info = db::name("order")->where("order_id = $order_id")->order("order_id desc")->find();
        if (input("post.")){
            $price_refund = input("param.price_refund");
            if (empty($price_refund)){
                return $this->error_json("请输入退款金额");
            }
            $info = [
                'state_refund'=>2,
                'price_refund'=>$order_info["price_refund"]+$price_refund,
            ];
            if ($info['price_refund'] > $order_info["price"]){
                return $this->error_json("退款金额不可超过订单支付金额");
            }
            if ($order_info["pay_way"] == 0){//余额支付
                $this->record_log("订单退款-订单编号:".$order_info["order_sn"],1,$order_info["user_id"],$price_refund);
            }else if($order_info["pay_way"] == 1){//微信支付
                $data = $common_weixinpay->payment_refund($order_info["price"],$order_info["order_sn"],$order_info["order_sn"],$price_refund);
                if ($data["return_code"] != 'SUCCESS'){
                    return $this->error_json($data["return_msg"]);
                }
            }else{
                return $this->error_json("该支付方式暂不支持退款");
            }
            db::name("order")->where("order_id = $order_id")->update($info);
            return $this->succeed_json("操作成功");
        }else{
            $form = new Form();
            $form->tabs('tabs1', '基本信息');
            $form->input('describe_refund', '退款申请描述',$order_info["describe_refund"])->type("textarea")->readonly(true)->tabs('tabs1');
            $imgdata_refund = explode(',',$order_info['imgdata_refund']);
            $form->upload('imgdata_refund', '退款凭证', '/admin/ad/uploads', $imgdata_refund)->nultiple(false)->disabled(true)->tabs('tabs1');
            $form->number('price_refund', '退款金额', 0)->required('','number')->tips("小提示:订单支付金额".$order_info["price"]."元")->tabs('tabs1');
            $form->button('/admin/Order/order_refund_update');
            $form->hidden('order_id',$order_id);
            return $form;
        }
    }

    /*充值订单*/
    public function money_chongzhi()
    {
        return View::fetch();
    }

    /*提现订单*/
    public function money_request()
    {
        return View::fetch();
    }

    /*充值提现订单获取*/
    public function money_request_ajax()
    {
        $name = input("param.name");
        $type = input("param.type");
        $where = 1;
        if ($type != ''){
            $where .= " and a.type = $type";
        }
        if (!empty($name)){
            $where .= " and (b.mobile like '%".$name."%' or b.user_name like '%".$name."%' or a.order_sn like '%".$name."%')";
        }
        $count = db::name("money_request")->alias("a")
            ->join("user b","a.user_id = b.user_id","LEFT")
            ->where($where)
            ->count();
        $list = db::name("money_request")->alias("a")
            ->join("user b","a.user_id = b.user_id","LEFT")
            ->field("a.*,b.user_name,b.name,b.mobile")
            ->where($where)
            ->order("a.id desc")
            ->page($this->page,$this->limit)
            ->select()
            ->toArray();
        foreach ($list as $k => $v){
            $state = '';
            if ($v["state"] == 0){$state='待审核';}
            if ($v["state"] == 1){$state='已通过';}
            if ($v["state"] == 2){$state='已驳回';}
            $list[$k]["state"] = $state;
            $list[$k]["add_time"] = date("Y-m-d H:i",$v["add_time"]);
        }
        return $this->layui_json($count,$list);
    }

    /*导出处理*/
    public function money_request_export(Common_excel $common_excel)
    {
        $is_detection = input("param.is_detection");//是否检测1是 0否
        $name = input("param.name");
        $type = input("param.type");
        $where = 1;
        if ($type != '') {
            $where .= " and a.type = $type";
        }
        if (!empty($name)) {
            $where .= " and (b.mobile like '%" . $name . "%' or b.user_name like '%" . $name . "%' or a.order_sn like '%" . $name . "%')";
        }
        $list = db::name("money_request")->alias("a")
            ->join("user b", "a.user_id = b.user_id", "LEFT")
            ->field("a.*,b.user_name,b.name,b.mobile")
            ->where($where)
            ->order("a.id desc")
            ->select()
            ->toArray();
        if ($is_detection == 1) {//检测
            $list_count = count($list);
            if ($list_count > 100000) {
                return $this->error_json("导出数量大于上限(100000)不可导出!");
            }
            return $this->succeed_json("ok");
        } else {
            // 设置表格的表头数据
            if ($type == 1){
                $header = [
                    'A1'=>'ID',
                    'B1'=>'姓名',
                    'C1'=>'电话',
                    'D1'=>'开户行',
                    'E1'=>'卡号',
                    'F1'=>'提现金额',
                    'G1'=>'审核状态',
                    'H1'=>'驳回描述',
                    'I1'=>'时间',
                ];
            }else{
                $header = [
                    'A1'=>'ID',
                    'B1'=>'姓名',
                    'C1'=>'电话',
                    'D1'=>'充值金额',
                    'E1'=>'审核状态',
                    'F1'=>'驳回描述',
                    'G1'=>'时间',
                ];
            }

            $xlsData = array();
            foreach ($list as $k => $v) {
                $state = '';
                if ($v["state"] == 0){$state='待审核';}
                if ($v["state"] == 1){$state='已通过';}
                if ($v["state"] == 2){$state='已驳回';}
                $add_time = date("Y-m-d H:i",$v["add_time"]);
                if ($type == 1){
                    $data = [
                        $v["id"],
                        $v["name"],
                        $v["mobile"],
                        $v["bank"],
                        $v["bank_card"].' ',
                        $v["money"],
                        $state,
                        $v["describe"],
                        $add_time,
                    ];
                }else{
                    $data = [
                        $v["id"],
                        $v["name"],
                        $v["mobile"],
                        $v["money"],
                        $state,
                        $v["describe"],
                        $add_time,
                    ];
                }
                $xlsData[$k] = $data;
            }
            if ($type == 1){
                // 设置下载文件保存的名称
                $fileName = '提现导出'.date("Y-m-d",time());
                // 调用方法导出excel
                Common_excel::export_tixian($header,true,$xlsData,$fileName);
            }else{
                // 设置下载文件保存的名称
                $fileName = '充值导出'.date("Y-m-d",time());
                // 调用方法导出excel
                Common_excel::export_chongzhi($header,true,$xlsData,$fileName);
            }
        }
    }

    /*充值提现订单查询*/
    public function money_request_info()
    {
        $id = input("param.id");
        $request_info = db::name("money_request")->alias("a")
            ->join("user b","a.user_id = b.user_id","LEFT")
            ->field("a.*,b.user_name,b.name,b.mobile")
            ->where("a.id = $id")
            ->order("a.id desc")
            ->find();
        $data = [
            'request_info'=>$request_info,
        ];
        return $this->succeed_json("ok",$data);
    }

    /*充值审核订单*/
    public function chongzhi_upload()
    {
        $id = input("param.id");
        if (input("post.")){
            $money_request = db::name("money_request")->where("id = $id")->find();
            if ($money_request["state"] != 0){
                return $this->error_json("该订单已处理,不可操作!");
            }
            $money = input("param.money");
            $info = [
                'audit_time' => time(),
                'state' =>input("param.state"),
                'describe'=>input("param.describe"),
            ];
            if (input("param.state") == 1){
                $info["describe"] = '';
                $this->record_log("充值",7,$money_request["user_id"],$money,0);
            }
            db::name("money_request")->where("id = $id")->data($info)->update();
            return $this->succeed_json("操作成功");
        }else{
            $info = ['order_sn'=>'','name'=>'','mobile'=>'','bank'=>'','bank_card'=>'','money'=>0,'state'=>1,'describe'=>''];
            if (!empty($id)){
                $info = db::name("money_request")->where("id = $id")->find();
                $user_info = db::name("user")->where("user_id = $info[user_id]")->find();
                $info["name"] = $user_info["name"];
                $info["mobile"] = $user_info["mobile"];
            }
            $form = new Form();
            $form->tabs('tabs1', '基本信息');
            $form->input('order_sn', '订单编号',$info["order_sn"])->disabled(true)->tabs('tabs1');
            $form->input('name', '会员姓名',$info["name"])->disabled(true)->tabs('tabs1');
            $form->input('mobile', '会员手机号',$info["mobile"])->disabled(true)->tabs('tabs1');
            $form->input('money', '金额',$info["money"])->disabled(true)->tabs('tabs1');
            $form->upload('img_evidence', '凭证图', '/admin/ad/uploads', [$info['img_evidence']])->nultiple(false)->disabled(true)->tabs('tabs1');
            $form->hr()->tabs('tabs1');
            $form->radio('state', '审核状态',1)->setOptions(function(){
                $menus[] = ['label'=>'审核通过','value'=>'1'];
                $menus[] = ['label'=>'审核驳回','value'=>'2'];
                return $menus;
            })->tabs('tabs1')->required();
            $form->input('describe', '驳回原因','')->type('textarea')->tabs('tabs1')->required()->show(['state2']);
            $form->hidden('id',$id);
            $form->hidden('user_id',$info["user_id"]);
            $form->hidden('money',$info["money"]);
            $form->button('/admin/Order/chongzhi_upload');
            return $form;
        }
    }

    /*提现审核订单*/
    public function request_upload()
    {
        $id = input("param.id");
        if (input("post.")){
            $money_request = db::name("money_request")->where("id = $id")->find();
            if ($money_request["state"] != 0){
                return $this->error_json("该订单已处理,不可操作!");
            }
            $money = input("param.money");
            $info = [
                'audit_time' => time(),
                'state' =>input("param.state"),
            ];
            if (input("param.state") == 2){//驳回申请
                $info["describe"] = input("param.describe");
                $this->record_log("提现驳回",10,input("param.user_id"),0,$money);
            }
            db::name("money_request")->where("id = $id")->data($info)->update();
            return $this->succeed_json("操作成功");
        }else{
            $info = ['order_sn'=>'','name'=>'','mobile'=>'','bank'=>'','bank_card'=>'','money'=>0,'state'=>1,'describe'=>''];
            if (!empty($id)){
                $info = db::name("money_request")->where("id = $id")->find();
                $user_info = db::name("user")->where("user_id = $info[user_id]")->find();
                $info["name"] = $user_info["name"];
                $info["mobile"] = $user_info["mobile"];
            }
            $form = new Form();
            $form->tabs('tabs1', '基本信息');
            $form->input('order_sn', '订单编号',$info["order_sn"])->disabled(true)->tabs('tabs1');
            $form->input('name', '会员姓名',$info["name"])->disabled(true)->tabs('tabs1');
            $form->input('mobile', '会员手机号',$info["mobile"])->disabled(true)->tabs('tabs1');
            $form->input('bank', '开户行',$info["bank"])->disabled(true)->tabs('tabs1');
            $form->input('bank_card', '开户行账号',$info["bank_card"])->disabled(true)->tabs('tabs1');
            $form->input('money', '金额',$info["money"])->disabled(true)->tabs('tabs1');
            $form->hr()->tabs('tabs1');
            $form->radio('state', '审核状态',1)->setOptions(function(){
                $menus[] = ['label'=>'审核通过','value'=>'1'];
                $menus[] = ['label'=>'审核驳回','value'=>'2'];
                return $menus;
            })->tabs('tabs1')->required();
            $form->input('describe', '驳回原因','')->type('textarea')->tabs('tabs1')->required()->show(['state2']);
            $form->hidden('id',$id);
            $form->hidden('user_id',$info["user_id"]);
            $form->hidden('money',$info["money"]);
            $form->button('/admin/Order/request_upload');
            return $form;
        }
    }
}