rabin 9 bulan lalu
induk
melakukan
7af0bb56de
62 mengubah file dengan 1541 tambahan dan 1036 penghapusan
  1. 4 3
      src/place/api/Agent.php
  2. 61 0
      src/place/api/Cart.php
  3. 17 20
      src/place/api/Collect.php
  4. 17 22
      src/place/api/Data.php
  5. 28 0
      src/place/api/Down.php
  6. 0 79
      src/place/api/Member.php
  7. 82 0
      src/place/api/Resource.php
  8. 14 35
      src/place/api/Review.php
  9. 3 2
      src/place/api/Test.php
  10. 2 1
      src/place/api/Tool.php
  11. 4 8
      src/place/api/Url.php
  12. 84 0
      src/place/api/User.php
  13. 4 4
      src/place/api/Vip.php
  14. 88 0
      src/place/boot.php
  15. 1 0
      src/place/index.php
  16. 116 0
      src/place/lib/Act.php
  17. 3 79
      src/place/lib/Agent.php
  18. 60 0
      src/place/lib/Cate.php
  19. 0 78
      src/place/lib/Core.php
  20. 1 54
      src/place/lib/Info.php
  21. 42 0
      src/place/lib/Main.php
  22. 106 0
      src/place/lib/Manage.php
  23. 27 12
      src/place/lib/Order.php
  24. 123 0
      src/place/lib/Price.php
  25. 95 0
      src/place/lib/Resource.php
  26. 0 71
      src/place/lib/Util.php
  27. 67 49
      src/place/lib/Vip.php
  28. 4 4
      src/place/manage/agent_price.php
  29. 1 1
      src/place/manage/info.php
  30. 2 2
      src/place/manage/place.php
  31. 1 1
      src/place/manage/resource.php
  32. 3 3
      src/place/manage/vip_price.php
  33. 1 1
      src/place/table/agent.php
  34. 6 1
      src/place/table/member.php
  35. 18 0
      src/place/table/order_detail.php
  36. 27 0
      src/place/table/order_log.php
  37. 1 1
      src/place/table/vip.php
  38. 1 1
      src/place/table/vip_price.php
  39. 0 30
      src/resource/content/api/Data.php
  40. 0 20
      src/resource/content/api/Manage.php
  41. 0 35
      src/resource/content/api/Member.php
  42. 0 41
      src/resource/content/api/Value.php
  43. 1 0
      src/resource/content/index.php
  44. 0 92
      src/resource/content/lib/Cate.php
  45. 35 88
      src/resource/content/lib/Info.php
  46. 0 77
      src/resource/content/lib/Value.php
  47. 1 1
      src/resource/content/manage/agent_price.php
  48. 4 4
      src/resource/content/manage/info.php
  49. 2 2
      src/resource/content/manage/vip_price.php
  50. 2 2
      src/resource/content/table/agent_price.php
  51. 1 1
      src/resource/content/table/vip_price.php
  52. 1 0
      src/resource/func/index.php
  53. 0 30
      src/resource/goods/api/Data.php
  54. 1 0
      src/resource/goods/index.php
  55. 135 0
      src/resource/goods/lib/Cart.php
  56. 25 77
      src/resource/goods/lib/Info.php
  57. 36 0
      src/resource/goods/manage/agent_price.php
  58. 18 4
      src/resource/goods/manage/info.php
  59. 31 0
      src/resource/goods/manage/vip_price.php
  60. 45 0
      src/resource/goods/table/agent_price.php
  61. 50 0
      src/resource/goods/table/cart.php
  62. 39 0
      src/resource/goods/table/vip_price.php

+ 4 - 3
src/place/api/Agent.php

@@ -1,14 +1,15 @@
 <?php namespace Place\Api;
 use Dever;
