CommonUpload.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. /**
  3. * 重庆赤晓店信息科技有限公司
  4. * https://www.chixiaodian.com
  5. * Copyright (c) 2023 赤店商城 All rights reserved.
  6. */
  7. namespace app\models\common;
  8. use app\models\UploadConfig;
  9. use yii\base\Model;
  10. use yii\helpers\Json;
  11. /**
  12. * @property UploadConfig $model
  13. */
  14. class CommonUpload extends Model
  15. {
  16. /**
  17. * @var string 阿里云
  18. */
  19. const STORAGE_ALIYUN = 'aliyun';
  20. /**
  21. * @var string 腾讯云
  22. */
  23. const STORAGE_QCLOUD = 'qcloud';
  24. /**
  25. * @var string 七牛
  26. */
  27. const STORAGE_QINIU = 'qiniu';
  28. public $model;
  29. public $store_id;
  30. public $storage_type;
  31. public $aliyun;
  32. public $qcloud;
  33. public $qiniu;
  34. public function rules()
  35. {
  36. return [
  37. [['storage_type',], 'string',],
  38. [['aliyun', 'qcloud', 'qiniu'], 'default', 'value' => (object)[],],
  39. ];
  40. }
  41. public function save()
  42. {
  43. $this->model->storage_type = !empty($this->storage_type) ? $this->storage_type : 'local';
  44. // 七牛云存储
  45. foreach ($this->qiniu as $k => $v) {
  46. $this->qiniu[$k] = trim($v);
  47. }
  48. $this->qiniu['domain'] = trim($this->qiniu['domain'], '/');
  49. $this->model->qiniu = Json::encode($this->qiniu);
  50. // 阿里云oss存储
  51. foreach ($this->aliyun as $k => $v) {
  52. $this->aliyun[$k] = trim($v);
  53. }
  54. $this->aliyun['domain'] = trim($this->aliyun['domain'], '/');
  55. $this->model->aliyun = Json::encode($this->aliyun);
  56. // 腾讯云cos存储
  57. foreach ($this->qcloud as $k => $v) {
  58. $this->qcloud[$k] = trim($v);
  59. }
  60. $this->qcloud['domain'] = trim($this->qcloud['domain'], '/');
  61. $this->model->qcloud = Json::encode($this->qcloud);
  62. if ($this->storage_type == self::STORAGE_QCLOUD) {
  63. preg_match('/(.*?)-(\d+)\.cos\.?(.*?)\.myqcloud\.com/', $this->qcloud['region'], $region);
  64. if (!$region || $region == 0) {
  65. return [
  66. 'code' => 1,
  67. 'msg' => '默认域名不正确'
  68. ];
  69. }
  70. }
  71. if ($this->model->isNewRecord) {
  72. $this->model->store_id = $this->store_id;
  73. $this->model->is_delete = 0;
  74. $this->model->created_at = time();
  75. }
  76. if ($this->model->save()) {
  77. return [
  78. 'code' => 0,
  79. 'msg' => '保存成功',
  80. ];
  81. } else {
  82. foreach ($this->model->errors as $error) {
  83. return [
  84. 'code' => 1,
  85. 'msg' => $error
  86. ];
  87. }
  88. }
  89. }
  90. }