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();
 | ||
| 
 | ||
|     }
 | ||
| 
 | ||
| 
 | ||
| 
 | ||
| }
 |