rabin 5 年之前
父节点
当前提交
9eae223c19
共有 89 个文件被更改,包括 1483 次插入498 次删除
  1. 37 0
      act/database/order.php
  2. 12 0
      act/database/order_temp.php
  3. 29 0
      act/src/Order.php
  4. 23 19
      buy/assets/mobile/auth.html
  5. 84 113
      buy/assets/mobile/codedetail.html
  6. 2 2
      buy/assets/mobile/css/auth.css
  7. 1 1
      buy/assets/mobile/css/auth.css.map
  8. 0 2
      buy/assets/mobile/css/codedetail.css
  9. 1 1
      buy/assets/mobile/css/codedetail.css.map
  10. 0 0
      buy/assets/mobile/css/global.css
  11. 1 1
      buy/assets/mobile/css/global.css.map
  12. 0 0
      buy/assets/mobile/css/index.css
  13. 1 0
      buy/assets/mobile/css/index.css.map
  14. 0 0
      buy/assets/mobile/css/list.css
  15. 1 1
      buy/assets/mobile/css/list.css.map
  16. 二进制
      buy/assets/mobile/images/ico-home-active.png
  17. 二进制
      buy/assets/mobile/images/ico-home.png
  18. 二进制
      buy/assets/mobile/images/tabico-code-active.png
  19. 二进制
      buy/assets/mobile/images/tabico-code.png
  20. 152 19
      buy/assets/mobile/index.html
  21. 1 1
      buy/assets/mobile/js/auth.js
  22. 1 1
      buy/assets/mobile/js/auth.js.map
  23. 1 1
      buy/assets/mobile/js/codedetail.js
  24. 1 1
      buy/assets/mobile/js/codedetail.js.map
  25. 0 0
      buy/assets/mobile/js/global.js
  26. 0 0
      buy/assets/mobile/js/global.js.map
  27. 2 2
      buy/assets/mobile/js/index.js
  28. 1 1
      buy/assets/mobile/js/index.js.map
  29. 2 2
      buy/assets/mobile/js/list.js
  30. 1 1
      buy/assets/mobile/js/list.js.map
  31. 59 87
      buy/assets/mobile/list.html
  32. 64 95
      buy/assets/mobile/pay.html
  33. 20 0
      buy/assets/mobile_old/auth.html
  34. 114 0
      buy/assets/mobile_old/codedetail.html
  35. 2 0
      buy/assets/mobile_old/css/auth.css
  36. 1 0
      buy/assets/mobile_old/css/auth.css.map
  37. 2 0
      buy/assets/mobile_old/css/codedetail.css
  38. 1 0
      buy/assets/mobile_old/css/codedetail.css.map
  39. 0 0
      buy/assets/mobile_old/css/global.css
  40. 1 0
      buy/assets/mobile_old/css/global.css.map
  41. 0 0
      buy/assets/mobile_old/css/list.css
  42. 1 0
      buy/assets/mobile_old/css/list.css.map
  43. 0 0
      buy/assets/mobile_old/css/pay.css
  44. 1 0
      buy/assets/mobile_old/css/pay.css.map
  45. 二进制
      buy/assets/mobile_old/images/ico-close.png
  46. 二进制
      buy/assets/mobile_old/images/ico-code.png
  47. 二进制
      buy/assets/mobile_old/images/ico-selected.png
  48. 二进制
      buy/assets/mobile_old/images/ico-unselected.png
  49. 二进制
      buy/assets/mobile_old/images/list.png
  50. 二进制
      buy/assets/mobile_old/images/logo.jpg
  51. 二进制
      buy/assets/mobile_old/images/mag.png
  52. 二进制
      buy/assets/mobile_old/images/qrcode.png
  53. 20 0
      buy/assets/mobile_old/index.html
  54. 2 0
      buy/assets/mobile_old/js/auth.js
  55. 1 0
      buy/assets/mobile_old/js/auth.js.map
  56. 2 0
      buy/assets/mobile_old/js/codedetail.js
  57. 1 0
      buy/assets/mobile_old/js/codedetail.js.map
  58. 3 0
      buy/assets/mobile_old/js/config.js
  59. 0 0
      buy/assets/mobile_old/js/global.js
  60. 0 0
      buy/assets/mobile_old/js/global.js.map
  61. 2 0
      buy/assets/mobile_old/js/index.js
  62. 1 0
      buy/assets/mobile_old/js/index.js.map
  63. 2 0
      buy/assets/mobile_old/js/list.js
  64. 1 0
      buy/assets/mobile_old/js/list.js.map
  65. 2 0
      buy/assets/mobile_old/js/pay.js
  66. 1 0
      buy/assets/mobile_old/js/pay.js.map
  67. 88 0
      buy/assets/mobile_old/list.html
  68. 41 0
      buy/assets/mobile_old/my_code.html
  69. 95 0
      buy/assets/mobile_old/pay.html
  70. 7 9
      buy/src/Base.php
  71. 52 32
      buy/src/Buy.php
  72. 10 0
      buy/src/Data.php
  73. 21 0
      buy/template/mobile/auth.php
  74. 7 5
      buy/template/mobile/codedetail.php
  75. 34 11
      buy/template/mobile/home.php
  76. 14 24
      buy/template/mobile/list.php
  77. 4 42
      buy/template/mobile/pay.php
  78. 38 6
      doc/apidoc_v1.php
  79. 1 1
      h5/assets/mobile/live.html
  80. 6 1
      h5/src/View.php
  81. 4 0
      journal/database/cate.php
  82. 40 1
      journal/database/content.php
  83. 79 3
      journal/database/info.php
  84. 151 0
      journal/database/star.php
  85. 22 0
      journal/lib/Manage.php
  86. 88 8
      journal/src/Api.php
  87. 1 1
      main/src/Content.php
  88. 20 2
      main/src/Journal_v1.php
  89. 2 1
      main/src/Preview.php

+ 37 - 0
act/database/order.php

@@ -189,6 +189,18 @@ return array
             //'list'        => true,
         ),
 
+        'star_id'        => array
+        (
+            'type'      => 'int-11',
+            'name'      => '明星',
+            'default'   => '',
+            'desc'      => '明星',
+            'match'     => 'is_numeric',
+            'update'    => 'select',
+            //'search'    => 'select',
+            //'list'        => true,
+        ),
+
         'buy_id'        => array
         (
             'type'      => 'int-11',
@@ -564,5 +576,30 @@ return array
             'type' => 'all',
             'col' => 'id,order_id',
         ),
+
+        'getNumByJournal' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'product_id' => 'yes',
+                'state' => 1,
+            ),
+            'type' => 'one',
+            'col' => 'sum(buy_num) as buy_num',
+        ),
+
+        'getNumByStar' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'star_id' => 'yes',
+                'product_id' => 'yes',
+                'state' => 1,
+            ),
+            'type' => 'one',
+            'col' => 'sum(buy_num) as buy_num',
+        ),
     ),
 );

+ 12 - 0
act/database/order_temp.php

@@ -189,6 +189,18 @@ return array
             //'list'        => true,
         ),
 
+        'star_id'        => array
+        (
+            'type'      => 'int-11',
+            'name'      => '明星',
+            'default'   => '',
+            'desc'      => '明星',
+            'match'     => 'is_numeric',
+            'update'    => 'select',
+            //'search'    => 'select',
+            //'list'        => true,
+        ),
+
         'buy_id'        => array
         (
             'type'      => 'int-11',

+ 29 - 0
act/src/Order.php

@@ -26,9 +26,30 @@ class Order extends Core
             $key = 'journal_actives_' . $id;
             $active = Dever::db('journal/active')->one($id);
             Dever::cache($key, $active);
+        } elseif ($type == 4) {
+            $key = 'journal_stars_' . $id;
+            $star = Dever::db('journal/star')->one($id);
+            Dever::cache($key, $star);
         }
     }
 
