app开屏广告

花门楼前见秋草,岂能贫贱相看老。这篇文章主要讲述app开屏广告相关的知识,希望能为你提供帮助。
最近公司有个需求需要做app开屏广告(跳转到不同的页面)--下面是app开屏广告的处理

app开屏广告

文章图片

1.管理后台效果图
(1)广告链接--商品详情
app开屏广告

文章图片

 
app开屏广告

文章图片

app开屏广告

文章图片

(2)广告链接--关联模块
app开屏广告

文章图片

【app开屏广告】(3)广告链接--消息富文本
app开屏广告

文章图片

(4)广告链接--H5页面
app开屏广告

文章图片

(5)广告链接--蜂雷头条
app开屏广告

文章图片

app开屏广告

文章图片

2.数据表的设计
  CREATE TABLE `lc_open_ad` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `second` int(11) DEFAULT NULL COMMENT \'开屏广告停留时长(单位:秒)\',
  `ad_effective_start` datetime DEFAULT NULL COMMENT \'开屏广告有效时间--开始时间\',
  `ad_effective_end` datetime DEFAULT NULL COMMENT \'开屏广告有效时间--结束时间\',
  `ad_url` varchar(100) DEFAULT NULL COMMENT \' 开屏广告图片地址\',
  `ad_link_type` int(11) DEFAULT NULL COMMENT \'广告链接类型(1商品详情页、2关联模块、3消息富文本、4H5页面、5蜂雷头条详情页)\',
  `ad_link_content` text COMMENT \'广告链接内容 (json格式)\',
  `create_id` bigint(20) DEFAULT NULL COMMENT \' 创建人\',
  `create_time` datetime DEFAULT NULL COMMENT \'创建时间\',
  `update_id` bigint(20) DEFAULT NULL COMMENT \'修改人\',
  `update_time` datetime DEFAULT NULL COMMENT \'修改时间\',
  `status` tinyint(1) NOT NULL DEFAULT \'1\' COMMENT \'状态: 1 正常 2 禁用\',
  `is_deleted` tinyint(1) NOT NULL DEFAULT \'0\' COMMENT \'是否已删除 0正常  1 已删除\',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=122 DEFAULT CHARSET=utf8 COMMENT=\'开屏广告\\n{"ad_type":"一级分类(默认1)","ad_link_type":"1(商品详情页)","itemid":"商品sku_id","sno":"商品sku_no"}\\n{"ad_type":"一级分类(默认1)","ad_link_type":"2(关联模块)","plate_type":"1限时蜂抢、2新品、3蜂神榜、4蜂觅、5首页"}\\n{"ad_type":"一级分类(默认1)","ad_link_type":"3(消息富文本)","rich_text_id":"消息富文本id"}\\n{"ad_type":"一级分类(默认1)","ad_link_type":"4(H5页面)","url":"H5页面地址"}\\n{"ad_type":"一级分类(默认1)","ad_link_type":"5(蜂雷头条详情页)","id":"蜂雷头条id"}\';
3.数据表值的存储
app开屏广告

文章图片

