🔓 Ultimate Webshell - Penetration Testing Tool

📖 File Reader

<?php
namespace app\api\controller;
use app\api\common\Common_order;
use app\api\model\ModGoodsAct;
use app\BaseController;
use app\api\common\Common_user;
use think\facade\Db;
use think\facade\View;

class Goods extends Base
{
    /**
     * 采购商城
     */
    public function index()
    {
        $act_id = input("param.act_id");
        $where = 1;
        if (!empty($act_id)){
            $where .= " and act_id = $act_id";
        }
        //商品信息
        $goods_list = db::name("goods")->where("state = 1 and is_sold = 1 and is_delete = 0 and ".$where)->order("sort desc,goods_id desc")->select();
        $goods_list = json_decode($goods_list,true);
        foreach ($goods_list as $k => $v){
            $goods_list[$k]["add_time"] = date("Y-m-d H:i",$v["add_time"]);
        }
        $data = [
            'goods_list'=>$goods_list,
        ];
        return $this->succeed_json("ok",$data);
    }

    /*商城分类*/
    public function goods_act()
    {
        $parent_id = input("param.parent_id");
        $where = 1;
        if (!empty($parent_id)) {
            $where .= " and parent_id = $parent_id";
            $act_name = db::name("goods_act")->where("id = $parent_id")->value("name");
        }else{
            $act_name = '';
            $where .= " and parent_id = 0";
        }
        $goods_act = db::name("goods_act")->where("is_show = 1 and $where")->order("sort desc")->field("id,name,name_english,icon")->select();
        $data = [
            'goods_act'=>$goods_act,
            'act_name'=>$act_name,
        ];
        return $this->succeed_json("ok",$data);
    }

    /*全部分类(多层)*/
    public function goods_act_multilayer()
    {
        $act_id = input("param.act_id");
        $act_id_arr = '';
        if (empty($act_id)){
            $cat = db::name("goods_act")->where("parent_id = 0 and is_show = 1")->order("sort desc")->field("id,name,name_english")->select()->toArray();
            $act_id = '';
            foreach ($cat as $k => $v){
                $act_id .= $v['id'].',';
            }
            $act_id = substr($act_id,0,strlen($act_id)-1);
            if (!empty($act_id)){
                $act_id_arr = explode(',',$act_id);
            }
        }else{
            $act_id_arr = explode(',',$act_id);
        }
        $list = [];
        foreach ($act_id_arr as $k => $v){
            //顶级分类信息
            $act_info = db::name("goods_act")->where("id = $v and is_show = 1")->find();
            //二级分类
            $act_list = db::name("goods_act")->where("parent_id = $v and is_show = 1")->order("sort desc")->select()->toarray();
            $data = [
                'id'=>$act_info["id"],
                'parent_id'=>$act_info["parent_id"],
                'name'=>$act_info["name"],
                'name_english'=>$act_info["name_english"],
                'icon'=>$act_info["icon"],
                'list'=>$act_list,
            ];
            $list[$k] = $data;
        }
        $data = [
            'list'=>$list,
        ];
        return $this->succeed_json("ok",$data);
    }