+    # 获取明星信息,走缓存,先不走接口
+    public function getStar($star_id = false)
+    {
+        $star_id = Dever::input('star_id', $star_id, '> 0', '请传入正确的明星ID');
+
+        $key = 'journal_stars_' . $star_id;
+
+        $star = Dever::cache($key);
+
+        if (!$star) {
+            $star = Dever::db('journal/star')->one($star_id);
+
+            Dever::cache($key, $star);
+        }
+        return $star;
+    }
+
     # 获取电子刊信息,走缓存,先不走接口
     public function getActive($journal_id = false)
     {
@@ -195,6 +216,11 @@ class Order extends Core
         $journal = $this->getJournal();
         $buy = $this->getBuy();
 
+        $star = false;
+        if (Dever::input('star_id')) {
+            $star = $this->getStar();
+        }
+
         $user = Dever::db('passport/user')->one($this->data['uid']);
         $wechat = Dever::db('passport/wechat')->one(array('uid' => $this->data['uid'], 'type' => 1, 'system_id' => $journal['cate_id']));
 
@@ -230,6 +256,9 @@ class Order extends Core
         $order_data['cate_id'] = $journal['cate_id'];
         //$order_data['order_id'] = $order_id;
         $order_data['product_id'] = $journal['id'];
+        if ($star) {
+            $order_data['star_id'] = $star['id'];
+        }
         $order_data['buy_id'] = $buy['id'];
         $order_data['uid'] = $this->data['uid']; 
         $order_data['type'] = 3;

+ 23 - 19
buy/assets/mobile/auth.html

@@ -1,20 +1,24 @@
-<!DOCTYPE html>
-<html>
-
-<head>
-    <meta charset="UTF-8">
-
-    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no">
-    <title>JSTYLE精美</title>
-    <style>
-
-    </style>
-<link href="css/global.css?v=3f8cf811" rel="stylesheet"><link href="css/auth.css?v=3f8cf811" rel="stylesheet"></head>
-
-<body>
-    <img class="logo" src="http://www.huoxingkandiqiu.com/files/img/ico-auth.png" alt="">
-    <div class='txt'><span>授权后才可以使用精美时尚服务<br>感谢您的支持</span></div>
-    <a href="#" class='button'>授权登录</a>
-<script type="text/javascript" src="js/global.js?v=3f8cf811"></script><script type="text/javascript" src="js/auth.js?v=3f8cf811"></script></body>
-
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="UTF-8">
+
+    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no">
+    <title>JSTYLE精美</title>
+    <style>
+
+    </style>
+<link href="css/global.css?v=a54dd0df" rel="stylesheet"><link href="css/auth.css?v=a54dd0df" rel="stylesheet"></head>
+
+<body>
+    <div class='topcont'>
+        <div class='title'>欢迎使用<span>小程序名称</span></div>
+        <span class='msg'>使用小程序的全部功能 <br>
+            需要您授权以下微信权限:</span>
+    </div>
+    <div class="authinfo">获取您的公开信息(昵称、头像等)</div>
+    <a href="#" class='button' >授权用户信息</a>
+<script type="text/javascript" src="js/global.js?v=a54dd0df"></script><script type="text/javascript" src="js/auth.js?v=a54dd0df"></script></body>
+
 </html>

+ 84 - 113
buy/assets/mobile/codedetail.html

@@ -1,114 +1,85 @@
-<!DOCTYPE html>
-<html>
-
-<head>
-    <meta charset="UTF-8">
-
-    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no">
-    <title>JSTYLE精美</title>
-<link href="css/global.css?v=3f8cf811" rel="stylesheet"><link href="css/codedetail.css?v=3f8cf811" rel="stylesheet"></head>
-
-<body>
-    <div class="tips">
-        <p>温馨提示:</p>
-        <p>兑换码只能被激活一次,当您购买成功后,可进入<span id="product_name">小程序</span>使用兑换码查看电子刊,若您购买了多本,可将剩余兑换码赠送好友。</p>
-    </div>
-    <div class="btn-wrap">
-        <a href="javascript:;" node-act="read" class="button black">阅读电子刊</a>
-    </div>
-    <div class="code-list pages">
-        <dl>
-            <dd>
-                <p><i class="ico-code"></i>兑换码:675386834</p>
-                <span class="used">已使用</span>
-            </dd>
-            <dt>
-                <a href="javascript:;" class="button disabled">复制</a>
-            </dt>
-        </dl>
-        <dl>
-            <dd>
-                <p><i class="ico-code"></i>兑换码:675386834</p>
-                <span>未使用</span>
-            </dd>
-            <dt>
-                <a href="javascript:;" class="button" node-id="copy" data-clipboard-text="675386834">复制</a>
-            </dt>
-        </dl>
-        <dl>
-            <dd>
-                <p><i class="ico-code"></i>兑换码:675386834</p>
-                <span class="used">已使用</span>
-            </dd>
-            <dt>
-                <a href="javascript:;" class="button disabled">复制</a>
-            </dt>
-        </dl>
-        <dl>
-            <dd>
-                <p><i class="ico-code"></i>兑换码:675386834</p>
-                <span>未使用</span>
-            </dd>
-            <dt>
-                <a href="javascript:;" class="button" node-id="copy" data-clipboard-text="675386833">复制</a>
-            </dt>
-        </dl>
-        <dl>
-            <dd>
-                <p><i class="ico-code"></i>兑换码:675386834</p>
-                <span class="used">已使用</span>
-            </dd>
-            <dt>
-                <a href="javascript:;" class="button disabled">复制</a>
-            </dt>
-        </dl>
-        <dl>
-            <dd>
-                <p><i class="ico-code"></i>兑换码:675386834</p>
-                <span>未使用</span>
-            </dd>
-            <dt>
-                <a href="javascript:;" class="button" node-id="copy" data-clipboard-text="675386832">复制</a>
-            </dt>
-        </dl>
-    </div>
-    <div class="success fn-hide" id="success">复制成功</div>
-    <div class="mask fn-hide" id="layer">
-        <div class="layer read-layer">
-            <div class="qrcode-wrap">
-                <img src="images/qrcode.png" alt="" class="default" id="code">
-                <p>长按识别<span id="product_name">小程序</span>阅读电子刊</p>
-            </div>
-            <a href="javascript:;" class="btn-close" id="close"></a>
-        </div>
-    </div>
-<script type="text/javascript" src="js/global.js?v=3f8cf811"></script><script type="text/javascript" src="js/codedetail.js?v=3f8cf811"></script></body>
-<script src="https://cdn.bootcss.com/clipboard.js/2.0.4/clipboard.min.js"></script>
-<script>
-    function init(){
-        var timer;
-        var clipboard = new ClipboardJS('[node-id="copy"]');
-
-        clipboard.on('success', function (e) {
-            $('#success').removeClass('fn-hide');
-            clearTimeout(timer);
-            timer = setTimeout(function () {
-                $('#success').addClass('fn-hide');
-            }, 3000)
-
-            console.log(e.trigger)
-
-            e.clearSelection();
-        });
-
-        $('[node-act="read"]').on('click',function(){
-            $('#layer').show();
-        })
-
-        $('#close').on('click',function(){
-            $('#layer').hide();
-        });
-    }
-    init();
-</script>
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="UTF-8">
+
+    <meta name="divport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no">
+    <title>JSTYLE精美</title>
+<link href="css/global.css?v=a54dd0df" rel="stylesheet"><link href="css/codedetail.css?v=a54dd0df" rel="stylesheet"></head>
+
+<body>
+    <div class="maginfo">
+        <img src='http://7.jstyle.cn/1/2019/03/06/91e4fb0f002311e72cd285706e71d800.jpg' />
+        <div>
+            <span>兑换码只能被激活一次,当您购买成功后,可进入小程序使用兑换码查看,若您购买了多本,可将剩余兑换码赠送好友。</span>
+            <a href="#" node-act="read" class="button black">阅读</a>
+        </div>
+    </div>
+    <div class="code-list">
+        <div class='dl'>
+            <div class='dd'>
+                <div class='p'>
+                    <span class="ico-code"></span>兑换码:675386834</div>
+                <span class="span" style="font-size:.37333rem">未使用</span>
+            </div>
+            <div class='dt'>
+                <a href="javascript:;" class="button" node-id="copy" data-clipboard-text="675386834">复制</a>
+            </div>
+        </div>
+        <div class='dl'>
+            <div class='dd'>
+                <div class='p'>
+                    <span class="ico-code"></span>兑换码:675386834</div>
+                <span class="span used">已使用</span>
+            </div>
+            <div class='dt'>
+                <div class="button disabled">复制</div>
+            </div>
+        </div>
+        <div class='dl'>
+            <div class='dd'>
+                <div class='p'>
+                    <span class="ico-code"></span>兑换码:675386834</div>
+                <span class="span used">已作废</text>
+            </div>
+            <div class='dt'>
+                <div class="button disabled">复制</div>
+            </div>
+        </div>
+    </div>
+    <div class="success fn-hide" id="success">复制成功</div>
+    <div class="mask fn-hide" id="layer">
+        <div class="layer read-layer">
+            <div class="qrcode-wrap">
+                <img src="images/qrcode.png" alt="" class="default" id="code">
+                <p>长按识别小程序阅读电子刊</p>
+            </div>
+            <a href="javascript:;" class="btn-close" id="close"></a>
+        </div>
+    </div>
+<script type="text/javascript" src="js/global.js?v=a54dd0df"></script><script type="text/javascript" src="js/codedetail.js?v=a54dd0df"></script></body>
+<script src="https://cdn.bootcss.com/clipboard.js/2.0.4/clipboard.min.js"></script>
+<script>
+    var timer;
+    var clipboard = new ClipboardJS('[node-id="copy"]');
+
+    clipboard.on('success', function (e) {
+        $('#success').removeClass('fn-hide');
+        clearTimeout(timer);
+        timer = setTimeout(function () {
+            $('#success').addClass('fn-hide');
+        }, 3000)
+        e.clearSelection();
+    });
+
+    $('[node-act="read"]').on('click', function () {
+        $('#layer').show();
+    })
+
+    $('#close').on('click', function () {
+        $('#layer').hide();
+    });
+</script>
+
 </html>

+ 2 - 2
buy/assets/mobile/css/auth.css

@@ -1,2 +1,2 @@
-.logo{margin:3.13333rem auto .6rem;width:2.66667rem;height:2.66667rem;display:block}.txt{margin-bottom:.73333rem;color:#000;line-height:1.6;text-align:center}.button,.txt{font-size:.4rem}.button{margin:0 auto;background:#cc1619;width:7.06667rem;height:1.06667rem;line-height:1.06667rem;color:#fff}
-/*# sourceMappingURL=auth.css.map?v=4b099281*/
+.button{background:#000;width:7.06667rem;height:1.06667rem;line-height:1.06667rem;font-size:.4rem;color:#fff;border-radius:.06667rem;border:0;margin-left:1.46667rem}.button.disabled{background:#ccc;border-color:#ccc}.topcont{padding:1.28rem 0 0 1.46667rem}.topcont .title{font-size:.66667rem;line-height:.96rem}.topcont .title span{display:block}.topcont .msg{display:block;margin-top:.66667rem;font-size:.34667rem;line-height:.53333rem}.authinfo{font-size:.34667rem;margin:1.13333rem 0 1.33333rem 1.46667rem;color:#666}
+/*# sourceMappingURL=auth.css.map?v=a54dd0df*/

+ 1 - 1
buy/assets/mobile/css/auth.css.map

@@ -1 +1 @@
-{"version":3,"sources":[],"names":[],"mappings":"","file":"css/auth.css?v=4b099281","sourceRoot":""}
+{"version":3,"sources":[],"names":[],"mappings":"","file":"css/auth.css?v=a54dd0df","sourceRoot":""}

文件差异内容过多而无法显示
+ 0 - 2
buy/assets/mobile/css/codedetail.css


+ 1 - 1
buy/assets/mobile/css/codedetail.css.map

@@ -1 +1 @@
-{"version":3,"sources":[],"names":[],"mappings":"","file":"css/codedetail.css?v=4b099281","sourceRoot":""}
+{"version":3,"sources":[],"names":[],"mappings":"","file":"css/codedetail.css?v=a54dd0df","sourceRoot":""}

文件差异内容过多而无法显示
+ 0 - 0
buy/assets/mobile/css/global.css


+ 1 - 1
buy/assets/mobile/css/global.css.map

@@ -1 +1 @@
-{"version":3,"sources":[],"names":[],"mappings":"","file":"css/global.css?v=4b099281","sourceRoot":""}
+{"version":3,"sources":[],"names":[],"mappings":"","file":"css/global.css?v=a54dd0df","sourceRoot":""}

文件差异内容过多而无法显示
+ 0 - 0
buy/assets/mobile/css/index.css


+ 1 - 0
buy/assets/mobile/css/index.css.map

@@ -0,0 +1 @@
+{"version":3,"sources":[],"names":[],"mappings":"","file":"css/index.css?v=a54dd0df","sourceRoot":""}

文件差异内容过多而无法显示
+ 0 - 0
buy/assets/mobile/css/list.css


+ 1 - 1
buy/assets/mobile/css/list.css.map

@@ -1 +1 @@
-{"version":3,"sources":[],"names":[],"mappings":"","file":"css/list.css?v=4b099281","sourceRoot":""}
+{"version":3,"sources":[],"names":[],"mappings":"","file":"css/list.css?v=a54dd0df","sourceRoot":""}

二进制
buy/assets/mobile/images/ico-home-active.png


二进制
buy/assets/mobile/images/ico-home.png


二进制
buy/assets/mobile/images/tabico-code-active.png


二进制
buy/assets/mobile/images/tabico-code.png


+ 152 - 19
buy/assets/mobile/index.html

@@ -1,20 +1,153 @@
-<!DOCTYPE html>
-<html>
-
-<head>
-    <meta charset="UTF-8">
-
-    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no">
-    <title>JSTYLE精美</title>
-    <style>
-
-    </style>
-<link href="css/global.css?v=3f8cf811" rel="stylesheet"><link href="css/auth.css?v=3f8cf811" rel="stylesheet"></head>
-
-<body>
-    <img class="logo" src="http://www.huoxingkandiqiu.com/files/img/ico-auth.png" alt="">
-    <div class='txt'><span>授权后才可以使用精美时尚服务<br>感谢您的支持</span></div>
-    <a href="#" class='button'>授权登录</a>
-<script type="text/javascript" src="js/global.js?v=3f8cf811"></script><script type="text/javascript" src="js/auth.js?v=3f8cf811"></script></body>
-
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport"
+        content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
+    <title>精美时尚</title>
+<link href="css/global.css?v=a54dd0df" rel="stylesheet"><link href="css/index.css?v=a54dd0df" rel="stylesheet"></head>
+
+<body>
+    <div class='orderlist'>
+        <div class='order'>
+            <img src='http://7.jstyle.cn/1/2019/03/06/91e4fb0f002311e72cd285706e71d800.jpg' />
+            <div class='info'>
+                <div class='journal-no'>100本 ¥798.00</div>
+                <div class='name'>欢乐阳光BOY王鹤棣</div>
+                <div class='price'>
+                    <span>2019.6.30 15:20</span>
+                    <a href='javascript:;' node-act="subscribe" class='button'>订阅</a>
+                </div>
+            </div>
+        </div>
+        <div class='order'>
+            <img src='http://7.jstyle.cn/1/2019/03/06/91e4fb0f002311e72cd285706e71d800.jpg' />
+            <div class='info'>
+                <div class='journal-no'>100本 ¥798.00</div>
+                <div class='name'>欢乐阳光BOY王鹤棣</div>
+                <div class='price'>
+                    <span>2019.6.30 15:20</span>
+                    <a href='javascript:;' node-act="read" class='button read'>阅读</a>
+                </div>
+            </div>
+        </div>
+        <div class='order'>
+            <img src='http://7.jstyle.cn/1/2019/03/06/91e4fb0f002311e72cd285706e71d800.jpg' />
+            <div class='info'>
+                <div class='journal-no'>100本 ¥798.00</div>
+                <div class='name'>欢乐阳光BOY王鹤棣</div>
+                <div class='price'>
+                    <span>2019.6.30 15:20</span>
+                    <a href='javascript:;' node-act="subscribe" class='button'>订阅</a>
+                </div>
+            </div>
+        </div>
+    </div>
+    <div class='footer'>
+        <a href="index.html" class='tab tab-home active'>首页</a>
+        <a href="list.html" class='tab tab-code'>兑换码</a>
+    </div>
+    <div class="mask fn-hide" id="buylayermask"></div>
+    <div class="buy-layer" id="buylayer">
+        <form bindsubmit='doBuy'>
+            <div class="tit ">正在购买</div>
+            <div class='msg' node-act="buytip">查看购买说明</div>
+            <div class="list">
+                <div class="item active" data-id="1">
+                    <span class='name'>购买1本</span>
+                    <span>¥8.00</span>
+                </div>
+                <div class="item" data-id="2">
+                    <span class='name'>购买1本</span>
+                    <span>¥8.00</span>
+                </div>
+                <div class="item" data-id="3">
+                    <span class='name'>购买1本</span>
+                    <span>¥8.00</span>
+                </div>
+                <div class="item" data-id="4">
+                    <span class='name'>购买1本</span>
+                    <span>¥8.00</span>
+                </div>
+                <div class="item" data-id="5">
+                    <span class='name'>购买1本</span>
+                    <span>¥8.00</span>
+                </div>
+                <div class="item" data-id="6">
+                    <span class='name'>购买1本</span>
+                    <span>¥8.00</span>
+                </div>
+            </div>
+            <div class="btn-wrapper ">
+                <div class="button cancel" node-act="hideBuy">取消</div>
+                <div class="button primary " node-act="doBuy">确认</div>
+            </div>
+        </form>
+    </div>
+    <div class="mask fn-hide" id="buytip">
+        <div class="buytip-layer layer ">
+            <div class='buy-tit'>购买说明</div>
+            <div class="p">
+                1、购买成功后可直接点击【阅读】 查看阅读内容; <br />
+                2、电子刊为虚拟商品,如无系统问题,购买后不可退换; <br />
+                3、如有其他使用问题可咨询在线客服。
+            </div>
+            <div class="btn-wrapper">
+                <div class="button" node-act="hideTip">我知道了</div>
+            </div>
+        </div>
+    </div>
+
+    <div class="mask fn-hide" id="layer">
+        <div class="layer read-layer">
+            <div class="qrcode-wrap">
+                <img src="images/qrcode.png" alt="" class="default" id="code">
+                <p>长按识别小程序阅读电子刊</p>
+            </div>
+            <a href="javascript:;" class="btn-close" id="close"></a>
+        </div>
+    </div>
+    <div id="pay"></div>
+<script type="text/javascript" src="js/global.js?v=a54dd0df"></script><script type="text/javascript" src="js/index.js?v=a54dd0df"></script></body>
+<script>
+
+    let buyid = 1;
+    var payStatus = false;
+    $('[node-act="read"]').on('click', function () {
+        $('#code').attr('src',$(this).data('src'));
+        $('#layer').show();
+    })
+
+    $('#close').on('click', function () {
+        $('#layer').hide();
+    });
+
+    $('[node-act="subscribe"]').on('click', function () {
+        var url = $(this).data('src');
+        $('#buylayer').html('加载中...');
+        $('#buylayermask').show();
+        $.get(url, function(t)
+        {
+            $('#buylayer').html(t);
+            $('#buylayer').addClass('slidein')
+        })
+        
+    })
+    $('#buylayer').on('click','.list .item',function(){
+        $(this).addClass('active').siblings().removeClass('active');
+        buyid = $(this).data('id');
+    })
+
+    
+    function pay(url)
+    {
+        $.get(url, function(t) {
+            $("#pay").html(t);
+            payStatus = false;
+            $('[node-act="doBuy"]').html('确认');
+        })
+    }
+</script>
+
 </html>

+ 1 - 1
buy/assets/mobile/js/auth.js

@@ -1,2 +1,2 @@
 webpackJsonp([3],{1:function(n,t,c){"use strict";c(0),c(7)},12:function(n,t,c){n.exports=c(1)},7:function(n,t){}},[12]);
-//# sourceMappingURL=auth.js.map?v=4b099281
+//# sourceMappingURL=auth.js.map?v=a54dd0df

+ 1 - 1
buy/assets/mobile/js/auth.js.map

@@ -1 +1 @@
-{"version":3,"sources":["webpack:///js/auth.js","webpack:///./mobile/src/router/auth.js"],"names":["webpackJsonp","1","module","exports","__webpack_require__","12","7"],"mappings":"AAAAA,cAAc,IAERC,EACA,SAAUC,EAAQC,EAASC,GAEjC,YCLAA,GAAA,GACAA,EAAA,IDaMC,GACA,SAAUH,EAAQC,EAASC,GAEjCF,EAAOC,QAAUC,EAAoB,IAK/BE,EACA,SAAUJ,EAAQC,OAMrB","file":"js/auth.js?v=4b099281","sourcesContent":["webpackJsonp([3],{\n\n/***/ 1:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(0);\n\n__webpack_require__(7);\n\n/***/ }),\n\n/***/ 12:\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(1);\n\n\n/***/ }),\n\n/***/ 7:\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ })\n\n},[12]);\n\n\n// WEBPACK FOOTER //\n// js/auth.js?v=4b099281","import './global';\r\nimport '../css/auth.css';\n\n\n// WEBPACK FOOTER //\n// ./mobile/src/router/auth.js"],"sourceRoot":""}
+{"version":3,"sources":["webpack:///js/auth.js","webpack:///./mobile/src/router/auth.js"],"names":["webpackJsonp","1","module","exports","__webpack_require__","12","7"],"mappings":"AAAAA,cAAc,IAERC,EACA,SAAUC,EAAQC,EAASC,GAEjC,YCLAA,GAAA,GACAA,EAAA,IDaMC,GACA,SAAUH,EAAQC,EAASC,GAEjCF,EAAOC,QAAUC,EAAoB,IAK/BE,EACA,SAAUJ,EAAQC,OAMrB","file":"js/auth.js?v=a54dd0df","sourcesContent":["webpackJsonp([3],{\n\n/***/ 1:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(0);\n\n__webpack_require__(7);\n\n/***/ }),\n\n/***/ 12:\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(1);\n\n\n/***/ }),\n\n/***/ 7:\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ })\n\n},[12]);\n\n\n// WEBPACK FOOTER //\n// js/auth.js?v=a54dd0df","import './global';\r\nimport '../css/auth.css';\n\n\n// WEBPACK FOOTER //\n// ./mobile/src/router/auth.js"],"sourceRoot":""}

+ 1 - 1
buy/assets/mobile/js/codedetail.js

@@ -1,2 +1,2 @@
 webpackJsonp([2],{13:function(n,t,c){n.exports=c(2)},2:function(n,t,c){"use strict";c(0),c(9)},9:function(n,t){}},[13]);
-//# sourceMappingURL=codedetail.js.map?v=4b099281
+//# sourceMappingURL=codedetail.js.map?v=a54dd0df

+ 1 - 1
buy/assets/mobile/js/codedetail.js.map

@@ -1 +1 @@
-{"version":3,"sources":["webpack:///js/codedetail.js","webpack:///./mobile/src/router/codedetail.js"],"names":["webpackJsonp","13","module","exports","__webpack_require__","2","9"],"mappings":"AAAAA,cAAc,IAERC,GACA,SAAUC,EAAQC,EAASC,GAEjCF,EAAOC,QAAUC,EAAoB,IAK/BC,EACA,SAAUH,EAAQC,EAASC,GAEjC,YCbAA,GAAA,GAEAA,EAAA,IDoBME,EACA,SAAUJ,EAAQC,OAMrB","file":"js/codedetail.js?v=4b099281","sourcesContent":["webpackJsonp([2],{\n\n/***/ 13:\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(2);\n\n\n/***/ }),\n\n/***/ 2:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(0);\n\n__webpack_require__(9);\n\n/***/ }),\n\n/***/ 9:\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ })\n\n},[13]);\n\n\n// WEBPACK FOOTER //\n// js/codedetail.js?v=4b099281","import './global';\r\n// import '../js/clipboard.js';\r\nimport '../css/codedetail.css';\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./mobile/src/router/codedetail.js"],"sourceRoot":""}
+{"version":3,"sources":["webpack:///js/codedetail.js","webpack:///./mobile/src/router/codedetail.js"],"names":["webpackJsonp","13","module","exports","__webpack_require__","2","9"],"mappings":"AAAAA,cAAc,IAERC,GACA,SAAUC,EAAQC,EAASC,GAEjCF,EAAOC,QAAUC,EAAoB,IAK/BC,EACA,SAAUH,EAAQC,EAASC,GAEjC,YCbAA,GAAA,GAEAA,EAAA,IDoBME,EACA,SAAUJ,EAAQC,OAMrB","file":"js/codedetail.js?v=a54dd0df","sourcesContent":["webpackJsonp([2],{\n\n/***/ 13:\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(2);\n\n\n/***/ }),\n\n/***/ 2:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(0);\n\n__webpack_require__(9);\n\n/***/ }),\n\n/***/ 9:\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ })\n\n},[13]);\n\n\n// WEBPACK FOOTER //\n// js/codedetail.js?v=a54dd0df","import './global';\r\n// import '../js/clipboard.js';\r\nimport '../css/codedetail.css';\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./mobile/src/router/codedetail.js"],"sourceRoot":""}

文件差异内容过多而无法显示
+ 0 - 0
buy/assets/mobile/js/global.js


文件差异内容过多而无法显示
+ 0 - 0
buy/assets/mobile/js/global.js.map


+ 2 - 2
buy/assets/mobile/js/index.js

@@ -1,2 +1,2 @@
-webpackJsonp([2],{11:function(n,t){},17:function(n,t,c){n.exports=c(3)},3:function(n,t,c){"use strict";c(0),c(11)}},[17]);
-//# sourceMappingURL=index.js.map?v=d6fd028b
+webpackJsonp([1],{10:function(n,t){},15:function(n,t,c){n.exports=c(3)},3:function(n,t,c){"use strict";c(0),c(10)}},[15]);
+//# sourceMappingURL=index.js.map?v=a54dd0df

+ 1 - 1
buy/assets/mobile/js/index.js.map

@@ -1 +1 @@
-{"version":3,"sources":["webpack:///js","webpack:///./mobile/src/router/index.js"],"names":["webpackJsonp","11","module","exports","17","__webpack_require__","3"],"mappings":"AAAAA,cAAc,IAERC,GACA,SAAUC,EAAQC,KAMlBC,GACA,SAAUF,EAAQC,EAASE,GAEjCH,EAAOC,QAAUE,EAAoB,IAK/BC,EACA,SAAUJ,EAAQC,EAASE,GAEjC,YCpBAA,GAAA,GACAA,EAAA,OD4BG","file":"js/index.js?v=d6fd028b","sourcesContent":["webpackJsonp([2],{\n\n/***/ 11:\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n\n/***/ 17:\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(3);\n\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(0);\n\n__webpack_require__(11);\n\n/***/ })\n\n},[17]);\n\n\n// WEBPACK FOOTER //\n// js?v=d6fd028b","import './global';\nimport '../css/index.css';\n\n\n\n// WEBPACK FOOTER //\n// ./mobile/src/router/index.js"],"sourceRoot":""}
+{"version":3,"sources":["webpack:///js","webpack:///./mobile/src/router/index.js"],"names":["webpackJsonp","10","module","exports","15","__webpack_require__","3"],"mappings":"AAAAA,cAAc,IAERC,GACA,SAAUC,EAAQC,KAMlBC,GACA,SAAUF,EAAQC,EAASE,GAEjCH,EAAOC,QAAUE,EAAoB,IAK/BC,EACA,SAAUJ,EAAQC,EAASE,GAEjC,YCpBAA,GAAA,GACAA,EAAA,OD4BG","file":"js/index.js?v=a54dd0df","sourcesContent":["webpackJsonp([1],{\n\n/***/ 10:\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n\n/***/ 15:\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(3);\n\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(0);\n\n__webpack_require__(10);\n\n/***/ })\n\n},[15]);\n\n\n// WEBPACK FOOTER //\n// js?v=a54dd0df","import './global';\r\nimport '../css/index.css';\r\n\n\n\n// WEBPACK FOOTER //\n// ./mobile/src/router/index.js"],"sourceRoot":""}

+ 2 - 2
buy/assets/mobile/js/list.js

@@ -1,2 +1,2 @@
-webpackJsonp([1],{10:function(n,t){},15:function(n,t,c){n.exports=c(3)},3:function(n,t,c){"use strict";c(0),c(10)}},[15]);
-//# sourceMappingURL=list.js.map?v=4b099281
+webpackJsonp([0],{11:function(n,t){},16:function(n,t,c){n.exports=c(4)},4:function(n,t,c){"use strict";c(0),c(11)}},[16]);
+//# sourceMappingURL=list.js.map?v=a54dd0df

+ 1 - 1
buy/assets/mobile/js/list.js.map

@@ -1 +1 @@
-{"version":3,"sources":["webpack:///js/list.js","webpack:///./mobile/src/router/list.js"],"names":["webpackJsonp","10","module","exports","15","__webpack_require__","3"],"mappings":"AAAAA,cAAc,IAERC,GACA,SAAUC,EAAQC,KAMlBC,GACA,SAAUF,EAAQC,EAASE,GAEjCH,EAAOC,QAAUE,EAAoB,IAK/BC,EACA,SAAUJ,EAAQC,EAASE,GAEjC,YCpBAA,GAAA,GACAA,EAAA,OD4BG","file":"js/list.js?v=4b099281","sourcesContent":["webpackJsonp([1],{\n\n/***/ 10:\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n\n/***/ 15:\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(3);\n\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(0);\n\n__webpack_require__(10);\n\n/***/ })\n\n},[15]);\n\n\n// WEBPACK FOOTER //\n// js/list.js?v=4b099281","import './global';\nimport '../css/list.css';\n\n\n\n// WEBPACK FOOTER //\n// ./mobile/src/router/list.js"],"sourceRoot":""}
+{"version":3,"sources":["webpack:///js/list.js","webpack:///./mobile/src/router/list.js"],"names":["webpackJsonp","11","module","exports","16","__webpack_require__","4"],"mappings":"AAAAA,cAAc,IAERC,GACA,SAAUC,EAAQC,KAMlBC,GACA,SAAUF,EAAQC,EAASE,GAEjCH,EAAOC,QAAUE,EAAoB,IAK/BC,EACA,SAAUJ,EAAQC,EAASE,GAEjC,YCpBAA,GAAA,GACAA,EAAA,OD4BG","file":"js/list.js?v=a54dd0df","sourcesContent":["webpackJsonp([0],{\n\n/***/ 11:\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n\n/***/ 16:\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(4);\n\n\n/***/ }),\n\n/***/ 4:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(0);\n\n__webpack_require__(11);\n\n/***/ })\n\n},[16]);\n\n\n// WEBPACK FOOTER //\n// js/list.js?v=a54dd0df","import './global';\r\nimport '../css/list.css';\r\n\n\n\n// WEBPACK FOOTER //\n// ./mobile/src/router/list.js"],"sourceRoot":""}

+ 59 - 87
buy/assets/mobile/list.html

@@ -1,88 +1,60 @@
-<!DOCTYPE html>
-<html>
-
-<head>
-    <meta charset="utf-8">
-    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
-    <title>精美时尚</title>
-<link href="css/global.css?v=3f8cf811" rel="stylesheet"><link href="css/list.css?v=3f8cf811" rel="stylesheet"></head>
-
-<body>
-    <div class="logo"><img src="images/logo.jpg" />精品购物指南</div>
-    <div class="info-txt">这里加一行简介</div>
-    <div class="tab" node-id="tab">
-        <a class="li active"><span>预购杂志</span></a>
-        <a class="li"><span>兑换码</span></a>
-    </div>
-    <div class="list pages" node-id="list">
-        <div class="item">
-            <img src="images/mag.png" class="default" />
-            <div class="info">
-                <h2>段宜恩电子刊段宜恩电子刊段宜恩电子刊</h2>
-            </div>
-            <div class="ctrls-cont">
-                <p class="clearfix">
-                    <span class="price">免费</span>
-                </p>
-                <button class="button" node-act="read" data-src="images/qrcode.png">阅读</button>
-            </div>
-        </div>
-        <div class="item">
-            <img src="images/mag.png" class="default" />
-            <div class="info">
-                <h2>Yamy魔幻星际女战士的异度空间</h2>
-            </div>
-            <div class="ctrls-cont">
-                 <p class="clearfix">
-                    <span class="price">¥6.00</span>
-                </p>
-                <button class="button">订阅</button>
-            </div>
-        </div>
-    </div>
-
-    <div class="mask fn-hide" id="layer">
-        <div class="layer read-layer">
-            <div class="qrcode-wrap">
-                <img src="images/qrcode.png" alt="" class="default" id="code">
-                <p>长按识别<span id="product_name">小程序</span>阅读电子刊</p>
-            </div>
-            <a href="javascript:;" class="btn-close" id="close"></a>
-        </div>
-    </div>
-
-<script type="text/javascript" src="js/global.js?v=3f8cf811"></script><script type="text/javascript" src="js/list.js?v=3f8cf811"></script></body>
-<script>
-
-    function init(){
-        /*
-        var tabIndex = 0;
-        $('[node-id="tab"]').on('click','.li',function(){
-            tabIndex = $(this).index();
-            $(this).addClass('active').siblings('.li').removeClass('active');
-            $('[node-id="list"]').hide().eq(tabIndex).show();
-        });
-*/
-
-        $('[node-act="read"]').on('click',function(){
-            $('#code').attr('src',$(this).data('src'));
-            $('#layer').show();
-        })
-
-        $('[node-act="pay"]').on('click',function(){
-            pay($(this).data('src'));
-        })
-
-        $('#close').on('click',function(){
-            $('#layer').hide();
-        });
-
-    }
-    
-    init();
-    function pay(url)
-    {
-        location.href = url;
-    }
-</script>
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport"
+        content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
+    <title>精美时尚</title>
+<link href="css/global.css?v=a54dd0df" rel="stylesheet"><link href="css/list.css?v=a54dd0df" rel="stylesheet"></head>
+
+<body>
+    <div class='orderlist'>
+        <div class='order'>
+            <img src='http://7.jstyle.cn/1/2019/03/06/91e4fb0f002311e72cd285706e71d800.jpg' />
+            <div class='info'>
+                <div class='name'>欢乐阳光BOY王鹤棣</div>
+                <div class='count'>100本 ¥798.00</div>
+                <div class='order-time'>
+                    <span>2019.6.30 15:20</span>
+                    <a href='codedetail.html'
+                        class='button'>查看</a>
+                </div>
+            </div>
+        </div>
+        <div class='order'>
+            <img src='http://7.jstyle.cn/1/2019/03/06/91e4fb0f002311e72cd285706e71d800.jpg' />
+            <div class='info'>
+                <div class='name'>欢乐阳光BOY王鹤棣</div>
+                <div class='count'>100本 ¥798.00</div>
+                <div class='order-time'>
+                    <span>2019.6.30 15:20</span>
+                    <a href='codedetail.html'
+                        class='button'>查看</a>
+                </div>
+            </div>
+        </div>
+        <div class='order'>
+            <img src='http://7.jstyle.cn/1/2019/03/06/91e4fb0f002311e72cd285706e71d800.jpg' />
+            <div class='info'>
+                <div class='name'>欢乐阳光BOY王鹤棣</div>
+                <div class='count'>100本 ¥798.00</div>
+                <div class='order-time'>
+                    <span>2019.6.30 15:20</span>
+                    <a href='codedetail.html'
+                        class='button'>查看</a>
+                </div>
+            </div>
+        </div>
+    </div>
+    <div class='footer'>
+            <a href="index.html" class='tab tab-home '>首页</a>
+            <a href="list.html" class='tab tab-code active'>兑换码</a>
+        </div>
+<script type="text/javascript" src="js/global.js?v=a54dd0df"></script><script type="text/javascript" src="js/list.js?v=a54dd0df"></script></body>
+<script>
+
+
+</script>
+
 </html>

+ 64 - 95
buy/assets/mobile/pay.html

@@ -1,95 +1,64 @@
-<!DOCTYPE html>
-<html>
-
-<head>
-    <meta charset="utf-8">
-    <meta name="viewport"
-        content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
-    <title>精美时尚</title>
-<link href="css/global.css?v=3f8cf811" rel="stylesheet"><link href="css/pay.css?v=3f8cf811" rel="stylesheet"></head>
-
-<body>
-    <div class="container">
-        <div>
-            <div class="h1">正在购买《xxxx》</div>
-            <div class='buytip' id="open">
-                <p>查看购买说明</p>
-            </div>
-            <div class="list">
-                <a class="item active" bind-id="item" href="#">
-                    <p>购买10本</p>
-                    <p>¥6</p>
-                </a>
-                <a class="item" bind-id="item" href="#">
-                    <p>购买10本</p>
-                    <p>¥6</p>
-                </a>
-                <a class="item" bind-id="item" href="#">
-                    <p>购买10本</p>
-                    <p>¥6</p>
-                </a>
-            </div>
-        </div>
-        <div class='fix-footer'>
-            <a href="javascript:history.go(-1)" class='back-btn'>返回</a>
-            <a href="javascript:;" id="dopay" class="fix-button">确认购买</a>
-        </div>
-    </div>
-    <div class="mask fn-hide" id="layer">
-        <div class="layer ">
-            <h3 class="title">购买说明</h3>
-            <div class="richtext">asdfsdf</div>
-            <div class="btn-wrapper">
-                <div class="button opposite" node-act="close">我知道了</div>
-            </div>
-        </div>
-    </div>
-
-    <div class="mask fn-hide" id="pay-layer">
-        <div class="layer buy-result">
-            <h3 class="title">购买提示</h3>
-            <div class="res" id="buyyes">您已成功购买1000本电子刊</div>
-            <div class="btn-wrapper">
-                <a href="codedetail.html" class="button" id="viewcode">查看兑换码</a>
-                <div class="button" node-act="close">继续购买</div>
-            </div>
-        </div>
-    </div>
-    <div id="pay"></div>
-<script type="text/javascript" src="js/global.js?v=3f8cf811"></script><script type="text/javascript" src="js/pay.js?v=3f8cf811"></script></body>
-<script>
-    
-    var payStatus = false;
-    $(document).on('click', '[bind-id="item"]', function(){
-        $(this).addClass('active').siblings('.item').removeClass('active');
-        //$('#pay-layer').show();
-    });
-
-    $('#dopay').on('click',function(){
-        if (payStatus == false) {
-            $(this).html('支付中...');
-            var url = $('.active').attr('data-pay');
-            payStatus = true;
-            pay(url);
-        }
-    });
-
-    $('#open').on('click',function(){
-        $('#layer').show();
-    });
-
-    $('[node-act="close"]').on('click',function(){
-        $(this).closest('.mask').hide();
-    });
-
-    function pay(url)
-    {
-        $.get(url, function(t) {
-            $("#pay").html(t);
-            payStatus = false;
-            $('#dopay').html('确认购买');
-        })
-    }
-
-</script>
-</html>
+<form bindsubmit='doBuy'>
+            <div class="tit ">正在购买</div>
+            <div class='msg' node-act="buytip">查看购买说明</div>
+            <div id="tips" style="display: none;">查看购买说明</div>
+            <div class="list">
+                <div class="item active" data-id="1">
+                    <span class='name'>购买1本</span>
+                    <span>¥8.00</span>
+                </div>
+                <div class="item" data-id="2">
+                    <span class='name'>购买1本</span>
+                    <span>¥8.00</span>
+                </div>
+                <div class="item" data-id="3">
+                    <span class='name'>购买1本</span>
+                    <span>¥8.00</span>
+                </div>
+                <div class="item" data-id="4">
+                    <span class='name'>购买1本</span>
+                    <span>¥8.00</span>
+                </div>
+                <div class="item" data-id="5">
+                    <span class='name'>购买1本</span>
+                    <span>¥8.00</span>
+                </div>
+                <div class="item" data-id="6">
+                    <span class='name'>购买1本</span>
+                    <span>¥8.00</span>
+                </div>
+            </div>
+            <div class="btn-wrapper ">
+                <div class="button cancel" node-act="hideBuy">取消</div>
+                <div class="button primary " node-act="doBuy">确认</div>
+            </div>
+        </form>
+
+<script>
+	$('[node-act="hideBuy"]').on('click',function(){
+        $('#buylayer').removeClass('slidein')
+        $('#buylayermask').hide();
+    })
+
+    $('[node-act="doBuy"]').on('click',function(){
+        if (payStatus == false) {
+            var url = $('.list .active').attr('data-pay');
+            if (!url) {
+            	alert('错误的信息');
+            	location.reload();
+            	return;
+            }
+            $(this).html('支付中...');
+            payStatus = true;
+            pay(url);
+        }
+    })
+
+    $('[node-act="buytip"]').on('click', function () {
+        $('#buytip .p').html($('#tips').html());
+        $('#buytip').show()
+    })
+    $('[node-act="hideTip"]').on('click', function () {
+        $('#buytip').hide()
+    })
+</script>

+ 20 - 0
buy/assets/mobile_old/auth.html

@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="UTF-8">
+
+    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no">
+    <title>JSTYLE精美</title>
+    <style>
+
+    </style>
+<link href="css/global.css?v=3f8cf811" rel="stylesheet"><link href="css/auth.css?v=3f8cf811" rel="stylesheet"></head>
+
+<body>
+    <img class="logo" src="http://www.huoxingkandiqiu.com/files/img/ico-auth.png" alt="">
+    <div class='txt'><span>授权后才可以使用精美时尚服务<br>感谢您的支持</span></div>
+    <a href="#" class='button'>授权登录</a>
+<script type="text/javascript" src="js/global.js?v=3f8cf811"></script><script type="text/javascript" src="js/auth.js?v=3f8cf811"></script></body>
+
+</html>

+ 114 - 0
buy/assets/mobile_old/codedetail.html

@@ -0,0 +1,114 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="UTF-8">
+
+    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no">
+    <title>JSTYLE精美</title>
+<link href="css/global.css?v=3f8cf811" rel="stylesheet"><link href="css/codedetail.css?v=3f8cf811" rel="stylesheet"></head>
+
+<body>
+    <div class="tips">
+        <p>温馨提示:</p>
+        <p>兑换码只能被激活一次,当您购买成功后,可进入<span id="product_name">小程序</span>使用兑换码查看电子刊,若您购买了多本,可将剩余兑换码赠送好友。</p>
+    </div>
+    <div class="btn-wrap">
+        <a href="javascript:;" node-act="read" class="button black">阅读电子刊</a>
+    </div>
+    <div class="code-list pages">
+        <dl>
+            <dd>
+                <p><i class="ico-code"></i>兑换码:675386834</p>
+                <span class="used">已使用</span>
+            </dd>
+            <dt>
+                <a href="javascript:;" class="button disabled">复制</a>
+            </dt>
+        </dl>
+        <dl>
+            <dd>
+                <p><i class="ico-code"></i>兑换码:675386834</p>
+                <span>未使用</span>
+            </dd>
+            <dt>
+                <a href="javascript:;" class="button" node-id="copy" data-clipboard-text="675386834">复制</a>
+            </dt>
+        </dl>
+        <dl>
+            <dd>
+                <p><i class="ico-code"></i>兑换码:675386834</p>
+                <span class="used">已使用</span>
+            </dd>
+            <dt>
+                <a href="javascript:;" class="button disabled">复制</a>
+            </dt>
+        </dl>
+        <dl>
+            <dd>
+                <p><i class="ico-code"></i>兑换码:675386834</p>
+                <span>未使用</span>
+            </dd>
+            <dt>
+                <a href="javascript:;" class="button" node-id="copy" data-clipboard-text="675386833">复制</a>
+            </dt>
+        </dl>
+        <dl>
+            <dd>
+                <p><i class="ico-code"></i>兑换码:675386834</p>
+                <span class="used">已使用</span>
+            </dd>
+            <dt>
+                <a href="javascript:;" class="button disabled">复制</a>
+            </dt>
+        </dl>
+        <dl>
+            <dd>
+                <p><i class="ico-code"></i>兑换码:675386834</p>
+                <span>未使用</span>
+            </dd>
+            <dt>
+                <a href="javascript:;" class="button" node-id="copy" data-clipboard-text="675386832">复制</a>
+            </dt>
+        </dl>
+    </div>
+    <div class="success fn-hide" id="success">复制成功</div>
+    <div class="mask fn-hide" id="layer">
+        <div class="layer read-layer">
+            <div class="qrcode-wrap">
+                <img src="images/qrcode.png" alt="" class="default" id="code">
+                <p>长按识别<span id="product_name">小程序</span>阅读电子刊</p>
+            </div>
+            <a href="javascript:;" class="btn-close" id="close"></a>
+        </div>
+    </div>
+<script type="text/javascript" src="js/global.js?v=3f8cf811"></script><script type="text/javascript" src="js/codedetail.js?v=3f8cf811"></script></body>
+<script src="https://cdn.bootcss.com/clipboard.js/2.0.4/clipboard.min.js"></script>
+<script>
+    function init(){
+        var timer;
+        var clipboard = new ClipboardJS('[node-id="copy"]');
+
+        clipboard.on('success', function (e) {
+            $('#success').removeClass('fn-hide');
+            clearTimeout(timer);
+            timer = setTimeout(function () {
+                $('#success').addClass('fn-hide');
+            }, 3000)
+
+            console.log(e.trigger)
+
+            e.clearSelection();
+        });
+
+        $('[node-act="read"]').on('click',function(){
+            $('#layer').show();
+        })
+
+        $('#close').on('click',function(){
+            $('#layer').hide();
+        });
+    }
+    init();
+</script>
+</html>

+ 2 - 0
buy/assets/mobile_old/css/auth.css

@@ -0,0 +1,2 @@
+.logo{margin:3.13333rem auto .6rem;width:2.66667rem;height:2.66667rem;display:block}.txt{margin-bottom:.73333rem;color:#000;line-height:1.6;text-align:center}.button,.txt{font-size:.4rem}.button{margin:0 auto;background:#cc1619;width:7.06667rem;height:1.06667rem;line-height:1.06667rem;color:#fff}
+/*# sourceMappingURL=auth.css.map?v=4b099281*/

+ 1 - 0
buy/assets/mobile_old/css/auth.css.map

@@ -0,0 +1 @@
+{"version":3,"sources":[],"names":[],"mappings":"","file":"css/auth.css?v=4b099281","sourceRoot":""}

+ 2 - 0
buy/assets/mobile_old/css/codedetail.css

@@ -0,0 +1,2 @@
+.tips{width:8.66667rem;margin:.58667rem auto .26667rem;line-height:.53333rem}.button,.tips{font-size:.32rem}.button{margin:0;width:2.4rem;line-height:.86667rem;height:.86667rem}.button.black{background-color:#000}.button.disabled{background-color:#ccc}.btn-wrap{width:8.66667rem;margin:0 auto .54667rem}.code-list{border-top:1px solid #ccc;width:8.66667rem;margin:0 auto}.code-list dl{-ms-flex-pack:justify;justify-content:space-between;padding:.53333rem 0;border-bottom:1px solid #ccc}.code-list dl,.code-list dl dd p{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.code-list dl dd p{font-size:.37333rem;line-height:.56rem;margin-bottom:.2rem}.code-list dl dd p .ico-code{display:block;width:.45333rem;height:.4rem;background:url(../images/ico-code.png) no-repeat;background-size:.45333rem .4rem;margin-right:.13333rem}.code-list dl dd p b{font-weight:400}.code-list dl dd span{font-size:.32rem}.code-list dl dd span.used{color:#d1171a}.success{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);background:rgba(0,0,0,.75);border-radius:.2rem;width:6.6667rem;height:1.0667rem;line-height:1.0667rem;font-size:.4rem;text-align:center;color:#fff}
+/*# sourceMappingURL=codedetail.css.map?v=4b099281*/

+ 1 - 0
buy/assets/mobile_old/css/codedetail.css.map

@@ -0,0 +1 @@
+{"version":3,"sources":[],"names":[],"mappings":"","file":"css/codedetail.css?v=4b099281","sourceRoot":""}

文件差异内容过多而无法显示
+ 0 - 0
buy/assets/mobile_old/css/global.css


+ 1 - 0
buy/assets/mobile_old/css/global.css.map

@@ -0,0 +1 @@
+{"version":3,"sources":[],"names":[],"mappings":"","file":"css/global.css?v=4b099281","sourceRoot":""}

文件差异内容过多而无法显示
+ 0 - 0
buy/assets/mobile_old/css/list.css


+ 1 - 0
buy/assets/mobile_old/css/list.css.map

@@ -0,0 +1 @@
+{"version":3,"sources":[],"names":[],"mappings":"","file":"css/list.css?v=4b099281","sourceRoot":""}

文件差异内容过多而无法显示
+ 0 - 0
buy/assets/mobile_old/css/pay.css


+ 1 - 0
buy/assets/mobile_old/css/pay.css.map

@@ -0,0 +1 @@
+{"version":3,"sources":[],"names":[],"mappings":"","file":"css/pay.css?v=4b099281","sourceRoot":""}

二进制
buy/assets/mobile_old/images/ico-close.png


二进制
buy/assets/mobile_old/images/ico-code.png


二进制
buy/assets/mobile_old/images/ico-selected.png


二进制
buy/assets/mobile_old/images/ico-unselected.png


二进制
buy/assets/mobile_old/images/list.png


二进制
buy/assets/mobile_old/images/logo.jpg


二进制
buy/assets/mobile_old/images/mag.png


二进制
buy/assets/mobile_old/images/qrcode.png


+ 20 - 0
buy/assets/mobile_old/index.html

@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="UTF-8">
+
+    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no">
+    <title>JSTYLE精美</title>
+    <style>
+
+    </style>
+<link href="css/global.css?v=3f8cf811" rel="stylesheet"><link href="css/auth.css?v=3f8cf811" rel="stylesheet"></head>
+
+<body>
+    <img class="logo" src="http://www.huoxingkandiqiu.com/files/img/ico-auth.png" alt="">
+    <div class='txt'><span>授权后才可以使用精美时尚服务<br>感谢您的支持</span></div>
+    <a href="#" class='button'>授权登录</a>
+<script type="text/javascript" src="js/global.js?v=3f8cf811"></script><script type="text/javascript" src="js/auth.js?v=3f8cf811"></script></body>
+
+</html>

+ 2 - 0
buy/assets/mobile_old/js/auth.js

@@ -0,0 +1,2 @@
+webpackJsonp([3],{1:function(n,t,c){"use strict";c(0),c(7)},12:function(n,t,c){n.exports=c(1)},7:function(n,t){}},[12]);
+//# sourceMappingURL=auth.js.map?v=4b099281

+ 1 - 0
buy/assets/mobile_old/js/auth.js.map

@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///js/auth.js","webpack:///./mobile/src/router/auth.js"],"names":["webpackJsonp","1","module","exports","__webpack_require__","12","7"],"mappings":"AAAAA,cAAc,IAERC,EACA,SAAUC,EAAQC,EAASC,GAEjC,YCLAA,GAAA,GACAA,EAAA,IDaMC,GACA,SAAUH,EAAQC,EAASC,GAEjCF,EAAOC,QAAUC,EAAoB,IAK/BE,EACA,SAAUJ,EAAQC,OAMrB","file":"js/auth.js?v=4b099281","sourcesContent":["webpackJsonp([3],{\n\n/***/ 1:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(0);\n\n__webpack_require__(7);\n\n/***/ }),\n\n/***/ 12:\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(1);\n\n\n/***/ }),\n\n/***/ 7:\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ })\n\n},[12]);\n\n\n// WEBPACK FOOTER //\n// js/auth.js?v=4b099281","import './global';\r\nimport '../css/auth.css';\n\n\n// WEBPACK FOOTER //\n// ./mobile/src/router/auth.js"],"sourceRoot":""}

+ 2 - 0
buy/assets/mobile_old/js/codedetail.js

@@ -0,0 +1,2 @@
+webpackJsonp([2],{13:function(n,t,c){n.exports=c(2)},2:function(n,t,c){"use strict";c(0),c(9)},9:function(n,t){}},[13]);
+//# sourceMappingURL=codedetail.js.map?v=4b099281

+ 1 - 0
buy/assets/mobile_old/js/codedetail.js.map

@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///js/codedetail.js","webpack:///./mobile/src/router/codedetail.js"],"names":["webpackJsonp","13","module","exports","__webpack_require__","2","9"],"mappings":"AAAAA,cAAc,IAERC,GACA,SAAUC,EAAQC,EAASC,GAEjCF,EAAOC,QAAUC,EAAoB,IAK/BC,EACA,SAAUH,EAAQC,EAASC,GAEjC,YCbAA,GAAA,GAEAA,EAAA,IDoBME,EACA,SAAUJ,EAAQC,OAMrB","file":"js/codedetail.js?v=4b099281","sourcesContent":["webpackJsonp([2],{\n\n/***/ 13:\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(2);\n\n\n/***/ }),\n\n/***/ 2:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(0);\n\n__webpack_require__(9);\n\n/***/ }),\n\n/***/ 9:\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ })\n\n},[13]);\n\n\n// WEBPACK FOOTER //\n// js/codedetail.js?v=4b099281","import './global';\r\n// import '../js/clipboard.js';\r\nimport '../css/codedetail.css';\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./mobile/src/router/codedetail.js"],"sourceRoot":""}

+ 3 - 0
buy/assets/mobile_old/js/config.js

@@ -0,0 +1,3 @@
+//定义瀑布流
+Dever.Page().name = '#page';
+//Dever.Page().loading = '.loadding';

文件差异内容过多而无法显示
+ 0 - 0
buy/assets/mobile_old/js/global.js


文件差异内容过多而无法显示
+ 0 - 0
buy/assets/mobile_old/js/global.js.map


+ 2 - 0
buy/assets/mobile_old/js/index.js

@@ -0,0 +1,2 @@
+webpackJsonp([2],{11:function(n,t){},17:function(n,t,c){n.exports=c(3)},3:function(n,t,c){"use strict";c(0),c(11)}},[17]);
+//# sourceMappingURL=index.js.map?v=d6fd028b

+ 1 - 0
buy/assets/mobile_old/js/index.js.map

@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///js","webpack:///./mobile/src/router/index.js"],"names":["webpackJsonp","11","module","exports","17","__webpack_require__","3"],"mappings":"AAAAA,cAAc,IAERC,GACA,SAAUC,EAAQC,KAMlBC,GACA,SAAUF,EAAQC,EAASE,GAEjCH,EAAOC,QAAUE,EAAoB,IAK/BC,EACA,SAAUJ,EAAQC,EAASE,GAEjC,YCpBAA,GAAA,GACAA,EAAA,OD4BG","file":"js/index.js?v=d6fd028b","sourcesContent":["webpackJsonp([2],{\n\n/***/ 11:\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n\n/***/ 17:\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(3);\n\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(0);\n\n__webpack_require__(11);\n\n/***/ })\n\n},[17]);\n\n\n// WEBPACK FOOTER //\n// js?v=d6fd028b","import './global';\nimport '../css/index.css';\n\n\n\n// WEBPACK FOOTER //\n// ./mobile/src/router/index.js"],"sourceRoot":""}

+ 2 - 0
buy/assets/mobile_old/js/list.js

@@ -0,0 +1,2 @@
+webpackJsonp([1],{10:function(n,t){},15:function(n,t,c){n.exports=c(3)},3:function(n,t,c){"use strict";c(0),c(10)}},[15]);
+//# sourceMappingURL=list.js.map?v=4b099281

+ 1 - 0
buy/assets/mobile_old/js/list.js.map

@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///js/list.js","webpack:///./mobile/src/router/list.js"],"names":["webpackJsonp","10","module","exports","15","__webpack_require__","3"],"mappings":"AAAAA,cAAc,IAERC,GACA,SAAUC,EAAQC,KAMlBC,GACA,SAAUF,EAAQC,EAASE,GAEjCH,EAAOC,QAAUE,EAAoB,IAK/BC,EACA,SAAUJ,EAAQC,EAASE,GAEjC,YCpBAA,GAAA,GACAA,EAAA,OD4BG","file":"js/list.js?v=4b099281","sourcesContent":["webpackJsonp([1],{\n\n/***/ 10:\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n\n/***/ 15:\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(3);\n\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(0);\n\n__webpack_require__(10);\n\n/***/ })\n\n},[15]);\n\n\n// WEBPACK FOOTER //\n// js/list.js?v=4b099281","import './global';\nimport '../css/list.css';\n\n\n\n// WEBPACK FOOTER //\n// ./mobile/src/router/list.js"],"sourceRoot":""}

+ 2 - 0
buy/assets/mobile_old/js/pay.js

@@ -0,0 +1,2 @@
+webpackJsonp([0],{11:function(n,t){},16:function(n,t,c){n.exports=c(4)},4:function(n,t,c){"use strict";c(0),c(11)}},[16]);
+//# sourceMappingURL=pay.js.map?v=4b099281

+ 1 - 0
buy/assets/mobile_old/js/pay.js.map

@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///js/pay.js","webpack:///./mobile/src/router/pay.js"],"names":["webpackJsonp","11","module","exports","16","__webpack_require__","4"],"mappings":"AAAAA,cAAc,IAERC,GACA,SAAUC,EAAQC,KAMlBC,GACA,SAAUF,EAAQC,EAASE,GAEjCH,EAAOC,QAAUE,EAAoB,IAK/BC,EACA,SAAUJ,EAAQC,EAASE,GAEjC,YCpBAA,GAAA,GACAA,EAAA,OD4BG","file":"js/pay.js?v=4b099281","sourcesContent":["webpackJsonp([0],{\n\n/***/ 11:\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n\n/***/ 16:\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(4);\n\n\n/***/ }),\n\n/***/ 4:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(0);\n\n__webpack_require__(11);\n\n/***/ })\n\n},[16]);\n\n\n// WEBPACK FOOTER //\n// js/pay.js?v=4b099281","import './global';\nimport '../css/pay.css';\n\n\n\n// WEBPACK FOOTER //\n// ./mobile/src/router/pay.js"],"sourceRoot":""}

+ 88 - 0
buy/assets/mobile_old/list.html

@@ -0,0 +1,88 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
+    <title>精美时尚</title>
+<link href="css/global.css?v=3f8cf811" rel="stylesheet"><link href="css/list.css?v=3f8cf811" rel="stylesheet"></head>
+
+<body>
+    <div class="logo"><img src="images/logo.jpg" />精品购物指南</div>
+    <div class="info-txt">这里加一行简介</div>
+    <div class="tab" node-id="tab">
+        <a class="li active"><span>预购杂志</span></a>
+        <a class="li"><span>兑换码</span></a>
+    </div>
+    <div class="list pages" node-id="list">
+        <div class="item">
+            <img src="images/mag.png" class="default" />
+            <div class="info">
+                <h2>段宜恩电子刊段宜恩电子刊段宜恩电子刊</h2>
+            </div>
+            <div class="ctrls-cont">
+                <p class="clearfix">
+                    <span class="price">免费</span>
+                </p>
+                <button class="button" node-act="read" data-src="images/qrcode.png">阅读</button>
+            </div>
+        </div>
+        <div class="item">
+            <img src="images/mag.png" class="default" />
+            <div class="info">
+                <h2>Yamy魔幻星际女战士的异度空间</h2>
+            </div>
+            <div class="ctrls-cont">
+                 <p class="clearfix">
+                    <span class="price">¥6.00</span>
+                </p>
+                <button class="button">订阅</button>
+            </div>
+        </div>
+    </div>
+
+    <div class="mask fn-hide" id="layer">
+        <div class="layer read-layer">
+            <div class="qrcode-wrap">
+                <img src="images/qrcode.png" alt="" class="default" id="code">
+                <p>长按识别<span id="product_name">小程序</span>阅读电子刊</p>
+            </div>
+            <a href="javascript:;" class="btn-close" id="close"></a>
+        </div>
+    </div>
+
+<script type="text/javascript" src="js/global.js?v=3f8cf811"></script><script type="text/javascript" src="js/list.js?v=3f8cf811"></script></body>
+<script>
+
+    function init(){
+        /*
+        var tabIndex = 0;
+        $('[node-id="tab"]').on('click','.li',function(){
+            tabIndex = $(this).index();
+            $(this).addClass('active').siblings('.li').removeClass('active');
+            $('[node-id="list"]').hide().eq(tabIndex).show();
+        });
+*/
+
+        $('[node-act="read"]').on('click',function(){
+            $('#code').attr('src',$(this).data('src'));
+            $('#layer').show();
+        })
+
+        $('[node-act="pay"]').on('click',function(){
+            pay($(this).data('src'));
+        })
+
+        $('#close').on('click',function(){
+            $('#layer').hide();
+        });
+
+    }
+    
+    init();
+    function pay(url)
+    {
+        location.href = url;
+    }
+</script>
+</html>

+ 41 - 0
buy/assets/mobile_old/my_code.html

@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
+    <title>精美时尚</title>
+<link href="css/global.css?v=3f8cf811" rel="stylesheet"><link href="css/list.css?v=3f8cf811" rel="stylesheet"></head>
+
+<body>
+    <div class="logo"><img src="images/logo.jpg" />精品购物指南</div>
+    <div class="info-txt">这里加一行简介</div>
+    <div class="tab" node-id="tab">
+        <a class="li "><span>预购杂志</span></a>
+        <a class="li active"><span>兑换码</span></a>
+    </div>
+
+    <div class="list pages" node-id="list">
+        <div class="item2 clearfix">
+            <div class="order-info">
+                <p>2019年4月30日  15:20</p>
+                <a href="#">查看>></a>
+            </div>
+            <div class="mag-info">
+                <p>《段宜恩电子刊段宜恩电子刊段宜恩电子刊》</p>
+                <span>100本  ¥798.00</span>
+            </div>
+        </div>
+        <div class="item2 clearfix">
+            <div class="order-info">
+                <p>2019年4月30日  15:20</p>
+                <a href="#">查看>></a>
+            </div>
+            <div class="mag-info">
+                <p>《段宜恩电子刊段宜恩电子刊段宜恩电子刊》</p>
+                <span>100本  ¥798.00</span>
+            </div>
+        </div>
+    </div>
+
+<script type="text/javascript" src="js/global.js?v=3f8cf811"></script><script type="text/javascript" src="js/list.js?v=3f8cf811"></script></body>

+ 95 - 0
buy/assets/mobile_old/pay.html

@@ -0,0 +1,95 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport"
+        content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
+    <title>精美时尚</title>
+<link href="css/global.css?v=3f8cf811" rel="stylesheet"><link href="css/pay.css?v=3f8cf811" rel="stylesheet"></head>
+
+<body>
+    <div class="container">
+        <div>
+            <div class="h1">正在购买《xxxx》</div>
+            <div class='buytip' id="open">
+                <p>查看购买说明</p>
+            </div>
+            <div class="list">
+                <a class="item active" bind-id="item" href="#">
+                    <p>购买10本</p>
+                    <p>¥6</p>
+                </a>
+                <a class="item" bind-id="item" href="#">
+                    <p>购买10本</p>
+                    <p>¥6</p>
+                </a>
+                <a class="item" bind-id="item" href="#">
+                    <p>购买10本</p>
+                    <p>¥6</p>
+                </a>
+            </div>
+        </div>
+        <div class='fix-footer'>
+            <a href="javascript:history.go(-1)" class='back-btn'>返回</a>
+            <a href="javascript:;" id="dopay" class="fix-button">确认购买</a>
+        </div>
+    </div>
+    <div class="mask fn-hide" id="layer">
+        <div class="layer ">
+            <h3 class="title">购买说明</h3>
+            <div class="richtext">asdfsdf</div>
+            <div class="btn-wrapper">
+                <div class="button opposite" node-act="close">我知道了</div>
+            </div>
+        </div>
+    </div>
+
+    <div class="mask fn-hide" id="pay-layer">
+        <div class="layer buy-result">
+            <h3 class="title">购买提示</h3>
+            <div class="res" id="buyyes">您已成功购买1000本电子刊</div>
+            <div class="btn-wrapper">
+                <a href="codedetail.html" class="button" id="viewcode">查看兑换码</a>
+                <div class="button" node-act="close">继续购买</div>
+            </div>
+        </div>
+    </div>
+    <div id="pay"></div>
+<script type="text/javascript" src="js/global.js?v=3f8cf811"></script><script type="text/javascript" src="js/pay.js?v=3f8cf811"></script></body>
+<script>
+    
+    var payStatus = false;
+    $(document).on('click', '[bind-id="item"]', function(){
+        $(this).addClass('active').siblings('.item').removeClass('active');
+        //$('#pay-layer').show();
+    });
+
+    $('#dopay').on('click',function(){
+        if (payStatus == false) {
+            $(this).html('支付中...');
+            var url = $('.active').attr('data-pay');
+            payStatus = true;
+            pay(url);
+        }
+    });
+
+    $('#open').on('click',function(){
+        $('#layer').show();
+    });
+
+    $('[node-act="close"]').on('click',function(){
+        $(this).closest('.mask').hide();
+    });
+
+    function pay(url)
+    {
+        $.get(url, function(t) {
+            $("#pay").html(t);
+            payStatus = false;
+            $('#dopay').html('确认购买');
+        })
+    }
+
+</script>
+</html>

+ 7 - 9
buy/src/Base.php

@@ -73,19 +73,17 @@ class Base
         if (!$cate) {
             $cate = Dever::db('journal/cate')->one($this->cate);
 
-            $cate['login_title'] = '<span>授权后才可以使用' . $cate['name'] . '服务<br>感谢您的支持</span>';
+            //$cate['login_title'] = '<span>授权后才可以使用' . $cate['name'] . '服务<br>感谢您的支持</span>';
+            $cate['login_title'] = '<div class="title">欢迎使用<span>' . $cate['name'] . '</span></div>
+        <span class="msg">使用' . $cate['name'] . '的全部功能 <br>
+            需要您授权以下微信权限:</span>';
 
             $cate['bglogo'] = 'background-image:url('.$cate['logo'].');';
 
             $cate['logotxt'] = '<img src="'.$cate['logo'].'" />' . $cate['name'];
 
             $url = urlencode($this->url('list'));
-            $system = 1;
-            if ($this->cate == 2) {
-                $this->account = 3;
-                $system = 2;
-            }
-            $cate['login'] = 'location.href=\'' . Dever::url('request.auth?account='.$this->account.'&system='.$system.'&source='.$this->source.'&refer=' . $url, 'oauth') . '\'';
+            $cate['login'] = 'location.href=\'' . Dever::url('request.auth?account='.$this->account.'&source='.$this->source.'&refer=' . $url, 'oauth') . '\'';
 
             $info = Dever::db('journal/info')->getOne($cate['journal_id']);
 
@@ -93,8 +91,8 @@ class Base
                 $cate['cover'] = $info['pic_gd'];
             }
 
-            $cate['list_link'] = $this->url('list');
-            $cate['my_link'] = $this->url('my_code');
+            $cate['list_link'] = $this->url('home');
+            $cate['my_link'] = $this->url('list');
 
             Dever::cache($key, $cate);
         }

+ 52 - 32
buy/src/Buy.php

@@ -8,15 +8,6 @@ class Buy extends Base
     public function __construct()
     {
         parent::__construct();
-
-        $test = Dever::input('test');
-        if ($test == 1) {
-            print_r($this->user);die;
-        }
-
-        if (!$this->user) {
-            return $this->location('home');
-        }
     }
     
     # 列表页
@@ -33,9 +24,11 @@ class Buy extends Base
         $data = Dever::db('journal/info')->getAllByPage($where);
 
         if ($data) {
+            $num = 1;
             foreach ($data as $k => $v) {
                 if ($v['buy'] == 1 && $v['cash'] > 0) {
-                    $data[$k]['price'] = '¥' . number_format($v['cash'], 2);
+
+                    $data[$k]['price'] = $num . '本 ¥' . number_format(($v['cash'] * 100), 2);
                 } else {
                     $data[$k]['price'] = '免费';
                 }
@@ -46,7 +39,7 @@ class Buy extends Base
 
                 if ($v['buy'] == 1) {
                     $data[$k]['button'] = '订阅';
-                    $data[$k]['act'] = 'pay';
+                    $data[$k]['act'] = 'subscribe';
                     $data[$k]['code'] = $this->url('pay', array('id' => $v['id']));
                 } else {
                     $data[$k]['act'] = 'read';
@@ -54,6 +47,7 @@ class Buy extends Base
                     $data[$k]['code'] = $this->create_code($v['id']);
                     $data[$k]['button'] = '阅读';
                 }
+                $data[$k]['pdate'] = $data[$k]['pdate'] > 0 ? date('Y-m-d H:i', $data[$k]['pdate']) : date('Y-m-d H:i', $data[$k]['cdate']);
             }
         }
 
@@ -92,6 +86,9 @@ class Buy extends Base
                 $data[$k]['desc'] = $v['buy_num'] . '本 ¥' . number_format($v['cash'], 2);
                 $name = explode('-', $v['name']);
                 $data[$k]['name'] = $name[0];
+
+                $info = Dever::db('journal/info')->one($v['product_id']);
+                $data[$k]['pic_gd'] = $info['pic_gd'] . '?imageView2/2/w/375';
             }
         }
 
@@ -116,15 +113,19 @@ class Buy extends Base
         if ($data) {
             foreach ($data as $k => $v) {
                 $code = Dever::load('code/lib/core')->view($v['id'], $v['create_uid']);
-                $data[$k]['code'] = '<i class="ico-code"></i>兑换码:'.$code;
+                $data[$k]['code'] = '<span class="ico-code"></span>兑换码:'.$code;
                 if ($v['type'] == 1) {
                     $data[$k]['txt'] = '未使用';
-                    $data[$k]['class'] = '';
+                    $data[$k]['class'] = 'span';
                     $data[$k]['copy'] = '<a href="javascript:;" class="button" node-id="copy" data-clipboard-text="'.$code.'">复制</a>';
+                } elseif ($v['type'] == 4) {
+                    $data[$k]['txt'] = '已作废';
+                    $data[$k]['class'] = 'span used';
+                    $data[$k]['copy'] = '<div class="button disabled">复制</div>';
                 } else {
                     $data[$k]['txt'] = '已使用';
-                    $data[$k]['class'] = 'used';
-                    $data[$k]['copy'] = '<a href="javascript:;" class="button disabled">复制</a>';
+                    $data[$k]['class'] = 'span used';
+                    $data[$k]['copy'] = '<div class="button disabled">复制</div>';
                 }
             }
         }
@@ -148,7 +149,13 @@ class Buy extends Base
 
         $buy = Dever::db('journal/buy')->one(array('id' => $id));
 
-        $info['buy_desc'] = '';
+        $info['buy_desc'] = '1、购买成功后可直接点击【阅读】查看阅读内容; <br />
+2、电子刊为虚拟商品,如无系统问题,购买后不可退换; <br />
+3、如有其他使用问题可咨询在线客服。';
+
+        if ($info['buy_content']) {
+            $info['buy_desc'] = $info['buy_content'];
+        }
         $info['buy_notice'] = '一次购买多本将生成一个兑换码用于兑换,如需多个兑换码,请多次购买。';
         $info['buy_notices'] = '购买兑换码赠送好友:点击下方购买后,将生成多个兑换码。
 积分规则:使用兑换码兑换后,使用人获得积分,购买人不增加积分。';
@@ -264,6 +271,13 @@ class Buy extends Base
         return $data;
     }
 
+    public function buys_page()
+    {
+        $data = $this->buys();
+
+        Dever::render('pay', $data);
+    }
+
     # 小刊购买 多个兑换码的
     public function buys()
     {
@@ -306,8 +320,6 @@ class Buy extends Base
 
         $buy_id = Dever::input('buy_id');
         $journal_id = Dever::input('journal_id');
-        $account_id = 2;
-        $system_id = 1;
 
         if (!$buy_id) {
             Dever::alert('请传入正确的支付ID');
@@ -323,24 +335,21 @@ class Buy extends Base
             Dever::alert('请传入正确的小刊ID');
         }
 
-        if ($this->cate == 2) {
-            $system_id = 2;
-            $account_id = 7;
+        $star = false;
+        if (Dever::input('star_id')) {
+            $star = $this->getStar();
         }
 
         $user = Dever::db('passport/user')->one($uid);
-        $wechat_where = array('uid' => $uid, 'type' => 2);
-        if ($system_id == 2) {
-            $wechat_where['system_id'] = $system_id;
-        } else {
-            $wechat_where['system_id'] = 1;
-        }
-        $wechat = Dever::db('passport/wechat')->one($wechat_where);
+        $wechat = Dever::db('passport/wechat')->one(array('uid' => $uid, 'type' => 2));
 
         //$order_id = $this->createOrder('JP');
         $order_data['cate_id'] = $this->cate;
         //$order_data['order_id'] = $order_id;
         $order_data['product_id'] = $journal_id;
+        if ($star) {
+            $order_data['star_id'] = $star['id'];
+        }
         $order_data['buy_id'] = $buy_id;
         $order_data['uid'] = $uid;
 
@@ -380,11 +389,12 @@ class Buy extends Base
         # 立刻创建兑换码
         //$param['create'] = 1;
         $refer = $this->url('pay', $param);
+        $refer = $this->url('codedetail', array('order_id' => $id, 'id' => $order_data['product_id']));
         //$refer = 'callback.success';
         $param = array
         (
-            'account_id' => $account_id,
-            'project_id' => 3,
+            'account_id' => 2,
+            'project_id' => 2,
             'uid' => $uid,
             'username' => $user['username'],
             'name' => $order_data['name'],
@@ -396,7 +406,17 @@ class Buy extends Base
             'refer' => $refer
         );
 
-        $result = Dever::load('pay/api.page', $param);
-        return $result;
+        $result = array();
+        //$result = Dever::load('pay/api.page', $param);
+
+        # 直接支付成功
+        $send['pay_order_id'] = $order_id;
+        $send['pay_status'] = 2;
+        $send['pay_msg'] = 'yes';
+        $send['id'] = $id;
+        $send['url'] = $refer;
+        Dever::load('act/lib/pay')->act_action($send);
+
+        return $send;
     }
 }

+ 10 - 0
buy/src/Data.php

@@ -11,6 +11,16 @@ class Data extends Base
     }
 
     public function checkLogin()
