dever 6 jaren geleden
bovenliggende
commit
85a9fa1be2
6 gewijzigde bestanden met toevoegingen van 174 en 23 verwijderingen
  1. 18 13
      act/database/form_id.php
  2. 18 1
      act/database/live_note.php
  3. 52 0
      act/lib/Form.php
  4. 62 1
      act/lib/Note.php
  5. 20 8
      act/lib/Share.php
  6. 4 0
      sms/index.php

+ 18 - 13
act/database/form_id.php

@@ -1,6 +1,10 @@
 <?php
 
-$table = Dever::config('base')->type;
+$type = array
+(
+    1 => '普通表单',
+    2 => '支付表单',
+);
 $time = time()+(3600*24*7);
 return array
 (
@@ -26,23 +30,23 @@ return array
         'type'      => array
         (
             'type'      => 'tinyint-1',
-            'name'      => '类',
-            'default'   => '',
-            'desc'      => '类',
+            'name'      => '类',
+            'default'   => '1',
+            'desc'      => '类',
             'match'     => 'option',
             'search'    => 'select',
-            'option'    => $table,
+            'option'    => $type,
             'list'      => true,
         ),
         
-        'data_id'       => array
+        'num'       => array
         (
             'type'      => 'int-11',
-            'name'      => '标题',
-            'default'   => '',
-            'desc'      => '标题',
-            'match'     => 'option',
-            'list'      => 'Dever::load("act/lib/manage.load", "{type}", {data_id})',
+            'name'      => '使用次数',
+            'default'   => '0',
+            'desc'      => '使用次数',
+            'match'     => 'is_numeric',
+            'list'      => true,
         ),
 
         'uid'       => array
@@ -103,7 +107,8 @@ return array
             # 匹配的正则或函数 选填项
             'option' => array
             (
-                'product_id' => 'yes',
+                'num' => array('yes', '<'),
+                'type' => 'yes',
                 'uid' => 'yes',
                 'cdate' => array($time, '<='),
                 'state' => 1,
@@ -119,7 +124,7 @@ return array
             # 匹配的正则或函数 选填项
             'option' => array
             (
-                'product_id' => 'yes',
+                'type' => 'yes',
                 'cdate' => array($time, '<='),
                 'state' => 1,
             ),

+ 18 - 1
act/database/live_note.php

@@ -74,7 +74,7 @@ return array
             'update'    => 'text',
         ),
 
-        'type'     => array
+        'note'     => array
         (
             'type'      => 'tinyint-1',
             'name'      => '是否发送状态提醒-1未发送,2已发送',
@@ -112,4 +112,21 @@ return array
         'edit' => false,
         'delete' => false,
     ),
+
+    'request' => array
+    (
+        'getAll' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'uid' => 'yes',
+                'note' => 1,
+                'state' => 1,
+            ),
+            'type' => 'all',
+            'order' => array('cdate' => 'desc'),
+            'col' => '*',
+        ),
+    ),
 );

+ 52 - 0
act/lib/Form.php

@@ -0,0 +1,52 @@
+<?php
+
+namespace Act\Lib;
+
+use Dever;
+
+class Form
+{
+    # 获取当前可用的formid
+    public function get($uid, $type = 1)
+    {
+        $where['uid'] = $uid;
+        if ($type > 0) {
+        	$where['type'] = $type;
+        	if ($type == 2) {
+        		# 支付表单有3次机会
+        		$where['num'] = 3;
+        	} else {
+        		# 普通表单只有一次机会
+        		$where['num'] = 1;
+        	}
+        }
+        $info = Dever::db('act/form_id')->getAll($where);
+
+        if ($info) {
+            $key = array_rand($info);
+            if (isset($info[$key])) {
+            	$update['where_id'] $info[$key]['id'];
+            	$update['num'] = $info[$key]['num'] + 1;
+            	Dever::db('act/form_id')->update($update);
+            	return $info[$key]['form_id'];
+            }
+        } else {
+            return false;
+        }
+    }
+
+    # 提交formid
+    public function submit($uid, $id, $type = 1)
+    {
+        $where['uid'] = $uid;
+        $where['type'] = $type;
+        $where['form_id'] = $id;
+        $info = Dever::db('act/form_id')->one($where);
+        if (!$info) {
+        	$where['num'] = 0;
+            Dever::db('act/form_id')->insert($where);
+        }
+
+        return true;
+    }
+}

+ 62 - 1
act/lib/Note.php

