247 lines
		
	
	
		
			8.0 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			247 lines
		
	
	
		
			8.0 KiB
		
	
	
	
		
			PHP
		
	
	
| 
								 | 
							
								<?php
							 | 
						|||
| 
								 | 
							
								// +----------------------------------------------------------------------
							 | 
						|||
| 
								 | 
							
								// | likeshop开源商城系统
							 | 
						|||
| 
								 | 
							
								// +----------------------------------------------------------------------
							 | 
						|||
| 
								 | 
							
								// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
							 | 
						|||
| 
								 | 
							
								// | gitee下载:https://gitee.com/likeshop_gitee
							 | 
						|||
| 
								 | 
							
								// | github下载:https://github.com/likeshop-github
							 | 
						|||
| 
								 | 
							
								// | 访问官网:https://www.likeshop.cn
							 | 
						|||
| 
								 | 
							
								// | 访问社区:https://home.likeshop.cn
							 | 
						|||
| 
								 | 
							
								// | 访问手册:http://doc.likeshop.cn
							 | 
						|||
| 
								 | 
							
								// | 微信公众号:likeshop技术社区
							 | 
						|||
| 
								 | 
							
								// | likeshop系列产品在gitee、github等公开渠道开源版本可免费商用,未经许可不能去除前后端官方版权标识
							 | 
						|||
| 
								 | 
							
								// |  likeshop系列产品收费版本务必购买商业授权,购买去版权授权后,方可去除前后端官方版权标识
							 | 
						|||
| 
								 | 
							
								// | 禁止对系统程序代码以任何目的,任何形式的再发布
							 | 
						|||
| 
								 | 
							
								// | likeshop团队版权所有并拥有最终解释权
							 | 
						|||
| 
								 | 
							
								// +----------------------------------------------------------------------
							 | 
						|||
| 
								 | 
							
								// | author: likeshop.cn.team
							 | 
						|||
| 
								 | 
							
								// +----------------------------------------------------------------------
							 | 
						|||
| 
								 | 
							
								namespace app\admin\logic\decoration;
							 | 
						|||
| 
								 | 
							
								use app\common\basics\Logic;
							 | 
						|||
| 
								 | 
							
								use app\common\enum\AdEnum;
							 | 
						|||
| 
								 | 
							
								use app\common\server\UrlServer;
							 | 
						|||
