rabin 1 неделя назад
Родитель
Сommit
6399bd12cc
100 измененных файлов с 1856 добавлено и 2764 удалено
  1. 1 1
      boot.php
  2. 4 4
      config/env/localhost.php
  3. 0 1
      config/setting.php
  4. 1 1
      package/manage/config.js
  5. 1 5
      package/manage/group.html
  6. 1 5
      package/manage/index.html
  7. 0 0
      package/manage/json/china.json
  8. 0 4
      package/manage/static/css/213.89045697.css
  9. 0 4
      package/manage/static/css/780.4065063c.css
  10. 0 6
      package/manage/static/css/app.d065fbce.css
  11. 0 96
      package/manage/static/css/loading.css
  12. 0 4
      package/manage/static/css/vab-chunk-c6f52c3a.5bd6db39.css
  13. 0 4
      package/manage/static/css/vab-plugins.f6f5c03c.css
  14. BIN
      package/manage/static/fonts/remixicon.31d28485.f12fd1a0.eot
  15. BIN
      package/manage/static/fonts/remixicon.881fbc46.1e0fb76b.woff
  16. BIN
      package/manage/static/fonts/remixicon.888e61f0.e313410c.ttf
  17. BIN
      package/manage/static/fonts/remixicon.9915fef9.5400338c.woff2
  18. BIN
      package/manage/static/img/403.d6bd8853.png
  19. BIN
      package/manage/static/img/404.f02775f8.png
  20. BIN
      package/manage/static/img/background-1.31e3a0ac.png
  21. BIN
      package/manage/static/img/background.2f742bae.jpg
  22. BIN
      package/manage/static/img/login_form.242d2e10.png
  23. 0 153
      package/manage/static/img/remixicon.95138f36.2b2ee314.svg
  24. 0 5
      package/manage/static/js/213.6489ce89.js
  25. 0 5
      package/manage/static/js/592.41e25131.js
  26. 0 5
      package/manage/static/js/780.f3d655d2.js
  27. 0 5
      package/manage/static/js/962.faf0c7f7.js
  28. 0 4
      package/manage/static/js/app.42f2829b.js
  29. 0 5
      package/manage/static/js/vab-chunk-0b9a05e8.3a2acba3.js
  30. 0 5
      package/manage/static/js/vab-chunk-54e012b3.75c10119.js
  31. 0 5
      package/manage/static/js/vab-chunk-844ca20f.8fd468cb.js
  32. 0 5
      package/manage/static/js/vab-chunk-b3a4eaa1.509e2c01.js
  33. 0 5
      package/manage/static/js/vab-chunk-c6f52c3a.9c6f3318.js
  34. 0 5
      package/manage/static/js/vab-plugins.03df181f.js
  35. 1 1
      src/bao/connect/index.php
  36. 2 2
      src/bao/connect/lib/Func/Api.php
  37. 10 9
      src/bao/connect/lib/Func/Base.php
  38. 0 0
      src/bao/connect/manage/api.php
  39. 0 0
      src/bao/connect/manage/api_notify_code.php
  40. 0 0
      src/bao/connect/manage/api_request_body.php
  41. 0 0
      src/bao/connect/manage/api_request_header.php
  42. 0 0
      src/bao/connect/manage/api_response.php
  43. 0 0
      src/bao/connect/manage/api_uri.php
  44. 0 0
      src/bao/connect/manage/connect_api.php
  45. 0 0
      src/bao/connect/manage/connect_info.php
  46. 0 0
      src/bao/connect/manage/convert.php
  47. 0 0
      src/bao/connect/manage/core.php
  48. 0 0
      src/bao/connect/manage/request_body.php
  49. 0 0
      src/bao/connect/manage/request_header.php
  50. 0 0
      src/bao/connect/manage/response_code.php
  51. 1 1
      src/bao/connect/table/api.php
  52. 0 30
      src/dai/channel/api/Task.php
  53. 1 1
      src/dai/channel/index.php
  54. 0 19
      src/dai/channel/lib/Config.php
  55. 41 42
      src/dai/channel/manage/Api/Main.php
  56. 110 98
      src/dai/channel/manage/Lib/Data.php
  57. 8 8
      src/dai/channel/manage/card.php
  58. 3 3
      src/dai/channel/manage/card_upload.php
  59. 1 1
      src/dai/channel/manage/config.php
  60. 0 0
      src/dai/channel/manage/core.php
  61. 2 2
      src/dai/channel/manage/goods.php
  62. 0 0
      src/dai/channel/manage/info.php
  63. 0 0
      src/dai/channel/manage/set.php
  64. 1 1
      src/dai/channel/table/card_upload.php
  65. 0 469
      src/dai/seller/api/Task.php
  66. 200 207
      src/dai/seller/app/api/Notify.php
  67. 8 16
      src/dai/seller/app/api/Order.php
  68. 232 0
      src/dai/seller/app/api/Task.php
  69. 9 11
      src/dai/seller/app/api/Test.php
  70. 28 0
      src/dai/seller/app/lib/Cron.php
  71. 43 0
      src/dai/seller/app/lib/Info.php
  72. 169 179
      src/dai/seller/app/lib/Order.php
  73. 8 0
      src/dai/seller/cron.php
  74. 1 1
      src/dai/seller/index.php
  75. 0 42
      src/dai/seller/lib/Info.php
  76. 297 370
      src/dai/seller/manage/Api/Main.php
  77. 612 718
      src/dai/seller/manage/Lib/Data.php
  78. 3 3
      src/dai/seller/manage/channel.php
  79. 4 40
      src/dai/seller/manage/core.php
  80. 2 2
      src/dai/seller/manage/goods.php
  81. 2 2
      src/dai/seller/manage/info.php
  82. 1 27
      src/dai/seller/manage/log.php
  83. 5 5
      src/dai/seller/manage/order_history.php
  84. 8 16
      src/dai/seller/manage/order_list.php
  85. 4 4
      src/dai/seller/manage/order_push.php
  86. 0 0
      src/dai/seller/manage/order_stat.php
  87. 0 0
      src/dai/seller/manage/order_stat_channel.php
  88. 0 0
      src/dai/seller/manage/order_stat_seller.php
  89. 2 2
      src/dai/seller/manage/seller_log_list.php
  90. 1 1
      src/dai/seller/manage/seller_order_history.php
  91. 5 13
      src/dai/seller/manage/seller_order_list.php
  92. 3 3
      src/dai/seller/manage/seller_order_push.php
  93. 6 0
      src/dai/seller/server.php
  94. 2 1
      src/dai/seller/table/info.php
  95. 12 8
      src/dai/seller/table/log.php
  96. 0 4
      src/dai/seller/table/log1.php
  97. 0 35
      src/dai/seller/table/manage/order_log2_list.php
  98. 0 13
      src/dai/seller/table/manage/order_log_error_list.php
  99. 0 6
      src/dai/seller/table/manage/seller_order_log2_list.php
  100. 0 6
      src/dai/seller/table/manage/seller_order_log_error_list.php

+ 1 - 1
boot.php

@@ -1,6 +1,6 @@
 <?php
 define('DEVER_ENTRY', 'index.php');
-define('DEVER_PROJECT', 'demo');
+define('DEVER_PROJECT', 'api');
 define('DEVER_PROJECT_PATH', dirname(__FILE__) . DIRECTORY_SEPARATOR);
 if (defined('DEVER_PACKAGE')) {
 	include('dever2/package/'.DEVER_PACKAGE.'/index.php');

+ 4 - 4
config/env/localhost.php

@@ -9,6 +9,7 @@ return array
         'name' => DEVER_PROJECT,
         'user' => 'root',
         'pwd' => '123456',
+        'pool' => ['enable' => true, 'min' => 2, 'max' => 20, 'idle_time' => 60, 'wait_timeout' => 2],
     ),
 
     'log' => array
@@ -22,16 +23,15 @@ return array
         'user' => 'rabin',
         'pwd' => 'ilyxddfe521',
         */
+
+        /*
         'type' => 'Influxdb',
         'host' => 'http://web-influx:8086',
         'token' => 'S9lYxAWiof80ZK_9d9XzT4I30WresaPVl3ukn7odHqpaZ3GJuOHsP9wfWiLwfdZIpJF-TSOdvJZOMK74fUzXMw==',
         'name' => 'api',
         'user' => 'shemic',
         'precision' => 's',
-    ),
-
-    'log1' => array
-    (
+        */
         'type' => 'Mongo',
         'host' => 'web-mongodb',
         'port' => '27017',

+ 0 - 1
config/setting.php

@@ -33,7 +33,6 @@ return array
         //'default' => array($env['db'], $env['db1'], 'type' => 'Pdo'),//读写分离
         'default' => $env['db'],
         'log' => $env['log'],
-        'log1' => $env['log1'],
 
         # 分区设置 
         'partition' => array

+ 1 - 1
package/manage/config.js

@@ -12,7 +12,7 @@ deverConfig = {
   // 一些基本配置,定义后台title
   setting: {
     title: 'API充值系统',
-    tokenTableName: 'dever-admin-sign',
+    tokenTableName: 'dever-yuandaibao-v1',
     //loginParam: { system: 'group', number: 'default' },
   },
   // 网络配置

+ 1 - 5
package/manage/group.html

@@ -1,5 +1 @@
-<!doctype html><html lang="zh-cmn-Hans"><head><meta charset="utf-8"/><meta content="IE=edge" http-equiv="X-UA-Compatible"/><meta content="webkit" name="renderer"/><meta content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no" name="viewport"/><link href="favicon.ico" rel="icon"/><title>Dever Manage</title><meta content="Dever,PHP,PHP框架,轻量,微服务,组件化,接口,低代码,后台,自定义后台,开发,快速开发,AI,人工智能,文档,轻应用,应用,时空之翼,神秘城" name="keywords"/><meta content="rabin@shemic.com" name="author"/><link href="static/css/loading.css?random=2024-04-18 10:27:22-shemic" rel="stylesheet"/><script>document.write(
-        "<script type='text/javascript' src='group_config.js?" +
-          Math.random() +
-          "'><\/script>"
-      )</script><script defer="defer" src="static/js/app.42f2829b.js"></script><script defer="defer" src="static/js/213.6489ce89.js"></script><link href="static/css/app.d065fbce.css" rel="stylesheet"><link href="static/css/213.89045697.css" rel="stylesheet"></head><body><noscript></noscript><div id="app"><div class="first-loading-wrp"><div class="loading-wrp"><span class="dot dot-spin"><i></i> <i></i> <i></i> <i></i></span></div><h1>Dever Manage</h1></div></div></body></html>
+<!doctype html><html lang="zh-cmn-Hans"><head><meta charset="utf-8"/><meta content="IE=edge" http-equiv="X-UA-Compatible"/><meta content="webkit" name="renderer"/><meta content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no" name="viewport"/><link href="favicon.ico" rel="icon"/><title>Dever Manage</title><meta content="Dever,PHP,PHP框架,轻量,微服务,组件化,接口,低代码,后台,自定义后台,开发,快速开发,AI,人工智能,文档,轻应用,应用,时空之翼,神秘城" name="keywords"/><meta content="rabin@shemic.com" name="author"/><link href="static/css/loading.css?v=1753790913" rel="stylesheet"/><script src="group_config.js" defer="defer"></script><script defer="defer" src="static/js/element-plus.js?v=1753790913"></script><script defer="defer" src="static/js/app.js?v=1753790913"></script><script defer="defer" src="static/js/89.js?v=1753790913"></script><link href="static/css/element-plus.css?v=1753790913" rel="stylesheet"><link href="static/css/app.css?v=1753790913" rel="stylesheet"></head><body><noscript></noscript><div id="app"><div class="first-loading-wrp"><div class="loading-wrp"><span class="dot dot-spin"><i></i> <i></i> <i></i> <i></i></span></div><h1>Dever Manage</h1></div></div></body></html>

+ 1 - 5
package/manage/index.html

@@ -1,5 +1 @@
-<!doctype html><html lang="zh-cmn-Hans"><head><meta charset="utf-8"/><meta content="IE=edge" http-equiv="X-UA-Compatible"/><meta content="webkit" name="renderer"/><meta content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no" name="viewport"/><link href="favicon.ico" rel="icon"/><title>Dever Manage</title><meta content="Dever,PHP,PHP框架,轻量,微服务,组件化,接口,低代码,后台,自定义后台,开发,快速开发,AI,人工智能,文档,轻应用,应用,时空之翼,神秘城" name="keywords"/><meta content="rabin@shemic.com" name="author"/><link href="static/css/loading.css?random=2024-04-18 10:27:22-shemic" rel="stylesheet"/><script>document.write(
-        "<script type='text/javascript' src='config.js?" +
-          Math.random() +
-          "'><\/script>"
-      )</script><script defer="defer" src="static/js/app.42f2829b.js"></script><script defer="defer" src="static/js/213.6489ce89.js"></script><link href="static/css/app.d065fbce.css" rel="stylesheet"><link href="static/css/213.89045697.css" rel="stylesheet"></head><body><noscript></noscript><div id="app"><div class="first-loading-wrp"><div class="loading-wrp"><span class="dot dot-spin"><i></i> <i></i> <i></i> <i></i></span></div><h1>Dever Manage</h1></div></div></body></html>
+<!doctype html><html lang="zh-cmn-Hans"><head><meta charset="utf-8"/><meta content="IE=edge" http-equiv="X-UA-Compatible"/><meta content="webkit" name="renderer"/><meta content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no" name="viewport"/><link href="favicon.ico" rel="icon"/><title>Dever Manage</title><meta content="Dever,PHP,PHP框架,轻量,微服务,组件化,接口,低代码,后台,自定义后台,开发,快速开发,AI,人工智能,文档,轻应用,应用,时空之翼,神秘城" name="keywords"/><meta content="rabin@shemic.com" name="author"/><link href="static/css/loading.css?v=1753790913" rel="stylesheet"/><script src="config.js?v=1753790913" defer="defer"></script><script defer="defer" src="static/js/element-plus.js?v=1753790913"></script><script defer="defer" src="static/js/app.js?v=1753790913"></script><script defer="defer" src="static/js/89.js?v=1753790913"></script><link href="static/css/element-plus.css?v=1753790913" rel="stylesheet"><link href="static/css/app.css?v=1753790913" rel="stylesheet"></head><body><noscript></noscript><div id="app"><div class="first-loading-wrp"><div class="loading-wrp"><span class="dot dot-spin"><i></i> <i></i> <i></i> <i></i></span></div><h1>Dever Manage</h1></div></div></body></html>

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
package/manage/json/china.json


Разница между файлами не показана из-за своего большого размера
+ 0 - 4
package/manage/static/css/213.89045697.css


Разница между файлами не показана из-за своего большого размера
+ 0 - 4
package/manage/static/css/780.4065063c.css


Разница между файлами не показана из-за своего большого размера
+ 0 - 6
package/manage/static/css/app.d065fbce.css


+ 0 - 96
package/manage/static/css/loading.css

@@ -1,96 +0,0 @@
-.first-loading-wrp {
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-  justify-content: center;
-  height: 90vh;
-  min-height: 90vh;
-}
-
-.first-loading-wrp > h1 {
-  font-size: 28px;
-  font-weight: bolder;
-}
-
-.first-loading-wrp .loading-wrp {
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  padding: 98px;
-}
-
-.dot {
-  position: relative;
-  box-sizing: border-box;
-  display: inline-block;
-  width: 64px;
-  height: 64px;
-  font-size: 64px;
-  transform: rotate(45deg);
-  animation: antRotate 1.2s infinite linear;
-}
-
-.dot i {
-  position: absolute;
-  display: block;
-  width: 28px;
-  height: 28px;
-  background-color: #1890ff;
-  border-radius: 100%;
-  opacity: 0.3;
-  transform: scale(0.75);
-  transform-origin: 50% 50%;
-  animation: antSpinMove 1s infinite linear alternate;
-}
-
-.dot i:nth-child(1) {
-  top: 0;
-  left: 0;
-}
-
-.dot i:nth-child(2) {
-  top: 0;
-  right: 0;
-  -webkit-animation-delay: 0.4s;
-  animation-delay: 0.4s;
-}
-
-.dot i:nth-child(3) {
-  right: 0;
-  bottom: 0;
-  -webkit-animation-delay: 0.8s;
-  animation-delay: 0.8s;
-}
-
-.dot i:nth-child(4) {
-  bottom: 0;
-  left: 0;
-  -webkit-animation-delay: 1.2s;
-  animation-delay: 1.2s;
-}
-
-@keyframes antRotate {
-  to {
-    -webkit-transform: rotate(405deg);
-    transform: rotate(405deg);
-  }
-}
-
-@-webkit-keyframes antRotate {
-  to {
-    -webkit-transform: rotate(405deg);
-    transform: rotate(405deg);
-  }
-}
-
-@keyframes antSpinMove {
-  to {
-    opacity: 1;
-  }
-}
-
-@-webkit-keyframes antSpinMove {
-  to {
-    opacity: 1;
-  }
-}

Разница между файлами не показана из-за своего большого размера
+ 0 - 4
package/manage/static/css/vab-chunk-c6f52c3a.5bd6db39.css


Разница между файлами не показана из-за своего большого размера
+ 0 - 4
package/manage/static/css/vab-plugins.f6f5c03c.css


BIN
package/manage/static/fonts/remixicon.31d28485.f12fd1a0.eot


BIN
package/manage/static/fonts/remixicon.881fbc46.1e0fb76b.woff


BIN
package/manage/static/fonts/remixicon.888e61f0.e313410c.ttf


BIN
package/manage/static/fonts/remixicon.9915fef9.5400338c.woff2


BIN
package/manage/static/img/403.d6bd8853.png


BIN
package/manage/static/img/404.f02775f8.png


BIN
package/manage/static/img/background-1.31e3a0ac.png


BIN
package/manage/static/img/background.2f742bae.jpg


BIN
package/manage/static/img/login_form.242d2e10.png


Разница между файлами не показана из-за своего большого размера
+ 0 - 153
package/manage/static/img/remixicon.95138f36.2b2ee314.svg


Разница между файлами не показана из-за своего большого размера
+ 0 - 5
package/manage/static/js/213.6489ce89.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 5
package/manage/static/js/592.41e25131.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 5
package/manage/static/js/780.f3d655d2.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 5
package/manage/static/js/962.faf0c7f7.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 4
package/manage/static/js/app.42f2829b.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 5
package/manage/static/js/vab-chunk-0b9a05e8.3a2acba3.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 5
package/manage/static/js/vab-chunk-54e012b3.75c10119.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 5
package/manage/static/js/vab-chunk-844ca20f.8fd468cb.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 5
package/manage/static/js/vab-chunk-b3a4eaa1.509e2c01.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 5
package/manage/static/js/vab-chunk-c6f52c3a.9c6f3318.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 5
package/manage/static/js/vab-plugins.03df181f.js


+ 1 - 1
src/bao/connect/index.php

@@ -1,5 +1,5 @@
 <?php
-define('DEVER_APP_NAME', 'connect');
+define('DEVER_APP_NAME', 'Connect');
 define('DEVER_APP_LANG', '通信管理');
 define('DEVER_APP_PATH', dirname(__FILE__) . DIRECTORY_SEPARATOR);
 include(DEVER_APP_PATH . '../../../boot.php');

+ 2 - 2
src/bao/connect/lib/Func/Api.php