+    {
+        //return $this->location('list');
+        if ($this->user) {
+            return $this->location('list');
+        } else {
+            //return $this->location('auth');
+        }
+    }
+
+    public function checkLoginAuth()
     {
         //return $this->location('list');
         if ($this->user) {

+ 21 - 0
buy/template/mobile/auth.php

@@ -0,0 +1,21 @@
+<?php
+
+$view
+
+->set('name', 'auth')
+
+->import('inc/head')
+
+//->fetch('.logo@src',    'buy/base.config#logo')
+
+->fetch('.topcont@check', 'buy/data.checkLoginAuth')
+
+->fetch('.topcont', 'buy/base.config#login_title')
+
+//->fetch('.ellipsis', 'buy/base.config#title')
+
+->fetch('.button@onclick', 'buy/base.config#login')
+
+->import('inc/foot')
+
+->display();

+ 7 - 5
buy/template/mobile/codedetail.php

@@ -6,22 +6,24 @@ $view
 
 ->import('inc/head')
 
+->fetch('body@check', 'buy/data.checkLogin')
+
 ->fetch('#code@src', 'buy/buy.code')
-->fetch('#product_name', 'buy/buy.product_name')
+#->fetch('#product_name', 'buy/buy.product_name')
 
 ->loop
 (
-    '.code-list dl',
+    '.code-list .dl',
     'buy/buy.code_detail',
     array
     (
-        'p' => '$v.code',
-        'span' => array
+        '.p' => '$v.code',
+        '.span' => array
         (
             'class' => '$v.class',
             'html' => '$v.txt',
         ),
-        'dt' => '$v.copy',
+        '.dt' => '$v.copy',
     )
 )
 

+ 34 - 11
buy/template/mobile/home.php

@@ -2,19 +2,42 @@
 
 $view
 
-->set('name', 'auth')
+->set('name', 'index') 
 
 ->import('inc/head')
-
-->fetch('.logo@src',    'buy/base.config#logo')
-
-->fetch('.txt@check', 'buy/data.checkLogin')
-
-->fetch('.txt', 'buy/base.config#login_title')
-
-//->fetch('.ellipsis', 'buy/base.config#title')
-
-->fetch('.button@onclick', 'buy/base.config#login')
+->fetch('body@check', 'buy/data.checkLogin')
+->fetch(array('.tab@href', 0), 'buy/base.config#list_link')
+->fetch(array('.tab@href', 1), 'buy/base.config#my_link')
+
+# 循环
+->loop
+(
+    '.order',
+    'buy/buy.lists',
+    array
+    (
+        '.name' => '$v.name',
+        '.journal-no' => '$v.price',
+        'span' => '$v.pdate',
+
+        'img' => array
+        (
+            'src' => '$v.pic_gd',
+        ),
+
+        '.button' => array
+        (
+            'node-act' => '$v.act',
+            'data-src' => '$v.code',
+            'data-id' => '$v.id',
+            'html' => '$v.button'
+        )
+        
+    )
+)
+
+# 暂无记录
+->append('body', '<div id="page" dever-page-link="<{Dever::pageInfo()["link"]}>" dever-page-list=".pages" dever-page-call="init()"></div>') 
 
 ->import('inc/foot')
 

+ 14 - 24
buy/template/mobile/list.php

@@ -2,47 +2,37 @@
 
 $view
 
-->set('name', 'list') 
+->set('name', 'list')
 
 ->import('inc/head')
+->fetch('body@check', 'buy/data.checkLogin')
+->fetch(array('.tab@href', 0), 'buy/base.config#list_link')
+->fetch(array('.tab@href', 1), 'buy/base.config#my_link')
 
-->fetch('.logo', 'buy/base.config#logotxt')
-
-->fetch('.info-txt', 'buy/base.config#desc')
-
-->fetch(array('.tab .li@href', 0), 'buy/base.config#list_link')
-->fetch(array('.tab .li@href', 1), 'buy/base.config#my_link')
-
-->fetch('#product_name', 'buy/buy.product_name')
-
-# 循环
 ->loop
 (
-    '.item',
-    'buy/buy.lists',
+    '.order',
+    'buy/buy.lists_code',
     array
     (
-        'h2' => '$v.name',
-        '.price' => '$v.price',
-
+        '.order-time span' => '$v.cdate',
         'img' => array
         (
             'src' => '$v.pic_gd',
         ),
-
-        '.button' => array
+        'a|0' => array
         (
-            'node-act' => '$v.act',
-            'data-src' => '$v.code',
-            'html' => '$v.button'
-        )
+            'href' => '$v.link',
+        ),
+        '.name' => '$v.name',
+        '.count' => '$v.desc',
         
     )
 )
 
 # 暂无记录
-->append('body', '<div id="page" dever-page-link="<{Dever::pageInfo()["link"]}>" dever-page-list=".pages" dever-page-call="init()"></div>') 
+->append('body', '<div id="page" dever-page-link="<{Dever::pageInfo()["link"]}>" dever-page-list=".pages"></div>')
 
 ->import('inc/foot')
-
+ 
 ->display();

+ 4 - 42
buy/template/mobile/pay.php

@@ -2,41 +2,11 @@
 
 $view
 
-->set('name', 'pay')
+->fetch('.tit', 'buy/buy.info#buy')
 
-->import('inc/head')
-
-->fetch('.h1', 'buy/buy.info#buy')
-
-->fetch('.richtext', 'buy/buy.info#buy_desc')
-
-//->fetch('#notice', 'buy/buy.info#buy_notice')
-//->fetch('#notices', 'buy/buy.info#buy_notices')
-->fetch('#buyyes', 'buy/buy.info#buy_yes')
-->fetch('#pay-layer@class', 'buy/buy.info#buy_class')
-->fetch('#viewcode@href', 'buy/buy.info#buy_code')
+->fetch('#tips', 'buy/buy.info#buy_desc')
 
 
-# 循环
-/*
-->loop
-(
-    '.code',
-    'buy/buy.buy',
-    array
-    (
-        'p|0' => '$v.name',
-        'p|1' => '$v.price',
-
-        'self' => array
-        (
-            'href' => 'javascript:;',
-            'onclick' => 'pay(\'<{$v.pay_url}>\')',
-        ),
-    )
-)
-*/
-
 # 循环
 ->loop
 (
@@ -44,8 +14,8 @@ $view
     'buy/buy.buys',
     array
     (
-        'p|0' => '$v.name',
-        'p|1' => '$v.price',
+        'span|0' => '$v.name',
+        'span|1' => '$v.price',
 
         'self' => array
         (
@@ -57,12 +27,4 @@ $view
     )
 )
 
-->fetch(array('script@src', 0),     Dever::assets('global.js'))
-
-
-->append('body',    '<script src="'.Dever::assets('lib/jquery/jquery.min.js', 'script').'"></script>')
-->append('body',    '<script src="'.Dever::assets('dever/core.js', 'script').'"></script>')
-->append('body',    '<script src="'.Dever::assets('config.js').'"></script>')
-->append('body',    '<script src="http://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>')
-
 ->display();

+ 38 - 6
doc/apidoc_v1.php

@@ -44,6 +44,8 @@
  * @apiSuccess {String}   journal.pdate 时间
  * @apiSuccess {String}   journal.num_ding 订阅数
  * @apiSuccess {String}   journal.buy 小刊是否收费 1收费 2免费 3会员
+ * @apiSuccess {String}   journal.h5 h5地址
+ * @apiSuccess {String}   journal.buy_type 购买类型,1是普通支付,2是按照明星支付
  * @apiSuccess {String}   journal.bgmusic 小刊背景音乐
  * @apiSuccess {Object[]}   journal.button 按钮判断 如果不需要这个,可以不用
  * @apiSuccess {Object[]}   journal.button.read 第一个按钮 阅读按钮
@@ -149,19 +151,19 @@
  */
 
 /**
- * @api {get} wonderful/main/?l=journal_v1.read 小刊阅读页
- * @apiVersion 2.0.0
+ * @api {get} mars/main/?l=journal.read 电子刊阅读页
+ * @apiVersion 1.0.0
  * @apiName journal.read
- * @apiGroup JournalV1
+ * @apiGroup Journal
  *
- * @apiDescription 刊阅读页
+ * @apiDescription 电子刊阅读页
  *
  * @apiParam {String} signature signature
- * @apiParam {Number} id 刊id
+ * @apiParam {Number} id 电子刊id
  *
  * @apiSuccess {Object[]} content 内容数据列表,每页显示10条,请在翻到第7或者第8条时,请求第2页
  * @apiSuccess {String}   content.id 内容id
- * @apiSuccess {String}   content.type 内容类型1全屏图、2长图、3图文内容、11关联图文、12关联视频、13关联直播、4全屏视频、5留言视频、6留言音频|||新增:7长屏图、8横屏图、9无边框图片、10四宫格图片、21对话模板
+ * @apiSuccess {String}   content.type 内容类型1全屏图、2长图、3图文内容、11关联图文、12关联视频、13关联直播、4全屏视频、5留言视频、6留言音频|||新增:7长屏图、8横屏图、9无边框图片、10四宫格图片、21对话模板、31试用产品、32是h5的url地址(独立h5)
  * @apiSuccess {String}   content.name 标题。type=5,6时有效
  * @apiSuccess {String}   content.cover 音频或者视频的封面图,type=4,5,6时有效
  * @apiSuccess {String}   content.video 视频地址。type=4,5时有效
@@ -186,6 +188,13 @@
  * @apiSuccess {String}   content.info.content_array 数组内容
  * @apiSuccess {Object[]}   content.info.author 作者
 
+  * @apiSuccess {Object[]}   content.product type=31时有效
+ * @apiSuccess {String}   content.product.name 产品标题
+ * @apiSuccess {String}   content.product.pic 产品图片
+ * @apiSuccess {String}   content.product.content 内容
+ * @apiSuccess {String}   content.product.cate 产品分类信息
+ * @apiSuccess {Object[]}   content.product.price 产品价格
+
  * @apiSuccess {Object[]}   content.palaces 四宫格图片的四个图片,type=10时有效
  * @apiSuccess {String}   content.palaces.palaces 图片位置,1上左2上右3下左4下右
  * @apiSuccess {String}   content.palaces.pic 图片
@@ -263,6 +272,7 @@
  * @apiSuccess {String}   info.ytype 预售状态,1为可以阅读2显示预售弹窗,如果用button就不用判断该字段了
  * @apiSuccess {String}   info.num_ding 订阅数
  * @apiSuccess {String}   info.buy 小刊是否收费 1收费 2不收费
+ * @apiSuccess {String}   info.buy_type 电子刊支付类型,1为普通支付,2为明星支付(读取明星列表)
  * @apiSuccess {String}   info.subscribe 是否订阅,1为已订阅2为未订阅
  * @apiSuccess {String}   info.active 是否有活动,1为有2为没有,有则显示排行榜按钮
 
@@ -354,6 +364,27 @@
  * @apiSuccess {String}   buy_list.cash 实际支付价格
  */
 
+/**
+ * @api {get} mars/main/?l=journal_v1.star 电子刊明星列表页
+ * @apiVersion 1.0.0
+ * @apiName journal_v1.star
+ * @apiGroup Journal
+ *
+ * @apiDescription 电子刊明星列表页,当buy_type==2时读取本接口
+ *
+ * @apiParam {String} signature signature
+ * @apiParam {Number} id 电子刊id
+ *
+ * @apiSuccess {Object[]} info 电子刊详情
+ * @apiSuccess {String}   info.id 电子刊id
+ * @apiSuccess {String}   info.name 名称
+ * @apiSuccess {Object[]}   star 明星列表
+ * @apiSuccess {String}   star.id 明星id 支付时使用
+ * @apiSuccess {String}   star.name 明星名称
+ * @apiSuccess {String}   star.avatar 明星头像
+ * @apiSuccess {String}   star.num_ding 明星订阅数
+ */
+
 /**
  * @api {get} wonderful/act/?l=order.pay 发起支付
  * @apiVersion 2.0.0
@@ -365,6 +396,7 @@
  * @apiParam {String} signature signature
  * @apiParam {String} journal_id 小刊id
  * @apiParam {String} buy_id 购买本数id
+ * @apiParam {String} star_id 明星id
  * @apiParam {String} receipt 当header中的source_type为ios时,请传入该参数,参数的值为苹果支付后返回的参数,即可发起支付验证。
 *
  * @apiSuccess {Object[]} pay 微信支付返回的数据

+ 1 - 1
h5/assets/mobile/live.html

@@ -107,7 +107,7 @@
 
   var videos = '';
 <{if($info['status'] == 2):}>
-  videos = '<{$info['stream_rtmp']}>';
+  videos = '<{$info['stream_hls']}>';
 <{elseif($info['status'] == 3):}>
   videos = '<{$info['url']}>';
 <{endif}>

+ 6 - 1
h5/src/View.php

@@ -10,6 +10,7 @@ class View extends Core
     # 根据类型,获取详情的html页面
     public function get()
     {
+        $preview = Dever::input('preview', 2);
         $type = Dever::input('type');
         $id = Dever::input('id');
         $signature = Dever::input('signature');
@@ -44,6 +45,10 @@ class View extends Core
         }
 
         if ($data && $template) {
+
+            if ($data['status'] == 1 && $preview != 1) {
+                Dever::alert('您访问的内容已下架');
+            }
             if (isset($data['info']['content_array'])) {
                 $data['content'] = $data['info']['content_array'];
             } elseif (isset($data['info']['content'])) {
@@ -78,7 +83,7 @@ class View extends Core
 
             return Dever::render($template, $data);
         } else {
-            Dever::alert('错误的数据');
+            Dever::alert('您访问的内容已下架');
         }
     }
 }

+ 4 - 0
journal/database/cate.php

@@ -28,6 +28,10 @@ $type = array
     //11 => '关联图文',
     12 => '关联视频',
     13 => '关联直播',
+
+    # 2019-07-26
+    //31 => '试用产品',
+    32 => 'H5',
 );
 
 $list = array

+ 40 - 1
journal/database/content.php

@@ -7,6 +7,7 @@ if ($id) {
     $cate = Dever::db('journal/cate')->one($journal['cate_id']);
 }
 
+/*
 $type_config = array
 (
     # 默认类型
@@ -34,6 +35,7 @@ $type_config = array
     12 => '关联视频',
     13 => '关联直播',
 );
+*/
 
 $type_default = 3;
 
@@ -54,6 +56,17 @@ if ($cate) {
     $type = $type_config;
 }
 
+$product = function()
+{
+    $array = array();
+    $info = Dever::db('product/info')->state();
+    if($info)
+    {
+        $array += $info;
+    }
+    return $array;
+};
+
 $is_button = array
 (
     1 => '显示',
@@ -174,7 +187,21 @@ return array
             'list'      => true,
             //增加预览
             'preview'   => true,
-            'show'      => 'type=3,5,6',      
+            'show'      => 'type=3,5,6,32',      
+        ),
+
+        'url'      => array
+        (
+            'type'      => 'varchar-800',
+            'name'      => '链接地址',
+            'default'   => '',
+            'desc'      => '链接地址',
+            'match'     => 'is_string',
+            'update'    => 'text',
+            'list'      => true,
+            //增加预览
+            'preview'   => true,
+            'show'      => 'type=32',      
         ),
 
         'video'     => array
@@ -368,6 +395,18 @@ return array
             'show'      => 'type=1,7,8',      
         ),
 
+        'product_id'     => array
+        (
+            'type'      => 'varchar-800',
+            'name'      => '关联商品',
+            'default'   => '',
+            'desc'      => '关联商品',
+            'match'     => 'option',
+            'update'    => 'checkbox',
+            'show'      => 'type=31',
+            //'option'    => $product,
+        ),
+
         'article_id'     => array
         (
             'type'      => 'int-11',

+ 79 - 3
journal/database/info.php

@@ -39,6 +39,12 @@ $share = array
 	2 => '不显示',
 );
 
+$publish = array
+(
+	1 => '小程序',
+	2 => 'APP',
+);
+
 $top = array
 (
 	1 => '显示',
@@ -52,6 +58,12 @@ $buy = array
 	//3 => '会员',
 );
 
+$buy_type = array
+(
+	1 => '普通支付',
+	2 => '按明星支付',
+);
+
 $hot = array
 (
 	1 => '热门',
@@ -62,7 +74,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,top,hot';
+$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,hot,h5,publish,buy_type';
 
 $config = array
 (
@@ -139,6 +151,18 @@ $config = array
 			//'list'		=> true,
 		),
 
+		'h5'		=> array
+		(
+			'type' 		=> 'varchar-800',
+			'name' 		=> 'h5地址-填写后,直接跳转到该页面',
+			'default' 	=> '',
+			'desc' 		=> 'h5地址',
+			'match' 	=> 'option',
+			'update'	=> 'textarea',
+			//'search'	=> 'fulltext',
+			//'list'		=> true,
+		),
+
   		'pic_cover'		=> array
 		(
 			'type' 		=> 'varchar-150',
@@ -206,21 +230,23 @@ $config = array
 		'num_ratio_ding'		=> array
 		(
 			'type' 		=> 'varchar-20',
-			'name' 		=> '订阅系数-系数不能小于等于0,支持两位小数,电子刊总订阅量=(用户当前订阅数+订阅基数)*订阅系数',
+			'name' 		=> '订阅系数-系数不能小于等于0,支持两位小数,电子刊总订阅量=(用户当前订阅数+订阅基数)*订阅系数。注意:如果设置了明星,这里设置将失效',
 			'default' 	=> '1',
 			'desc' 		=> '手动增加订阅系数',
 			'match' 	=> 'is_string',
 			'update'	=> 'text',
+			'show'		=> 'buy=1&buy_type=1',
 		),
 
 		'num_add_ding'		=> array
 		(
 			'type' 		=> 'int-11',
-			'name' 		=> '订阅基数',
+			'name' 		=> '订阅基数-注意:如果设置了明星,这里设置将失效',
 			'default' 	=> '0',
 			'desc' 		=> '手动增加阅读数',
 			'match' 	=> 'option',
 			'update'	=> 'text',
+			'show'		=> 'buy=1&buy_type=1',
 		),
 
 		'num_ding'		=> array
@@ -371,6 +397,17 @@ $config = array
 			//'auth'		=> '"{ydate}" > 0',
 		),
 
+		'publish'		=> array
+		(
+			'type' 		=> 'varchar-10',
+			'name' 		=> '发布位置',
+			'default' 	=> '1,2',
+			'desc' 		=> '发布位置',
+			'match' 	=> 'option',
+			'update'	=> 'checkbox',
+			'option'	=> $publish,
+		),
+
 		'share'		=> array
 		(
 			'type' 		=> 'text-255',
@@ -410,6 +447,18 @@ $config = array
 			'search'	=> 'select',
 		),
 
+		'buy_type'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '支付类型',
+			'default' 	=> '1',
+			'desc' 		=> '支付类型',
+			'match' 	=> 'option',
+			'update'	=> 'radio',
+			'option'	=> $buy_type,
+			'show'	=> 'buy=1',
+		),
+
 		'hot'		=> array
 		(
 			'type' 		=> 'tinyint-1',
@@ -435,6 +484,17 @@ $config = array
             'show'		=> 'buy=1',
         ),
 
+        'buy_content'       => array
+        (
+            'type'      => 'text-255',
+            'name'      => '购买说明',
+            'default'   => '',
+            'desc'      => '请输入内容',
+            'match'     => 'is_string',
+            'update'    => 'editor',
+            'key'       => 1,
+            'show'		=> 'buy=1',
+        ),
 
         'score'         => array
         (
@@ -565,6 +625,7 @@ $config = array
 		# 列表
 		'list_button' => array
 		(
+			/*
 			'edit' => array('预览', str_replace('https://api.', 'http://www.', Dever::url('main/preview.get?type=4'))),
 			'edit1' => array('活动预览', str_replace('https://api.', 'http://www.', Dever::url('main/preview.get?type=13')), '{audit} == 1 && {buy} == 1'),
 			'br2' => array('<br />'),
@@ -578,6 +639,21 @@ $config = array
 			'add1' => array('活动设置', '"active&project=journal&search_option_info_id={id}&oper_parent=info&oper_project=journal&oper_save_jump=info&where_id={id}"', '{audit} == 1 && {buy} == 1'),
 			'br3' => array('<br />'),
 			'list1' => array('购买本数管理', '"buy_num&search_option_info_id={id}&oper_parent=info"' , '{audit} == 1 && {buy} == 1'),
+			'list2' => array('购买明星设置', '"star&search_option_info_id={id}&oper_parent=info"' , '{audit} == 1 && {buy} == 1 && {buy_type} == 2'),
+			*/
+
+			'update' => '编辑电子刊',
+			'br1' => array('<br />'),
+			'edit' => array('电子刊预览', str_replace('https://api.', 'http://www.', Dever::url('main/preview.get?type=4'))),
+			'edit1' => array('活动预览', str_replace('https://api.', 'http://www.', Dever::url('main/preview.get?type=13')), '{audit} == 1 && {buy} == 1'),
+			'br2' => array('<br />'),
+			'list10' => array('排行榜', '"journal_num&project=act&search_type=4&search_option_journal_id={id}&oper_parent=info&oper_project=journal"' , '{audit} == 1 && {buy} == 1'),
+			'list' => array('内页管理', '"content&search_option_info_id={id}&oper_parent=info&page_type=1"' , '{audit} == 1'),
+			//'add' => array('购买设置', '"buy&project=journal&search_option_info_id={id}&oper_parent=info&oper_project=journal&oper_save_jump=info&where_id={id}"', '{audit} == 1 && {buy} == 1'),
+			'add1' => array('活动设置', '"active&project=journal&search_option_info_id={id}&oper_parent=info&oper_project=journal&oper_save_jump=info&where_id={id}"', '{audit} == 1 && {buy} == 1'),
+
+			'list1' => array('购买本数管理', '"buy_num&search_option_info_id={id}&oper_parent=info"' , '{audit} == 1 && {buy} == 1'),
+			'list2' => array('购买明星设置', '"star&search_option_info_id={id}&oper_parent=info"' , '{audit} == 1 && {buy} == 1 && {buy_type} == 2'),
 		),
 	),
 

+ 151 - 0
journal/database/star.php

@@ -0,0 +1,151 @@
+<?php
+
+# 定义几个常用的选项
+$status = array
+(
+    1 => '在线',
+    2 => '下线',
+);
+
+return array
+(
+    # 表名
+    'name' => 'star',
+    # 显示给用户看的名称
+    'lang' => '购买明星设置',
+    'order' => 100,
+    'menu' => false,
+    'end' => array
+    (
+        'insert' => 'journal/lib/manage.setStarCache',
+        'update' => 'journal/lib/manage.setStarCache',
+    ),
+    # 数据结构
+    'struct' => array
+    (
+    
+        'id'        => array
+        (
+            'type'      => 'int-11',
+            'name'      => 'ID',
+            'default'   => '',
+            'desc'      => '',
+            'match'     => 'is_numeric',
+            'search'    => 'order',
+            //'list'        => true,
+        ),
+
+        'info_id'        => array
+        (
+            'type'      => 'int-11',
+            'name'      => '电子刊',
+            'default'   => '',
+            'desc'      => '电子刊',
+            'match'     => 'is_numeric',
+            'update'    => 'hidden',
+            'value'     => Dever::input('search_option_info_id')
+        ),
+
+        'name'      => array
+        (
+            'type'      => 'varchar-80',
+            'name'      => '明星姓名',
+            'default'   => '',
+            'desc'      => '明星姓名',
+            'match'     => 'option',
+            'update'    => 'text',
+            //'search'    => 'fulltext',
+            'list'      => true,
+        ),
+
+        'avatar'		=> array
+		(
+			'type' 		=> 'varchar-150',
+			'name' 		=> '明星头像-图片尺寸150*150px或等比尺寸,上传大小不能超过2M,支持JPG、PNG、GIF格式,建议上传JPG格式',
+			'default' 	=> '',
+			'desc' 		=> '明星头像',
+			'match' 	=> 'is_string',
+			'update'	=> 'image',
+			'key' 		=> '1',
+			'place'		=> '150',
+		),
+
+		'num_ratio_ding'		=> array
+		(
+			'type' 		=> 'varchar-20',
+			'name' 		=> '订阅系数-系数不能小于等于0,支持两位小数,当前明星总订阅量=(用户当前订阅数+订阅基数)*订阅系数',
+			'default' 	=> '1',
+			'desc' 		=> '手动增加订阅系数',
+			'match' 	=> 'is_string',
+			'update'	=> 'text',
+		),
+
+		'num_add_ding'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '订阅基数',
+			'default' 	=> '0',
+			'desc' 		=> '手动增加阅读数',
+			'match' 	=> 'option',
+			'update'	=> 'text',
+		),
+
+		'num_ding'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '订阅数',
+			'default' 	=> '0',
+			'desc' 		=> '请填写订阅数',
+			'match' 	=> 'option',
+			'search'	=> 'order',
+			'list'		=> 'Dever::load("journal/lib/manage.starDing?id={id}")',
+		),
+
+        'reorder'       => array
+        (
+            'type'      => 'int-11',
+            'name'      => '排序(数值越大越靠前)',
+            'default'   => '1',
+            'desc'      => '请输入排序',
+            'match'     => 'option',
+            'update'    => 'text',
+            'search'    => 'order',
+            'list_name' => '排序',
+            'list'      => true,
+            'order'     => 'desc',
+            'edit'      => true,
+        ),
+
+        'state'     => array
+        (
+            'type'      => 'tinyint-1',
+            'name'      => '状态',
+            'default'   => '1',
+            'desc'      => '请选择状态',
+            'match'     => 'is_numeric',
+        ),
+        
+        'cdate'     => array
+        (
+            'type'      => 'int-11',
+            'name'      => '添加时间',
+            'match'     => array('is_numeric', time()),
+            'desc'      => '',
+            # 只有insert时才生效
+            'insert'    => true,
+            //'search'    => 'date',
+            'list'      => 'date("Y-m-d H:i:s", {cdate})',
+        ),
+    ),
+
+    'manage' => array
+    (
+        
+    ),
+
+
+    'request' => array
+    (
+       
+    ),
+);

