dever 6 years ago
parent
commit
8f9eb4108d
4 changed files with 261 additions and 49 deletions
  1. 4 0
      act/lib/Pay.php
  2. 62 27
      doc/apidoc_v1.php
  3. 1 1
      journal/database/info.php
  4. 194 21
      main/src/Journal_v1.php

+ 4 - 0
act/lib/Pay.php

@@ -223,6 +223,10 @@ class Pay
                             # 增加本数
                             Dever::load('act/lib/num')->submit($order['product_id'], $order['uid'], $buy['num']);
                         }
+
+                        # 增加订阅数
+                        $key = 'journal_buy_num_' . $order['product_id'];
+                        Dever::increment($key, $buy['num']);
                     }
                 }
                 # 积分

+ 62 - 27
doc/apidoc_v1.php

@@ -23,12 +23,12 @@
  */
 
 /**
- * @api {get} wonderful/main/?l=journal_v1.getList 小刊列表
+ * @api {get} wonderful/main/?l=journal_v1.getList 小程序小刊列表
  * @apiVersion 2.0.0
  * @apiName journal.getList
  * @apiGroup JournalV1
  *
- * @apiDescription 小刊列表,按照分类读取
+ * @apiDescription 小刊列表,按照分类读取,根据获取的信息,可以直接进入到小刊详情页,无需再次请求接口。
  *
  * @apiParam {String} signature signature
  * @apiParam {String} system 分类id,默认为1,传入-1就是获取全部
@@ -45,6 +45,60 @@
  * @apiSuccess {String}   journal.num_ding 订阅数
  * @apiSuccess {String}   journal.buy 小刊是否收费 1收费 2免费 3会员
  * @apiSuccess {String}   journal.bgmusic 小刊背景音乐
+ * @apiSuccess {Object[]}   journal.button 按钮判断 如果不需要这个,可以不用
+ * @apiSuccess {Object[]}   journal.button.read 第一个按钮 阅读按钮
+ * @apiSuccess {String}   journal.button.read.status 状态 -1不显示 1为进入阅读 2为兑换 3为预售,注意,当值为2时,必须在阅读按钮上,当用户点击按钮时,绑定一个事件,该事件的接口为journal_v1.subscribe
+ * @apiSuccess {String}   journal.button.read.name 按钮上的名字
+ * @apiSuccess {Object[]}   journal.button.buy 第二个按钮 购买按钮
+ * @apiSuccess {String}   journal.button.buy.status 状态 -1不显示 1为购买
+ * @apiSuccess {String}   journal.button.buy.name 按钮上的名字
+ * @apiSuccess {Object[]}   journal.button.share 第三个按钮 排行榜按钮
+ * @apiSuccess {String}   journal.button.share.status 状态 -1不显示 1为排行榜
+ * @apiSuccess {String}   journal.button.share.name 按钮上的名字
+ *
+ * @apiSuccess {Object[]} push 主推小刊
+ * @apiSuccess {String}   push.id 小刊id
+ * @apiSuccess {String}   push.name 名称
+ * @apiSuccess {String}   push.num_ding 订阅数
+
+ * @apiSuccess {Object[]} cate 当前分类
+ * @apiSuccess {String}   cate.id 分类id
+ * @apiSuccess {String}   cate.name 名称
+ */
+
+/**
+ * @api {get} wonderful/main/?l=journal_v1.getAppList APP小刊列表
+ * @apiVersion 2.0.0
+ * @apiName journal.getAppList
+ * @apiGroup JournalV1
+ *
+ * @apiDescription 小刊列表,按照分类读取,根据获取的信息,可以直接进入到小刊详情页,无需再次请求接口。
+ *
+ * @apiParam {String} signature signature
+ * @apiParam {String} system 分类id,默认为1,传入-1就是获取全部
+ *
+ * @apiSuccess {Object[]} journal 小刊数据列表
+ * @apiSuccess {String}   journal.id 小刊id
+ * @apiSuccess {String}   journal.name 名称
+ * @apiSuccess {String}   journal.subname 期号
+ * @apiSuccess {String}   journal.pic_cover 列表封面图片 暂时无效
+ * @apiSuccess {String}   journal.pic_view_cover 小刊封面图片 封面图都用这个
+ * @apiSuccess {String}   journal.pic_view_bg 全屏背景图,多张图片,这是一个数组
+ * @apiSuccess {String}   journal.pic_gd 小刊推广图
+ * @apiSuccess {String}   journal.pdate 时间
+ * @apiSuccess {String}   journal.num_ding 订阅数
+ * @apiSuccess {String}   journal.buy 小刊是否收费 1收费 2免费 3会员
+ * @apiSuccess {String}   journal.bgmusic 小刊背景音乐
+ * @apiSuccess {Object[]}   journal.button 按钮判断 如果不需要这个,可以不用
+ * @apiSuccess {Object[]}   journal.button.read 第一个按钮 阅读按钮
+ * @apiSuccess {String}   journal.button.read.status 状态 -1不显示 1为进入阅读 2为兑换 3为预售,注意,当值为2时,必须在阅读按钮上,当用户点击按钮时,绑定一个事件,该事件的接口为journal_v1.subscribe
+ * @apiSuccess {String}   journal.button.read.name 按钮上的名字
+ * @apiSuccess {Object[]}   journal.button.buy 第二个按钮 购买按钮
+ * @apiSuccess {String}   journal.button.buy.status 状态 -1不显示 1为购买
+ * @apiSuccess {String}   journal.button.buy.name 按钮上的名字
+ * @apiSuccess {Object[]}   journal.button.share 第三个按钮 排行榜按钮
+ * @apiSuccess {String}   journal.button.share.status 状态 -1不显示 1为排行榜
+ * @apiSuccess {String}   journal.button.share.name 按钮上的名字
  *
  * @apiSuccess {Object[]} push 主推小刊
  * @apiSuccess {String}   push.id 小刊id
@@ -147,12 +201,12 @@
  */
 
 /**
- * @api {get} wonderful/main/?l=journal_v1.view 小刊详情页
+ * @api {get} wonderful/main/?l=journal_v1.view 小刊详情页[废弃]
  * @apiVersion 2.0.0
  * @apiName journal.view
  * @apiGroup JournalV1
  *
- * @apiDescription 小刊详情页
+ * @apiDescription 小刊详情页[废弃,请从journal_v1.getList或者journal_v1.getAppList中获取这些信息]
  *
  * @apiParam {String} signature signature
  * @apiParam {Number} id 小刊id
@@ -186,36 +240,17 @@
  */
 
 /**
- * @api {get} wonderful/main/?l=journal_v1.active 小刊活动页
+ * @api {get} wonderful/main/?l=journal_v1.subscribe 检测小刊是否可以阅读
  * @apiVersion 2.0.0
- * @apiName journal.active
+ * @apiName journal.subscribe
  * @apiGroup JournalV1
  *
- * @apiDescription 小刊活动页
+ * @apiDescription 检测小刊是否可以阅读
  *
  * @apiParam {String} signature signature
  * @apiParam {Number} id 小刊id
  *
- * @apiSuccess {Object[]} info 小刊详情
- * @apiSuccess {String}   info.id 小刊id
- * @apiSuccess {String}   info.name 名称
- *
- * @apiSuccess {Object[]}   active 活动说明表
- * @apiSuccess {String}   active.name 名称
- * @apiSuccess {String}   active.status 活动状态 1活动进行中 2活动已结束
- * @apiSuccess {String}   active.desc 描述
- * @apiSuccess {String}   active.buy_title 购买标题
- * @apiSuccess {String}   active.buy_desc 购买描述
- * @apiSuccess {String}   active.invite_title 邀请好友标题
- * @apiSuccess {String}   active.invite_desc 邀请好友描述 换行用\n隔开
- * @apiSuccess {String}   active.content 活动说明,富文本
-
-  * @apiSuccess {Object[]}   invite 我的邀请
- * @apiSuccess {String}   invite.uid 用户id
- * @apiSuccess {String}   invite.username 用户名
- * @apiSuccess {String}   invite.avatar 头像
-
- * @apiSuccess {String}   buy 是否显示购买按钮,1显示,2不显示
+ * @apiSuccess {String}   subscribe 1为已订阅可以阅读,2为未订阅不能阅读,弹出兑换码
  */
 
 /**

+ 1 - 1
journal/database/info.php

@@ -62,7 +62,7 @@ $hot = array
 $page = 15;
 
 # 常用的col
-$col = 'id,name,subname,pic_cover,pic_view_cover,pic_view_bg,pdate,num_view,num_ding,num_add_ding,num_ratio_ding,num_comment,num_up,buy,share_yes,share_title,share_pic,share_content,pic_gd,cate_id,cash,bgmusic';
+$col = 'id,name,subname,pic_cover,pic_view_cover,pic_view_bg,pdate,num_view,num_ding,num_add_ding,num_ratio_ding,num_comment,num_up,buy,share_yes,share_title,share_pic,share_content,pic_gd,cate_id,cash,bgmusic,top';
 
 $config = array
 (

+ 194 - 21
main/src/Journal_v1.php

@@ -17,9 +17,6 @@ class Journal_v1 extends Core
             $this->data['cate'] = $cate;
         }
 
-        $cateList = Dever::db('journal/cate')->getAll();
-        $this->data['cateList'] = $cateList;
-
         return $cate;
     }
 
@@ -34,30 +31,65 @@ class Journal_v1 extends Core
 
         $cate = $this->getCate();
 
-        $time = time();
-        $day = (7 * 86400);
-
         # 小刊列表
         $where = array();
         if (isset($cate['id'])) {
             $where['cate_id'] = $cate['id'];
         }
-        if ($this->app) {
-            $where['cate_id_1'] = 1;
-            $where['time'] = $time - $day;
-
+        if (isset($cate['journal_id'])) {
+            $this->data['push'] = Dever::db('journal/info')->getOne($cate['journal_id']);
+        } else {
             # 获取最新的小刊
-            $this->data['push'] = Dever::db('journal/info')->getNew($where);
+            $this->data['push'] = Dever::db('journal/info')->getNew();
+        }
 
-        } else {
-            if (isset($cate['journal_id'])) {
-                $this->data['push'] = Dever::db('journal/info')->getOne($cate['journal_id']);
-            } else {
-                # 获取最新的小刊
-                $this->data['push'] = Dever::db('journal/info')->getNew();
+        $this->data['push'] = $this->ding($this->data['push']);
+
+        
+        $data = Dever::db('journal/info')->getAllByPage($where);
+
+        if ($data) {
+            $this->data['button'] = array();
+            foreach ($data as $k => $v) {
+                $data[$k] = $this->info($v);
+                $data[$k] = $this->getButton($data[$k]);
             }
+            
+            $this->data['journal'] = $data;
+        } else {
+            $this->data['journal'] = array();
         }
-        
+
+        return $this->data;
+    }
+
+    # 根据分类获取小刊列表 app
+    public function getAppList()
+    {
+        $data = array();
+
+        if ($data) {
+            return $data;
+        }
+
+        $cate = $this->getCate();
+
+        # 小刊列表
+        $where = array();
+        if (isset($cate['id'])) {
+            $where['cate_id'] = $cate['id'];
+        }
+        $cateList = Dever::db('journal/cate')->getAll();
+        $this->data['cateList'] = $cateList;
+
+        $time = time();
+        $day = (7 * 86400);
+
+        $where['cate_id_1'] = 1;
+        $where['time'] = $time - $day;
+
+        # 获取最新的小刊
+        $this->data['push'] = Dever::db('journal/info')->getNew($where);
 
         $this->data['push'] = $this->ding($this->data['push']);
 
@@ -65,9 +97,13 @@ class Journal_v1 extends Core
         $data = Dever::db('journal/info')->getAllByPage($where);
 
         if ($data) {
+            $this->data['button'] = array();
             foreach ($data as $k => $v) {
                 $data[$k] = $this->info($v);
+                $data[$k] = $this->getButton($data[$k]);
+                $data[$k] = $this->getAppSet($data[$k]);
             }
+            
             $this->data['journal'] = $data;
         } else {
             $this->data['journal'] = array();
@@ -113,7 +149,7 @@ class Journal_v1 extends Core
         return $data;
     }
 
-    # 小刊查看详情 新版本
+    # 小刊查看详情 即将废弃
     public function view()
     {
         $id = $this->check();
@@ -123,7 +159,7 @@ class Journal_v1 extends Core
         return $this->data;
     }
 
-    # 按钮设置
+    # 按钮设置 即将废弃
     private function button($info)
     {
         $this->data['button'] = array();
@@ -290,6 +326,143 @@ class Journal_v1 extends Core
         }
     }
 
+    # 验证小刊是否可以阅读
+    public function subscribe()
+    {
+        if (!$this->data['uid']) {
+            Dever::alert('错误的用户信息');
+        }
+        $this->check();
+        $subscribe = Dever::load('act/lib/subscribe')->get($this->data['info']['id'], $this->data['uid'], 4);
+
+        return array('subscribe' => $subscribe);
+    }
+
+    # 小刊查看详情
+    public function getView()
+    {
+        $this->check();
+        $this->data['button'] = array();
+        $this->data['info'] = $this->getButton($this->info($this->data['info'], false));
+
+        return $this->data;
+    }
+
+    # 按钮设置
+    private function getButton($info)
+    {
+        //$info['subscribe'] = 2;
+
+        # 查看是否有排行榜
+        $info['active'] = $info['top'];
+
+        if ($info['active'] == 1) {
+            $this->setButton('share', 1);
+        } else {
+            $this->setButton('share', -1);
+        }
+
+        if ($info['buy'] == 2) {
+            # 免费的
+            $this->setButton('read', 1);
+            $this->setButton('buy', -1);
+            $this->setButton('share', -1);
+        } else {
+            if ($info['ytype'] == 2) {
+                # 预售
+                $this->setButton('read', 3);
+            } else {
+                # 需要购买 这里需要调用info_check接口了
+                $this->setButton('read', 2);
+            }
+            
+            $this->setButton('buy', 1);
+
+            /*
+            if (checkVersion()->journal_buy == 2) {
+                $this->setButton('buy', -1);
+                $this->setButton('share', -1);
+            }
+            */
+        }
+
+        # 小程序下的判断,ios里关闭支付
+        $applet_type = Dever::input('applet_type');
+        if ($applet_type == 2 && isset($this->data['config']['ios_pay']) && $this->data['config']['ios_pay'] == 1 && $info['buy'] == 1) {
+            $this->setButton('buy', -1);
+            //$this->setButton('share', -1);
+        }
+
+        $info['button'] = $this->data['button'];
+
+        return $info;
+    }
+
+    # 小刊查看详情 app下查看,仅仅为了区分缓存
+    public function getAppView()
+    {
+        $this->info();
+
+        $this->data['info'] = $this->getAppSet($this->data['info']);
+
+        return $this->data;
+    }
+
+    private function getAppSet($info)
+    {
+        # 分享相关
+        if (isset($info['share_content'])) {
+            $source = Dever::db('source/info')->one(1);
+            $info['share_link'] = $source['code'];
+        }
+
+        # 会员状态
+        $info['vip_state'] = 1;
+        $info['code_state'] = 1;
+        $version_code = Dever::input('version_code');
+        if ($version_code) {
+            $source_type = Dever::input('source_type');
+            $version_where['source_type'] = $source_type;
+            $version_where['name'] = $version_code;
+            $version = Dever::db('main/version')->getOne($version_where);
+            if ($version && $version['vip'] > 0) {
+               $info['vip_state'] = $version['vip'];
+               $info['code_state'] = $version['button'];
+            }
+        }
+
+        # 会员随便看
+        $info['vip'] = 2;
+        $vip = Dever::load('vip/lib/member')->get($this->data['uid'], $info['cate_id']);
+        if ($vip > 0) {
+            $info['subscribe'] = 1;
+            $info['vip'] = 1;
+            $this->setButton('read', 1);
+        }
+
+        # 是否在外站订阅过 防止缓存失效,这里先注释
+        /*
+        $user = Dever::db('passport/user')->one($this->data['uid']);
+        if ($user && $user['mobile']) {
+            $mobileWhere['mobile'] = $user['mobile'];
+            $mobileWhere['product_id'] = $info['id'];
+            $mobile = Dever::db('journal/mobile')->one($mobileWhere);
+            if ($mobile) {
+                $info['subscribe'] = 1;
+                $this->setButton('read', 1);
+            }
+        }
+        */
+
+        if ($this->source_type == 'ios' && $info['id'] == 26) {
+            $this->setButton('share', -1);
+        }
+
+        $info['button'] = $this->data['button'];
+
+        return $info;
+    }
+
     # 购买阅读页
     public function buy()
     {
@@ -360,8 +533,8 @@ class Journal_v1 extends Core
             return $this->data;
         }
 
-        $time = time();
         /*
+        $time = time();
         if ($this->data['active'] && $time >= $this->data['active']['start'] && $time < $this->data['active']['end']) {
             $this->data['active']['status'] = 1;
         } else {