@@ -29,7 +29,7 @@ class Api extends Base
     # 数据响应格式处理
     protected function responseHandle(&$data)
     {
-        $api_response = Dever::db('api_response', 'connect')->select(array('api_id' => $this->info['id']));
+        $api_response = Dever::db('connect/api_response')->select(array('api_id' => $this->info['id']));
         if ($api_response) {
             foreach ($api_response as $k => $v) {
                 if (isset($data[$v['key']])) {
@@ -44,6 +44,6 @@ class Api extends Base
     protected function createNotify($order_id)
     {
         $encode = \Dever\Helper\Str::encode($this->connect['id'] . '|' . $this->info['id'] . '|' . $order_id);
-        return Dever::url('connect/notify.common', array('s' => $encode));
+        return Dever::url('seller/notify.common', array('s' => $encode));
     }
 }

+ 10 - 9
src/bao/connect/lib/Func/Base.php

@@ -6,11 +6,12 @@ class Base
     protected $info;
     protected $domain;
     protected $param = array();
+    protected $type = '';
 
     # 设置基本信息
     protected function setting($type, $cate_id, $channel, $param = array())
     {
-        $this->connect = Dever::db('info', 'connect')->find($channel['connect_id']);
+        $this->connect = Dever::db('connect/info')->find($channel['connect_id']);
         if (!$this->connect) {
             return false;
         }
@@ -18,7 +19,7 @@ class Base
         $this->connect['host'] = $channel['host'];
         $this->connect['appkey'] = $channel['appkey'];
         $this->connect['appsecret'] = $channel['appsecret'];
-        $set = Dever::db('set', 'channel')->select(array('channel_id' => $channel['id']));
+        $set = Dever::db('connect/set')->select(array('channel_id' => $channel['id']));
         $this->connect['set'] = array();
         if ($set) {
             foreach ($set as $k => $v) {
@@ -27,10 +28,10 @@ class Base
         }
         $this->info = false;
         if ($cate_id) {
-            $this->info = Dever::db($this->type, 'connect')->find(array('type' => $type, 'cate_id' => $cate_id, 'connect_id' => $this->connect['id']));
+            $this->info = Dever::db('connect/' . $this->type)->find(array('type' => $type, 'cate_id' => $cate_id, 'connect_id' => $this->connect['id']));
         }
         if (!$this->info) {
-            $this->info = Dever::db($this->type, 'connect')->find(array('type' => $type, 'connect_id' => $this->connect['id']));
+            $this->info = Dever::db('connect/' . $this->type)->find(array('type' => $type, 'connect_id' => $this->connect['id']));
             if (!$this->info) {
                 return false;
             }
@@ -103,7 +104,7 @@ class Base
         if (strstr($this->info['uri'], 'http')) {
             $this->connect['host'] = '';
         }
-        $uri = Dever::db('api_uri', 'connect')->select(array('api_id' => $this->info['id']));
+        $uri = Dever::db('connect/api_uri')->select(array('api_id' => $this->info['id']));
         if ($uri) {
             $path = array();
             $param = array();
@@ -137,7 +138,7 @@ class Base
     # 获取请求参数
     protected function request(&$data, $table, $where)
     {
-        $body = Dever::db($table, 'connect')->select($where);
+        $body = Dever::db('connect/' . $table)->select($where);
         if ($body) {
             foreach ($body as $k => $v) {
                 $value = $this->value($data, $v['key'], $v['default'], $v['type']);
@@ -181,7 +182,7 @@ class Base
         $status = 2;
         if (isset($response[$this->connect['response_code']])) {
             $code = $response[$this->connect['response_code']];
-            $code = Dever::db('response_code', 'connect')->find(array('connect_id' => $this->connect['id'], 'value' => $code));
+            $code = Dever::db('connect/response_code')->find(array('connect_id' => $this->connect['id'], 'value' => $code));
             if ($code && $code['type'] == 1) {
                 $status = 1;
             }
@@ -406,7 +407,7 @@ class Base
     protected function service($data)
     {
         # 转换处理
-        $convert = Dever::db('convert', 'connect')->select(array('connect_id' => $this->connect['id']));
+        $convert = Dever::db('connect/convert')->select(array('connect_id' => $this->connect['id']));
 
         $param = array();
         if ($convert && is_array($data)) {
@@ -437,7 +438,7 @@ class Base
     protected function token($id = 1, $type = 'token')
     {
         return '';
-        $db = Dever::db($type, 'connect');
+        $db = Dever::db('connect/' . $type);
         $data['connect_id'] = $connect['id'];
         $data['api_id'] = $api['id'];
         $info = $db->find($data);

+ 0 - 0
src/bao/connect/table/manage/api.php → src/bao/connect/manage/api.php


+ 0 - 0
src/bao/connect/table/manage/api_notify_code.php → src/bao/connect/manage/api_notify_code.php


+ 0 - 0
src/bao/connect/table/manage/api_request_body.php → src/bao/connect/manage/api_request_body.php


+ 0 - 0
src/bao/connect/table/manage/api_request_header.php → src/bao/connect/manage/api_request_header.php


+ 0 - 0
src/bao/connect/table/manage/api_response.php → src/bao/connect/manage/api_response.php


+ 0 - 0
src/bao/connect/table/manage/api_uri.php → src/bao/connect/manage/api_uri.php


+ 0 - 0
src/bao/connect/table/manage/connect_api.php → src/bao/connect/manage/connect_api.php


+ 0 - 0
src/bao/connect/table/manage/connect_info.php → src/bao/connect/manage/connect_info.php


+ 0 - 0
src/bao/connect/table/manage/convert.php → src/bao/connect/manage/convert.php


+ 0 - 0
src/bao/connect/table/manage/core.php → src/bao/connect/manage/core.php


+ 0 - 0
src/bao/connect/table/manage/request_body.php → src/bao/connect/manage/request_body.php


+ 0 - 0
src/bao/connect/table/manage/request_header.php → src/bao/connect/manage/request_header.php


+ 0 - 0
src/bao/connect/table/manage/response_code.php → src/bao/connect/manage/response_code.php


+ 1 - 1
src/bao/connect/table/api.php

@@ -40,7 +40,7 @@ return array
             'name'      => '商品分类',
             'type'      => 'tinyint(1)',
             'default'   => '-1',
-            'value'     => 'Dever::call("goods/manage.getCate")',
+            'value'     => 'Dever::call("Goods/Manage/Lib/Data.getCate")',
         ),
 
         'sign_col' => array

+ 0 - 30
src/dai/channel/api/Task.php

@@ -1,30 +0,0 @@
-<?php namespace Channel\Api;
-use Dever;
-use \Dever\Helper\Redis;
-use \Dever\Helper\Str;
-class Task
-{
-    # 定时查询渠道的余额
-    public function yue()
-    {
-        $channel = Dever::db('info', 'channel')->select(array('type' => 1, 'status' => 1));
-        if ($channel) {
-            foreach ($channel as $k => $v) {
-                if ($v['connect_id'] && $v['host'] && $v['appkey'] && $v['appsecret']) {
-                    $connect = Dever::db('info', 'connect')->find($v['connect_id']);
-                    if ($connect) {
-                        $api = Dever::db('api', 'connect')->find(array('type' => 3, 'connect_id' => $connect['id']));
-                        if ($api) {
-                            # 获取余额
-                            $result = Dever::load('func/api', 'connect')->run(3, false, $v);
-                            if ($result['status'] == 1 && isset($result['data']['yue'])) {
-                                Dever::db('info', 'channel')->update($v['id'], array('cash' => $result['data']['yue']));
-                            }
-                        }
-                    }
-                }
-            }
-        }
-        return 'ok';
-    }
-}

+ 1 - 1
src/dai/channel/index.php

@@ -1,5 +1,5 @@
 <?php
-define('DEVER_APP_NAME', 'channel');
+define('DEVER_APP_NAME', 'Channel');
 define('DEVER_APP_LANG', '渠道管理');
 define('DEVER_APP_PATH', dirname(__FILE__) . DIRECTORY_SEPARATOR);
 include(DEVER_APP_PATH . '../../../boot.php');

+ 0 - 19
src/dai/channel/lib/Config.php

@@ -1,19 +0,0 @@
-<?php namespace Channel\Lib;
-use Dever;
-use Dever\Project;
-use Manage\Lib\Auth;
-class Config extends Auth
-{
-    public function getTree()
-    {
-        $data = Dever::db('config', 'channel')->select([]);
-        $result = array();
-        $result[] = array
-        (
-            'id' => 'root',
-            'name' => '全部配置',
-            'children' => $data,
-        );
-        return $result;
-    }
-}

+ 41 - 42
src/dai/channel/api/Manage.php → src/dai/channel/manage/Api/Main.php

@@ -1,43 +1,42 @@
-<?php namespace Channel\Api;
-use Dever;
-use Manage\Lib\Auth;
-class Manage extends Auth
-{
-    # 获取渠道下的商品
-    public function getGoods($value = false)
-    {
-        $result['goods_id']['value'] = '';
-        $result['goods_id']['option'] = array();
-        if (!$value) {
-            return $result;
-        }
-        $goods = Dever::db('goods', 'channel')->select(array('channel_id' => $value));
-        if ($goods) {
-            $option = array();
-            foreach ($goods as $k => $v) {
-                $option[$v['goods_id']] = Dever::db('info', 'goods')->find($v['goods_id']);
-            }
-            $result['goods_id']['option'] = array_values($option);
-        }
-        return $result;
-    }
-
-    # 获取商品下规格
-    public function getSku($value = false)
-    {
-        if (!$value) {
-            $result['goods_id']['option'] = array();
-            return $result;
-        }
-        $result = array();
-        $goods = Dever::db('goods', 'channel')->select(array('channel_id' => $value));
-        if ($goods) {
-            $option = array();
-            foreach ($goods as $k => $v) {
-                $option[] = Dever::db('info', 'goods')->find($v['goods_id']);
-            }
-            $result['goods_id']['option'] = $option;
-        }
-        return $result;
-    }
+<?php namespace Channel\Manage\Api;
+use Dever;
+class Main
+{
+    # 获取渠道下的商品
+    public function getGoods($value = false)
+    {
+        $result['goods_id']['value'] = '';
+        $result['goods_id']['option'] = array();
+        if (!$value) {
+            return $result;
+        }
+        $goods = Dever::db('channel/goods')->select(array('channel_id' => $value));
+        if ($goods) {
+            $option = array();
+            foreach ($goods as $k => $v) {
+                $option[$v['goods_id']] = Dever::db('goods/info')->find($v['goods_id']);
+            }
+            $result['goods_id']['option'] = array_values($option);
+        }
+        return $result;
+    }
+
+    # 获取商品下规格
+    public function getSku($value = false)
+    {
+        if (!$value) {
+            $result['goods_id']['option'] = array();
+            return $result;
+        }
+        $result = array();
+        $goods = Dever::db('channel/goods')->select(array('channel_id' => $value));
+        if ($goods) {
+            $option = array();
+            foreach ($goods as $k => $v) {
+                $option[] = Dever::db('goods/info')->find($v['goods_id']);
+            }
+            $result['goods_id']['option'] = $option;
+        }
+        return $result;
+    }
 }

+ 110 - 98
src/dai/channel/lib/Manage.php → src/dai/channel/manage/Lib/Data.php

@@ -1,99 +1,111 @@
-<?php namespace Channel\Lib;
-use Dever;
-use Manage\Lib\Auth;
-class Manage extends Auth
-{
-    # 获取渠道列表
-    public function getInfo()
-    {
-        return Dever::db('info', 'channel')->select(array('status' => 1));
-    }
-    public function formatTime($timevalue)
-    {
-        if(strpos($timevalue,"-"))
-        {
-            return strtotime($timevalue);
-        }
-        else
-        {
-            return intval(($timevalue- 25569) * 3600 * 24) - 8*3600 + 60;
-        }
-    }
-    # 上传卡密
-    public function uploadCard($data)
-    {
-        if ($data['channel_id'] && $data['goods'] && $data['file']) {
-            $goods = explode(',', $data['goods']);
-            $file = Dever::load('view', 'upload')->local($data['file']);
-            $excel = Dever::load('import', 'excel')->act($file);
-            if ($excel) {
-                foreach ($excel as $k => $v) {
-                    if ($k > 1 && $v['A']) {
-                        $update = array();
-                        $update['number'] = $v['A'];
-                        $info = Dever::db('card', 'channel')->find($update);
-                        if ($info) {
-                            Dever::error('卡号:' . $update['number'] . '已存在');
-                        }
-                        $update['pwd'] = $v['B'];
-                        $value = $v['C'];
-                        $end = $v['D'];
-                        if (!strstr($end, '-')) {
-                            $end = $this->formatTime($end);
-                            $end = date('Y-m-d', $end);
-                        }
-                        $sku = Dever::db('info_sku', 'goods')->find(array('info_id' => $goods[1], 'value' => $value));
-                        if (!$sku) {
-                            continue;
-                        }
-                        $update['seller_id'] = $data['seller_id'];
-                        $update['goods_id'] = $goods[1];
-                        $update['sku_id'] = $sku['id'];
-                        $update['channel_id'] = $data['channel_id'];
-                        $update['goods'] = $data['goods'];
-                        $update['end'] = $end;
-                        Dever::db('card', 'channel')->insert($update);
-                    }
-                }
-            }
-        } else {
-            Dever::error('请上传文件或者选择商品');
-        }
-        return $data;
-    }
-
-    # 展示卡密统计
-    public function showCardStat($where)
-    {
-        $db = Dever::db('card', 'channel');
-        $total = $db->count($where);
-
-        $where['use_status'] = 2;
-        $yi = $db->count($where);
-
-        $where['use_status'] = 1;
-        $wei = $db->count($where);
-        return array
-        (
-            array
-            (
-                # 一共24
-                'span' => 8,
-                'name' => '总数量',
-                'value' => $total,
-            ),
-            array
-            (
-                'span' => 8,
-                'name' => '已用数量',
-                'value' => $yi,
-            ),
-            array
-            (
-                'span' => 8,
-                'name' => '剩余可用数量',
-                'value' => $wei,
-            ),
-        );
-    }
+<?php namespace Channel\Manage\Lib;
+use Dever;
+class Data
+{
+    public function getTree()
+    {
+        $data = Dever::db('channel/config')->select([]);
+        $result = array();
+        $result[] = array
+        (
+            'id' => 'root',
+            'name' => '全部配置',
+            'children' => $data,
+        );
+        return $result;
+    }
+
+    # 获取渠道列表
+    public function getInfo()
+    {
+        return Dever::db('channel/info')->select(array('status' => 1));
+    }
+    public function formatTime($timevalue)
+    {
+        if(strpos($timevalue,"-"))
+        {
+            return strtotime($timevalue);
+        }
+        else
+        {
+            return intval(($timevalue- 25569) * 3600 * 24) - 8*3600 + 60;
+        }
+    }
+    # 上传卡密
+    public function uploadCard($data)
+    {
+        if ($data['channel_id'] && $data['goods'] && $data['file']) {
+            $goods = explode(',', $data['goods']);
+            $file = Dever::load(\Upload\Lib\View::class)->local($data['file']);
+            $excel = Dever::load(\Excel\Lib\Import::class)->act($file);
+            if ($excel) {
+                foreach ($excel as $k => $v) {
+                    if ($k > 1 && $v['A']) {
+                        $update = array();
+                        $update['number'] = $v['A'];
+                        $info = Dever::db('channel/card')->find($update);
+                        if ($info) {
+                            Dever::error('卡号:' . $update['number'] . '已存在');
+                        }
+                        $update['pwd'] = $v['B'];
+                        $value = $v['C'];
+                        $end = $v['D'];
+                        if (!strstr($end, '-')) {
+                            $end = $this->formatTime($end);
+                            $end = date('Y-m-d', $end);
+                        }
+                        $sku = Dever::db('goods/info_sku')->find(array('info_id' => $goods[1], 'value' => $value));
+                        if (!$sku) {
+                            continue;
+                        }
+                        $update['seller_id'] = $data['seller_id'];
+                        $update['goods_id'] = $goods[1];
+                        $update['sku_id'] = $sku['id'];
+                        $update['channel_id'] = $data['channel_id'];
+                        $update['goods'] = $data['goods'];
+                        $update['end'] = $end;
+                        Dever::db('channel/card')->insert($update);
+                    }
+                }
+            }
+        } else {
+            Dever::error('请上传文件或者选择商品');
+        }
+        return $data;
+    }
+
+    # 展示卡密统计
+    public function showCardStat($where)
+    {
+        $db = Dever::db('channel/card');
+        $total = $db->count($where);
+
+        $where['use_status'] = 2;
+        $yi = $db->count($where);
+
+        $where['use_status'] = 1;
+        $wei = $db->count($where);
+        return array
+        (
+            array
+            (
+                # 一共24
+                'span' => 8,
+                'name' => '总数量',
+                'value' => $total,
+            ),
+            array
+            (
+                'span' => 8,
+                'name' => '已用数量',
+                'value' => $yi,
+            ),
+            array
+            (
+                'span' => 8,
+                'name' => '剩余可用数量',
+                'value' => $wei,
+            ),
+        );
+    }
 }

+ 8 - 8
src/dai/channel/table/manage/card.php → src/dai/channel/manage/card.php

@@ -12,7 +12,7 @@ return array
 (
     'list' => array
     (
-        'stat' => 'channel/manage.showCardStat',
+        'stat' => 'Channel/Manage/Lib/Data.showCardStat',
         'where' => array('channel_id' => $channel_id),
         'field'      => array
         (
@@ -20,12 +20,12 @@ return array
             'seller_id' => array
             (
                 'name' => '商户',
-                'show' => '{seller_id} > 0 ? Dever::db("info", "seller")->find({seller_id})["name"] : "无"',
+                'show' => '{seller_id} > 0 ? Dever::db("seller/info")->find({seller_id})["name"] : "无"',
             ),
             'goods' => array
             (
                 'name' => '商品',
-                'show' => 'Dever::load("manage", "goods")->showGoodsInfo("{goods_id}", "{sku_id}")',
+                'show' => 'Dever::load("Goods/Manage/Lib/Data")->showGoodsInfo("{goods_id}", "{sku_id}")',
             ),
             'number' => array
             (
@@ -66,14 +66,14 @@ return array
             'seller_id' => array
             (
                 'name' => '选择商户',
-                'option'     => 'Dever::load("seller/manage")->getList('.$channel_id.')',
+                'option'     => 'Dever::load("seller/Manage/Lib/Data")->getList('.$channel_id.')',
             ),
             'sku_id' => array
             (
                 'name' => '商品',
                 'placeholder' => '请选择商品',
                 'type' => 'cascader',
-                'option'    => 'Dever::load("goods/manage")->getGoodsSku("km")',
+                'option'    => 'Dever::load("Goods/Manage/Lib/Data")->getGoodsSku("km")',
                 'search' => function($key, $type, $value) {
                     $value = end($value);
                     return $value;
@@ -93,7 +93,7 @@ return array
             'seller_id' => array
             (
                 'desc' => '请选择要分配卡密的商户,上传后将自动分配给这个商户,如未选择,则为通用卡密,任何商户都可以购买',
-                'option'     => 'Dever::load("seller/manage")->getList('.$channel_id.')',
+                'option'     => 'Dever::load("Seller/Manage/Lib/Data")->getList('.$channel_id.')',
             ),
             'channel_id' => array
             (
@@ -104,8 +104,8 @@ return array
                 # 数据来源
                 'name' => '商品',
                 'type' => 'cascader',
-                'option'    => 'Dever::load("goods/manage")->getGoods("km")',
-                'remote' => 'goods/manage.getSku',
+                'option'    => 'Dever::load("Goods/Manage/Lib/Data")->getGoods("km")',
+                'remote' => 'Goods/Manage/Api/Main.getSku',
                 # 无需默认值
                 //'remote_default' => false,
                 'rules' => true,

+ 3 - 3
src/dai/channel/table/manage/card_upload.php → src/dai/channel/manage/card_upload.php

@@ -13,14 +13,14 @@ return array
             'seller_id' => array
             (
                 'desc' => '请选择要分配卡密的商户,上传后将自动分配给这个商户,如未选择,则为通用卡密,任何商户都可以购买',
-                'option'     => 'Dever::load("seller/manage")->getList('.$channel_id.')',
+                'option'     => 'Dever::load("Seller/Manage/Lib/Data")->getList('.$channel_id.')',
             ),
             'goods' => array
             (
                 # 数据来源
                 'name' => '商品',
                 'type' => 'cascader',
-                'option'    => 'Dever::load("goods/manage")->getGoods("km")',
+                'option'    => 'Dever::load("Goods/Manage/Lib/Data")->getGoods("km")',
                 'rules' => true,
             ),
             'file' => array
@@ -34,6 +34,6 @@ return array
                 'multiple' => false,
             ),
         ),
-        'start' => 'channel/manage.uploadCard',
+        'start' => 'Channel/Manage/Lib/Data.uploadCard',
     ),
 );

+ 1 - 1
src/dai/channel/table/manage/config.php → src/dai/channel/manage/config.php

@@ -21,7 +21,7 @@ return array
             'load' => 'channel/config',
             'add' => '新增',
             'key' => 'id',
-            'data' => 'channel/config.getTree',
+            'data' => 'Channel/Manage/Lib/Data.getTree',
             'active' => 1,
             'where' => 'id',
         ),

+ 0 - 0
src/dai/channel/table/manage/core.php → src/dai/channel/manage/core.php


+ 2 - 2
src/dai/channel/table/manage/goods.php → src/dai/channel/manage/goods.php

@@ -13,8 +13,8 @@ return array
                 'type' => 'cascader',
                 # 仅显示最后一级
                 //'all' => false,
-                'option'    => 'Dever::call("goods/manage.getGoods")',
-                'remote' => 'goods/manage.getAllSku',
+                'option'    => 'Dever::call("Goods/Manage/Lib/Data.getGoods")',
+                'remote' => 'Goods/Manage/Api/Main.getAllSku',
                 # 无需默认值
                 'remote_default' => false,
                 'rules' => true,

+ 0 - 0
src/dai/channel/table/manage/info.php → src/dai/channel/manage/info.php


+ 0 - 0
src/dai/channel/table/manage/set.php → src/dai/channel/manage/set.php


+ 1 - 1
src/dai/channel/table/card_upload.php

@@ -15,7 +15,7 @@ return array
             'name'      => '分配商户',
             'type'      => 'int(11)',
             'default'   => '-1',
-            'value'     => 'Dever::load("seller/manage")->getList()',
+            'value'     => 'Dever::load("Seller/Manage/Lib/Data.getList")',
         ),
 
         'goods' => array

+ 0 - 469
src/dai/seller/api/Task.php

@@ -1,469 +0,0 @@
-<?php namespace Seller\Api;
-use Dever;
-use Dever\Helper\Redis;
-use Dever\Helper\Str;
-use Dever\Helper\Cmd;
-use Dever\Helper\Date;
-ini_set("memory_limit", -1);
-class Task
-{
-    # 每个商户一个进程,暂时不做
-    public function act()
-    {
-        $seller = Dever::db('info', 'seller')->select(array('status' => 1));
-        if ($seller) {
-            foreach ($seller as $k => $v) {
-
-            }
-        }
-    }
-
-    public function cron()
-    {
-        while(1) {
-            try {
-                # 获取当前执行的进程数量
-                $num = $this->getNum();
-                if ($num >= 500) {
-                    # 等会儿再执行
-                    sleep(30);
-                }
-                $data = Redis::pop('submit_' . DEVER_PROJECT);
-                if ($data) {
-                    $this->popen($data);
-                }
-            } catch (\Exception $e) {
-                $this->redis = false;
-            }
-        };
-    }
-
-    # 将数据推到子进程处理
-    private function popen($order)
-    {
-        //$command = 'php /www/'.DEVER_PROJECT.'/src/dai/seller/index.php \'{"l":"task.run","order":"'.Str::encode($order).'"}\'';
-        //Cmd::shell($command);
-        Cmd::run('task.run', array('order' => Str::encode($order)), 'seller');
-    }
-
-    # 获取当前执行的子进程数量
-    private function getNum()
-    {
-        $command = 'ps -ef | grep task.run | grep -v grep | wc -l';
-        $num = exec($command);
-        return $num;
-    }
-
-    public function run()
-    {
-        $order = Str::decode(Dever::input('order'));
-        $info = Dever::db('order', 'seller')->find($order);
-        if ($info) {
-            Dever::load('order', 'seller')->handle($info);
-        }
-    }
-
-    # 每日整理订单数据
-    //public function order_commit(){}
-    public function order()
-    {
-        # 获取昨天的时间
-        $time = \Dever\Helper\Date::day();
-        $where['cdate'] = array('<', $time[0]);
-        $where['status'] = array('>=', 10);
-        $order = Dever::db('order', 'seller')->select($where);
-        foreach ($order as $k => $v) {
-            if ($v['finish_date'] > 0) {
-                $id = $v['id'];
-                unset($v['id']);
-                $info = Dever::db('order_log1', 'seller')->find(array('order_num' => $v['order_num']));
-                if (!$info) {
-                    $info = Dever::db('order_log1', 'seller')->insert($v);
-                    if ($info) {
-                        Dever::db('order', 'seller')->delete($id);
-                    }
-                }
-            }
-        }
-        $order = Dever::db('order_log2', 'seller')->select($where);
-        foreach ($order as $k => $v) {
-            if ($v['finish_date'] > 0) {
-                $id = $v['id'];
-                unset($v['id']);
-                $info = Dever::db('order_log3', 'seller')->insert($v);
-                if ($info) {
-                    Dever::db('order_log2', 'seller')->delete($id);
-                }
-            }
-        }
-        $this->cash();
-    }
-
-    # 统计
-    public function stat()
-    {
-        $day = Dever::input('day');
-        if ($day) {
-            $time = \Dever\Helper\Date::day($day);
-        } else {
-            # 获取昨天的时间
-            $time = \Dever\Helper\Date::day(1);
-        }
-        
-        $where['cdate'] = array('>=', $time[0]);
-        $where['cdate#'] = array('<=', $time[1]);
-        $order = Dever::db('order_log1', 'seller')->select($where);
-        $order_error = Dever::db('order_log3', 'seller')->select($where);
-        $data = array();
-        $default = array
-        (
-            'total_num' => 0,
-            'success_num' => 0,
-            'error_num' => 0,
-            'total_cash' => 0,
-            'success_cash' => 0,
-            'error_cash' => 0,
-            'seller_actual_cash' => 0,
-            'channel_actual_cash' => 0,
-            'profit_cash' => 0,
-            'data' => array(),
-        );
-        foreach ($order as $k => $v) {
-            # 整理这一天成功的和失败的
-            $day = \Dever\Helper\Date::mktime(date('Y-m-d 00:00:00', $v['cdate']));
-            $this->statItem($data, $day, '_1', $default, $v);
-            $this->statItem($data, $day, 'seller_' . $v['seller_id'], $default, $v, $v['channel_id']);
-            if ($v['channel_id']) {
-                $this->statItem($data, $day, 'channel_' . $v['channel_id'], $default, $v, $v['seller_id']);
-            }
-        }
-
-        foreach ($order_error as $k => $v) {
-            # 整理这一天成功的和失败的
-            $day = \Dever\Helper\Date::mktime(date('Y-m-d 00:00:00', $v['cdate']));
-            $this->statItem($data, $day, '_1', $default, $v);
-            $this->statItem($data, $day, 'seller_' . $v['seller_id'], $default, $v, $v['channel_id']);
-            if ($v['channel_id']) {
-                $this->statItem($data, $day, 'channel_' . $v['channel_id'], $default, $v, $v['seller_id']);
-            }
-        }
-
-        if ($data) {
-            foreach ($data as $k => $v) {
-                foreach ($v as $k1 => $v1) {
-                    $v1['data'] = Dever::json_encode($v1['data']);
-                    $k1 = explode('_', $k1);
-                    $w = array();
-                    $w['day'] = $k;
-                    $table = 'order_stat';
-                    if ($k1[0]) {
-                        $w[$k1[0] . '_id'] = $k1[1];
-                        $table .= '_' . $k1[0];
-                    }
-                    $info = Dever::db($table, 'seller')->find($w);
-                    if ($info) {
-                        Dever::db($table, 'seller')->update($info['id'], $v1);
-                    } else {
-                        $v1 = array_merge($v1, $w);
-                        Dever::db($table, 'seller')->insert($v1);
-                    }
-                }
-            }
-        }
-    }
-
-    public function statItem(&$data, $day, $mid, $default, $v, $rid = false)
-    {
-        if (!isset($data[$day][$mid])) {
-            $data[$day][$mid] = $default;
-        }
-        if ($rid) {
-            if (!isset($data[$day][$mid]['data'][$rid])) {
-                $data[$day][$mid]['data'][$rid] = $default;
-            }
-        }
-        
-        $data[$day][$mid]['total_num'] += $v['num'];
-        $data[$day][$mid]['total_cash'] += $v['cash'];
-        if ($rid) {
-            $data[$day][$mid]['data'][$rid]['total_num'] += $v['num'];
-            $data[$day][$mid]['data'][$rid]['total_cash'] += $v['cash'];
-        }
-        if ($v['status'] == 10) {
-            $data[$day][$mid]['success_num'] += $v['num'];
-            $data[$day][$mid]['success_cash'] += $v['cash'];
-            $data[$day][$mid]['seller_actual_cash'] += $v['price'];
-            $data[$day][$mid]['channel_actual_cash'] += $v['buy_price'];
-            $data[$day][$mid]['profit_cash'] += ($v['price']-$v['buy_price']);
-            if ($rid) {
-                $data[$day][$mid]['data'][$rid]['success_num'] += $v['num'];
-                $data[$day][$mid]['data'][$rid]['success_cash'] += $v['cash'];
-                $data[$day][$mid]['data'][$rid]['seller_actual_cash'] += $v['price'];
-                $data[$day][$mid]['data'][$rid]['channel_actual_cash'] += $v['buy_price'];
-                $data[$day][$mid]['data'][$rid]['profit_cash'] += ($v['price']-$v['buy_price']);
-            }
-
-        } elseif ($v['status'] == 11) {
-            $data[$day][$mid]['error_num'] += $v['num'];
-            $data[$day][$mid]['error_cash'] += $v['cash'];
-            if ($rid) {
-                $data[$day][$mid]['data'][$rid]['error_num'] += $v['num'];
-                $data[$day][$mid]['data'][$rid]['error_cash'] += $v['cash'];
-            }
-        }
-    }
-
-    # 每小时统计一次正确的商户余额
-    public function yue()
-    {
-        $this->cash();
-        return;
-        $where['status'] = 1;
-        $seller = Dever::db('info', 'seller')->load($where);
-        foreach ($seller as $k => $v) {
-            $data = Dever::db('log1', 'seller')->select(array('seller_id' => $v['id']), array('col' => 'sum(cash)'));
-            if ($data && isset($data[0]['sum'])) {
-                //$sum = $data[0]['sum'] - $v['credit'];
-                $sum = $data[0]['sum'];
-                //Dever::db('info', 'seller')->update($v['id'], array('cash' => $sum));
-            }
-        }
-    }
-
-    # 每5分钟跑一次回调
-    public function callback()
-    {
-        $where['status'] = array('>=', 10);
-        $where['seller_callback_num'] = array('<=', 5);
-        $where['seller_callback_date'] = array('<=', time() + 300);
-        $where['finish_date'] = $where['seller_callback_date'];
-        $where['seller_callback'] = array('!=', 'ok');
-        $order = Dever::db('order', 'seller')->select($where);
-        foreach ($order as $k => $v) {
-            $msg = '';
-            if ($v['status'] == 10) {
-                $msg = 'ok';
-            } elseif ($v['status'] == 11) {
-                $msg = 'error';
-            }
-            if ($msg) {
-                Dever::load('order', 'seller')->notify($v, $msg);
-            }
-        }
-        $order = Dever::db('order_log2', 'seller')->select($where);
-        foreach ($order as $k => $v) {
-            $msg = '';
-            if ($v['status'] == 10) {
-                $msg = 'ok';
-            } elseif ($v['status'] == 11) {
-                $msg = 'error';
-            }
-            if ($msg) {
-                Dever::load('order_log2', 'seller')->notify($v, $msg, array(), 5, 1, 'order_log2');
-            }
-        }
-    }
-
-    # 每5分钟跑一次处理中
-    public function chuli()
-    {
-        $where['status'] = 1;
-        $where['cdate'] = array('<=', time() - 1800);
-        $order = Dever::db('order', 'seller')->select($where);
-
-        $test = Dever::input('test');
-        if ($test == 1) {
-            print_r($order);die;
-        }
-        foreach ($order as $k => $v) {
-            Dever::load('order', 'seller')->handle($v);
-        }
-    }
-
-    # 插入测试数据
-    public function test()
-    {
-        return;
-        $where = array();
-        //$where['id'] = '65c345d7d46ba46b32041d32';
-        $where['status'] = 10;
-        $set = array();
-        //$where['sku_id'] = 18;
-        //$set['limit'] = 10;
-        //$set['order'] = 'total desc';
-        //$set['col'] = 'id,cash,seller_id';
-        //$set['group'] = 'cash';
-        //$set['col'] = 'sum(cash)';
-        //$info = Dever::db('order_log1', 'seller')->count($where, $set);
-        //print_r($info);die;
-        $order = Dever::db('order', 'seller')->select([]);
-        foreach ($order as $k => $v) {
-            //$v['cdate'] = time();
-            //unset($v['id']);
-            $id = Dever::db('order_log1', 'seller')->insert($v);
-            print_r($id);die;
-        }
-        $this->test();
-    }
-
-    # 历史数据整理
-    public function history_order()
-    {
-        $time = '2024-02-15 00:00:00';
-        $time = Date::mktime($time);
-        $where['cdate'] = array('>=', $time);
-        $order = Dever::db('order_bak', 'seller')->load($where);
-        foreach ($order as $k => $v) {
-            $order_log = Dever::db('order_log1', 'seller')->find(array('order_num' => $v['order_num']));
-            if (!$order_log) {
-                Dever::db('order_log1', 'seller')->insert($v);
-            }
-        }
-    }
-
-    # 将备份订单迁移回来
-    public function remove_bak()
-    {
-        # 迁移2个月前的数据
-        list($start, $end) = Date::month(2);
-        $where['status'] = 11;
-        $order = Dever::db('order_bak', 'seller')->load($where);
-        $test = Dever::input('test');
-        if ($order) {
-            foreach ($order as $k => $v) {
-                if ($test == 1) {
-                    $v['cdate_string'] = date('Y-m-d', $v['cdate']);
-                    print_r($v);die;
-                }
-                $id = $v['id'];
-                unset($v['id']);
-                //$info = Dever::db('order_log1', 'seller')->find(array('order_num' => $v['order_num']));
-                $info = false;
-                if (!$info) {
-                    $info = Dever::db('order_log1', 'seller')->insert($v);
-                }
-                if ($info) {
-                    Dever::db('order_bak', 'seller')->delete($id);
-                }
-            }
-        }
-    }
-
-    # 将历史订单迁移到备份中
-    public function bak()
-    {
-        # 迁移2个月前的数据
-        list($start, $end) = Date::month(2);
-        $where['cdate'] = array('<=', $end);
-        $where['status'] = 11;
-        $set['order'] = 'id desc';
-        $order = Dever::db('order_log3', 'seller')->load($where, $set);
-        $test = Dever::input('test');
-        if ($order) {
-            foreach ($order as $k => $v) {
-                if ($test == 1) {
-                    $v['cdate_string'] = date('Y-m-d', $v['cdate']);
-                    print_r($v);die;
-                }
-                $id = $v['id'];
-                unset($v['id']);
-                $info = Dever::db('order_bak', 'seller')->find(array('order_num' => $v['order_num']));
-                //$info = false;
-                if (!$info) {
-                    $info = Dever::db('order_bak', 'seller')->insert($v);
-                }
-                if ($info) {
-                    Dever::db('order_log3', 'seller')->delete($id);
-                }
-            }
-        }
-    }
-
-    # 迁移失败订单
-    public function fail()
-    {
-        $where['status'] = 11;
-        $set['order'] = 'id asc';
-        $set['limit'] = '0,100000';
-        $order = Dever::db('order_log3', 'seller')->load($where, $set);
-        if ($order) {
-            foreach ($order as $k => $v) {
-                $id = $v['id'];
-                unset($v['id']);
-                //$info = Dever::db('order_log3', 'seller')->find(array('order_num' => $v['order_num']));
-                $info = false;
-                if (!$info) {
-                    $info = Dever::db('order_log1', 'seller')->insert($v);
-                }
-                if ($info) {
-                    Dever::db('order_log3', 'seller')->delete($id);
-                }
-            }
-        }
-    }
-
-    public function yes()
-    {
-        $where['status'] = 10;
-        $order = Dever::db('order_log1', 'seller')->select($where);
-        foreach ($order as $k => $v) {
-            if ($v['channel_callback']) {
-                $temp = Dever::json_decode($v['channel_callback']);
-                if (isset($temp['official_order_num'])) {
-                    $up['official_order_num'] = $temp['official_order_num'];
-                }
-                if (isset($temp['voucher'])) {
-                    $up['official_order_num'] = $temp['voucher'];
-                }
-                if (isset($up) && $up) {
-                    Dever::db('order_log1', 'seller')->update($v['id'], $up);
-                }
-            }
-        }
-    }
-
-    # 计算正确的余额
-    public function cash()
-    {
-        $where['status'] = array('!=', 11);
-        $order = Dever::db('order', 'seller')->select($where);
-        $num = array();
-        foreach ($order as $k => $v) {
-            if (!isset($num[$v['seller_id']])) {
-                $num[$v['seller_id']] = 0;
-            }
-            $num[$v['seller_id']] += $v['num'] * $v['price'];
-        }
-        
-        $order = Dever::db('order_log1', 'seller')->select($where);
-        foreach ($order as $k => $v) {
-            if (!isset($num[$v['seller_id']])) {
-                $num[$v['seller_id']] = 0;
-            }
-            $num[$v['seller_id']] += $v['num'] * $v['price'];
-        }
-
-        
-        $order = Dever::db('order_bak', 'seller')->select($where);
-        foreach ($order as $k => $v) {
-            if (!isset($num[$v['seller_id']])) {
-                $num[$v['seller_id']] = 0;
-            }
-            $num[$v['seller_id']] += $v['num'] * $v['price'];
-        }
-
-        foreach ($num as $k => $v) {
-            $seller = Dever::db('info', 'seller')->find($k);
-            $up['cash'] = $seller['p_cash'] - $v;
-            $data = Dever::db('log1', 'seller')->select(array('seller_id' => $k, 'type' => 2));
-            if ($data) {
-                $s = 0;
-                foreach ($data as $k1 => $v1) {
-                    $s += $v1['cash'];
-                }
-                $up['cash'] += $s;
-            }
-            Dever::db('info', 'seller')->update($k, $up);
-        }
-    }
-}

+ 200 - 207
src/bao/connect/api/Notify.php → src/dai/seller/app/api/Notify.php

@@ -1,208 +1,201 @@
-<?php namespace Connect\Api;
-use Dever;
-use Connect\Lib\Func\Api;
-class Notify extends Api
-{
-    public function common()
-    {
-        //$param = '{"s":"132dcszvteLAx3r5eKrjarbGyJilBFECGu2F7mCX-H6K2_w","appid":"app483393213726","order_id":"Q202401040798155761553480","merchant_order_id":"yk18f2401040253000002","status":2,"cash":1000,"msg":"充值成功","actual_cash":1004.9999999999999,"time":1704308034101,"nonce":"fa0912fcfeb3ddfec4e821c26","signature":"d58295706e069e61a4a4ef9428ae0d155b36fae6"}';
-        //$input = Dever::json_decode($param);
-        $input = Dever::input();
-        if (!isset($input['s'])) {
-            $this->error('error');
-        }
-        $s = \Dever\Helper\Str::decode($input['s']);
-        if ($s) {
-            list($connect_id, $api_id, $order_id) = explode('|', $s);
-        } elseif (isset($input['order_num'])) {
-            $order_id = Dever::db('order', 'seller')->find(array('order_num' => $input['order_num']));
-            if (!$order_id) {
-                $this->error('error');
-            }
-            $channel = Dever::db('info', 'channel')->find($order_id['channel_id']);
-            if (!$channel) {
-                $this->error('order error');
-            }
-            $connect_id = $channel['connect_id'];
-            $api = Dever::db('api', 'connect')->find(array('connect_id' => $connect_id, 'type' => 1));
-            if (!$api) {
-                $this->error('order error');
-            }
-            $api_id = $api['id'];
-
-        } else {
-            $this->error('error');
-        }
-        $this->connect = Dever::db('info', 'connect')->find($connect_id);
-        $this->info = Dever::db('api', 'connect')->find($api_id);
-        
-        unset($input['s']);
-        unset($input['l']);
-        if (!$input) {
-            $input = file_get_contents("php://input");
-            if ($input) {
-                $input = json_decode($input, true);
-                if (is_array($input)) {
-                    if (isset($input['s'])) {
-                        unset($input['s']);
-                    }
-                    if (isset($input['l'])) {
-                        unset($input['l']);
-                    }
-                } else {
-                    $this->error('error');
-                }
-            }
-        }
-        if (!$input) {
-            $this->error('error');
-        }
-        $this->load($input, $connect_id, $api_id, $order_id);
-    }
-
-    private function load($input, $connect_id, $api_id, $order_id)
-    {
-        //Dever::log($input, 'notify');
-        if (is_array($order_id)) {
-            $order = $order_id;
-        } else {
-            $order = Dever::db('order', 'seller')->find($order_id);
-        }
-        if (!$order || $order['status'] >= 10) {
-            $this->error('order error');
-        }
-        $channel = Dever::db('info', 'channel')->find($order['channel_id']);
-        if (!$channel) {
-            $this->error('channel error');
-        }
-        $this->connect['appsecret'] = $channel['appsecret'];
-
-        $code = Dever::db('api_notify_code', 'connect')->select(array('api_id' => $api_id));
-
-        $status = 0;
-        if ($code) {
-            foreach ($code as $k => $v) {
-                if (isset($input[$v['key']]) && $input[$v['key']] == $v['value']) {
-                    $status = $v['type'];
-                }
-            }
-        }
-        $data = $input;
-        $data['status'] = $status;
-        $data = $this->service($data);
-
-        $msg = '';
-        if ($status == 1) {
-            $msg = 'ok';
-        } elseif ($status == 2) {
-            $msg = 'error';
-        }
-        if ($this->info['notify_sign_col']) {
-            $this->info['sign_col'] = $this->info['notify_sign_col'];
-        }
-        if ($sign = Dever::issets($input, $this->connect['sign_name'])) {
-            unset($input[$this->connect['sign_name']]);
-            unset($input['l']);
-            /*
-            $string = '';
-            if ($sign != $this->sign($input, $string)) {
-                $this->error('sign error');
-            }*/
-        }
-        if ($msg) {
-            $update = array();
-            $update['official_msg'] = $data['official_msg'] ?? '';
-            $update['official_order_num'] = $data['official_order_num'] ?? '';
-            $update['channel_callback'] = json_encode($input, JSON_UNESCAPED_UNICODE);
-            $update['channel_callback_date'] = time();
-
-            if ($msg != 'ok') {
-                $channel_num = Dever::db('channel', 'seller')->count(array('seller_id' => $order['seller_id'], 'goods_id' => $order['goods_id'], 'status' => 1));
-                if ($channel_num > 1) {
-                    # 记录渠道错误信息
-                    $selected = array();
-                    $selected[$order['channel_id']] = true;
-                    $order_error_data = Dever::db('order_error', 'seller')->select(array('order_num' => $order['order_num']));
-                    if ($order_error_data) {
-                        foreach ($order_error_data as $k => $v) {
-                            $selected[$v['channel_id']] = true;
-                        }
-                    }
-                    $num = count($selected);
-                    $channel_num = $channel_num - $num;
-                    if ($channel_num > 0) {
-                        $order_error = array();
-                        $order_error['order_num'] = $order['order_num'];
-                        $order_error['buy_price'] = $order['buy_price'];
-                        $order_error['channel_id'] = $order['channel_id'];
-                        $order_error['channel_goods_id'] = $order['channel_goods_id'];
-                        $order_error['channel_goods_discount'] = $order['channel_goods_discount'];
-                        $order_error['channel_order_date'] = $order['channel_order_date'];
-                        $order_error['channel_order_num'] = $order['channel_order_num'];
-                        $order_error['channel_request'] = $order['channel_request'];
-                        $order_error['channel_response'] = $order['channel_response'];
-                        $order_error['channel_callback'] = $update['channel_callback'];
-                        $order_error['channel_callback_date'] = $update['channel_callback_date'];
-                        Dever::db('order_error', 'seller')->insert($order_error);
-                        Dever::load('order', 'seller')->handleAct($order, $selected);
-                    } else {
-                        Dever::load('order', 'seller')->notify($order, $msg, $update);
-                    }
-                } else {
-                    Dever::load('order', 'seller')->notify($order, $msg, $update);
-                }
-            } else {
-                Dever::load('order', 'seller')->notify($order, $msg, $update);
-            }
-            echo $this->info['notify_success'];die;
-        }
-        $this->error('error');
-    }
-
-    private function error($msg)
-    {
-        if ($this->info && $this->info['notify_error']) {
-            if ($this->info['notify_error'] == 500) {
-                header("HTTP/1.1 500 Internal Server Error");
-                header("Status: 500 Internal Server Error");
-            } else {
-                echo $this->info['notify_error'];die;
-            }
-        }
-        echo $msg;die;
-    }
-
-    # 生成回调
-    public function callback()
-    {
-        //$param = '{"l":"notify.callback","t":"4-5-user_order","userid":"41438","order_id":"24020213181441438abbf5b39f","account":"15810090811","amount":"100","price":"104.1","state":"failed","user_order":"C2024020251094338265393","sign":"0447CC15F7D0218A1C5C09160A12A19A","voucher":""}';
-        //$input = Dever::json_decode($param);
-        $input = Dever::input();
-        if (!isset($input['t'])) {
-            $this->error('error');
-        }
-        $file = file_get_contents("php://input");
-        if ($file) {
-            $file = json_decode($file, true);
-            if ($file) {
-                $input = array_merge($file, $input);
-            }
-        }
-        $temp = explode('-', $input['t']);
-        $connect_id = $temp[0];
-        $api_id = $temp[1];
-        $order_key = $temp[2];
-        $this->connect = Dever::db('info', 'connect')->find($connect_id);
-        $this->info = Dever::db('api', 'connect')->find($api_id);
-        if (!isset($input[$order_key])) {
-            $this->error('error');
-        }
-        $order_id = $input[$order_key];
-        unset($input['t']);
-        $order = Dever::db('order', 'seller')->find(array('order_num' => $order_id));
-        if (!$order || $order['status'] >= 10) {
-            $this->error('order error');
-        }
-        $this->load($input, $connect_id, $api_id, $order);
-    }
+<?php namespace Seller\Api;
+use Dever;
+use Connect\Lib\Func\Api;
+class Notify extends Api
+{
+    # 渠道发起回调
+    public function common()
+    {
+        //$param = '{"s":"132dcszvteLAx3r5eKrjarbGyJilBFECGu2F7mCX-H6K2_w","appid":"app483393213726","order_id":"Q202401040798155761553480","merchant_order_id":"yk18f2401040253000002","status":2,"cash":1000,"msg":"充值成功","actual_cash":1004.9999999999999,"time":1704308034101,"nonce":"fa0912fcfeb3ddfec4e821c26","signature":"d58295706e069e61a4a4ef9428ae0d155b36fae6"}';
+        //$input = Dever::json_decode($param);
+        $input = Dever::input();
+        if (!isset($input['s'])) {
+            $this->error('error');
+        }
+        $s = \Dever\Helper\Str::decode($input['s']);
+        if ($s) {
+            list($connect_id, $api_id, $order_id) = explode('|', $s);
+        } elseif (isset($input['order_num'])) {
+            $order_id = Dever::db('seller/order')->find(array('order_num' => $input['order_num']));
+            if (!$order_id) {
+                $this->error('error');
+            }
+            $channel = Dever::db('channel/info')->find($order_id['channel_id']);
+            if (!$channel) {
+                $this->error('order error');
+            }
+            $connect_id = $channel['connect_id'];
+            $api = Dever::db('connect/api')->find(array('connect_id' => $connect_id, 'type' => 1));
+            if (!$api) {
+                $this->error('order error');
+            }
+            $api_id = $api['id'];
+
+        } else {
+            $this->error('error');
+        }
+        $this->connect = Dever::db('connect/info')->find($connect_id);
+        $this->info = Dever::db('connect/api')->find($api_id);
+        
+        unset($input['s']);
+        unset($input['l']);
+        if (!$input) {
+            $input = file_get_contents("php://input");
+            if ($input) {
+                $input = json_decode($input, true);
+                if (is_array($input)) {
+                    if (isset($input['s'])) {
+                        unset($input['s']);
+                    }
+                    if (isset($input['l'])) {
+                        unset($input['l']);
+                    }
+                } else {
+                    $this->error('error');
+                }
+            }
+        }
+        if (!$input) {
+            $this->error('error');
+        }
+        $this->load($input, $connect_id, $api_id, $order_id);
+    }
+
+    private function load($input, $connect_id, $api_id, $order_id)
+    {
+        //Dever::log($input, 'notify');
+        if (is_array($order_id)) {
+            $order = $order_id;
+        } else {
+            $order = Dever::db('seller/order')->find($order_id);
+        }
+        if (!$order || $order['status'] >= 10) {
+            $this->error('order error');
+        }
+        $channel = Dever::db('channel/info')->find($order['channel_id']);
+        if (!$channel) {
+            $this->error('channel error');
+        }
+        $this->connect['appsecret'] = $channel['appsecret'];
+
+        $code = Dever::db('connect/api_notify_code')->select(array('api_id' => $api_id));
+
+        $status = 0;
+        if ($code) {
+            foreach ($code as $k => $v) {
+                if (isset($input[$v['key']]) && $input[$v['key']] == $v['value']) {
+                    $status = $v['type'];
+                }
+            }
+        }
+        $data = $input;
+        $data['status'] = $status;
+        $data = $this->service($data);
+
+        $msg = '';
+        if ($status == 1) {
+            $msg = 'ok';
+        } elseif ($status == 2) {
+            $msg = 'error';
+        }
+        if ($this->info['notify_sign_col']) {
+            $this->info['sign_col'] = $this->info['notify_sign_col'];
+        }
+        if ($sign = Dever::issets($input, $this->connect['sign_name'])) {
+            unset($input[$this->connect['sign_name']]);
+            unset($input['l']);
+            /*
+            $string = '';
+            if ($sign != $this->sign($input, $string)) {
+                $this->error('sign error');
+            }*/
+        }
+        if ($msg) {
+            $update = array();
+            $update['official_msg'] = $data['official_msg'] ?? '';
+            $update['official_order_num'] = $data['official_order_num'] ?? '';
+            $update['channel_callback'] = json_encode($input, JSON_UNESCAPED_UNICODE);
+            $update['channel_callback_date'] = time();
+
+            if ($msg != 'ok') {
+                $channel_num = Dever::db('seller/channel')->count(array('seller_id' => $order['seller_id'], 'goods_id' => $order['goods_id'], 'status' => 1));
+                if ($channel_num > 1) {
+                    # 记录渠道错误信息
+                    $selected = array();
+                    $selected[$order['channel_id']] = true;
+                    $order_error_data = Dever::db('seller/order_channel_error')->select(array('order_id' => $order['id']));
+                    if ($order_error_data) {
+                        foreach ($order_error_data as $k => $v) {
+                            $selected[$v['channel_id']] = true;
+                        }
+                    }
+                    $num = count($selected);
+                    $channel_num = $channel_num - $num;
+                    if ($channel_num > 0) {
+                        $order_error = array();
+                        $order_error['order_id'] = $order['id'];
+                        $order_error['order_channel_id'] = $order['order_channel_id'];
+                        $order_error['channel_id'] = $order['channel_id'];
+                        Dever::db('seller/order_channel_error')->insert($order_error);
+                        Dever::load(\Seller\Lib\Order::class)->handleAct($order, $selected);
+                    } else {
+                        Dever::load(\Seller\Lib\Order::class)->notify($order, $msg, $update);
+                    }
+                } else {
+                    Dever::load(\Seller\Lib\Order::class)->notify($order, $msg, $update);
+                }
+            } else {
+                Dever::load(\Seller\Lib\Order::class)->notify($order, $msg, $update);
+            }
+            echo $this->info['notify_success'];die;
+        }
+        $this->error('error');
+    }
+
+    private function error($msg)
+    {
+        if ($this->info && $this->info['notify_error']) {
+            if ($this->info['notify_error'] == 500) {
+                header("HTTP/1.1 500 Internal Server Error");
+                header("Status: 500 Internal Server Error");
+            } else {
+                echo $this->info['notify_error'];die;
+            }
+        }
+        echo $msg;die;
+    }
+
+    # 生成回调
+    public function callback()
+    {
+        //$param = '{"l":"notify.callback","t":"4-5-user_order","userid":"41438","order_id":"24020213181441438abbf5b39f","account":"15810090811","amount":"100","price":"104.1","state":"failed","user_order":"C2024020251094338265393","sign":"0447CC15F7D0218A1C5C09160A12A19A","voucher":""}';
+        //$input = Dever::json_decode($param);
+        $input = Dever::input();
+        if (!isset($input['t'])) {
+            $this->error('error');
+        }
+        $file = file_get_contents("php://input");
+        if ($file) {
+            $file = json_decode($file, true);
+            if ($file) {
+                $input = array_merge($file, $input);
+            }
+        }
+        $temp = explode('-', $input['t']);
+        $connect_id = $temp[0];
+        $api_id = $temp[1];
+        $order_key = $temp[2];
+        $this->connect = Dever::db('connect/info')->find($connect_id);
+        $this->info = Dever::db('connect/api')->find($api_id);
+        if (!isset($input[$order_key])) {
+            $this->error('error');
+        }
+        $order_id = $input[$order_key];
+        unset($input['t']);
+        $order = Dever::db('seller/order')->find(array('order_num' => $order_id));
+        if (!$order || $order['status'] >= 10) {
+            $this->error('order error');
+        }
+        $this->load($input, $connect_id, $api_id, $order);
+    }
 }

+ 8 - 16
src/dai/seller/api/Order.php → src/dai/seller/app/api/Order.php

@@ -27,8 +27,8 @@ class Order
 
     # 队列提交订单 不做任何数据库操作 先不实现
     //public function submit_commit(){}
-    public function submit_secure(){}
-    public function submit_token(){return $this->token();}
+    //public function submit_secure(){}
+    //public function submit_token(){return $this->token();}
     public function submit()
     {
         # 余额保存在redis中
@@ -48,12 +48,9 @@ class Order
         if (!$order_num) {
             Dever::error('请传入订单号');
         }
-        $info = Dever::db('order', 'seller')->find(array('seller_order_num' => $order_num));
+        $info = Dever::db('seller/order')->find(array('seller_order_num' => $order_num));
         if (!$info) {
-            $info = Dever::db('order_log2', 'seller')->find(array('seller_order_num' => $order_num));
-            if (!$info) {
-                Dever::error('订单不存在');
-            }
+            Dever::error('订单不存在');
         }
         $result['system_order_num'] = $info['order_num'];
         $result['order_num'] = $info['seller_order_num'];
@@ -97,7 +94,7 @@ class Order
             Dever::error('请传入订单号');
         }
 
-        $sku = Dever::db('info_sku', 'goods')->find(array('code' => $code));
+        $sku = Dever::db('goods/info_sku')->find(array('code' => $code));
         if (!$sku) {
             Dever::error('商品编码不存在');
         }
@@ -108,7 +105,7 @@ class Order
             }
             $sku['value'] = $cash;
         }
-        $goods = Dever::db('info', 'goods')->find($sku['info_id']);
+        $goods = Dever::db('goods/info')->find($sku['info_id']);
         if (!$goods) {
             Dever::error('商品不存在');
         }
@@ -116,7 +113,7 @@ class Order
             Dever::error('商品已下架');
         }
         $num = 1;
-        Dever::load('order', 'seller')->add($this->info, $goods, $sku, $account, $order, $num);
+        Dever::load(\Seller\Lib\Order::class)->add($this->info, $goods, $sku, $account, $order, $num);
         return array
         (
             'order_status' => 1,
@@ -130,12 +127,7 @@ class Order
         if (!$appkey) {
             Dever::error('appkey错误');
         }
-        /*
-        $this->info = Dever::cache('seller_' . $appkey);
-        if (!$this->info) {
-            $this->info = Dever::db('info', 'seller')->find(array('appkey' => $appkey));
-        }*/
-        $this->info = Dever::db('info', 'seller')->find(array('appkey' => $appkey));
+        $this->info = Dever::db('seller/info')->find(array('appkey' => $appkey));
         if (!$this->info) {
             Dever::error('商户不存在');
         }

+ 232 - 0
src/dai/seller/app/api/Task.php

@@ -0,0 +1,232 @@
+<?php namespace Seller\Api;
+use Dever;
+use Dever\Helper\Date;
+ini_set("memory_limit", -1);
+class Task
+{
+    # 每日整理订单数据
+    public function order()
+    {
+        # 获取昨天的时间
+        $time = \Dever\Helper\Date::day();
+        $where['status'] = array('>=', 10);
+        $where['cdate'] = array('<', $time[0]);
+        $order = Dever::db('seller/order')->load($where);
+        $cash = [];
+        foreach ($order as $v) {
+            if ($v['finish_date'] > 0) {
+                $id = $v['id'];
+                unset($v['id']);
+                $info = Dever::db('seller/order_record')->find(array('order_num' => $v['order_num']));
+                if (!$info) {
+                    $info = Dever::db('seller/order_record')->insert($v);
+                    if ($info) {
+                        Dever::db('seller/order')->delete($id);
+                        if (empty($cash[$v['seller_id']])) {
+                            $cash[$v['seller_id']] = 0;
+                        }
+                        if ($v['status'] == 10) {
+                            $cash[$v['seller_id']] -= $v['price'];
+                        }
+                    }
+                }
+            }
+        }
+
+        if ($cash) {
+            $day = date('Ymd', $time[0]);
+            foreach ($cash as $k => $v) {
+                Dever::load(\Seller\Lib\Info::class)->log($k, $v, 3, $day);
+            }
+        }
+        $this->yue();
+    }
+
+    # 每小时统计一次正确的商户余额
+    public function yue()
+    {
+        $seller = Dever::db('seller/info')->select(['status' => 1]);
+        if ($seller) {
+            foreach ($seller as $v) {
+                $price = Dever::db('seller/order')->sum(['status' => ['!=', 11]], 'num`*`price');
+                $cash = Dever::db('seller/log')->sum(array('seller_id' => $v['id']), 'cash');
+                $up['cash'] = $cash - $price;
+                Dever::db('seller/info')->update($v['id'], $up);
+            }
+        }
+    }
+
+    # 统计
+    public function stat()
+    {
+        $day = Dever::input('day');
+        if ($day) {
+            $time = \Dever\Helper\Date::day($day);
+        } else {
+            # 获取昨天的时间
+            $time = \Dever\Helper\Date::day(1);
+        }
+        
+        $where['cdate'] = array('>=', $time[0]);
+        $where['cdate#'] = array('<=', $time[1]);
+        $order = Dever::db('seller/order_record')->load($where);
+        $data = array();
+        $default = array
+        (
+            'total_num' => 0,
+            'success_num' => 0,
+            'error_num' => 0,
+            'total_cash' => 0,
+            'success_cash' => 0,
+            'error_cash' => 0,
+            'seller_actual_cash' => 0,
+            'channel_actual_cash' => 0,
+            'profit_cash' => 0,
+            'data' => array(),
+        );
+        foreach ($order as $k => $v) {
+            # 整理这一天成功的和失败的
+            $day = \Dever\Helper\Date::mktime(date('Y-m-d 00:00:00', $v['cdate']));
+            $this->statItem($data, $day, '_1', $default, $v);
+            $this->statItem($data, $day, 'seller_' . $v['seller_id'], $default, $v, $v['channel_id']);
+            if ($v['channel_id']) {
+                $this->statItem($data, $day, 'channel_' . $v['channel_id'], $default, $v, $v['seller_id']);
+            }
+        }
+
+        if ($data) {
+            foreach ($data as $k => $v) {
+                foreach ($v as $k1 => $v1) {
+                    $v1['data'] = Dever::json_encode($v1['data']);
+                    $k1 = explode('_', $k1);
+                    $w = array();
+                    $w['day'] = $k;
+                    $table = 'order_stat';
+                    if ($k1[0]) {
+                        $w[$k1[0] . '_id'] = $k1[1];
+                        $table .= '_' . $k1[0];
+                    }
+                    $info = Dever::db('seller/' . $table)->find($w);
+                    if ($info) {
+                        Dever::db('seller/' . $table)->update($info['id'], $v1);
+                    } else {
+                        $v1 = array_merge($v1, $w);
+                        Dever::db('seller/' . $table)->insert($v1);
+                    }
+                }
+            }
+        }
+    }
+
+    public function statItem(&$data, $day, $mid, $default, $v, $rid = false)
+    {
+        if (!isset($data[$day][$mid])) {
+            $data[$day][$mid] = $default;
+        }
+        if ($rid) {
+            if (!isset($data[$day][$mid]['data'][$rid])) {
+                $data[$day][$mid]['data'][$rid] = $default;
+            }
+        }
+        
+        $data[$day][$mid]['total_num'] += $v['num'];
+        $data[$day][$mid]['total_cash'] += $v['cash'];
+        if ($rid) {
+            $data[$day][$mid]['data'][$rid]['total_num'] += $v['num'];
+            $data[$day][$mid]['data'][$rid]['total_cash'] += $v['cash'];
+        }
+        if ($v['status'] == 10) {
+            $data[$day][$mid]['success_num'] += $v['num'];
+            $data[$day][$mid]['success_cash'] += $v['cash'];
+            $data[$day][$mid]['seller_actual_cash'] += $v['price'];
+            $data[$day][$mid]['channel_actual_cash'] += $v['buy_price'];
+            $data[$day][$mid]['profit_cash'] += ($v['price']-$v['buy_price']);
+            if ($rid) {
+                $data[$day][$mid]['data'][$rid]['success_num'] += $v['num'];
+                $data[$day][$mid]['data'][$rid]['success_cash'] += $v['cash'];
+                $data[$day][$mid]['data'][$rid]['seller_actual_cash'] += $v['price'];
+                $data[$day][$mid]['data'][$rid]['channel_actual_cash'] += $v['buy_price'];
+                $data[$day][$mid]['data'][$rid]['profit_cash'] += ($v['price']-$v['buy_price']);
+            }
+
+        } elseif ($v['status'] == 11) {
+            $data[$day][$mid]['error_num'] += $v['num'];
+            $data[$day][$mid]['error_cash'] += $v['cash'];
+            if ($rid) {
+                $data[$day][$mid]['data'][$rid]['error_num'] += $v['num'];
+                $data[$day][$mid]['data'][$rid]['error_cash'] += $v['cash'];
+            }
+        }
+    }
+
+    # 每5分钟跑一次回调
+    public function callback()
+    {
+        $where['seller_callback'] = 2;
+        $order = Dever::db('seller/order')->load($where);
+        foreach ($order as $v) {
+            $msg = '';
+            if ($v['status'] == 10) {
+                $msg = 'ok';
+            } elseif ($v['status'] == 11) {
+                $msg = 'error';
+            }
+            if ($msg) {
+                Dever::load(\Seller\Lib\Order::class)->notify($v, $msg);
+            }
+        }
+    }
+
+    # 将历史订单迁移到备份中
+    public function bak()
+    {
+        # 迁移2个月前的数据
+        list($start, $end) = Date::month(2);
+        $where['cdate'] = array('<=', $end);
+        $where['status'] = 11;
+        $order = Dever::db('seller/order_history')->load($where);
+        $test = Dever::input('test');
+        if ($order) {
+            foreach ($order as $k => $v) {
+                if ($test == 1) {
+                    $v['cdate_string'] = date('Y-m-d', $v['cdate']);
+                    print_r($v);die;
+                }
+                $id = $v['id'];
+                unset($v['id']);
+                $info = Dever::db('seller/order_bak')->find(array('order_num' => $v['order_num']));
+                //$info = false;
+                if (!$info) {
+                    $info = Dever::db('seller/order_bak')->insert($v);
+                }
+                if ($info) {
+                    Dever::db('seller/order_history')->delete($id);
+                }
+            }
+        }
+    }
+
+    # 定时查询渠道的余额
+    public function channel_yue()
+    {
+        $channel = Dever::db('channel/info')->select(array('type' => 1, 'status' => 1));
+        if ($channel) {
+            foreach ($channel as $k => $v) {
+                if ($v['connect_id'] && $v['host'] && $v['appkey'] && $v['appsecret']) {
+                    $connect = Dever::db('connect/info')->find($v['connect_id']);
+                    if ($connect) {
+                        $api = Dever::db('connect/api')->find(array('type' => 3, 'connect_id' => $connect['id']));
+                        if ($api) {
+                            # 获取余额
+                            $result = Dever::load(\Connect\Lib\Func\Api::class)->run(3, false, $v);
+                            if ($result['status'] == 1 && isset($result['data']['yue'])) {
+                                Dever::db('channel/info')->update($v['id'], array('cash' => $result['data']['yue']));
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        return 'ok';
+    }
+}

+ 9 - 11
src/dai/seller/api/Test.php → src/dai/seller/app/api/Test.php

@@ -14,36 +14,34 @@ class Test
     public function run()
     {
         $order = Dever::input('order');
-        $info = Dever::db('order', 'seller')->find($order);
-        Dever::load('order', 'seller')->handle($info);
+        $info = Dever::db('seller/order')->find($order);
+        Dever::load(\Seller\Lib\Order::class)->handle($info);
     }
 
     # 压力测试
     public function test()
     {
-        $code = 'yd100';
-        $info = Dever::db('info', 'seller')->find(1);
-        $sku = Dever::db('info_sku', 'goods')->find(array('code' => $code));
-        $goods = Dever::db('info', 'goods')->find($sku['info_id']);
+        $code = 'lt10';
+        $info = Dever::db('seller/info')->find(1);
+        $sku = Dever::db('goods/info_sku')->find(array('code' => $code));
+        $goods = Dever::db('goods/info')->find($sku['info_id']);
         $account = '1' . Str::rand(10, 0);
         $order = Str::order('T');
         $num = 1;
-        return Dever::load('order', 'seller')->add($info, $goods, $sku, $account, $order, $num);
+        return Dever::load(\Seller\Lib\Order::class)->add($info, $goods, $sku, $account, $order, $num);
     }
 
     # 将当前订单置为失败
     public function test_no()
     {
         while(1) {
-            $order = Dever::db('order', 'seller')->find(array('seller_id' => 1, 'status' => 2));
+            $order = Dever::db('seller/order')->find(array('seller_id' => 1, 'status' => 2));
             if ($order) {
                 $msg = 'error';
                 $update = array();
                 $update['official_msg'] = '';
                 $update['official_order_num'] = '';
-                $update['channel_callback'] = '';
-                $update['channel_callback_date'] = time();
-                Dever::load('order', 'seller')->notify($order, $msg, $update);
+                Dever::load(\Seller\Lib\Order::class)->notify($order, $msg, $update);
             }
         };
     }

+ 28 - 0
src/dai/seller/app/lib/Cron.php

@@ -0,0 +1,28 @@
+<?php namespace Seller\Lib;
+use Dever;
+use Dever\Helper\Redis;
+ini_set("memory_limit", -1);
+class Cron
+{
+    public function run()
+    {
+        while (true) {
+            try {
+                $order = Redis::pop('submit_' . DEVER_PROJECT);
+                if (!$order) {
+                    continue;
+                }
+
+                Dever::request(function () use ($order) {
+                    $info = Dever::db('seller/order')->find($order);
+                    if ($info) {
+                        Dever::load(\Seller\Lib\Order::class)->handle($info);
+                    }
+                });
+            } catch (\Throwable $e) {
+                Dever::log('seller_cron_error', $e->getMessage());
+                usleep(200000);
+            }
+        }
+    }
+}

+ 43 - 0
src/dai/seller/app/lib/Info.php

@@ -0,0 +1,43 @@
+<?php namespace Seller\Lib;
+use Dever;
+class Info
+{
+    # 余额扣款
+    public function dec_commit(){}
+    public function dec($id, $cash, $version = 0)
+    {
+        $state = Dever::db('seller/info')->update($id, array('cash' => array('-', $cash)), $version);
+        return $state;
+    }
+
+    # 余额加款
+    public function inc_commit(){}
+    public function inc($id, $cash, $version = 0)
+    {
+        $state = Dever::db('seller/info')->update($id, array('cash' => array('+', $cash)), $version);
+        return $state;
+    }
+
+    # 增加日志
+    public function log($seller_id, $cash, $type = 3, $day = false)
+    {
+        $data['seller_id'] = $seller_id;
+        $data['type'] = $type;
+        if ($day) {
+            $data['day'] = $day;
+            $info = Dever::db('seller/log')->find($data);
+            if ($info) {
+                return Dever::db('seller/log')->update($info['id'], ['cash' => $cash]);
+            }
+        }
+        $data['cash'] = $cash;
+        $data['day'] = $day ?: date('Ymd');
+        return Dever::db('seller/log')->insert($data);
+    }
+
+    # 获取余额
+    public function yue($seller_id)
+    {
+
+    }
+}

+ 169 - 179
src/dai/seller/lib/Order.php → src/dai/seller/app/lib/Order.php

@@ -1,18 +1,15 @@
 <?php namespace Seller\Lib;
 use Dever;
 use Dever\Helper\Str;
+use Dever\Helper\Redis;
 class Order
 {
-    # 新增订单
+    # 新增订单 收单
     public function add($info, $goods, $sku, $account, $order, $num = 1)
     {
-        /*
-        $data = Dever::store()->transaction(array($this, 'addAct'), array($info, $goods, $sku, $account, $order, $num), '下单失败');*/
         $data = $this->addAct($info, $goods, $sku, $account, $order, $num);
         if ($data) {
-            //\Dever\Helper\Redis::push('submit_' . $data['seller_id'], $data['id']);
             \Dever\Helper\Redis::push('submit_' . DEVER_PROJECT, $data['id']);
-            //Dever::load('info', 'seller')->log($data['seller_id'], $data['id'], $data['price'], 3);
         }
         return $data;
     }
@@ -46,94 +43,131 @@ class Order
         $data['price'] = $cash;
         $data['seller_id'] = $info['id'];
         $data['seller_order_num'] = $order;
-        $data['seller_request'] = json_encode(Dever::input(), JSON_UNESCAPED_UNICODE);
-
-        $data['id'] = Dever::db('order', 'seller')->insert($data);
+        $data['seller_notify'] = Dever::input('notify');
+        $data['id'] = Dever::db('seller/order')->insert($data);
         if (!$data['id']) {
             Dever::error('下单失败');
         }
+
+        $seller['order_id'] = $data['id'];
+        $seller['request'] = json_encode(Dever::input(), JSON_UNESCAPED_UNICODE);
+        Dever::db('seller/order_seller')->insert($seller);
         return $data;
     }
 
+    # 扣费
+    public function cash($seller_id, $goods_id, $sku_id, $value, $num = 1)
+    {
+        if (!$value || $value <= 0) {
+            Dever::error('面值无效');
+        }
+        
+        # 查询折扣 扣费
+        $seller_goods = Dever::db('seller/goods')->find(array('seller_id' => $seller_id, 'goods_id' => $goods_id, 'sku_id' => $sku_id));
+        if (!$seller_goods) {
+            $seller_goods = Dever::db('seller/goods')->find(array('seller_id' => $seller_id, 'goods_id' => $goods_id, 'sku_id' => -1));
+        }
+
+        $info = Dever::db('seller/info')->find($seller_id);
+        if ($seller_goods && $seller_goods['discount']) {
+            $info['discount'] = $seller_goods['discount'];
+        }
+        if (!$info['discount']) {
+            $info['discount'] = 1;
+        }
+        $cash = round($value * $info['discount'], 2) * $num;
+
+        # 查询余额是否充足
+        $info['yue'] = $info['credit'] + $info['cash'];
+        if ($info['yue'] < $cash) {
+            Dever::error('余额不足');
+        }
+        $state = Dever::load(Info::class)->dec($info['id'], $cash, $info['version']);
+        if (!$state) {
+            Dever::error('余额不足');
+        }
+        return $cash;
+    }
+
+    # 向渠道发起请求
     public function handle($info, $selected = array())
     {
-        //$data = Dever::store()->transaction(array($this, 'handleAct'), array($info, $selected), '下单失败');
         $data = $this->handleAct($info, $selected);
-        /*
-        $order = Dever::db('order', 'seller')->find($info['id']);
-        if ($info['status'] < 10 && $order['status'] >= 10) {
-            if ($order['status'] == 11) {
-                # 失败,余额加回来
-                Dever::load('info', 'seller')->inc($order['seller_id'], $order['price']);
-                Dever::load('info', 'seller')->log($order['seller_id'], $order['id'], $order['price'], 4);
-            }
-            //Dever::db('order_log1', 'seller')->insert($order);
-        }*/
         return $data;
     }
 
     public function handleAct($info, $selected = array())
     {
-        $test = Dever::input('test');
-        if ($test == 1) {
-
-        } elseif ($info['status'] >= 10) {
+        $lockKey = 'seller_order_lock_' . $info['id'];
+        $lockToken = uniqid('order_', true);
+        if (!Redis::lock($lockKey, $lockToken, 5)) {
             return;
         }
-        $update['status'] = 2;
-        if (!$info['order_num']) {
-            $info['order_num'] = $update['order_num'] = $this->createOrder();
-        }
-        Dever::db('order', 'seller')->update($info['id'], $update);
+        try {
+            $test = Dever::input('test');
+            if ($test == 1) {
 
-        $channel_num = 0;
-        $channel = $this->channel($info['seller_id'], $info['goods_id'], $info['sku_id'], $channel_num, $selected);
-        if (!$channel) {
-            return $this->notify($info, '通道未开启', $update);
-        }
-        $result = array();
-        if ($channel['type'] == 1) {
-            # 通信
-            # 向渠道发起请求 下单
-            $param['order_id'] = $info['id'];
-            $param['order_num'] = $info['order_num'];
-            $param['account'] = $info['account'];
-            $param['cash'] = $info['cash'];
-            $param['num'] = $info['num'];
-            $param['goods_id'] = $info['goods_id'];
-            if ($info['other']) {
-                $info['other'] = Dever::json_decode($info['other']);
-                $param = array_merge($info['other'], $param);
+            } elseif ($info['status'] >= 10) {
+                return;
             }
-            if (isset($channel['goods']['discount']) && $channel['goods']['discount']) {
-                $param['scash'] = $channel['goods']['discount']*$param['cash'];
+            $update['status'] = 2;
+            if (!$info['order_num']) {
+                $info['order_num'] = $update['order_num'] = $this->createOrder();
             }
-            if (isset($channel['goods']['code']) && $channel['goods']['code']) {
-                $param['code'] = $channel['goods']['code'];
-            } else {
-                $sku = Dever::db('info_sku', 'goods')->find($info['sku_id']);
-                $param['code'] = $sku['code'];
+            if ($info['seller_callback'] == 1) {
+                $info['seller_callback'] = 2;
+                $update['seller_callback'] = 2;
             }
-            $result = Dever::load('func/api', 'connect')->run(1, $info['cate_id'], $channel, $param);
-            if ($channel_num > 1 && $result && $result['status'] != 1) {
-                # 记录渠道错误信息
-                $selected[$channel['id']] = true;
-                $order_error_data = Dever::db('order_error', 'seller')->select(array('order_num' => $info['order_num']));
-                if ($order_error_data) {
-                    foreach ($order_error_data as $k => $v) {
-                        $selected[$v['channel_id']] = true;
-                    }
+            Dever::db('seller/order')->update($info['id'], $update);
+
+            $channel_num = 0;
+            $channel = $this->channel($info['seller_id'], $info['goods_id'], $info['sku_id'], $channel_num, $selected);
+            if (!$channel) {
+                return $this->notify($info, '通道未开启', $update);
+            }
+            $result = array();
+            if ($channel['type'] == 1) {
+                # 通信
+                # 向渠道发起请求 下单
+                $param['order_id'] = $info['id'];
+                $param['order_num'] = $info['order_num'];
+                $param['account'] = $info['account'];
+                $param['cash'] = $info['cash'];
+                $param['num'] = $info['num'];
+                $param['goods_id'] = $info['goods_id'];
+                if ($info['other']) {
+                    $info['other'] = Dever::json_decode($info['other']);
+                    $param = array_merge($info['other'], $param);
                 }
-                $num = count($selected);
-                $channel_num = $channel_num - $num;
-                if ($channel_num > 0) {
-                    $order_error = $this->channel_update($info, $channel, $result);
-                    $order_error['order_num'] = $info['order_num'];
-                    Dever::db('order_error', 'seller')->insert($order_error);
-                    return $this->handleAct($info, $selected);
+                if (isset($channel['goods']['discount']) && $channel['goods']['discount']) {
+                    $param['scash'] = $channel['goods']['discount']*$param['cash'];
                 }
-            }
-        } elseif ($channel['type'] == 2) {
+                if (isset($channel['goods']['code']) && $channel['goods']['code']) {
+                    $param['code'] = $channel['goods']['code'];
+                } else {
+                    $sku = Dever::db('goods/info_sku')->find($info['sku_id']);
+                    $param['code'] = $sku['code'];
+                }
+                $result = Dever::load(\Connect\Lib\Func\Api::class)->run(1, $info['cate_id'], $channel, $param);
+                if ($channel_num > 1 && $result && $result['status'] != 1) {
+                    # 记录渠道错误信息
+                    $selected[$channel['id']] = true;
+                    $order_error_data = Dever::db('seller/order_channel_error')->select(array('order_id' => $info['id']));
+                    if ($order_error_data) {
+                        foreach ($order_error_data as $k => $v) {
+                            $selected[$v['channel_id']] = true;
+                        }
+                    }
+                    $num = count($selected);
+                    $channel_num = $channel_num - $num;
+                    if ($channel_num > 0) {
+                        $order_error = $this->channel_record($info, $channel, $result);
+                        $order_error['order_id'] = $info['id'];
+                        Dever::db('seller/order_channel_error')->insert($order_error);
+                        return $this->handleAct($info, $selected);
+                    }
+                }
+            } elseif ($channel['type'] == 2) {
             # 需要审核
             # 获取卡密并占用
             $param['seller_id'] = array('in', '-1,' . $info['seller_id']);
@@ -142,71 +176,76 @@ class Order
             $param['sku_id'] = $info['sku_id'];
             $param['status'] = 1;
             $param['use_status'] = 1;
-            $card = Dever::db('card', 'channel')->select($param, array('order' => 'seller_id desc','limit' => '0, ' . $info['num']), true);
+            $card = Dever::db('channel/card')->select($param, array('order' => 'seller_id desc','limit' => '0, ' . $info['num']), true);
             $total = count($card);
             if ($total < $info['num']) {
                 return $this->notify($info, '卡密剩余数量不足', $update);
             }
             foreach ($card as $k => $v) {
-                Dever::db('card', 'channel')->update($v['id'], array('use_status' => 3, 'order_id' => $info['id']));
+                Dever::db('channel/card')->update($v['id'], array('use_status' => 3, 'order_id' => $info['id']));
             }
             $result['status'] = 1;
         } elseif ($channel['type'] == 11) {
             $result['status'] = 1;
         }
-        $update = $this->channel_update($info, $channel, $result);
+        $update = $this->channel_record($info, $channel, $result);
         if ($result['status'] == 1) {
             # 下单成功
-            Dever::db('order', 'seller')->update($info['id'], $update);
+            Dever::db('seller/order')->update($info['id'], $update);
             return 'ok';
         } else {
             # 下单失败
             return $this->notify($info, '下单失败', $update);
         }
+        } finally {
+            Redis::unlock($lockKey, $lockToken);
+        }
     }
 
-    public function channel_update($info, $channel, $result)
+    # 记录渠道信息
+    public function channel_record($info, $channel, $result)
     {
         $update = array();
         $update['channel_id'] = $channel['id'];
-        $update['channel_order_date'] = time();
+        $update['order_date'] = time();
         if (isset($result['request'])) {
-            $update['channel_request'] = json_encode($result['request'], JSON_UNESCAPED_UNICODE);
+            $update['request'] = json_encode($result['request'], JSON_UNESCAPED_UNICODE);
         }
         if (isset($result['response'])) {
-            $update['channel_response'] = json_encode($result['response'], JSON_UNESCAPED_UNICODE);
+            $update['response'] = json_encode($result['response'], JSON_UNESCAPED_UNICODE);
         }
         if (isset($channel['goods']['id'])) {
-            $update['channel_goods_id'] = $channel['goods']['id'];
+            $update['goods_id'] = $channel['goods']['id'];
         }
-        $update['channel_goods_discount'] = $channel['discount'];
+        $update['goods_discount'] = $channel['discount'];
         if (isset($channel['goods']['discount']) && $channel['goods']['discount']) {
-            $update['channel_goods_discount'] = $channel['goods']['discount'];
+            $update['goods_discount'] = $channel['goods']['discount'];
         }
-        if (!$update['channel_goods_discount']) {
-            $update['channel_goods_discount'] = 1;
+        if (!$update['goods_discount']) {
+            $update['goods_discount'] = 1;
         }
-        $update['buy_price'] = round($info['cash'] * $update['channel_goods_discount'], 2) * $info['num'];
+        $update['buy_price'] = round($info['cash'] * $update['goods_discount'], 2) * $info['num'];
+        $update['order_channel_id'] = Dever::db('seller/order_channel')->insert($update);
         return $update;
     }
 
     # 向商户发起回调
     public function notify($info, $msg, $update = array(), $total = 5, $oper = 1, $table = 'order')
     {
-        $seller = Dever::db('info', 'seller')->find($info['seller_id']);
+        $seller = Dever::db('seller/info')->find($info['seller_id']);
         $status = 11;
         if ($msg == 'ok') {
             $status = 10;
         }
         # 获取商户回调地址,向商户发起回调
-        $seller_request = Dever::json_decode($info['seller_request']);
-        if (isset($seller_request['notify']) && $seller_request['notify']) {
-            $notify = $seller_request['notify'];
+        if (isset($info['seller_notify']) && $info['seller_notify']) {
+            $notify = $info['seller_notify'];
         } else {
             $notify = $seller['notify'];
         }
+        $seller_log = [];
         if ($notify) {
-            if ($info['seller_callback'] != 'ok' && $info['seller_callback_num'] <= $total) {
+            if ($info['seller_callback'] == 2 && $info['seller_callback_num'] <= $total) {
                 $param = array();
                 $param['appkey'] = $seller['appkey'];
                 $param['order_num'] = $info['seller_order_num'];
@@ -229,6 +268,7 @@ class Order
 
                 # 反正所有榆钱和沧渤的资源进到系统  流水号只要出我们的系统自动就是89   联通就是10010   电信就是10000(不变的)
                 # 89+8位随机数字+8位订单日期(比如今天就是20240325)+10位随机
+                /*
                 $channel_id = array(5,6,8);
                 if ($status == 10 && in_array($info['channel_id'], $channel_id)) {
                     $official_order_num = '';
@@ -244,20 +284,26 @@ class Order
                     if ($official_order_num) {
                         $param['official_order_num'] = $update['official_order_num'] = $official_order_num;
                     }
-                }
+                }*/
                 
 
                 $param = \Dever\Helper\Secure::get($param, $seller['appsecret']);
                 $notify = urldecode($notify);
                 $response = Dever::curl($notify, $param, 'post')->result();
                 # ok是成功
-                $update['seller_callback'] = $response;
-                $update['seller_callback_date'] = time();
+                $seller_log['callback'] = $response;
+                $seller_log['callback_date'] = time();
+                if ($response == 'ok') {
+                    $update['seller_callback'] = 3;
+                } else {
+                    $update['seller_callback'] = 2;
+                }
                 $update['seller_callback_num'] = $info['seller_callback_num'] + 1;
             }
         } else {
-            $update['seller_callback'] = 'ok';
-            $update['seller_callback_date'] = time();
+            $seller_log['callback'] = 'ok';
+            $seller_log['callback_date'] = time();
+            $update['seller_callback'] = 3;
             $update['seller_callback_num'] = $info['seller_callback_num'] + 1;
         }
         $id = $info['id'];
@@ -273,7 +319,14 @@ class Order
             $update['order_num'] = $this->createOrder();
         }
         if ($update) {
-            Dever::db($table, 'seller')->update($id, $update);
+            Dever::db('seller/' . $table)->update($id, $update);
+        }
+        if ($seller_log) {
+            Dever::db('seller/order_seller')->update(['order_id' => $id], $seller_log);
+        }
+
+        if (isset($update['channel_callback']) && $update['channel_callback']) {
+            Dever::db('seller/order_channel')->update(['id' => $update['order_channel_id']], ['callback' => $update['channel_callback'], 'callback_date' => $update['channel_callback_date']]);
         }
         
         return $msg;
@@ -283,7 +336,7 @@ class Order
     {
         if ($info['status'] == 10) {
             if ($info['channel_id']) {
-                $channel = Dever::db('info', 'channel')->find($info['channel_id']);
+                $channel = Dever::db('channel/info')->find($info['channel_id']);
                 if (!$channel) {
                     Dever::error('未分配渠道');
                 }
@@ -292,13 +345,13 @@ class Order
                     $param['order_id'] = $info['id'];
                     //$param['status'] = 1;
                     $param['use_status'] = 3;
-                    Dever::db('card', 'channel')->update($param, array('use_status' => 2));
+                    Dever::db('channel/card')->update($param, array('use_status' => 2));
                 }
             }
         }
         if ($info['status'] == 11) {
             if ($info['channel_id']) {
-                $channel = Dever::db('info', 'channel')->find($info['channel_id']);
+                $channel = Dever::db('channel/info')->find($info['channel_id']);
                 if (!$channel) {
                     Dever::error('未分配渠道');
                 }
@@ -307,19 +360,19 @@ class Order
                     $param['order_id'] = $info['id'];
                     //$param['status'] = 1;
                     $param['use_status'] = 3;
-                    Dever::db('card', 'channel')->update($param, array('use_status' => 1));
+                    Dever::db('channel/card')->update($param, array('use_status' => 1));
                 }
             }
 
             if ($oper == 2) {
-                $channel_num = Dever::db('channel', 'seller')->count(array('seller_id' => $info['seller_id'], 'goods_id' => $info['goods_id'], 'status' => 1));
+                $channel_num = Dever::db('seller/channel')->count(array('seller_id' => $info['seller_id'], 'goods_id' => $info['goods_id'], 'status' => 1));
                 if ($channel_num > 1 && $info['channel_id']) {
                     $info['status'] = 2;
-                    Dever::db($table, 'seller')->update($info['id'], array('status' => 2, 'finish' => 2, 'finish_date' => '0'));
+                    Dever::db('seller/' . $table)->update($info['id'], array('status' => 2, 'finish' => 2, 'finish_date' => '0'));
                     # 记录渠道错误信息
                     $selected = array();
                     $selected[$info['channel_id']] = true;
-                    $order_error_data = Dever::db('order_error', 'seller')->select(array('order_num' => $info['order_num']));
+                    $order_error_data = Dever::db('seller/order_channel_error')->select(array('order_id' => $info['id']));
                     if ($order_error_data) {
                         foreach ($order_error_data as $k => $v) {
                             $selected[$v['channel_id']] = true;
@@ -329,88 +382,25 @@ class Order
                     $channel_num = $channel_num - $num;
                     if ($channel_num > 0) {
                         $order_error = array();
-                        $order_error['order_num'] = $info['order_num'];
-                        $order_error['buy_price'] = $info['buy_price'];
+                        $order_error['order_id'] = $info['id'];
+                        $order_error['order_channel_id'] = $info['order_channel_id'];
                         $order_error['channel_id'] = $info['channel_id'];
-                        $order_error['channel_goods_id'] = $info['channel_goods_id'];
-                        $order_error['channel_goods_discount'] = $info['channel_goods_discount'];
-                        $order_error['channel_order_date'] = $info['channel_order_date'];
-                        $order_error['channel_order_num'] = $info['channel_order_num'];
-                        $order_error['channel_request'] = $info['channel_request'];
-                        $order_error['channel_response'] = $info['channel_response'];
-                        $order_error['channel_callback'] = $info['channel_callback'];
-                        $order_error['channel_callback_date'] = time();
-                        Dever::db('order_error', 'seller')->insert($order_error);
-                        return Dever::load('order', 'seller')->handleAct($info, $selected);
+                        Dever::db('seller/order_channel_error')->insert($order_error);
+                        return $this->handleAct($info, $selected);
                     }
                 }
             }
             
             # 失败,余额加回来
-            Dever::load('info', 'seller')->inc($info['seller_id'], $info['price']);
-            //Dever::load('info', 'seller')->log($info['seller_id'], $info['id'], $info['price'], 4);
-            if ($table == 'order') {
-                $id = $info['id'];
-                unset($info['id']);
-                $state = Dever::db('order_log2', 'seller')->insert($info);
-                if ($state) {
-                    Dever::db($table, 'seller')->delete($id);
-                }
-            }
-        }
-
-        /*
-        $order_log = Dever::db('order_log', 'seller')->find(array('order_num' => $info['order_num']));
-        if (!$order_log) {
-            Dever::db('order_log', 'seller')->insert($info);
-        }*/
-
-        /*
-        $order_log = Dever::db('order_log1', 'seller')->find(array('order_num' => $info['order_num']));
-        if (!$order_log) {
-            Dever::db('order_log1', 'seller')->insert($info);
-        }*/
-    }
-
-    # 扣费
-    public function cash($seller_id, $goods_id, $sku_id, $value, $num = 1)
-    {
-        if (!$value || $value <= 0) {
-            Dever::error('面值无效');
-        }
-        
-        # 查询折扣 扣费
-        $seller_goods = Dever::db('goods', 'seller')->find(array('seller_id' => $seller_id, 'goods_id' => $goods_id, 'sku_id' => $sku_id));
-        if (!$seller_goods) {
-            $seller_goods = Dever::db('goods', 'seller')->find(array('seller_id' => $seller_id, 'goods_id' => $goods_id, 'sku_id' => -1));
-        }
-
-        $info = Dever::db('info', 'seller')->find($seller_id);
-        if ($seller_goods && $seller_goods['discount']) {
-            $info['discount'] = $seller_goods['discount'];
-        }
-        if (!$info['discount']) {
-            $info['discount'] = 1;
+            Dever::load(Info::class)->inc($info['seller_id'], $info['price'], 1);
         }
-        $cash = round($value * $info['discount'], 2) * $num;
-
-        # 查询余额是否充足
-        $info['yue'] = $info['credit'] + $info['cash'];
-        if ($info['yue'] < $cash) {
-            Dever::error('余额不足');
-        }
-        $state = Dever::load('info', 'seller')->dec($info['id'], $cash);
-        if (!$state) {
-            Dever::error('余额不足');
-        }
-        return $cash;
     }
 
     # 获取渠道
     public function channel($seller_id, $goods_id, $sku_id, &$channel_num, $selected = array())
     {
         # 查找渠道
-        $channel_list = Dever::db('channel', 'seller')->select(array('seller_id' => $seller_id, 'goods_id' => $goods_id, 'status' => 1));
+        $channel_list = Dever::db('seller/channel')->select(array('seller_id' => $seller_id, 'goods_id' => $goods_id, 'status' => 1));
         if (!$channel_list) {
             return false;
         }
@@ -422,13 +412,13 @@ class Order
                 continue;
             }
             if (!$v['sku_id']) {
-                $goods = Dever::db('goods', 'channel')->find(array('channel_id' => $v['channel_id'], 'goods_id' => $goods_id, 'sku_id' => $sku_id));
+                $goods = Dever::db('channel/goods')->find(array('channel_id' => $v['channel_id'], 'goods_id' => $goods_id, 'sku_id' => $sku_id));
                 if ($goods) {
                     $channel = $v['channel_id'];
                     $max = $v['max'];
                     break;
                 } else {
-                    $goods = Dever::db('goods', 'channel')->find(array('channel_id' => $v['channel_id'], 'goods_id' => $goods_id, 'sku_id' => -1));
+                    $goods = Dever::db('channel/goods')->find(array('channel_id' => $v['channel_id'], 'goods_id' => $goods_id, 'sku_id' => -1));
                     if ($goods) {
                         $channel = $v['channel_id'];
                         $max = $v['max'];
@@ -440,9 +430,9 @@ class Order
                 if (in_array($sku_id, $all_sku_id)) {
                     $channel = $v['channel_id'];
                     $max = $v['max'];
-                    $goods = Dever::db('goods', 'channel')->find(array('channel_id' => $v['channel_id'], 'goods_id' => $goods_id, 'sku_id' => $sku_id));
+                    $goods = Dever::db('channel/goods')->find(array('channel_id' => $v['channel_id'], 'goods_id' => $goods_id, 'sku_id' => $sku_id));
                     if (!$goods) {
-                        $goods = Dever::db('goods', 'channel')->find(array('channel_id' => $v['channel_id'], 'goods_id' => $goods_id, 'sku_id' => -1));
+                        $goods = Dever::db('channel/goods')->find(array('channel_id' => $v['channel_id'], 'goods_id' => $goods_id, 'sku_id' => -1));
                     }
                     break;
                 }
@@ -452,7 +442,7 @@ class Order
             return false;
         }
 
-        $channel = Dever::db('info', 'channel')->find($channel);
+        $channel = Dever::db('channel/info')->find($channel);
         if (!$channel) {
             return false;
         }
@@ -467,11 +457,11 @@ class Order
     public function createOrder()
     {
         $where['order_num'] = Str::order('C');
-        $state = Dever::db('order', 'seller')->find($where);
+        $state = Dever::db('seller/order')->find($where);
         if (!$state) {
             return $where['order_num'];
         } else {
             return $this->createOrder();
         }
     }
-}
+}

+ 8 - 0
src/dai/seller/cron.php

@@ -0,0 +1,8 @@
+<?php
+# 端口
+define('DEVER_SERVER', '8383');
+# 进程
+define('DEVER_WORKER', 4);
+# 入口
+define('DEVER_CRON', 'Seller/Lib/Cron.run');
+include('index.php');

+ 1 - 1
src/dai/seller/index.php

@@ -1,5 +1,5 @@
 <?php
-define('DEVER_APP_NAME', 'seller');
+define('DEVER_APP_NAME', 'Seller');
 define('DEVER_APP_LANG', '商户管理');
 define('DEVER_APP_PATH', dirname(__FILE__) . DIRECTORY_SEPARATOR);
 include(DEVER_APP_PATH . '../../../boot.php');

+ 0 - 42
src/dai/seller/lib/Info.php

@@ -1,42 +0,0 @@
-<?php namespace Seller\Lib;
-use Dever;
-class Info
-{
-    # 余额扣款
-    public function dec($id, $cash)
-    {
-        $state = Dever::db('info', 'seller')->update($id, array('cash' => array('-', $cash)));
-        return $state;
-    }
-
-    # 余额加款
-    public function inc($id, $cash)
-    {
-        $state = Dever::db('info', 'seller')->update($id, array('cash' => array('+', $cash)));
-        return $state;
-    }
-
-    # 增加日志
-    public function log($seller_id, $order_id, $cash, $type = 3)
-    {
-        return;
-        $where['seller_id'] = $seller_id;
-        $where['order_id'] = $order_id;
-        $where['type'] = $type;
-        $data = $where;
-        if ($type == 2 || $type == 3) {
-            $cash = -1*$cash;
-        }
-        $data['cash'] = $cash;
-        //$data['yue'] = $this->yue($seller_id) - $cash;
-        //Dever::db('log', 'seller')->up($where, $data);
-        //Dever::db('log', 'seller')->insert($data);
-        Dever::db('log1', 'seller')->insert($data);
-    }
-
-    # 获取余额
-    public function yue($seller_id)
-    {
-
-    }
-}

+ 297 - 370
src/dai/seller/api/Manage.php → src/dai/seller/manage/Api/Main.php

@@ -1,371 +1,298 @@
-<?php namespace Seller\Api;
-use Dever;
-use Manage\Lib\Auth;
-class Manage extends Auth
-{
-    public function showOrderExpand($value = false)
-    {
-        $data = Dever::db('order', 'seller')->find($value);
-        return Dever::load('manage', 'seller')->showOrderExpand($data);
-    }
-
-    public function showOrderLogExpand($value = false)
-    {
-        $data = Dever::db('order_log1', 'seller')->find($value);
-        return Dever::load('manage', 'seller')->showOrderExpand($data);
-    }
-
-    public function showOrderLog2Expand($value = false)
-    {
-        $data = Dever::db('order_log2', 'seller')->find($value);
-        return Dever::load('manage', 'seller')->showOrderExpand($data);
-    }
-
-    public function showOrderLog3Expand($value = false)
-    {
-        $data = Dever::db('order_log3', 'seller')->find($value);
-        return Dever::load('manage', 'seller')->showOrderExpand($data);
-    }
-
-    public function showOrderExpandKm($value = false)
-    {
-        $data = Dever::db('order', 'seller')->find($value);
-        return Dever::load('manage', 'seller')->showOrderExpandKm($data);
-    }
-
-    public function showOrderLogExpandKm($value = false)
-    {
-        $data = Dever::db('order_log1', 'seller')->find($value);
-        return Dever::load('manage', 'seller')->showOrderExpandKm($data);
-    }
-
-    # 补发回调
-    public function sendCallBack()
-    {
-        $id = Dever::input('id');
-        if ($id) {
-            $where['id'] = array('in', $id);
-            $order = Dever::db('order', 'seller')->select($where);
-            foreach ($order as $k => $v) {
-                $msg = '';
-                if ($v['status'] == 10) {
-                    $msg = 'ok';
-                } elseif ($v['status'] == 11) {
-                    $msg = 'error';
-                }
-                if ($msg) {
-                    Dever::load('order', 'seller')->notify($v, $msg, array(), 1000);
-                }
-            }
-        } else {
-            Dever::error('请选择发回调的订单');
-        }
-        return '回调发送成功';
-    }
-
-    public function sendCallBack1()
-    {
-        $id = Dever::input('id');
-        if ($id) {
-            $where['id'] = array('in', $id);
-            $order = Dever::db('order_log1', 'seller')->select($where);
-            foreach ($order as $k => $v) {
-                $msg = '';
-                if ($v['status'] == 10) {
-                    $msg = 'ok';
-                } elseif ($v['status'] == 11) {
-                    $msg = 'error';
-                }
-                if ($msg) {
-                    Dever::load('order', 'seller')->notify($v, $msg, array(), 1000, 1, 'order_log1');
-                }
-            }
-        } else {
-            Dever::error('请选择发回调的订单');
-        }
-        return '回调发送成功';
-    }
-
-    public function sendCallBack2()
-    {
-        $id = Dever::input('id');
-        if ($id) {
-            $where['id'] = array('in', $id);
-            $order = Dever::db('order_log2', 'seller')->select($where);
-            foreach ($order as $k => $v) {
-                $msg = '';
-                if ($v['status'] == 10) {
-                    $msg = 'ok';
-                } elseif ($v['status'] == 11) {
-                    $msg = 'error';
-                }
-                if ($msg) {
-                    Dever::load('order', 'seller')->notify($v, $msg, array(), 1000, 1, 'order_log2');
-                }
-            }
-        } else {
-            Dever::error('请选择发回调的订单');
-        }
-        return '回调发送成功';
-    }
-
-    public function sendCallBack3()
-    {
-        $id = Dever::input('id');
-        if ($id) {
-            $where['id'] = array('in', $id);
-            $order = Dever::db('order_log3', 'seller')->select($where);
-            foreach ($order as $k => $v) {
-                $msg = '';
-                if ($v['status'] == 10) {
-                    $msg = 'ok';
-                } elseif ($v['status'] == 11) {
-                    $msg = 'error';
-                }
-                if ($msg) {
-                    Dever::load('order', 'seller')->notify($v, $msg, array(), 1000, 1, 'order_log3');
-                }
-            }
-        } else {
-            Dever::error('请选择发回调的订单');
-        }
-        return '回调发送成功';
-    }
-
-    # 获取商品
-    public function getGoods($value = false)
-    {
-        $result = array();
-        $result['goods']['value'] = '';
-        $result['sku_id']['value'] = '';
-        $result['goods_id']['value'] = '';
-        $result['goods']['option'] = array();
-        $result['sku_id']['option'] = array();
-        if (!$value) {
-            return $result;
-        }
-        $channel = Dever::db('channel', 'seller')->select(array('seller_id' => $value, 'status' => 1));
-        if ($channel) {
-            $option = $setCate = $setGoods = array();
-            $i = 0;
-            foreach ($channel as $k => $v) {
-                $goods = Dever::db('info', 'goods')->find($v['goods_id']);
-                if ($goods && $goods['status'] == 1) {
-                    if (!isset($setCate[$goods['cate_id']])) {
-                        $cate = Dever::db('cate', 'goods')->find($goods['cate_id']);
-                        if ($cate) {
-                            $setCate[$goods['cate_id']] = $i;
-                            $option[$i] = array
-                            (
-                                'id' => $cate['id'],
-                                'name' => $cate['name'],
-                            );
-                            $i++;
-                        }
-                    }
-                    if (!isset($setGoods[$goods['id']])) {
-                        $v['name'] = $goods['name'];
-                        $option[$setCate[$goods['cate_id']]]['children'][] = $v;
-                        $setGoods[$goods['id']] = 1;
-                    }
-                }
-            }
-            $result['goods']['option'] = $option;
-        }
-        return $result;
-    }
-
-    public function getSku($value)
-    {
-        if (is_array($value)) {
-            $value = end($value);
-        }
-        $result = array();
-        $result['sku_id']['value'] = '';
-        if (!$value) {
-            $result['sku_id']['option'] = array();
-            return $result;
-        }
-        $channel = Dever::db('channel', 'seller')->find($value);
-        $channel_sku = Dever::db('channel', 'seller')->select(array('seller_id' => $channel['seller_id'], 'goods_id' => $channel['goods_id'], 'status' => 1));
-        if ($channel_sku) {
-            $sku = array();
-            foreach ($channel_sku as $k => $v) {
-                if ($v['sku_id']) {
-                    $v['sku_id'] = explode(',', $v['sku_id']);
-                    foreach ($v['sku_id'] as $v1) {
-                        $sku[$v1] = $v1;
-                    }
-                }
-            }
-        }
-        $result['goods_id']['value'] = $channel['goods_id'];
-
-        $where = array('info_id' => $channel['goods_id']);
-        if (isset($sku) && $sku) {
-            $where['id'] = array('in', implode(',', $sku));
-        }
-        $sku = Dever::db('info_sku', 'goods')->select($where);
-        if ($sku) {
-            $option = array();
-            foreach ($sku as $k => $v) {
-                if ($v['key'] != -1) {
-                    
-                    $spec = Dever::db('info_spec_value', 'goods')->find(array('id' => array('in', $v['key'])), array('col' => 'id,group_concat(value) as name', 'group' => 'info_id'));
-                    if ($spec) {
-                        $spec['id'] = $v['id'];
-                        $result['sku_id']['value'] = $v['id'];
-                        $option[] = $spec;
-                    }
-                    /*
-                    $spec = Dever::db('info_spec_value', 'goods')->select(array('id' => array('in', $v['key'])));
-
-                    if ($spec) {
-                        $spec_value = $spec[0];
-                        $spec_name = array();
-                        foreach ($spec as $k3 => $v3) {
-                            $spec_name[] = $v3['value'];
-                        }
-                        $spec_value['name'] = implode(',', $spec_name);
-                        $spec_value['id'] = $v['id'];
-                        $result['sku_id']['value'] = $v['id'];
-                        $option[] = $spec_value;
-                    }*/
-
-                } else {
-                    $result['sku_id']['value'] = $v['id'];
-                    $option[0] = array
-                    (
-                        'id' => $v['id'],
-                        'name' => '无',
-                    );
-                }
-            }
-            $result['sku_id']['option'] = $option;
-            //$result['sku_id']['desc'] = '222';
-        }
-        
-        return $result;
-    }
-
-    # 提取卡密
-    public function tqKmManage()
-    {
-        return $this->tqKmRun(2);
-    }
-
-    # 提取卡密
-    public function tqKm()
-    {
-        return $this->tqKmRun(1);
-    }
-
-    # 提取卡密
-    public function tqKmRun($type = 1)
-    {
-        $value = Dever::input('value');
-        $id = Dever::input('order_id');
-        $order = Dever::db('order', 'seller')->find($id);
-
-        /*
-        $code = Dever::load('manage', 'seller')->kmPwd($order['id'], $order['cdate']);
-        if ($code != $value) {
-            Dever::error('密码错误');
-        }*/
-
-        if (!$value) {
-            Dever::error('请输入正确的邮箱');
-        }
-        if (!preg_match(Dever::rule('email'), $value)) {
-            Dever::error('请输入正确的邮箱');
-        }
-        if ($type == 1) {
-            $log['seller_id'] = $order['seller_id'];
-            $log['order_id'] = $id;
-            $order_km = Dever::db('order_km', 'seller')->find($log);
-            if ($order_km) {
-                Dever::error('您已经提取过卡密,无法重复提取,如需再次提取请联系商务');
-            }
-        }
-
-        $result = array();
-        $result['msg'] = '提取成功';
-        //$result['url'] = Dever::url('seller/manage.tqKmAct', array('order_id' => $order['id'], 'value' => $value));
-        \Dever\Helper\Cmd::run('seller/manage.tqKmAct', array('order_id' => $order['id'], 'value' => $value));
-
-        # 增加提取日志
-        $log['admin_id'] = $this->uid;
-        $log['system_id'] = $this->system['id'];
-        $log['admin_name'] = $this->user['name'];
-        $log['email'] = $value;
-
-        Dever::db('order_km', 'seller')->insert($log);
-        return $result;
-    }
-
-    # 提取卡密
-    public function tqKmAct()
-    {
-        $value = Dever::input('value');
-        $id = Dever::input('order_id');
-        $order = Dever::db('order', 'seller')->select($id);
-        if (!$order) {
-            Dever::error('订单不存在');
-        }
-
-        $code = Dever::load('manage', 'seller')->kmPwd($order[0]['id'], $order[0]['cdate']);
-        /*
-        if ($code != $value) {
-            Dever::error('密码错误');
-        }
-        */
-        $data = Dever::load('manage', 'seller')->outKm(array('body' => $order));
-        
-        $file = Dever::load('export', 'excel')->act($data['body'], $data['head'], '导出卡密', 0, '', false, false, $code, 'km' . $id);
-
-        $seller = Dever::db('info', 'seller')->find($order[0]['seller_id']);
-        $email = $value;
-        $username = $seller['name'];
-        $title = '您有新的卡密请查收';
-        $content = '请您打开附件提取卡密,提取密码请联系商务人员';
-        $this->send($email, $username, $title, $content, $file);
-        Dever::db('info', 'seller')->update($seller['id'], array('email' => $value));
-        return '卡密提取成功';
-    }
-
-    # 发送邮件
-    public function send($email, $username, $title, $content, $file = '')
-    {
-        $config = Dever::db('config', 'channel')->find(1);
-
-        Dever::apply('PHPMailer', 'email', 'src');
-        Dever::apply('Exception', 'email', 'src');
-        Dever::apply('SMTP', 'email', 'src');
-        $mail = new \PHPMailer\PHPMailer\PHPMailer();
-
-        $mail->isSMTP();
-        //$mail->SMTPDebug = 2;
-        $mail->CharSet = 'UTF-8';
-        $mail->Host = 'smtp.exmail.qq.com';
-        $mail->Port = 465;
-        $mail->SMTPSecure = 'ssl';
-        $mail->SMTPAuth = true;
-        $mail->Username = $config['email_user'];
-        $mail->Password = $config['email_pass'];
-        $mail->setFrom($config['email_user'], 'kaibihe');
-        $mail->addAddress($email, $username);
-        $mail->Subject = "=?utf-8?B?" . base64_encode($title) . "?=";
-        $mail->Body = $content;
-        $mail->isHTML(true);
-        if ($file) {
-            $mail->addAttachment($file);
-        }
-        if (!$mail->send()) {
-            Dever::log($email . '-' . $username . '-' . $mail->ErrorInfo, 'email');
-            Dever::alert("Mailer Error: " . $mail->ErrorInfo);
-        } else {
-            @unlink($file);
-            return 'ok';
-        }
-    }
+<?php namespace Seller\Manage\Api;
+use Dever;
+class Main
+{
+    public function showOrderExpand($value = false)
+    {
+        $data = Dever::db('seller/order')->find($value);
+        return Dever::load(\Seller\Manage\Lib\Data::class)->showOrderExpand($data);
+    }
+
+    public function showOrderHistoryExpand($value = false)
+    {
+        $data = Dever::db('seller/order_history')->find($value);
+        return Dever::load(\Seller\Manage\Lib\Data::class)->showOrderExpand($data);
+    }
+
+    public function showOrderExpandKm($value = false)
+    {
+        $data = Dever::db('seller/order')->find($value);
+        return Dever::load(\Seller\Manage\Lib\Data::class)->showOrderExpandKm($data);
+    }
+
+    public function showOrderHistoryExpandKm($value = false)
+    {
+        $data = Dever::db('seller/history')->find($value);
+        return Dever::load(\Seller\Manage\Lib\Data::class)->showOrderExpandKm($data);
+    }
+
+    # 补发回调
+    public function sendCallBack()
+    {
+        $id = Dever::input('id');
+        if ($id) {
+            $where['id'] = array('in', $id);
+            $order = Dever::db('seller/order')->select($where);
+            foreach ($order as $k => $v) {
+                $msg = '';
+                if ($v['status'] == 10) {
+                    $msg = 'ok';
+                } elseif ($v['status'] == 11) {
+                    $msg = 'error';
+                }
+                if ($msg) {
+                    Dever::load(\Seller\Lib\Order::class)->notify($v, $msg, array(), 1000);
+                }
+            }
+        } else {
+            Dever::error('请选择发回调的订单');
+        }
+        return '回调发送成功';
+    }
+
+    public function sendCallBackHistory()
+    {
+        $id = Dever::input('id');
+        if ($id) {
+            $where['id'] = array('in', $id);
+            $order = Dever::db('seller/order_history')->select($where);
+            foreach ($order as $k => $v) {
+                $msg = '';
+                if ($v['status'] == 10) {
+                    $msg = 'ok';
+                } elseif ($v['status'] == 11) {
+                    $msg = 'error';
+                }
+                if ($msg) {
+                    Dever::load(\Seller\Lib\Order::class)->notify($v, $msg, array(), 1000, 1, 'order_history');
+                }
+            }
+        } else {
+            Dever::error('请选择发回调的订单');
+        }
+        return '回调发送成功';
+    }
+
+    # 获取商品
+    public function getGoods($value = false)
+    {
+        $result = array();
+        $result['goods']['value'] = '';
+        $result['sku_id']['value'] = '';
+        $result['goods_id']['value'] = '';
+        $result['goods']['option'] = array();
+        $result['sku_id']['option'] = array();
+        if (!$value) {
+            return $result;
+        }
+        $channel = Dever::db('seller/channel')->select(array('seller_id' => $value, 'status' => 1));
+        if ($channel) {
+            $option = $setCate = $setGoods = array();
+            $i = 0;
+            foreach ($channel as $k => $v) {
+                $goods = Dever::db('goods/info')->find($v['goods_id']);
+                if ($goods && $goods['status'] == 1) {
+                    if (!isset($setCate[$goods['cate_id']])) {
+                        $cate = Dever::db('goods/cate')->find($goods['cate_id']);
+                        if ($cate) {
+                            $setCate[$goods['cate_id']] = $i;
+                            $option[$i] = array
+                            (
+                                'id' => $cate['id'],
+                                'name' => $cate['name'],
+                            );
+                            $i++;
+                        }
+                    }
+                    if (!isset($setGoods[$goods['id']])) {
+                        $v['name'] = $goods['name'];
+                        $option[$setCate[$goods['cate_id']]]['children'][] = $v;
+                        $setGoods[$goods['id']] = 1;
+                    }
+                }
+            }
+            $result['goods']['option'] = $option;
+        }
+        return $result;
+    }
+
+    public function getSku($value)
+    {
+        if (is_array($value)) {
+            $value = end($value);
+        }
+        $result = array();
+        $result['sku_id']['value'] = '';
+        if (!$value) {
+            $result['sku_id']['option'] = array();
+            return $result;
+        }
+        $channel = Dever::db('seller/channel')->find($value);
+        $channel_sku = Dever::db('seller/channel')->select(array('seller_id' => $channel['seller_id'], 'goods_id' => $channel['goods_id'], 'status' => 1));
+        if ($channel_sku) {
+            $sku = array();
+            foreach ($channel_sku as $k => $v) {
+                if ($v['sku_id']) {
+                    $v['sku_id'] = explode(',', $v['sku_id']);
+                    foreach ($v['sku_id'] as $v1) {
+                        $sku[$v1] = $v1;
+                    }
+                }
+            }
+        }
+        $result['goods_id']['value'] = $channel['goods_id'];
+
+        $where = array('info_id' => $channel['goods_id']);
+        if (isset($sku) && $sku) {
+            $where['id'] = array('in', implode(',', $sku));
+        }
+        $sku = Dever::db('goods/info_sku')->select($where);
+        if ($sku) {
+            $option = array();
+            foreach ($sku as $k => $v) {
+                if ($v['key'] != -1) {
+                    
+                    $spec = Dever::db('goods/info_spec_value')->find(array('id' => array('in', $v['key'])), array('col' => 'id,group_concat(value) as name', 'group' => 'info_id'));
+                    if ($spec) {
+                        $spec['id'] = $v['id'];
+                        $result['sku_id']['value'] = $v['id'];
+                        $option[] = $spec;
+                    }
+
+                } else {
+                    $result['sku_id']['value'] = $v['id'];
+                    $option[0] = array
+                    (
+                        'id' => $v['id'],
+                        'name' => '无',
+                    );
+                }
+            }
+            $result['sku_id']['option'] = $option;
+            //$result['sku_id']['desc'] = '222';
+        }
+        
+        return $result;
+    }
+
+    # 提取卡密
+    public function tqKmManage()
+    {
+        return $this->tqKmRun(2);
+    }
+
+    # 提取卡密
+    public function tqKm()
+    {
+        return $this->tqKmRun(1);
+    }
+
+    # 提取卡密
+    public function tqKmRun($type = 1)
+    {
+        $value = Dever::input('value');
+        $id = Dever::input('order_id');
+        $order = Dever::db('seller/order')->find($id);
+
+        /*
+        $code = Dever::load(\Seller\Manage\Lib\Data::class)->kmPwd($order['id'], $order['cdate']);
+        if ($code != $value) {
+            Dever::error('密码错误');
+        }*/
+
+        if (!$value) {
+            Dever::error('请输入正确的邮箱');
+        }
+        if (!preg_match(Dever::rule('email'), $value)) {
+            Dever::error('请输入正确的邮箱');
+        }
+        if ($type == 1) {
+            $log['seller_id'] = $order['seller_id'];
+            $log['order_id'] = $id;
+            $order_km = Dever::db('seller/order_km')->find($log);
+            if ($order_km) {
+                Dever::error('您已经提取过卡密,无法重复提取,如需再次提取请联系商务');
+            }
+        }
+
+        $result = array();
+        $result['msg'] = '提取成功';
+        //$result['url'] = Dever::url('seller/manage.tqKmAct', array('order_id' => $order['id'], 'value' => $value));
+        \Dever\Helper\Cmd::run('seller/manage.tqKmAct', array('order_id' => $order['id'], 'value' => $value));
+
+        # 增加提取日志
+        $log['admin_id'] = $this->uid;
+        $log['system_id'] = $this->system['id'];
+        $log['admin_name'] = $this->user['name'];
+        $log['email'] = $value;
+
+        Dever::db('seller/order_km')->insert($log);
+        return $result;
+    }
+
+    # 提取卡密
+    public function tqKmAct()
+    {
+        $value = Dever::input('value');
+        $id = Dever::input('order_id');
+        $order = Dever::db('seller/order')->select($id);
+        if (!$order) {
+            Dever::error('订单不存在');
+        }
+
+        $code = Dever::load(\Seller\Manage\Lib\Data::class)->kmPwd($order[0]['id'], $order[0]['cdate']);
+        /*
+        if ($code != $value) {
+            Dever::error('密码错误');
+        }
+        */
+        $data = Dever::load(\Seller\Manage\Lib\Data::class)->outKm(array('body' => $order));
+        
+        $file = Dever::load(\Excel\Lib\Export::class)->act($data['body'], $data['head'], '导出卡密', 0, '', false, false, $code, 'km' . $id);
+
+        $seller = Dever::db('seller/info')->find($order[0]['seller_id']);
+        $email = $value;
+        $username = $seller['name'];
+        $title = '您有新的卡密请查收';
+        $content = '请您打开附件提取卡密,提取密码请联系商务人员';
+        $this->send($email, $username, $title, $content, $file);
+        Dever::db('seller/info')->update($seller['id'], array('email' => $value));
+        return '卡密提取成功';
+    }
+
+    # 发送邮件
+    public function send($email, $username, $title, $content, $file = '')
+    {
+        $config = Dever::db('config', 'channel')->find(1);
+
+        Dever::apply('PHPMailer', 'email', 'src');
+        Dever::apply('Exception', 'email', 'src');
+        Dever::apply('SMTP', 'email', 'src');
+        $mail = new \PHPMailer\PHPMailer\PHPMailer();
+
+        $mail->isSMTP();
+        //$mail->SMTPDebug = 2;
+        $mail->CharSet = 'UTF-8';
+        $mail->Host = 'smtp.exmail.qq.com';
+        $mail->Port = 465;
+        $mail->SMTPSecure = 'ssl';
+        $mail->SMTPAuth = true;
+        $mail->Username = $config['email_user'];
+        $mail->Password = $config['email_pass'];
+        $mail->setFrom($config['email_user'], 'kaibihe');
+        $mail->addAddress($email, $username);
+        $mail->Subject = "=?utf-8?B?" . base64_encode($title) . "?=";
+        $mail->Body = $content;
+        $mail->isHTML(true);
+        if ($file) {
+            $mail->addAttachment($file);
+        }
+        if (!$mail->send()) {
+            Dever::log($email . '-' . $username . '-' . $mail->ErrorInfo, 'email');
+            Dever::alert("Mailer Error: " . $mail->ErrorInfo);
+        } else {
+            @unlink($file);
+            return 'ok';
+        }
+    }
 }

+ 612 - 718
src/dai/seller/lib/Manage.php → src/dai/seller/manage/Lib/Data.php

@@ -1,719 +1,613 @@
-<?php namespace Seller\Lib;
-use Dever;
-use Dever\Helper\Str;
-use Manage\Lib\Auth;
-class Manage extends Auth
-{
-    # 获取商户列表
-    public function getInfo()
-    {
-        return Dever::db('info', 'seller')->select(array('status' => 1));
-    }
-
-    # 获取卡密可以分配的商户列表
-    public function getList($channel_id)
-    {
-        $data[0] = array
-        (
-            'id' => -1,
-            'name' => '--通用卡密--',
-        );
-        $seller = array();
-        if ($channel_id) {
-            $seller_channel = Dever::db('channel', 'seller')->select(array('channel_id' => $channel_id, 'status' => 1));
-            if ($seller_channel) {
-                foreach ($seller_channel as $v) {
-                    $info = Dever::db('info', 'seller')->find(array('id' => $v['seller_id'], 'status' => 1));
-                    if ($info) {
-                        $seller[] = $info;
-                    }
-                }
-            }
-        }
-        $data = array_merge($data, $seller);
-        return $data;
-    }
-
-    # 为商户生成appkey
-    public function createAppKey($data)
-    {
-        $info = Dever::db('info', 'seller')->find($data['id']);
-        if (!$info['appkey']) {
-            $update['appkey'] = 'app' . Str::rand(15, 0);
-            $update['appsecret'] = strtoupper(Str::rand(32));
-            $check = Dever::db('info', 'seller')->find(array('appkey' => $update['appkey']));
-            if ($check) {
-                return $this->createAppKey($data);
-            }
-            Dever::db('info', 'seller')->update($data['id'], $update);
-        }
-        /*
-        # 写到redis中
-        $info = Dever::db('info', 'seller')->find($data['id']);
-        Dever::cache('seller_' . $info['appkey'], $info);
-        */
-    }
-
-    # 为商户生成账号
-    public function createUser($data)
-    {
-        if (isset($data['mobile']) && $data['mobile'] && isset($data['password']) && $data['password']) {
-            $info = Dever::db('info', 'seller')->find($data['id']);
-            Dever::load('group', 'manage')->createUser('seller', $info['id'], $info['name'], $data['mobile'], $data['password'], true);
-        }
-        return $data;
-    }
-
-    # 订单手动充值
-    public function createOrder($data)
-    {
-        if (!$data['seller_id']) {
-            Dever::error('未选择商户');
-        }
-        if (!$data['data']) {
-            Dever::error('未输入充值数据');
-        }
-        //$goods = explode(',', $data['goods']);
-        $goods_id = $data['goods_id'];
-        $sku_id = $data['sku_id'];
-        $seller_id = $data['seller_id'];
-        $seller = Dever::db('info', 'seller')->find($seller_id);
-        if (!$seller) {
-            Dever::error('商户不存在');
-        }
-        if ($seller && $seller['status'] == 2) {
-            Dever::error('商户已封禁');
-        }
-        if (!$goods_id) {
-            Dever::error('未选择商品');
-        }
-        if (!$sku_id) {
-            Dever::error('未选择规格');
-        }
-        $goods = Dever::db('info', 'goods')->find($goods_id);
-        $sku = Dever::db('info_sku', 'goods')->find($sku_id);
-        if (!$goods) {
-            Dever::error('商品不存在');
-        }
-        if (!$sku) {
-            Dever::error('规格不存在');
-        }
-        if ($sku['info_id'] != $goods['id']) {
-            Dever::error('商品['.$goods['name'].']下无此规格');
-        }
-        $cate = Dever::db('cate', 'goods')->find($goods['cate_id']);
-
-        $class = Dever::load('order', 'seller');
-        if ($cate['key'] == 'km') {
-            $num = $data['data'];
-            # 验证是否有剩余的卡密
-            # 获取渠道
-            $channel_num = 0;
-            $channel = $class->channel($seller['id'], $goods['id'], $sku['id'], $channel_num);
-            if (!$channel) {
-                Dever::error('通道未开启');
-            }
-            if ($num > $channel['max']) {
-                Dever::error('不能超过最大购买数:' . $channel['max'] . '张');
-            }
-            $total = Dever::db('card', 'channel')->count(array('channel_id' => $channel['id'], 'goods_id' => $goods['id'], 'sku_id' => $sku['id'], 'status' => 1, 'use_status' => 1));
-            if ($total < $num) {
-                Dever::error('剩余卡密数量不足,当前剩余卡密数量:' . $total . '张');
-            }
-            $order = Str::order('PAY');
-            $class->add($seller, $goods, $sku, $cate['key'] . '_' . $seller['id'], $order, $num);
-        } else {
-            $param = explode("\r\n", $data['data']);
-            foreach ($param as $k => $v) {
-                $order = Str::order('PAY') . '_' . $k;
-                $class->add($seller, $goods, $sku, $v, $order);
-            }
-        }
-        return $data;
-    }
-
-    # 修改订单状态
-    public function editOrder($id, $data)
-    {
-        if ($data['status'] < 10) {
-            Dever::error('请选择订单状态');
-        }
-        $newid = array();
-        $id = explode(',', $id);
-        foreach ($id as $k => $v) {
-            $info = Dever::db('order', 'seller')->find($v);
-            if ($info['status'] < 10) {
-                $newid[] = $v;
-                if (!$info['order_num']) {
-                    $data['order_num'] = Dever::load('order', 'seller')->createOrder();
-                    //Dever::db('order', 'seller')->update($v, $update);
-                }
-            }
-        }
-        if (!$newid) {
-            Dever::error('请选择未完成订单');
-        }
-        $newid = implode(',', $newid);
-        $data['finish'] = 1;
-        $data['finish_date'] = time();
-        return array($newid, $data);
-    }
-
-    # 将订单插入到订单日志中
-    public function addOrderLog($id, $data)
-    {
-        $id = explode(',', $id);
-        foreach ($id as $k => $v) {
-            $info = Dever::db('order', 'seller')->find($v);
-            if ($info['status'] >= 10) {
-                $msg = 'error';
-                if ($info['status'] == 10) {
-                    $msg = 'ok';
-                }
-                $info['status'] = 2;
-                Dever::load('order', 'seller')->notify($info, $msg, array(), 5, 2);
-            }
-        }
-    }
-
-    # 修改订单状态
-    public function editOrderLog1($id, $data)
-    {
-        if ($data['status'] != 11) {
-            Dever::error('请选择退款订单');
-        }
-        $newid = array();
-        $id = explode(',', $id);
-        foreach ($id as $k => $v) {
-            $info = Dever::db('order_log1', 'seller')->find($v);
-            if ($info['status'] == 10) {
-                $newid[] = $v;
-            }
-        }
-        if (!$newid) {
-            Dever::error('请选择成功订单');
-        }
-        $newid = implode(',', $newid);
-        return array($newid, $data);
-    }
-
-    public function upOrderLog1($id, $data)
-    {
-        if ($data['status'] != 11) {
-            Dever::error('请选择退款订单');
-        }
-        $id = explode(',', $id);
-        foreach ($id as $k => $v) {
-            $info = Dever::db('order_log1', 'seller')->find($v);
-            if ($info['status'] == 11) {
-                Dever::load('info', 'seller')->inc($info['seller_id'], $info['price']);
-            }
-        }
-    }
-
-    # 后台充值、提现
-    public function operCash($data)
-    {
-        if ($data['type'] == 1) {
-            Dever::db('info', 'seller')->update($data['seller_id'], array('cash' => array('+', $data['cash']), 'p_cash' => array('+', $data['cash'])));
-        } elseif ($data['type'] == 2) {
-            Dever::load('info', 'seller')->dec($data['seller_id'], $data['cash']);
-            $data['cash'] = -1*$data['cash'];
-        }
-        return $data;
-    }
-
-    # 展示订单信息
-    public function showOrder($order_id)
-    {
-        $result = '';
-        if ($order_id) {
-            $order = Dever::db('order', 'seller')->find($order_id);
-            if ($order) {
-                $result = $order['order_num'];
-            } else {
-                $order = Dever::db('order_log1', 'seller')->find($order_id);
-                if ($order) {
-                    $result = $order['order_num'];
-                }
-            }
-        }
-        
-        return $result;
-    }
-
-    # 展示订单商品
-    public function showOrderGoods($cate_id, $goods_id, $sku_id)
-    {
-        $goods = Dever::db('info', 'goods')->find($goods_id);
-
-        $result = $goods['name'];
-        return $result;
-    }
-
-    # 展示订单账号
-    public function showOrderAccount($status, $account)
-    {
-        if (strstr($account, 'km_')) {
-            if ($status == 10) {
-                return '<a>提取卡密</a>';
-            }
-        }
-        return $account;
-    }
-
-
-    # 展示订单金额
-    public function showOrderCash($cate_id, $goods_id, $sku_id, $cash, $price, $buy_price, $num)
-    {
-        $goods = Dever::db('info', 'goods')->find($goods_id);
-
-        $result = $goods['name'] . ' / ' . $cash . ' / ' . $price . ' / ' . $buy_price;
-        return $result;
-    }
-
-    # 展示订单状态
-    public function showOrderStatus($status)
-    {
-        $value = Dever::db('order', 'seller')->config['struct']['status']['value'][$status];
-        if ($status < 10) {
-            return $value;
-        } elseif ($status == 10) {
-            return '<span style="color:blue">'.$value.'</span>';
-        } elseif ($status == 11) {
-            return '<span style="color:red">'.$value.'</span>';
-        }
-    }
-
-    # 展示订单统计信息
-    public function showOrderStat($where)
-    {
-        /*
-        $db = Dever::db('order', 'seller');
-        $total = $db->count($where);
-
-        $zongjine = $db->find($where, array('col' => 'sum(cash) as cash'));
-        if (!$zongjine) {
-            $zongjine['cash'] = 0;
-        }
-
-        $where['status'] = 10;
-        $yes = $db->count($where);
-        if ($total <= 0) {
-            $lv = '0';
-        } else {
-            $lv = round($yes/$total*100, 2);
-        }
-        $czongjine = $db->find($where, array('col' => 'sum(cash) as cash'));
-        $szongjine = $db->find($where, array('col' => 'sum(price) as cash'));
-        $kzongjine = $db->find($where, array('col' => 'sum(buy_price) as cash'));
-        if (!$czongjine) {
-            $czongjine['cash'] = 0;
-        }
-        if (!$szongjine) {
-            $szongjine['cash'] = 0;
-        }
-        if (!$kzongjine) {
-            $kzongjine['cash'] = 0;
-        }
-        $lirun = $szongjine['cash'] - $kzongjine['cash'];
-        
-        $where['status'] = array('<', 10);
-        $chu = $db->count($where);
-
-        $where['status'] = 11;
-        $shibaijine = $db->find($where, array('col' => 'sum(price) as cash'));
-        if (!$shibaijine) {
-            $shibaijine['cash'] = 0;
-        }
-        $shibai = $db->count($where);
-
-        return array
-        (
-            array
-            (
-                'span' => 3,
-                'name' => '处理中的笔数',
-                'value' => (float) $chu,
-            ),
-            array
-            (
-                'span' => 3,
-                'name' => '失败的笔数',
-                'value' => (float) $shibai,
-            ),
-            array
-            (
-                'span' => 3,
-                'name' => '成功的笔数',
-                'value' => (float) $yes,
-            ),
-            array
-            (
-                'span' => 3,
-                'name' => '失败的金额',
-                'value' => (float) $shibaijine['cash'] ?? 0,
-            ),
-            array
-            (
-                'span' => 3,
-                'name' => '成功的金额',
-                'value' => (float) $szongjine['cash'] ?? 0,
-            ),
-            array
-            (
-                'span' => 3,
-                'name' => '成功比例',
-                'value' => (float) $lv,
-                'suffix' => '%',
-            ),
-            array
-            (
-                'span' => 3,
-                'name' => '交易成本',
-                'value' => (float) $kzongjine['cash'] ?? 0,
-            ),
-            array
-            (
-                'span' => 3,
-                'name' => '交易利润',
-                'value' => (float) $lirun ?? 0,
-            ),
-        );
-        */
-
-        $db = Dever::db('order', 'seller');
-
-        $where['status'] = 10;
-        $yes = $db->count($where);
-
-        $szongjine = $db->find($where, array('col' => 'sum(price) as cash'));
-        $kzongjine = $db->find($where, array('col' => 'sum(buy_price) as cash'));
-        if (!$szongjine) {
-            $szongjine['cash'] = 0;
-        }
-        if (!$kzongjine) {
-            $kzongjine['cash'] = 0;
-        }
-        $lirun = $szongjine['cash'] - $kzongjine['cash'];
-        
-        $where['status'] = array('<', 10);
-        $chu = $db->count($where);
-
-        return array
-        (
-            array
-            (
-                'span' => 4,
-                'name' => '处理中的笔数',
-                'value' => (float) $chu,
-            ),
-            array
-            (
-                'span' => 4,
-                'name' => '成功的笔数',
-                'value' => (float) $yes,
-            ),
-            array
-            (
-                'span' => 4,
-                'name' => '成功的金额',
-                'value' => (float) $szongjine['cash'] ?? 0,
-            ),
-            array
-            (
-                'span' => 4,
-                'name' => '交易成本',
-                'value' => (float) $kzongjine['cash'] ?? 0,
-            ),
-            array
-            (
-                'span' => 4,
-                'name' => '交易利润',
-                'value' => (float) $lirun ?? 0,
-            ),
-        );
-    }
-
-    # 展示账户统计信息
-    public function showLogStat($where)
-    {
-        $db = Dever::db('info', 'seller');
-        $where['id'] = $where['seller_id'];
-        $info = $db->find($where);
-        return array
-        (
-            array
-            (
-                # 一共24
-                'span' => 8,
-                'name' => '余额',
-                'value' => (float) $info['cash'],
-            ),
-            array
-            (
-                'span' => 8,
-                'name' => '授信额度',
-                'value' => (float) $info['credit'],
-            ),
-            array
-            (
-                'span' => 8,
-                'name' => '总充值金额',
-                'value' => (float) $info['p_cash'],
-            ),
-        );
-    }
-
-    # 展示订单扩展信息
-    public function showOrderExpand($data)
-    {
-        $seller = Dever::db('info', 'seller')->find($data['seller_id']);
-        $channel = array();
-        if (isset($data['channel_id']) && $data['channel_id']) {
-            $channel = Dever::db('info', 'channel')->find($data['channel_id']);
-        }
-        $value = $this->showOrderStatus($data['status']);
-        $goods = $this->showOrderCash($data['cate_id'], $data['goods_id'], $data['sku_id'], $data['cash'], $data['price'], $data['buy_price'], $data['num']);
-        $result['type'] = 'desc';
-        if (strstr($data['account'], 'km_')) {
-            $code = $this->kmPwd($data['id'], $data['cdate']);
-            $tiqu = array('提取邮箱', '订单处理中,无法提取');
-            /*
-            $log['seller_id'] = $data['seller_id'];
-            $log['order_id'] = $data['id'];
-            $order_km = Dever::db('order_km', 'seller')->find($log);
-            */
-            if ($data['status'] == 10) {
-                $tiqu = array('提取卡密', array
-                (
-                    'input' => '请输入邮箱',
-                    'value' => $seller['email'],
-                    'button' => '提取',
-                    'remote' => Dever::url('seller/manage.tqKmManage', array('order_id' => $data['id'])),
-                ));
-            }
-            
-            $result['content'][] = array
-            (
-                'title' => '卡密信息',
-                'border' => true,
-                'direction' => 'horizontal',
-                'size' => 'small',
-                'column' => 1,
-                'content' => array
-                (
-                    array('提取密码', '<font style="color:red">' . $code . '</font>'),
-                    $tiqu,
-                ), 
-            );
-            
-        }
-        
-        $result['content'][] = array
-        (
-            'title' => '商户发起请求',
-            'border' => true,
-            'direction' => 'horizontal',
-            'size' => 'small',
-            'column' => 1,
-            'content' => array
-            (
-                array('商户名称', $seller['name']),
-                array('商户订单号', $data['seller_order_num']),
-                array('商品', $goods),
-                array('数量', $data['num']),
-                array('商户请求参数', $data['seller_request']),
-                array('请求时间', date('Y-m-d H:i:s', $data['cdate'])),
-            ), 
-        );
-        $result['content'][] = array
-        (
-            'title' => '系统下单',
-            'border' => true,
-            'direction' => 'horizontal',//'vertical' | 'horizontal'
-            'size' => 'small',//'' | 'large' | 'default' | 'small'
-            'column' => 1,
-            'content' => array
-            (
-                array('系统订单ID', $data['id']),
-                array('系统订单号', $data['order_num']),
-                array('订单状态', $value),
-            ), 
-        );
-
-        $order_error = Dever::db('order_error', 'seller')->select(array('order_num' => $data['order_num']), array('order' => 'id asc'));
-        if ($order_error) {
-            foreach ($order_error as $k => $v) {
-                $error_channel = Dever::db('info', 'channel')->find($v['channel_id']);
-                $content = $this->showOrderExpandContent($error_channel, $v);
-                $result['content'][] = array
-                (
-                    'title' => '轮巡渠道失败信息-' . ($k+1),
-                    'border' => true,
-                    'direction' => 'horizontal',
-                    'size' => 'small',
-                    'column' => 1,
-                    'content' => $content,
-                );
-            }
-        }
-
-        if ($channel) {
-            $content = $this->showOrderExpandContent($channel, $data);
-            $result['content'][] = array
-            (
-                'title' => '当前渠道响应信息',
-                'border' => true,
-                'direction' => 'horizontal',
-                'size' => 'small',
-                'column' => 1,
-                'content' => $content,
-            );
-        }
-
-        $result['content'][] = array
-        (
-            'title' => '系统向商户发起回调',
-            'border' => true,
-            'direction' => 'horizontal',
-            'size' => 'small',
-            'column' => 1,
-            'content' => array
-            (
-                array('商户响应信息', $data['seller_callback']),
-                array('响应时间', $data['seller_callback_date'] ? date('Y-m-d H:i:s', $data['seller_callback_date']) : '-'),
-                array('响应次数', $data['seller_callback_num']),
-            ), 
-        );
-        return $result;
-    }
-
-    # 展示订单渠道内容
-    public function showOrderExpandContent($channel, $info)
-    {
-        $content = array();
-        $content[] = array('渠道名称', $channel['name']);
-        $content[] = array('渠道地址', $channel['host']);
-        if ($info['channel_order_num']) {
-            $content[] = array('渠道订单号', $info['channel_order_num']);
-        }
-        $content[] = array('请求时间', $info['channel_order_date'] ? date('Y-m-d H:i:s', $info['channel_order_date']) : '-');
-        if ($info['channel_request']) {
-            $content[] = array('请求信息', $info['channel_request']);
-        }
-        if ($info['channel_response']) {
-            $content[] = array('响应信息', $info['channel_response']);
-        }
-        if ($info['channel_callback']) {
-            $content[] = array('回调信息', $info['channel_callback']);
-        }
-        if ($info['channel_callback_date']) {
-            $content[] = array('回调时间', date('Y-m-d H:i:s', $info['channel_callback_date']));
-        }
-        if (isset($info['official_order_num']) && $info['official_order_num']) {
-            $content[] = array('官方流水号', '<span>' . $info['official_order_num'] . '</span>');
-        }
-        if (isset($info['official_msg']) && $info['official_msg']) {
-            $content[] = array('官方充值结果', $info['official_msg']);
-        }
-        return $content;
-    }
-
-    # 展示订单卡密扩展信息
-    public function showOrderExpandKm($data)
-    {
-        if ($data && $data['status'] == 10 && strstr($data['account'], 'km_')) {
-            $seller = Dever::db('info', 'seller')->find($data['seller_id']);
-            $result['type'] = 'desc';
-            $result['content'][] = array
-            (
-                'title' => '提取卡密',
-                'border' => true,
-                'direction' => 'horizontal',
-                'size' => 'small',
-                'column' => 1,
-                'content' => array
-                (
-                    array('提取邮箱', array
-                    (
-                        'input' => '请输入邮箱',
-                        'value' => $seller['email'],
-                        'button' => '提取',
-                        'remote' => Dever::url('seller/manage.tqKm', array('order_id' => $data['id'])),
-                    )),
-                ), 
-            );
-            $log = Dever::db('order_km', 'seller')->select(array('order_id' => $data['id']));
-            $content = array();
-            if ($log) {
-                foreach ($log as $v) {
-                    if ($v['email']) {
-                        $v['admin_name'] .= ' 提取邮箱:' . $v['email'];
-                    }
-                    $content[] = array(date('Y-m-d H:i:s', $v['cdate']), '操作人:' . $v['admin_name']);
-                }
-            }
-            $result['content'][] = array
-            (
-                'title' => '提取记录',
-                'border' => true,
-                'direction' => 'horizontal',
-                'size' => 'small',
-                'column' => 1,
-                'content' => $content,
-            );
-        } else {
-            $result['type'] = 'string';
-            $result['content'] = '暂无信息';
-        }
-        
-        return $result;
-    }
-
-    # 导出卡密
-    public function outKm($data)
-    {
-        $result = array();
-        $result['head'] = array('订单id', '订单号', '商品', '面值', '卡号', '密码', '有效期');
-        $result['body'] = array();
-        foreach ($data['body'] as $k => $v) {
-            //$v['sku_id']
-            $goods_name = Dever::load("manage", "goods")->showGoodsInfo($v['goods_id'], false);
-            $card = Dever::db('card', 'channel')->select(array('order_id' => $v['id'], 'status' => 1));
-            if ($card) {
-                foreach ($card as $k1 => $v1) {
-                    $result['body'][] = array($v['id'], $v['order_num'], $goods_name, $v['cash'], $v1['number'], $v1['pwd'], $v1['end']);
-                }
-            }
-        }
-        return $result;
-    }
-
-    # 生成卡密密码
-    public function kmPwd($id, $cdate)
-    {
-        $num = ($id + 1000000000);
-        return md5(\Dever\Helper\Str::idtostr($num));
-    }
-
-    # 展示订单号
-    public function showOrderListOrder($seller_order_num, $order_num)
-    {
-        if (!$order_num) {
-            $order_num = '-';
-        }
-        return '商户订单号:' . $seller_order_num . '<br />系统订单号:' . $order_num;
-    }
-
-    # 展示订单商品
-    public function showOrderListGoods($account, $cate_id, $goods_id, $sku_id, $cash, $price, $buy_price, $num)
-    {
-        $goods = Dever::db('info', 'goods')->find($goods_id);
-
-        $result = '账号:' . $account . '<br />';
-        $result .= '商品:' . $goods['name'] . '<br />';
-        $result .= '面值:' . $cash . ' 销售价:' . $price . ' 成本价:' . $buy_price;
-        return $result;
-    }
+<?php namespace Seller\Manage\Lib;
+use Dever;
+use Dever\Helper\Str;
+class Data {
+    # 获取商户列表
+    public function getInfo()
+    {
+        return Dever::db('seller/info')->select(array('status' => 1));
+    }
+
+    # 获取卡密可以分配的商户列表
+    public function getList($channel_id)
+    {
+        $data[0] = array
+        (
+            'id' => -1,
+            'name' => '--通用卡密--',
+        );
+        $seller = array();
+        if ($channel_id) {
+            $seller_channel = Dever::db('seller/channel')->select(array('channel_id' => $channel_id, 'status' => 1));
+            if ($seller_channel) {
+                foreach ($seller_channel as $v) {
+                    $info = Dever::db('seller/info')->find(array('id' => $v['seller_id'], 'status' => 1));
+                    if ($info) {
+                        $seller[] = $info;
+                    }
+                }
+            }
+        }
+        $data = array_merge($data, $seller);
+        return $data;
+    }
+
+    # 为商户生成appkey
+    public function createAppKey($db, $data)
+    {
+        $info = Dever::db('seller/info')->find($data['id']);
+        if (!$info['appkey']) {
+            $update['appkey'] = 'app' . Str::rand(15, 0);
+            $update['appsecret'] = strtoupper(Str::rand(32));
+            $check = Dever::db('seller/info')->find(array('appkey' => $update['appkey']));
+            if ($check) {
+                return $this->createAppKey($data);
+            }
+            Dever::db('seller/info')->update($data['id'], $update);
+        }
+    }
+
+    # 为商户生成账号
+    public function createUser($db, $data)
+    {
+        if (isset($data['mobile']) && $data['mobile'] && isset($data['password']) && $data['password']) {
+            $info = Dever::db('seller/info')->find($data['id']);
+            Dever::load(\Manage\Lib\Group::class)->createUser('seller', $info['id'], $info['name'], $data['mobile'], $data['password'], true);
+        }
+        return $data;
+    }
+
+    # 订单手动充值
+    public function createOrder($db, $data)
+    {
+        if (!$data['seller_id']) {
+            Dever::error('未选择商户');
+        }
+        if (!$data['data']) {
+            Dever::error('未输入充值数据');
+        }
+        //$goods = explode(',', $data['goods']);
+        $goods_id = $data['goods_id'];
+        $sku_id = $data['sku_id'];
+        $seller_id = $data['seller_id'];
+        $seller = Dever::db('seller/info')->find($seller_id);
+        if (!$seller) {
+            Dever::error('商户不存在');
+        }
+        if ($seller && $seller['status'] == 2) {
+            Dever::error('商户已封禁');
+        }
+        if (!$goods_id) {
+            Dever::error('未选择商品');
+        }
+        if (!$sku_id) {
+            Dever::error('未选择规格');
+        }
+        $goods = Dever::db('goods/info')->find($goods_id);
+        $sku = Dever::db('goods/info_sku')->find($sku_id);
+        if (!$goods) {
+            Dever::error('商品不存在');
+        }
+        if (!$sku) {
+            Dever::error('规格不存在');
+        }
+        if ($sku['info_id'] != $goods['id']) {
+            Dever::error('商品['.$goods['name'].']下无此规格');
+        }
+        $cate = Dever::db('goods/cate')->find($goods['cate_id']);
+
+        $class = Dever::load(\Seller\Lib\Order::class);
+        if ($cate['key'] == 'km') {
+            $num = $data['data'];
+            # 验证是否有剩余的卡密
+            # 获取渠道
+            $channel_num = 0;
+            $channel = $class->channel($seller['id'], $goods['id'], $sku['id'], $channel_num);
+            if (!$channel) {
+                Dever::error('通道未开启');
+            }
+            if ($num > $channel['max']) {
+                Dever::error('不能超过最大购买数:' . $channel['max'] . '张');
+            }
+            $total = Dever::db('card', 'channel')->count(array('channel_id' => $channel['id'], 'goods_id' => $goods['id'], 'sku_id' => $sku['id'], 'status' => 1, 'use_status' => 1));
+            if ($total < $num) {
+                Dever::error('剩余卡密数量不足,当前剩余卡密数量:' . $total . '张');
+            }
+            $order = Str::order('PAY');
+            $class->add($seller, $goods, $sku, $cate['key'] . '_' . $seller['id'], $order, $num);
+        } else {
+            $param = explode("\r\n", $data['data']);
+            foreach ($param as $k => $v) {
+                $order = Str::order('PAY') . '_' . $k;
+                $class->add($seller, $goods, $sku, $v, $order);
+            }
+        }
+        return $data;
+    }
+
+    # 修改订单状态
+    public function editOrder($id, $data)
+    {
+        if ($data['status'] < 10) {
+            Dever::error('请选择订单状态');
+        }
+        $newid = array();
+        $id = explode(',', $id);
+        foreach ($id as $k => $v) {
+            $info = Dever::db('seller/order')->find($v);
+            if ($info['status'] < 10) {
+                $newid[] = $v;
+            }
+        }
+        if (!$newid) {
+            Dever::error('请选择未完成订单');
+        }
+        $newid = implode(',', $newid);
+        $data['finish'] = 1;
+        $data['finish_date'] = time();
+        return array($newid, $data);
+    }
+
+    # 将订单插入到订单日志中
+    public function addOrderLog($id, $data)
+    {
+        $id = explode(',', $id);
+        foreach ($id as $k => $v) {
+            $info = Dever::db('seller/order')->find($v);
+            if ($info['status'] >= 10) {
+                $msg = 'error';
+                if ($info['status'] == 10) {
+                    $msg = 'ok';
+                }
+                $info['status'] = 2;
+                Dever::load(\Seller\Lib\Order::class)->notify($info, $msg, array(), 5, 2);
+            }
+        }
+    }
+
+    # 修改订单状态
+    public function editOrderHistory($id, $data)
+    {
+        if ($data['status'] != 11) {
+            Dever::error('请选择退款订单');
+        }
+        $newid = array();
+        $id = explode(',', $id);
+        foreach ($id as $k => $v) {
+            $info = Dever::db('seller/order_history')->find($v);
+            if ($info['status'] == 10) {
+                $newid[] = $v;
+            }
+        }
+        if (!$newid) {
+            Dever::error('请选择成功订单');
+        }
+        $newid = implode(',', $newid);
+        return array($newid, $data);
+    }
+
+    public function upOrderHistory($id, $data)
+    {
+        if ($data['status'] != 11) {
+            Dever::error('请选择退款订单');
+        }
+        $id = explode(',', $id);
+        foreach ($id as $k => $v) {
+            $info = Dever::db('seller/order_history')->find($v);
+            if ($info['status'] == 11) {
+                Dever::load(\Seller\Lib\Order::class)->inc($info['seller_id'], $info['price'], true);
+            }
+        }
+    }
+
+    # 后台充值、提现
+    public function operCash($db, $data)
+    {
+        if ($data['type'] == 1) {
+            Dever::db('seller/info')->update($data['seller_id'], array('cash' => array('+', $data['cash']), 'p_cash' => array('+', $data['cash'])));
+        } elseif ($data['type'] == 2) {
+            $data['cash'] = -1*$data['cash'];
+            Dever::load(\Seller\Lib\Info::class)->dec($data['seller_id'], $data['cash'], true);
+        }
+        return $data;
+    }
+
+    # 展示订单信息
+    public function showOrder($order_id)
+    {
+        $result = '';
+        if ($order_id) {
+            $order = Dever::db('seller/order')->find($order_id);
+            if ($order) {
+                $result = $order['order_num'];
+            }
+        }
+        
+        return $result;
+    }
+
+    # 展示订单商品
+    public function showOrderGoods($cate_id, $goods_id, $sku_id)
+    {
+        $goods = Dever::db('goods/info')->find($goods_id);
+
+        $result = $goods['name'];
+        return $result;
+    }
+
+    # 展示订单账号
+    public function showOrderAccount($status, $account)
+    {
+        if (strstr($account, 'km_')) {
+            if ($status == 10) {
+                return '<a>提取卡密</a>';
+            }
+        }
+        return $account;
+    }
+
+
+    # 展示订单金额
+    public function showOrderCash($cate_id, $goods_id, $sku_id, $cash, $price, $buy_price, $num)
+    {
+        $goods = Dever::db('goods/info')->find($goods_id);
+
+        $result = $goods['name'] . ' / ' . $cash . ' / ' . $price . ' / ' . $buy_price;
+        return $result;
+    }
+
+    # 展示订单状态
+    public function showOrderStatus($status)
+    {
+        $value = Dever::db('seller/order')->config['struct']['status']['value'][$status];
+        if ($status < 10) {
+            return $value;
+        } elseif ($status == 10) {
+            return '<span style="color:blue">'.$value.'</span>';
+        } elseif ($status == 11) {
+            return '<span style="color:red">'.$value.'</span>';
+        }
+    }
+
+    # 展示订单统计信息
+    public function showOrderStat($where)
+    {
+        $db = Dever::db('seller/order');
+
+        $where['status'] = 10;
+        $yes = $db->count($where);
+
+        $szongjine = $db->find($where, array('col' => 'sum(price) as cash'));
+        $kzongjine = $db->find($where, array('col' => 'sum(buy_price) as cash'));
+        if (!$szongjine) {
+            $szongjine['cash'] = 0;
+        }
+        if (!$kzongjine) {
+            $kzongjine['cash'] = 0;
+        }
+        $lirun = $szongjine['cash'] - $kzongjine['cash'];
+        
+        $where['status'] = array('<', 10);
+        $chu = $db->count($where);
+
+        return array
+        (
+            array
+            (
+                'span' => 4,
+                'name' => '处理中的笔数',
+                'value' => (float) $chu,
+            ),
+            array
+            (
+                'span' => 4,
+                'name' => '成功的笔数',
+                'value' => (float) $yes,
+            ),
+            array
+            (
+                'span' => 4,
+                'name' => '成功的金额',
+                'value' => (float) $szongjine['cash'] ?? 0,
+            ),
+            array
+            (
+                'span' => 4,
+                'name' => '交易成本',
+                'value' => (float) $kzongjine['cash'] ?? 0,
+            ),
+            array
+            (
+                'span' => 4,
+                'name' => '交易利润',
+                'value' => (float) $lirun ?? 0,
+            ),
+        );
+    }
+
+    # 展示账户统计信息
+    public function showLogStat($where)
+    {
+        $db = Dever::db('seller/info');
+        $where['id'] = $where['seller_id'];
+        $info = $db->find($where);
+        return array
+        (
+            array
+            (
+                # 一共24
+                'span' => 8,
+                'name' => '余额',
+                'value' => (float) $info['cash'],
+            ),
+            array
+            (
+                'span' => 8,
+                'name' => '授信额度',
+                'value' => (float) $info['credit'],
+            ),
+            array
+            (
+                'span' => 8,
+                'name' => '总充值金额',
+                'value' => (float) $info['p_cash'],
+            ),
+        );
+    }
+
+    # 展示订单扩展信息
+    public function showOrderExpand($data)
+    {
+        $seller = Dever::db('seller/info')->find($data['seller_id']);
+        $channel = array();
+        if (isset($data['channel_id']) && $data['channel_id']) {
+            $channel = Dever::db('channel/info')->find($data['channel_id']);
+        }
+        $value = $this->showOrderStatus($data['status']);
+        $goods = $this->showOrderCash($data['cate_id'], $data['goods_id'], $data['sku_id'], $data['cash'], $data['price'], $data['buy_price'], $data['num']);
+        $result['type'] = 'desc';
+        if (strstr($data['account'], 'km_')) {
+            $code = $this->kmPwd($data['id'], $data['cdate']);
+            $tiqu = array('提取邮箱', '订单处理中,无法提取');
+            /*
+            $log['seller_id'] = $data['seller_id'];
+            $log['order_id'] = $data['id'];
+            $order_km = Dever::db('order_km', 'seller')->find($log);
+            */
+            if ($data['status'] == 10) {
+                $tiqu = array('提取卡密', array
+                (
+                    'input' => '请输入邮箱',
+                    'value' => $seller['email'],
+                    'button' => '提取',
+                    'remote' => Dever::url('seller/manage.tqKmManage', array('order_id' => $data['id'])),
+                ));
+            }
+            
+            $result['content'][] = array
+            (
+                'title' => '卡密信息',
+                'border' => true,
+                'direction' => 'horizontal',
+                'size' => 'small',
+                'column' => 1,
+                'content' => array
+                (
+                    array('提取密码', '<font style="color:red">' . $code . '</font>'),
+                    $tiqu,
+                ), 
+            );
+        }
+
+        $seller_log = Dever::db('seller/order_seller')->find(['order_id' => $data['id']]);
+        
+        $result['content'][] = array
+        (
+            'title' => '商户发起请求',
+            'border' => true,
+            'direction' => 'horizontal',
+            'size' => 'small',
+            'column' => 1,
+            'content' => array
+            (
+                array('商户名称', $seller['name']),
+                array('商户订单号', $data['seller_order_num']),
+                array('商品', $goods),
+                array('数量', $data['num']),
+                array('商户请求参数', $seller_log['request']),
+                array('请求时间', date('Y-m-d H:i:s', $data['cdate'])),
+            ), 
+        );
+        $result['content'][] = array
+        (
+            'title' => '系统下单',
+            'border' => true,
+            'direction' => 'horizontal',//'vertical' | 'horizontal'
+            'size' => 'small',//'' | 'large' | 'default' | 'small'
+            'column' => 1,
+            'content' => array
+            (
+                array('系统订单ID', $data['id']),
+                array('系统订单号', $data['order_num']),
+                array('订单状态', $value),
+            ), 
+        );
+
+        $order_error = Dever::db('seller/order_channel_error')->select(array('order_id' => $data['id']), array('order' => 'id asc'));
+        if ($order_error) {
+            foreach ($order_error as $k => $v) {
+                $error_channel = Dever::db('channel/info')->find($v['channel_id']);
+                $content = $this->showOrderExpandContent($error_channel, $v);
+                $result['content'][] = array
+                (
+                    'title' => '轮巡渠道失败信息-' . ($k+1),
+                    'border' => true,
+                    'direction' => 'horizontal',
+                    'size' => 'small',
+                    'column' => 1,
+                    'content' => $content,
+                );
+            }
+        }
+
+        if ($channel) {
+            $content = $this->showOrderExpandContent($channel, $data);
+            $result['content'][] = array
+            (
+                'title' => '当前渠道响应信息',
+                'border' => true,
+                'direction' => 'horizontal',
+                'size' => 'small',
+                'column' => 1,
+                'content' => $content,
+            );
+        }
+
+        $result['content'][] = array
+        (
+            'title' => '系统向商户发起回调',
+            'border' => true,
+            'direction' => 'horizontal',
+            'size' => 'small',
+            'column' => 1,
+            'content' => array
+            (
+                array('商户响应信息', $seller_log['callback']),
+                array('响应时间', $seller_log['callback_date'] ? date('Y-m-d H:i:s', $data['callback_date']) : '-'),
+                array('响应次数', $data['seller_callback_num']),
+            ), 
+        );
+        return $result;
+    }
+
+    # 展示订单渠道内容
+    public function showOrderExpandContent($channel, $info)
+    {
+        $channel_log = Dever::db('seller/order_channel')->find(['id' => $info['order_channel_id']]);
+        $content = array();
+        $content[] = array('渠道名称', $channel['name']);
+        $content[] = array('渠道地址', $channel['host']);
+        if ($channel_log) {
+            if ($channel_log['channel_order_num']) {
+                $content[] = array('渠道订单号', $channel_log['channel_order_num']);
+            }
+            $content[] = array('请求时间', $channel_log['order_date'] ? date('Y-m-d H:i:s', $channel_log['order_date']) : '-');
+            if ($channel_log['request']) {
+                $content[] = array('请求信息', $channel_log['request']);
+            }
+            if ($channel_log['response']) {
+                $content[] = array('响应信息', $channel_log['response']);
+            }
+            if ($channel_log['callback']) {
+                $content[] = array('回调信息', $channel_log['callback']);
+            }
+            if ($channel_log['callback_date']) {
+                $content[] = array('回调时间', date('Y-m-d H:i:s', $channel_log['callback_date']));
+            }
+            if (isset($channel_log['official_order_num']) && $channel_log['official_order_num']) {
+                $content[] = array('官方流水号', '<span>' . $channel_log['official_order_num'] . '</span>');
+            }
+            if (isset($channel_log['official_msg']) && $channel_log['official_msg']) {
+                $content[] = array('官方充值结果', $channel_log['official_msg']);
+            }
+        }
+        return $content;
+    }
+
+    # 展示订单卡密扩展信息
+    public function showOrderExpandKm($data)
+    {
+        if ($data && $data['status'] == 10 && strstr($data['account'], 'km_')) {
+            $seller = Dever::db('seller/info')->find($data['seller_id']);
+            $result['type'] = 'desc';
+            $result['content'][] = array
+            (
+                'title' => '提取卡密',
+                'border' => true,
+                'direction' => 'horizontal',
+                'size' => 'small',
+                'column' => 1,
+                'content' => array
+                (
+                    array('提取邮箱', array
+                    (
+                        'input' => '请输入邮箱',
+                        'value' => $seller['email'],
+                        'button' => '提取',
+                        'remote' => Dever::url('seller/manage.tqKm', array('order_id' => $data['id'])),
+                    )),
+                ), 
+            );
+            $log = Dever::db('seller/order_km')->select(array('order_id' => $data['id']));
+            $content = array();
+            if ($log) {
+                foreach ($log as $v) {
+                    if ($v['email']) {
+                        $v['admin_name'] .= ' 提取邮箱:' . $v['email'];
+                    }
+                    $content[] = array(date('Y-m-d H:i:s', $v['cdate']), '操作人:' . $v['admin_name']);
+                }
+            }
+            $result['content'][] = array
+            (
+                'title' => '提取记录',
+                'border' => true,
+                'direction' => 'horizontal',
+                'size' => 'small',
+                'column' => 1,
+                'content' => $content,
+            );
+        } else {
+            $result['type'] = 'string';
+            $result['content'] = '暂无信息';
+        }
+        
+        return $result;
+    }
+
+    # 导出卡密
+    public function outKm($data)
+    {
+        $result = array();
+        $result['head'] = array('订单id', '订单号', '商品', '面值', '卡号', '密码', '有效期');
+        $result['body'] = array();
+        foreach ($data['body'] as $k => $v) {
+            //$v['sku_id']
+            $goods_name = Dever::load(\Goods\Manage\Lib\Data::class)->showGoodsInfo($v['goods_id'], false);
+            $card = Dever::db('channel/card')->select(array('order_id' => $v['id'], 'status' => 1));
+            if ($card) {
+                foreach ($card as $k1 => $v1) {
+                    $result['body'][] = array($v['id'], $v['order_num'], $goods_name, $v['cash'], $v1['number'], $v1['pwd'], $v1['end']);
+                }
+            }
+        }
+        return $result;
+    }
+
+    # 生成卡密密码
+    public function kmPwd($id, $cdate)
+    {
+        $num = ($id + 1000000000);
+        return md5(\Dever\Helper\Str::idtostr($num));
+    }
+
+    # 展示订单号
+    public function showOrderListOrder($seller_order_num, $order_num)
+    {
+        if (!$order_num) {
+            $order_num = '-';
+        }
+        return '商户订单号:' . $seller_order_num . '<br />系统订单号:' . $order_num;
+    }
+
+    # 展示订单商品
+    public function showOrderListGoods($account, $cate_id, $goods_id, $sku_id, $cash, $price, $buy_price, $num)
+    {
+        $goods = Dever::db('goods/info')->find($goods_id);
+
+        $result = '账号:' . $account . '<br />';
+        $result .= '商品:' . $goods['name'] . '<br />';
+        $result .= '面值:' . $cash . ' 销售价:' . $price . ' 成本价:' . $buy_price;
+        return $result;
+    }
 }

+ 3 - 3
src/dai/seller/table/manage/channel.php → src/dai/seller/manage/channel.php

@@ -9,8 +9,8 @@ return array
             (
                 'name' => '渠道',
                 'type' => 'select',
-                'option'    => 'Dever::call("channel/manage.getInfo")',
-                'remote' => 'channel/manage.getGoods',
+                'option'    => 'Dever::call("Channel/Manage/Lib/Data.getInfo")',
+                'remote' => 'Channel/Manage/Api/Main.getGoods',
                 # 无需默认值
                 'remote_default' => false,
             ),
@@ -18,7 +18,7 @@ return array
             (
                 'name' => '商品',
                 'type' => 'select',
-                'remote' => 'goods/manage.getMulSku',
+                'remote' => 'Goods/Manage/Api/Main.getMulSku',
             ),
             'sku_id' => array
             (

+ 4 - 40
src/dai/seller/table/manage/core.php → src/dai/seller/manage/core.php

@@ -44,27 +44,13 @@ return array
             'icon'      => 'bank-card-line',
             'sort'      => '2',
         ),*/
-        'seller_order_log_list' => array
+        'seller_order_history' => array
         (
             'parent'    => 'seller_order',
-            'name'      => '历史成功订单',
+            'name'      => '历史订单',
             'icon'      => 'bank-card-line',
             'sort'      => '3',
         ),
-        'seller_order_log_error_list' => array
-        (
-            'parent'    => 'seller_order',
-            'name'      => '历史失败订单',
-            'icon'      => 'mickey-line',
-            'sort'      => '5',
-        ),
-        'seller_order_log2_list' => array
-        (
-            'parent'    => 'seller_order',
-            'name'      => '失败订单',
-            'icon'      => 'mickey-line',
-            'sort'      => '2',
-        ),
         'seller_order_push' => array
         (
             'parent'    => 'seller_order',
@@ -131,35 +117,13 @@ return array
             'icon'      => 'album-line',
             'sort'      => '1',
         ),
-        /*
-        'order_log_list' => array
-        (
-            'parent'    => 'order',
-            'name'      => '已完成订单',
-            'icon'      => 'bank-card-line',
-            'sort'      => '2',
-        ),*/
-        'order_log_list' => array
+        'order_history' => array
         (
             'parent'    => 'order',
-            'name'      => '历史成功订单',
+            'name'      => '历史订单',
             'icon'      => 'bank-card-line',
             'sort'      => '3',
         ),
-        'order_log_error_list' => array
-        (
-            'parent'    => 'order',
-            'name'      => '历史失败订单',
-            'icon'      => 'mickey-line',
-            'sort'      => '5',
-        ),
-        'order_log2_list' => array
-        (
-            'parent'    => 'order',
-            'name'      => '失败订单',
-            'icon'      => 'mickey-line',
-            'sort'      => '2',
-        ),
         'order_push' => array
         (
             'parent'    => 'order',

+ 2 - 2
src/dai/seller/table/manage/goods.php → src/dai/seller/manage/goods.php

@@ -11,8 +11,8 @@ return array
                 'type' => 'cascader',
                 # 仅显示最后一级
                 //'all' => false,
-                'option'    => 'Dever::call("goods/manage.getGoods")',
-                'remote' => 'goods/manage.getAllSku',
+                'option'    => 'Dever::call("Goods/Manage/Lib/Data.getGoods")',
+                'remote' => 'Goods/Manage/Api/Main.getAllSku',
                 # 无需默认值
                 'remote_default' => false,
                 'rules' => true,

+ 2 - 2
src/dai/seller/table/manage/info.php → src/dai/seller/manage/info.php

@@ -161,7 +161,7 @@ return array
                 'where'  => array('seller_id' => 'id'),
             ),
         ),
-        'start' => 'seller/manage.createUser',
-        'end' => 'seller/manage.createAppKey',
+        'start' => 'Seller/Manage/Lib/Data.createUser',
+        'end' => 'Seller/Manage/Lib/Data.createAppKey',
     ),
 );

+ 1 - 27
src/dai/seller/table/manage/log.php → src/dai/seller/manage/log.php

@@ -2,7 +2,6 @@
 $seller_id = Dever::input('set')['seller_id'] ?? 0;
 return array
 (
-    'source' => 'seller/log1',
     'list' => array
     (
         'where' => array('seller_id' => $seller_id),
@@ -50,31 +49,6 @@ return array
         'search' => array
         (
             'type',
-            //'desc',
-            /*
-            'order_id' => array
-            (
-                'name' => '最新订单号',
-                'search' => array
-                (
-                    'table' => 'seller/order',
-                    'where' => array('order_num' => '{value}'),
-                    'set' => array(),
-                    'field' => 'id',
-                ),
-            ),
-            'order_ids' => array
-            (
-                'name' => '历史订单号',
-                'search' => array
-                (
-                    'table' => 'seller/order_log1',
-                    'where' => array('order_num' => '{value}'),
-                    'set' => array(),
-                    'field' => 'id',
-                    'key' => 'order_id',
-                ),
-            ),*/
             'cdate' => array
             (
                 'name' => '时间',
@@ -114,6 +88,6 @@ return array
                 'rules' => true,
             ),
         ),
-        'start' => 'seller/manage.operCash',
+        'start' => 'Seller/Manage/Lib/Data.operCash',
     ),
 );

+ 5 - 5
src/dai/seller/table/manage/order_log_list.php → src/dai/seller/manage/order_history.php

@@ -6,10 +6,10 @@ unset($config['list']['button']);
 $config['list']['button'] = array
 (
     '更改订单状态' => array('oper', 'status'),
-    '发回调' => array('api', 'seller/manage.sendCallBack1'),
+    '发回调' => array('api', 'Seller/Manage/Api/Main.sendCallBackHistory'),
 );
-$config['source'] = 'seller/order_log1';
-$config['list']['field']['status']['remote'] = 'seller/manage.showOrderLogExpand';
+$config['source'] = 'seller/order_history';
+$config['list']['field']['status']['remote'] = 'Seller/Manage/Api/Main.showOrderHistoryExpand';
 
 $config['update'] = array
 (
@@ -29,7 +29,7 @@ $config['update'] = array
 );
 $config['oper'] = array
 (
-    'up_start' => 'seller/manage.editOrderLog1',
-    'up_end' => 'seller/manage.upOrderLog1',
+    'up_start' => 'Seller/Manage/Lib/Data.editOrderHistory',
+    'up_end' => 'Seller/Manage/Lib/Data.upOrderHistory',
 );
 return $config;

+ 8 - 16
src/dai/seller/table/manage/order_list.php → src/dai/seller/manage/order_list.php

@@ -5,7 +5,7 @@ return array
     'list' => array
     (
         //'expand' => 'seller/manage.showOrderExpand',
-        'stat' => 'seller/manage.showOrderStat',
+        'stat' => 'Seller/Manage/Lib/Data.showOrderStat',
         'field'      => array
         (
             'seller_id',
@@ -20,18 +20,10 @@ return array
                 'show' => '"{order_num}" ? "{order_num}" : "-"',
             ),
             'account',
-            /*
-            'cash' => array
-            (
-                'width' => '230',
-                'name' => '商品 / 面值 / 实付',
-                'show' => 'Dever::load("manage", "seller")->showOrderCash("{cate_id}", "{goods_id}", "{sku_id}", "{cash}", "{price}")',
-            ),
-            */
             'goods_id' => array
             (
                 'name' => '商品',
-                'show' => 'Dever::load("manage", "seller")->showOrderGoods("{cate_id}", "{goods_id}", "{sku_id}")',
+                'show' => 'Dever::load("Seller/Manage/Lib/Data")->showOrderGoods("{cate_id}", "{goods_id}", "{sku_id}")',
             ),
             'cash' => array
             (
@@ -60,9 +52,9 @@ return array
                 'width' => '100',
                 'type' => 'tag',
                 # 会alert弹出
-                'remote' => 'seller/manage.showOrderExpand',
+                //'remote' => 'Seller/Manage/Api/Main.showOrderExpand',
                 'style' => 'info',
-                'show' => 'Dever::load("manage", "seller")->showOrderStatus("{status}")',
+                'show' => 'Dever::load("Seller/Manage/Lib/Data")->showOrderStatus("{status}")',
             ),
             'official_order_num' => array
             (
@@ -91,7 +83,7 @@ return array
                 'param' => array(),
             )),
             '更改订单状态' => array('oper', 'status,official_order_num,official_msg'),
-            '发回调' => array('api', 'seller/manage.sendCallBack'),
+            '发回调' => array('api', 'Seller/Manage/Api/Main.sendCallBack'),
         ),
         'export' => array
         (
@@ -118,7 +110,7 @@ return array
                 'name' => '商品',
                 'placeholder' => '请选择商品',
                 'type' => 'cascader',
-                'option'    => 'Dever::call("goods/manage.getGoodsSku")',
+                'option'    => 'Dever::call("Goods/Manage/Lib/Data.getGoodsSku")',
                 'search' => function($key, $type, $value) {
                     $value = end($value);
                     return $value;
@@ -168,7 +160,7 @@ return array
 
     'oper' => array
     (
-        'up_start' => 'seller/manage.editOrder',
-        'up_end' => 'seller/manage.addOrderLog',
+        'up_start' => 'Seller/Manage/Lib/Data.editOrder',
+        'up_end' => 'Seller/Manage/Lib/Data.addOrderLog',
     ),
 );

+ 4 - 4
src/dai/seller/table/manage/order_push.php → src/dai/seller/manage/order_push.php

@@ -3,13 +3,13 @@ return array
 (
     'update' => array
     (
-        'start' => 'seller/manage.createOrder',
+        'start' => 'Seller/Manage/Lib/Data.createOrder',
         'field'    => array
         (
             'seller_id' => array
             (
                 'rules' => true,
-                'remote' => 'seller/manage.getGoods',
+                'remote' => 'Seller/Manage/Api/Main.getGoods',
                 'remote_default' => false,
             ),
             'goods' => array
@@ -18,8 +18,8 @@ return array
                 'type' => 'cascader',
                 # 仅显示最后一级
                 //'all' => false,
-                //'option'    => 'Dever::call("goods/manage.getGoods")',
-                'remote' => 'seller/manage.getSku',
+                'option'    => 'Dever::call("Goods/Manage/Lib/Data.getGoods")',
+                'remote' => 'Seller/Manage/Api/Main.getSku',
                 # 无需默认值
                 'remote_default' => false,
                 'rules' => true,

+ 0 - 0
src/dai/seller/table/manage/order_stat.php → src/dai/seller/manage/order_stat.php


+ 0 - 0
src/dai/seller/table/manage/order_stat_channel.php → src/dai/seller/manage/order_stat_channel.php


+ 0 - 0
src/dai/seller/table/manage/order_stat_seller.php → src/dai/seller/manage/order_stat_seller.php


+ 2 - 2
src/dai/seller/table/manage/seller_log_list.php → src/dai/seller/manage/seller_log_list.php

@@ -3,11 +3,11 @@ $extend = Dever::load('common', 'manage')->extend();
 $seller_id = $extend['data_id'];
 return array
 (
-    'source' => 'seller/log1',
+    'source' => 'seller/log',
     'list' => array
     (
         'where' => array('seller_id' => $seller_id),
-        'stat' => 'seller/manage.showLogStat',
+        'stat' => 'Seller/Manage/Lib/Data.showLogStat',
         'field'      => array
         (
             'type' => array

+ 1 - 1
src/dai/seller/table/manage/seller_order_log_list.php → src/dai/seller/manage/seller_order_history.php

@@ -2,5 +2,5 @@
 # 成功历史订单
 $config = include('seller_order_list.php');
 unset($config['list']['button']);
-$config['source'] = 'seller/order_log1';
+$config['source'] = 'seller/order_history';
 return $config;

+ 5 - 13
src/dai/seller/table/manage/seller_order_list.php → src/dai/seller/manage/seller_order_list.php

@@ -23,22 +23,14 @@ return array
             ),
             'account' => array
             (
-                'show' => 'Dever::load("manage", "seller")->showOrderAccount("{status}", "{account}")',
+                'show' => 'Dever::load("Seller/Manage/Lib/Data")->showOrderAccount("{status}", "{account}")',
                 'type' => 'show',
-                'remote' => 'seller/manage.showOrderExpandKm',
+                'remote' => 'Seller/Manage/Api/Main.showOrderExpandKm',
             ),
-            /*
-            'cash' => array
-            (
-                'width' => '230',
-                'name' => '商品 / 面值 / 实付',
-                'show' => 'Dever::load("manage", "seller")->showOrderCash("{cate_id}", "{goods_id}", "{sku_id}", "{cash}", "{price}")',
-            ),
-            */
             'goods_id' => array
             (
                 'name' => '商品',
-                'show' => 'Dever::load("manage", "seller")->showOrderGoods("{cate_id}", "{goods_id}", "{sku_id}")',
+                'show' => 'Dever::load("Seller/Manage/Lib/Data")->showOrderGoods("{cate_id}", "{goods_id}", "{sku_id}")',
             ),
             'cash' => array
             (
@@ -57,7 +49,7 @@ return array
                 'width' => '100',
                 'type' => 'tag',
                 'style' => 'info',
-                'show' => 'Dever::load("manage", "seller")->showOrderStatus("{status}")',
+                'show' => 'Dever::load("Seller/Manage/Lib/Data")->showOrderStatus("{status}")',
             ),
             'cdate' => array
             (
@@ -100,7 +92,7 @@ return array
                 'name' => '商品',
                 'placeholder' => '请选择商品',
                 'type' => 'cascader',
-                'option'    => 'Dever::call("goods/manage.getGoodsSku")',
+                'option'    => 'Dever::call("Goods/Manage/Lib/Data.getGoodsSku")',
                 'search' => function($key, $type, $value) {
                     $value = end($value);
                     return $value;

+ 3 - 3
src/dai/seller/table/manage/seller_order_push.php → src/dai/seller/manage/seller_order_push.php

@@ -7,7 +7,7 @@ return array
     'source' => 'seller/order_push',
     'update' => array
     (
-        'start' => 'seller/manage.createOrder',
+        'start' => 'Seller/Manage/Lib/Data.createOrder',
         'field'    => array
         (
             'seller_id' => array
@@ -18,7 +18,7 @@ return array
                 (
                     $seller,
                 ),
-                'remote' => 'seller/manage.getGoods',
+                'remote' => 'Seller/Manage/Api/Main.getGoods',
             ),
             'goods' => array
             (
@@ -27,7 +27,7 @@ return array
                 # 仅显示最后一级
                 //'all' => false,
                 //'option'    => 'Dever::call("goods/manage.getGoods")',
-                'remote' => 'seller/manage.getSku',
+                'remote' => 'Seller/Manage/Api/Main.getSku',
                 # 无需默认值
                 'remote_default' => false,
                 'rules' => true,

+ 6 - 0
src/dai/seller/server.php

@@ -0,0 +1,6 @@
+<?php
+# 端口
+define('DEVER_SERVER', '8282');
+# 进程
+define('DEVER_WORKER', 4);
+include('index.php');

+ 2 - 1
src/dai/seller/table/info.php

@@ -85,10 +85,11 @@ return array
             'type'      => 'varchar(2000)',
         ),
 
-        'lock' => array
+        'version' => array
         (
             'name'      => '乐观锁',
             'type'      => 'int(11)',
+            'default'   => '2',
         ),
         
         'status' => array

+ 12 - 8
src/dai/seller/table/log.php

@@ -2,7 +2,7 @@
 return array
 (
     'name' => '商户账户记录表',
-    'store' => 'log',
+    //'store' => 'log',
     'order' => 'cdate desc',
     'struct' => array
     (
@@ -23,10 +23,15 @@ return array
                 1 => '充值',
                 2 => '提现',
                 3 => '下单',
-                4 => '失败返还',
             ),
         ),
 
+        'day' => array
+        (
+            'name'      => '日期',
+            'type'      => 'int(11)',
+        ),
+
         'cash'      => array
         (
             'type'      => 'decimal(11,2)',
@@ -41,16 +46,15 @@ return array
             'fields'    => true,
         ),
 
-        'order_id' => array
-        (
-            'name'      => '订单id',
-            'type'      => 'int(11)',
-        ),
-
         'desc'      => array
         (
             'type'      => 'varchar(500)',
             'name'      => '操作备注',
         ),
     ),
+
+    'index' => array
+    (
+        'seller_id' => 'seller_id,type,day',
+    ),
 );

+ 0 - 4
src/dai/seller/table/log1.php

@@ -1,4 +0,0 @@
-<?php
-$config = include('log.php');
-$config['store'] = 'default';
-return $config;

+ 0 - 35
src/dai/seller/table/manage/order_log2_list.php

@@ -1,35 +0,0 @@
-<?php
-# 失败历史订单
-$config = include('order_list.php');
-$config['source'] = 'seller/order_log2';
-unset($config['list']['stat']);
-unset($config['list']['button']);
-$config['list']['button'] = array
-(
-    '发回调' => array('api', 'seller/manage.sendCallBack2'),
-);
-$config['list']['field']['status']['remote'] = 'seller/manage.showOrderLog2Expand';
-
-/*
-$config['update'] array
-(
-    'field'    => array
-    (
-        'status' => array
-        (
-            'desc' => '【只可以修改成功状态的订单】',
-            'type' => 'radio',
-            'option' => array
-            (
-                //10 => '成功',
-                11 => '退款',
-            ),
-        ),
-    ),
-);
-$config['oper'] = array
-(
-    'up_start' => 'seller/manage.editOrderLog2',
-    'up_end' => 'seller/manage.upOrderLog2',
-);*/
-return $config;

+ 0 - 13
src/dai/seller/table/manage/order_log_error_list.php

@@ -1,13 +0,0 @@
-<?php
-# 失败历史订单
-$config = include('order_list.php');
-unset($config['list']['stat']);
-unset($config['list']['button']);
-$config['list']['button'] = array
-(
-    '发回调' => array('api', 'seller/manage.sendCallBack3'),
-);
-$config['source'] = 'seller/order_log3';
-$config['list']['field']['status']['remote'] = 'seller/manage.showOrderLog3Expand';
-
-return $config;

+ 0 - 6
src/dai/seller/table/manage/seller_order_log2_list.php

@@ -1,6 +0,0 @@
-<?php
-# 失败订单
-$config = include('seller_order_list.php');
-unset($config['list']['button']);
-$config['source'] = 'seller/order_log2';
-return $config;

+ 0 - 6
src/dai/seller/table/manage/seller_order_log_error_list.php

@@ -1,6 +0,0 @@
-<?php
-# 失败历史订单
-$config = include('seller_order_list.php');
-unset($config['list']['button']);
-$config['source'] = 'seller/order_log3';
-return $config;

Некоторые файлы не были показаны из-за большого количества измененных файлов