rabin před 1 dnem
rodič
revize
373e2dbe91
100 změnil soubory, kde provedl 1194 přidání a 428 odebrání
  1. 1 1
      package/manage/config.js
  2. 1 1
      package/manage/sector_config.js
  3. 1 1
      src/place/act/table/collect.php
  4. 1 1
      src/place/act/table/like.php
  5. 1 1
      src/place/act/table/review.php
  6. 3 1
      src/place/benefit/lib/Item.php
  7. 1 1
      src/place/benefit/manage/Lib/Api.php
  8. 2 1
      src/place/benefit/manage/core.php
  9. 1 1
      src/place/benefit/manage/perk_code.php
  10. 2 2
      src/place/benefit/manage/score_action.php
  11. 1 1
      src/place/benefit/manage/score_exchange.php
  12. 2 11
      src/place/benefit/manage/user.php
  13. 2 2
      src/place/benefit/manage/user_log.php
  14. 1 1
      src/place/benefit/table/bonus.php
  15. 1 1
      src/place/benefit/table/buy.php
  16. 1 1
      src/place/benefit/table/coupon.php
  17. 1 1
      src/place/benefit/table/exchange.php
  18. 1 1
      src/place/benefit/table/exchange_scope.php
  19. 1 1
      src/place/benefit/table/gift.php
  20. 1 1
      src/place/benefit/table/held.php
  21. 1 1
      src/place/benefit/table/perk.php
  22. 1 1
      src/place/benefit/table/perk_code.php
  23. 4 3
      src/place/benefit/table/perk_code_item.php
  24. 1 1
      src/place/benefit/table/perk_create_code.php
  25. 1 1
      src/place/benefit/table/perk_voucher.php
  26. 1 1
      src/place/benefit/table/promotion.php
  27. 1 1
      src/place/benefit/table/rebate.php
  28. 1 1
      src/place/benefit/table/rebate_rule.php
  29. 1 1
      src/place/benefit/table/role_action.php
  30. 1 1
      src/place/benefit/table/role_period.php
  31. 1 1
      src/place/benefit/table/role_upgrade.php
  32. 1 1
      src/place/benefit/table/sales.php
  33. 1 1
      src/place/benefit/table/sales_rebate.php
  34. 1 1
      src/place/benefit/table/scope.php
  35. 1 1
      src/place/benefit/table/score.php
  36. 1 1
      src/place/benefit/table/score_action.php
  37. 1 1
      src/place/benefit/table/score_exchange.php
  38. 1 1
      src/place/benefit/table/score_recharge.php
  39. 1 1
      src/place/benefit/table/user.php
  40. 2 1
      src/place/benefit/table/user_log.php
  41. 1 1
      src/place/benefit/table/visit.php
  42. 6 6
      src/place/boot.php
  43. 12 17
      src/place/channel/sales/lib/Info.php
  44. 44 5
      src/place/channel/sales/manage/Lib/Info.php
  45. 1 1
      src/place/channel/sales/manage/Lib/View.php
  46. 2 2
      src/place/channel/sales/manage/offline.php
  47. 1 1
      src/place/channel/sales/table/cate.php
  48. 1 1
      src/place/channel/sales/table/media.php
  49. 1 1
      src/place/channel/sales/table/offline.php
  50. 1 1
      src/place/channel/sales/table/online.php
  51. 1 1
      src/place/channel/sales/table/profit.php
  52. 1 1
      src/place/channel/sales/table/seller.php
  53. 1 0
      src/place/interface/api/Cron.php
  54. 3 3
      src/place/interface/api/Main.php
  55. 21 3
      src/place/interface/api/Source.php
  56. 3 2
      src/place/interface/api/User.php
  57. 62 5
      src/place/order/lib/Pay.php
  58. 124 0
      src/place/order/lib/Role/Order.php
  59. 4 1
      src/place/order/lib/Role/Pay.php
  60. 28 8
      src/place/order/lib/Source/Delivery.php
  61. 1 52
      src/place/order/lib/Source/Order.php
  62. 17 6
      src/place/order/lib/Source/Pay.php
  63. 0 87
      src/place/order/lib/Source/User.php
  64. 10 0
      src/place/order/manage/Lib/Api.php
  65. 92 0
      src/place/order/manage/Lib/Excel.php
  66. 73 0
      src/place/order/manage/Lib/Role/Info.php
  67. 329 0
      src/place/order/manage/Lib/Role/View.php
  68. 26 2
      src/place/order/manage/Lib/Source/Info.php
  69. 23 3
      src/place/order/manage/Lib/Source/View.php
  70. 7 0
      src/place/order/manage/core.php
  71. 21 0
      src/place/order/manage/import.php
  72. 66 18
      src/place/order/manage/role.php
  73. 15 15
      src/place/order/manage/source.php
  74. 1 1
      src/place/order/table/pdf.php
  75. 1 1
      src/place/order/table/promotion.php
  76. 1 1
      src/place/order/table/rebate.php
  77. 1 1
      src/place/order/table/role.php
  78. 6 1
      src/place/order/table/role_detail.php
  79. 1 1
      src/place/order/table/role_log.php
  80. 1 1
      src/place/order/table/score.php
  81. 3 1
      src/place/order/table/source.php
  82. 1 1
      src/place/order/table/source_cart.php
  83. 5 1
      src/place/order/table/source_delivery_express.php
  84. 4 1
      src/place/order/table/source_delivery_virtual.php
  85. 8 1
      src/place/order/table/source_detail.php
  86. 1 1
      src/place/order/table/source_log.php
  87. 1 1
      src/place/order/table/source_refund.php
  88. 1 1
      src/place/order/table/source_refund_detail.php
  89. 1 1
      src/place/order/table/source_refund_express.php
  90. 0 39
      src/place/order/table/user_source.php
  91. 0 58
      src/place/order/table/user_source_log.php
  92. 1 1
      src/place/page/manage/Lib/Nav.php
  93. 1 1
      src/place/page/table/ad.php
  94. 1 1
      src/place/page/table/nav.php
  95. 1 1
      src/place/role/lib/Info.php
  96. 18 7
      src/place/role/lib/User.php
  97. 21 0
      src/place/role/manage/Lib/User.php
  98. 9 1
      src/place/role/manage/core.php
  99. 30 6
      src/place/role/manage/user_role.php
  100. 27 0
      src/place/role/manage/user_role_log.php

+ 1 - 1
package/manage/config.js

