rabin il y a 5 ans
Parent
commit
51e80929f4
5 fichiers modifiés avec 155 ajouts et 14 suppressions
  1. 67 2
      database/data.php
  2. 21 1
      database/info.php
  3. 8 2
      database/page.php
  4. 16 8
      lib/Data.php
  5. 43 1
      lib/Manage.php

+ 67 - 2
database/data.php

@@ -15,9 +15,10 @@ $config = array();
 $pic = 'image';
 $video = 'upload';
 $code = 'textarea';
+$link = 'textarea';
 if ($info_id) {
     $config = Dever::load('ad/info-one', $info_id);
-    if ($config['type'] == 1) {
+    if ($config['type'] == 1 || $config['type'] == 4) {
         $video = 'hidden';
         $code = 'hidden';
     }
@@ -28,8 +29,14 @@ if ($info_id) {
     if ($config['type'] == 3) {
         $video = 'hidden';
         $pic = 'hidden';
+        $link = 'hidden';
     }
 }
+$type = array
+(
+    1 => '永久',
+    2 => '时间段',
+);
 return array
 (
     # 表名
@@ -38,13 +45,18 @@ return array
     'lang' => '广告投放',
     'order' => 200,
     'menu' => false,
+    'end' => array
+    (
+        'update' => 'ad/lib/manage.upDataCache',
+        'insert' => 'ad/lib/manage.upDataCache',
+    ),
     # 数据结构
     'struct' => array
     (
         'id'        => array
         (
             'type'      => 'int-11',
-            'name'      => '广告位ID',
+            'name'      => '投放ID',
             'default'   => '',
             'desc'      => '',
             'match'     => 'is_numeric',
@@ -66,6 +78,49 @@ return array
             'edit'      => true,
         ),
 
+        'type'      => array
+        (
+            'type'      => 'tinyint-1',
+            'name'      => '投放类型',
+            'default'   => '1',
+            'desc'      => '投放类型',
+            'match'     => 'is_numeric',
+            'option'    => $type,
+            'update'    => 'radio',
+            'search'    => 'select',
+            //'list'      => true,
+            'control'   => 'type',
+        ),
+
+        'sdate'      => array
+        (
+            'type'      => 'int-11',
+            'name'      => '开始投放时间',
+            'default'   => '',
+            'desc'      => '开始投放时间',
+            'match'     => 'is_numeric',
+            'update'    => 'date',
+            'search'    => 'date',
+            'list_name' => '投放时间',
+            'list'      => '{type} == 2 ? date("Y-m-d H:i:s", {sdate})." 至 ".date("Y-m-d H:i:s", {edate}) : "永久"',
+            'callback'  => 'maketime',
+            'show'      => 'type=2',
+        ),
+
+        'edate'      => array
+        (
+            'type'      => 'int-11',
+            'name'      => '结束投放时间',
+            'default'   => '',
+            'desc'      => '结束投放时间',
+            'match'     => 'is_numeric',
+            'update'    => 'date',
+            'search'    => 'date',
+            //'list'      => 'date("Y-m-d H:i:s", {edate})',
+            'callback'  => 'maketime',
+            'show'      => 'type=2',
+        ),
+
         'info_id'      => array
         (
             'type'      => 'int-11',
@@ -117,6 +172,16 @@ return array
             'match'     => 'option',
             'update'    => $code,
         ),
+
+        'link'      => array
+        (
+            'type'      => 'varchar-500',
+            'name'      => '跳转链接',
+            'default'   => '',
+            'desc'      => '请输入跳转链接',
+            'match'     => 'is_string',
+            'update'    => $link,
+        ),
         
         'reorder'       => array
         (

+ 21 - 1
database/info.php

@@ -16,6 +16,7 @@ $type = array
     1 => '图片广告',
     2 => '视频广告',
     3 => '代码广告',
+    4 => '切屏广告',
 );
 
 return array
@@ -25,6 +26,12 @@ return array
     # 显示给用户看的名称
     'lang' => '广告位管理',
     'order' => 100,
+    'check' => 'key',
+    'end' => array
+    (
+        'update' => 'ad/lib/manage.upInfoCache',
+        'insert' => 'ad/lib/manage.upInfoCache',
+    ),
     # 数据结构
     'struct' => array
     (
@@ -66,6 +73,19 @@ return array
             'edit'      => true,
         ),
 
+        'key'      => array
+        (
+            'type'      => 'varchar-800',
+            'name'      => '广告位标识-前台将根据广告位标识来确定展示的位置,标识不能重复',
+            'default'   => '',
+            'desc'      => '广告位标识',
+            'match'     => 'is_string',
+            'update'    => 'text',
+            'search'    => 'fulltext',
+            'list'      => true,
+            'edit'      => true,
+        ),
+
         'type'      => array
         (
             'type'      => 'int-11',
@@ -141,7 +161,7 @@ return array
             ),
             'type' => 'all',
             'order' => array('id' => 'desc'),
-            'col' => '*',
+            'col' => '*|key',
         ),
     ),
 );

+ 8 - 2
database/page.php

@@ -2,6 +2,7 @@
 
 $type = array
 (
+    -1 => '全部',
     1 => 'H5',
     2 => '安卓APP',
     3 => '苹果APP',
@@ -14,6 +15,11 @@ return array
     # 显示给用户看的名称
     'lang' => '页面管理',
     'order' => 10,
+    'end' => array
+    (
+        'update' => 'ad/lib/manage.upPageCache',
+        'insert' => 'ad/lib/manage.upPageCache',
+    ),
     # 数据结构
     'struct' => array
     (
@@ -58,8 +64,8 @@ return array
         'type'      => array
         (
             'type'      => 'int-11',
-            'name'      => '页面类型',
-            'default'   => '1',
+            'name'      => '页面类型-暂时无用,根据标识取出一条出来',
+            'default'   => '-1',
             'desc'      => '请选择页面类型',
             'match'     => 'is_numeric',
             'option'    => $type,

+ 16 - 8
lib/Data.php

@@ -6,16 +6,24 @@ use Dever;
 
 class Data
 {
-    public function get($key, $data = array())
+    public function get($key, $data = array(), $cache = true)
     {
-        $page = Dever::db('ad/page')->one(array('key' => $key));
-        if ($page) {
-            $info = Dever::db('ad/info')->getAll(array('page_id' => $page['id']));
-            if ($info) {
-                foreach ($info as $k => $v) {
-                    $info[$k]['data'] = Dever::db('ad/data')->getAll(array('info_id' => $v['id']));
+        $cache = 'ad_' . md5($key);
+        $data = $cache ? Dever::cache($cache) : $cache;
+        if ($data) {
+            return $data;
+        } elseif (!$data) {
+            $page = Dever::db('ad/page')->one(array('key' => $key));
+            if ($page) {
+                $info = Dever::db('ad/info')->getAll(array('page_id' => $page['id']));
+                if ($info) {
+                    foreach ($info as $k => $v) {
+                        $info[$k]['data'] = Dever::db('ad/data')->getAll(array('info_id' => $v['id']));
+                    }
+
+                    Dever::cache($cache, $info);
+                    return $info;
                 }
-                return $info;
             }
         }
 

+ 43 - 1
lib/Manage.php

@@ -6,5 +6,47 @@ use Dever;
 
 class Manage
 {
-    
+    public function upPageCache($id, $name, $param)
+    {
+    	$key = Dever::param('key', $param);
+    	Dever::load('ad/lib/data')->get($key, array(), false);
+
+    	if (Dever::project('log')) {
+    		$col = array
+    		(
+    			array
+    			(
+    				'name' => '广告页面ID',
+    				'key' => 'ad_page_id',
+    			),
+    			array
+    			(
+    				'name' => '广告位ID',
+    				'key' => 'ad_info_id',
+    			),
+    			array
+    			(
+    				'name' => '广告投放ID',
+    				'key' => 'ad_data_id',
+    			),
+    		);
+    		$log = Dever::load('log/lib/manage')->addCol($col);
+    	}
+    }
+
+    public function upInfoCache($id, $name, $param)
+    {
+    	$id = Dever::param('page_id', $param);
+    	$info = Dever::db('ad/page')->one($id);
+    	Dever::load('ad/lib/data')->get($info['key'], array(), false);
+    }
+
+    public function upDataCache($id, $name, $param)
+    {
+    	$info_id = Dever::param('info_id', $param);
+    	$info = Dever::db('ad/info')->one($info_id);
+    	$info = Dever::db('ad/page')->one($info['page_id']);
+
+    	Dever::load('ad/lib/data')->get($info['key'], array(), false);
+    }
 }