diff --git a/public/assets/addons/alioss/js/spark.js b/addons/alioss/assets/js/spark.js similarity index 100% rename from public/assets/addons/alioss/js/spark.js rename to addons/alioss/assets/js/spark.js diff --git a/addons/alioss/info.ini b/addons/alioss/info.ini index 7b8a67a..54bda16 100644 --- a/addons/alioss/info.ini +++ b/addons/alioss/info.ini @@ -4,7 +4,7 @@ intro = 使用阿里云OSS云储存,支持直传、服务器中转、分片上 author = FastAdmin website = https://www.fastadmin.net version = 1.2.6 -state = 1 +state = 0 url = /addons/alioss license = basic licenseto = 15976 diff --git a/application/admin/controller/wechat/Api.php b/application/admin/controller/wechat/Api.php index 34a08a7..1b50281 100644 --- a/application/admin/controller/wechat/Api.php +++ b/application/admin/controller/wechat/Api.php @@ -76,7 +76,7 @@ class Api extends Backend $build = Cars::where('is_active',1); $attr = $data['attr'] ?? null; $brand = $data['brand'] ?? null; - $type = request()->request('type') ?? 1; + $type = $data['type'] ?? 1; if ($attr){ $ids = $this->getAttrIds($attr); $build->whereIn('id',$ids); @@ -173,11 +173,14 @@ class Api extends Backend } $car = $car->toArray(); - $images = explode(',',$car['cover_image']); - $images = array_map(function($url) { - return cdnurl($url, true); // true 表示生成绝对路径 - }, $images); - $car['cover_image'] = $images; + if($car['cover_image']){ + $images = explode(',',$car['cover_image']); + $images = array_map(function($url) { + return cdnurl($url, true); // true 表示生成绝对路径 + }, $images); + $car['cover_image'] = $images; + } + $attr_value = AttributeValue::where('car_id',$car['id'])->select(); @@ -204,7 +207,8 @@ class Api extends Backend } $car_attr_map = $this->mapAllCarAttributesSorted($attr_array,$attr_field_array); - $car['attr'] = $car_attr_map[$car['id']]; +// dd($car_attr_map); + $car['attr'] = $car_attr_map[$car['id']] ?? []; return $this->return_json($car); } diff --git a/application/extra/addons.php b/application/extra/addons.php index 1bd42df..2177468 100644 --- a/application/extra/addons.php +++ b/application/extra/addons.php @@ -2,20 +2,7 @@ return [ 'autoload' => false, - 'hooks' => [ - 'app_init' => [ - 'alioss', - ], - 'module_init' => [ - 'alioss', - ], - 'upload_config_init' => [ - 'alioss', - ], - 'upload_delete' => [ - 'alioss', - ], - ], + 'hooks' => [], 'route' => [], 'priority' => [], 'domain' => '', diff --git a/public/assets/js/addons.js b/public/assets/js/addons.js index 6bfd76e..d2c1d20 100644 --- a/public/assets/js/addons.js +++ b/public/assets/js/addons.js @@ -1,244 +1,3 @@ define([], function () { - if (typeof Config.upload.storage !== 'undefined' && Config.upload.storage === 'alioss') { - require(['upload'], function (Upload) { - //获取文件MD5值 - var getFileMd5 = function (file, cb) { - //如果savekey中未检测到md5,则无需获取文件md5,直接返回upload的uuid - if (!Config.upload.savekey.match(/\{(file)?md5\}/)) { - cb && cb(file.upload.uuid); - return; - } - require(['../addons/alioss/js/spark'], function (SparkMD5) { - var blobSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice, - chunkSize = 10 * 1024 * 1024, - chunks = Math.ceil(file.size / chunkSize), - currentChunk = 0, - spark = new SparkMD5.ArrayBuffer(), - fileReader = new FileReader(); - - fileReader.onload = function (e) { - spark.append(e.target.result); - currentChunk++; - if (currentChunk < chunks) { - loadNext(); - } else { - cb && cb(spark.end()); - } - }; - - fileReader.onerror = function () { - console.warn('文件读取错误'); - }; - - function loadNext() { - var start = currentChunk * chunkSize, - end = ((start + chunkSize) >= file.size) ? file.size : start + chunkSize; - - fileReader.readAsArrayBuffer(blobSlice.call(file, start, end)); - } - - loadNext(); - - }); - }; - - var _onInit = Upload.events.onInit; - //初始化中完成判断 - Upload.events.onInit = function () { - _onInit.apply(this, Array.prototype.slice.apply(arguments)); - //如果上传接口不是阿里OSS,则不处理 - if (this.options.url !== Config.upload.uploadurl) { - return; - } - $.extend(this.options, { - //关闭自动处理队列功能 - autoQueue: false, - params: function (files, xhr, chunk) { - var params = Config.upload.multipart; - if (chunk) { - return $.extend({}, params, { - filesize: chunk.file.size, - filename: chunk.file.name, - chunkid: chunk.file.upload.uuid, - chunkindex: chunk.index, - chunkcount: chunk.file.upload.totalChunkCount, - chunksize: this.options.chunkSize, - chunkfilesize: chunk.dataBlock.data.size, - width: chunk.file.width || 0, - height: chunk.file.height || 0, - type: chunk.file.type, - uploadId: chunk.file.uploadId, - key: chunk.file.key, - }); - } else { - params = $.extend({}, params, files[0].params); - params.category = files[0].category || ''; - } - return params; - }, - chunkSuccess: function (chunk, file, response) { - var etag = chunk.xhr.getResponseHeader("ETag").replace(/(^")|("$)/g, ''); - file.etags = file.etags ? file.etags : []; - file.etags[chunk.index] = etag; - }, - chunksUploaded: function (file, done) { - var that = this; - Fast.api.ajax({ - url: "/addons/alioss/index/upload", - data: { - action: 'merge', - filesize: file.size, - filename: file.name, - chunkid: file.upload.uuid, - chunkcount: file.upload.totalChunkCount, - md5: file.md5, - key: file.key, - uploadId: file.uploadId, - etags: file.etags, - category: file.category || '', - aliosstoken: Config.upload.multipart.aliosstoken, - }, - }, function (data, ret) { - done(JSON.stringify(ret)); - return false; - }, function (data, ret) { - file.accepted = false; - that._errorProcessing([file], ret.msg); - return false; - }); - - }, - }); - - var _success = this.options.success; - //先移除已有的事件 - this.off("success", _success).on("success", function (file, response) { - var ret = {code: 0, msg: response}; - try { - if (response) { - ret = typeof response === 'string' ? JSON.parse(response) : response; - } - if (file.xhr.status === 200) { - if (Config.upload.uploadmode === 'client') { - ret = {code: 1, data: {url: '/' + file.key}}; - var url = ret.data.url || ''; - - Fast.api.ajax({ - url: "/addons/alioss/index/notify", - data: {name: file.name, url: url, md5: file.md5, size: file.size, width: file.width || 0, height: file.height || 0, type: file.type, category: file.category || '', aliosstoken: Config.upload.multipart.aliosstoken} - }, function () { - return false; - }, function () { - return false; - }); - } - } else { - console.error(file.xhr); - } - } catch (e) { - console.error(e); - } - _success.call(this, file, ret); - }); - - this.on("addedfile", function (file) { - var that = this; - setTimeout(function () { - if (file.status === 'error') { - return; - } - getFileMd5(file, function (md5) { - var chunk = that.options.chunking && file.size > that.options.chunkSize ? 1 : 0; - var params = $(that.element).data("params") || {}; - var category = typeof params.category !== 'undefined' ? params.category : ($(that.element).data("category") || ''); - category = typeof category === 'function' ? category.call(that, file) : category; - Fast.api.ajax({ - url: "/addons/alioss/index/params", - data: {method: 'POST', category: category, md5: md5, name: file.name, type: file.type, size: file.size, chunk: chunk, chunksize: that.options.chunkSize, aliosstoken: Config.upload.multipart.aliosstoken}, - }, function (data) { - file.md5 = md5; - file.id = data.id; - file.key = data.key; - file.date = data.date; - file.uploadId = data.uploadId; - file.policy = data.policy; - file.signature = data.signature; - file.partsAuthorization = data.partsAuthorization; - file.params = data; - file.category = category; - - if (file.status != 'error') { - //开始上传 - that.enqueueFile(file); - } else { - that.removeFile(file); - } - return false; - }, function () { - that.removeFile(file); - }); - }); - }, 0); - }); - - if (Config.upload.uploadmode === 'client') { - var _method = this.options.method; - var _url = this.options.url; - this.options.method = function (files) { - if (files[0].upload.chunked) { - var chunk = null; - files[0].upload.chunks.forEach(function (item) { - if (item.status === 'uploading') { - chunk = item; - } - }); - if (!chunk) { - return "POST"; - } else { - return "PUT"; - } - } - return _method; - }; - this.options.url = function (files) { - if (files[0].upload.chunked) { - var chunk = null; - files[0].upload.chunks.forEach(function (item) { - if (item.status === 'uploading') { - chunk = item; - } - }); - var index = chunk.dataBlock.chunkIndex; - // debugger; - this.options.headers = {"Authorization": "OSS " + files[0]['id'] + ":" + files[0]['partsAuthorization'][index], "x-oss-date": files[0]['date']}; - if (!chunk) { - return Config.upload.uploadurl + "/" + files[0].key + "?uploadId=" + files[0].uploadId; - } else { - return Config.upload.uploadurl + "/" + files[0].key + "?partNumber=" + (index + 1) + "&uploadId=" + files[0].uploadId; - } - } - return _url; - }; - this.on("sending", function (file, xhr, formData) { - var that = this; - if (file.upload.chunked) { - var _send = xhr.send; - xhr.send = function () { - var chunk = null; - file.upload.chunks.forEach(function (item) { - if (item.status == 'uploading') { - chunk = item; - } - }); - if (chunk) { - _send.call(xhr, chunk.dataBlock.data); - } - }; - } - }); - } - }; - }); -} - + }); \ No newline at end of file