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