-use Place\Lib\Core;
-class Agent extends Core
+use Place;
+use Place\Lib\Main;
+class Agent extends Main
 {
     protected $login = true;
+    protected $entry = true;
     # 代理列表
     public function agent()
     {
         $data['agent'] = Dever::load('agent', 'place')->getList(false);
-        $data['member'] = $this->member;
         return $data;
     }
 

+ 61 - 0
src/place/api/Cart.php

@@ -0,0 +1,61 @@
+<?php namespace Place\Api;
+use Dever;
+use Place;
+use Place\Lib\Main;
+class Cart extends Main
+{
+    protected $login = true;
+    protected $entry = true;
+
+    # 获取购物车
+    public function list()
+    {
+        $data['list'] = Dever::load('cart', 'goods')->getList();
+        return Place::result($data);
+    }
+
+    # 购物车增减
+    public function up()
+    {
+        $id = Dever::input('type_id', 'is_numeric', '资源ID');
+        $sku_id = Dever::input('price_id', 'is_numeric', '价格ID');
+        $num = Dever::input('num', 'is_numeric', '数量', 1);
+        return Dever::load('cart', 'goods')->up($id, $sku_id, $num);
+    }
+
+    # 购物车选中状态
+    public function edit()
+    {
+        $id = Dever::input('type_id', 'is_numeric', '资源ID');
+        $sku_id = Dever::input('price_id', 'is_numeric', '价格ID');
+        $status = Dever::input('status', 'is_numeric', '选中状态', 1);
+        return Dever::load('cart', 'goods')->edit($id, $sku_id, $status);
+    }
+
+    # 删除购物车某个商品
+    public function delete()
+    {
+        $id = Dever::input('type_id', 'is_numeric', '资源ID');
+        $sku_id = Dever::input('price_id', 'is_numeric', '价格ID');
+        return Dever::load('cart', 'goods')->delete($id, $sku_id);
+    }
+
+    # 清空购物车
+    public function drop()
+    {
+        return Dever::load('cart', 'goods')->drop();
+    }
+
+    # 购物车下单
+    public function confirm()
+    {
+        return Dever::load('cart', 'goods')->confirm();
+    }
+
+    # 拉起支付
+    public function pay()
+    {
+        $info = $this->confirm();
+        return Dever::load('order', 'place')->pay($info, 3, 'goods');
+    }
+}

+ 17 - 20
src/place/api/Collect.php

@@ -1,34 +1,31 @@
 <?php namespace Place\Api;
 use Dever;
-use Place\Lib\Core;
-class Collect extends Core
+use Place;
+use Place\Lib\Main;
+use Place\Lib\Act;
+class Collect extends Main
 {
     protected $login = true;
     protected $entry = true;
 
-    # 收藏操作
+    public function __construct()
+    {
+        parent::__construct();
+        $this->act = new Act('collect');
+    }
+
     public function up()
     {
-        $data['type'] = Dever::input('type', 'is_numeric', '类型');
-        $data['type_id'] = Dever::input('type_id', 'is_numeric', '类型ID');
-        $data['uid'] = $this->member['id'];
-        $info = Dever::db('collect', 'place')->find($data);
-        if (!$info) {
-            Dever::db('collect', 'place')->insert($data);
-        }
-        return 'ok';
+        return $this->act->up();
     }
 
-    # 取消收藏
     public function cancel()
     {
-        $data['type'] = Dever::input('type', 'is_numeric', '类型');
-        $data['type_id'] = Dever::input('type_id', 'is_numeric', '类型ID');
-        $data['uid'] = $this->member['id'];
-        $info = Dever::db('collect', 'place')->find($data);
-        if ($info) {
-            Dever::db('collect', 'place')->delete($info['id']);
-        }
-        return 'ok';
+        return $this->act->del();
+    }
+
+    public function getUserList()
+    {
+        return $this->act->getUserList();
     }
 }

+ 17 - 22
src/place/api/Data.php

@@ -1,46 +1,41 @@
 <?php namespace Place\Api;
 use Dever;
-use Place\Lib\Core;
-use Dever\Helper\Str;
-use Dever\Helper\Secure;
-class Data extends Core
+use Place;
+use Place\Lib\Main;
+class Data extends Main
 {
     # 首页
     public function home()
     {
-        $data['place'] = $this->place;
-        $data['resource'] = $this->resource;
-        $data['member'] = $this->member;
-
-        if ($this->place['type'] == 1) {
+        if (Place::$info['type'] == 1) {
             # 公开
-            $data['entry'] = $data['resource'][0];
-        } elseif ($this->place['type'] == 2 && $this->member) {
+            $data['entry'] = Place::$resource[0];
+        } elseif (Place::$info['type'] == 2 && Place::$user) {
             # 注册
-            $data['entry'] = $data['resource'][0];
-        } elseif ($this->place['type'] > 2 && $this->member && $this->member['entry_type'] > 2) {
-            $data['entry'] = $data['resource'][0];
+            $data['entry'] = Place::$resource[0];
+        } elseif (Place::$info['type'] > 2 && Place::$user && Place::$user['entry_type'] > 2) {
+            $data['entry'] = Place::$resource[0];
         } else {
             # 需要注册、购买、输入密码等等
-            if ($this->place['type'] == 2) {
+            if (Place::$info['type'] == 2) {
                 $data['button'] = array
                 (
                     'name' => '注册',
                     'type' => 2,
                 );
-            } elseif ($this->place['type'] == 3) {
+            } elseif (Place::$info['type'] == 3) {
                 $data['button'] = array
                 (
                     'name' => '邀请码',
                     'type' => 3,
                 );
-            } elseif ($this->place['type'] == 4) {
+            } elseif (Place::$info['type'] == 4) {
                 $data['button'] = array
                 (
                     'name' => '密码',
                     'type' => 4,
                 );
-            } elseif ($this->place['type'] == 5) {
+            } elseif (Place::$info['type'] == 5) {
                 $data['button'] = array
                 (
                     'name' => '购买',
@@ -51,7 +46,7 @@ class Data extends Core
 
         # 最新内容
         //$data['content'] = Dever::load('info', 'content')->getList(false);
-        return $data;
+        return Place::result($data);
     }
 
     # 验证码登录或者注册
@@ -62,7 +57,7 @@ class Data extends Core
         $env = Dever::input('env', 'is_numeric', '环境信息', 3);
         $mobile = Dever::input('mobile', 'is_numeric', '手机号');
         $pwd = Dever::input('pwd');
-        if ($pwd) {
+        if (!$pwd) {
             $code = Dever::input('code', 'is_numeric', '验证码');
             Dever::load('template', 'msg')->check('reg_code', $mobile, $code);
         }
@@ -79,12 +74,12 @@ class Data extends Core
                 Dever::error('登录失败,账户无效');
             }
             $data = $where;
-            $data['name'] = Str::hide($mobile);
+            $data['name'] = \Dever\Helper\Str::hide($mobile);
             $data['vip_id'] = -1;
             $data['agent_id'] = -1;
             $id = Dever::db('member', 'place')->insert($data);
         }
-        $result['t'] = Secure::login($id);
+        $result['t'] = \Dever\Helper\Secure::login($id);
         # 获取openid
         $result = Dever::load('util', 'api')->openid($account, $env, $id, $result);
         if (isset($result['openid'])) {

+ 28 - 0
src/place/api/Down.php

@@ -0,0 +1,28 @@
+<?php namespace Place\Api;
+use Dever;
+use Place;
+use Place\Lib\Main;
+class Down extends Main
+{
+    protected $login = true;
+    protected $entry = true;
+    
+    # 下载某个附件
+    public function act()
+    {
+        $g = \Dever\Helper\Secure::decode(Dever::input('g'));
+        if (!$g) {
+            Dever::error('无权限');
+        }
+        $info = Dever::load('value', 'content')->getInfo(Place::$user, $g);
+        if (isset($info['value']) && $info['value']) {
+            # 记录下载次数
+            $data['uid'] = Place::$uid;
+            $data['info_id'] = $info['id'];
+            $data['value_id'] = $info['value']['id'];
+            Dever::db('down', 'content')->insert($data);
+            header('location:' . $info['value']['file']);
+        }
+        Dever::error('无权限');
+    }
+}

+ 0 - 79
src/place/api/Member.php

@@ -1,79 +0,0 @@
-<?php namespace Place\Api;
-use Dever;
-use Place\Lib\Core;
-class Member extends Core
-{
-    protected $login = true;
-    protected $entry = true;
-
-    # 我的信息
-    public function info()
-    {
-        $data['place'] = $this->place;
-        $data['resource'] = $this->resource;
-        $data['member'] = $this->member;
-        if ($data['member']['vip_id'] > 0) {
-            $data['vip'] = Dever::db('vip', 'place')->find($data['member']['vip_id']);
-        }
-        if ($data['member']['agent_id'] > 0) {
-            $data['agent'] = Dever::db('agent', 'place')->find($data['member']['agent_id']);
-        }
-        $data['member']['cash_name'] = $data['member']['cash'] . $data['member']['score'];
-        
-        return $data;
-    }
-
-    # 更新我的信息
-    public function update()
-    {
-        $update = array();
-        $name = Dever::input('name');
-        if ($name) {
-            $this->member['name'] = $update['name'] = $name;
-        }
-        $avatar = Dever::input('avatar');
-        if ($avatar) {
-            $this->member['avatar'] = $update['avatar'] = $avatar;
-        }
-        if ($update) {
-            Dever::db('member', 'place')->update($this->member['id'], $update);
-        }
-        return $this->member;
-    }
-
-    # 修改密码
-    public function pwd()
-    {
-        # 大于8位字符,至少包含:小写字母、大写字母、数字、特殊字符
-        $pwd = Dever::input('pwd', '/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[\W_]).{8,}$/', '密码');
-        $code = Dever::input('code', 'is_string', '验证码');
-        Dever::load('template', 'msg')->check('user_code', $this->member['mobile'], $code);
-        $update = Dever::load('manage/common')->createPwd($pwd);
-        Dever::db('member', 'place')->update($this->member['id'], $update);
-    }
-
-    # 发送短信验证码
-    public function sms()
-    {
-        $data = Dever::load('template', 'msg')->send('user_code', array('mobile' => $this->member['mobile']));
-        return $data;
-    }
-
-    # 我的收藏
-    public function collect()
-    {
-        return Dever::load('util', 'place')->getUserData($this->member['id'], 'collect');
-    }
-
-    # 我的评论
-    public function review()
-    {
-        return Dever::load('util', 'place')->getUserData($this->member['id'], 'review', array('content'));
-    }
-
-    # 我的订单
-    public function order()
-    {
-        return Dever::load('util', 'place')->getUserData($this->member['id'], 'order', array('name','cash','num','order_num','status'));
-    }
-}

+ 82 - 0
src/place/api/Resource.php

@@ -0,0 +1,82 @@
+<?php namespace Place\Api;
+use Dever;
+use Place;
+use Place\Lib\Main;
+use Place\Lib\Cate;
+use Place\Lib\Resource as Core;
+class Resource extends Main
+{
+    protected $entry = true;
+    protected $type;
+
+    public function __construct()
+    {
+        parent::__construct();
+        $type = Dever::input('type', 'is_numeric', '资源类型');
+        $this->service = new Core($type);
+    }
+
+    # 首页、列表页
+    public function home()
+    {
+        $cate = new Cate($this->service->app);
+        $data = $cate->getData();
+        $data['list'] = $this->service->getList($data['cate_id']);
+        return Place::result($data);
+    }
+
+    # 详情
+    public function view()
+    {
+        $id = Dever::input('type_id', 'is_numeric', '资源ID');
+        $data['info'] = $this->service->getInfo($id);
+        # 分类下其他内容
+        $data['cate'] = $this->service->getList($data['info']['cate'], $data['info']['id'], 6);
+        # 最新内容
+        $data['new'] = $this->service->getList(false, $data['info']['id'], 6);
+        return Place::result($data);
+    }
+
+    # 点击购买按钮
+    public function submit()
+    {
+        $id = Dever::input('type_id', 'is_numeric', '资源ID');
+        $info = $this->service->getInfo($id);
+        $data['info'] = Dever::load('info', $this->service->app)->submit($info);
+        return $data;
+    }
+
+    # 拉起支付
+    public function pay()
+    {
+        $id = Dever::input('type_id', 'is_numeric', '资源ID');
+        $info = $this->service->getInfo($id);
+        $info = Dever::load('info', $this->service->app)->submit($info);
+        if ($info['status'] == 2) {
+            return Dever::load('order', 'place')->pay($info, $this->service->type, $this->service->app);
+        } else {
+            Dever::error('无权限');
+        }
+    }
+
+    # 资源评论列表
+    public function getReviewList()
+    {
+        $data['type'] = Dever::input('type', 'is_numeric', '类型');
+        $data['type_id'] = Dever::input('type_id', 'is_numeric', '类型ID');
+        # 每页10条
+        $set['num'] = 10;
+        $data = Dever::db('review', 'place')->select($where, $set);
+        if ($data) {
+            foreach ($data as &$v) {
+                $v['cdate_str'] = date('Y-m-d H:i:s', $v['cdate']);
+                $v['oper'] = 2;
+                if (Place::$uid == $v['uid']) {
+                    $v['oper'] = 1;
+                }
+                $v['user'] = Dever::db('member', 'place')->find($v['uid'], array('col' => 'mobile,name,avatar'));
+            }
+        }
+        return $data;
+    }
+}

+ 14 - 35
src/place/api/Review.php

@@ -1,54 +1,33 @@
 <?php namespace Place\Api;
 use Dever;
-use Place\Lib\Core;
-class Review extends Core
+use Place;
+use Place\Lib\Main;
+use Place\Lib\Act;
+class Review extends Main
 {
     protected $login = true;
     protected $entry = true;
 
-    # 评论
+    public function __construct()
+    {
+        parent::__construct();
+        $this->act = new Act('review');
+    }
+
     public function up()
     {
         $data['content'] = Dever::input('content', 'is_string', '内容');
-        $data['type'] = Dever::input('type', 'is_numeric', '类型');
-        $data['type_id'] = Dever::input('type_id', 'is_numeric', '类型ID');
-        $data['uid'] = $this->member['id'];
-        $info = Dever::db('review', 'place')->find($data);
-        if ($info) {
-            Dever::error('请不要发布相同内容');
-        } else {
-            Dever::db('review', 'place')->insert($data);
-        }
-        return 'ok';
+        return $this->act->up($data, '请不要发布相同内容');
     }
 
-    # 删除评论
     public function cancel()
     {
         $data['id'] = Dever::input('review_id', 'is_numeric', '评论');
-        $data['uid'] = $this->member['id'];
-        $info = Dever::db('review', 'place')->delete($data);
-        return 'ok';
+        return $this->act->del($data);
     }
 
-    # 评论列表
-    public function getList()
+    public function getUserList()
     {
-        $data['type'] = Dever::input('type', 'is_numeric', '类型');
-        $data['type_id'] = Dever::input('type_id', 'is_numeric', '类型ID');
-        # 每页10条
-        $set['num'] = 10;
-        $data = Dever::db('review', 'place')->select($where, $set);
-        if ($data) {
-            foreach ($data as &$v) {
-                $v['cdate_str'] = date('Y-m-d H:i:s', $v['cdate']);
-                $v['oper'] = 2;
-                if ($this->member['id'] == $v['uid']) {
-                    $v['oper'] = 1;
-                }
-                $v['user'] = Dever::db('member', 'place')->find($v['uid'], array('col' => 'mobile,name,avatar'));
-            }
-        }
-        return $data;
+        return $this->act->getUserList();
     }
 }

+ 3 - 2
src/place/api/Test.php

@@ -1,7 +1,8 @@
 <?php namespace Place\Api;
 use Dever;
-use Place\Lib\Core;
-class Test extends Core
+use Place;
+use Place\Lib\Main;
+class Test extends Main
 {
     protected $login = true;
     protected $entry = true;

+ 2 - 1
src/place/api/Tool.php

@@ -1,5 +1,6 @@
 <?php namespace Place\Api;
 use Dever;
+use Place;
 class Tool
 {
     # 根据身份码获取入口
@@ -13,6 +14,6 @@ class Tool
         if (!$code) {
             Dever::error('身份码错误');
         }
-        return array('p' => Dever::load('util', 'place')->entry($code['sector_id'], $code['module_id'], $code['user_id'], $code['place_id']));
+        return array('p' => Place::entry($code['sector_id'], $code['module_id'], $code['user_id'], $code['place_id']));
     }
 }

+ 4 - 8
src/place/api/Url.php

@@ -1,21 +1,17 @@
 <?php namespace Place\Api;
 use Dever;
-use Place\Lib\Core;
+use Place;
+use Place\Lib\Main;
 use Dever\Helper\Secure;
-class Url extends Core
+class Url extends Main
 {
-    public function __construct()
-    {
-
-    }
-
     public function place()
     {
         $id = Dever::input('id');
         $info = Dever::db('info', 'place')->find($id);
         if ($info) {
             $extend = Dever::load('common', 'manage')->extend();
-            $param['p'] = Dever::load('util', 'place')->entry($extend['info_id'], $extend['module_id'], $extend['data_id'], $id);
+            $param['p'] = Place::entry($extend['info_id'], $extend['module_id'], $extend['data_id'], $id);
             $link = Dever::url('place/data.home', $param);
             header('HTTP/1.1 301 Moved Permanently');
             header('Location: ' . $link);

+ 84 - 0
src/place/api/User.php

@@ -0,0 +1,84 @@
+<?php namespace Place\Api;
+use Dever;
+use Place;
+use Place\Lib\Main;
+class User extends Main
+{
+    protected $login = true;
+    protected $entry = true;
+
+    # 我的信息
+    public function info()
+    {
+        if (Place::$user['vip_id'] > 0) {
+            $data['vip'] = Dever::db('vip', 'place')->find(Place::$user['vip_id']);
+        }
+        if (Place::$user['agent_id'] > 0) {
+            $data['agent'] = Dever::db('agent', 'place')->find(Place::$user['agent_id']);
+        }
+        return Place::result($data);
+    }
+
+    # 更新我的信息
+    public function update()
+    {
+        $update = array();
+        $name = Dever::input('name');
+        if ($name) {
+            Place::$user['name'] = $update['name'] = $name;
+        }
+        $avatar = Dever::input('avatar');
+        if ($avatar) {
+            Place::$user['avatar'] = $update['avatar'] = $avatar;
+        }
+        if ($update) {
+            Dever::db('member', 'place')->update(Place::$uid, $update);
+        }
+        return Place::$user;
+    }
+
+    # 修改密码
+    public function pwd()
+    {
+        # 大于8位字符,至少包含:小写字母、大写字母、数字、特殊字符
+        $pwd = Dever::input('pwd', '/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[\W_]).{8,}$/', '密码');
+        $code = Dever::input('code', 'is_string', '验证码');
+        Dever::load('template', 'msg')->check('user_code', Place::$user['mobile'], $code);
+        $update = Dever::load('manage/common')->createPwd($pwd);
+        Dever::db('member', 'place')->update(Place::$uid, $update);
+    }
+
+    # 发送短信验证码
+    public function sms()
+    {
+        $data = Dever::load('template', 'msg')->send('user_code', array('mobile' => Place::$user['mobile']));
+        return $data;
+    }
+
+    # 我的下载
+    public function down()
+    {
+        $where['uid'] = Place::$uid;
+        # 每页10条
+        $set['num'] = 10;
+        $data = Dever::db('down', 'content')->select($where, $set);
+        $result = array();
+        if ($data) {
+            foreach ($data as $k => $v) {
+                $info = Dever::db('info', 'content')->find($v['info_id']);
+                if ($info['status'] == 1) {
+                    $value = Dever::db('value', 'content')->find($v['info_value_id']);
+                    if ($value) {
+                        $info['down_id'] = $v['id'];
+                        $info['cdate'] = $v['cdate'];
+                        $info['cdate_str'] = date('Y-m-d H:i:s', $info['cdate']);
+                        $info['value_name'] = $value['name'];
+                        # 这里是否要再次下载?先不用吧
+                        $result[] = $info;
+                    }
+                }
+            }
+        }
+        return $result;
+    }
+}

+ 4 - 4
src/place/api/Vip.php

@@ -1,15 +1,15 @@
 <?php namespace Place\Api;
 use Dever;
-use Place\Lib\Core;
-class Vip extends Core
+use Place;
+use Place\Lib\Main;
+class Vip extends Main
 {
     protected $login = true;
+    protected $entry = true;
     # 会员列表
     public function list()
     {
         $data['vip'] = Dever::load('vip', 'place')->getList(false);
-        $data['member'] = $this->member;
-        $data['place'] = $this->place;
         return $data;
     }
 

+ 88 - 0
src/place/boot.php

@@ -0,0 +1,88 @@
+<?php
+# place 身份入口
+class Place
+{
+    public static $info;
+    public static $user;
+    public static $resource;
+    public static $uid;
+    public static $code;
+
+    public static function entry($sector_id, $module_id, $user_id, $place_id)
+    {
+        $Main = \Dever\Helper\Secure::encode($sector_id . '-' . $module_id . '-' . $user_id . '-' . $place_id);
+        return $Main;
+    }
+
+    # 初始化
+    public static function init()
+    {
+        self::$code = Dever::input('p');
+        $code = Dever\Helper\Secure::decode(self::$code);
+        if (!$code) {
+            Dever::error('身份码错误');
+        }
+        list($sector_id, $module_id, $user_id, $place_id) = explode('-', $code);
+        $system = Dever::db('system', 'manage')->find(array('key' => 'sector'));
+        $sector = Dever::db($system['info_table'])->find($sector_id);
+        if (!$sector) {
+            Dever::error('领域信息错误');
+        }
+        # 切换数据库
+        Dever::load('common', 'manage')->setAuth($system['partition'], $system['id'], $sector_id, $module_id, $user_id);
+
+        # 初始化身份
+        self::info($place_id);
+
+        # 切换数据库
+        $module = Dever::db('system_module', 'manage')->find(array('key' => 'sector_place'));
+        Dever::load('common', 'manage')->setAuth($system['partition'], $system['id'], $sector_id, $module['id'], $place_id);
+
+        # 初始化资源
+        self::resource();
+
+    }
+
+    # 身份信息
+    public static function info($place_id)
+    {
+        self::$info = Dever::db('info', 'place')->find($place_id, array('col' => 'name,logo,content,score as score_name,score_per,bg,type,vip_name,agent_name,money_id'));
+        if (!self::$info) {
+            Dever::error('信息有误');
+        }
+        if (!self::$info['vip_name']) {
+            self::$info['vip_name'] = '会员';
+        }
+        if (!self::$info['agent_name']) {
+            self::$info['agent_name'] = '代理';
+        }
+        self::$info['content'] = htmlspecialchars_decode(self::$info['content']);
+        $money = Dever::db('money', 'sector')->find(self::$info['money_id']);
+        self::$info['money_name'] = $money['sign'];
+    }
+
+    # 资源信息
+    public static function resource()
+    {
+        self::$resource = Dever::db('resource', 'place')->select(['status' => 1], array('col' => 'name,icon,type'));
+    }
+
+    # 用户信息
+    public static function user($uid)
+    {
+        self::$user = Dever::db('member', 'place')->find($uid, array('col' => 'id,name,avatar,cash,score_cash,vip_id,agent_id'));
+        if (self::$user) {
+            self::$uid = $uid;
+            self::$user['score_cash_name'] = self::$user['score_cash'] . self::$info['score_name'];
+            self::$user['money_cash_name'] = self::$info['money_name'] . self::$user['cash'];
+        }
+    }
+
+    public static function result($data)
+    {
+        $data['place'] = self::$info;
+        $data['resource'] = self::$resource;
+        $data['user'] = self::$user;
+        return $data;
+    }
+}

+ 1 - 0
src/place/index.php

@@ -2,4 +2,5 @@
 define('DEVER_APP_NAME', 'place');
 define('DEVER_APP_LANG', '身份');
 define('DEVER_APP_PATH', dirname(__FILE__) . DIRECTORY_SEPARATOR);
+include(DEVER_APP_PATH . 'boot.php');
 include(DEVER_APP_PATH . '../../boot.php');

+ 116 - 0
src/place/lib/Act.php

@@ -0,0 +1,116 @@
+<?php namespace Place\Lib;
+use Dever;
+use Place;
+class Act
+{
+    private $db;
+    private $type;
+    public function __construct($name)
+    {
+        $this->type = Dever::input('type');
+        $this->type_id = Dever::input('type_id');
+        $this->db = Dever::db($name, 'place');
+    }
+
+    protected function check()
+    {
+        if (!$this->type || !$this->type_id) {
+            Dever::error('传入参数错误');
+        }
+    }
+
+    # 更新互动信息
+    public function up($data = array(), $msg = '')
+    {
+        if ($this->getInfo($data)) {
+            $msg && Dever::error($msg);
+        } else {
+            $this->db->insert($this->data);
+        }
+        return 'ok';
+    }
+
+    # 删除
+    public function del($data = array())
+    {
+        if ($info = $this->getInfo($data)) {
+            $this->db->delete($info['id']);
+        }
+        return 'ok';
+    }
+
+    # 获取用户互动相关的信息
+    public function getInfo($data = array())
+    {
+        $this->check();
+        $this->data = $data;
+        $this->data['type'] = $this->type;
+        $this->data['type_id'] = $this->type_id;
+        $this->data['uid'] = Place::$uid;
+        return $this->db->find($this->data);
+    }
+
+    # 评论列表
+    public function getList()
+    {
+        $data['type'] = Dever::input('type', 'is_numeric', '类型');
+        $data['type_id'] = Dever::input('type_id', 'is_numeric', '类型ID');
+        # 每页10条
+        $set['num'] = 10;
+        $data = Dever::db('review', 'place')->select($where, $set);
+        if ($data) {
+            foreach ($data as &$v) {
+                $v['cdate_str'] = date('Y-m-d H:i:s', $v['cdate']);
+                $v['oper'] = 2;
+                if (Place::$uid == $v['uid']) {
+                    $v['oper'] = 1;
+                }
+                $v['user'] = Dever::db('member', 'place')->find($v['uid'], array('col' => 'mobile,name,avatar'));
+            }
+        }
+        return $data;
+    }
+
+    # 获取用户的互动列表
+    public function getUserList($field = array(), $page = 10)
+    {
+        $where['uid'] = Place::$uid;
+        if ($this->type) {
+            $where['type'] = $this->type;
+        }
+        # 每页10条
+        $set['num'] = $page;
+        $data = $this->db->select($where, $set);
+        $result = array();
+        if ($data) {
+            foreach ($data as $k => $v) {
+                $info = $this->getTypeInfo($v['type'], $v['type_id']);
+                if ($info) {
+                    $info['data_id'] = $v['id'];
+                    $info['cdate'] = $v['cdate'];
+                    $info['cdate_str'] = date('Y-m-d H:i:s', $info['cdate']);
+                    if ($field) {
+                        foreach ($field as $v1) {
+                            $info[$v1] = $v[$v1];
+                        }
+                    }
+                    if ($v['type'] == 3) {
+                        $info['detail'] = Dever::load('order', 'place')->getDetail($v['id']);
+                    }
+                    $result[] = $info;
+                }
+            }
+        }
+        return $result;
+    }
+
+    private function getTypeInfo($type, $type_id)
+    {
+        $app = Dever::config('setting')['type'][$type];
+        if ($type > 0) {
+            $db = Dever::db('info', $app);
+            $info = $db->find($type_id);
+            return $info;
+        }
+    }
+}

+ 3 - 79
src/place/lib/Agent.php

@@ -1,83 +1,7 @@
 <?php namespace Place\Lib;
 use Dever;
-class Agent
+class Agent extends Vip
 {
-    # 获取列表
-    public function getList($state = true)
-    {
-        $data = array();
-        if ($state) {
-            $data = array
-            (
-                0 => array
-                (
-                    'id' => -1,
-                    'name' => '无代理',
-                ),
-            );
-        }
-        $where['status'] = 1;
-        $data = array_merge($data, Dever::db('agent', 'place')->select($where));
-        return $data;
-    }
-
-    # 获取代理购买资源的价格
-    public function getPrice($price, $agent_id, $info_id, $key = 'price', $app = 'content', $type = 1)
-    {
-        if ($agent_id > 0) {
-            $result = '';
-            $info = Dever::db('agent_price', $app)->select(array('info_id' => $info_id));
-            if ($info) {
-                foreach ($info as &$v) {
-                    if ($v['agent_id'] == $agent_id) {
-                        $result = $v[$key];
-                        break;
-                    } elseif (!$v['agent_id']) {
-                        $result = $v[$key];
-                    }
-                }
-                if ($key == 'per') {
-                    if ($result > 0) {
-                        return number_format($price * $result, 2);
-                    }
-                } elseif ($result || $result === '0') {
-                    return number_format($result, 2);
-                }
-            }
-            $info = Dever::db('agent_price', 'place')->find(array('agent_id' => $agent_id, 'type' => $type));
-            if ($info && $info['per']) {
-                $result = number_format($price * $info['per'], 2);
-                return $result;
-            }
-        }
-        return null;
-    }
-
-    # 获取佣金
-    public function getFee($price, $agent_id, $info_id, $app = 'content', $type = 1)
-    {
-        if ($agent_id > 0) {
-            $result = '';
-            $info = Dever::db('agent_price', $app)->select(array('info_id' => $info_id));
-            if ($info) {
-                foreach ($info as &$v) {
-                    if ($v['agent_id'] == $agent_id) {
-                        $result = $v['fee'];
-                        break;
-                    } elseif (!$v['agent_id']) {
-                        $result = $v['fee'];
-                    }
-                }
-                if ($result > 0) {
-                    return number_format($price * $result/100, 2);
-                }
-            }
-            $info = Dever::db('agent_price', 'place')->find(array('agent_id' => $agent_id, 'type' => $type));
-            if ($info && $info['fee'] > 0) {
-                $result = number_format($price * $info['fee']/100, 2);
-                return $result;
-            }
-        }
-        return null;
-    }
+    protected $type = 'agent';
+    protected $name = '代理';
 }

+ 60 - 0
src/place/lib/Cate.php

@@ -0,0 +1,60 @@
+<?php namespace Place\Lib;
+use Dever;
+class Cate
+{
+    public function __construct($app = 'content')
+    {
+        $this->db = Dever::db('cate', $app);
+    }
+
+    # 获取所有分类信息
+    public function getData()
+    {
+        $data['cate_parent'] = $this->getList();
+        $data['cate_child'] = array();
+        $data['cate_id'] = Dever::input('cate_id');
+        if ($data['cate_id']) {
+            $cate = $this->getInfo($data['cate_id']);
+            $data['cate'] = $cate;
+            if ($cate) {
+                $cate['name'] = '全部';
+                if ($cate['parent_id'] <= 0) {
+                    $parent_id = $cate['id'];
+                } else {
+                    $parent_id = $cate['parent_id'];
+                }
+                if ($data['cate_parent']) {
+                    foreach ($data['cate_parent'] as &$v) {
+                        $v['selected'] = 2;
+                        if ($v['id'] == $parent_id) {
+                            $v['selected'] = 1;
+                        }
+                    }
+                }
+                $data['cate_child'][] = array('id' => $parent_id, 'name' => '全部');
+                $data['cate_child'] = array_merge($data['cate_child'], $this->getList($parent_id));
+                if ($data['cate_child']) {
+                    foreach ($data['cate_child'] as &$v) {
+                        $v['selected'] = 2;
+                        if ($v['id'] == $cate['id']) {
+                            $v['selected'] = 1;
+                        }
+                    }
+                }
+            }
+        }
+        return $data;
+    }
+
+    # 获取分类列表
+    public function getList($parent_id = 0)
+    {
+        return $this->db->select(array('parent_id' => $parent_id, 'status' => 1), array('col' => 'id,name,cdate,parent_id,`desc`'));
+    }
+
+    # 获取分类信息
+    public function getInfo($id)
+    {
+        return $this->db->find($id);
+    }
+}

+ 0 - 78
src/place/lib/Core.php

@@ -1,78 +0,0 @@
-<?php namespace Place\Lib;
-use Dever;
-use Dever\Helper\Secure;
-use Dever\Route;
-class Core
-{
-    protected $login = false;
-    protected $entry = false;
-    public function __construct()
-    {
-        $p = Secure::decode(Dever::input('p'));
-        if (!$p) {
-            Dever::error('信息有误');
-        }
-        list($sector_id, $module_id, $user_id, $place_id) = explode('-', $p);
-
-        $system = Dever::db('system', 'manage')->find(array('key' => 'sector'));
-        $sector = Dever::db($system['info_table'])->find($sector_id);
-        if (!$sector) {
-            Dever::error('信息有误');
-        }
-        # 切换数据库
-        Dever::load('common', 'manage')->setAuth($system['partition'], $system['id'], $sector_id, $module_id, $user_id);
-        
-        $this->place = Dever::db('info', 'place')->find($place_id, array('col' => 'id,name,uid,cdate,logo,content,score,score_per,bg,type,vip_name,agent_name'));
-        if (!$this->place) {
-            Dever::error('信息有误');
-        }
-        if (!$this->place['vip_name']) {
-            $this->place['vip_name'] = '会员';
-        }
-        if (!$this->place['agent_name']) {
-            $this->place['agent_name'] = '代理';
-        }
-        $this->place['content'] = htmlspecialchars_decode($this->place['content']);
-
-        # 切换数据库
-        $module = Dever::db('system_module', 'manage')->find(array('key' => 'sector_place'));
-        Dever::load('common', 'manage')->setAuth($system['partition'], $system['id'], $sector_id, $module['id'], $place_id);
-
-        $this->resource = Dever::db('resource', 'place')->select(['status' => 1], array('col' => 'id,name,icon,type'));
-
-        $this->member = array();
-        $t = Dever::input('t');
-        if ($this->login && !$t) {
-            $this->showLogin();
-        }
-        if ($t) {
-            if ($t = Secure::checkLogin($t)) {
-                if ($t['uid'] && $t['uid'] > 0) {
-                    $this->member = Dever::db('member', 'place')->find($t['uid'], array('col' => 'id,name,avatar,cash,vip_id,agent_id'));
-                }
-                if ($this->login && !$this->member) {
-                    $this->showLogin();
-                }
-            }
-        }
-        if ($this->entry) {
-            if ($this->place['type'] >= 2 && !$this->member) {
-                Dever::error('您没有权限');
-            }
-            /*
-            if ($this->member && $this->member['entry_type'] <= 2) {
-                Dever::error('您没有权限');
-            }*/
-        }
-        if (!$this->member) {
-            $this->member['id'] = -1;
-        }
-        $this->member['score'] = $this->place['score'];
-        $this->member['score_per'] = $this->place['score_per'];
-    }
-
-    protected function showLogin()
-    {
-        Dever::error('请先登录', 300);
-    }
-}

+ 1 - 54
src/place/lib/Info.php

@@ -18,60 +18,7 @@ class Info
         $data = array_merge($data, Dever::db('info', 'place')->select($where));
         return $data;
     }
-
-    public function getTree()
-    {
-        $extend = Dever::load('common', 'manage')->extend();
-        $data = Dever::db('info', 'place')->select(array('id' => $extend['data_id']));
-        $result = array();
-        $result[] = array
-        (
-            'id' => 'root',
-            'name' => '身份',
-            'children' => $data,
-        );
-        return $result;
-    }
-
-    public function checkCode($db, $data)
-    {
-        if (isset($data['code']) && $data['code']) {
-            $code = Dever::db('code', 'place')->find(['code' => $data['code']]);
-            if ($code) {
-                if (isset($data['id']) && $data['id'] == $code['id']) {
-                    return $data;
-                }
-                Dever::error('身份码已存在');
-            }
-        }
-        return $data;
-    }
-
-    public function updateCode($db, $data)
-    {
-        if (isset($data['code']) && $data['code']) {
-            $code = Dever::db('code', 'place')->find(['code' => $data['code']]);
-            if (!$code) {
-                $extend = Dever::load('common', 'manage')->extend();
-                $module = Dever::db('system_module', 'manage')->find($extend['module_id']);
-                if ($module['key'] == 'sector_place') {
-                    $module = Dever::db('system_module', 'manage')->find(array('key' => 'sector_user'));
-                }
-                $update['code'] = $data['code'];
-                $update['sector_id'] = $extend['info_id'];
-                $update['module_id'] = $module['id'];
-                $update['user_id'] = $extend['data_id'];
-                $update['place_id'] = $data['id'];
-                Dever::db('code', 'place')->insert($update);
-            }
-        }
-    }
-
-    # 获取资源类型
-    public function resourceType($type)
-    {
-        return Dever::db('resource', 'place')->value('type', $type);
-    }
+    
 
     # 设置一些资源操作的分区,-1是身份-2是会员-3是代理-4-5-6保留,1是内容2是功能3是商品4是角色5是数据6是聊天789保留
     public function funcType()

+ 42 - 0
src/place/lib/Main.php

@@ -0,0 +1,42 @@
+<?php namespace Place\Lib;
+use Dever;
+use Place;
+use Dever\Helper\Secure;
+use Dever\Route;
+class Main
+{
+    protected $login = false;
+    protected $entry = false;
+    public function __construct()
+    {
+        Place::init();
+        $t = Dever::input('t');
+        if ($this->login && !$t) {
+            $this->showLogin();
+        }
+        if ($t) {
+            if ($t = Secure::checkLogin($t)) {
+                if ($t['uid'] && $t['uid'] > 0) {
+                    Place::user($t['uid']);
+                }
+                if ($this->login && !Place::$uid) {
+                    $this->showLogin();
+                }
+            }
+        }
+        if ($this->entry) {
+            if (Place::$info['type'] >= 2 && !Place::$uid) {
+                Dever::error('您没有权限');
+            }
+            /*
+            if (Place::$member && Place::$user['Main_type'] <= 2) {
+                Dever::error('您没有权限');
+            }*/
+        }
+    }
+
+    protected function showLogin()
+    {
+        Dever::error('请先登录', 300);
+    }
+}

+ 106 - 0
src/place/lib/Manage.php

@@ -0,0 +1,106 @@
+<?php namespace Place\Lib;
+use Dever;
+use Manage\Lib\Auth;
+class Manage extends Auth
+{
+    # 获取身份的树形列表
+    public function getPlaceTree()
+    {
+        $extend = Dever::load('common', 'manage')->extend();
+        $data = Dever::db('info', 'place')->select(array('id' => $extend['data_id']));
+        $result = array();
+        $result[] = array
+        (
+            'id' => 'root',
+            'name' => '身份',
+            'children' => $data,
+        );
+        return $result;
+    }
+
+    # 检测身份码
+    public function checkPlaceCode($db, $data)
+    {
+        if (isset($data['code']) && $data['code']) {
+            $code = Dever::db('code', 'place')->find(['code' => $data['code']]);
+            if ($code) {
+                if (isset($data['id']) && $data['id'] == $code['id']) {
+                    return $data;
+                }
+                Dever::error('身份码已存在');
+            }
+        }
+        return $data;
+    }
+
+    # 更新身份码
+    public function updatePlaceCode($db, $data)
+    {
+        if (isset($data['code']) && $data['code']) {
+            $code = Dever::db('code', 'place')->find(['code' => $data['code']]);
+            if (!$code) {
+                $extend = Dever::load('common', 'manage')->extend();
+                $module = Dever::db('system_module', 'manage')->find($extend['module_id']);
+                if ($module['key'] == 'sector_place') {
+                    $module = Dever::db('system_module', 'manage')->find(array('key' => 'sector_user'));
+                }
+                $update['code'] = $data['code'];
+                $update['sector_id'] = $extend['info_id'];
+                $update['module_id'] = $module['id'];
+                $update['user_id'] = $extend['data_id'];
+                $update['place_id'] = $data['id'];
+                Dever::db('code', 'place')->insert($update);
+            }
+        }
+    }
+
+    # 获取资源类型
+    public function getResourceType($type)
+    {
+        return Dever::db('resource', 'place')->value('type', $type);
+    }
+
+    # 更新分类信息
+    public function updateCate($db, $data)
+    {
+        if ($data['cate']) {
+            $data['cate'] = explode(',', $data['cate']);
+            $update['cate_parent_id'] = $data['cate'][0];
+            if (isset($data['cate'][1])) {
+                $update['cate_child_id'] = $data['cate'][1];
+            } else {
+                $update['cate_child_id'] = 0;
+            }
+            $db->update($data['id'], $update);
+        }
+    }
+
+    # 获取带有子分类的分类列表
+    public function getCateList($type = 'content')
+    {
+        $where = array('parent_id' => 0, 'status' => 1);
+        $parent = Dever::db('cate', $type)->select($where);
+        $result = array();
+        foreach ($parent as $k => $v) {
+            $where['parent_id'] = $v['id'];
+            $v['children'] = Dever::db('cate', $type)->select($where);
+            $result[] = $v;
+        }
+        return $result;
+    }
+
+    public function getCateInfo($type = 'content', $cate = '')
+    {
+        $result = '';
+        if ($cate) {
+            $cate = explode(',', $cate);
+            $info = Dever::db('cate', $type)->find($cate[0]);
+            $result = $info['name'];
+            if (isset($cate[1])) {
+                $info = Dever::db('cate', $type)->find($cate[1]);
+                $result .= '<br />' . $info['name'];
+            }
+        }
+        return $result;
+    }
+}

+ 27 - 12
src/place/lib/Order.php

@@ -1,35 +1,43 @@
 <?php namespace Place\Lib;
 use Dever;
+use Place;
 class Order
 {
     # 下单
-    public function pay($member, $info, $type = 1, $prefix = 'C')
+    public function pay($info, $type = 1, $app)
     {
+        $prefix = strtoupper(substr($app, 0, 2));
         $account = Dever::input('account', 'is_string', '账户', 'wechat');
         $env = Dever::input('env', 'is_numeric', '运行环境', 3);
-        $result = Dever::load('util', 'api')->openid($account, $env, $member['id']);
+        $result = Dever::load('util', 'api')->openid($account, $env, Place::$uid);
         if (isset($result['openid'])) {
-            $member['openid'] = $result['openid'];
+            Place::$user['openid'] = $result['openid'];
         } elseif (isset($result['link'])) {
             return $result;
         }
 
+        if ($type == 3) {
+            $price = $info['value'];
+        } else {
+            $price = ($info['value']/Place::$info['score_per']);
+        }
+        
         # 支付账户
         $account = 'pay_' . $account;
         # 下单
         $order = array
         (
-            'uid' => $member['id'],
-            'openid' => $member['openid'] ?? '',
+            'uid' => Place::$uid,
+            'openid' => Place::$user['openid'] ?? '',
             'order_num' => Dever::load('util', 'api')->createNumber($prefix, 'place/order', array('type' => $type)),
-            'cash' => ($info['price']/$member['score_per'])*100,#每个人的积分换算公式可能不一样
+            'cash' => $price*100,
             'name' => $info['name'],
             'time_expire' => time() + 3600,
         );
         # 设置支付成功的回调信息,多个参数用|隔开
         $param['notify'] = 'place/order.success|' . Dever::input('p') . '|' . $order['order_num'] . '|' . $type;
-        $data = Dever::load('account', 'api')->run($account, 'order', $order, $env);
-        if ($data) {
+        $data['pay'] = Dever::load('account', 'api')->run($account, 'order', $order, $env);
+        if ($data['pay']) {
             $order['status'] = 1;
             $order['type'] = $type;
             $order['type_id'] = $info['id'];
@@ -39,10 +47,17 @@ class Order
                 $detail['type'] = $type;
                 foreach ($info['detail'] as $k => $v) {
                     $detail['type_id'] = $v['id'];
+                    if (isset($v['sku_id'])) {
+                        $detail['sku_id'] = $v['sku_id'];
+                    }
+                    if (isset($v['sku_name'])) {
+                        $detail['sku_name'] = $v['sku_name'];
+                    }
                     $detail['order_id'] = $data['order_id'];
                     $detail['cash'] = $v['cash'];
                     $detail['num'] = $v['num'];
-                    $detail['status'] = 1;
+                    $detail['name'] = $v['name'];
+                    $detail['pic'] = $v['pic'];
                     Dever::db('order_detail', 'place')->insert($detail);
                 }
             }
@@ -79,14 +94,14 @@ class Order
     }
 
     # 获取某个资源的订单
-    public function getInfoByType($type, $type_id, $uid, $status = 5)
+    public function getInfoByType($type_id, $type, $status = 5)
     {
-        $order = Dever::db('order', 'place')->find(array('type' => $type, 'type_id' => $type_id, 'uid' => $uid, 'status' => $status));
+        $order = Dever::db('order', 'place')->find(array('type' => $type, 'type_id' => $type_id, 'uid' => Place::$uid, 'status' => $status));
         return $order;
     }
 
     # 获取某个订单的详情
-    public function getDetail($type, $id)
+    public function getDetail($id, $type)
     {
         $detail = Dever::db('order_detail', 'place')->select(array('type' => $type, 'order_id' => $id));
         $result = array();

+ 123 - 0
src/place/lib/Price.php

@@ -0,0 +1,123 @@
+<?php namespace Place\Lib;
+use Dever;
+use Place;
+class Price
+{
+    public function get($info, $app, $type, $button)
+    {
+        $result = array();
+        $result['status'] = 1;
+        $result['text'] = '';
+        $result['original'] = $info['price'];
+        $result['value'] = $info['price'];
+        $result['button'] = $button;
+        $result['list'] = array();
+        $order = Dever::load('order', 'place')->getInfoByType($info['id'], $type);
+        if ($order) {
+            $result['value'] = $order['cash'];
+        } else {
+            $vip = Dever::load('vip', 'place')->getPrice($info['price'], $info['id'], $app, $type);
+            $agent = Dever::load('agent', 'place')->getPrice($info['price'], $info['id'], $app, $type);
+            if ($this->getAlone($vip, $agent, $result)) {
+                return $result;
+            }
+            if ($info['price'] > 0) {
+                $this->getList($vip, $agent, $result);
+                $info['price'] = $this->getDiscount($info['price'], $vip['list'], $agent['list']);
+                if ($info['price'] > 0) {
+                    if (isset($info['password'])) {
+                        $result['password'] = 2;
+                        if ($info['password']) {
+                            $result['password'] = 1;
+                        }
+                    }
+                    $result['status'] = 2;
+                    $result['value'] = $info['price'];
+                }
+            }
+        }
+        $result['text'] = $this->getText($result['value'], $type);
+        return $result;
+    }
+
+    # 获取价格列表
+    public function getList($vip, $agent, &$result)
+    {
+        if ($vip['list']) {
+            $result['list'][] = array('name' => $vip['name'], 'list' => array_values($vip['list']));
+        }
+        if ($agent['list']) {
+            $result['list'][] = array('name' => $agent['name'], 'list' => array_values($agent['list']));
+        }
+    }
+
+    # 获取专享
+    public function getAlone($vip, $agent, &$result)
+    {
+        $state = false;
+        if ($vip['alone']) {
+            if (isset($vip['alone'][Place::$user['vip_id']])) {
+                $state = false;
+            } else {
+                $state = true;
+                $result['list'][] = array('name' => $vip['name'], 'list' => array_values($vip['alone']));
+            }
+        }
+        if ($agent['alone']) {
+            if (isset($agent['alone'][Place::$user['agent_id']])) {
+                $state = false;
+            } else {
+                $state = true;
+                $result['list'][] = array('name' => $agent['name'], 'list' => array_values($agent['alone']));
+            }
+        }
+        if ($state) {
+            $result['status'] = 3;
+            $result['text'] = '专享';
+        }
+        return $state;
+    }
+
+    # 获取折扣价
+    public function getDiscount($price, $vip, $agent)
+    {
+        $result = array();
+        # 获取会员价
+        if (isset($vip[Place::$user['vip_id']])) {
+            $price = $vip[Place::$user['vip_id']][1];
+        }
+        # 获取代理价
+        if (isset($agent[Place::$user['agent_id']])) {
+            $agent_price = $agent[Place::$user['agent_id']][1];
+            if ($agent_price < $price) {
+                $price = $agent_price;
+            }
+        }
+        # 获取折扣+代金券的价格,暂时没有
+        return $price;
+    }
+
+    public function getText($price, $type = 1)
+    {
+        if ($price > 0) {
+            if ($type == 3) {
+                $price = Place::$info['money_name'] . $price;
+            } else {
+                $price = $price . Place::$info['score_name'];
+            }
+        } else {
+            $price = '免费';
+        }
+        return $price;
+    }
+
+    public function getValue($value, $price, $type)
+    {
+        if ($type == 3) {
+            return number_format($price * ($value/100), 2);
+        } elseif ($value || $value === '0') {
+            return number_format($value, 2);
+        }
+        return $price;
+    }
+}

+ 95 - 0
src/place/lib/Resource.php

@@ -0,0 +1,95 @@
+<?php namespace Place\Lib;
+use Dever;
+use Place;
+class Resource
+{
+    public $app;
+    public $type;
+    protected $db;
+    protected $where;
+    protected $set;
+    public function __construct($type)
+    {
+        $this->type = $type;
+        if (!$this->type) {
+            Dever::error('资源参数错误');
+        }
+        if (isset(Dever::config('setting')['type'][$this->type])) {
+            $this->app = Dever::config('setting')['type'][$this->type];
+            $this->db = Dever::db('info', $this->app);
+        } else {
+            Dever::error('资源参数错误');
+        }
+        $this->where = array('status' => 1);
+        $this->set['col'] = Dever::load('info', $this->app)->getCol();
+    }
+
+    # 获取列表
+    public function getList($cate = false, $id = false, $num = 10)
+    {
+        if ($cate) {
+            $cate = explode(',', $cate);
+            $this->where['cate_parent_id'] = $cate[0];
+            if (isset($cate[1])) {
+                $this->where['cate_child_id'] = $cate[0];
+            }
+        }
+        $name = Dever::input('search');
+        if ($name) {
+            $this->where['name'] = array('like', $name);
+        }
+        if ($id) {
+            $this->set['limit'] = '0,6';
+            $this->where['id'] = array('!=', $id);
+        } else {
+            $this->set['num'] = $num;
+        }
+        $info = $this->db->select($this->where, $this->set);
+        $result = array();
+        foreach ($info as $k => $v) {
+            $v = $this->handleInfo($v);
+            $result[] = $v;
+        }
+        return $result;
+    }
+
+    public function getInfo($id, $state = true)
+    {
+        if (!$id) {
+            Dever::error('资源不存在');
+        }
+        $this->where['id'] = $id;
+        $info = $this->db->find($this->where);
+        if (!$info) {
+            if ($state) {
+                Dever::error('资源不存在');
+            }
+            return false;
+        }
+        return $this->handleInfo($info);
+    }
+
+    private function handleInfo($info)
+    {
+        $info = Dever::load('info', $this->app)->getInfo($info);
+        $info['cdate_str'] = date('Y-m-d H:i:s', $info['cdate']);
+        $info['price'] = Dever::load('price', 'place')->get($info, $this->app, $this->type, '下载');
+
+        if (isset($info['content'])) {
+            if (isset($info['password'])) {
+                unset($info['password']);
+            }
+            # 查看详情信息
+            if (Place::$uid) {
+                $act = new Act('collect');
+                $info['collect'] = 2;
+                $collect = $act->getInfo();
+                if ($collect) {
+                    $info['collect'] = 1;
+                }
+            }
+            $info['content'] = htmlspecialchars_decode($info['content']);
+        }
+        return $info;
+    }
+}

+ 0 - 71
src/place/lib/Util.php

@@ -2,58 +2,6 @@
 use Dever;
 class Util
 {
-    # 根据类型获取表信息
-    public function getTypeInfo($type, $type_id)
-    {
-        $where = array('id' => $type_id, 'status' => 1);
-        $table = Dever::config('setting')['type'][$type] ?? '';
-        if ($table) {
-            return Dever::db($table)->find($where);
-        }
-        return false;
-    }
-
-    # 获取用户相关的信息
-    public function getUserData($uid, $name = 'collect', $field = array(), $page = 10)
-    {
-        $type = Dever::input('type');
-        $where['uid'] = $uid;
-        //$where['status'] = 1;
-        if ($type) {
-            $where['type'] = $type;
-        }
-        # 每页10条
-        $set['num'] = $page;
-        $data = Dever::db($name, 'place')->select($where, $set);
-        $result = array();
-        if ($data) {
-            foreach ($data as $k => $v) {
-                $info = $this->getTypeInfo($v['type'], $v['type_id']);
-                if ($info) {
-                    $info[$name . '_id'] = $v['id'];
-                    $info['cdate'] = $v['cdate'];
-                    $info['cdate_str'] = date('Y-m-d H:i:s', $info['cdate']);
-                    if ($field) {
-                        foreach ($field as $v1) {
-                            $info[$v1] = $v[$v1];
-                        }
-                    }
-                    if ($type == 3) {
-                        $info['detail'] = Dever::load('order', 'place')->getDetail($type, $v['id']);
-                    }
-                    $result[] = $info;
-                }
-            }
-        }
-        return $result;
-    }
-
-    public function entry($sector_id, $module_id, $user_id, $place_id)
-    {
-        $entry = \Dever\Helper\Secure::encode($sector_id . '-' . $module_id . '-' . $user_id . '-' . $place_id);
-        return $entry;
-    }
-
     public function getManageType($field)
     {
         $db = Dever::db('resource', 'place');
@@ -70,23 +18,4 @@ class Util
         }
         return $option;
     }
-
-    public function getPrice($price, $member, $info_id, $key = 'price', $app = 'content', $type = 1)
-    {
-        $vip_price = Dever::load('vip', 'place')->getPrice($price, $member['vip_id'], $info_id, $key, $app, $type);
-        $agent_price = Dever::load('agent', 'place')->getPrice($price, $member['agent_id'], $info_id, $key, $app, $type);
-
-        if (!is_null($vip_price) && !is_null($agent_price)) {
-            if ($agent_price < $vip_price) {
-                $price = $agent_price;
-            } else {
-                $price = $vip_price;
-            }
-        } elseif (!is_null($vip_price)) {
-            $price = $vip_price;
-        } elseif (!is_null($agent_price)) {
-            $price = $agent_price;
-        }
-        return $price;
-    }
 }

+ 67 - 49
src/place/lib/Vip.php

@@ -1,7 +1,23 @@
 <?php namespace Place\Lib;
 use Dever;
+use Place;
 class Vip
 {
+    protected $type = 'vip';
+    protected $name = '会员';
+    protected $data;
+    protected $info;
+    public function __construct()
+    {
+        if (!$this->data) {
+            $where['status'] = 1;
+            $this->data = Dever::db($this->type, 'place')->select($where);
+            foreach ($this->data as $k => $v) {
+                $this->info[$v['id']] = $v['name'];
+            }
+        }
+    }
+
     # 获取列表
     public function getList($state = true)
     {
@@ -12,66 +28,68 @@ class Vip
                 0 => array
                 (
                     'id' => -1,
-                    'name' => '无会员',
+                    'name' => '无' . $this->name,
                 ),
             );
         }
-        $where['status'] = 1;
-        $data = array_merge($data, Dever::db('vip', 'place')->select($where));
-        return $data;
+        return array_merge($data, $this->data);
     }
 
-    # 获取列表
-    public function getFreeList()
+    # 获取购买资源的价格列表
+    public function getPrice($price, $info_id, $app, $type)
     {
-        $data = array
-        (
-            array
-            (
-                'id' => -1,
-                'name' => '密码',
-            ),
-            array
-            (
-                'id' => -2,
-                'name' => '评论',
-            ),
-        );
-        $extend = Dever::load('common', 'manage')->extend();
-        $zone_id = $extend['data_id'];
-        $where['zone_id'] = array('in', '-1,' . $zone_id);
-        $data = array_merge($data, Dever::db('vip', 'source')->select($where));
-        return $data;
-    }
-
-    # 获取会员购买资源的价格
-    public function getPrice($price, $vip_id, $info_id, $key = 'price', $app = 'content', $type = 1)
-    {
-        if ($vip_id > 0) {
-            $result = '';
-            $info = Dever::db('vip_price', $app)->select(array('info_id' => $info_id));
-            if ($info) {
-                foreach ($info as &$v) {
-                    if ($v['vip_id'] == $vip_id) {
-                        $result = $v[$key];
-                        break;
-                    } elseif (!$v['vip_id']) {
-                        $result = $v[$key];
+        $result = array();
+        if ($info = $this->info) {
+            $type_id = $this->type . '_id';
+            $table = $this->type . '_price';
+            $result['name'] = Place::$info[$this->type . '_name'];
+            $list = array();
+            $alone = array();
+            $func = Dever::load('price', 'place');
+            $sets = Dever::db($table, $app)->select(array('info_id' => $info_id));
+            if ($sets) {
+                foreach ($sets as $set) {
+                    $set['value'] = $func->getValue($set['value'], $price, $type);
+                    $set['text'] = $func->getText($set['value'], $type);
+                    if ($set[$type_id]) {
+                        $set[$type_id] = explode(',', $set[$type_id]);
+                        foreach ($set[$type_id] as $id) {
+                            if (isset($info[$id])) {
+                                $list[$id] = array($info[$id], $set['value'], $set['text']);
+                                unset($info[$id]);
+                                if ($set['status'] == 1) {
+                                    $alone[$id] = $list[$id];
+                                }
+                            }
+                        }
+                    } elseif ($info) {
+                        foreach ($info as $id => $name) {
+                            if (empty($list[$id])) {
+                                $list[$id] = array($name, $set['value'], $set['text']);
+                                unset($info[$id]);
+                            }
+                            if ($set['status'] == 1) {
+                                $alone[$id] = $list[$id];
+                            }
+                        }
                     }
                 }
-                if ($key == 'per') {
-                    if ($result > 0) {
-                        return number_format($price * $result, 2);
+            }
+            if ($info) {
+                foreach ($info as $id => $name) {
+                    if (empty($list[$id])) {
+                        $info = Dever::db($table, 'place')->find(array($type_id => $id, 'type' => $type));
+                        if ($info) {
+                            $value = $func->getValue($info['per'], $price, 3);
+                            $text = $func->getText($value, $type);
+                            $list[$id] = array($name, $value, $text);
+                        }
                     }
-                } elseif ($result || $result === '0') {
-                    return number_format($result, 2);
                 }
             }
-            $info = Dever::db('vip_price', 'place')->find(array('vip_id' => $vip_id, 'type' => $type));
-            if ($info && $info['per'] > 0) {
-                return number_format($price * $info['per'], 2);
-            }
+            $result['list'] = $list;
+            $result['alone'] = $alone;
         }
-        return null;
+        return $result;
     }
 }

+ 4 - 4
src/place/manage/agent_price.php

@@ -10,16 +10,16 @@ return array
             (
                 'name' => '资源类型',
                 'type' => 'show',
-                'default' => 'Dever::call("place/info.resourceType", "{type}")',
+                'default' => 'Dever::call("place/manage.getResourceType", "{type}")',
             ),
             'per' => array
             (
-                'tips' => '资源价格*折扣=代理价格',
-                'placeholder' => '资源价格*折扣=代理价格',
+                'tips' => '资源价格*折扣%=代理价格<br />如:折扣填写为80,则代理价格=资源价格*80%',
+                'placeholder' => '资源价格*折扣%=代理价格',
             ),
             'fee' => array
             (
-                'tips' => '资源价格*佣金比例%=代理佣金',
+                'tips' => '资源价格*佣金比例%=代理佣金<br />如:代理佣金填写为10,则代理佣金=资源价格*10%',
                 'placeholder' => '资源价格*佣金比例%=代理佣金',
             ),
             'status' => array

+ 1 - 1
src/place/manage/info.php

@@ -13,7 +13,7 @@ $config['update']['column'] = array
     'load' => 'place/info',
     //'add' => '新增',
     'key' => 'id',
-    'data' => 'place/info.getTree',
+    'data' => 'place/manage.getPlaceTree',
     'active' => 1,
     'where' => 'id',
     'hidden' => true,

+ 2 - 2
src/place/manage/place.php

@@ -136,7 +136,7 @@ return array
                 'type' => 5,
             ),
         ),
-        'start' => 'place/info.checkCode',
-        'end' => ['manage/system.update?system=sector', 'place/info.updateCode'],
+        'start' => 'place/manage.checkPlaceCode',
+        'end' => ['manage/system.update?system=sector', 'place/manage.updatePlaceCode'],
     ),
 );

+ 1 - 1
src/place/manage/resource.php

@@ -10,7 +10,7 @@ return array
             (
                 'name' => '资源类型',
                 'type' => 'show',
-                'default' => 'Dever::call("place/info.resourceType", "{type}")',
+                'default' => 'Dever::call("place/manage.getResourceType", "{type}")',
             ),
             'name',
             /*

+ 3 - 3
src/place/manage/vip_price.php

@@ -10,12 +10,12 @@ return array
             (
                 'name' => '资源类型',
                 'type' => 'show',
-                'default' => 'Dever::call("place/info.resourceType", "{type}")',
+                'default' => 'Dever::call("place/manage.getResourceType", "{type}")',
             ),
             'per' => array
             (
-                'tips' => '资源价格乘以折扣就是当前会员价格',
-                'placeholder' => '资源价格*折扣=会员价格',
+                'tips' => '资源价格*折扣%=会员价格<br />如:折扣填写为80,则会员价格=资源价格*80%',
+                'placeholder' => '资源价格*折扣%=会员价格',
             ),
             'status' => array
             (

+ 1 - 1
src/place/table/agent.php

@@ -3,7 +3,7 @@ return array
 (
     'name' => '角色代理表',
     'partition' => 'Dever::call("manage/common.system")',
-    'order' => 'level desc',
+    'order' => 'level asc',
     'struct' => array
     (
         'name' => array

+ 6 - 1
src/place/table/member.php

@@ -39,6 +39,11 @@ return array
             'value'     => 'Dever::call("place/agent.getList")',
             'default'   => -1,
         ),
+        'score_cash' => array
+        (
+            'name'      => '积分余额',
+            'type'      => 'decimal(11,2)',
+        ),
         'cash' => array
         (
             'name'      => '余额',
@@ -49,7 +54,7 @@ return array
             'name'      => '头像',
             'type'      => 'varchar(150)',
         ),
-        'entry_type' => array
+        'Main_type' => array
         (
             'name'      => '访问类型',
             'type'      => 'tinyint(1)',

+ 18 - 0
src/place/table/order_detail.php

@@ -17,12 +17,30 @@ return array
             'name'      => '类型ID',
         ),
 
+        'sku_id'        => array
+        (
+            'type'      => 'int(11)',
+            'name'      => '价格ID',
+        ),
+
         'order_id'       => array
         (
             'type'      => 'int(11)',
             'name'      => '订单ID',
         ),
 
+        'name'      => array
+        (
+            'type'      => 'varchar(80)',
+            'name'      => '名称',
+        ),
+
+        'sku_name'      => array
+        (
+            'type'      => 'varchar(200)',
+            'name'      => '价格的规格名称',
+        ),
+
         'cash'      => array
         (
             'type'      => 'decimal(11,2)',

+ 27 - 0
src/place/table/order_log.php

@@ -0,0 +1,27 @@
+<?php
+return array
+(
+    'name' => '订单日志表',
+    'partition' => 'Dever::call("manage/common.system")',
+    'store' => 'log',
+    'struct' => array
+    (
+        'order_id'       => array
+        (
+            'type'      => 'int(11)',
+            'name'      => '订单ID',
+        ),
+
+        'cash'      => array
+        (
+            'type'      => 'decimal(11,2)',
+            'name'      => '明细金额',
+        ),
+
+        'num'      => array
+        (
+            'type'      => 'decimal(11,2)',
+            'name'      => '明细数量',
+        ),
+    ),
+);

+ 1 - 1
src/place/table/vip.php

@@ -3,7 +3,7 @@ return array
 (
     'name' => '会员表',
     'partition' => 'Dever::call("manage/common.system")',
-    'order' => 'level desc',
+    'order' => 'level asc',
     'struct' => array
     (
         'name' => array

+ 1 - 1
src/place/table/vip_price.php

@@ -22,7 +22,7 @@ return array
         'per' => array
         (
             'name'      => '折扣',
-            'type'      => 'varchar(20)',
+            'type'      => 'varchar(11)',
         ),
         
         'status' => array

+ 0 - 30
src/resource/content/api/Data.php

@@ -1,30 +0,0 @@
-<?php namespace Content\Api;
-use Dever;
-use Place\Lib\Core;
-class Data extends Core
-{
-    # 首页
-    public function home()
-    {
-        $data['place'] = $this->place;
-        $data['member'] = $this->member;
-        $data = Dever::load('cate', 'content')->getAll($data);
-        $data['list'] = Dever::load('info', 'content')->getList($this->member, $data['cate_id']);
-        return $data;
-    }
-
-    # 详情
-    public function view()
-    {
-        $data['place'] = $this->place;
-        $data['member'] = $this->member;
-        $data['info'] = Dever::load('info', 'content')->getOne($this->member);
-        # 分类下其他内容
-        $data['cate'] = Dever::load('info', 'content')->getList($this->member, $data['info']['cdate'], $data['info']['id'], 6);
-        # 最新内容
-        $data['new'] = Dever::load('info', 'content')->getList($this->member, false, $data['info']['id'], 6);
-        # 获取评论
-        $data['review'] = Dever::load('review', 'content')->getList($data['info']['id']);
-        return $data;
-    }
-}

+ 0 - 20
src/resource/content/api/Manage.php

@@ -1,20 +0,0 @@
-<?php namespace Content\Api;
-use Dever;
-use Manage\Lib\Auth;
-class Manage extends Auth
-{
-    public function getPrice($value = false)
-    {
-        if ($value == 2) {
-            # 获取代理
-            $option = Dever::db('agent', 'place')->select(['status' => 1]);
-        } else {
-            # 获取会员
-            $option = Dever::db('vip', 'place')->select(['status' => 1]);
-        }
-        $result['type_id']['value'] = '';
-        $result['type_id']['type'] = 'select';
-        $result['type_id']['option'] = $option;
-        return $result;
-    }
-}

+ 0 - 35
src/resource/content/api/Member.php

@@ -1,35 +0,0 @@
-<?php namespace Content\Api;
-use Dever;
-use Place\Lib\Core;
-class Member extends Core
-{
-    protected $login = true;
-    protected $entry = true;
-
-    # 我的下载
-    public function down()
-    {
-        $where['uid'] = $this->member['id'];
-        # 每页10条
-        $set['num'] = 10;
-        $data = Dever::db('down', 'content')->select($where, $set);
-        $result = array();
-        if ($data) {
-            foreach ($data as $k => $v) {
-                $info = Dever::db('info', 'content')->find($v['info_id']);
-                if ($info['status'] == 1) {
-                    $value = Dever::db('value', 'content')->find($v['info_value_id']);
-                    if ($value) {
-                        $info['down_id'] = $v['id'];
-                        $info['cdate'] = $v['cdate'];
-                        $info['cdate_str'] = date('Y-m-d H:i:s', $info['cdate']);
-                        $info['value_name'] = $value['name'];
-                        # 这里是否要再次下载?先不用吧
-                        $result[] = $info;
-                    }
-                }
-            }
-        }
-        return $result;
-    }
-}

+ 0 - 41
src/resource/content/api/Value.php

@@ -1,41 +0,0 @@
-<?php namespace Content\Api;
-use Dever;
-use Place\Lib\Core;
-class Value extends Core
-{
-    protected $login = true;
-    protected $entry = true;
-
-    # 获取附件
-    public function list()
-    {
-        $data['info'] = Dever::load('value', 'content')->getInfo($this->member);
-        return $data;
-    }
-
-    # 购买附件
-    public function buy()
-    {
-        $info = Dever::load('value', 'content')->getInfo($this->member);
-        return Dever::load('order', 'place')->pay($this->member, $info, 1, 'C');
-    }
-
-    # 下载某个附件
-    public function down()
-    {
-        $g = \Dever\Helper\Secure::decode(Dever::input('g'));
-        if (!$g) {
-            Dever::error('信息有误');
-        }
-        $info = Dever::load('value', 'content')->getInfo($this->member, $g);
-        if (isset($info['value']) && $info['value']) {
-            # 记录下载次数
-            $data['uid'] = $this->member['id'];
-            $data['info_id'] = $info['id'];
-            $data['value_id'] = $info['value']['id'];
-            Dever::db('down', 'content')->insert($data);
-            header('location:' . $info['value']['file']);
-        }
-        Dever::error('信息有误');
-    }
-}

+ 1 - 0
src/resource/content/index.php

@@ -2,4 +2,5 @@
 define('DEVER_APP_NAME', 'content');
 define('DEVER_APP_LANG', '内容');
 define('DEVER_APP_PATH', dirname(__FILE__) . DIRECTORY_SEPARATOR);
+include(DEVER_APP_PATH . '../../place/boot.php');
 include(DEVER_APP_PATH . '../../../boot.php');

+ 0 - 92
src/resource/content/lib/Cate.php

@@ -1,92 +0,0 @@
-<?php namespace Content\Lib;
-use Dever;
-class Cate
-{
-    public function update($db, $data)
-    {
-        if ($data['cate']) {
-            $data['cate'] = explode(',', $data['cate']);
-            $update['cate_parent_id'] = $data['cate'][0];
-            if (isset($data['cate'][1])) {
-                $update['cate_child_id'] = $data['cate'][1];
-            } else {
-                $update['cate_child_id'] = 0;
-            }
-            $db->update(array('id' => $data['id']), $update);
-        }
-    }
-    
-    # 获取所有分类信息
-    public function getAll($data, $type = 'content')
-    {
-        $data['cate_parent'] = $this->getData(0, $type);
-        $data['cate_child'] = array();
-        $data['cate_id'] = Dever::input('cate_id');
-        if ($data['cate_id']) {
-            $cate = Dever::db('cate', $type)->find($data['cate_id']);
-            $data['cate'] = $cate;
-            if ($cate) {
-                $cate['name'] = '全部';
-                if ($cate['parent_id'] <= 0) {
-                    $parent_id = $cate['id'];
-                } else {
-                    $parent_id = $cate['parent_id'];
-                }
-                if ($data['cate_parent']) {
-                    foreach ($data['cate_parent'] as &$v) {
-                        $v['selected'] = 2;
-                        if ($v['id'] == $parent_id) {
-                            $v['selected'] = 1;
-                        }
-                    }
-                }
-                $data['cate_child'][] = array('id' => $parent_id, 'name' => '全部');
-                $data['cate_child'] = array_merge($data['cate_child'], $this->getData($parent_id, $type));
-                if ($data['cate_child']) {
-                    foreach ($data['cate_child'] as &$v) {
-                        $v['selected'] = 2;
-                        if ($v['id'] == $cate['id']) {
-                            $v['selected'] = 1;
-                        }
-                    }
-                }
-            }
-        }
-        return $data;
-    }
-
-    public function getData($parent_id, $type = 'content')
-    {
-        $where = array('parent_id' => $parent_id, 'status' => 1);
-        $set = array('col' => 'id,name,cdate,parent_id,`desc`');
-        $data = Dever::db('cate', $type)->select($where, $set);
-        return $data;
-    }
-
-    # 获取带有子分类的分类列表
-    public function getList($type = 'content')
-    {
-        $cate = $this->getData(0, $type);
-        $result = array();
-        foreach ($cate as $k => $v) {
-            $v['children'] = $this->getData($v['id'], $type);
-            $result[] = $v;
-        }
-        return $result;
-    }
-
-    public function getInfo($type = 'content', $cate = '')
-    {
-        $result = '';
-        if ($cate) {
-            $cate = explode(',', $cate);
-            $info = Dever::db('cate', $type)->find($cate[0]);
-            $result = $info['name'];
-            if (isset($cate[1])) {
-                $info = Dever::db('cate', $type)->find($cate[1]);
-                $result .= '<br />' . $info['name'];
-            }
-        }
-        return $result;
-    }
-}

+ 35 - 88
src/resource/content/lib/Info.php

@@ -1,107 +1,54 @@
 <?php namespace Content\Lib;
 use Dever;
+use Place;
 class Info
 {
-    public function getList($member, $cate = false, $id = false, $num = 10)
+    # 获取字段
+    public function getCol()
     {
-        $where = array('status' => 1);
-        if ($cate) {
-            $cate = explode(',', $cate);
-            $where['cate_parent_id'] = $cate[0];
-            if (isset($cate[1])) {
-                $where['cate_child_id'] = $cate[0];
-            }
-        }
-        $times = Dever::input('times');
-        if ($times) {
-            $where['times_id'] = $times;
-        }
-        $name = Dever::input('search');
-        if ($name) {
-            $where['name'] = array('like', $name);
-        }
-        $set['col'] = 'id,name,cdate,pic,price';
-        if ($id) {
-            $set['limit'] = '0,6';
-            $where['id'] = array('!=', $id);
-        } else {
-            $set['num'] = $num;
-        }
-        $info = Dever::db('info', 'content')->select($where, $set);
-        $result = array();
-        foreach ($info as $k => $v) {
-            $v = $this->getInfo($v, $member);
-            $result[] = $v;
-        }
-        return $result;
+        return 'id,name,info,pic,price,cdate';
     }
 
-    public function getOne($member)
+    # 获取基本信息
+    public function getInfo($info)
     {
-        $id = Dever::input('id');
-        $where = array('status' => 1);
-        $where['id'] = $id;
-        $info = Dever::db('info', 'content')->find($where);
-        if (!$info) {
-            Dever::alert('内容不存在');
-        }
-        $info = $this->getInfo($info, $member);
         return $info;
     }
 
-    private function getInfo($info, $member)
+    public function submit($info)
     {
-        unset($info['password']);
-        $info['cdate_str'] = date('Y-m-d H:i:s', $info['cdate']);
-        if (isset($info['content'])) {
-            $info['button'] = '下载';
-            if ($member['id'] && $member['id'] > 0) {
-                $collect = Dever::db('collect', 'content')->find(array('info_id' => $info['id'], 'uid' => $member['id']));
-                if ($collect && $collect['status'] == 1) {
-                    $info['collect'] = 1;
-                } else {
-                    $info['collect'] = 2;
-                }
+        $result = $info['price'];
+        $password = Dever::input('password');
+        if ($password) {
+            if ($info['password'] && $password == $info['password']) {
+                $result['status'] = 1;
+            } else {
+                Dever::error('密码输入错误');
             }
-            $info['price_vip'] = array('name' => '会员', 'status' => 2, 'data' => array());
-            $price = Dever::db('price', 'content')->select(array('type' => 1, 'info_id' => $info['id']));
-            if ($price) {
-                foreach ($price as &$v) {
-                    $vip = Dever::db('vip', 'place')->find($v['type_id']);
-                    if ($vip) {
-                        $v['name'] = $vip['name'];
-                        $v['price_text'] = $this->getPrice($v['price'], $member['score']);
-                        $info['price_vip']['status'] = 1;
-                        $info['price_vip']['data'][] = $v;
-                    }
-                }
-            }
-            $info['price_agent'] = array('name' => '代理', 'status' => 2, 'data' => array());
-            $price = Dever::db('price', 'content')->select(array('type' => 2, 'info_id' => $info['id']));
-            if ($price) {
-                foreach ($price as &$v) {
-                    $vip = Dever::db('agent', 'place')->find($v['type_id']);
-                    if ($vip) {
-                        $v['name'] = $vip['name'];
-                        $v['price_text'] = $this->getPrice($v['price'], $member['score']);
-                        $info['price_agent']['status'] = 1;
-                        $info['price_agent']['data'][] = $v;
+        }
+        if ($result['status'] == 1) {
+            if ($id) {
+                $result['value'] = Dever::db('value', 'content')->find(array('info_id' => $info['id'], 'id' => $id));
+            } else {
+                $result['value'] = Dever::db('value', 'content')->select(array('info_id' => $info['id']));
+                if ($result['value']) {
+                    $param['p'] = Dever::input('p');
+                    $param['t'] = Dever::input('t');
+                    foreach ($result['value'] as &$v) {
+                        if ($v['file']) {
+                            $param['g'] = \Dever\Helper\Secure::encode($v['id']);
+                            $v['file'] = Dever::url('place/down.act', $param);
+                        }
                     }
                 }
             }
-            $info['content'] = htmlspecialchars_decode($info['content']);
+        } elseif ($result['status'] == 2) {
+            $result['id'] = $info['id'];
+            $result['name'] = $info['name'];
+            $result['button'] = '购买';
+        } elseif ($result['status'] == 3) {
+            $result['text'] = '专享内容,升级会员可下载';
         }
-        $info['price_text'] = $this->getPrice($info['price'], $member['score']);
-        return $info;
-    }
-
-    public function getPrice($price, $score)
-    {
-        if ($price > 0) {
-            $price = $price . $score;
-        } else {
-            $price = '免费';
-        }
-        return $price;
+        return $result;
     }
 }

+ 0 - 77
src/resource/content/lib/Value.php

@@ -1,77 +0,0 @@
-<?php namespace Content\Lib;
-use Dever;
-use Dever\Helper\Secure;
-class Value
-{
-    public function getInfo($member, $id = false)
-    {
-        $id = Dever::input('id');
-        $where = array('status' => 1);
-        $where['id'] = $id;
-        $info = Dever::db('info', 'content')->find($where);
-        if (!$info) {
-            Dever::error('内容不存在');
-        }
-
-        $password = Dever::input('password');
-        if ($password) {
-            if ($info['password'] && $password == $info['password']) {
-                $result['status'] = 1;
-            } else {
-                Dever::error('密码输入错误');
-            }
-        } else {
-            $result = $this->getPrice($member, $info);
-        }
-        
-        if ($result['status'] == 1) {
-            if ($id) {
-                $result['value'] = Dever::db('value', 'content')->find(array('info_id' => $info['id'], 'id' => $id));
-            } else {
-                $result['value'] = Dever::db('value', 'content')->select(array('info_id' => $info['id']));
-                if ($result['value']) {
-                    $param['p'] = Dever::input('p');
-                    $param['t'] = Dever::input('t');
-                    foreach ($result['value'] as &$v) {
-                        if ($v['file']) {
-                            $param['g'] = Secure::encode($v['id']);
-                            $v['file'] = Dever::url('api/value.down', $param);
-                        }
-                    }
-                }
-            }
-        }
-        return $result;
-    }
-
-    # 获取价格
-    public function getPrice($member, $info)
-    {
-        $result = array();
-        $result['id'] = $info['id'];
-        $result['name'] = $info['name'];
-        $result['status'] = 2;
-        $order = Dever::load('order', 'place')->getInfoByType(1, $info['id'], $member['id'], 5);
-        if ($order) {
-            $result['status'] = 1;
-        } else {
-            if ($info['price'] > 0) {
-                $info['price'] = Dever::load('util', 'place')->getPrice($info['price'], $member, $info['id'], 'price', 'content', 1);
-            }
-
-            if ($info['price'] <= 0) {
-                $result['status'] = 1;
-            } else {
-                $result['password'] = 2;
-                if ($info['password']) {
-                    $result['password'] = 1;
-                }
-                $result['status'] = 2;
-                $result['price'] = $info['price'];
-                $result['price_text'] = Dever::load('info', 'content')->getPrice($info['price'], $member['score']);
-                $result['button'] = '购买';
-            }
-        }
-        return $result;
-    }
-}

+ 1 - 1
src/resource/content/manage/agent_price.php

@@ -13,7 +13,7 @@ return array
                 'clearable' => true,
                 'multiple' => true,
             ),
-            'price' => array
+            'value' => array
             (
                 'tips' => '价格设置为0,当前选择的代理免费<br />为空则使用默认代理折扣计算代理购买价格',
             ),

+ 4 - 4
src/resource/content/manage/info.php

@@ -15,7 +15,7 @@ return array
             ),
             'cate' => array
             (
-                'show' => 'Dever::call("content/cate.getInfo", array("content", "{cate}"))',
+                'show' => 'Dever::call("place/manage.getCateInfo", array("content", "{cate}"))',
             ),
             'status' => array
             (
@@ -49,7 +49,7 @@ return array
             'cate' => array
             (
                 'type' => 'cascader',
-                'option'    => 'Dever::call("content/cate.getList", array("content"))',
+                'option'    => 'Dever::call("place/manage.getCateList", array("content"))',
             ),
             'status',
             'name',
@@ -74,7 +74,7 @@ return array
             (
                 'rules' => true,
                 'type' => 'cascader',
-                'option'    => 'Dever::call("content/cate.getList", array("content"))',
+                'option'    => 'Dever::call("place/manage.getCateList", array("content"))',
             ),
             'pic' => array
             (
@@ -127,6 +127,6 @@ return array
                 'desc' => '可以按照代理等级设置不同的价格',
             ),
         ),
-        'end' => 'content/cate.update',
+        'end' => 'place/manage.updateCate',
     ),
 );

+ 2 - 2
src/resource/content/manage/vip_price.php

@@ -13,9 +13,9 @@ return array
                 'clearable' => true,
                 'multiple' => true,
             ),
-            'price' => array
+            'value' => array
             (
-                'tips' => '价格设置为0,当前选择的会员免费',
+                'tips' => '设置为0,当前选择的会员免费<br />为空则使用默认会员折扣计算会员购买价格',
             ),
             'status' => array
             (

+ 2 - 2
src/resource/content/table/agent_price.php

@@ -18,7 +18,7 @@ return array
             'value'     => 'place/agent',
         ),
 
-        'price' => array
+        'value' => array
         (
             'name'      => '价格',
             'type'      => 'varchar(11)',
@@ -27,7 +27,7 @@ return array
         'fee' => array
         (
             'name'      => '佣金比例',
-            'type'      => 'varchar(20)',
+            'type'      => 'varchar(11)',
         ),
         
         'status' => array

+ 1 - 1
src/resource/content/table/vip_price.php

@@ -18,7 +18,7 @@ return array
             'value'     => 'place/vip',
         ),
 
-        'price' => array
+        'value' => array
         (
             'name'      => '价格',
             'type'      => 'varchar(11)',

+ 1 - 0
src/resource/func/index.php

@@ -2,4 +2,5 @@
 define('DEVER_APP_NAME', 'func');
 define('DEVER_APP_LANG', '功能');
 define('DEVER_APP_PATH', dirname(__FILE__) . DIRECTORY_SEPARATOR);
+include(DEVER_APP_PATH . '../../place/boot.php');
 include(DEVER_APP_PATH . '../../../boot.php');

+ 0 - 30
src/resource/goods/api/Data.php

@@ -1,30 +0,0 @@
-<?php namespace Goods\Api;
-use Dever;
-use Place\Lib\Core;
-class Data extends Core
-{
-    # 首页
-    public function home()
-    {
-        $data['place'] = $this->place;
-        $data['member'] = $this->member;
-        $data = Dever::load('cate', 'content')->getAll($data, 'goods');
-        $data['list'] = Dever::load('info', 'goods')->getList($this->member, $data['cate_id']);
-        return $data;
-    }
-
-    # 详情
-    public function view()
-    {
-        $data['place'] = $this->place;
-        $data['member'] = $this->member;
-        $data['info'] = Dever::load('info', 'content')->getOne($this->member);
-        # 分类下其他内容
-        $data['cate'] = Dever::load('info', 'content')->getList($this->member, $data['info']['cdate'], $data['info']['id'], 6);
-        # 最新内容
-        $data['new'] = Dever::load('info', 'content')->getList($this->member, false, $data['info']['id'], 6);
-        # 获取评论
-        $data['review'] = Dever::load('review', 'content')->getList($data['info']['id']);
-        return $data;
-    }
-}

+ 1 - 0
src/resource/goods/index.php

@@ -2,4 +2,5 @@
 define('DEVER_APP_NAME', 'goods');
 define('DEVER_APP_LANG', '商品');
 define('DEVER_APP_PATH', dirname(__FILE__) . DIRECTORY_SEPARATOR);
+include(DEVER_APP_PATH . '../../place/boot.php');
 include(DEVER_APP_PATH . '../../../boot.php');

+ 135 - 0
src/resource/goods/lib/Cart.php

@@ -0,0 +1,135 @@
+<?php namespace Goods\Lib;
+use Dever;
+use Place;
+use Place\Lib\Resource;
+class Cart
+{
+    private $type = 3;
+    # 购物车列表
+    public function getList()
+    {
+        $where['uid'] = Place::$uid;
+        $set = array();
+        //$set['num'] = 100;
+        $data = Dever::db('cart', 'goods')->select($where, $set);
+        if ($data) {
+            $resource = new Resource($this->type);
+            foreach($data as &$v) {
+                Dever::input('price_id', 'set', $v['sku_id']);
+                $info = $resource->getInfo($v['info_id'], false);
+                if (!$info) {
+                    $v['del'] = 1;
+                } else {
+                    $v['del'] = 2;
+                }
+                $v['name'] = $info['name'];
+                $v['pic'] = $info['pic'];
+                $v['price'] = $info['price'];
+                $v['cdate_str'] = date('Y-m-d H:i:s', $v['cdate']);
+            }
+        }
+        return $data;
+    }
+
+    # 购物车增减
+    public function up($info_id, $sku_id, $num)
+    {
+        $data['uid'] = Place::$uid;
+        $data['info_id'] = $info_id;
+        $data['sku_id'] = $sku_id;
+        $info = Dever::db('cart', 'goods')->find($data);
+        if ($info) {
+            $total = $info['num'] + $num;
+            if ($total <= 0) {
+                Dever::db('cart', 'goods')->delete($info['id']);
+            } else {
+                $data['num'] = array('+', $num);
+                Dever::db('cart', 'goods')->update($info['id'], $data);
+            }
+        } else {
+            $data['num'] = $num;
+            Dever::db('cart', 'goods')->insert($data);
+        }
+        return $this->getList();
+    }
+
+    # 购物车选中状态
+    public function edit($info_id, $sku_id, $status)
+    {
+        $data['uid'] = Place::$uid;
+        $data['info_id'] = $info_id;
+        $data['sku_id'] = $sku_id;
+        $info = Dever::db('cart', 'goods')->find($data);
+        if ($info) {
+            Dever::db('cart', 'goods')->update($info['id'], array('status' => $status));
+        }
+        return $this->getList();
+    }
+
+    # 删除商品
+    public function delete($info_id, $sku_id)
+    {
+        $data['uid'] = Place::$uid;
+        $data['info_id'] = $info_id;
+        $data['sku_id'] = $sku_id;
+        Dever::db('cart', 'goods')->delete($data);
+        return $this->getList();
+    }
+
+    public function drop()
+    {
+        $data['uid'] = Place::$uid;
+        Dever::db('cart', 'goods')->delete($data);
+        return $this->getList();
+    }
+
+    public function confirm()
+    {
+        //$id = Dever::input('ids', 'is_string', '请选择商品');
+        $where['uid'] = Place::$uid;
+        $where['status'] = 1;
+        $data = Dever::db('cart', 'goods')->select($where);
+        if ($data) {
+            $result = array();
+            $result['value'] = 0;
+            $result['original'] = 0;
+            $result['text'] = '';
+            $result['id'] = '';
+            $result['name'] = '';
+            $resource = new Resource($this->type);
+            foreach($data as &$v) {
+                $id = $v['id'];
+                $num = $v['num'];
+                $sku_id = $v['sku_id'];
+                Dever::input('price_id', 'set', $sku_id);
+                $info = $resource->getInfo($v['info_id'], false);
+                if ($info) {
+                    $v = $info;
+                    $v['cart_id'] = $id;
+                    $v['sku_id'] = $sku_id;
+                    $v['num'] = $num;
+                    $v['cash'] = $v['price']['value'];
+                    $result['value'] += $v['cash'];
+                    $result['original'] += $v['price']['original'];
+                    $v['name'] = $v['name'];
+                    if (isset($v['sku']['info']['name'])) {
+                        $v['sku_name'] = $v['sku']['info']['name'];
+                    }
+                    if (!$result['id']) {
+                        $result['id'] = $v['id'];
+                    }
+                    if (!$result['name']) {
+                        $result['name'] = $v['name'];
+                    }
+                }
+            }
+            $result['original'] = Dever::number($result['original']);
+            $result['value'] = Dever::number($result['value']);
+            $result['text'] = Dever::load('price', 'place')->getText($result['value'], 3);
+            $result['detail'] = $data;
+            return $result;
+        } else {
+            Dever::error('请选择商品');
+        }
+    }
+}

+ 25 - 77
src/resource/goods/lib/Info.php

@@ -1,93 +1,41 @@
 <?php namespace Goods\Lib;
 use Dever;
+use Place;
 class Info
 {
-    public function getList($member, $cate = false, $id = false, $num = 10)
+    # 获取字段
+    public function getCol()
     {
-        $where = array('status' => 1);
-        if ($cate) {
-            $cate = explode(',', $cate);
-            $where['cate_parent_id'] = $cate[0];
-            if (isset($cate[1])) {
-                $where['cate_child_id'] = $cate[0];
-            }
-        }
-        $name = Dever::input('search');
-        if ($name) {
-            $where['name'] = array('like', $name);
-        }
-        $set['col'] = 'id,name,info,cdate,pic,spec_type';
-        if ($id) {
-            $set['limit'] = '0,6';
-            $where['id'] = array('!=', $id);
-        } else {
-            $set['num'] = $num;
-        }
-        $info = Dever::db('info', 'goods')->select($where, $set);
-        $result = array();
-        foreach ($info as $k => $v) {
-            $v = $this->getInfo($v, $member);
-            $result[] = $v;
-        }
-        return $result;
+        return 'id,name,info,pic,spec_type,cdate';
     }
 
-    public function getOne($member)
+    # 获取基本信息
+    public function getInfo($info)
     {
-        $id = Dever::input('id');
-        $where = array('status' => 1);
-        $where['id'] = $id;
-        $info = Dever::db('info', 'goods')->find($where);
-        if (!$info) {
-            Dever::error('商品不存在');
+        # 获取价格
+        $where = array('info_id' => $info['id']);
+        $sku_id = Dever::input('sku_id');
+        if ($sku_id) {
+            $where['id'] = $sku_id;
         }
-        $info = $this->getInfo($info, $member);
+        $sku = Dever::load('sku', 'api')->getPrice($where, $info['spec_type'], 'goods');
+        $info['price'] = $sku['price'];
+        $info['sku_name'] = $sku['name'];
+        $info['sku_id'] = $sku['id'];
         return $info;
     }
 
-    private function getInfo($info, $member)
+    public function submit($info)
     {
-        $info['cdate_str'] = date('Y-m-d H:i:s', $info['cdate']);
-        if (isset($info['content'])) {
-            $info['button'] = '下载';
-            if ($member['id'] && $member['id'] > 0) {
-                $collect = Dever::db('collect', 'content')->find(array('info_id' => $info['id'], 'uid' => $member['id']));
-                if ($collect && $collect['status'] == 1) {
-                    $info['collect'] = 1;
-                } else {
-                    $info['collect'] = 2;
-                }
-            }
-            $info['price_vip'] = array('name' => '会员', 'status' => 2, 'data' => array());
-            $price = Dever::db('price', 'content')->select(array('type' => 1, 'info_id' => $info['id']));
-            if ($price) {
-                foreach ($price as &$v) {
-                    $vip = Dever::db('vip', 'place')->find($v['type_id']);
-                    if ($vip) {
-                        $v['name'] = $vip['name'];
-                        $v['price_text'] = $this->getPrice($v['price'], $member['score']);
-                        $info['price_vip']['status'] = 1;
-                        $info['price_vip']['data'][] = $v;
-                    }
-                }
-            }
-            $info['price_agent'] = array('name' => '代理', 'status' => 2, 'data' => array());
-            $price = Dever::db('price', 'content')->select(array('type' => 2, 'info_id' => $info['id']));
-            if ($price) {
-                foreach ($price as &$v) {
-                    $vip = Dever::db('agent', 'place')->find($v['type_id']);
-                    if ($vip) {
-                        $v['name'] = $vip['name'];
-                        $v['price_text'] = $this->getPrice($v['price'], $member['score']);
-                        $info['price_agent']['status'] = 1;
-                        $info['price_agent']['data'][] = $v;
-                    }
-                }
-            }
-            $info['content'] = htmlspecialchars_decode($info['content']);
+        $result = $info['price'];
+        $result['id'] = $info['id'];
+        $result['name'] = $info['name'];
+        if ($result['status'] == 3) {
+            $result['text'] = '专享商品,升级会员可购买';
+        } else {
+            $result['status'] = 2;
+            $result['sku'] = Dever::load('sku', 'api')->getList(array('info_id' => $info['id']), Dever::input('sku_id'), 'goods');
         }
-
-        $info['price'] = Dever::load('sku', 'api')->getPrice(array('info_id' => $info['id']), $info['spec_type'], $member['score'], 'goods');
-        return $info;
+        return $result;
     }
 }

+ 36 - 0
src/resource/goods/manage/agent_price.php

@@ -0,0 +1,36 @@
+<?php
+return array
+(
+    'update' => array
+    (
+        'field'    => array
+        (
+            'agent_id' => array
+            (
+                'placeholder' => '不选则为所有代理',
+                'tips' => '选择代理,可以多选<br />不选则为所有代理',
+                'type' => 'select',
+                'clearable' => true,
+                'multiple' => true,
+            ),
+            'value' => array
+            (
+                'tips' => '资源价格*折扣%=代理价格<br />设置为0,当前选择的代理免费<br />为空则使用默认代理折扣计算代理购买价格',
+            ),
+            'fee' => array
+            (
+                'tips' => '资源价格*佣金比例%=代理佣金<br />为空则使用默认代理佣金比例',
+                'placeholder' => '资源价格*佣金比例%=代理佣金',
+            ),
+            'status' => array
+            (
+                'width' => '40',
+                'type' => 'switch',
+                'show'  => '{status}',
+                'active_value' => 1,
+                'inactive_value' => 2,
+                'tips' => '勾选后,仅限当前选择的代理可以下载',
+            ),
+        ),
+    ),
+);

+ 18 - 4
src/resource/goods/manage/info.php

@@ -15,7 +15,7 @@ return array
             ),
             'cate' => array
             (
-                'show' => 'Dever::call("content/cate.getInfo", array("goods", "{cate}"))',
+                'show' => 'Dever::call("place/manage.getCateInfo", array("goods", "{cate}"))',
             ),
             'status' => array
             (
@@ -40,7 +40,7 @@ return array
             'cate' => array
             (
                 'type' => 'cascader',
-                'option'    => 'Dever::call("content/cate.getList", array("goods"))',
+                'option'    => 'Dever::call("place/manage.getCateList", array("goods"))',
             ),
             'cdate' => array
             (
@@ -57,7 +57,7 @@ return array
     ),
     'update' => array
     (
-        'end' => 'content/cate.update',
+        'end' => 'place/manage.updateCate',
         'control' => array
         (
             'goods/sku' => array
@@ -74,6 +74,7 @@ return array
         (
             '基本信息' => 'name,cate,pic,info,content',
             '规格设置' => 'spec_type,goods/sku,goods/sku#',
+            '特殊价格设置' => 'goods/vip_price,goods/agent_price',
         ),
         //'desc' => '原创声明:',
         'field'    => array
@@ -86,7 +87,7 @@ return array
             (
                 'rules' => true,
                 'type' => 'cascader',
-                'option'    => 'Dever::call("content/cate.getList", array("goods"))',
+                'option'    => 'Dever::call("place/manage.getCateList", array("goods"))',
             ),
             'pic' => array
             (
@@ -147,6 +148,19 @@ return array
                 'spec_data' => 'api/spec.manage',
                 'desc' => '如需设置商品库存,请到“商品库存”中设置,不设置库存则商品无库存',
             ),
+
+            'goods/vip_price' => array
+            (
+                'name' => '会员价格',
+                'where'  => array('info_id' => 'id'),
+                'desc' => '可以按照会员等级设置不同的价格',
+            ),
+            'goods/agent_price' => array
+            (
+                'name' => '代理价格',
+                'where'  => array('info_id' => 'id'),
+                'desc' => '可以按照代理等级设置不同的价格',
+            ),
         ),
     ),
 );

+ 31 - 0
src/resource/goods/manage/vip_price.php

@@ -0,0 +1,31 @@
+<?php
+return array
+(
+    'update' => array
+    (
+        'field'    => array
+        (
+            'vip_id' => array
+            (
+                'placeholder' => '不选则为所有会员',
+                'tips' => '选择会员,可以多选<br />不选则为所有会员',
+                'type' => 'select',
+                'clearable' => true,
+                'multiple' => true,
+            ),
+            'value' => array
+            (
+                'tips' => '资源价格*折扣%=会员价格<br />设置为0,当前选择的会员免费<br />为空则使用默认会员折扣计算会员购买价格',
+            ),
+            'status' => array
+            (
+                'width' => '40',
+                'type' => 'switch',
+                'show'  => '{status}',
+                'active_value' => 1,
+                'inactive_value' => 2,
+                'tips' => '勾选后,仅限当前选择的会员可以购买',
+            ),
+        ),
+    ),
+);

+ 45 - 0
src/resource/goods/table/agent_price.php

@@ -0,0 +1,45 @@
+<?php
+return array
+(
+    'name' => '商品代理价格表',
+    'partition' => 'Dever::call("manage/common.system")',
+    'struct' => array
+    (
+        'info_id' => array
+        (
+            'name'      => '商品ID',
+            'type'      => 'int(11)',
+        ),
+
+        'agent_id' => array
+        (
+            'name'      => '代理',
+            'type'      => 'varchar(50)',
+            'value'     => 'place/agent',
+        ),
+
+        'value' => array
+        (
+            'name'      => '折扣',
+            'type'      => 'varchar(11)',
+        ),
+
+        'fee' => array
+        (
+            'name'      => '佣金比例',
+            'type'      => 'varchar(11)',
+        ),
+        
+        'status' => array
+        (
+            'name'      => '专享状态',
+            'type'      => 'tinyint(1)',
+            'default'   => 2,
+            'value'     => array
+            (
+                1 => '专享',
+                2 => '非专享',
+            ),
+        ),
+    ),
+);

+ 50 - 0
src/resource/goods/table/cart.php

@@ -0,0 +1,50 @@
+<?php
+return array
+(
+    'name' => '商品购物车',
+    'partition' => 'Dever::call("manage/common.system")',
+    'struct' => array
+    (
+        'info_id' => array
+        (
+            'name'      => '商品ID',
+            'type'      => 'int(11)',
+        ),
+
+        'sku_id'        => array
+        (
+            'type'      => 'int(11)',
+            'name'      => 'skuID',
+        ),
+
+        'uid'       => array
+        (
+            'type'      => 'int(11)',
+            'name'      => '用户',
+        ),
+
+        'price' => array
+        (
+            'name'      => '价格',
+            'type'      => 'decimal(11,2)',
+        ),
+
+        'num'      => array
+        (
+            'type'      => 'int(11)',
+            'name'      => '数量',
+        ),
+
+        'status' => array
+        (
+            'name'      => '状态',
+            'type'      => 'tinyint(1)',
+            'default'   => 1,
+            'value'     => array
+            (
+                1 => '选中',
+                2 => '未选中',
+            ),
+        ),
+    ),
+);

+ 39 - 0
src/resource/goods/table/vip_price.php

@@ -0,0 +1,39 @@
+<?php
+return array
+(
+    'name' => '商品会员价格表',
+    'partition' => 'Dever::call("manage/common.system")',
+    'struct' => array
+    (
+        'info_id' => array
+        (
+            'name'      => '商品ID',
+            'type'      => 'int(11)',
+        ),
+
+        'vip_id' => array
+        (
+            'name'      => '会员',
+            'type'      => 'varchar(50)',
+            'value'     => 'place/vip',
+        ),
+
+        'value' => array
+        (
+            'name'      => '折扣',
+            'type'      => 'varchar(11)',
+        ),
+        
+        'status' => array
+        (
+            'name'      => '专享状态',
+            'type'      => 'tinyint(1)',
+            'default'   => 2,
+            'value'     => array
+            (
+                1 => '专享',
+                2 => '非专享',
+            ),
+        ),
+    ),
+);