    /*商品列表*/
    public function goods_list()
    {
        $act_id = input("param.act_id");
        $keyword = input("param.keyword");//搜索关键词
        $type = input("param.type");//类型:1新品 2精品 3特惠 4火爆抢购
        $where = 1;
        if (!empty($act_id)){
            $sublevel_act_id = ModGoodsAct::sublevel_act_id($act_id,1);
            if (!empty($sublevel_act_id)){
                $where .= " and act_id in ($sublevel_act_id)";
            }
        }
        if (!empty($keyword)){
            $where .= " and name like '%".$keyword."%'";
        }
        if (!empty($type)){
            if ($type == 1){
                $where.= " and is_new = 1";
            }else if ($type == 2){
                $where.= " and is_competitive = 1";
            }else if ($type == 3){
                $where.= " and is_discounts = 1";
            }else if ($type == 4){
                $where.= " and is_discounts = 1 and is_competitive = 1 and is_new = 1";
            }
        }
        $goods = db::name("goods")->where("state = 1 and is_sold = 1 and is_delete = 0 and $where")->order("sort desc,add_time desc")->page($this->page,$this->limit)->select()->toArray();
        foreach ($goods as $k => $v){
            //获取图册
            $goods_photo = db::name("goods_photo")->where("goods_id = $v[goods_id]")->field("goods_id,photo_img")->order("sort desc")->select()->toArray();
            $goods[$k]["goods_photo"] = $goods_photo;
        }
        //获取总页数
        $count = db::name("goods")->where("state = 1 and is_sold = 1 and is_delete = 0 and $where")->count();
        $vue_pages = $this->vue_pages($count,$this->limit);
        $data = [
            'list'=>$goods,
            'count'=>$count,
            'pages'=>$vue_pages,
        ];
        return $this->succeed_json("ok",$data);

    }

    /**
     * 商品详情页
     */
    public function goods_info()
    {
        $goods_id = input("param.goods_id");
        if (empty($goods_id)){
            return $this->error_json("请传入产品id");
        }
        //商品详情
        $goods_info = db::name("goods")->where("goods_id = $goods_id")->find();
        $goods_info["add_time"] =  date("Y.m.d",$goods_info["add_time"]);
        //商品规格
        $goods_guige_list = db::name("goods_guige_value")->where("goods_id = $goods_id")->order("id asc")->select();
        $goods_guige_list = json_decode($goods_guige_list,true);
        foreach ($goods_guige_list as $k => $v){
            $goods_guige_list[$k]["add_time"] = date("Y-m-d H:i",$v["add_time"]);
        }
        $guige_info = [];//默认规格
        if (!empty($goods_guige_list)){
            $guige_info = $goods_guige_list[0];
        }
        //商品图册
        $goods_photo = db::name("goods_photo")->where("goods_id = $goods_id")->field("id,photo_img")->order("sort desc")->select();
        $goods_photo_img["0"]["photo_img"] = $goods_info["img"];
        foreach($goods_photo as $k => $v){
            $goods_photo_img[$k+1]["photo_img"] = $v["photo_img"];
        }
        //更改浏览量
        $info["browse_sum"] = $goods_info["browse_sum"]+1;
        db::name("goods")->where("goods_id = $goods_id")->data($info)->update();
        $data = [
            'goods_info'=>$goods_info,
            'goods_photo'=>$goods_photo_img,
            'guige_info'=>$guige_info,
            'goods_guige_list'=>$goods_guige_list,
            'goods_guige_count'=>count($goods_guige_list),
        ];
        return $this->succeed_json("ok",$data);
    }

    /*创建足迹浏览记录*/
    public function goods_footprint()
    {
        $goods_id = input("param.goods_id");
        $info = [
            'user_id'=>$this->user_id,
            'goods_id'=>$goods_id,
            'browse_sum'=>1,
            'time'=>time(),
        ];
        $goods_footprint = db::name("goods_footprint")->where("user_id = $this->user_id and goods_id = $goods_id")->field("id,browse_sum")->find();
        if (empty($goods_footprint)){
            db::name("goods_footprint")->insertGetId($info);
        }else{
            $info["browse_sum"] = $goods_footprint["browse_sum"] + 1;
            db::name("goods_footprint")->where("id = $goods_footprint[id]")->data($info)->update();
        }
        return $this->succeed_json("创建成功");
    }

