From b7379ee51b7dc0157ecf26f79bf20ad0929d72bc Mon Sep 17 00:00:00 2001 From: SjS Date: Thu, 17 Apr 2025 17:00:08 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E5=9E=8B=E5=8F=B7=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E5=8A=9F=E8=83=BD=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application.yml | 2 + .../ruoyi/common/utils/qiniu/QiNiuUtils.java | 26 +- .../src/api/{common => tool}/common.js | 0 AutoSprout-ui/src/assets/fileicons/excel.png | Bin 0 -> 1576 bytes AutoSprout-ui/src/assets/fileicons/pdf.png | Bin 0 -> 1543 bytes AutoSprout-ui/src/assets/fileicons/ppt.png | Bin 0 -> 1437 bytes .../src/assets/fileicons/unknown.png | Bin 0 -> 1389 bytes AutoSprout-ui/src/assets/fileicons/video.png | Bin 0 -> 1584 bytes AutoSprout-ui/src/assets/fileicons/word.png | Bin 0 -> 1860 bytes AutoSprout-ui/src/assets/fileicons/zip.png | Bin 0 -> 849 bytes .../src/components/FileUpload/index.vue | 90 +-- .../src/components/ImageUpload/index.vue | 588 +++++++++++++++--- AutoSprout-ui/src/utils/constants.js | 19 + AutoSprout-ui/src/utils/index.js | 71 ++- .../src/views/device/model/index.vue | 42 +- .../java/com/ruoyi/device/domain/AsModel.java | 6 + .../ruoyi/device/mapper/AsModelMapper.java | 1 + .../device/mapper/AsModelVideoMapper.java | 59 ++ .../ruoyi/device/service/IAsModelService.java | 2 +- .../service/impl/AsDeviceServiceImpl.java | 19 +- .../service/impl/AsModelServiceImpl.java | 38 +- .../mapper/device/AsDeviceVersionMapper.xml | 4 +- .../resources/mapper/device/AsModelMapper.xml | 10 +- .../mapper/device/AsModelVideoMapper.xml | 51 ++ 24 files changed, 870 insertions(+), 158 deletions(-) rename AutoSprout-ui/src/api/{common => tool}/common.js (100%) create mode 100644 AutoSprout-ui/src/assets/fileicons/excel.png create mode 100644 AutoSprout-ui/src/assets/fileicons/pdf.png create mode 100644 AutoSprout-ui/src/assets/fileicons/ppt.png create mode 100644 AutoSprout-ui/src/assets/fileicons/unknown.png create mode 100644 AutoSprout-ui/src/assets/fileicons/video.png create mode 100644 AutoSprout-ui/src/assets/fileicons/word.png create mode 100644 AutoSprout-ui/src/assets/fileicons/zip.png create mode 100644 AutoSprout-ui/src/utils/constants.js create mode 100644 AutoSprout-watering/src/main/java/com/ruoyi/device/mapper/AsModelVideoMapper.java create mode 100644 AutoSprout-watering/src/main/resources/mapper/device/AsModelVideoMapper.xml diff --git a/AutoSprout-admin/src/main/resources/application.yml b/AutoSprout-admin/src/main/resources/application.yml index d0541b9..dc252ea 100644 --- a/AutoSprout-admin/src/main/resources/application.yml +++ b/AutoSprout-admin/src/main/resources/application.yml @@ -201,6 +201,8 @@ qiniu: bucket: autosprout # 过期时间(秒) expireSeconds: 86400 + # 七牛云token缓存 + cacheKey: qiniu-token # 七牛云GET请求域名 domain: https://lxnapi.ccttiot.com xinzhi: diff --git a/AutoSprout-common/src/main/java/com/ruoyi/common/utils/qiniu/QiNiuUtils.java b/AutoSprout-common/src/main/java/com/ruoyi/common/utils/qiniu/QiNiuUtils.java index 44b9595..4bba92e 100644 --- a/AutoSprout-common/src/main/java/com/ruoyi/common/utils/qiniu/QiNiuUtils.java +++ b/AutoSprout-common/src/main/java/com/ruoyi/common/utils/qiniu/QiNiuUtils.java @@ -2,8 +2,11 @@ package com.ruoyi.common.utils.qiniu; import com.qiniu.util.Auth; import com.qiniu.util.StringMap; +import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.utils.spring.SpringUtils; +import java.util.concurrent.TimeUnit; + /** * 七牛云工具类 * @author wjh @@ -16,15 +19,32 @@ public class QiNiuUtils { public static final String BUCKET = SpringUtils.getRequiredProperty("qiniu.bucket"); public static final Long EXPIRE_SECONDS = Long.parseLong(SpringUtils.getRequiredProperty("qiniu.expireSeconds")); // 过期时间(秒) public static final String DOMAIN = SpringUtils.getRequiredProperty("qiniu.domain"); // 域名 + private static final RedisCache REDIS_CACHE = SpringUtils.getBean(RedisCache.class); + private static final String CACHE_KEY = SpringUtils.getRequiredProperty("qiniu.cacheKey"); + + /** + * 获取文件上传的token + * @return token + */ +// public static String getToken() { +// StringMap putPolicy = new StringMap(); +// Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY); +// return auth.uploadToken(BUCKET,null, EXPIRE_SECONDS, putPolicy); +// } /** * 获取文件上传的token * @return token */ public static String getToken() { - StringMap putPolicy = new StringMap(); - Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY); - return auth.uploadToken(BUCKET,null, EXPIRE_SECONDS, putPolicy); + String tokenCache = REDIS_CACHE.getCacheObject(CACHE_KEY); + if (tokenCache == null) { + StringMap putPolicy = new StringMap(); + Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY); + tokenCache = auth.uploadToken(BUCKET,null, EXPIRE_SECONDS, putPolicy); + REDIS_CACHE.setCacheObject(CACHE_KEY, tokenCache, EXPIRE_SECONDS.intValue(), TimeUnit.SECONDS); + } + return tokenCache; } // public static void main(String[] args) { diff --git a/AutoSprout-ui/src/api/common/common.js b/AutoSprout-ui/src/api/tool/common.js similarity index 100% rename from AutoSprout-ui/src/api/common/common.js rename to AutoSprout-ui/src/api/tool/common.js diff --git a/AutoSprout-ui/src/assets/fileicons/excel.png b/AutoSprout-ui/src/assets/fileicons/excel.png new file mode 100644 index 0000000000000000000000000000000000000000..5180e73044d31ac0626eb8cc4190dc0b735aac21 GIT binary patch literal 1576 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 literal 0 HcmV?d00001 diff --git a/AutoSprout-ui/src/assets/fileicons/ppt.png b/AutoSprout-ui/src/assets/fileicons/ppt.png new file mode 100644 index 0000000000000000000000000000000000000000..0e7ba8dd0158f93e54f16ccb7cb74e83eef907b8 GIT binary patch literal 1437 zcmV;O1!DS%P)Px)S4l)cRCr$Pn_FlcRT#(rXLh?un(XG@O_Sb|Y%&|Ov$be1R1rdKOh_ykS})L` zP=rF0iVq^>p=!K>s0eAmD(QnyqBWF)Ski}j1+}Q%MBBQxrCu5#wavvOb+a=^&ZHZ5 z)7_m*W_D-m9#{gIbI$kuf9IR;oHH|rAjReUgY{+eAyE)1ClF8{Km-8nm%r!=#VP-A zuqhR;5wna0+dMfp!Zv|&k^m4NC}koW0IX58nP~vdwDLS8QQ*M&B+y0z$^(Q4;7}AB zuYy$pe7}RQ)F|Bm&h6x#p^)fBO1 z2#~{96mJS8JVz)`DH~aon=aG}5fEspqiGYG1b|5C3#R%-$i$}M;E%+T08CZB*!ctj zy8h1qK!D?x1d#9FikjEoH!Tik0^i``GhK53SpZhd0oe%1-U8Vi5H|^4=;=g$!zQfs zZ$-hK+h8kj=}MFtl?0iyGl6fhYEKVF9;jaw>~L4f|0{0k)C?gb05B&b#og6&3xLSA zlJ>_?bwJyq(eeP64rwv~tZv~wJFxEHA=Qy^+W}z8H@q?k=Uw-zf}k4!o1bk?7i`WV z*qw#2xr$&fDwTh%gs+VwJT-yYvp-yxUSQBz4N0$3j_%G~hu55Znsrr71O0H|G} z&WxVMZ++bePhL}WNU4Gv0IZL)hn~RdeZ5NEAteAJUW|75K<7h>P9>|L7C>H|51#&y z6>X&yz}2HiFn0J=MW>7a!20kU8bY3@F{wR60sM1jVY;%rijZ5)9wfyUae5Lz@7in# zfXEImS!b^8&GM~~tQZO)dU3*%WYtrB$XQbzW1l%5J+Et}5xE7lwo6psGyu$C<^F>x z-MJ^m_T|3)nEGm1xBm>RnxZ;E>wO*&Z<`t&0nEvg*4?Oj`sEmZ|9G<(*H3(;MuYA; zxwQ?b8#tz_y{Qr4+I~OQKQ|EL$k^f6aP{b*D(Cc8Qac5*{!Il?@#M28-?cYJ$CZH> z@%J(F9&s^a8(w-3&dv9!;%6#=cuUd?-JO^Vj;eA_PbEj?dhkco=NMA}tSDWD;NGZa8F%goTF-o49S3MaC$(z_A0Z-1ysyx~bOk@e}*U*Jmr^9YUouGvAQ z2KJJ2l(s)AKP1spOpSo)?>@)mmnU%jQ|%)Y5yRFSu5C@2Js&{m&&!w}9|IM`$oFqS zUTp)4+a3YSIeLqs0HW9DbHNcvbF+H=T5M<8_X28Gg3DIVJ{Gd-dx0!~I3u%kFJM#z zxVyTI=t_>JrNz)3U&R75}Y%RGG)HMt` z8fBB9Rd<6r22)p)Yy@N@Ap4!5u3JY-Blb*y07I7iSXzsa<BhggqI|E2_ZZM^|Dv}N)%1Ip6+9Ff%bL9G@R?R z0lX+lUQUJr2E}8V=;)5q4Iq)oKyzIU?3_R)+Q<=!mq5HkK0Jv+L%~=TKs=E@?Y_ey zPW~%^asmkPQ%DVD;n-~Kmr_~?WfFiyx<;C--PCRuPx)CrLy>RCr$Pn_Y+-RTRh188*8T5f!Wtf>6N+QA9*UtE*Nm)(Tc%v@3!lVz)GN zZ^p3k^~cIp@dX`hYBfijycuM1Y9jIF56lWm$*fv>6CM2(c3YwgJFL05Bb=@*bBt2LRq6qC6rVA)+zP z`N61dh5^_I0PCfcPZx{D$*2`4VQ<^^7esWmR>Co@gfFACJj_SSTqb{ zOQBHsBnU!k0k{wh!}uEjloCGlgOF+f9wjVkCA{AbA@u+}5bB7y#Wc-#y$}W+fC}dB zPMO{VL24zu?UosI0NW9rq0Ue^H+5NK+PDR z(rS2!bN*^70CW-fvWYu&_O5RRUI7_^2m~?(=+$G^1w4Bkr{nCI(7je1g)s|r>XIJy`C?XN=xn4g#xHlD)%Ge>!-zFf=r@5fMiLV0)X7zbQK@<(^`(I4^|QB&ED2hBAAv03zDSId2c36^{@? zZ9Z($^X~ne^BerSRa@TqOGfu~aJkS*=zt zmQo&7?;Xdv*0QY6ZQC9rqRjxXfrz$o&fn3n+^ucS7!$f|8348_#khSrqC$HP;41)l zw6&T-e8pXkdS_UkFV;#%i1;`W-LAjxvV)$zeK%=c4geKb1&p!QT%~yka!2zJxj{1%QaJnWp)G z4oW4#xBQ$XqC-;3+bqlaLm$AZK7U4l?MBXdYe(0cSGs_ZtO5{m@6yuJUFCB5pH8RB zMC1+XFaTT@5Kx&hHlu@AFi#p;IzUJc01+KV#LbMcA7*A|&KnsSIUeGiH>l;2qTRkt zP0X7Uy7>CaBsl{x?h!%+cBQ^i zK+};)Ddn5RV)1B)v3ib(tVW}8B$vynuirY=^?MLeB|dfLZ>svc{OVq_Tn>ogToOfA zH-J^YB^Gy6^kX7gUX&o>6##H{`?h# zqs{|f0Dxli^maD@yx4ES#PH`z0C--PYu#f|zr${etFt>bZl>)yI6OQ&IzB%BZzuru vQlItj0)TZXpzsR-yk{83bfHlA*^TEvc!LX!ZpP0Z00000NkvXXu0mjf;T(7E literal 0 HcmV?d00001 diff --git a/AutoSprout-ui/src/assets/fileicons/video.png b/AutoSprout-ui/src/assets/fileicons/video.png new file mode 100644 index 0000000000000000000000000000000000000000..867e1759c016bee4783d44b4dba0b1e579168ba9 GIT binary patch literal 1584 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 b>pkEPPJ3ow+8hbz00000NkvXXu0mjf8IpPw literal 0 HcmV?d00001 diff --git a/AutoSprout-ui/src/components/FileUpload/index.vue b/AutoSprout-ui/src/components/FileUpload/index.vue index fb31669..177b0d3 100644 --- a/AutoSprout-ui/src/components/FileUpload/index.vue +++ b/AutoSprout-ui/src/components/FileUpload/index.vue @@ -10,7 +10,7 @@ :on-exceed="handleExceed" :on-success="handleUploadSuccess" :show-file-list="false" - :data="uploadData" + :headers="headers" class="upload-file-uploader" ref="fileUpload" > @@ -28,9 +28,13 @@
  • - - {{ getFileName(file.name) }} - +
    删除
    @@ -40,8 +44,7 @@ diff --git a/AutoSprout-ui/src/utils/constants.js b/AutoSprout-ui/src/utils/constants.js new file mode 100644 index 0000000..c8cacd8 --- /dev/null +++ b/AutoSprout-ui/src/utils/constants.js @@ -0,0 +1,19 @@ +// 文件类型 +export const FileType = { + // 图片 + IMAGE: ['png', 'jpg', 'jpeg', 'gif', 'bmp', 'webp', 'ico'], + // 办公 + OFFICE: ['doc', 'docx', 'xls', 'xlsx', 'pdf', 'ppt', 'pptx'], + // 音频 + AUDIO: ['mp3', 'wav', 'm4a', 'ogg', 'flac', 'aac'], + // 视频 + VIDEO: ['mp4', 'avi', 'mov', 'wmv', 'flv', 'mpeg', 'mpg', 'm4v', 'webm', 'mkv'], + // 压缩文件 + ZIP: ['zip', 'rar', '7z'], + // 其他 + OTHER: ['exe'], + // 全部 + all() { + return [...this.IMAGE, ...this.OFFICE, ...this.AUDIO, ...this.VIDEO, ...this.OTHER, ...this.ZIP]; + } +} diff --git a/AutoSprout-ui/src/utils/index.js b/AutoSprout-ui/src/utils/index.js index 4e65504..22d2e04 100644 --- a/AutoSprout-ui/src/utils/index.js +++ b/AutoSprout-ui/src/utils/index.js @@ -1,16 +1,17 @@ import { parseTime } from './ruoyi' +import {FileType} from "@/utils/constants"; /** * 表格时间格式化 */ export function formatDate(cellValue) { if (cellValue == null || cellValue == "") return ""; - var date = new Date(cellValue) + var date = new Date(cellValue) var year = date.getFullYear() var month = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1 - var day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate() - var hours = date.getHours() < 10 ? '0' + date.getHours() : date.getHours() - var minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes() + var day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate() + var hours = date.getHours() < 10 ? '0' + date.getHours() : date.getHours() + var minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes() var seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds() return year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds } @@ -77,6 +78,64 @@ export function getQueryObject(url) { return obj } +// 获取真实url +export function getRealUrl(url) { + if (url == null ) { + return url; + } + if (url.startsWith('http')) { + return url; + } + return `${process.env.VUE_APP_BASE_API}${url}`; +} + +// 获取文件图标 +export function getFileIcon(fileName) { + const ext = getExt(fileName); + if(['doc', 'docx'].includes(ext)) { + return require('@/assets/fileicons/word.png'); + } else if(['xls', 'xlsx'].includes(ext)) { + return require('@/assets/fileicons/excel.png'); + } else if(['ppt', 'pptx'].includes(ext)) { + return require('@/assets/fileicons/ppt.png'); + } else if(ext === 'pdf') { + return require('@/assets/fileicons/pdf.png'); + } else if(FileType.VIDEO.includes(ext)) { + return require('@/assets/fileicons/video.png'); + } else if(FileType.ZIP.includes(ext)) { + return require('@/assets/fileicons/zip.png'); + } + return require('@/assets/fileicons/unknown.png'); +} + +// 获取文件扩展名 +export function getExt(fileName) { + let fileExtension = ''; + if (fileName.lastIndexOf(".") > -1) { + fileExtension = fileName.slice(fileName.lastIndexOf(".") + 1).toLowerCase(); + } + return fileExtension; +} + +// 是否为图片 +export function isImage(url) { + const ext = getExt(url); + return FileType.IMAGE.includes(ext); +} + +// 是否为视频 +export function isVideo(url) { + const ext = getExt(url); + return FileType.VIDEO.includes(ext); +} + +// 为文件名在后缀和名称之间拼接时间戳 +export function getFileNameWithTime(fileName) { + const ext = getExt(fileName); + const name = fileName.slice(0, fileName.lastIndexOf(".")); + return `${name}-${Date.now()}.${ext}`; +} + /** * @param {string} input value * @returns {number} output value @@ -330,7 +389,7 @@ export function makeMap(str, expectsLowerCase) { ? val => map[val.toLowerCase()] : val => map[val] } - + export const exportDefault = 'export default ' export const beautifierConf = { @@ -387,4 +446,4 @@ export function camelCase(str) { export function isNumberStr(str) { return /^[+-]?(0|([1-9]\d*))(\.\d+)?$/g.test(str) } - + diff --git a/AutoSprout-ui/src/views/device/model/index.vue b/AutoSprout-ui/src/views/device/model/index.vue index a7e4c07..a11b09c 100644 --- a/AutoSprout-ui/src/views/device/model/index.vue +++ b/AutoSprout-ui/src/views/device/model/index.vue @@ -94,7 +94,7 @@ - +