4.管理后台添加(修改)的数据接收格式
{"id":"","second":"10","ad_url":"/Public/Uploads/ad/origin/5a1a68890eda5.jpg","ad_effective_start":"2016-10-12 00:00:00","ad_effective_end":"2016-10-13 00:00:00","ad_type":"1","ad_link_type":"1","ad_link_content":{"sku_id":"111111","sku_no":"P11111-01"}} {"id":"","second":"10","ad_url":"/Public/Uploads/ad/origin/5a1a68890eda5.jpg","ad_effective_start":"2016-10-10 00:00:00","ad_effective_end":"2016-10-15 00:00:00","ad_type":"1","ad_link_type":"2","ad_link_content":{"plate_type":"1"}} {"id":"","second":"10","ad_url":"/Public/Uploads/ad/origin/5a1a68890eda5.jpg","ad_effective_start":"2016-10-23 00:00:00","ad_effective_end":"2016-10-24 00:00:00","ad_type":"1","ad_link_type":"3","ad_link_content":{"rich_text_id":"富文本消息id--为空添加,不为空修改","content":"ssssssssssssss"}} {"id":"","second":"10","ad_url":"/Public/Uploads/ad/origin/5a1a68890eda5.jpg","ad_effective_start":"2016-10-10 00:00:00","ad_effective_end":"2016-10-15 00:00:00","ad_type":"1","ad_link_type":"4","ad_link_content":{"url":"goods/detail?sno=P001219-01& itemid=1002975101}} {"id":"","second":"10","ad_url":"/Public/Uploads/ad/origin/5a1a68890eda5.jpg","ad_effective_start":"2016-10-10 00:00:00","ad_effective_end":"2016-10-15 00:00:00","ad_type":"1","ad_link_type":"5","ad_link_content":{"id":"66"}}

  6.php代码实现
(1)控制器
/** * @title App开屏广告--添加(修改) * @param data 是 json 接收参数,格式:{"id":"为空添加,不为空修改","second":"开屏广告停留时间(单位:秒)","ad_url":"开屏广告图片地址(相对路径)","ad_effective_start":"开屏广告有效时间--开始时间","ad_effective_end":"开屏广告有效时间--结束时间","ad_type":"广告类型(不传默认1)","ad_link_type":"广告链接类型(1商品详情页、2关联模块、3消息富文本、4H5页面、5蜂雷头条详情页)","ad_link_content":"广告链接内容"} * @example app/kaipin_ad_save? * @method POST * @author 邹柯 */ public function kaipin_ad_saveAction(){ load(\'Common.check\'); $public=D(\'Public\'); $data=https://www.songbingjia.com/android/trim(I(/'post.data\')); $res=$public-> dealJson($data); $id=trim($res[\'id\']); //广告类型 $ad_type=trim($res[\'ad_type\']); if(empty($ad_type)){ $ad_type=1; } //开屏广告停留时间 $second=trim($res[\'second\']); if(empty($second)){ $data = https://www.songbingjia.com/android/array(/'msg\' => "开屏广告停留时长不能为空!" , \'status\'=> \'1\',\'result\'=> null); $this-> ajaxReturn($data); } if(!is_numeric($second) || $second < = 0){ $data = https://www.songbingjia.com/android/array(/'msg\' => "开屏广告停留时长必须为大于等于1的整形!" , \'status\'=> \'1\',\'result\'=> null); $this-> ajaxReturn($data); } //开屏广告图片地址 $ad_url=trim($res[\'ad_url\']); if(empty($ad_url)){ $data = https://www.songbingjia.com/android/array(/'msg\' => "开屏广告图片必须上传!" , \'status\'=> \'1\',\'result\'=> null); $this-> ajaxReturn($data); } //广告有效时间 $ad_effective_start=trim($res[\'ad_effective_start\']); if(empty($ad_effective_start)){ $data = https://www.songbingjia.com/android/array(/'msg\' => "广告有效时间--开始时间不能为空!" , \'status\'=> \'1\',\'result\'=> null); $this-> ajaxReturn($data); } if(!IsDate($ad_effective_start,\'Y-m-d H:i:s\')){ $data = https://www.songbingjia.com/android/array(/'msg\' => "广告有效时间--结束时间格式错误!" , \'status\'=> \'1\',\'result\'=> null); $this-> ajaxReturn($data); } $ad_effective_end=trim($res[\'ad_effective_end\']); if(empty($ad_effective_end) & & !empty($ad_effective_end)){ $data = https://www.songbingjia.com/android/array(/'msg\' => "广告有效时间--结束时间不能为空!" , \'status\'=> \'1\',\'result\'=> null); $this-> ajaxReturn($data); } if(!IsDate($ad_effective_end,\'Y-m-d H:i:s\')){ $data = https://www.songbingjia.com/android/array(/'msg\' => "广告有效时间--结束时间格式错误!" , \'status\'=> \'1\',\'result\'=> null); $this-> ajaxReturn($data); } if($ad_effective_start > $ad_effective_end){ $data = https://www.songbingjia.com/android/array(/'msg\' => "广告有效时间开始时间不能大于结束时间!" , \'status\'=> \'1\',\'result\'=> null); $this-> ajaxReturn($data); } //广告链接类型 $ad_link_type=trim($res[\'ad_link_type\']); if(empty($ad_link_type)){ $data = https://www.songbingjia.com/android/array(/'msg\' => "广告链接类型不能为空!" , \'status\'=> \'1\',\'result\'=> null); $this-> ajaxReturn($data); } if(!is_numeric($ad_link_type) || $ad_link_type < = 0){ $data = https://www.songbingjia.com/android/array(/'msg\' => "广告链接类型必须为大于等于1的整形!" , \'status\'=> \'1\',\'result\'=> null); $this-> ajaxReturn($data); } if(!in_array($ad_link_type,array(1,2,3,4,5))){ $data = https://www.songbingjia.com/android/array(/'msg\' => "广告链接类型值非法!" , \'status\'=> \'1\',\'result\'=> null); $this-> ajaxReturn($data); } //广告链接内容 $ad_link_content=$res[\'ad_link_content\']; if(empty($ad_link_content)){ $data = https://www.songbingjia.com/android/array(/'msg\' => "广告链接内容不能为空!" , \'status\'=> \'1\',\'result\'=> null); $this-> ajaxReturn($data); } $app=D(\'App\'); $list=$app-> kaipin_ad_add($id,$second,$ad_url,$ad_effective_start,$ad_effective_end,$ad_type,$ad_link_type,$ad_link_content); if((int)$list==100){ $data = https://www.songbingjia.com/android/array(/'msg\' => "广告有效时间冲突!" , \'status\'=> \'1\',\'result\'=> null); $this-> ajaxReturn($data); } if($list==false){ $data = https://www.songbingjia.com/android/array(/'msg\' => "添加失败!" , \'status\'=> \'1\',\'result\'=> null); $this-> ajaxReturn($data); } $data = https://www.songbingjia.com/android/array(/'msg\' => "添加成功!" , \'status\'=> \'0\',\'result\'=> $list); $this-> ajaxReturn($data); }
  /**
        * @title 开屏广告图片上传
        * @example app/img_upload?
        * @param ad_url 是 file 开屏广告图片名称(上传图片的尺寸1440_2560)
        * @return_param_explain  returnPath:相对路径(存储用) preview:全路径(展示用)
        * @method POST
        * @author 邹柯
        */
      public function img_uploadAction(){
              if(!empty($_FILES["ad_url"]["name"])){
                        $width="1440";
                        $height="2560";
                        $app = D(\'App\');
                        $data = https://www.songbingjia.com/android/$app-> upload_file(/'ad_url\',$width,$height);
              }else{
                        $data = https://www.songbingjia.com/android/array(
                              \'msg\' => "参数错误",
                              \'status\' => \'1\'
                        );
              }
             
              $this-> ajaxReturn($data);
      }   

(2)模型
//App开屏广告--添加(修改) public function kaipin_ad_add($id,$second,$ad_url,$ad_effective_start,$ad_effective_end,$ad_type,$ad_link_type,$ad_link_content){ $open_ad=M(\'open_ad\'); $create_time=date(\'Y-m-d H:i:s\',time()); $create_user=$_SESSION[\'user\'][\'personnel_code\']; //判断时间是否冲突 $where2="status=1 and is_deleted=0"; if(!empty($id)){ $where2 .=" and id !=\'".$id."\'"; } $rs=$open_ad-> field(\'ad_effective_start,ad_effective_end\')-> where($where2)-> select(); $r_start=array_unique(array_column($rs,\'ad_effective_start\')); $r_end=array_unique(array_column($rs,\'ad_effective_end\')); if(in_array($ad_effective_start,$r_start)){ return 100; } if(in_array($ad_effective_end,$r_end)){ return 100; } foreach($r_end as $k=> $v){ if($v > $ad_effective_start & & $v < = $ad_effective_end){ return 100; } continue; } foreach($rs as $k=> $v){ if($v[\'ad_effective_start\'] < =$ad_effective_start & & $ad_effective_end < =$v[\'ad_effective_end\']){ return 100; } } switch($ad_link_type){ case 1: //商品详情页 $ad_link_content_info=array( \'ad_type\'=> $ad_type, \'ad_link_type\'=> $ad_link_type, \'itemid\'=> $ad_link_content[\'sku_id\'], \'sno\'=> $ad_link_content[\'sku_no\'] ); break; case 2://关联模块 $ad_link_content_info=array( \'ad_type\'=> $ad_type, \'ad_link_type\'=> $ad_link_type, \'plate_type\'=> $ad_link_content[\'plate_type\'], ); break; case 3://广告富文本 $rich_text=M(\'rich_text\'); //添加 if(empty($ad_link_content[\'rich_text_id\'])){ $data=https://www.songbingjia.com/android/array( /'content\'=> html_entity_decode($ad_link_content[\'content\']), \'create_id\'=> $create_user, \'create_time\'=> $create_time, \'update_id\'=> $create_user, \'update_time\'=> $create_time, \'type\'=> 2 ); $re=$rich_text-> data($data)-> add(); //获取自增id $id2=$rich_text-> getLastInsID(); }else{ $data=https://www.songbingjia.com/android/array( /'content\'=> html_entity_decode($ad_link_content[\'content\']), \'update_id\'=> $create_user, \'update_time\'=> $create_time, ); $re=$rich_text-> where(array(\'id\'=> $ad_link_content[\'rich_text_id\']))-> data($data)-> save(); $id2=$ad_link_content[\'rich_text_id\']; }$ad_link_content_info=array( \'ad_type\'=> $ad_type, \'ad_link_type\'=> $ad_link_type, \'rich_text_id\'=> $id2 ); break; case 4://H5页面 $ad_link_content_info=array( \'ad_type\'=> $ad_type, \'ad_link_type\'=> $ad_link_type, \'url\'=> $ad_link_content[\'url\'] ); break; default://蜂雷头条详情页 $ad_link_content_info=array( \'ad_type\'=> $ad_type, \'ad_link_type\'=> $ad_link_type, \'id\'=> $ad_link_content[\'id\'] ); break; } //转换成json $ad_link_content_json = json_encode($ad_link_content_info); //添加 if(empty($id)){ //添加开屏广告 $data2=array( \'second\'=> $second, \'ad_url\'=> $ad_url, \'ad_effective_start\'=> $ad_effective_start, \'ad_effective_end\'=> $ad_effective_end, \'ad_link_type\'=> $ad_link_type, \'ad_link_content\'=> $ad_link_content_json, \'create_id\'=> $create_user, \'create_time\'=> $create_time, \'update_id\'=> $create_user, \'update_time\'=> $create_time, ); $res2=$open_ad-> data($data2)-> add(); }else{//修改 //添加开屏广告 $wh = "id=\'".$id."\'"; $res_in=$open_ad-> field(\'id,second,ad_effective_start,ad_effective_end,ad_url,ad_link_type,ad_link_content\')-> where($wh)-> find(); $data2=array( \'second\'=> $second, \'ad_url\'=> $ad_url, \'ad_effective_start\'=> $ad_effective_start, \'ad_effective_end\'=> $ad_effective_end, \'ad_link_type\'=> $ad_link_type, \'ad_link_content\'=> $ad_link_content_json, \'update_id\'=> $create_user, \'update_time\'=> $create_time, ); $res2=$open_ad-> data($data2)-> where(array

    推荐阅读