@@ -25,6 +25,9 @@ class Note
     # 预约
     public function submit($uid, $id, $type, $formid = '')
     {
+        if ($formid) {
+            Dever::load('act/lib/form')->submit($uid, $formid, 1);
+        }
         $where['uid'] = $uid;
         $where['data_id'] = $id;
         $where['type'] = $type;
@@ -40,6 +43,7 @@ class Note
             if ($formid) {
                 $update['formid'] = $formid;
             }
+            $update['cdate'] = time();
             if ($info['state'] == 1) {
                 $update['state'] = 2;
                 Dever::db('act/live_note')->update($update);
@@ -52,5 +56,62 @@ class Note
         return true;
     }
 
-    # 提醒 后续实现
+    # 提醒 后续实现 需要加入到cron里:act/lib/note.cron
+    public function cron()
+    {
+        $data = Dever::db('act/live_note')->getAll();
+
+        if ($data) {
+            $time = time();
+            $day = 7 * 86400;
+            $date = 60;
+            foreach ($data as $k => $v) {
+                $table = Dever::config('base')->type_table[$v['type']];
+                $info = Dever::db($table)->one($v['id']);
+                if ($info && $v['type'] == 3 && isset($info['sdate']) && $info['sdate'] > 0 && $info['sdate'] > $time && $info['sdate'] - $time <= $date) {
+
+                    $user = Dever::db('passport/user')->one($v['uid']);
+                    if (!$user) {
+                        continue;
+                    }
+                    Dever::db('act/live_note')->update(arary('where_id' => $v['id'], 'note' => 2));
+
+                    if (Dever::project('message')) {
+                        Dever::load('message/lib/data')->push(-1, $v['uid'], '直播提醒', $info['name'] . '直播即将开始,马上观看!', 1);
+                    }
+                    
+                    $formid = Dever::load('act/lib/form')->get($v['uid'], 1);
+
+                    if ($formid) {
+                        # 发送模板消息
+                        $wechat = Dever::db('passport/wechat')->one(array('uid' => $v['uid']));
+                        if ($wechat && Dever::project('wechat_applet')) {
+                            $send['key'] = 'note_live';
+                            $send['project_id'] = 1;
+                            $send['touser'] = $wechat['openid'];
+                            $send['page'] = Dever::config('base')->applet_index . '?scene=' . Dever::login($v['uid']) . ',' . $v['type'] . ',' . $v['id'];
+                            $send['data'] = array
+                            (
+                                'keyword1' => array('value', $info['name']),
+                                'keyword2' => array('value', $info['name'] . '直播即将开始,马上观看!'),
+                            );
+                            $send['form_id'] = $formid;
+                            Dever::load('wechat_applet/msg.send', $send);
+                        }
+                    }
+                    # 发送短消息
+                    if (isset($user['mobile']) && $user['mobile'] && Dever::project('sms')) {
+                        $send = array();
+                        $send['name'] = $info['name'];
+                        Dever::load('sms/api.send', 'note_live', $user['mobile'], $send);
+                    }
+                }
+            }
+        }
+    }
+
+    public function cron_api()
+    {
+        
+    }
 }

+ 20 - 8
act/lib/Share.php

@@ -39,17 +39,17 @@ class Share
     # 回流
     public function submit_reflux($source_uid, $uid, $id, $type)
     {
-        $where['source_uid'] = $source_uid;
-        $where['uid'] = $uid;
-        if ($where['source_uid'] == $where['uid']) {
-            //return false;
+        if ($source_uid == $uid) {
+            return false;
         }
+        $where['uid'] = $source_uid;
+        //$where['uid'] = $uid;
         $where['data_id'] = $id;
         $where['type'] = $type;
 
         $share = Dever::db('act/share')->one($where);
         if ($share) {
-
+            $where = array();
             $user = Dever::db('passport/user')->one($uid);
 
             $where['user_type'] = 3;
@@ -112,12 +112,19 @@ class Share
                                     # 发消息
                                     if ($invite_num == $num) {
                                         $journal = Dever::db('journal/info')->one($id);
-                                        Dever::load('message/lib/data')->push(-1, $source_uid, '活动提醒', '邀请人数已达'.$invite_num.'人,您获得了 '.$journal['name'].' 的阅读资格!', 1);
+                                        if (Dever::project('message')) {
+                                            Dever::load('message/lib/data')->push(-1, $source_uid, '活动提醒', '邀请人数已达'.$invite_num.'人,您获得了 '.$journal['name'].' 的阅读资格!', 1);
+                                        }
 
-                                        # 发送模板消息
+                                        # 发送模板消息 这里没有formid 暂时先不发送模板消息,后续应该通过前端收集formid就好了
 
                                         # 发短信
-                                        
+                                        if (isset($user['mobile']) && $user['mobile'] && Dever::project('sms')) {
+                                            $send = array();
+                                            $send['num'] = $invite_num;
+                                            $send['name'] = $journal['name'];
+                                            Dever::load('sms/api.send', 'share_journal', $user['mobile'], $send);
+                                        }
                                     }
                                     
                                     Dever::load('act/lib/subscribe')->submit($source_uid, $id, 3);
@@ -131,6 +138,11 @@ class Share
                 }
             }
 
+            
+            $where['source_uid'] = $source_uid;
+            $where['uid'] = $uid;
+            $where['data_id'] = $id;
+            $where['type'] = $type;
             $where['share_id'] = $share['id'];
             $info = Dever::db('act/share_reflux')->one($where);
             if (!$info) {

+ 4 - 0
sms/index.php

@@ -0,0 +1,4 @@
+<?php
+define('DEVER_PACKAGE',  'sms');
+define('DEVER_APP_SETUP', dirname(__FILE__) . DIRECTORY_SEPARATOR);
+include(dirname(__FILE__) . DIRECTORY_SEPARATOR . '../boot.php');