@@ -11,7 +11,7 @@ if (location.port == '15000') {
 deverConfig = {
   // 一些基本配置,定义后台title
   setting: {
-    title: '源代宝台',
+    title: '源代宝台',
     tokenTableName: 'dever-yuandaibao-v1',
     //loginParam: { system: 'group', number: 'default' },
   },

+ 1 - 1
package/manage/sector_config.js

@@ -11,7 +11,7 @@ if (location.port == '15000') {
 deverConfig = {
   // 一些基本配置,定义后台title
   setting: {
-    title: '源代宝中台',
+    title: '源主管理中台',
     tokenTableName: 'dever-yuandaibao-v1-sector',
     loginParam: { system: 'sector', number: 'default' },
   },

+ 1 - 1
src/place/act/table/collect.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '收藏',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'struct' => [
         'uid'       => [
             'type'      => 'int(11)',

+ 1 - 1
src/place/act/table/like.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '点赞',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'struct' => [
         'uid'       => [
             'type'      => 'int(11)',

+ 1 - 1
src/place/act/table/review.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '评价',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'order' => 'sort asc',
     'struct' => [
         'type'        => [

+ 3 - 1
src/place/benefit/lib/Item.php

@@ -42,12 +42,14 @@ class Item
         $value = [
             ['id' => 'promotion', 'name' => '促销'],
             ['id' => 'rebate', 'name' => '返利'],
-            ['id' => 'bonus', 'name' => '分红'],
+            //['id' => 'bonus', 'name' => '分红'],
             ['id' => 'score', 'name' => '积分规则'],
+            /*
             # 购买上限
             ['id' => 'buy', 'name' => '购买限额'],
             # 内容下载、查看上限
             ['id' => 'visit', 'name' => '访问限额'],
+            */
         ];
         if ($type != 1) {
             $value = array_merge([

+ 1 - 1
src/place/benefit/manage/Lib/Api.php

@@ -60,7 +60,7 @@ class Api
     # 获取权益所需要的信息:项目下的数据
     public function getProfitData()
     {
-        return Dever::load('common', 'manage')->cascader(2, function($level, $parent) {
+        return Dever::load('util', 'manage')->cascader(2, function($level, $parent) {
             $data = [];
             if ($level == 1) {
                 $data = [

+ 2 - 1
src/place/benefit/manage/core.php

@@ -71,6 +71,7 @@ return [
             'sort'      => '70',
         ],
 
+        /*
         'buy' => [
             'parent'    => 'place_benefit',
             'name'      => '购买限额',
@@ -82,7 +83,7 @@ return [
             'name'      => '访问限额',
             'icon'      => 'coupon-5-line',
             'sort'      => '90',
-        ],
+        ],*/
 
         'perk' => [
             'parent'    => 'place_benefit',

+ 1 - 1
src/place/benefit/manage/perk_code.php

@@ -1,5 +1,5 @@
 <?php
-$perk_id = Dever::load('common', 'manage')->get('perk_id');
+$perk_id = Dever::load('util', 'manage')->request('perk_id');
 return [
     'list' => [
         'where' => ['perk_id' => $perk_id],

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

@@ -1,6 +1,6 @@
 <?php
-$score_id = Dever::load('common', 'manage')->get('score_id');
-$score_info_id = Dever::load('common', 'manage')->get('score_info_id');
+$score_id = Dever::load('util', 'manage')->request('score_id');
+$score_info_id = Dever::load('util', 'manage')->request('score_info_id');
 return [
     'list' => [
         'where' => ['score_id' => $score_id],

+ 1 - 1
src/place/benefit/manage/score_exchange.php

@@ -1,5 +1,5 @@
 <?php
-$score_id = Dever::load('common', 'manage')->get('score_id');
+$score_id = Dever::load('util', 'manage')->request('score_id');
 return [
     'update' => [
         'field'    => [

+ 2 - 11
src/place/benefit/manage/user.php

@@ -3,7 +3,7 @@ return [
     'list' => [
         'desc' => '用户权益列表仅展示用户已领取的权益,包括身份周期权益以及权益包里的权益,不包括身份固定权益',
         'field'      => [
-            'uid' => Dever::call('place_user/manage/user.getInfo'),
+            'uid' => Dever::call('place_user/manage/user.getListInfo'),
             'type' => [
                 
             ],
@@ -28,16 +28,7 @@ return [
             ]]
         ],
         'search'    => [
-            'search' => array
-            (
-                'name' => '用户搜索',
-                'type' => 'select_text',
-                'option' => [
-                    ['id' => 1, 'name' => '用户ID', 'value' => 'uid'],
-                    ['id' => 2, 'name' => '用户姓名', 'value' => 'place_user/manage/user.getUidByName'],
-                    ['id' => 3, 'name' => '用户手机号', 'value' => 'place_user/manage/user.getUidByMobile'],
-                ],
-            ),
+            'search' => Dever::call('place_user/manage/user.getListSearch'),
             'type',
             'status',
         ],

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

@@ -1,9 +1,9 @@
 <?php
 return [
     'list' => [
-        'where' => ['user_id' => Dever::load('common', 'manage')->get('user_id')],
+        'where' => ['user_id' => Dever::load('util', 'manage')->request('user_id')],
         'field'      => [
-            'uid' => Dever::call('place_user/manage/user.getInfo'),
+            'uid' => Dever::call('place_user/manage/user.getListInfo'),
             'type' => [
                 
             ],

+ 1 - 1
src/place/benefit/table/bonus.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '分红表',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'order' => 'sort asc,id desc',
     'struct' => [
         'name' => [

+ 1 - 1
src/place/benefit/table/buy.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '购买限额表',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'order' => 'sort asc',
     'struct' => [
         'name' => [

+ 1 - 1
src/place/benefit/table/coupon.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '优惠券',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'order' => 'sort asc,id desc',
     'struct' => [
         'name' => [

+ 1 - 1
src/place/benefit/table/exchange.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '兑换',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'order' => 'sort asc,id desc',
     'struct' => [
         'name' => [

+ 1 - 1
src/place/benefit/table/exchange_scope.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '兑换范围',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'order' => 'id asc',
     'struct' => [
         'exchange_id'       => [

+ 1 - 1
src/place/benefit/table/gift.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '礼品卡',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'order' => 'sort asc,id desc',
     'struct' => [
         'name' => [

+ 1 - 1
src/place/benefit/table/held.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '持有权',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'order' => 'sort asc,id desc',
     'struct' => [
         'name' => [

+ 1 - 1
src/place/benefit/table/perk.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '权益包',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'order' => 'sort asc,id desc',
     'struct' => [
         'name' => [

+ 1 - 1
src/place/benefit/table/perk_code.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '权益包兑换码表',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'struct' => [
         'perk_id'       => [
             'type'      => 'int(11)',

+ 4 - 3
src/place/benefit/table/perk_code_item.php

@@ -1,7 +1,8 @@
 <?php
 return [
     'name' => '权益包包含项目',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
+    'order' => 'status asc',
     'struct' => [
         'perk_code_id'       => [
             'type'      => 'int(11)',
@@ -32,8 +33,8 @@ return [
             'type'      => 'tinyint(1)',
             'default'   => 1,
             'value'     => [
-                1 => '生效',
-                2 => '失效',
+                1 => '可用',
+                2 => '不可用',
             ],
         ],
     ],

+ 1 - 1
src/place/benefit/table/perk_create_code.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '权益包兑换码生成表',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'struct' => [
         'perk_id'       => [
             'type'      => 'int(11)',

+ 1 - 1
src/place/benefit/table/perk_voucher.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '权益包权益',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'order' => 'sort asc,id asc',
     'struct' => [
         'perk_id'       => [

+ 1 - 1
src/place/benefit/table/promotion.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '促销表',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'order' => 'sort asc,id desc',
     'struct' => [
         'name' => [

+ 1 - 1
src/place/benefit/table/rebate.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '返利表',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'order' => 'sort asc,id desc',
     'struct' => [
         'name' => [

+ 1 - 1
src/place/benefit/table/rebate_rule.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '返利规则设置表',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'order' => 'sort asc,id asc',
     'struct' => [
         'rebate_id'       => [

+ 1 - 1
src/place/benefit/table/role_action.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '身份行为权益设置表',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'order' => 'sort asc,id asc',
     'struct' => [
         'level_id'        => [

+ 1 - 1
src/place/benefit/table/role_period.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '身份周期奖励权益设置表',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'order' => 'sort asc,id asc',
     'struct' => [
         'level_id'        => [

+ 1 - 1
src/place/benefit/table/role_upgrade.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '身份升级奖励权益设置表',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'order' => 'sort asc,id asc',
     'struct' => [
         'level_id'        => [

+ 1 - 1
src/place/benefit/table/sales.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '销售渠道权益',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'struct' => [
         'sales_type' => [
             'name'      => '销售类型',

+ 1 - 1
src/place/benefit/table/sales_rebate.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '销售渠道自营返利权益',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'order' => 'id asc',
     'struct' => [
         'sales_id' => [

+ 1 - 1
src/place/benefit/table/scope.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '权益使用范围',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'order' => 'id asc',
     'struct' => [
         'type'        => [

+ 1 - 1
src/place/benefit/table/score.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '积分规则表',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'order' => 'sort asc,id desc',
     'struct' => [
         'name' => [

+ 1 - 1
src/place/benefit/table/score_action.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '积分规则-用户行为设置表',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'struct' => [
         'score_id'        => [
             'name'      => '积分规则id',

+ 1 - 1
src/place/benefit/table/score_exchange.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '积分规则-兑换表',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'struct' => [
         'score_id'        => [
             'name'      => '积分规则id',

+ 1 - 1
src/place/benefit/table/score_recharge.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '积分规则-充值规则表',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'order' => 'id asc',
     'struct' => [
         'score_id'        => [

+ 1 - 1
src/place/benefit/table/user.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '用户权益',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'struct' => [
         'uid'        => [
             'name'      => '用户ID',

+ 2 - 1
src/place/benefit/table/user_log.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '用户权益领取记录表',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'struct' => [
         'uid'        => [
             'name'      => '用户',
@@ -31,6 +31,7 @@ return [
             'value'     => [
                 1 => '身份等级',
                 2 => '权益包',
+                3 => '购买资源',
                 10 => '后台发放',
             ],
         ],

+ 1 - 1
src/place/benefit/table/visit.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '访问限额表',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'order' => 'sort asc',
     'struct' => [
         'name' => [

+ 6 - 6
src/place/boot.php

@@ -14,7 +14,7 @@ class Place
     # 生成访问码
     public static function encode($sector_id, $account_id, $place_id, $sales_type = 0, $sales_id = 0, $uid = 0)
     {
-        return Dever::load('info', 'place')->decode($sector_id, $account_id, $place_id, $sales_type, $sales_id, $uid);
+        return Dever::load('info', 'place')->encode($sector_id, $account_id, $place_id, $sales_type, $sales_id, $uid);
     }
 
     # 解析访问码
@@ -34,7 +34,7 @@ class Place
             Dever::error('领域信息错误');
         }
         # 切换数据库
-        Dever::load('common', 'manage')->setAuth(self::$system, 'sector_user', self::$sector['id'], $account_id);
+        Dever::load('util', 'manage')->setAuth(self::$system, 'sector_user', self::$sector['id'], $account_id);
 
         # 初始化品牌
         self::info($account_id, $place_id, $uid);
@@ -42,9 +42,9 @@ class Place
         # 切换数据库
         /*
         self::$module = Dever::db('system_module', 'manage')->find(['key' => 'sector_place']);
-        Dever::load('common', 'manage')->setAuth(self::$system, self::$module['id'], self::$sector['id'], $place_id);
+        Dever::load('util', 'manage')->setAuth(self::$system, self::$module['id'], self::$sector['id'], $place_id);
         */
-        Dever::load('common', 'manage')->setAuth(self::$system, 'sector_place', self::$sector['id'], $place_id);
+        Dever::load('util', 'manage')->setAuth(self::$system, 'sector_place', self::$sector['id'], $place_id);
 
         # 查找销售来源
         self::sales($sales_type, $sales_id);
@@ -54,7 +54,7 @@ class Place
     public static function info($account_id, $place_id, $uid)
     {
         $account = Dever::db('user', 'sector')->find($account_id);
-        self::$info = Dever::db('info', 'place')->find($place_id, ['col' => 'id,name,info,logo,type,money_id,uid,score_name,`update`,content']);
+        self::$info = Dever::db('info', 'place')->find($place_id, ['col' => 'id,code,name,info,logo,type,money_id,uid,score_name,`update`,content']);
         if (!self::$info) {
             Dever::error('信息有误');
         }
@@ -102,7 +102,7 @@ class Place
         self::$user = Dever::db('info', 'place_user')->find($uid, ['col' => 'id,parent_uid,name,mobile,password,avatar,sex,sign,type,sales_type,sales_id']);
         if (self::$user) {
             self::$uid = $uid;
-            self::$user['mobile'] = \Dever\Helper\Str::hide(self::$user['mobile']);
+            //self::$user['mobile'] = \Dever\Helper\Str::hide(self::$user['mobile']);
             if (self::$user['password']) {
                 self::$user['password'] = 1;
             } else {

+ 12 - 17
src/place/channel/sales/lib/Info.php

@@ -3,34 +3,29 @@ use Dever;
 class Info
 {
     # 获取销售类型
-    public function getType()
+    public function getType($id = 0, $index = 0)
     {
-        return [
+        $config = [
             ['id' => 1, 'name' => '实体店', 'table' => 'offline'],
             ['id' => 2, 'name' => '网店', 'table' => 'online'],
             ['id' => 3, 'name' => '自媒体', 'table' => 'media'],
             ['id' => 4, 'name' => '经销商', 'table' => 'seller'],
         ];
-    }
-
-    public function getTypeName($type)
-    {   
-        if ($type == 1) {
-            $table = 'offline';
-        } elseif ($type == 2) {
-            $table = 'online';
-        } elseif ($type == 3) {
-            $table = 'media';
-        } elseif ($type == 4) {
-            $table = 'seller';
+        if ($id) {
+            $config = $config[$id-1];
+            if ($index) {
+                $config = $config[$index];
+            }
         }
-        return $table;
+        return $config;
     }
 
     public function get($type, $type_id)
     {
-        $table = $this->getTypeName($type);
-        return Dever::db($table, 'place_channel_sales')->find($type_id);
+        $config = $this->getType($type);
+        $info = Dever::db($config['table'], 'place_channel_sales')->find($type_id);
+        $info['type_name'] = $config['name'];
+        return $info;
     }
 
     # 获取信息,带地址解析

+ 44 - 5
src/place/channel/sales/manage/Lib/Info.php

@@ -7,13 +7,52 @@ class Info
     {
         if ($type && $id) {
             $info = Dever::load('info', 'place_channel_sales')->get($type, $id);
-            return $info['name'];
+            return $info['type_name'] . '-' . $info['name'];
         }
         return '平台';
     }
 
-    # 获取列表
+    # 获取select的列表
     public function getList()
+    {
+        $result = [];
+        $type = Dever::load('info', 'place_channel_sales')->getType();
+        if ($type) {
+            foreach ($type as $k => $v) {
+                $where = ['status' => 1];
+                $data = Dever::db($v['table'], 'place_channel_sales')->select($where);
+                if ($data) {
+                    $v['children'] = $data;
+                    $result[] = $v;
+                }
+            }
+        }
+        return $result;
+    }
+
+    # 统一列表展示
+    public function getListInfo()
+    {
+        return [
+            'name' => '渠道信息',
+            'show' => 'Dever::call("place_channel_sales/manage/info.getInfo", [{sales_type}, {sales_id}])',
+            'truncate' => true,
+        ];
+    }
+
+    # 统一获取搜索
+    public function getListSearch()
+    {
+        return [
+            'type' => 'select2',
+            'name' => '渠道',
+            'option' => 'Dever::call("place_channel_sales/manage/info.getSearchList")',
+            'col' => 'sales_type,sales_id',
+        ];
+    }
+
+    # 获取搜索用的列表
+    public function getSearchList()
     {
         $data = [];
         $data[] = ['id' => '0,0', 'name' => '平台'];
@@ -28,7 +67,7 @@ class Info
     public function check($db, $data)
     {
         if (isset($data['mobile']) && $data['mobile'] && $data['id']) {
-            $table = Dever::load('info', 'place_channel_sales')->getTypeName($data['sales_type']);
+            $table = Dever::load('info', 'place_channel_sales')->getType($data['sales_type'], 'table');
             $info = Dever::db($table, 'place_channel_sales')->find($data['id']);
             $data['old_mobile'] = $info['mobile'];
             if ($info['mobile'] == $data['mobile']) {
@@ -41,10 +80,10 @@ class Info
 
     public function createUser($db, $data)
     {
-        $extend = Dever::load('common', 'manage')->extend();
+        $extend = Dever::load('util', 'manage')->extend();
         Dever::load('manage/place', 'place')->update($extend['data_id']);
         
-        $table = Dever::load('info', 'place_channel_sales')->getTypeName($data['sales_type']);
+        $table = Dever::load('info', 'place_channel_sales')->getType($data['sales_type'], 'table');
         if (isset($data['mobile']) && $data['mobile']) {
             # 检测手机号是否被使用
             if ($data['id']) {

+ 1 - 1
src/place/channel/sales/manage/Lib/View.php

@@ -14,7 +14,7 @@ class View
 
     public function get($info)
     {
-        $extend = Dever::load('common', 'manage')->extend();
+        $extend = Dever::load('util', 'manage')->extend();
         $result = Dever::load('info', 'place')->share($extend['data_id'], $info['sales_type'], $info['id'], 0, true);
         $content[] = [
             'type' => 'text',

+ 2 - 2
src/place/channel/sales/manage/offline.php

@@ -15,7 +15,7 @@ $config = [
             'type' => [
                 'width' => '70px',
             ],
-            'user' => Dever::call('place_user/manage/user.getInfo', ['联系人信息', '{truename}', '{mobile}']),
+            'user' => Dever::call('place_user/manage/user.getListInfo', ['联系人信息', '{truename}', '{mobile}']),
             'address' => [
                 'truncate' => true,
                 'name' => '位置',
@@ -55,7 +55,7 @@ $config = [
         # 列表页导出
         'export' => [
             //'out' => '导出',
-            //'manage/common.out' => '自定义导出',
+            //'manage/util.out' => '自定义导出',
         ],
         'search'    => [
             'name' => 'like',

+ 1 - 1
src/place/channel/sales/table/cate.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '销售渠道分类表',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'order' => 'sort asc',
     'struct' => [
         'name' => [

+ 1 - 1
src/place/channel/sales/table/media.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '自媒体',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'order' => 'sort asc',
     'struct' => [
         'name' => [

+ 1 - 1
src/place/channel/sales/table/offline.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '实体店',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'order' => 'sort asc',
     'struct' => [
         'name' => [

+ 1 - 1
src/place/channel/sales/table/online.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '网店',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'order' => 'sort asc',
     'struct' => [
         'name' => [

+ 1 - 1
src/place/channel/sales/table/profit.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '销售渠道收益记录表',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'struct' => [
         'sales_type' => [
             'name'      => '销售类型',

+ 1 - 1
src/place/channel/sales/table/seller.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '经销商',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'order' => 'sort asc',
     'struct' => [
         'name' => [

+ 1 - 0
src/place/interface/api/Cron.php

@@ -7,6 +7,7 @@ class Cron extends Core
     protected $login = false;
     protected $entry = true;
 
+    # 
     public function benefit()
     {
         

+ 3 - 3
src/place/interface/api/Main.php

@@ -95,7 +95,7 @@ class Main extends Core
         $user = $db->find(['mobile' => $mobile]);
         if ($user) {
             $action = '登录';
-            if ($pwd && Dever::load('common', 'manage')->hash($pwd, $user['salt']) != $user['password']) {
+            if ($pwd && Dever::load('util', 'manage')->hash($pwd, $user['salt']) != $user['password']) {
                 Dever::error('登录失败,密码无效');
             }
             # 已注册,登录
@@ -206,7 +206,7 @@ class Main extends Core
         $pwd = Dever::input('pwd', 'is_string', '密码');
         $code = Dever::input('code', 'is_string', '验证码');
         Dever::load('template', 'msg')->check('reg_code', $mobile, $code);
-        $update = Dever::load('manage/common')->createPwd($pwd);
+        $update = Dever::load('manage/util')->createPwd($pwd);
         Dever::db('info', 'place_user')->update(['mobile' => $mobile], $update);
     }
 
@@ -214,7 +214,7 @@ class Main extends Core
     public function sms()
     {
         $mobile = Dever::input('mobile', 'is_numeric', '手机号');
-        $data = Dever::load('template', 'msg')->send('reg_code', ['mobile' => $mobile]);
+        $data = Dever::load('template', 'msg')->send('reg_code', ['mobile' => $mobile], [], 'place');
         return $data;
     }
 

+ 21 - 3
src/place/interface/api/Source.php

@@ -192,6 +192,14 @@ class Source extends Core
             $data['content'] = true;
         }
 
+        # 是否展示工具
+        /*
+        $tool = Dever::db('tool', 'place_source')->find(['info_id' => $source_id]);
+        $data['tool'] = false;
+        if ($tool) {
+            $data['tool'] = true;
+        }*/
+
         # 获取评价
         $data['review'] = Act::load('review', 1, $source_id)->getList(['limit' => 3], 'content,pic,rate,open');
         # 评价总数
@@ -211,19 +219,29 @@ class Source extends Core
         return $data;
     }
 
-    # 资源内容列表
+    # 资源内容
     public function content()
     {
         $source_id = Dever::input('id', 'is_numeric', '资源ID');
         $source = Dever::load('info', 'place_source')->getBaseInfo($source_id);
-        list($data['cate'], $data['cate_id']) = Dever::load('content', 'place_source')->getCate($source_id);
-        $data['content'] = Dever::load('content', 'place_source')->getList($source_id, $data['cate_id']);
+        list($data['top'], $data['cate_id']) = Dever::load('content', 'place_source')->getCate($source_id);
+
+        $data['top'] = array_merge([['id' => 0, 'name' => '全部']], $data['top']);
 
         # 内容页轮播、内容页信息流
         $data['ad'] = Dever::load('ad', 'place_page')->gets([31,32], $source['channel_id'], $source['cate_parent_id']);
         return $data;
     }
 
+    # 获取内容列表
+    public function contentList()
+    {
+        $source_id = Dever::input('id', 'is_numeric', '资源ID');
+        $cate_id = Dever::input('cate_id', 'is_numeric', '分类ID', 0);
+        $data['list'] = Dever::load('content', 'place_source')->getList($source_id, $cate_id);
+        return $data;
+    }
+
     # 资源内容列表详情页
     public function contentInfo()
     {

+ 3 - 2
src/place/interface/api/User.php

@@ -12,6 +12,7 @@ class User extends Core
     public function info()
     {
         $data['user'] = Place::$user;
+        $data['user']['mobile'] = \Dever\Helper\Str::hide(Place::$user['mobile']);
         if ($data['user']['type'] == 2) {
             $data['user']['mobile'] = '临时用户,请先绑定手机号';
         }
@@ -125,14 +126,14 @@ class User extends Core
         $pwd = Dever::input('pwd', 'is_string', '密码');
         $code = Dever::input('code', 'is_string', '验证码');
         Dever::load('template', 'msg')->check('user_code', Place::$user['mobile'], $code);
-        $update = Dever::load('manage/common')->createPwd($pwd);
+        $update = Dever::load('manage/util')->createPwd($pwd);
         Dever::db('info', 'place_user')->update(Place::$uid, $update);
     }
 
     # 发送短信验证码
     public function sms()
     {
-        $data = Dever::load('template', 'msg')->send('user_code', ['mobile' => Place::$user['mobile']]);
+        $data = Dever::load('template', 'msg')->send('user_code', ['mobile' => Place::$user['mobile']], [], 'place');
         return $data;
     }
 

+ 62 - 5
src/place/order/lib/Pay.php

@@ -242,7 +242,7 @@ class Pay
             $this->order['name'] = implode('、', $this->order['name']);
         }
         $this->order['order_num'] = Dever::load('util', 'api')->createNumber($prefix, $table);
-        $this->order['notify'] = $table . '/pay.notify|' . Dever::input('p') . '|' . $this->order['order_num'];
+        $this->order['notify'] = $table . '/pay.notify|' . Place::$sector['id'] . '|'  . Place::$info['id'] . '|' . $this->order['order_num'];
         $this->order['buy_info'] = Dever::input('remark');
 
         $this->check();
@@ -327,12 +327,17 @@ class Pay
                 Dever::db('rebate', 'place_order')->insert($v1);
             }
         }
+
+        # 设置活跃
+        Dever::db('code', 'place')->update(['code' => Place::$info['code']], ['status' => 1]);
     }
 
     # 支付回调
-    public function notify($place, $order_num, $status, $body = [])
+    public function notify($sector_id, $place_id, $order_num, $status, $body = [])
     {
-        Dever::input('authorization', 'is_string', '访问码', $place);
+        //Dever::input('authorization', 'is_string', '访问码', $place);
+        //Dever::input('authorization', 'set', $place);
+        Dever::load('util', 'manage')->setAuth('sector', 'sector_place', $sector_id, $place_id);
         $order = Dever::db($this->type, 'place_order')->find(['order_num' => $order_num]);
         if ($order && $order['status'] == 1) {
             if ($status == 1) {
@@ -369,12 +374,64 @@ class Pay
             foreach ($rebate as $k => $v) {
                 if ($v['level'] == 0) {
                     # 给自己返利
-                    Dever::load('log', 'place_score')->action('返利', $v['score_id'])->add($order['uid'], $v['name'], $v['value'], $status, 'source_order_' . $order['id']);
+                    Dever::load('log', 'place_score')->action('返利', $v['score_id'])->add($order['uid'], $v['name'], $v['value'], $status, $this->type . '_order_' . $order['id']);
                 } else {
                     # 给上级返利
                     $parent = Dever::load('relation', 'invite')->getParent($order['uid'], $v['level']);
                     if ($parent) {
-                        Dever::load('log', 'place_score')->action('返利', $v['score_id'])->add($parent['uid'], $v['name'], $v['value'], $status, 'source_order_' . $order['id']);
+                        Dever::load('log', 'place_score')->action('返利', $v['score_id'])->add($parent['uid'], $v['name'], $v['value'], $status, $this->type . '_order_' . $order['id']);
+                    }
+                }
+            }
+        }
+    }
+
+    public function sales($order, $type = 'source')
+    {
+        # 发放销售渠道收益
+        if ($order['sales_type'] && $order['sales_id']) {
+            $sales = Dever::load('info', 'place_channel_sales')->get($order['sales_type'], $order['sales_id']);
+            if ($sales && $sales['uid']) {
+                $benefit = Dever::db('sales', 'place_benefit')->find(['sales_cate_id' => $sales['cate_id'], 'status' => 1]);
+                if ($benefit && $benefit['score_id']) {
+                    if ($order['method'] == 1) {
+                        # 平台发货
+                        $table = 'sales_rebate_platform';
+                    } else {
+                        # 店铺发货
+                        $table = 'sales_rebate';
+                    }
+                    $rebate = Dever::db($table, 'place_benefit')->select(['sales_id' => $benefit['id']]);
+                    if ($rebate) {
+                        $detail = Dever::db($type . '_detail', 'place_order')->select(['order_id' => $order['id']]);
+                        $score = Dever::load('info', 'place_score')->get($order['score_id']);
+                        foreach ($rebate as $k => $v) {
+                            # 先检测购买人等级
+                            if ($v['role']) {
+                                $t = explode(',', $v['role']);
+                                $check = Dever::load('user', 'place_role')->check($order['uid'], $t[0], $t[1]);
+                                if (!$check) {
+                                    unset($rebate[$k]);
+                                    continue;
+                                }
+                            }
+                        }
+                        $value = 0;
+                        foreach ($detail as $k => $v) {
+                            if ($v['pay_cash'] > 0) {
+                                if (isset($v['refund_cash']) && $v['refund_cash'] > 0) {
+                                    $v['pay_cash'] -= $v['refund_cash'];
+                                }
+                                if ($v['pay_cash'] > 0) {
+                                    $money = Dever::math('mul', $v['pay_cash'], $score['exp']);
+                                    $value += Dever::load('item', 'place_benefit')->load('sales')->rebate($order['uid'], $v['scope'], $v['promotion_id'], $rebate, $money);
+                                }
+                            }
+                        }
+                        if ($value > 0) {
+                            # 给关联用户发收益
+                            Dever::load('log', 'place_score')->action('店铺收益', $benefit['score_id'])->add($sales['uid'], $sales['name'] . '订单:' . $order['order_num'], $value, 1, $type . '_order_' . $order['id'], $order['sales_type'], $order['sales_id']);
+                        }
                     }
                 }
             }

+ 124 - 0
src/place/order/lib/Role/Order.php

@@ -0,0 +1,124 @@
+<?php namespace Place_order\Lib\Role;
+use Dever;
+class Order
+{
+    # 获取订单列表
+    public function getList($uid, $status = 0, $sales_type = 0, $sales_id = 0)
+    {
+        if ($sales_type && $sales_id) {
+            $where['sales_type'] = $sales_type;
+            $where['sales_id'] = $sales_id;
+        } else {
+            $where['uid'] = $uid;
+        }
+        if ($status > 0) {
+            if ($status == 1) {
+                # 待付款
+                $where['status'] = 1;
+            } elseif ($status == 2) {
+                # 已完成
+                $where['status'] = 2;
+            } elseif ($status == 3) {
+                # 已取消
+                $where['status'] = 3;
+            }
+        }
+        $set['num'] = 10;
+        $set['col'] = 'id,status,order_num,cdate,score_id,num,cash';
+        $data = Dever::db('role', 'place_order')->select($where, $set);
+        if ($data) {
+            foreach ($data as &$v) {
+                $v = $this->getInfo($v);
+            }
+        }
+        return $data;
+    }
+
+    # 获取订单信息
+    public function getInfo($info, $view = false)
+    {
+        if ($info['status'] == 1) {
+            $m = 3600;
+            # 支付倒计时
+            $info['time'] = time() - $info['cdate'];
+            if ($info['time'] >= $m) {
+                # 已过期,自动取消
+                $info['time'] = -1;
+                $this->cancel($info);
+                $info['status'] = 3;
+            } else {
+                $info['time'] = $m - $info['time'];
+            }
+            $info['time'] = $info['time'] * 1000;
+        }
+        $info['score'] = Dever::load('info', 'place_score')->get($info['score_id']);
+        $info['detail'] = $this->getDetail($info);
+        $info['info'] = '共' . intval($info['num']) . '件';
+        $info = $this->getView($info, $view);
+        return $info;
+    }
+
+    # 获取订单里每个资源
+    public function getDetail($info)
+    {
+        $result = Dever::db('role_detail', 'place_order')->select(['order_id' => $info['id']], ['col' => 'id,cash,status,name,num,role_id,level_id']);
+        if ($result) {
+            foreach ($result as &$v) {
+                $v['cash_text'] = Dever::load('info', 'place_score')->getText($v['cash'], $info['score']);
+                $v['status_name'] = Dever::db('role_detail', 'place_order')->value('status', $v['status']);
+            }
+        }
+        return $result;
+    }
+
+    # 获取订单详情
+    public function getView($info, $view = true)
+    {
+        if (empty($info['score'])) {
+            $info['score'] = Dever::load('info', 'place_score')->get($info['score_id']);
+        }
+        $info['status_name'] = Dever::db('role', 'place_order')->value('status', $info['status']);
+        $info['cash_text'] = Dever::load('info', 'place_score')->getText($info['cash'], $info['score']);
+
+        if (!$view) {
+            return $info;
+        }
+        $this->getViewDate($info);
+        list(
+            $info['pay_cash_text'], 
+            $info['wallet_cash_text'], 
+            $info['coupon_cash_text'],
+            $info['gift_cash_text'],
+        ) = Dever::load('info', 'place_score')->getText(
+            [
+                $info['pay_cash'], 
+                $info['wallet_cash'], 
+                $info['coupon_cash'],
+                $info['gift_cash'],
+            ], $info['score']);
+
+        $info['user'] = Dever::db('info', 'place_user')->find($info['uid'], ['col' => 'id,name,mobile,avatar']);
+        $info['money'] = Dever::load('info', 'place')->money();
+        $info['pay_money_cash_text'] = $info['pay_money_cash'] . $info['money']['unit'];
+        return $info;
+    }
+
+    # 获取订单详情时间
+    public function getViewDate(&$info)
+    {
+        $info['cdate_str'] = $info['pdate_str'] = '-';
+        $info['cdate_str'] = date('Y-m-d H:i:s', $info['cdate']);
+        if (isset($info['pdate']) && $info['pdate']) {
+            $info['pdate_str'] = date('Y-m-d H:i:s', $info['pdate']);
+        }
+    }
+
+    # 取消订单
+    public function cancel($order, $status = 3)
+    {
+        if ($order['status'] == 1) {
+            $state = Dever::db('info', 'place_order')->update($order['id'], ['status' => $status]);
+            return 'ok';
+        }
+    }
+}

+ 4 - 1
src/place/order/lib/Role/Pay.php

@@ -20,6 +20,7 @@ class Pay extends Core
         $detail = Dever::load('price', 'place_role')->get($detail, $this->set, $info['num']);
 
         $this->detail[] = [
+            'uid' => Place::$uid,
             'pic' => Place::$info['logo'],
             'role_id' => $detail['info_id'],
             'level_id' => $detail['id'],
@@ -67,8 +68,10 @@ class Pay extends Core
             $detail = Dever::db('role_detail', 'place_order')->select(['order_id' => $order['id']], ['order' => 'level asc']);
             if ($detail) {
                 foreach ($detail as $v) {
-                    Dever::load('user', 'place_role')->up($order['uid'], $v['role_id'], $v['level_id'], $order['sales_type'], $order['sales_id']);
+                    Dever::load('user', 'place_role')->up($order['uid'], $v['role_id'], $v['level_id'], $order['sales_type'], $order['sales_id'], 1, $order['id'], '订单号:' . $order['order_num']);
                 }
+
+                $this->sales($order, $this->type);
             }
         }
     }

+ 28 - 8
src/place/order/lib/Source/Delivery.php

@@ -2,10 +2,22 @@
 use Dever;
 class Delivery
 {
-    # 自动发货
-    public function up($order_id, $detail_id, $delivery_id, $content, $utype, $uid)
+    # 发货
+    public function up($order_id, $detail, $delivery, $content, $utype, $uid)
     {
-        $detail = Dever::db('source_detail', 'place_order')->find($detail_id);
+        if (is_numeric($detail)) {
+            $detail = Dever::db('source_detail', 'place_order')->find($detail);
+        }
+
+        if (is_numeric($delivery)) {
+            $delivery = Dever::db('delivery', 'sector')->find($delivery);
+        } elseif (is_string($delivery)) {
+            $delivery = Dever::db('delivery', 'sector')->find(['name' => $delivery]);
+        }
+        if (!$delivery) {
+            return;
+        }
+        
         if ($detail['order_id'] != $order_id) {
             Dever::error('订单信息错误');
         }
@@ -20,19 +32,27 @@ class Delivery
             # 虚拟
             $table = 'source_delivery_virtual';
         }
-        $state = Dever::db($table, 'place_order')->insert(['order_id' => $order_id, 'detail_id' => $detail_id, 'delivery_id' => $delivery_id, 'content' => $content]);
+        $data = ['order_id' => $order_id, 'detail_id' => $detail['id']];
+        $info = Dever::db($table, 'place_order')->find($data);
+        if ($info) {
+            $state = Dever::db($table, 'place_order')->update($info['id'], $data);
+        } else {
+            $data['delivery_id'] = $delivery['id'];
+            $data['content'] = $content;
+            $state = Dever::db($table, 'place_order')->insert($data);
+        }
+        
         if ($state) {
-            $delivery_info = Dever::db('delivery', 'sector')->find($delivery_id);
             if (!$content) {
                 $content = '无单号';
             }
-            Dever::db('source_detail', 'place_order')->update(['id' => $detail_id], ['status' => 2, 'ddate' => time()]);
+            Dever::db('source_detail', 'place_order')->update(['id' => $detail['id']], ['status' => 2, 'ddate' => time()]);
             $state = Dever::db('source_detail', 'place_order')->find(['order_id' => $order_id, 'status' => 1]);
             if (!$state) {
                 Dever::db('source', 'place_order')->update($order_id, ['status' => 3, 'ddate' => time()]);
             }
-            $delivery = $delivery_info['name'] . ',' . $content;
-            $msg = '已发货:' . $delivery;
+            $info = $delivery['name'] . ',' . $content;
+            $msg = '已发货:' . $info;
             Dever::load('source/log', 'place_order')->up($utype, $uid, $order_id, $msg, false);
         }
     }

+ 1 - 52
src/place/order/lib/Source/Order.php

@@ -309,58 +309,7 @@ class Order
                 }
 
                 # 发放销售渠道收益
-                $this->sales($order);
-            }
-        }
-    }
-
-    private function sales($order)
-    {
-        # 发放销售渠道收益
-        if ($order['sales_type'] && $order['sales_id']) {
-            # 如果是平台发货,销售渠道将获取收益
-            $sales = Dever::load('info', 'place_channel_sales')->get($order['sales_type'], $order['sales_id']);
-            if ($sales && $sales['uid']) {
-                $benefit = Dever::db('sales', 'place_benefit')->find(['sales_cate_id' => $sales['cate_id'], 'status' => 1]);
-                if ($benefit && $benefit['score_id']) {
-                    if ($order['method'] == 1) {
-                        # 平台发货
-                        $table = 'sales_rebate_platform';
-                    } else {
-                        # 店铺发货
-                        $table = 'sales_rebate';
-                    }
-                    $rebate = Dever::db($table, 'place_benefit')->select(['sales_id' => $benefit['id']]);
-                    if ($rebate) {
-                        $detail = Dever::db('source_detail', 'place_order')->select(['order_id' => $order['id']]);
-                        $score = Dever::load('info', 'place_score')->get($order['score_id']);
-                        foreach ($rebate as $k => $v) {
-                            # 先检测购买人等级
-                            if ($v['role']) {
-                                $t = explode(',', $v['role']);
-                                $check = Dever::load('user', 'place_role')->check($order['uid'], $t[0], $t[1]);
-                                if (!$check) {
-                                    unset($rebate[$k]);
-                                    continue;
-                                }
-                            }
-                        }
-                        $value = 0;
-                        foreach ($detail as $k => $v) {
-                            if ($v['pay_cash'] > 0) {
-                                $v['pay_cash'] -= $v['refund_cash'];
-                                if ($v['pay_cash'] > 0) {
-                                    $money = Dever::math('mul', $v['pay_cash'], $score['exp']);
-                                    $value += Dever::load('item', 'place_benefit')->load('sales')->rebate($order['uid'], $v['scope'], $v['promotion_id'], $rebate, $money);
-                                }
-                            }
-                        }
-                        if ($value > 0) {
-                            # 给关联用户发收益
-                            Dever::load('log', 'place_score')->action('店铺收益', $benefit['score_id'])->add($sales['uid'], $sales['name'] . '订单:' . $order['order_num'], $value, 1, 'source_order_' . $order['id'], $order['sales_type'], $order['sales_id']);
-                        }
-                    }
-                }
+                Dever::load('pay', 'place_order')->sales($order, 'source');
             }
         }
     }

+ 17 - 6
src/place/order/lib/Source/Pay.php

@@ -1,5 +1,6 @@
 <?php namespace Place_order\Lib\Source;
 use Dever;
+use Place;
 use Place_order\Lib\Pay as Core;
 class Pay extends Core
 {
@@ -30,6 +31,7 @@ class Pay extends Core
         }
 
         $this->detail[] = [
+            'uid' => Place::$uid,
             'source_id' => $source['id'],
             'source_type' => $source['type'],
             'sku_id' => $detail['id'],
@@ -117,12 +119,21 @@ class Pay extends Core
         if ($order['pay_cash'] > 0) {
             Dever::load('source/log', 'place_order')->up(1, $order['uid'], $order['id'], $msg);
         }
-        if ($state && $update['status'] == 7) {
-            # 恢复库存
-            Dever::load('info', 'place_stock')->refundAll($order);
-        } elseif ($state && $update['status'] == 2) {
-            # 自动发货
-            //Dever::load('source/order', 'place_order')->finish(1, $order, true);
+        if ($state) {
+            if ($update['status'] == 7) {
+                # 恢复库存
+                Dever::load('info', 'place_stock')->refundAll($order);
+            } elseif ($order['status'] == 2) {
+                # 自动发货
+                $num = Dever::db('source_detail', 'place_order')->count(['order_id' => $order['id'], 'source_type' => 10]);
+                if ($num) {
+                    $total = Dever::db('source_detail', 'place_order')->count(['order_id' => $order['id']]);
+                    if ($total == $num) {
+                        # 不发货,订单直接完成即可
+                        Dever::load('source/order', 'place_order')->finish(1, $order, true);
+                    }
+                }
+            }
         }
     }
 }

+ 0 - 87
src/place/order/lib/Source/User.php

@@ -1,87 +0,0 @@
-<?php namespace Place_order\Lib\Source;
-use Dever;
-class User
-{
-    public function up_commit(){}
-    public function up($uid, $source_id, $sku_id, $type, $amount)
-    {
-        if ($amount <= 0) {
-            return true;
-        }
-        $data['uid'] = $uid;
-        $data['source_id'] = $source_id;
-        $data['sku_id'] = $sku_id;
-        $data['type'] = $type;
-        $data['amount'] = $amount;
-
-        $state = Dever::db('user_source_log', 'place_order')->insert($data);
-        if ($state) {
-            $this->sync($uid, $source_id, $sku_id);
-        }
-        return $state;
-    }
-
-    # 扣减使用次数
-    public function use($uid, $source_id, $sku_id, $amount = 1)
-    {
-        $this->check($uid, $source_id, $sku_id, $amoun);
-        return $this->up($uid, $source_id, $sku_id, 2, $amount);
-    }
-
-    # 检测余额
-    public function check($uid, $source_id, $sku_id, $amount)
-    {
-        if ($amount <= 0) {
-            Dever::error('数量不正确');
-        }
-        $info = $this->get($uid, $source_id, $sku_id);
-        if (!$info) {
-            Dever::error('余额不足');
-        }
-        $yue = $info['unum_balance'];
-        if ($yue < $amount) {
-            Dever::error('余额不足');
-        }
-    }
-
-    # 获取余额
-    public function get($uid, $source_id, $sku_id)
-    {
-        $data['uid'] = $uid;
-        $data['source_id'] = $source_id;
-        $data['sku_id'] = $sku_id;
-        $info = Dever::db('user_source', 'place_order')->find($data);
-        return $info;
-    }
-
-    # 更新余额
-    public function sync($uid, $source_id, $sku_id)
-    {
-        $where = [
-            'uid' => $uid,
-            'source_id' => $source_id,
-            'sku_id' => $sku_id,
-            'type' => 1,
-        ];
-        $data['unum_total'] = Dever::db('user_source_log', 'place_order')->sum($where, 'amount');
-        $where['type'] = 2;
-        $data['unum_used'] = Dever::db('user_source_log', 'place_order')->sum($where, 'amount');
-        $data['unum_balance'] = $data['unum_total'] - $data['unum_used'];
-        return Dever::db('user_source', 'place_order')->update(['uid' => $uid, 'source_id' => $source_id, 'sku_id' => $sku_id], $data);
-
-        /*
-        $data['uid'] = $uid;
-        $data['source_id'] = $source_id;
-        $data['sku_id'] = $sku_id;
-        $info = Dever::db('user_source', 'place_order')->find($data);
-        if (!$info) {
-            $data['unum_total'] = $amount;
-            $data['unum_balance'] = ['unum_total', '-', 'unum_used'];
-            $state = Dever::db('user_source', 'place_order')->insert($data);
-        } else {
-            $data['unum_total'] = ['+', $amount];
-            $data['unum_balance'] = ['unum_total', '-', 'unum_used'];
-            $state = Dever::db('user_source', 'place_order')->update($info['id'], $data);
-        }*/
-    }
-}

+ 10 - 0
src/place/order/manage/Lib/Api.php

@@ -0,0 +1,10 @@
+<?php namespace Place_order\Manage\Lib;
+use Dever;
+class Api
+{
+    # 获取资源订单导入模板
+    public function getSourceExcel()
+    {
+        return Dever::load('manage/excel', 'place_order')->getTemplate(true);
+    }
+}

+ 92 - 0
src/place/order/manage/Lib/Excel.php

@@ -0,0 +1,92 @@
+<?php namespace Place_order\Manage\Lib;
+use Dever;
+use Dever\Helper\Secure;
+class Excel
+{
+    # 导出资源订单
+    public function outSource($data)
+    {
+        $result = $this->getTemplate();
+        foreach ($data['body'] as $k => $v) {
+            $detail = Dever::db('source_detail', 'place_order')->select(['order_id' => $v['id']]);
+            if ($detail) {
+                if ($v['address_id']) {
+                    $address = Dever::load('address', 'place_user')->getInfo($v['address_id'], $v['uid']);
+                    $v['address'] = $address['full'];
+                } else {
+                    $user = Dever::db('info', 'place_user')->find($v['uid']);
+                    $v['address'] = $user['name'] . ',' . $user['mobile'];
+                }
+                $s = [0, $v['order_num'], $v['address']];
+                foreach ($detail as $v1) {
+                    $s[0] = Secure::encode($v1['id']);
+                    $s[] = $v1['name'] . '-' . $v1['sku_name'];
+                    $s[] = $v1['num'];
+                    $result['body'][] = $s;
+                }
+            }
+        }
+        $result['file'] = '111';
+        return $result;
+    }
+
+    # 导出一个模板出来
+    public function getTemplate($out = false, $import = false)
+    {
+        $result = [];
+        if ($import) {
+            # 导入时的字段,一定要和下面的else里的对应
+            $result['head'][0] = ['detail_code', 'order_num', 'address', 'sku', 'num', 'delivery_name', 'delivery_content'];
+        } else {
+            # 这是导入时的模板
+            $delivery = Dever::db('delivery', 'sector')->columns(['type' => 1], 'name');
+            $result['head'][0] = ['标识码', '订单号', '收货人', '规格', '数量', ['快递公司', $delivery], '快递单号'];
+        }
+        $result['body'] = [];
+        if ($out) {
+            return Dever::load('export', 'excel')->act($result['body'], $result['head'], '发货单导入模板');
+        }
+        return $result;
+    }
+
+    # 导入
+    public function import_commit(){}
+    public function import($db, $data)
+    {
+        if (empty($data['import'])) {
+            Dever::error('请选择导入文件');
+        }
+        $file = $data['import'];
+        # 当前登录的管理员id
+        $muid = Dever::$data['muser']['id'];
+        $mname = Dever::$data['muser']['name'];
+        $mdesc = $mname . '在' . date('Y-m-d H:i:s') . '导入';
+
+        $type = array_flip(Dever::db('info', 'place_source')->config['struct']['type']['value']);
+
+        $result = $this->getTemplate(false, true);
+
+        $file = Dever::load('view', 'upload')->local($file);
+        $import = Dever::load('import', 'excel');
+        $i = 0;
+        foreach ($import->act($file, 0, 1, $result['head'][0]) as $row) {
+            $code = Secure::decode($row['detail_code']);
+            $detail = Dever::db('source_detail', 'place_order')->find(['id' => $code]);
+            if (!$detail) {
+                continue;
+            }
+            $order = Dever::db('source', 'place_order')->find(['id' => $detail['order_id']]);
+            if (!$order) {
+                continue;
+            }
+            if ($order['order_num'] != $row['order_num']) {
+                continue;
+            }
+
+            Dever::load('source/delivery', 'place_order')->up($order['id'], $detail, $row['delivery_name'], $row['delivery_content'], 2, $muid);
+            
+        }
+
+        return 'end';
+    }
+}

+ 73 - 0
src/place/order/manage/Lib/Role/Info.php

@@ -0,0 +1,73 @@
+<?php namespace Place_order\Manage\Lib\Role;
+use Dever;
+class Info
+{
+    # 获取身份等级
+    public function getRoleOption()
+    {
+        $info = Dever::db('info', 'place_role')->select(['status' => 1]);
+        return $info;
+    }
+
+    # 根据身份等级获取订单信息
+    public function getSearch($info)
+    {
+        if ($info) {
+            if (isset($info[1])) {
+                $where = ['level_id' => $info[1]];
+            } else {
+                $where = ['role_id' => $info[0]];
+            }
+            $info = Dever::db('role_detail', 'place_order')->sql($where, ['col' => 'order_id']);
+        }
+
+        if (!$info) {
+            $info = 'error';
+        }
+        return ['id', 'in', $info];
+    }
+
+    # 查看订单的扩展信息
+    public function getExpand($data)
+    {
+        $parent = '-';
+        if ($data['parent_uid'] && $data['parent_uid'] > 0) {
+            $parent = Dever::load('manage/user', 'place_user')->getInfo($data['parent_uid']);
+        }
+        $score = Dever::load('info', 'place_score')->get($data['score_id']);
+        $data['money'] = Dever::load('info', 'place')->money();
+        $data['pay_money_cash_text'] = $data['pay_money_cash'] . $data['money']['unit'];
+        $result['type'] = 'list';
+        $result['content'] = array
+        (
+            ['name'=>'上级信息', 'content' => $parent],
+            ['name'=>'优惠券抵扣', 'content' => Dever::load('info', 'place_score')->getText($data['coupon_cash'], $score)],
+            ['name'=>'礼品卡抵扣', 'content' => Dever::load('info', 'place_score')->getText($data['gift_cash'], $score)],
+            ['name'=>$score['name'] . '抵扣', 'content' => Dever::load('info', 'place_score')->getText($data['wallet_cash'], $score)],
+            ['name'=>'支付金额', 'content' => Dever::load('info', 'place_score')->getText($data['pay_cash'], $score) . '['.$data['pay_money_cash_text'].']'],
+            ['name'=>'支付时间', 'content' => $data['pdate'] ? date('Y-m-d H:i:s', $data['pdate']) : '-'],
+        );
+        return $result;
+    }
+
+    public function getDetail($order_id, $score_id)
+    {
+        $detail = Dever::db('role_detail', 'place_order')->select(['order_id' => $order_id]);
+        $result = [];
+        if ($detail) {
+            $tip['type'] = 'line';
+            $score = Dever::load('info', 'place_score')->get($score_id);
+            foreach ($detail as $v) {
+                $tip['content'] = [
+                    ['name' => '名称', 'content' => $v['name']],
+                    ['name' => '单价', 'content' => Dever::load('info', 'place_score')->getText($v['cash'], $score)],
+                    ['name' => '数量', 'content' => $v['num']],
+                ];
+                $data['name'] = $v['name'];
+                $data['content'] = $tip;
+                $result[] = $data;
+            }
+        }
+        return $result;
+    }
+}

+ 329 - 0
src/place/order/manage/Lib/Role/View.php

@@ -0,0 +1,329 @@
+<?php namespace Place_order\Manage\Lib\Role;
+use Dever;
+class View
+{
+    private $info;
+    private $user;
+
+    # 后台详情页
+    public function get($info)
+    {
+        $info['detail'] = Dever::db('role_detail', 'place_order')->select(['order_id' => $info['id']]);
+        $this->info = Dever::load('role/order', 'place_order')->getView($info);
+        $tab = $this->getTab();
+        return ['title' => '订单详情', 'info' => $this->getInfo(), 'tab' => $tab];
+    }
+
+    # 获取基本信息
+    private function getInfo()
+    {
+        $info[] = [
+            # 类型,info介绍 desc描述 table表格,表格有head和body即可
+            'type' => 'info',
+            'name' => '身份订单',
+            'info' => '订单号:' . $this->info['order_num'],
+            # 具体内容
+            'content' => [
+                ['name' => '订单状态', 'content' => $this->info['status_name']],
+                ['name' => '总金额', 'content' => $this->info['cash_text']],
+                ['name' => '总数量', 'content' => $this->info['num']],
+                ['name' => '下单时间', 'content' => $this->info['cdate_str']],
+            ],
+        ];
+        return $info;
+    }
+
+    # 获取切换列表
+    private function getTab()
+    {
+        $tab['active'] = 'view';
+        $tab['content']['view'] = $this->getView();
+        $tab['content']['list'] = $this->getList();
+
+        # 返利信息
+        $rebate = Dever::db('rebate', 'place_order')->select(['table' => 'role', 'table_id' => $this->info['id']]);
+        if ($rebate) {
+            $tab['content']['rebate'] = $this->getRebate($rebate);
+        }
+        $tab['content']['log'] = $this->getLog();
+        return $tab;
+    }
+
+    # 获取详情
+    private function getView()
+    {
+        $content = [];
+        $sales = Dever::load('manage/info', 'place_channel_sales')->getInfo($this->info['sales_type'], $this->info['sales_id']);
+        $content[] = [
+            'type' => 'list',
+            'name' => '用户信息',
+            'content' => [
+                [
+                    'name' => '用户名称',
+                    'content' => $this->info['user']['name'],
+                ],
+                [
+                    'name' => '用户账户',
+                    'content' => $this->info['user']['mobile'],
+                ],
+                [
+                    'name' => '渠道信息',
+                    'content' => $sales,
+                ],
+            ],
+        ];
+
+        $coupon_tip = '';
+        if ($this->info['user_coupon_id'] > 0) {
+            $user_coupon = Dever::db('coupon', 'place_user')->find($this->info['user_coupon_id']);
+            $coupon = Dever::db('coupon', 'place_benefit')->find($this->info['coupon_id']);
+            $coupon_tip = $coupon['name'];
+            if ($coupon['type'] == 3) {
+                $user_coupon['value'] = floor($user_coupon['value']) . '折';
+                $coupon_tip .= ',折扣:' . $user_coupon['value'] . ',抵扣:' . $this->info['coupon_cash_text'];
+            } elseif ($coupon['type'] == 4) {
+                $user_coupon['value'] = floor($user_coupon['value']) . '个';
+                $this->info['coupon_value'] = floor($this->info['coupon_value']) . '个';
+                $coupon_tip .= ',总数:' . $user_coupon['value'] . ',本次使用:'.$this->info['coupon_value'].',抵扣:' . $this->info['coupon_cash_text'];
+            } else {
+                $user_coupon['value'] = Dever::load('info', 'place_score')->toScore($user_coupon['value'], $this->info['score']['exp']);
+                $user_coupon['value'] = Dever::load('info', 'place_score')->getText($user_coupon['value'], $this->info['score']);
+                $coupon_tip .= ',总面值:' . $user_coupon['value'] . ',本次使用:' . $this->info['coupon_cash_text'];
+            }
+        }
+
+        $gift_tip = '';
+        if ($this->info['user_gift_id'] > 0) {
+            $user_gift = Dever::db('gift', 'place_user')->find($this->info['user_gift_id']);
+            $gift = Dever::db('gift', 'place_benefit')->find($this->info['gift_id']);
+            $gift_tip = $gift['name'];
+            $user_gift['value'] = Dever::load('info', 'place_score')->toScore($user_gift['value'], $this->info['score']['exp']);
+            $user_gift['value'] = Dever::load('info', 'place_score')->getText($user_gift['value'], $this->info['score']);
+            $gift_tip .= ',总面值:' . $user_gift['value'] . ',本次使用:' . $this->info['gift_cash_text'];
+        }
+        $content[] = [
+            'type' => 'list',
+            'name' => '金额信息',
+            'content' => [
+                [
+                    'name' => '总金额',
+                    'content' => $this->info['cash_text'],
+                ],
+                [
+                    'name' => '优惠券抵扣',
+                    'content' => $this->info['coupon_cash_text'],
+                    'tip' => $coupon_tip,
+                ],
+                [
+                    'name' => '礼品卡抵扣',
+                    'content' => $this->info['gift_cash_text'],
+                    'tip' => $gift_tip,
+                ],
+                [
+                    'name' => $this->info['score']['name'] . '抵扣',
+                    'content' => $this->info['wallet_cash_text'],
+                ],
+                [
+                    'name' => '支付金额',
+                    'content' => $this->info['pay_cash_text'] . '['.$this->info['pay_money_cash_text'].']',
+                ],
+            ],
+        ];
+
+        return [
+            'type' => 'mul',
+            'name' => '详情',
+            'content' => $content
+        ];
+    }
+
+    # 获取清单
+    private function getList()
+    {
+        if ($this->info['detail']) {
+            foreach ($this->info['detail'] as &$v) {
+                $v['status'] = Dever::db('role_detail', 'place_order')->value('status', $v['status']);
+                $v['cash'] = $this->getListCash($v);
+            }
+        }
+        return [
+            'name' => '清单',
+            'type' => 'table',
+            'border' => true,
+            # 这里配置和列表list一模一样
+            'head' => [
+                [
+                    'key' => 'name',
+                    'name' => '身份等级',
+                ],
+                [
+                    'key' => 'cash',
+                    'name' => '单价',
+                    'type' => 'popover',
+                    'location' => 'right',
+                    //'tag' => true,
+                ],
+                [
+                    'key' => 'num',
+                    'name' => '数量',
+                ],
+                [
+                    'key' => 'status',
+                    'name' => '状态',
+                ],
+            ],
+            'button' => [],
+            'body' => $this->info['detail'],
+        ];
+    }
+
+    private function getListCash($detail)
+    {
+        $data['name'] = Dever::load('info', 'place_score')->getText($detail['cash'], $this->info['score']);
+        $promotion = Dever::db('promotion', 'place_order')->select(['table' => 'role_detail', 'table_id' => $detail['id']]);
+        if ($promotion) {
+            $data['content'] = [];
+            $data['content']['type'] = 'line';
+            $data['content']['content'] = [];
+            foreach ($promotion as $k => $v) {
+                if ($k == 0) {
+                    $v['m_price'] = Dever::load('info', 'place_score')->getText($v['m_price'], $this->info['score']);
+                    $data['content']['content'][] = ['name' => '原价', 'content' => $v['m_price']];
+                }
+                $v['price'] = Dever::load('info', 'place_score')->getText($v['price'], $this->info['score']);
+                $v['price'] = $v['price'] . '('.$v['value'].'折)';
+                $data['content']['content'][] = ['name' => $v['name'], 'content' => $v['price']];
+            }
+
+            # 金额信息
+            list($detail['total_cash'], $detail['pay_cash'], $detail['wallet_cash'], $detail['coupon_cash'], $detail['gift_cash']) = Dever::load('info', 'place_score')->getText([$detail['total_cash'], $detail['pay_cash'], $detail['wallet_cash'], $detail['coupon_cash'], $detail['gift_cash']], $this->info['score']);
+            $data['content']['content'][] = ['name' => '总金额', 'content' => $detail['total_cash']];
+            $data['content']['content'][] = ['name' => '优惠券抵扣', 'content' => $detail['coupon_cash']];
+            $data['content']['content'][] = ['name' => '礼品卡抵扣', 'content' => $detail['gift_cash']];
+            $data['content']['content'][] = ['name' => $this->info['score']['name'] . '抵扣', 'content' => $detail['wallet_cash']];
+            $data['content']['content'][] = ['name' => '支付金额', 'content' => $detail['pay_cash']];
+
+            # 返利信息
+            $rebate = Dever::db('rebate', 'place_order')->select(['table' => 'role_detail', 'table_id' => $detail['id']]);
+            if ($rebate) {
+                foreach ($rebate as $v) {
+                    if ($v['level'] == 0) {
+                        $data['content']['content'][] = ['name' => '购买返利', 'content' => $v['value_text']];
+                    } else {
+                        $data['content']['content'][] = ['name' => '返利' . $v['level'] . '层', 'content' => $v['value_text']];
+                    }
+                }
+            }
+        }
+        $result = [0 => $data];
+        return $result;
+    }
+
+    # 获取返利信息
+    private function getRebate($rebate)
+    {
+        foreach ($rebate as &$v) {
+            //$v['status'] = $this->getRefundStatus($v);
+            $score = Dever::load('info', 'place_score')->get($v['score_id']);
+            $v['score_name'] = $score['name'];
+            $v['username'] = '无';
+            if ($v['level'] == 0) {
+                $user = Dever::db('info', 'place_user')->find($this->info['uid']);
+                $v['username'] = $user['name'];
+            } else {
+                $parent = Dever::load('relation', 'invite')->getParent($this->info['uid'], $v['level']);
+                if ($parent) {
+                    $user = Dever::db('info', 'place_user')->find($parent['uid']);
+                    if ($user) {
+                        $v['username'] = $user['name'];
+                    }
+                }
+            }
+            $v['status_name'] = '未入账';
+            if ($this->info['status'] == 5 || $this->info['status'] == 6) {
+                $v['status_name'] = '已入账';
+            }
+        }
+        return [
+            'name' => '返利',
+            'type' => 'table',
+            'border' => true,
+            #'height' => '200',
+            'head' => [
+                [
+                    'key' => 'name',
+                    'name' => '名称',
+                    'fixed' => 'fixed',
+                ],
+                [
+                    'key' => 'score_name',
+                    'name' => '奖励积分',
+                    'fixed' => 'fixed',
+                ],
+                [
+                    'key' => 'level',
+                    'name' => '奖励层级',
+                    'fixed' => 'fixed',
+                ],
+                [
+                    'key' => 'value_text',
+                    'name' => '奖励金额',
+                    'fixed' => 'fixed',
+                ],
+                [
+                    'key' => 'username',
+                    'name' => '奖励领取人',
+                    'fixed' => 'fixed',
+                ],
+                [
+                    'key' => 'status_name',
+                    'name' => '入账状态',
+                    'fixed' => 'fixed',
+                ],
+            ],
+            'button' => [],
+            'body' => $rebate,
+        ];
+    }
+
+    # 获取操作日志
+    private function getLog()
+    {
+        return [
+            'name' => '记录',
+            'type' => 'table',
+            'border' => true,
+            #'height' => '200',
+            'head' => [
+                [
+                    'key' => 'utype',
+                    'name' => '类型',
+                    'fixed' => 'fixed',
+                    //'width' => '80px',
+                ],
+                [
+                    'key' => 'name',
+                    'name' => '名称',
+                    'fixed' => 'fixed',
+                ],
+                [
+                    'key' => 'mobile',
+                    'name' => '电话',
+                    'fixed' => 'fixed',
+                ],
+                [
+                    'key' => 'desc',
+                    'name' => '详情',
+                    'fixed' => 'fixed',
+                ],
+                [
+                    'key' => 'cdate_str',
+                    'name' => '时间',
+                    'fixed' => 'fixed',
+                ],
+            ],
+            'button' => [],
+            'body' => Dever::load('role/log', 'place_order')->getList($this->info['id'])
+        ];
+    }
+}

+ 26 - 2
src/place/order/manage/Lib/Source/Info.php

@@ -24,6 +24,28 @@ class Info
             'where' => $where,
         ];
 
+        $where['status'] = ['in', '3,4'];
+        $count = Dever::db('source', 'place_order')->count($where);
+        $result[] = [
+            'name' => '待收货('.$count.')',
+            'where' => $where,
+        ];
+
+        $where['status'] = ['in', '5,6'];
+        $count = Dever::db('source', 'place_order')->count($where);
+        $result[] = [
+            'name' => '已完成('.$count.')',
+            'where' => $where,
+        ];
+
+        unset($where['status']);
+        $where['refund_status'] = 1;
+        $count = Dever::db('source', 'place_order')->count($where);
+        $result[] = [
+            'name' => '申请退款('.$count.')',
+            'where' => $where,
+        ];
+
         return $result;
     }
 
@@ -69,6 +91,8 @@ class Info
             $parent = Dever::load('manage/user', 'place_user')->getInfo($data['parent_uid']);
         }
         $score = Dever::load('info', 'place_score')->get($data['score_id']);
+        $data['money'] = Dever::load('info', 'place')->money();
+        $data['pay_money_cash_text'] = $data['pay_money_cash'] . $data['money']['unit'];
         $result['type'] = 'list';
         $result['content'] = array
         (
@@ -76,10 +100,10 @@ class Info
             ['name'=>'优惠券抵扣', 'content' => Dever::load('info', 'place_score')->getText($data['coupon_cash'], $score)],
             ['name'=>'礼品卡抵扣', 'content' => Dever::load('info', 'place_score')->getText($data['gift_cash'], $score)],
             ['name'=>$score['name'] . '抵扣', 'content' => Dever::load('info', 'place_score')->getText($data['wallet_cash'], $score)],
-            ['name'=>'支付金额', 'content' => Dever::load('info', 'place_score')->getText($data['pay_cash'], $score)],
+            ['name'=>'支付金额', 'content' => Dever::load('info', 'place_score')->getText($data['pay_cash'], $score) . '['.$data['pay_money_cash_text'].']'],
             ['name'=>'买家留言', 'content' => $data['buy_info'] ?: '无'],
             ['name'=>'订单备注', 'content' => $data['sell_info'] ?: '无'],
-            ['name'=>'支付时间', 'content' => date('Y-m-d H:i:s', $data['pdate'])],
+            ['name'=>'支付时间', 'content' => $data['pdate'] ? date('Y-m-d H:i:s', $data['pdate']) : '-'],
         );
         return $result;
     }

+ 23 - 3
src/place/order/manage/Lib/Source/View.php

@@ -322,7 +322,7 @@ class View
                     'name' => '单价',
                     'type' => 'popover',
                     'location' => 'right',
-                    'tag' => true,
+                    //'tag' => true,
                 ],
                 [
                     'key' => 'num',
@@ -358,10 +358,11 @@ class View
             
             $data['content']['content'][] = ['name' => '发货时间', 'content' => date('Y-m-d H:i:s', $detail['ddate'])];
             if ($detail['qdate']) {
-                $data['content']['content'][] = ['name' => '收时间', 'content' => date('Y-m-d H:i:s', $detail['qdate'])];
+                $data['content']['content'][] = ['name' => '收时间', 'content' => date('Y-m-d H:i:s', $detail['qdate'])];
             }
             if (isset($info['log']) && $info['log']) {
-                $data['content']['content'][] = ['name' => '快递信息', 'content' => $info['log']];
+                $info['log'] = $this->html($info['log']);
+                $data['content']['content'][] = ['name' => '快递信息', 'content' => '点此查看', 'alert' => $info['log']];
             }
         } else {
             $data['content'] = [];
@@ -373,6 +374,25 @@ class View
         return $result;
     }
 
+    // 时间线 HTML
+    public function html($log) {
+        $html = '<div class="timeline" style="border-left:3px solid #3498db; margin:20px; padding-left:20px;">';
+
+        foreach($log as $index => $item) {
+            // 最新状态高亮
+            $bgColor = $index === 0 ? '#dff0d8' : '#f0f8ff';
+            $html .= '<div class="timeline-item" style="position: relative; margin-bottom: 20px;">';
+            $html .= '<div class="timeline-time" style="font-size:12px; color:#888;">' . htmlspecialchars($item['time']) . '</div>';
+            $html .= '<div class="timeline-content" style="padding:8px 12px; background:' . $bgColor . '; border-radius:5px; margin-top:5px;">';
+            $html .= htmlspecialchars($item['status']);
+            $html .= '</div>';
+            $html .= '</div>';
+        }
+
+        $html .= '</div>';
+        return $html;
+    }
+
     private function getListCash($detail)
     {
         $data['name'] = Dever::load('info', 'place_score')->getText($detail['cash'], $this->info['score']);

+ 7 - 0
src/place/order/manage/core.php

@@ -8,6 +8,13 @@ return [
             'sort'      => '1',
         ],
 
+        'import' => [
+            'parent'    => 'sector_place_order',
+            'name'      => '资源导入',
+            'sort'      => '100',
+            'show'      => 3
+        ],
+
         /*
         'source_stat' => [
             'parent'    => 'sector_place_order',

+ 21 - 0
src/place/order/manage/import.php

@@ -0,0 +1,21 @@
+<?php
+$config = [
+    'source' => 'place_order/source',
+    'update' => [
+        'start' => 'place_order/manage/excel.import',
+        'field'    => [
+            'import' => [
+                'desc' => '本功能仅支持待发货订单,供应商发货后导入,请先导出待发货订单',
+                'name' => '选择文件',
+                'type' => 'upload',
+                'upload' => 4,
+                'yun' => true,
+                'rules' => true,
+                'multiple' => false,
+                'style' => 'list',            
+            ],
+        ],
+    ],
+];
+
+return $config;

+ 66 - 18
src/place/order/manage/role.php

@@ -2,38 +2,86 @@
 $config = [
     'list' => [
         'field'      => [
-            'order_num',
-            'uid' => Dever::call('place_user/manage/user.getInfo'),
-            'score_id',
-            'cash',
+            'order_num' => [
+                'align' => 'left',
+                'truncate' => true,
+                //'fixed' => true,
+            ],
+            'source' => [
+                'type' => 'popover',
+                'name' => '身份等级',
+                'location' => 'right',
+                'align' => 'left',
+                'tag' => true,
+                'show' => 'Dever::call("place_order/manage/role/info.getDetail", [{id}, {score_id}])',
+            ],
+            'uid' => Dever::call('place_user/manage/user.getListInfo'),
+            'sales' => Dever::call('place_channel_sales/manage/info.getListInfo'),
+            'cash' => [
+                'show' => 'Dever::call("place_score/info.getText", [{cash}, {score_id}])',
+                'width' => '100px',
+            ],
+            'num' => [
+                'width' => '80px',
+            ],
+            /*
             'wallet_cash',
             'coupon_cash',
             'pay_cash',
             'pay_money_cash',
-            'status',
-            'cdate',
+            */
+            'status' => [
+                'width' => '100px',
+            ],
+            //'refund_status',
+            'cdate' => [
+                'width' => 'auto',
+                'name' => '下单时间',
+            ],
         ],
+        'expand' => 'place_order/manage/role/info.getExpand',
         'button' => [
             
         ],
         'data_button' => [
-            
+            '详情' => ['drawer', [
+                'path' => 'sector_place_order/role',
+                'param' => [
+                    'type' => 'view',
+                    'id' => 'id',
+                    'set' => ['menu' => 'sector_place_order/role', 'parent' => 'sector_place_order/role'],
+                ],
+            ]],
         ],
         'search'    => [
-            'order_num',
-            'uid',
-            'name' => 'like',
-            'cdate' => [
-                'name' => '创建时间',
-                'type' => 'date',
-                'date_type' => 'datetimerange',
-                'value_format' => 'YYYY-MM-DD HH:mm:ss',
-                'start_placeholder' => '开始日期',
-                'end_placeholder' => '结束日期',
-                'range_separator' => '至',
+            'search' => array
+            (
+                'name' => '订单搜索',
+                'type' => 'select_text',
+                'option' => [
+                    ['id' => 1, 'name' => '订单号', 'value' => 'order_num'],
+                    ['id' => 4, 'name' => '用户ID', 'value' => 'uid'],
+                    ['id' => 5, 'name' => '用户名', 'value' => 'place_user/manage/user.getUidByName'],
+                    ['id' => 6, 'name' => '用户手机号', 'value' => 'place_user/manage/user.getUidByMobile'],
+                    ['id' => 7, 'name' => '推荐人用户ID', 'value' => 'parent_uid'],
+                    ['id' => 8, 'name' => '推荐人用户名', 'value' => 'place_user/manage/user.getParentUidByName'],
+                    ['id' => 9, 'name' => '推荐人手机号', 'value' => 'place_user/manage/user.getParentUidByMobile'],
+                ],
+            ),
+            'role' => [
+                'name' => '身份等级',
+                'type' => 'cascader',
+                'check' => true,
+                'option' => 'Dever::call("place_role/manage/data.getOption")',
+                'search' => 'place_order/manage/role/info.getSearch',
             ],
+            'sales' => Dever::call('place_channel_sales/manage/info.getListSearch'),
+            'score_id',
+            'cdate',
             'status',
         ],
     ],
+    # 详情页配置
+    'view' => 'place_order/manage/role/view.get',
 ];
 return $config;

+ 15 - 15
src/place/order/manage/source.php

@@ -1,6 +1,7 @@
 <?php
 $config = [
     'list' => [
+        'selection' => true,
         'filter' => 'place_order/manage/source/info.getFilter',
         'field'      => [
             'order_num' => [
@@ -16,11 +17,8 @@ $config = [
                 'tag' => true,
                 'show' => 'Dever::call("place_order/manage/source/info.getDetail", [{id}, {score_id}])',
             ],
-            'uid' => Dever::call('place_user/manage/user.getInfo'),
-            'sales' => [
-                'name' => '渠道信息',
-                'show' => 'Dever::call("place_channel_sales/manage/info.getInfo", [{sales_type}, {sales_id}])',
-            ],
+            'user' => Dever::call('place_user/manage/user.getListInfo'),
+            'sales' => Dever::call('place_channel_sales/manage/info.getListInfo'),
             'method' => [
                 
             ],
@@ -42,9 +40,16 @@ $config = [
                 'name' => '下单时间',
             ],
         ],
+        # 列表页导出
+        'export' => [
+            'place_order/manage/excel.outSource' => '资源订单导出',
+        ],
         'expand' => 'place_order/manage/source/info.getExpand',
         'button' => [
             //'新增' => ['add'],
+            '发货单导入' => ['fastadd', [
+                'path' => 'sector_place_order/import',
+            ]],
         ],
         'data_button' => [
             //'编辑' => 'edit',
@@ -69,20 +74,15 @@ $config = [
                     ['id' => 3, 'name' => '资源名称', 'value' => 'place_order/manage/source/info.getIdByName'],
                     ['id' => 4, 'name' => '用户ID', 'value' => 'uid'],
                     ['id' => 5, 'name' => '用户名', 'value' => 'place_user/manage/user.getUidByName'],
-                    ['id' => 6, 'name' => '用户电话', 'value' => 'place_user/manage/user.getUidByMobile'],
-                    ['id' => 7, 'name' => '上级用户ID', 'value' => 'parent_uid'],
-                    ['id' => 8, 'name' => '上级用户名', 'value' => 'place_user/manage/user.getParentUidByName'],
-                    ['id' => 9, 'name' => '上级用户电话', 'value' => 'place_user/manage/user.getParentUidByMobile'],
+                    ['id' => 6, 'name' => '用户手机号', 'value' => 'place_user/manage/user.getUidByMobile'],
+                    ['id' => 7, 'name' => '推荐人用户ID', 'value' => 'parent_uid'],
+                    ['id' => 8, 'name' => '推荐人用户名', 'value' => 'place_user/manage/user.getParentUidByName'],
+                    ['id' => 9, 'name' => '推荐人手机号', 'value' => 'place_user/manage/user.getParentUidByMobile'],
                     ['id' => 10, 'name' => '收货人姓名', 'value' => 'place_user/manage/user.getUidByAddName'],
                     ['id' => 11, 'name' => '收货人电话', 'value' => 'place_user/manage/user.getUidByAddMobile'],
                 ],
             ),
-            'sales' => [
-                'type' => 'select2',
-                'name' => '渠道',
-                'option' => 'Dever::call("place_channel_sales/manage/info.getList")',
-                'col' => 'sales_type,sales_id',
-            ],
+            'sales' => Dever::call('place_channel_sales/manage/info.getListSearch'),
             'method',
             //'order_num',
             //'uid',

+ 1 - 1
src/place/order/table/pdf.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => 'Pdf文件表',
-    //'partition' => 'Dever::call("manage/common.system")',
+    //'partition' => 'Dever::call("manage/util.system")',
     'struct' => [
         'name'      => [
             'type'      => 'varchar(255)',

+ 1 - 1
src/place/order/table/promotion.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '订单明细促销记录表',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'order' => 'id asc',
     'struct' => [
         'table'      => [

+ 1 - 1
src/place/order/table/rebate.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '订单明细返利记录表',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'order' => 'id asc',
     'struct' => [
         'table'      => [

+ 1 - 1
src/place/order/table/role.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '身份等级支付订单表',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'struct' => [
         'uid'       => [
             'type'      => 'int(11)',

+ 6 - 1
src/place/order/table/role_detail.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '身份等级支付订单明细表',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'struct' => [
         'role_id' => [
             'name'      => '身份',
@@ -18,6 +18,11 @@ return [
             'type'      => 'int(11)',
         ],
 
+        'uid'       => [
+            'type'      => 'int(11)',
+            'name'      => '用户ID',
+        ],
+
         'order_id'       => [
             'type'      => 'int(11)',
             'name'      => '订单ID',

+ 1 - 1
src/place/order/table/role_log.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '身份订单日志表',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'struct' => [
         'order_id'       => [
             'type'      => 'int(11)',

+ 1 - 1
src/place/order/table/score.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '积分充值支付订单表',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'struct' => [
         'uid'       => [
             'type'      => 'int(11)',

+ 3 - 1
src/place/order/table/source.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '资源支付订单表',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'order' => 'refund_status asc, id desc',
     'struct' => [
         'address_id' => [
@@ -207,5 +207,7 @@ return [
         'search' => 'uid,status',
         'review_status' => 'uid,review_status',
         'sales' => 'sales_type,sales_id,status',
+        'cdate' => 'status,cdate',
+        'ddate' => 'status,ddate',
     ],
 ];

+ 1 - 1
src/place/order/table/source_cart.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '资源购物车',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'struct' => [
         'source_id' => [
             'name'      => '资源ID',

+ 5 - 1
src/place/order/table/source_delivery_express.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '资源订单明细实物发货表',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'struct' => [
         'order_id'       => [
             'type'      => 'int(11)',
@@ -26,4 +26,8 @@ return [
             'rules'     => true,
         ],
     ],
+
+    'index' => [
+        'search' => 'order_id,detail_id',
+    ],
 ];

+ 4 - 1
src/place/order/table/source_delivery_virtual.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '资源订单明细虚拟发货表',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'struct' => [
         'order_id'       => [
             'type'      => 'int(11)',
@@ -26,4 +26,7 @@ return [
             'rules'     => true,
         ],
     ],
+    'index' => [
+        'search' => 'order_id,detail_id',
+    ],
 ];

+ 8 - 1
src/place/order/table/source_detail.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '资源支付订单明细表',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'struct' => [
         'source_id' => [
             'name'      => '资源ID',
@@ -18,6 +18,11 @@ return [
             'name'      => '价格ID',
         ],
 
+        'uid'       => [
+            'type'      => 'int(11)',
+            'name'      => '用户ID',
+        ],
+
         'order_id'       => [
             'type'      => 'int(11)',
             'name'      => '订单ID',
@@ -134,5 +139,7 @@ return [
     ],
     'index' => [
         'search' => 'order_id,source_id,sku_id',
+        'source_type' => 'order_id,source_type',
+        'sku_id' => 'uid,sku_id,status',
     ],
 ];

+ 1 - 1
src/place/order/table/source_log.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '资源订单日志表',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'struct' => [
         'order_id'       => [
             'type'      => 'int(11)',

+ 1 - 1
src/place/order/table/source_refund.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '资源退款单表',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'struct' => [
         'utype' => [
             'name'      => '操作人类型',

+ 1 - 1
src/place/order/table/source_refund_detail.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '资源退款单明细表',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'struct' => [
         'source_refund_id'       => [
             'type'      => 'int(11)',

+ 1 - 1
src/place/order/table/source_refund_express.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '资源订单退货物流配送表',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'struct' => [
         'source_refund_id'       => [
             'type'      => 'int(11)',

+ 0 - 39
src/place/order/table/user_source.php

@@ -1,39 +0,0 @@
-<?php
-return [
-    'name' => '用户资源表',
-    'partition' => 'Dever::call("manage/common.system")',
-    'struct' => [
-        'uid'       => [
-            'type'      => 'int(11)',
-            'name'      => '用户',
-        ],
-
-        'source_id' => [
-            'name'      => '资源ID',
-            'type'      => 'int(11)',
-        ],
-
-        'sku_id'        => [
-            'type'      => 'int(11)',
-            'name'      => '价格ID',
-        ],
-
-        'unum_total'      => [
-            'type'      => 'int(11)',
-            'name'      => '总次数',
-        ],
-
-        'unum_used'      => [
-            'type'      => 'int(11)',
-            'name'      => '使用次数',
-        ],
-
-        'unum_balance'      => [
-            'type'      => 'int(11)',
-            'name'      => '剩余次数',
-        ],
-    ],
-    'index' => [
-        'search' => 'uid,source_id,sku_id',
-    ],
-];

+ 0 - 58
src/place/order/table/user_source_log.php

@@ -1,58 +0,0 @@
-<?php
-return [
-    'name' => '用户资源记录表',
-    'partition' => 'Dever::call("manage/common.system")',
-    'struct' => [
-        'uid'       => [
-            'type'      => 'int(11)',
-            'name'      => '用户',
-        ],
-        'source_id' => [
-            'name'      => '资源ID',
-            'type'      => 'int(11)',
-        ],
-
-        'sku_id'        => [
-            'type'      => 'int(11)',
-            'name'      => '价格ID',
-        ],
-        'type' => [
-            'name'      => '类型',
-            'type'      => 'tinyint(1)',
-            'default'   => 1,
-            'value'     => [
-                1 => '收入',
-                2 => '支出',
-            ],
-        ],
-        'source_type' => [
-            'name'      => '交易类型',
-            'type'      => 'tinyint(1)',
-            'default'   => 1,
-            'value'     => [
-                1 => '购买资源增加次数',
-                2 => '查看内容消耗次数',
-
-                100 => '赠送',
-            ],
-        ],
-        'amount'        => [
-            'name'      => '变动次数',
-            'type'      => 'int(11)',
-        ],
-
-        'status' => [
-            'name'      => '入账状态',
-            'type'      => 'tinyint(1)',
-            'default'   => 1,
-            'value'     => [
-                1 => '已入账',
-                2 => '待入账',
-            ],
-        ],
-    ],
-
-    'index' => [
-        'search' => 'uid,source_id,sku_id,type,source_type',
-    ],
-];

+ 1 - 1
src/place/page/manage/Lib/Nav.php

@@ -5,7 +5,7 @@ class Nav
     # 更新导航
     public function update($db, $data)
     {
-        $extend = Dever::load('common', 'manage')->extend();
+        $extend = Dever::load('util', 'manage')->extend();
         Dever::load('manage/place', 'place')->update($extend['data_id']);
     }
 }

+ 1 - 1
src/place/page/table/ad.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '推广位',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'order' => 'sort asc, id asc',
     'struct' => [
         'name' => [

+ 1 - 1
src/place/page/table/nav.php

@@ -1,7 +1,7 @@
 <?php
 return [
     'name' => '主导航设置表',
-    'partition' => 'Dever::call("manage/common.system")',
+    'partition' => 'Dever::call("manage/util.system")',
     'order' => 'sort asc',
     'struct' => [
         'name' => [

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

@@ -8,7 +8,7 @@ class Info
         $level = Dever::db('level', 'place_role')->select(['type' => 2, 'status' => 1]);
         if ($level) {
             foreach ($level as $v) {
-                Dever::load('user', 'place_role')->up($uid, $v['info_id'], $v, $sales_type, $sales_id);
+                Dever::load('user', 'place_role')->up($uid, $v['info_id'], $v, $sales_type, $sales_id, 2, $v['id']);
             }
         }
     }

+ 18 - 7
src/place/role/lib/User.php

@@ -86,7 +86,7 @@ class User
     }
 
     # 更新账户信息
-    public function up($uid, $role_id, $info, $sales_type = 0, $sales_id = 0)
+    public function up($uid, $role_id, $info, $sales_type = 0, $sales_id = 0, $type = 1, $type_id = 0, $desc = '')
     {
         $data = ['uid' => $uid, 'info_id' => $role_id];
         $user = Dever::db('user', 'place_role')->find($data);
@@ -122,20 +122,31 @@ class User
                     }
                 }
                 $state = Dever::db('user', 'place_role')->update($user['id'], $data);
+                if ($state) {
+                    $state = $user['id'];
+                }
             } else {
                 $data['edate'] += $date;
                 $data['card'] = Dever::load('util', 'api')->createNumber('', 'place_role/user', [], 'card');
                 $state = Dever::db('user', 'place_role')->insert($data);
             }
-            if ($state && $info['benefit'] == 1) {
-                # 发放周期权益
-                $period = Dever::db('role_period', 'place_benefit')->select(['level_id' => $info['id']]);
-                if ($period) {
-                    foreach ($period as $v) {
-                        Dever::load('user', 'place_benefit')->receive($uid, $v, 1, true);
+            if ($state) {
+                $data['user_id'] = $state;
+                $data['type'] = $type;
+                $data['type_id'] = $type_id;
+                $data['desc'] = $desc;
+                $state = Dever::db('user_log', 'place_role')->insert($data);
+                if ($state && $info['benefit'] == 1) {
+                    # 发放周期权益
+                    $period = Dever::db('role_period', 'place_benefit')->select(['level_id' => $info['id']]);
+                    if ($period) {
+                        foreach ($period as $v) {
+                            Dever::load('user', 'place_benefit')->receive($uid, $v, 1, true);
+                        }
                     }
                 }
             }
+            
         }
     }
 }

+ 21 - 0
src/place/role/manage/Lib/User.php

@@ -0,0 +1,21 @@
+<?php namespace Place_role\Manage\Lib;
+use Dever;
+class User
+{
+    public function create($db, $data)
+    {
+        $length = strlen($data['uid']);
+        if ($length == 11) {
+            $user = Dever::db('info', 'place_user')->find(['mobile' => $data['uid'], 'status' => 1]);
+        } else {
+            $user = Dever::db('info', 'place_user')->find(['id' => $data['uid'], 'status' => 1]);
+        }
+        if (!$user) {
+            Dever::error('用户' . $data['uid'] . '不存在');
+        }
+
+        $role = explode(',', $data['role']);
+        Dever::load('user', 'place_role')->up($user['id'], $role[0], $role[1], $user['sales_type'], $user['sales_id'], 3, 0, $data['desc']);
+        return 'end';
+    }
+}

+ 9 - 1
src/place/role/manage/core.php

@@ -28,8 +28,16 @@ return [
 
         'user_role' => [
             'parent'    => 'place_user_list',
-            'name'      => '用户身份',
+            'name'      => '身份列表',
             'sort'      => '2',
         ],
+
+        'user_role_log' => [
+            'parent'    => 'place_user_list',
+            'name'      => '身份列表记录',
+            'icon'      => 'user-2-line',
+            'sort'      => '100',
+            'show'      => 3,
+        ],
     ],
 ];

+ 30 - 6
src/place/role/manage/user_role.php

@@ -3,7 +3,7 @@ return [
     'source' => 'place_role/user',
     'list' => [
         'field'      => [
-            'uid' => Dever::call('place_user/manage/user.getInfo'),
+            'uid' => Dever::call('place_user/manage/user.getListInfo'),
             'info_id',
             'level_id',
             'card' => [
@@ -15,19 +15,43 @@ return [
             'status' => '',
         ],
         'button' => [
-            //'新增' => ['fastadd'],
+            '新增用户身份' => 'fastadd',
         ],
         'data_button' => [
-            '购买记录' => ['route', [
-                'path' => 'place_user_list/user_score_log',
+            '记录' => ['route', [
+                'path' => 'place_user_list/user_role_log',
                 'param' => [
-                    'set' => ['user_id' => 'id', 'menu' => 'place_user_list/user_score', 'parent' => 'place_user_list/user_score'],
+                    'set' => ['user_id' => 'id', 'menu' => 'place_user_list/user_role', 'parent' => 'place_user_list/user_role'],
                 ],
             ]],
         ],
         'search'    => [
-            'uid' => 'input',
+            'search' => Dever::call('place_user/manage/user.getListSearch'),
             'info_id',
         ],
     ],
+
+    'update' => [
+        'start' => 'place_role/manage/user.create',
+        'field'    => [
+            'uid' => [
+                'rules' => true,
+                'placeholder' => '请输入UID或手机号',
+            ],
+
+            'role' => [
+                'name' => '身份等级',
+                'rules' => true,
+                'type' => 'cascader',
+                'option' => 'Dever::call("place_role/manage/data.getOption")',
+            ],
+
+            'desc' => [
+                'rules' => true,
+                'name' => '备注',
+                'type' => 'textarea',
+                'autosize' => ['minRows' => 4],
+            ],
+        ],
+    ],
 ];

+ 27 - 0
src/place/role/manage/user_role_log.php

@@ -0,0 +1,27 @@
+<?php
+$user_id = Dever::load('util', 'manage')->request('user_id');
+return [
+    'source' => 'place_role/user_log',
+    'list' => [
+        'where' => ['user_id' => $user_id],
+        'field'      => [
+            'uid' => Dever::call('place_user/manage/user.getListInfo'),
+            'info_id',
+            'level_id',
+            'type',
+            'cdate',
+            'desc' => [
+                'show' => '"{desc}" ? "{desc}" : "-"'
+            ],
+        ],
+        'button' => [
+            
+        ],
+        'data_button' => [
+            
+        ],
+        'search'    => [
+            'info_id',
+        ],
+    ],
+];

Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů