300 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			300 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			PHP
		
	
	
| 
								 | 
							
								<?php
							 | 
						|||
| 
								 | 
							
								// +----------------------------------------------------------------------
							 | 
						|||
| 
								 | 
							
								// | LikeShop有特色的全开源社交分销电商系统
							 | 
						|||
| 
								 | 
							
								// +----------------------------------------------------------------------
							 | 
						|||
| 
								 | 
							
								// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
							 | 
						|||
| 
								 | 
							
								// | 商业用途务必购买系统授权,以免引起不必要的法律纠纷
							 | 
						|||
| 
								 | 
							
								// | 禁止对系统程序代码以任何目的,任何形式的再发布
							 | 
						|||
| 
								 | 
							
								// | 微信公众号:好象科技
							 | 
						|||
| 
								 | 
							
								// | 访问官网:http://www.likeshop.net
							 | 
						|||
| 
								 | 
							
								// | 访问社区:http://bbs.likeshop.net
							 | 
						|||
| 
								 | 
							
								// | 访问手册:http://doc.likeshop.net
							 | 
						|||
| 
								 | 
							
								// | 好象科技开发团队 版权所有 拥有最终解释权
							 | 
						|||
| 
								 | 
							
								// +----------------------------------------------------------------------
							 | 
						|||
| 
								 | 
							
								// | Author: LikeShopTeam
							 | 
						|||
| 
								 | 
							
								// +----------------------------------------------------------------------
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								namespace app\api\logic;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								use app\common\basics\Logic;
							 | 
						|||
| 
								 | 
							
								use app\common\enum\GoodsEnum;
							 | 
						|||
| 
								 | 
							
								use app\common\enum\ShopEnum;
							 | 
						|||
| 
								 | 
							
								use app\common\model\goods\Goods;
							 | 
						|||
| 
								 | 
							
								use app\common\server\ConfigServer;
							 | 
						|||
| 
								 | 
							
								use app\common\model\shop\ShopFollow;
							 | 
						|||
| 
								 | 
							
								use app\common\model\shop\ShopCategory;
							 | 
						|||
| 
								 | 
							
								use app\common\server\UrlServer;
							 | 
						|||
| 
								 | 
							
								use think\facade\Db;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								class PcLogic extends Logic
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    /**
							 | 
						|||
| 
								 | 
							
								     * Notes:pc端获取公共数据
							 | 
						|||
| 
								 | 
							
								     * @param $user_id int 用户id
							 | 
						|||
| 
								 | 
							
								     * @return array
							 | 
						|||
| 
								 | 
							
								     * @author:  2021/3/5 17:47
							 | 
						|||
| 
								 | 
							
								     */
							 | 
						|||
| 
								 | 
							
								    public static function commonData($user_id)
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        $article = Db::name('article')
							 | 
						|||
| 
								 | 
							
								            ->where(['del' => 0, 'is_notice' => 1, 'is_show' => 1])
							 | 
						|||
| 
								 | 
							
								            ->order('create_time desc')
							 | 
						|||
| 
								 | 
							
								            ->field('id,title')
							 | 
						|||
| 
								 | 
							
								            ->limit(3)
							 | 
						|||
| 
								 | 
							
								            ->select();
							 | 
						|||
| 
								 | 
							
								        $cart_num = 0;
							 | 
						|||
| 
								 | 
							
								        $coupon_num = 0;
							 | 
						|||
