🔓 Ultimate Webshell - Penetration Testing Tool

📖 File Reader

<?php
namespace app\admin\controller;
use adminCreate\form\Form;
use app\admin\common\Common_config;
use app\admin\model\ModGoodsAct;
use app\common\Common_excel;
use think\facade\Db;
use think\facade\View;
use app\admin\common\Common_goods;

class Goods extends Base
{
    /*商品分类*/
    public function act_list()
    {
        return View::fetch();
    }

    /*商品分类数据*/
    public function act_list_ajax()
    {
        $type_yibu = input("param.type_yibu");
        $id = input("param.id");
        $keyword = input("param.keyword");
        $where = 1;
        if (!empty($keyword)){
            $where .= " and name like '%".$keyword."%'";
        }else{
            if (!empty($id)){
                $where .= " and parent_id = $id";
            }else{
                /*筛序出所有顶级账号*/
                $list = db::name("goods_act")->order("id asc")->field("id as value,parent_id as pid,name")->select()->toArray();
                $array_reinstallation = Common_config::array_reinstallation($list);
                $id_top = [];//所有顶级会员id
                foreach ($array_reinstallation as $v){
                    $id_top[] = $v["value"];
                }
                if (!empty($id_top)) {
                    $id_top_str = implode(",", $id_top);
                    $where .= " and id in ($id_top_str)";
                }else{
                    $where .= " and id in (0)";
                }
            }
        }
        if ($type_yibu == 1) {
            $list = db::name("goods_act")->where($where)->order("sort desc,id desc")->select()->toArray();
        }else{
            $list = db::name("goods_act")->where($where)->order("sort desc,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"]);
            //二级分类
            $list2 = db::name("goods_act")->where("parent_id = $v[id]")->order("sort desc,id desc")->select()->toArray();
            foreach ($list2 as $k2 => $v2){
                $list2[$k2]["add_time"] = date("Y-m-d H:i",$v2["add_time"]);
            }
            $list[$k]["children"] = $list2;
        }
        $count = db::name("goods_act")->where($where)->count();
        return $this->layui_json($count,$list);
    }

    /*分类数据获取(用于多选查询)*/
    public function act_checked_data()
    {
        $list = db::name("goods_act")->field("id,id as value,parent_id as pid,name as label,name")->order("sort desc")->select()->toArray();
        foreach ($list as $k => $v){
            $list[$k]["spread"] = true;//默认展开
            $list[$k]["disabled"] = false;
            foreach ($list as $v2){
                if ($v["value"] == $v2["pid"]){//存在下级禁用勾选
                    $list[$k]["disabled"] = true;
                }
            }
        }
        $list_data = Common_config::array_reinstallation($list);
        $data = [
            'checked_data'=>$list_data,
        ];
        return $this->succeed_json("ok",$data);
    }

    /*分类列表字段修改*/
    public function act_field_update()
    {
        $id = input("param.id");
        $field_name = input("param.field_name");
        $info[$field_name] = input("param.value");
        db::name("goods_act")->where("id = $id")->data($info)->update();
        return $this->succeed_json("操作成功");
    }

    /*创建分类提交*/
    public function goods_act_upload()
    {
        $id = input("param.id");
        if (input("post.")){
            $info = [
                'parent_id'=>0,
                'parent_id_str'=>input("param.parent_id_str") != ''?implode(",",input("param.parent_id_str")):'',
                'name'=>input("param.name"),
                'icon'=>input("param.icon") != ''?implode(",",input("param.icon")):'',
                'sort'=>input("param.sort"),
                'is_show'=>input("param.is_show"),
                'is_show_home'=>input("param.is_show_home"),
                'add_time'=>strtotime(input("param.add_time")),
            ];
            if (!empty(input("param.parent_id_str"))){
                $arr_k = count(input("param.parent_id_str"))-1;//最后一位k值
                $parent_id = input("param.parent_id_str")[$arr_k];
                $info["parent_id"] = $parent_id;
            }
            if ($id == $info["parent_id"] && $id != 0){
                return $this->error_json("所属上级不可绑定本身");
            }
            if (empty($id)){
                db::name("goods_act")->insertGetId($info);
            }else{
                db::name("goods_act")->where("id = $id")->data($info)->update();
            }
            return $this->succeed_json("操作成功");
        }else {
            $time =  date("Y-m-d H:i",time());
            $info = ['name'=>'','parent_id_str'=>[],'parent_id'=>'','icon'=>[],'sort'=>0,'add_time'=>$time,'is_show'=>1,'is_show_home'=>0];
            if (!empty($id)){
                $info = db::name("goods_act")->where("id = $id")->find();
                $info["parent_id_str"] = $info["parent_id_str"] != ''?explode(',',$info['parent_id_str']):[];
                $info["add_time"] = date("Y-m-d H:i",$info["add_time"]);
            }
            $form = new Form();
            $form->tabs('tabs1', '基本信息');
            $form->cascader('parent_id_str', '所属上级',$info["parent_id_str"])->setOptions(function(){
                $list = db::name("goods_act")->field("id,id as value,parent_id as pid,name as label,name")->order("sort desc")->select()->toArray();
                $menus = Common_config::array_reinstallation($list);
                return $menus;
            })->tabs('tabs1');
            $form->input('name', '名称',$info["name"])->required()->tabs('tabs1');
            $form->upload('icon', '图标', '/admin/ad/uploads', [$info['icon']])->nultiple(false)->tabs('tabs1');
            $form->number('sort', '排序', $info["sort"])->tabs('tabs1');
            $form->radio('is_show', '显示「分类导航」', $info["is_show"])->setOptions(function () {
                $menus[] = ['label' => '是', 'value' => '1'];
                $menus[] = ['label' => '否', 'value' => '0'];
                return $menus;
            })->tabs('tabs1')->required();
            $form->radio('is_show_home', '显示「首页推荐」', $info["is_show_home"])->setOptions(function () {
                $menus[] = ['label' => '是', 'value' => '1'];
                $menus[] = ['label' => '否', 'value' => '0'];
                return $menus;
            })->tabs('tabs1')->required();
            $form->datetime('add_time', '时间',$info["add_time"])->tabs('tabs1')->type('datetime')->required();
            $form->hidden('id',$id);
            $form->button('/admin/Goods/goods_act_upload');
            return $form;
        }
    }

    /*分类删除*/
    public function goods_act_del()
    {
        $id = input("param.id");
        $act_info = db::name("goods_act")->where("parent_id = $id")->count();
        $goods_count = db::name("goods")->where("act_id = $id and is_delete = 0")->count();
        if (!empty($act_info)){
            return $this->error_json("已存在下级,不可删除!");
        }else if(!empty($goods_count)){
            return $this->error_json("已存在商品,不可删除!");
        } else{
            db::name("goods_act")->where("id = $id")->delete();
            return $this->succeed_json("删除成功!");
        }
    }

    /*商品列表*/
    public function goods_list()
    {
        $goods_act = db::name("goods_act")->order("sort desc")->select();
        View::assign([
            'goods_act'=>$goods_act,
        ]);
        return View::fetch();
    }

    /*商品列表数据*/
    public function goods_list_ajax()
    {
        $name = input("param.name");
        $act_id = input("param.act_id");
        $checked_act_id = input("param.checked_act_id");
        $where = 1;
        /*角色权限*/
        $admin_role_type = $this->admin_info["role_type"];
        $admin_shop_id = $this->admin_info["shop_id"];
        if ($admin_role_type == 1) { //平台管理员
            $where .= " and a.state = 1";
            if (!empty($name)){
                $where .= " and (a.name like '%".$name."%' or c.name like '%".$name."%')";
            }
        }else if($admin_role_type == 2){ //店铺管理员
            $where .= " and a.shop_id = $admin_shop_id";
            if (!empty($name)){
                $where .= " and a.name like '%".$name."%'";
            }
        }
        if (!empty($act_id)){
            $sublevel_act_id = ModGoodsAct::sublevel_act_id($act_id,1);
            $where .= " and a.act_id in ($sublevel_act_id)";
        }
        if (!empty($checked_act_id)){
            $checked_act_id = implode(",", $checked_act_id);
            $sublevel_act_id = ModGoodsAct::sublevel_act_id($checked_act_id,1);
            $where .= " and a.act_id in ($sublevel_act_id)";
        }
        $list = db::name("goods")->alias("a")
            ->join("goods_act b","a.act_id = b.id","LEFT")
            ->join("shop c","a.shop_id = c.id","LEFT")
            ->field("a.*, b.name as name_act,c.name as shop_name")
            ->where("a.is_delete = 0 and ".$where)
            ->order("a.sort desc,a.add_time desc")
            ->page($this->page,$this->limit)
            ->select()
            ->toArray();
        foreach ($list as $k => $v){
            $guige_count = db::name("goods_guige_value")->where("goods_id = $v[goods_id]")->count();
            $is_guige = $guige_count > 0?1:0;
            if ($is_guige == 1){
                $stocks = db::name("goods_guige_value")->where("goods_id = $v[goods_id]")->sum("stocks");
            }else{
                $stocks = $v["stocks"];
            }
            $list[$k]["stocks"] = $stocks;
            $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("goods")->alias("a")
            ->join("goods_act b","a.act_id = b.id","LEFT")
            ->join("shop c","a.shop_id = c.id","LEFT")
            ->where("a.is_delete = 0 and ".$where)
            ->count();
        return $this->layui_json($count,$list);
    }

    /**
     * 更改库存
     */
    public function is_stock_ajax()
    {
        $goods_id = input("param.goods_id");
        $info["stocks"] = input("param.stocks");
        db::name("goods")->where("goods_id = $goods_id")->data($info)->update();
        return $this->succeed_json("修改成功");
    }

    /*列表字段修改*/
    public function goods_field_update()
    {
        $id = input("param.id");
        $goods_info = db::name("goods")->alias("a")
            ->join("shop b","a.shop_id = b.id","left")
            ->field("a.goods_id,a.shop_id,b.is_seal")
            ->where("a.goods_id = $id")
            ->find();
        if ($goods_info["is_seal"] == 1 && input("param.field_name") == 'is_sold'){
            return $this->error_json("该店铺已被封闭,不可操作!",405);
        }
        $field_name = input("param.field_name");
        $info[$field_name] = input("param.value");
        db::name("goods")->where("goods_id = $id")->data($info)->update();
        return $this->succeed_json("操作成功");
    }

    /*获取子级商品分类*/
    public function goods_act_ajax()
    {
        $parent_id = input("param.parent_id");
        $list = ModGoodsAct::goods_act_list($parent_id);
        $str = '<option value="0">请选择</option>';
        foreach ($list as $k => $v){
            $str .= '<option value="'.$v["id"].'">'.$v["name"].'</option>';
        }
        $data = [
            'list_count'=>count($list),
            'str'=>$str,
        ];
        return $this->succeed_json("ok",$data);
    }

    /*商品导入*/
    public function goods_import()
    {
        if ($_POST){
            $file = input("param.file")!=''?implode(",",input("param.file")):'';
            $file_path = $_SERVER['DOCUMENT_ROOT'].$file;
            $enter_data = Common_excel::enter($file_path);
            if ($enter_data["code"] == 200){
                $data_list = $enter_data["data_list"];
                /*重装数组并检测数据*/
                $subject_data = [];//题目数据
                foreach ($data_list as $k => $v){
                    if ($k > 2 && ($v["A"] != '' || $v["B"] != '' || $v["C"] != '' || $v["D"] != '')){

                    }
                }
                if (empty($subject_data)){
                    return $this->error_json("暂无导入数据");
                }
                // 写导入表逻辑
                // ....


                if (file_exists($file_path)) { //导入成功删除原文件
                    unlink($file_path);//删除文件
                }
                return $this->succeed_json("导入成功");
            }else{
                return $this->error_json($enter_data["msg"]);
            }
        }else{
            $info = ['file'=>[]];
            $form = new Form();
            $form->tabs('tabs1', '基本信息');
            $form->upload('file', '文件上传', '/admin/ad/uploads', $info["file"],'file')->nultiple(false)->tabs('tabs1')->required()->tips("导入模版下载地址:http://www.baidu.com/");
            $form->button('/admin/Goods/goods_import');
            return $form;
        }
    }

    /*商品创建*/
    public function goods_update()
    {
        $goods_id = input("param.goods_id");
        if (input("post.")){
            /*检测处理*/
            if (!empty($goods_id)){
                $goods_info = db::name("goods")->alias("a")
                    ->join("shop b","a.shop_id = b.id","left")
                    ->field("a.goods_id,a.shop_id,b.is_seal")
                    ->where("a.goods_id = $goods_id")
                    ->find();
                if ($goods_info["is_seal"] == 1){
                    return $this->error_json("店铺已被封闭,不可操作!");
                }
            }else{
                if ($this->admin_info["role_type"] == 2){ //店铺管理员
                    $shop_id = $this->admin_info["shop_id"];
                    $shop_info = db::name("shop")->where("id = $shop_id")->find();
                    if ($shop_info["is_seal"] == 1){
                        return $this->error_json("店铺已被封闭,不可操作!");
                    }
                }
            }
            $info = [
                'sn'=>'',
                'name'=>input("param.name"),
                'describe'=>input("param.describe"),
                'img'=>input("param.img") != ''?implode(",",input("param.img")):'',
                'video_url'=>'',
                'price'=>input("param.price"),
                'price_market'=>input("param.price_market"),
                'stocks'=>input("param.stocks"),
                'content'=>input("param.content"),
                'is_sold'=>input("param.is_sold"),
                'add_time'=>strtotime(input("param.add_time")),
            ];
            if ($this->admin_info["role_type"] == 1){
                $info["act_id"] = 0;
                $info["act_id_str"] = input("param.act_id_str") != ''?implode(",",input("param.act_id_str")):'';
            }
            if (!empty(input("param.act_id_str"))){
                $arr_k = count(input("param.act_id_str"))-1;//最后一位k值
                $act_id = input("param.act_id_str")[$arr_k];
                $info["act_id"] = $act_id;
                /*分类检测*/
                $act_count = db::name("goods_act")->where("parent_id = $act_id")->count();
                if (!empty($act_count)){
                    return $this->error_json("所属分类请填写完全");
                }
            }
            /*把富文本里的图片bese64格式转换为路径*/
            if (!empty($info["content"])){
                $config = Common_config::config("'url'");
                $http_type = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')) ? 'https://' : 'http://';
                $url = $config["url"] != ''?$config["url"]:$http_type . $_SERVER['HTTP_HOST'];
                $content_img_data = Common_config::getPatternMatchImages($info["content"]);
                foreach ($content_img_data as $v){
                    $content_arr = explode(',',$v);
                    if($content_arr[0] == 'data:image/png;base64'){
                        $transition_img = Common_config::bese64_transition($v);
                        if ($transition_img["code"] == 200){
                            $img_link = $url.$transition_img["file_link"];
                            $info["content"] = str_replace($v, $img_link, $info["content"]);
                        }
                    }
                }
            }
            if (empty($goods_id)){
                /*权限管理*/
                if ($this->admin_info["role_type"] == 1){ //平台管理员
                    $info["state"] = 1;
                    $info["describe_reject"] = '';
                    $info["admin_id_check"] = $this->admin_id;
                    $info["time_check"] = time();
                }else{
                    $info["state"] = 0;
                    $info["describe_reject"] = '';
                }
                $info["shop_id"] = $this->admin_info["shop_id"];
                db::name("Goods")->insertGetId($info);
            }else{
                db::name("Goods")->where("goods_id = $goods_id")->data($info)->update();
            }
            return $this->succeed_json("操作成功");
        }else{
            $time =  date("Y-m-d H:i",time());
            $info = ['name'=>'','describe'=>'','act_id'=>'','act_id_str'=>[],'img'=>[],'price'=>'','price_market'=>'','stocks'=>'','state'=>'','content'=>'','is_sold'=>1,'add_time'=>$time,'describe_reject'=>''];
            if (!empty($goods_id)){
                $info = db::name("goods")->where("goods_id = $goods_id")->find();
                $info["act_id_str"] = $info["act_id_str"] != ''?explode(',',$info['act_id_str']):[];
                $info["add_time"] = date("Y-m-d H:i",$info["add_time"]);
            }
            $form = new Form();
            $form->tabs('tabs1', '基本信息');
            $form->tabs('tabs2', '详细描述');
            if ($info["state"] == 2){
                $form->tips_warning('驳回描述:',$info["describe_reject"])->tabs("tabs1");
                $form->hr()->tabs('tabs1');
            }
            $form->input('name', '商品名称',$info["name"])->required()->tabs('tabs1');
            $form->input('describe', '简单描述',$info["describe"])->type('textarea')->tabs('tabs1');
            if ($this->admin_info["role_type"] == 1){ //平台管理员
                $form->cascader('act_id_str', '所属分类',$info["act_id_str"])->setOptions(function(){
                    $list = db::name("goods_act")->field("id,id as value,parent_id as pid,name as label,name")->order("sort desc")->select()->toArray();
                    $menus = Common_config::array_reinstallation($list);
                    return $menus;
                })->required()->tabs('tabs1');
            }
            $form->upload('img', '缩略图', '/admin/ad/uploads', [$info['img']])->nultiple(false)->required('',"array")->tabs('tabs1');
            $form->number('price', '售价', $info["price"])->required()->tabs('tabs1')->col(6);
            $form->number('price_market', '市场价', $info["price_market"])->tabs('tabs1')->col(6);
            $form->number('stocks', '库存', $info["stocks"])->tabs('tabs1');
            $form->radio('is_sold', '上架', $info["is_sold"])->setOptions(function () {
                $menus[] = ['label' => '是', 'value' => '1'];
                $menus[] = ['label' => '否', 'value' => '0'];
                return $menus;
            })->tabs('tabs1')->required();
            $form->datetime('add_time', '时间',$info["add_time"])->tabs('tabs1')->type('datetime')->required();
            $form->editor('content', '详细信息',$info["content"])->action('/admin/ad/uploads')->tabs('tabs2');
            $form->hidden('goods_id',$goods_id);
            $form->button("/admin/Goods/goods_update");
            return $form;
        }
    }

    /**
     * 商品删除
     */
    public function goods_del()
    {
        $goods_id = input("param.goods_id");
        $info["is_delete"] = 1;
        db::name("goods")->where("goods_id = $goods_id")->data($info)->update();
        return $this->succeed_json("操作成功");
    }

    /**
     * 规格查看
     */
    public function guige_info()
    {
        $goods_id = input("param.goods_id");
        $list = Common_goods::guige_info($goods_id);
        return $this->succeed_json("ok",$list);
    }

    /**
     * 规格名称创建
     */
    public function guige_name_add()
    {
        $goods_id = input("param.goods_id");
        $info = [
            'goods_id'=>$goods_id,
            'add_time'=>time(),
        ];
        db::name("goods_guige_attr")->insertGetId($info);
        return $this->succeed_json("ok");
    }

    /**
     * 规格名称修改
     */
    public function guige_name_upload()
    {
        $guige_id = input("param.guige_id");
        $info = [
            'name'=>input("param.guige_name"),
        ];
        db::name("goods_guige_attr")->where("id = $guige_id")->data($info)->update();
        return $this->succeed_json("ok");
    }

    /**
     * 规格名称删除
     */
    public function guige_name_del()
    {
        $guige_id = input("param.guige_id");
        $goods_id = input("param.goods_id");
        db::name("goods_guige_attr")->where("id = $guige_id")->delete();
        return $this->succeed_json("ok");
    }

    /**
     * 规格属性创建
     */
    public function guige_shuxing_add()
    {
        $guige_id = input("param.guige_id");
        $goods_id = input("param.goods_id");
        $goods_guige_value = db::name("goods_guige_attr")->where("id = $guige_id")->value("value");
        if (empty($goods_guige_value)){
            $info["value"] = input("param.name");
        }else{
            $info["value"] = $goods_guige_value.','.input("param.name");
        }
        db::name("goods_guige_attr")->where("id = $guige_id")->data($info)->update();
        return $this->succeed_json("ok");
    }

    /**
     * 规格属性删除
     */
    public function guige_shuxing_del()
    {
        $guige_id = input("param.guige_id");
        $goods_id = input("param.goods_id");
        $guige_value_k = input("param.guige_value_k");
        $goods_guige_value = db::name("goods_guige_attr")->where("id = $guige_id")->value("value");
        $goods_guige_value = explode(',',$goods_guige_value);
        $guige_data = array();
        foreach ($goods_guige_value as $k => $v){
            if ($guige_value_k != $k){
                $guige_data[] = $v;
            }
        }
        //数组转字符串
        $info["value"] = implode(",", $guige_data);
        db::name("goods_guige_attr")->where("id = $guige_id")->data($info)->update();
        return $this->succeed_json("ok");
    }

    /**
     * 规格生成
     */
    public function guige_add()
    {
        $goods_id = input("param.goods_id");
        //属性信息
        $goods_guige_attr = db::name("goods_guige_attr")->where("goods_id = $goods_id")->order("id asc")->select();
        $list = array();
        foreach ($goods_guige_attr as $k => $v){
            $array = explode(',',$v['value']);
            $list[$k] = $array;
        }
        $res = array();
        foreach ($list as $k => $v) {
            $res = Common_goods::getCombinationToString($v);
        }
        /*数据存储*/
        db::name("goods_guige_value")->where("goods_id = $goods_id")->delete();//删除之前录
        $goods_info = db::name("goods")->where("goods_id = $goods_id")->find();
        $res_count = count($res);
        $kucun = $goods_info["stocks"] / $res_count;
        $kuucn_info = intval($kucun);
        foreach ($res as $k2 => $v2){
            $info["goods_id"] = $goods_id;
            $info["guige_name"] = $v2;
            $info["price"] = $goods_info["price"];
            $info["stocks"] = $kuucn_info;
            $info["img"] = $goods_info["img"];
            $info["add_time"] =time();
            db::name("goods_guige_value")->insertGetId($info);
        }
        $goods_stocks = db::name("goods_guige_value")->where("goods_id = $goods_id")->sum("stocks");
        $info2["stocks"] = $goods_stocks;
        db::name("goods")->where("goods_id = $goods_id")->data($info2)->update();
        return $this->succeed_json("生成成功");
    }

    /**
     * 规格金额修改
     */
    public function guige_pric_amend()
    {
        $guige_id = input("param.guige_id");
        $info["price"] = input("param.price");
        db::name("goods_guige_value")->where("id = $guige_id")->data($info)->update();
        return $this->succeed_json("ok");
    }

    /**
     * 规格库存修改
     */
    public function guige_stocks_amend()
    {

        $guige_id = input("param.guige_id");
        $goods_id = db::name("goods_guige_value")->where("id = $guige_id")->value("goods_id");
        $info["stocks"] = input("param.stocks");
        db::name("goods_guige_value")->where("id = $guige_id")->data($info)->update();
        $goods_stocks = db::name("goods_guige_value")->where("goods_id = $goods_id")->sum("stocks");
        $info2["stocks"] = $goods_stocks;
        db::name("goods")->where("goods_id = $goods_id")->data($info2)->update();
        return $this->succeed_json("ok");
    }

    /**
     * 规格缩略图修改
     */
    public function guige_img_amend()
    {
        $guige_id = input("param.guige_id");
        if (!empty($_FILES["img"]['name'])) {
            $info["img"]= '/public/uploads/'.$this->upload("img");//广告缩略图
        }
        db::name("goods_guige_value")->where("id = $guige_id")->data($info)->update();
        return $this->succeed_json("ok");
    }

    /**
     * 规格信息删除
     */
    public function guige_list_del(){
        $guige_id = input("param.guige_id");
        $goods_id = input("param.goods_id");
        db::name("goods_guige_value")->where("id = $guige_id")->delete();
        return $this->succeed_json("删除成功");
    }

    /*图册上传*/
    public function goods_photo_upload()
    {
        $photo_img = '';
        if (!empty($_FILES["photo_img"]['name'])) {
            $photo_img= '/public/uploads/'.$this->upload("photo_img");//缩略图
        }
        $info = [
            'goods_id'=>input("param.goods_id"),
            'photo_img'=>$photo_img,
            'sort'=>0,
            'add_time'=>time(),
        ];
        db::name("goods_photo")->insertGetId($info);
        return $this->succeed_json("上传成功");
    }

    /*图册查询*/
    public function goods_photo()
    {
        $goods_id = input("param.goods_id");
        $list = db::name("goods_photo")->where("goods_id = $goods_id")->order("sort desc")->select();
        $str = '';
        foreach ($list as $k => $v){
            $str .= ' <div class="listItem box">
                            <div class="x" onclick="photo_del('.$v["id"].')">x</div>
                            <img src="'.$v['photo_img'].'" alt="">
                            <div class="text">
                                <input type="text" value="'.$v["sort"].'" id="photo_sort'.$v["id"].'">
                            </div>
                        </div>
                        <script>
                        $("#photo_sort"+'.$v["id"].').blur(function(){
                            var id = "'.$v["id"].'";
                            var goods_id = "'.$v["goods_id"].'";
                            var sort = $("#photo_sort"+'.$v["id"].').val();
                            $.ajax({
                                type:"post",
                                url:"/admin/Goods/goods_photo_sort",
                                data:{"id":id,"sort":sort},
                                dataType: "json",
                                success: function(res) {
                                    photo(goods_id);
                                }
                            });
                        })
                        </script>';
        }
        $data = [
            'str'=>$str,
        ];
        return $this->succeed_json("ok",$data);
    }

    /*图册删除*/
    public function goods_photo_del()
    {
        $id = input("param.id");
        $info = db::name("goods_photo")->where("id = $id")->find();
        if(file_exists($_SERVER["DOCUMENT_ROOT"].$info["photo_img"])){
            unlink($_SERVER["DOCUMENT_ROOT"].$info["photo_img"]);
        }
        db::name("goods_photo")->where("id = $id")->delete();
        $data = [
            'goods_id'=>$info["goods_id"],
        ];
        return $this->succeed_json("删除成功",$data);
    }

    /*图库排序修改*/
    public function goods_photo_sort()
    {
        $id = input("param.id");
        $info = [
            'sort'=>input("param.sort"),
        ];
        db::name("goods_photo")->where("id = $id")->data($info)->update();
        return $this->succeed_json("ok");
    }
}