+ 22 - 0
journal/lib/Manage.php

@@ -511,6 +511,28 @@ class Manage
         Dever::load('act/order')->setCache($id, 3);
     }
 
+    public function setStarCache($id, $name, $param)
+    {
+        Dever::load('act/order')->setCache($id, 4);
+    }
+
+    # 获取明星订阅本数
+    public function starDing($id)
+    {
+        $data = Dever::db('journal/star')->one($id);
+        $data = Dever::load('journal/api')->starDing($data);
+
+        $num_ding = $data['num_ding'];
+        $num_add_ding = $data['num_add_ding'];
+        $num_ratio_ding = $data['num_ratio_ding'];
+
+        $buy_num = $data['buy_num'];
+
+        $html = '订阅本数:('.$buy_num.'+'.$num_add_ding.')*'.$num_ratio_ding.'='.$num_ding;
+        
+        return $html;
+    }
+
     /**
      * 导入用户
      *

+ 88 - 8
journal/src/Api.php

@@ -6,17 +6,58 @@ use Dever;
 
 class Api
 {
-	public function data()
-	{
-		return Dever::db('journal/info')->state();
-	}
+    public function data()
+    {
+        return Dever::db('journal/info')->state();
+    }
+
+    public function ding($data)
+    {
+        if (isset($data['num_add_ding']) && isset($data['num_ratio_ding'])) {
+
+            if ($data['buy'] == 1 && $data['buy_type'] == 2) {
+                # 获取明星的订阅数
+                $star = Dever::db('journal/star')->state(array('info_id' => $data['id']));
+                $data['num_ding'] = 0;
+                if ($star) {
+                    foreach ($star as $k => $v) {
+                        $v = $this->starDing($v);
+                        $data['num_ding'] += $v['num_ding'];
+                    }
+                }
+                $data['num_up'] = $data['num_add_ding'] = 0;
+                $data['num_ratio_ding'] = 1;
+
+            } elseif ($data['buy'] == 1 && $data['buy_type'] == 1) {
+                if (!$data['num_ding']) {
+                    $stat = Dever::db('stat/journal')->getNumByJournal(array('journal_id' => $data['id']));
+                    if (!$stat) {
+                        $stat['buy_num'] = 0;
+                    }
+
+                    if (!$stat['buy_num']) {
+                        $stat['buy_num'] = 0;
+                    }
+                    $data['num_ding'] = $stat['buy_num'];
+                }
+
+                $data['num_up'] = 0;
+            }
+
+            $data['num_ding'] = $data['num_ding'] + $data['num_up'];
+            $data['buy_num'] = $data['num_ding'];
+            $data['num_ding'] = round(($data['num_ding']+$data['num_add_ding'])*$data['num_ratio_ding']);
+        }
 
-	public function ding($data)
+        return $data;
+    }
+
+    public function starDing($data)
     {
         if (isset($data['num_add_ding']) && isset($data['num_ratio_ding'])) {
 
-            if ($data['buy'] == 1 && !$data['num_ding']) {
-                $stat = Dever::db('stat/journal')->getNumByJournal(array('journal_id' => $data['id']));
+            if (!$data['num_ding']) {
+                $stat = Dever::db('act/order')->getNumByStar(array('star_id' => $data['id'], 'product_id' => $data['info_id']));
                 if (!$stat) {
                     $stat['buy_num'] = 0;
                 }
@@ -27,11 +68,50 @@ class Api
                 $data['num_ding'] = $stat['buy_num'];
             }
             
-            $data['num_ding'] = $data['num_ding'] + $data['num_up'];
             $data['buy_num'] = $data['num_ding'];
             $data['num_ding'] = round(($data['num_ding']+$data['num_add_ding'])*$data['num_ratio_ding']);
         }
 
         return $data;
     }
+
+    # 解析元信息
+    public function avinfo($data, $url = 'video', $table = 'video/vod')
+    {
+        # 解析视频元信息
+        if (!$data['video_info']) {
+            $video_info = Dever::curl($data[$url] . '?avinfo');
+            if ($video_info) {
+                Dever::db($table)->update(array('where_id' => $data['id'], 'video_info' => $video_info));
+            }
+            
+            $video_info = Dever::json_decode($video_info);
+        } else {
+            $video_info = Dever::json_decode($data['video_info']);
+        }
+
+        unset($data['video_info']);
+
+        $data['video_width'] = 0;
+        $data['video_height'] = 0;
+        # 默认横屏
+        $data['video_type'] = 1;
+        if (isset($video_info['streams']) && $video_info['streams']) {
+            foreach ($video_info['streams'] as $k => $v) {
+                if (isset($v['width']) && isset($v['height'])) {
+                    $data['video_width'] = $v['width'];
+                    $data['video_height'] = $v['height'];
+                    if ($data['video_width'] >= $data['video_height']) {
+                        $data['video_type'] = 1;
+                    } else {
+                        $data['video_type'] = 2;
+                    }
+                    
+                    break;
+                }
+            }
+        }
+
+        return $data;
+    }
 }

+ 1 - 1
main/src/Content.php

@@ -68,7 +68,7 @@ class Content extends Core
     public function home()
     {
         //MWY2M2MtZThRSG1iR2NHTjV6SjlHUDZvSHNlVURQVkRiT1dtREQxVVA4SThSOEc5bFhnUW43UExo
-        //echo Dever::login(96046);die;
+        echo Dever::login(14);die;
         //1 NDY3MmVlOGVsdUxxa2pzNHczckR2TEl1NGFmVmVTd2ItWWhDcDB1T04wdXBDaUpDMl9rRmU4VHM=
         //2 ZTdjNjBHUTY4QUpoZk16QVlZRlg0d3locDFRcll5a3FQcWhFdEo1M1QzaFhmNGhrUlAyTTdGVWc= 
         //9 ZTBiZWN5dW9ublpnSzR2dmlXUUc5MWJJQWk5d3pFQmx0TEp6a0VJVkU4NG5HVTYtcjhFNTdfdnc=

+ 20 - 2
main/src/Journal_v1.php

@@ -527,11 +527,10 @@ class Journal_v1 extends Core
             Dever::alert('错误的用户信息');
         }
         $id = $this->check();
-
+        $this->data['buy_desc'] = $this->data['info']['buy_content'];
         # 获取购买说明
         $buy = Dever::db('journal/buy')->one(array('id' => $id));
 
-        $this->data['buy_desc'] = '';
         if ($buy) {
             $this->data['buy_desc'] = $buy['buy_content'];
         }
@@ -569,6 +568,25 @@ class Journal_v1 extends Core
         return $this->data;
     }
 
+    # 明星列表页
+    public function star()
+    {
+        if (!$this->data['uid']) {
+            Dever::alert('错误的用户信息');
+        }
+        $id = $this->check();
+
+        $this->data['star'] = Dever::db('journal/star')->state(array('info_id' => $id));
+
+        if ($this->data['star']) {
+            foreach ($this->data['star'] as $k => $v) {
+                $this->data['star'][$k] = Dever::load('journal/api')->starDing($v);
+            }
+        }
+
+        return $this->data;
+    }
+
     # 修改为本数排行榜
     public function top()
     {

+ 2 - 1
main/src/Preview.php

@@ -62,7 +62,8 @@ class Preview
 
         if ($type == 1 || $type == 2 || $type == 3 || $type == 6) {
             $link = Dever::url('view.get?type=' . $type . '&id=' . $id, 'h5');
-            $table['h5页面'] = '<a class="clipboard" href="javascript:;" data-clipboard-text="'.$link.'">复制链接</a>';
+            $table['预览地址'] = '<a class="clipboard" href="javascript:;" data-clipboard-text="'.$link.'&preview=1">复制链接</a>';
+            $table['实际访问地址'] = '<a class="clipboard" href="javascript:;" data-clipboard-text="'.$link.'">复制链接</a>';
         }
         
 

部分文件因为文件数量过多而无法显示