| 
								 | 
							
								use think\facade\Db;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								class AdLogic extends Logic{
							 | 
						|||
| 
								 | 
							
								    /**
							 | 
						|||
| 
								 | 
							
								     * Notes:广告列表
							 | 
						|||
| 
								 | 
							
								     * @param $get
							 | 
						|||
| 
								 | 
							
								     * @return array
							 | 
						|||
| 
								 | 
							
								     * @author: cjhao 2021/4/20 10:23
							 | 
						|||
| 
								 | 
							
								     */
							 | 
						|||
| 
								 | 
							
								    public static function lists($get){
							 | 
						|||
| 
								 | 
							
								        $where[] = ['A.del','=',0];
							 | 
						|||
| 
								 | 
							
								        $where[] = ['A.terminal','=',$get['terminal']];
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        if(isset($get['pid']) && $get['pid']){
							 | 
						|||
| 
								 | 
							
								            $where[] = ['A.pid','=',$get['pid']];
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        $lists = Db::name('ad')->alias('A')
							 | 
						|||
| 
								 | 
							
								                ->join('ad_position AP','A.pid = AP.id')
							 | 
						|||
| 
								 | 
							
								                ->where($where)
							 | 
						|||
| 
								 | 
							
								                ->order('A.sort asc, A.id desc')
							 | 
						|||
| 
								 | 
							
								                ->field('A.*,AP.name as pname')
							 | 
						|||
| 
								 | 
							
								                ->paginate(['list_rows'=>$get['limit'],'page'=>$get['page']]);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        $list = $lists->items();
							 | 
						|||
| 
								 | 
							
								        $count = $lists->total();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        foreach ($list as $key => $ad){
							 | 
						|||
| 
								 | 
							
								            $list[$key]['terminal_desc'] = AdEnum::getTerminal($ad['terminal']);
							 | 
						|||
| 
								 | 
							
								            $list[$key]['image'] = UrlServer::getFileUrl($ad['image']);
							 | 
						|||
| 
								 | 
							
								            switch ($ad['link_type']) {
							 | 
						|||
| 
								 | 
							
								                case 1:
							 | 
						|||
| 
								 | 
							
								                    $page = AdEnum::getLinkPage($ad['terminal'], $ad['link']);
							 | 
						|||
| 
								 | 
							
								                    $url = '商城页面:' . $page['name'];
							 | 
						|||
| 
								 | 
							
								                    break;
							 | 
						|||
| 
								 | 
							
								                case 2:
							 | 
						|||
| 
								 | 
							
								                    $goods = Db::name('goods')
							 | 
						|||
| 
								 | 
							
								                        ->where(['id' => $ad['link']])
							 | 
						|||
| 
								 | 
							
								                        ->field('name,min_price,max_price')
							 | 
						|||
| 
								 | 
							
								                        ->find();
							 | 
						|||
| 
								 | 
							
								                    if ($goods) {
							 | 
						|||
| 
								 | 
							
								                        $price = '¥' . $goods['max_price'];
							 | 
						|||
| 
								 | 
							
								                        if ($goods['max_price'] !== $goods['min_price']) {
							 | 
						|||
| 
								 | 
							
								                            $price = '¥' . $goods['min_price'] . '~' . $goods['max_price'];
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                        $url = '商品页面:' . $goods['name'] . '价格:' . $price;
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    break;
							 | 
						|||
| 
								 | 
							
								                case 3:
							 | 
						|||
| 
								 | 
							
								                    $url = '自定义链接:' . $ad['link'];
							 | 
						|||
| 
								 | 
							
								                    break;
							 | 
						|||
| 
								 | 
							
								                default:
							 | 
						|||
| 
								 | 
							
								                    $url = '';
							 | 
						|||
| 
								 | 
							
								                    break;
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            $list[$key]['link'] = $url;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        return ['count'=>$count,'lists'=>$list];
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    /**
							 | 
						|||
| 
								 | 
							
								     * Notes:添加广告
							 | 
						|||
| 
								 | 
							
								     * @param $post
							 | 
						|||
| 
								 | 
							
								     * @return bool
							 | 
						|||
| 
								 | 
							
								     * @author: cjhao 2021/4/20 10:54
							 | 
						|||
| 
								 | 
							
								     */
							 | 
						|||
| 
								 | 
							
								    public static function add($post){
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        $post['status'] = isset($post['status']) ? $post['status'] : 0;
							 | 
						|||
| 
								 | 
							
								        $post['link_type'] = isset($post['link_type']) ? $post['link_type'] : '';
							 | 
						|||
| 
								 | 
							
								        $link = '';
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        switch ($post['link_type']) {
							 | 
						|||
| 
								 | 
							
								            case '1':
							 | 
						|||
| 
								 | 
							
								                $link = $post['page'];
							 | 
						|||
| 
								 | 
							
								                break;
							 | 
						|||
| 
								 | 
							
								            case '2':
							 | 
						|||
| 
								 | 
							
								                $link = $post['goods_id'];
							 | 
						|||
| 
								 | 
							
								                break;
							 | 
						|||
| 
								 | 
							
								            case '3':
							 | 
						|||
| 
								 | 
							
								                $link = $post['url'];
							 | 
						|||
| 
								 | 
							
								                break;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        $now = time();
							 | 
						|||
| 
								 | 
							
								        $data = [
							 | 
						|||
| 
								 | 
							
								            'title'         => $post['title'],
							 | 
						|||
| 
								 | 
							
								            'terminal'      => $post['terminal'],
							 | 
						|||
| 
								 | 
							
								            'pid'           => $post['pid'],
							 | 
						|||
| 
								 | 
							
								            'image'         => isset($post['image']) ? clearDomain($post['image']) : '',
							 | 
						|||
| 
								 | 
							
								            'link_type'     => $post['link_type'],
							 | 
						|||
| 
								 | 
							
								            'link'          => $link,
							 | 
						|||
| 
								 | 
							
								            'status'        => $post['status'],
							 | 
						|||
| 
								 | 
							
								            'category_id'   => $post['category_id'] ?? 0,
							 | 
						|||
| 
								 | 
							
								            'sort'          =>  $post['sort'] > 0 ? $post['sort'] : 50,
							 | 
						|||
| 
								 | 
							
								            'create_time'   => $now,
							 | 
						|||
| 
								 | 
							
								        ];
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        return Db::name('ad')->insert($data);
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    /**
							 | 
						|||
| 
								 | 
							
								     * Notes:编辑广告
							 | 
						|||
| 
								 | 
							
								     * @param $post
							 | 
						|||
| 
								 | 
							
								     * @return bool
							 | 
						|||
| 
								 | 
							
								     * @author: cjhao 2021/4/20 10:54
							 | 
						|||
| 
								 | 
							
								     */
							 | 
						|||
| 
								 | 
							
								    public static function edit($post){
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        $post['status'] = isset($post['status']) ? $post['status'] : 0;
							 | 
						|||
| 
								 | 
							
								        $post['link_type'] = isset($post['link_type']) ? $post['link_type'] : '';
							 | 
						|||
| 
								 | 
							
								        $link = '';
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        switch ($post['link_type']) {
							 | 
						|||
| 
								 | 
							
								            case '1':
							 | 
						|||
| 
								 | 
							
								                $link = $post['page'];
							 | 
						|||
| 
								 | 
							
								                break;
							 | 
						|||
| 
								 | 
							
								            case '2':
							 | 
						|||
| 
								 | 
							
								                $link = $post['goods_id'];
							 | 
						|||
| 
								 | 
							
								                break;
							 | 
						|||
| 
								 | 
							
								            case '3':
							 | 
						|||
| 
								 | 
							
								                $link = $post['url'];
							 | 
						|||
| 
								 | 
							
								                break;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        $now = time();
							 | 
						|||
| 
								 | 
							
								        $data = [
							 | 
						|||
| 
								 | 
							
								            'title'         => $post['title'],
							 | 
						|||
| 
								 | 
							
								            'pid'           => $post['pid'],
							 | 
						|||
| 
								 | 
							
								            'image'         => isset($post['image']) ? clearDomain($post['image']) : '',
							 | 
						|||
| 
								 | 
							
								            'link_type'     => $post['link_type'],
							 | 
						|||
| 
								 | 
							
								            'link'          => $link,
							 | 
						|||
| 
								 | 
							
								            'status'        => $post['status'],
							 | 
						|||
| 
								 | 
							
								            'category_id'   => $post['category_id'] ?? 0,
							 | 
						|||
| 
								 | 
							
								            'sort'          => $post['sort'] > 0 ? $post['sort'] : 50,
							 | 
						|||
| 
								 | 
							
								            'update_time'   => $now,
							 | 
						|||
| 
								 | 
							
								        ];
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        return Db::name('ad')->where(['id'=>$post['id']])->update($data);;
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    /**
							 | 
						|||
| 
								 | 
							
								     * Notes:获取广告信息
							 | 
						|||
| 
								 | 
							
								     * @param $id
							 | 
						|||
| 
								 | 
							
								     * @return array|\think\Model|null
							 | 
						|||
| 
								 | 
							
								     * @author: cjhao 2021/4/20 10:55
							 | 
						|||
| 
								 | 
							
								     */
							 | 
						|||
| 
								 | 
							
								    public static function getAd($id){
							 | 
						|||
| 
								 | 
							
								        $detail =  Db::name('ad')
							 | 
						|||
| 
								 | 
							
								                ->where(['id'=>$id,'del'=>0])
							 | 
						|||
| 
								 | 
							
								                ->find();
							 | 
						|||
| 
								 | 
							
								        if($detail) {
							 | 
						|||
| 
								 | 
							
								            $detail['image'] = UrlServer::getFileUrl($detail['image']);
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        $detail['goods'] = [];
							 | 
						|||
| 
								 | 
							
								        if ($detail['link_type'] == 2) {
							 | 
						|||
| 
								 | 
							
								            $goods = Db::name('goods')
							 | 
						|||
| 
								 | 
							
								                ->where(['id' => $detail['link']])
							 | 
						|||
| 
								 | 
							
								                ->field('id,name,image,min_price,max_price')
							 | 
						|||
| 
								 | 
							
								                ->find();
							 | 
						|||
| 
								 | 
							
								            $price = '¥' . $goods['max_price'];
							 | 
						|||
| 
								 | 
							
								            if ($goods['max_price'] !== $goods['min_price']) {
							 | 
						|||
| 
								 | 
							
								                $price = '¥' . $goods['min_price'] . '~' . $goods['max_price'];
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            $goods['price'] = $price;
							 | 
						|||
| 
								 | 
							
								            $detail['goods'] = $goods;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        return $detail;
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    /**
							 | 
						|||
| 
								 | 
							
								     * Notes:删除广告
							 | 
						|||
| 
								 | 
							
								     * @param $id
							 | 
						|||
| 
								 | 
							
								     * @return int
							 | 
						|||
| 
								 | 
							
								     * @author: cjhao 2021/4/20 10:55
							 | 
						|||
| 
								 | 
							
								     */
							 | 
						|||
| 
								 | 
							
								    public static function del($id){
							 | 
						|||
| 
								 | 
							
								        return Db::name('ad')
							 | 
						|||
| 
								 | 
							
								                ->where(['id'=>$id,'del'=>0])
							 | 
						|||
| 
								 | 
							
								                ->update(['update_time'=>time(),'del'=>1]);
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    /**
							 | 
						|||
| 
								 | 
							
								     * Notes:切换广告状态
							 | 
						|||
| 
								 | 
							
								     * @param $post
							 | 
						|||
| 
								 | 
							
								     * @return int
							 | 
						|||
| 
								 | 
							
								     * @author: cjhao 2021/4/20 10:56
							 | 
						|||
| 
								 | 
							
								     */
							 | 
						|||
| 
								 | 
							
								    public static function swtichStatus($post){
							 | 
						|||
| 
								 | 
							
								        return Db::name('ad')
							 | 
						|||
| 
								 | 
							
								            ->update($post);
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    /**
							 | 
						|||
| 
								 | 
							
								     * Notes:获取广告位列表
							 | 
						|||
| 
								 | 
							
								     * @param $terminal
							 | 
						|||
| 
								 | 
							
								     * @return array|\think\Model|null
							 | 
						|||
| 
								 | 
							
								     * @author: cjhao 2021/4/20 11:04
							 | 
						|||
| 
								 | 
							
								     */
							 | 
						|||
| 
								 | 
							
								    public static function getPositionList($terminal){
							 | 
						|||
| 
								 | 
							
								        return Db::name('ad_position')
							 | 
						|||
| 
								 | 
							
								                ->where(['del'=>0,'terminal'=>$terminal,'status'=>1])
							 | 
						|||
| 
								 | 
							
								                ->field('id,name,height,width')
							 | 
						|||
| 
								 | 
							
								                ->select();
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    /**
							 | 
						|||
| 
								 | 
							
								     * Notes:获取分类列表
							 | 
						|||
| 
								 | 
							
								     * @return \think\Collection
							 | 
						|||
| 
								 | 
							
								     * @author: cjhao 2021/4/20 11:06
							 | 
						|||
| 
								 | 
							
								     */
							 | 
						|||
| 
								 | 
							
								    public static function getCategoryList(){
							 | 
						|||
| 
								 | 
							
								        return Db::name('goods_category')
							 | 
						|||
| 
								 | 
							
								                ->where(['del'=>0,'level'=>1])
							 | 
						|||
| 
								 | 
							
								                ->select();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								}
							 |