| 
								 | 
							
								        $nickname = '';
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        if ($user_id) {
							 | 
						|||
| 
								 | 
							
								            $cart_num = Db::name('cart')->where(['user_id' => $user_id])->sum('goods_num');
							 | 
						|||
| 
								 | 
							
								            $coupon_num = Db::name('coupon_list')->where(['user_id' => $user_id, 'del' => 0, 'status' => 0])->count();
							 | 
						|||
| 
								 | 
							
								            $nickname = Db::name('user')->where(['id' => $user_id])->value('nickname');
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        return [
							 | 
						|||
| 
								 | 
							
								            'article' => $article,
							 | 
						|||
| 
								 | 
							
								            'logo' => UrlServer::getFileUrl(ConfigServer::get('website', 'pc_logo')),
							 | 
						|||
| 
								 | 
							
								            'name' => ConfigServer::get('website', 'name', ''),
							 | 
						|||
| 
								 | 
							
								            'cart_num' => $cart_num,
							 | 
						|||
| 
								 | 
							
								            'coupon_num' => $coupon_num,
							 | 
						|||
| 
								 | 
							
								            'nickname' => $nickname,
							 | 
						|||
| 
								 | 
							
								            'oa_qr_code' => UrlServer::getFileUrl(ConfigServer::get('oa', 'qr_code', '')),
							 | 
						|||
| 
								 | 
							
								            'mnp_qr_code' => UrlServer::getFileUrl(ConfigServer::get('mnp', 'qr_code', '')),
							 | 
						|||
| 
								 | 
							
								        ];
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    /**
							 | 
						|||
| 
								 | 
							
								     * Notes:获取商品列表
							 | 
						|||
| 
								 | 
							
								     * @param $page int 页码
							 | 
						|||
| 
								 | 
							
								     * @param $size int 每页数量
							 | 
						|||
| 
								 | 
							
								     * @param $name string 商品名称
							 | 
						|||
| 
								 | 
							
								     * @param $category_id int 分类id
							 | 
						|||
| 
								 | 
							
								     * @param $type int 类型:1-热销榜单;2-新品推荐;3-好物优选
							 | 
						|||
| 
								 | 
							
								     * @param $sort_type string 筛选类型:sales_sum-销量筛选;price-价格筛选
							 | 
						|||
| 
								 | 
							
								     * @param $sort string 排序方式:desc-降序;asc-升序
							 | 
						|||
| 
								 | 
							
								     * @return array
							 | 
						|||
| 
								 | 
							
								     * @author:  2021/3/6 9:57
							 | 
						|||
| 
								 | 
							
								     */
							 | 
						|||
| 
								 | 
							
								    public static function goodsList($page, $size, $name, $category_id,$shop_id, $type, $sort_type, $sort)
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        $where[] = ['del', '=', 0];
							 | 
						|||
| 
								 | 
							
								        $where[] = ['status', '=', 1];
							 | 
						|||
| 
								 | 
							
								        //按商品名称搜索
							 | 
						|||
| 
								 | 
							
								        if ($name) {
							 | 
						|||
| 
								 | 
							
								            $where[] = ['name', 'like', '%' . $name . '%'];
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        //按商品分类搜索
							 | 
						|||
| 
								 | 
							
								        if ($category_id) {
							 | 
						|||
| 
								 | 
							
								            $where[] = ['shop_cate_id', '=', $category_id];
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        //按商品名称搜索
							 | 
						|||
| 
								 | 
							
								        if ($shop_id) {
							 | 
						|||
| 
								 | 
							
								            $where[] = ['shop_id','=',$shop_id];
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        //按类型筛选
							 | 
						|||
| 
								 | 
							
								        if (1 != $type) {
							 | 
						|||
| 
								 | 
							
								            switch ($type) {
							 | 
						|||
| 
								 | 
							
								                case 2:
							 | 
						|||
| 
								 | 
							
								                    $where[] = ['is_new', '=', 1];
							 | 
						|||
| 
								 | 
							
								                    break;
							 | 
						|||
| 
								 | 
							
								                case 3:
							 | 
						|||
| 
								 | 
							
								                    $where[] = ['is_best', '=', 1];
							 | 
						|||
| 
								 | 
							
								                    break;
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        //按排序条件显示
							 | 
						|||
| 
								 | 
							
								        $order = [];
							 | 
						|||
| 
								 | 
							
								        if ($sort_type && $sort) {
							 | 
						|||
| 
								 | 
							
								            $order = [$sort_type => $sort];
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        $goods = new Goods();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        $count = $goods
							 | 
						|||
| 
								 | 
							
								            ->where($where)
							 | 
						|||
| 
								 | 
							
								            ->count();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        $list = $goods
							 | 
						|||
| 
								 | 
							
								            ->where($where)
							 | 
						|||
| 
								 | 
							
								            ->field('id,name,image,min_price as price,market_price,sales_actual + sales_virtual as sales_sum')
							 | 
						|||
| 
								 | 
							
								            ->order($order)
							 | 
						|||
| 
								 | 
							
								            ->page($page, $size)
							 | 
						|||
| 
								 | 
							
								            ->select();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        $more = is_more($count, $page, $size);  //是否有下一页
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        return [
							 | 
						|||
| 
								 | 
							
								            'list' => $list,
							 | 
						|||
| 
								 | 
							
								            'page' => $page,
							 | 
						|||
| 
								 | 
							
								            'size' => $size,
							 | 
						|||
| 
								 | 
							
								            'count' => $count,
							 | 
						|||
| 
								 | 
							
								            'more' => $more
							 | 
						|||
| 
								 | 
							
								        ];
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    /**
							 | 
						|||
| 
								 | 
							
								     * Notes:修改用户信息
							 | 
						|||
| 
								 | 
							
								     * @param $post array 用户信息
							 | 
						|||
| 
								 | 
							
								     * @return int|string
							 | 
						|||
| 
								 | 
							
								     * @author:  2021/3/8 19:07
							 | 
						|||
| 
								 | 
							
								     * @throws \think\exception\PDOException
							 | 
						|||
| 
								 | 
							
								     * @throws \think\Exception
							 | 
						|||
| 
								 | 
							
								     */
							 | 
						|||
| 
								 | 
							
								    public static function changeUserInfo($post)
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        $data = [
							 | 
						|||
| 
								 | 
							
								            'nickname' => $post['nickname'],
							 | 
						|||
| 
								 | 
							
								            'sex' => $post['sex'],
							 | 
						|||
| 
								 | 
							
								            'update_time' => time(),
							 | 
						|||
| 
								 | 
							
								        ];
							 | 
						|||
| 
								 | 
							
								        Db::name('user')->where(['id' => $post['user_id']])->update($data);
							 | 
						|||
| 
								 | 
							
								        return true;
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    public static function categoryThirdTree()
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								//        $cache = Cache::get('goods_category_'.);
							 | 
						|||
| 
								 | 
							
								//        if ($cache) {
							 | 
						|||
| 
								 | 
							
								//            return $cache;
							 | 
						|||
| 
								 | 
							
								//        }
							 | 
						|||
| 
								 | 
							
								        $lists = Db::name('goods_category')->where(['is_show' => 1, 'del' => 0, 'level' => 1])->order('sort asc')->column('id,name,pid,image,level', 'id');
							 | 
						|||
| 
								 | 
							
								        $level2 = Db::name('goods_category')->where(['is_show' => 1, 'del' => 0, 'level' => 2])->order('sort asc')->column('id,name,pid,image,level', 'id');
							 | 
						|||
| 
								 | 
							
								        $level3 = Db::name('goods_category')->where(['is_show' => 1, 'del' => 0, 'level' => 3])->order('sort asc')->field('id,name,pid,image,level')->select();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //挂载第二级
							 | 
						|||
| 
								 | 
							
								        foreach ($level3 as $list3) {
							 | 
						|||
| 
								 | 
							
								            if (isset($level2[$list3['pid']])) {
							 | 
						|||
| 
								 | 
							
								                $list3['image'] = UrlServer::getFileUrl($list3['image']);
							 | 
						|||
| 
								 | 
							
								                $list3['type'] = 1;
							 | 
						|||
| 
								 | 
							
								                $level2[$list3['pid']]['sons'][] = $list3;
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        //挂载第一级、并移除没有下级的二级分类
							 | 
						|||
| 
								 | 
							
								        foreach ($level2 as $key2 => $list2) {
							 | 
						|||
| 
								 | 
							
								            if (isset($lists[$list2['pid']])) {
							 | 
						|||
| 
								 | 
							
								                $list2['type'] = 1;
							 | 
						|||
| 
								 | 
							
								                $list2['image'] = UrlServer::getFileUrl($list2['image']);
							 | 
						|||
| 
								 | 
							
								                $lists[$list2['pid']]['sons'][] = $list2;
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //移除没有完整的三级分类
							 | 
						|||
| 
								 | 
							
								        foreach ($lists as $key1 => $list1) {
							 | 
						|||
| 
								 | 
							
								            if (!isset($list1['sons'])) {
							 | 
						|||
| 
								 | 
							
								                $lists[$key1]['sons'] = [];
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            $lists[$key1]['image'] = UrlServer::getFileUrl($list1['image']);
							 | 
						|||
| 
								 | 
							
								            $lists[$key1]['type'] = 1;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								//        Cache::set('goods_category_pc'.$client, array_values($lists));
							 | 
						|||
| 
								 | 
							
								        return array_values($lists);
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    public static function articleDetail($id)
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        $article = Db::name('article')
							 | 
						|||
| 
								 | 
							
								            ->field('id,title,create_time,visit,content')
							 | 
						|||
| 
								 | 
							
								            ->where(['id' => $id])
							 | 
						|||
| 
								 | 
							
								            ->find();
							 | 
						|||
| 
								 | 
							
								        $article['create_time'] = date('Y-m-d H:i:s',$article['create_time']);
							 | 
						|||
| 
								 | 
							
								        $visit = $article['visit'] + 1;
							 | 
						|||
| 
								 | 
							
								        Db::name('article')->where(['id' => $id])->update(['visit' => $visit]);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        if(empty($article) || !$article) {
							 | 
						|||
| 
								 | 
							
								            $article = [];
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        $recommend_list = Db::name('article')
							 | 
						|||
| 
								 | 
							
								            ->where([['del','=','0'], ['id','<>',$id]])
							 | 
						|||
| 
								 | 
							
								            ->field('id,title,image,visit')
							 | 
						|||
| 
								 | 
							
								            ->order('visit desc')
							 | 
						|||
| 
								 | 
							
								            ->limit(5)
							 | 
						|||
| 
								 | 
							
								            ->select()
							 | 
						|||
| 
								 | 
							
								            ->toArray();
							 | 
						|||
| 
								 | 
							
								        foreach ($recommend_list as &$recommend){
							 | 
						|||
| 
								 | 
							
								            $recommend['image'] = UrlServer::getFileUrl($recommend['image']);
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        $article['recommend_list'] = $recommend_list;
							 | 
						|||
| 
								 | 
							
								        return $article;
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    /**
							 | 
						|||
| 
								 | 
							
								     * @notes PC我的店铺收藏列表
							 | 
						|||
| 
								 | 
							
								     * @param $get
							 | 
						|||
| 
								 | 
							
								     * @return array
							 | 
						|||
| 
								 | 
							
								     * @throws \think\db\exception\DataNotFoundException
							 | 
						|||
| 
								 | 
							
								     * @throws \think\db\exception\DbException
							 | 
						|||
| 
								 | 
							
								     * @throws \think\db\exception\ModelNotFoundException
							 | 
						|||
| 
								 | 
							
								     * @author suny
							 | 
						|||
| 
								 | 
							
								     * @date 2021/10/28 5:09 下午
							 | 
						|||
| 
								 | 
							
								     */
							 | 
						|||
| 
								 | 
							
								    public static function shopFollowList($get)
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        $where = [
							 | 
						|||
| 
								 | 
							
								            'sf.user_id' => $get['user_id'],
							 | 
						|||
| 
								 | 
							
								            'sf.status' => 1
							 | 
						|||
| 
								 | 
							
								        ];
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        $lists = ShopFollow::alias('sf')
							 | 
						|||
| 
								 | 
							
								            ->field('s.id,s.name,s.cid,s.type,s.logo,s.score,s.cover,sf.shop_id')
							 | 
						|||
| 
								 | 
							
								            ->leftJoin('shop s', 's.id=sf.shop_id')
							 | 
						|||
| 
								 | 
							
								            ->where($where)
							 | 
						|||
| 
								 | 
							
								            ->order('sf.update_time', 'desc')
							 | 
						|||
| 
								 | 
							
								            ->page($get['page_no'], $get['page_size'])
							 | 
						|||
| 
								 | 
							
								            ->select()
							 | 
						|||
| 
								 | 
							
								            ->toArray();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        $count = ShopFollow::alias('sf')->where($where)->count();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        $typeDesc = [1=>'官方自营', 2=>'入驻商家'];
							 | 
						|||
| 
								 | 
							
								        foreach($lists as &$item) {
							 | 
						|||
| 
								 | 
							
								            // 店铺推荐商品
							 | 
						|||
| 
								 | 
							
								            $goodsWhere = [
							 | 
						|||
| 
								 | 
							
								                ['del', '=', GoodsEnum::DEL_NORMAL],  // 未删除
							 | 
						|||
| 
								 | 
							
								                ['status', '=', GoodsEnum::STATUS_SHELVES], // 上架中
							 | 
						|||
| 
								 | 
							
								                ['audit_status', '=', GoodsEnum::AUDIT_STATUS_OK], // 审核通过
							 | 
						|||
| 
								 | 
							
								                ['is_recommend', '=', 1], // 推荐商品
							 | 
						|||
| 
								 | 
							
								                ['shop_id', '=', $item['id']]
							 | 
						|||
| 
								 | 
							
								            ];
							 | 
						|||
| 
								 | 
							
								            $item['goods_list'] = Goods::field('id,image,name,min_price,market_price')
							 | 
						|||
| 
								 | 
							
								                ->where($goodsWhere)
							 | 
						|||
| 
								 | 
							
								                ->order([
							 | 
						|||
| 
								 | 
							
								                    'sort_weight' => 'asc',
							 | 
						|||
| 
								 | 
							
								                    'id' => 'desc'
							 | 
						|||
| 
								 | 
							
								                ])
							 | 
						|||
| 
								 | 
							
								                ->limit(5)
							 | 
						|||
| 
								 | 
							
								                ->select()
							 | 
						|||
| 
								 | 
							
								                ->toArray();
							 | 
						|||
| 
								 | 
							
								            // 商家类型
							 | 
						|||
| 
								 | 
							
								            $item['type_desc'] = $typeDesc[$item['type']];
							 | 
						|||
| 
								 | 
							
								            // 主营类目
							 | 
						|||
| 
								 | 
							
								            $item['cid_desc'] = ShopCategory::where('id', $item['cid'])->value('name');
							 | 
						|||
| 
								 | 
							
								            // logo
							 | 
						|||
| 
								 | 
							
								            $item['logo'] = UrlServer::getFileUrl($item['logo']);
							 | 
						|||
| 
								 | 
							
								            $item['cover'] = $item['cover'] ? UrlServer::getFileUrl($item['cover']) : UrlServer::getFileUrl(ShopEnum::DEFAULT_COVER);
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        $data = [
							 | 
						|||
| 
								 | 
							
								            'lists' => $lists,
							 | 
						|||
| 
								 | 
							
								            'count' => $count,
							 | 
						|||
| 
								 | 
							
								            'more' => is_more($count, $get['page_no'], $get['page_size']),
							 | 
						|||
| 
								 | 
							
								            'page_no' => $get['page_no'],
							 | 
						|||
| 
								 | 
							
								            'page_size' => $get['page_size'],
							 | 
						|||
| 
								 | 
							
								        ];
							 | 
						|||
| 
								 | 
							
								        return $data;
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 |