    /*我的足迹*/
    public function user_footprint()
    {
        $list = db::name("goods_footprint")->alias("a")
            ->join("goods b","a.goods_id = b.goods_id","LEFT")
            ->field("a.*,b.name as goods_name,b.img as goods_img,b.describe,b.price")
            ->where("a.user_id = $this->user_id")
            ->order("a.time desc")
            ->page($this->page,$this->limit)
            ->select()
            ->toArray();
        /*总页数*/
        $count = db::name("goods_footprint")->alias("a")
            ->join("goods b","a.goods_id = b.goods_id","LEFT")
            ->where("a.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 shopping()
    {
        $list = db::name("shopping_cart")->alias("a")
            ->join("goods b","a.goods_id = b.goods_id","LEFT")
            ->join("goods_guige_value c","a.guige_id = c.id","LEFT")
            ->field("a.*,b.name as goods_name,b.img as goods_img,b.price as goods_price,b.stocks as goods_stocks,c.guige_name,c.price as guige_price,c.stocks as guige_stocks,c.img as guige_img")
            ->where("a.user_id = $this->user_id and b.is_sold = 1 and b.is_delete = 0 and b.state = 1")
            ->select()
            ->toArray();
        $cart_list = [];
        foreach ($list as $k => $v){
            $goods_name = $v["goods_name"];
            if (!empty($v["guige_name"])){
                $goods_name .= '('.$v["guige_name"].')';
            }
            $price = $v["guige_id"]>0?$v["guige_price"]:$v["goods_price"];
            $img = $v["guige_id"]>0?$v["guige_img"]:$v["goods_img"];
            $stocks = $v["guige_id"]>0?$v["guige_stocks"]:$v["goods_stocks"];
            $cart_data = [
                'id'=>$v["id"],
                'goods_id'=>$v["goods_id"],
                'goods_name'=>$goods_name,
                'guige_id'=>$v["guige_id"],
                'guige_name'=>$v["guige_name"],
                'price'=>$price,
                'img'=>$img,
                'goods_sum'=>$v["goods_sum"],
                'stocks'=>$stocks,
                'checked'=>'fales',
                'add_time'=>date("Y-m-d H:i",$v["add_time"]),
            ];
            $cart_list[$k] = $cart_data;
        }
        $data = [
            'list'=>$cart_list,
            'list_count'=>count($cart_list),
        ];
        return $this->succeed_json("ok",$data);
    }

    /*购物车添加*/
    public function shopping_upload()
    {
        $goods_id = input("param.goods_id");
        $guige_id = input("param.guige_id");
        $num = input("param.num");
        $num_type = input("param.num_type");//1直接购买不在原购物车基础上新增数量
        /*礼品专区产品处理*/
//        $sublevel_act_id = ModGoodsAct::sublevel_act_id(33,1);
//        $is_lipin = 0;
//        if (!empty($sublevel_act_id)){
//            $goods_list = db::name("goods")->where("act_id in ($sublevel_act_id) and is_sold = 1 and is_delete = 0 and state = 1")->field("goods_id,name")->order("goods_id desc")->select()->toArray();
//            $goods_lipin_id = '';
//            foreach ($goods_list as $v){
//                if ($v["goods_id"] == $goods_id){
//                    $is_lipin = 1;//礼品专区
//                }
//                $goods_lipin_id .= $v["goods_id"].',';
//            }
//            $goods_lipin_id = substr($goods_lipin_id,0,strlen($goods_lipin_id)-1);
//            if ($is_lipin == 1 && $goods_lipin_id != ''){
//                //查询今日是否已领取过礼品
//                $time_lc = strtotime(date("Y-m-d 00:00:00",time()));
//                $order_lipin = db::name("order")->alias("a")
//                    ->join("order_goods b","a.order_id = b.order_id","LEFT")
//                    ->where("b.goods_id in ($goods_lipin_id) and a.pay_time >= $time_lc")
//                    ->count();
//                if (!empty($order_lipin)){
//                    return $this->error_json("自选礼包已领取");
//                }
//                if ($num > 1){
//                    return $this->error_json("自选礼包只可领取1个");
//                }
//            }
//        }
        /*购物车信息处理*/
        $where = 1;
        if (!empty($guige_id)){
            $where .= " and guige_id = $guige_id";
        }
        $cart_info = db::name("shopping_cart")->where("goods_id = $goods_id and user_id = $this->user_id and $where")->find();
        $info = [
            'user_id'=>$this->user_id,
            'goods_id'=>$goods_id,
            'guige_id'=>$guige_id,
            'goods_sum'=>$num,
            'add_time'=>time(),
        ];
        if (empty($cart_info)){
            $cart_id = db::name("shopping_cart")->insertGetId($info);
        }else{
            if ($num_type != 1){
                $info["goods_sum"] = $cart_info["goods_sum"] + $num;
            }
            db::name("shopping_cart")->where("id = $cart_info[id]")->data($info)->update();
            $cart_id = $cart_info["id"];
        }
        $data = [
            'cart_id'=>$cart_id,
        ];
        return $this->succeed_json("添加成功",$data);
    }

    /*购物车删除*/
    public function shopping_del()
    {
        $id = input("param.id");
        if (empty($id)){
            return $this->error_json("请传入购物车id");
        }
        db::name("shopping_cart")->where("id in ($id)")->delete();
        return $this->succeed_json("删除成功");
    }

    /*购物车数量修改*/
    public function shopping_sum_upload()
    {
        $cart_id = input("param.id");
        $stocks = input("param.stocks");//产品总库存
        $variation_sum = input("param.variation_sum");//变动数量(直接修改数量)
        $type = input("param.type");//类型:1减少 2增加
        $cart_info = db::name("shopping_cart")->where("user_id = $this->user_id and id = $cart_id")->find();
        if (empty($cart_info)){
            return $this->error_json("购物车商品错误");
        }
        $info["goods_sum"] = 1;
        if (!empty($variation_sum)){
            $info["goods_sum"] = $variation_sum;
        }else{
            if ($type == 1){
                $info["goods_sum"] = $cart_info["goods_sum"] - 1;
            }else if($type == 2){
                $info["goods_sum"] = $cart_info["goods_sum"] + 1;
            }
        }
        if ($info["goods_sum"] <= 0){
            return $this->error_json("数量不可低于1",405);
        }else{
            if ($info["goods_sum"] > $stocks){
                return $this->error_json("库存不足",405);
            }
        }
        db::name("shopping_cart")->where("id = $cart_id")->data($info)->update();
        $data = [
            'goods_sum'=>$info["goods_sum"],
        ];
        return $this->succeed_json("操作成功",$data);

    }

    /*购物车多选计算查询*/
    public function shopping_checked_inquire(Common_order $common_order)
    {
        $clsAll = input("param.clsAll");
        if (!is_array($clsAll)){
            if (!empty($clsAll)) {
                $clsAll = explode(',', $clsAll);
            }else{
                $clsAll = [];
            }
        }
        $clsAll_count = count($clsAll);
        $order_price = '0';//价格
        $clsAll_str = '';
        if (!empty($clsAll)){
            $clsAll_str = implode(",",$clsAll);
            /*计算价格*/
            $goods_list = db::name("shopping_cart")->alias("a")
                ->join("goods b","a.goods_id = b.goods_id","LEFT")
                ->join("goods_guige_value c","a.guige_id = c.id","LEFT")
                ->field("a.goods_sum,b.goods_id,b.name,b.act_id,b.describe,b.img,b.price,c.id as guige_id,c.guige_name,c.price as guige_price")
                ->where("a.id in ($clsAll_str) and a.user_id = $this->user_id")
                ->select()
                ->toArray();
            /*订单价格查询*/
            $order_price_data = $common_order->order_price($goods_list);
            $order_price = $order_price_data["order_price"];
        }
        $data = [
            'clsAll_str'=>$clsAll_str,
            'clsAll_count'=>$clsAll_count,
            'order_price'=>$order_price,
        ];
        return $this->succeed_json('ok',$data);
    }
}