Account.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <?php namespace Api\Lib;
  2. use Dever;
  3. # 官方平台账户
  4. class Account
  5. {
  6. public function update($db, $data)
  7. {
  8. if (isset($data['app_platform']) && $data['app_platform']) {
  9. $app_platform = $data['app_platform'];
  10. if (is_string($app_platform)) {
  11. $app_platform = explode(',', $app_platform);
  12. }
  13. $data['app_id'] = $app_platform[0];
  14. $data['platform_id'] = $app_platform[1] ?? 0;
  15. if (!$data['platform_id']) {
  16. Dever::error('请选择平台');
  17. }
  18. }
  19. return $data;
  20. }
  21. public function get($account, $project = 'api')
  22. {
  23. if (is_array($account)) {
  24. return $account;
  25. }
  26. if (is_numeric($account)) {
  27. $where = ['id' => $account];
  28. } else {
  29. $where = ['key' => $account];
  30. }
  31. $account = Dever::db($project . '/account')->find($where);
  32. if (!$account) {
  33. Dever::error('账户无效');
  34. }
  35. if ($project != 'api') {
  36. $info = Dever::db('api/account')->find(['key' => $account['key']]);
  37. if (!$info) {
  38. Dever::error('账户无效');
  39. }
  40. $account['app_id'] = $info['app_id'];
  41. $account['platform_id'] = $info['platform_id'];
  42. }
  43. return $account;
  44. /*
  45. $account = Dever::db('api/account')->find($where);
  46. if ($project != 'api') {
  47. $info = Dever::db($project . '/account')->find(['key' => $account['key']]);
  48. if ($info) {
  49. $info['app_id'] = $account['app_id'];
  50. $info['platform_id'] = $account['platform_id'];
  51. return $info;
  52. } else {
  53. Dever::error('账户无效');
  54. }
  55. }
  56. return $account;
  57. */
  58. }
  59. public function run($account, $func, $param = [], $env = 1, $method = 'run', $project = 'api')
  60. {
  61. $account = $this->get($account, $project);
  62. if (!$account) {
  63. Dever::error('账户无效');
  64. }
  65. if (!is_array($func)) {
  66. $func = Dever::db('api/app_func')->find(['app_id' => $account['app_id'], 'key' => $func]);
  67. }
  68. if (!$func) {
  69. Dever::error('功能无效');
  70. }
  71. $api = Dever::load(App::class)->getApi($func['id'], $env);
  72. if (!$api) {
  73. Dever::error('接口无效');
  74. }
  75. $param['account_project'] = $project;
  76. $param['account_id'] = $account['id'];
  77. $result = [];
  78. if ($func['type'] == 1) {
  79. # 仅执行第一个
  80. $result = Dever::load(Api::class)->$method($api[0], $param);
  81. if (is_array($result)) {
  82. $result['account_id'] = $account['id'];
  83. $result['api_id'] = $api[0]['id'];
  84. }
  85. } elseif ($func['type'] == 2) {
  86. # 同步执行
  87. foreach ($api as $k => $v) {
  88. $result = Dever::load(Api::class)->$method($v, $param);
  89. if ($result && is_array($result)) {
  90. $param = array_merge($result, $param);
  91. }
  92. }
  93. } elseif ($func['type'] == 3) {
  94. # 异步执行
  95. $result = true;
  96. foreach ($api as $k => $v) {
  97. $param['api_id'] = $v['id'];
  98. \Dever\Helper\Cmd::run('task.api', $param, 'api');
  99. }
  100. }
  101. return $result;
  102. }
  103. }