Index.php 9.9 KB
<?php

namespace app\api\controller;

use app\api\model\Category;
use app\api\model\Goods;
use app\api\model\News;
use app\api\model\UserSearch;
use app\common\controller\Api;
use think\Config;
use think\Db;

/**
 * 首页
 */
class Index extends Api
{
    protected $noNeedLogin = ['*'];
    protected $noNeedRight = ['*'];

    /**
     * @ApiTitle    (首页轮播图)
     * @ApiMethod   (POST)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiReturn   ({
    'code':'1',
    'msg':'返回成功'
    'data':'轮播图数组'
        'type':'类型:1=邀请有奖,2=商品详情'
        'goods_id':'商品id'
        'image':'轮播图'
    })
     */
    public function banner()
    {

        $model  = new News();
        $list = $model->where('status','normal')->field('type,goods_id,image')->select();
        $this->success('banner',$list);
    }

    /**
     * @ApiTitle    (首页分类)
     * @ApiMethod   (POST)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiReturn   ({
    'code':'1',
    'msg':'返回成功'
    'data':[
        {
        "id": 4,
        "name": "电子产品",
        "image": "https://her-family.oss-cn-qingdao.aliyuncs.com/addons_store_uploads/20181105/509af801726984aaa359b4bf249f5716.png",
        "image_text": "图片地址"
        },
        {
        "id": 6,
        "name": "水果",
        "image": "https://her-family.oss-cn-qingdao.aliyuncs.com/addons_store_uploads/20181105/c83a0019dfa7a768037e98f02b70efd5.jpg",
        "image_text": "图片地址"
        }
    ]
    })
     */
    public function category()
    {

        $model  = new Category();
        $list = $model->where('is_index','1')->field('id,name,image')->order('weigh desc')->limit(10)->select();
        $this->success('首页分类',$list);
    }

    /**
     * @ApiTitle    (首页活动&&通知文本)
     * @ApiMethod   (POST)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiReturn   ({
    'code':'1',
    'msg':'返回成功'
    'data':{
        "left": {
            "id": 1,
            "name": "新人用户",
            "place": "left"
        },
        "rightTop": {
            "id": 2,
            "name": "限时秒杀",
            "place": "rightTop"
        },
        "rightDown": {
            "id": 3,
            "name": "进口商品",
            "place": "rightDown"
        }
        "content": "首页通知文本"
    }
    })
     */
    public function activity()
    {
        $list = Db::name('activity')->select();
        $data = [];
        foreach ($list as $key => $value){
            if ($value['place'] == 'left'){
                $data['left'] = $value;
            }elseif ($value['place'] == 'rightTop'){
                $data['rightTop'] = $value;
            }else{
                $data['rightDown'] = $value;
            }
        }
        $data['content'] = Config::get('site.notice');
        $this->success('首页活动标题',$data);
    }


    /**
     * @ApiTitle    (猜你喜欢)
     * @ApiMethod   (POST)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name=page, type=integer, required=false, description="页数 默认1")
     * @ApiReturn   ({
    'code':'1',
    'msg':'返回成功'
    'data':{
        "total": 4,
        "per_page": 10,
        "current_page": 1,
        "last_page": 1,
        "data": [
            {
            "goods_id": 21,
            "goods_name": "小米Mix3",
            "image": null,
            "cart_number": 10, 购物车数量
            "price": "100.00", 价格
            "line_price": "1000.00", 划线价
            "image_text": "图片地址"
            "stock_num": 68, 商品总库存
            }
        ]
    })
     */
    public function userLike()
    {
        $page = $this->request->post('page',1);
        $model = new Goods();
        if ($this->auth->isLogin()){
            $list = $model->where('is_index','1')
                ->where('is_delete','0')
                ->where('goods_status','10')
                ->field('goods_id,goods_name,image')
                ->paginate(10,false,['page'=>$page])
                ->each(function ($item,$key){
                    $item['cart_number'] = Db::name('cart')
                        ->where('user_id',$this->auth->id)
                        ->where('goods_id',$item['goods_id'])
                        ->sum('number');
                    $goods_spec = Db::name('litestore_goods_spec')
                        ->where('goods_id',$item['goods_id'])
                        ->find();
                    $item['price'] = $goods_spec['goods_price'];
                    $item['line_price'] = $goods_spec['line_price'];
                    // 总库存
                    $item->append(['stock_num']);
                });
        }else{
            $list = $model->where('is_index','1')
                ->where('is_delete','0')
                ->where('goods_status','10')
                ->field('goods_id,goods_name,image')
                ->paginate(10,false,['page'=>$page])
                ->each(function ($item,$key){
                    $item['cart_number'] = 0;
                    $goods_spec = Db::name('litestore_goods_spec')
                        ->where('goods_id',$item['goods_id'])
                        ->find();
                    $item['price'] = $goods_spec['goods_price'];
                    $item['line_price'] = $goods_spec['line_price'];
                    // 总库存
                    $item->append(['stock_num']);
                });
        }

        $this->success('猜你喜欢',$list);
    }


    /**
     * @ApiTitle    (搜索)
     * @ApiMethod   (POST)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name=text, type=string, required=true, description="搜索文字")
     * @ApiParams   (name=page, type=integer, required=false, description="页数 默认1")
     * @ApiReturn   ({
    'code':'1',
    'msg':'搜索'
    'data':{
        "total": 4,
        "per_page": 10,
        "current_page": 1,
        "last_page": 1,
        "data": [
            {
            "goods_id": 21,
            "goods_name": "小米Mix3",
            "image": null,
            "cart_number": 10, 购物车数量
            "price": "100.00", 价格
            "line_price": "1000.00", 划线价
            "image_text": "图片地址"
            "stock_num": 68, 商品总库存
            }
        ]
    })
     */
    public function search()
    {
        $text = $this->request->post('text');
        $page = $this->request->post('page',1);
        if (!$text) $this->error('请填写搜索内容');
        $model = new Goods();
        if ($this->auth->isLogin()){
            $list = $model->where('keywords','like','%'.$text.'%')
                ->where('is_delete','0')
                ->where('goods_status','10')
                ->field('goods_id,goods_name,image')
                ->paginate(10,false,['page'=>$page])
                ->each(function ($item,$key){
                    $item['cart_number'] = Db::name('cart')
                        ->where('user_id',$this->auth->id)
                        ->where('goods_id',$item['goods_id'])
                        ->sum('number');
                    $goods_spec = Db::name('litestore_goods_spec')
                        ->where('goods_id',$item['goods_id'])
                        ->find();
                    $item['price'] = $goods_spec['goods_price'];
                    $item['line_price'] = $goods_spec['line_price'];
                    // 总库存
                    $item->append(['stock_num']);
                });
        }else{
            $list = $model->where('keywords','like','%'.$text.'%')
                ->where('is_delete','0')
                ->where('goods_status','10')
                ->field('goods_id,goods_name,image')
                ->paginate(10,false,['page'=>$page])
                ->each(function ($item,$key){
                    $item['cart_number'] = 0;
                    $goods_spec = Db::name('litestore_goods_spec')
                        ->where('goods_id',$item['goods_id'])
                        ->find();
                    $item['price'] = $goods_spec['goods_price'];
                    $item['line_price'] = $goods_spec['line_price'];
                    // 总库存
                    $item->append(['stock_num']);
                });
        }
        // 搜索记录
        $user_id = $this->auth->isLogin() ? $this->auth->id : 0;
        $search_text =  UserSearch::where(['user_id'=>$user_id,'text'=>$text])->find();
        if($search_text){
            $search_text->save(['updatetime' => time()]);
        }else{
            UserSearch::create([
                'user_id' => $user_id,
                'text' => $text
            ]);
        }
        $this->success('搜索',$list);
    }


    /**
     * @ApiTitle    (搜索历史)
     * @ApiMethod   (POST)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiReturn   ({
    'code':'1',
    'msg':'搜索历史'
    'data':null
    })
     */
    public function searchHistory()
    {
        if ($this->auth->isLogin()){
            $list = UserSearch::where('user_id',$this->auth->id)
                ->limit(10)
                ->order('updatetime','desc')
                ->column('text');
        }else{
            $list = [];
        }
        $this->success('搜索历史',$list);
    }

    /**
     * @ApiTitle    (搜索历史-清空)
     * @ApiMethod   (POST)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiReturn   ({
    'code':'1',
    'msg':'成功'
    'data':null
    })
     */
    public function searchHistoryClear()
    {
        UserSearch::where('user_id',$this->auth->id)->delete();
        $this->success('成功');
    }
}