Common.php 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. <?php
  2. namespace app\api\controller;
  3. use app\admin\model\DriverVerified;
  4. use app\common\controller\Api;
  5. use app\common\exception\UploadException;
  6. use app\common\library\Upload;
  7. use app\common\model\Area;
  8. use app\common\model\Version;
  9. use fast\Random;
  10. use think\Config;
  11. use think\Db;
  12. use think\Hook;
  13. /**
  14. * 公共接口
  15. */
  16. class Common extends Api
  17. {
  18. protected $noNeedLogin = ['init','upload','market_setting'];
  19. protected $noNeedRight = '*';
  20. /**
  21. * 加载初始化
  22. *
  23. * @param string $version 版本号
  24. * @param string $lng 经度
  25. * @param string $lat 纬度
  26. */
  27. public function init()
  28. {
  29. if ($version = $this->request->request('version')) {
  30. $lng = $this->request->request('lng');
  31. $lat = $this->request->request('lat');
  32. //配置信息
  33. $upload = Config::get('upload');
  34. //如果非服务端中转模式需要修改为中转
  35. if ($upload['storage'] != 'local' && isset($upload['uploadmode']) && $upload['uploadmode'] != 'server') {
  36. //临时修改上传模式为服务端中转
  37. set_addon_config($upload['storage'], ["uploadmode" => "server"], false);
  38. $upload = \app\common\model\Config::upload();
  39. // 上传信息配置后
  40. Hook::listen("upload_config_init", $upload);
  41. $upload = Config::set('upload', array_merge(Config::get('upload'), $upload));
  42. }
  43. $upload['cdnurl'] = $upload['cdnurl'] ? $upload['cdnurl'] : cdnurl('', true);
  44. $upload['uploadurl'] = preg_match("/^((?:[a-z]+:)?\/\/)(.*)/i", $upload['uploadurl']) ? $upload['uploadurl'] : url($upload['storage'] == 'local' ? '/api/common/upload' : $upload['uploadurl'], '', false, true);
  45. $content = [
  46. 'citydata' => Area::getCityFromLngLat($lng, $lat),
  47. 'versiondata' => Version::check($version),
  48. 'uploaddata' => $upload,
  49. 'coverdata' => Config::get("cover"),
  50. ];
  51. $this->success('', $content);
  52. } else {
  53. $this->error(__('Invalid parameters'));
  54. }
  55. }
  56. /**
  57. * 上传文件
  58. * @ApiMethod (POST)
  59. * @param File $file 文件流
  60. */
  61. public function upload()
  62. {
  63. Config::set('default_return_type', 'json');
  64. //必须设定cdnurl为空,否则cdnurl函数计算错误
  65. Config::set('upload.cdnurl', '');
  66. $chunkid = $this->request->post("chunkid");
  67. if ($chunkid) {
  68. if (!Config::get('upload.chunking')) {
  69. $this->error(__('Chunk file disabled'));
  70. }
  71. $action = $this->request->post("action");
  72. $chunkindex = $this->request->post("chunkindex/d");
  73. $chunkcount = $this->request->post("chunkcount/d");
  74. $filename = $this->request->post("filename");
  75. $method = $this->request->method(true);
  76. if ($action == 'merge') {
  77. $attachment = null;
  78. //合并分片文件
  79. try {
  80. $upload = new Upload();
  81. $attachment = $upload->merge($chunkid, $chunkcount, $filename);
  82. } catch (UploadException $e) {
  83. $this->error($e->getMessage());
  84. }
  85. $this->success(__('Uploaded successful'), ['url' => $attachment->url, 'fullurl' => cdnurl($attachment->url, true)]);
  86. } elseif ($method == 'clean') {
  87. //删除冗余的分片文件
  88. try {
  89. $upload = new Upload();
  90. $upload->clean($chunkid);
  91. } catch (UploadException $e) {
  92. $this->error($e->getMessage());
  93. }
  94. $this->success();
  95. } else {
  96. //上传分片文件
  97. //默认普通上传文件
  98. $file = $this->request->file('file');
  99. try {
  100. $upload = new Upload($file);
  101. $upload->chunk($chunkid, $chunkindex, $chunkcount);
  102. } catch (UploadException $e) {
  103. $this->error($e->getMessage());
  104. }
  105. $this->success();
  106. }
  107. } else {
  108. $attachment = null;
  109. //默认普通上传文件
  110. $file = $this->request->file('file');
  111. try {
  112. $upload = new Upload($file);
  113. $attachment = $upload->upload();
  114. } catch (UploadException $e) {
  115. $this->error($e->getMessage());
  116. }
  117. $this->success(__('Uploaded successful'), ['url' => $attachment->url, 'fullurl' => cdnurl($attachment->url, true)]);
  118. }
  119. }
  120. /**
  121. * market_setting
  122. * @des
  123. */
  124. public function market_setting()
  125. {
  126. $list = Db::name('market')->field('dj_status,sf_status,dc_status')->find();
  127. $this->success("", $list);
  128. }
  129. }