From 29c6f7f24da61cef63fd8988dd8e4dfbbdee293d Mon Sep 17 00:00:00 2001 From: Machengtianjiang Date: Thu, 31 Dec 2020 14:40:36 +0800 Subject: [PATCH] =?UTF-8?q?cos=E9=85=8D=E7=BD=AE=20id=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../winery/domain/WineryCompanyRecord.java | 2 +- .../ruoyi/winery/domain/WineryFoodSafety.java | 4 +- .../com/ruoyi/winery/domain/WineryGoods.java | 4 +- .../ruoyi/winery/domain/WineryGoodsSpec.java | 4 +- .../com/ruoyi/winery/domain/WineryOrders.java | 4 +- .../winery/domain/WineryWineSpecDetail.java | 4 +- .../controller/common/CommonController.java | 10 +++-- .../system/SysProfileController.java | 43 ++++++++----------- .../src/main/resources/application.yml | 10 ++++- .../com/ruoyi/common/config/CosConfig.java | 12 ++++-- .../ruoyi/common/config/CosProperties.java | 15 +++++++ .../com/ruoyi/common/utils/file/CosUtils.java | 14 +++--- ruoyi-ui/src/mixin/common.js | 11 +++++ ruoyi-ui/src/store/modules/user.js | 3 +- .../views/system/user/profile/userAvatar.vue | 4 +- .../src/views/winery/winery_goods/index.vue | 30 ++++++------- 16 files changed, 105 insertions(+), 69 deletions(-) create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/config/CosProperties.java create mode 100644 ruoyi-ui/src/mixin/common.js diff --git a/hope-winery/src/main/java/com/ruoyi/winery/domain/WineryCompanyRecord.java b/hope-winery/src/main/java/com/ruoyi/winery/domain/WineryCompanyRecord.java index 7fbcf08b2..3c8a6dc42 100644 --- a/hope-winery/src/main/java/com/ruoyi/winery/domain/WineryCompanyRecord.java +++ b/hope-winery/src/main/java/com/ruoyi/winery/domain/WineryCompanyRecord.java @@ -36,7 +36,7 @@ private static final long serialVersionUID=1L; /** id */ - @TableId(value = "id") + @TableId(value = "id",type = IdType.ASSIGN_UUID) private String id; /** 状态 */ diff --git a/hope-winery/src/main/java/com/ruoyi/winery/domain/WineryFoodSafety.java b/hope-winery/src/main/java/com/ruoyi/winery/domain/WineryFoodSafety.java index a66ad8b0f..ba0fa2890 100644 --- a/hope-winery/src/main/java/com/ruoyi/winery/domain/WineryFoodSafety.java +++ b/hope-winery/src/main/java/com/ruoyi/winery/domain/WineryFoodSafety.java @@ -33,8 +33,8 @@ private static final long serialVersionUID=1L; /** 规格ID */ - @TableId(value = "id") - private Long id; + @TableId(value = "id",type = IdType.ASSIGN_UUID) + private String id; /** 部门ID */ @Excel(name = "部门ID") diff --git a/hope-winery/src/main/java/com/ruoyi/winery/domain/WineryGoods.java b/hope-winery/src/main/java/com/ruoyi/winery/domain/WineryGoods.java index 2f0276c70..73a0c5da6 100644 --- a/hope-winery/src/main/java/com/ruoyi/winery/domain/WineryGoods.java +++ b/hope-winery/src/main/java/com/ruoyi/winery/domain/WineryGoods.java @@ -33,8 +33,8 @@ private static final long serialVersionUID=1L; /** 商品ID */ - @TableId(value = "id") - private Long id; + @TableId(value = "id",type = IdType.ASSIGN_UUID) + private String id; /** 部门ID */ @Excel(name = "部门ID") diff --git a/hope-winery/src/main/java/com/ruoyi/winery/domain/WineryGoodsSpec.java b/hope-winery/src/main/java/com/ruoyi/winery/domain/WineryGoodsSpec.java index ac6970a9d..4ff24a818 100644 --- a/hope-winery/src/main/java/com/ruoyi/winery/domain/WineryGoodsSpec.java +++ b/hope-winery/src/main/java/com/ruoyi/winery/domain/WineryGoodsSpec.java @@ -33,8 +33,8 @@ private static final long serialVersionUID=1L; /** 规格ID */ - @TableId(value = "id") - private Long id; + @TableId(value = "id",type = IdType.ASSIGN_UUID) + private String id; /** 部门ID */ @Excel(name = "部门ID") diff --git a/hope-winery/src/main/java/com/ruoyi/winery/domain/WineryOrders.java b/hope-winery/src/main/java/com/ruoyi/winery/domain/WineryOrders.java index ba53ebfc2..f0571699e 100644 --- a/hope-winery/src/main/java/com/ruoyi/winery/domain/WineryOrders.java +++ b/hope-winery/src/main/java/com/ruoyi/winery/domain/WineryOrders.java @@ -37,8 +37,8 @@ public class WineryOrders implements Serializable { /** * 订单ID */ - @TableId(value = "id") - private Long id; + @TableId(value = "id",type = IdType.ASSIGN_UUID) + private String id; /** * 部门ID diff --git a/hope-winery/src/main/java/com/ruoyi/winery/domain/WineryWineSpecDetail.java b/hope-winery/src/main/java/com/ruoyi/winery/domain/WineryWineSpecDetail.java index 3cdb247c6..321551736 100644 --- a/hope-winery/src/main/java/com/ruoyi/winery/domain/WineryWineSpecDetail.java +++ b/hope-winery/src/main/java/com/ruoyi/winery/domain/WineryWineSpecDetail.java @@ -33,8 +33,8 @@ private static final long serialVersionUID=1L; /** 规格ID */ - @TableId(value = "id") - private Long id; + @TableId(value = "id",type = IdType.ASSIGN_UUID) + private String id; /** 部门ID */ @Excel(name = "部门ID") diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java index c6e2c799f..96dc5643e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java @@ -67,7 +67,7 @@ public class CommonController { * 通用上传请求 */ @PostMapping("/common/upload") - public AjaxResult uploadFile(MultipartFile file) throws Exception { + public AjaxResult uploadFile(String type, MultipartFile file) throws Exception { try { // 上传文件路径 @@ -75,9 +75,13 @@ public class CommonController { // 上传并返回新文件名称 // String fileName = FileUploadUtils.upload(filePath, file); + if (StringUtils.isEmpty(type)) { + type = "defalut"; + } - String fileName = cosUtils.upload(file); - String url = serverConfig.getUrl() + "/common/file?fileName=" + fileName; + + String fileName = cosUtils.upload(type, file); + String url = serverConfig.getUrl() + "/common/file?fileName=" + fileName; AjaxResult ajax = AjaxResult.success(); ajax.put("fileName", fileName); ajax.put("url", url); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java index 295d04347..aa56afe7a 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java @@ -2,6 +2,7 @@ package com.ruoyi.web.controller.system; import java.io.IOException; +import com.ruoyi.common.config.CosProperties; import com.ruoyi.common.utils.file.CosUtils; import com.ruoyi.framework.config.ServerConfig; import org.springframework.beans.factory.annotation.Autowired; @@ -28,13 +29,12 @@ import com.ruoyi.system.service.ISysUserService; /** * 个人信息 业务处理 - * + * * @author ruoyi */ @RestController @RequestMapping("/system/user/profile") -public class SysProfileController extends BaseController -{ +public class SysProfileController extends BaseController { @Autowired private ISysUserService userService; @@ -45,15 +45,15 @@ public class SysProfileController extends BaseController @Autowired private CosUtils cosUtils; + @Autowired - private ServerConfig serverConfig; + private CosProperties cosProperties; /** * 个人信息 */ @GetMapping - public AjaxResult profile() - { + public AjaxResult profile() { LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest()); SysUser user = loginUser.getUser(); AjaxResult ajax = AjaxResult.success(user); @@ -67,10 +67,8 @@ public class SysProfileController extends BaseController */ @Log(title = "个人信息", businessType = BusinessType.UPDATE) @PutMapping - public AjaxResult updateProfile(@RequestBody SysUser user) - { - if (userService.updateUserProfile(user) > 0) - { + public AjaxResult updateProfile(@RequestBody SysUser user) { + if (userService.updateUserProfile(user) > 0) { LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest()); // 更新缓存用户信息 loginUser.getUser().setNickName(user.getNickName()); @@ -88,21 +86,17 @@ public class SysProfileController extends BaseController */ @Log(title = "个人信息", businessType = BusinessType.UPDATE) @PutMapping("/updatePwd") - public AjaxResult updatePwd(String oldPassword, String newPassword) - { + public AjaxResult updatePwd(String oldPassword, String newPassword) { LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest()); String userName = loginUser.getUsername(); String password = loginUser.getPassword(); - if (!SecurityUtils.matchesPassword(oldPassword, password)) - { + if (!SecurityUtils.matchesPassword(oldPassword, password)) { return AjaxResult.error("修改密码失败,旧密码错误"); } - if (SecurityUtils.matchesPassword(newPassword, password)) - { + if (SecurityUtils.matchesPassword(newPassword, password)) { return AjaxResult.error("新密码不能与旧密码相同"); } - if (userService.resetUserPwd(userName, SecurityUtils.encryptPassword(newPassword)) > 0) - { + if (userService.resetUserPwd(userName, SecurityUtils.encryptPassword(newPassword)) > 0) { // 更新缓存用户密码 loginUser.getUser().setPassword(SecurityUtils.encryptPassword(newPassword)); tokenService.setLoginUser(loginUser); @@ -116,18 +110,15 @@ public class SysProfileController extends BaseController */ @Log(title = "用户头像", businessType = BusinessType.UPDATE) @PostMapping("/avatar") - public AjaxResult avatar(@RequestParam("avatarfile") MultipartFile file) throws IOException - { - if (!file.isEmpty()) - { + public AjaxResult avatar(@RequestParam("avatarfile") MultipartFile file) throws IOException { + if (!file.isEmpty()) { LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest()); - String fileName = cosUtils.upload(file); - String avatar = "/common/file?fileName=" + fileName; + String fileName = cosUtils.upload("avatar", file); + String avatar = cosProperties.getBucketUrl() + fileName; // String avatar = FileUploadUtils.upload(RuoYiConfig.getAvatarPath(), file); - if (userService.updateUserAvatar(loginUser.getUsername(), avatar)) - { + if (userService.updateUserAvatar(loginUser.getUsername(), avatar)) { AjaxResult ajax = AjaxResult.success(); ajax.put("imgUrl", avatar); // 更新缓存用户头像 diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 7c5265f06..da92c851e 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -205,4 +205,12 @@ wxmini: secret: 94ee42c0899a6ceccf353e1e729c50d4 #微信小程序的Secret token: xiao4r #微信小程序消息服务器配置的token aesKey: jNXajd2sQSMYQNg3rcdMF9HraUJxXF0iswgdMxVik9W #微信小程序消息服务器配置的EncodingAESKey - msgDataFormat: JSON \ No newline at end of file + msgDataFormat: JSON + +# cos存储配置 +tencent-cos: + bucketName: winery-1257413599 + bucketUrl: https://winery-1257413599.cos.ap-beijing.myqcloud.com/ + secretId: AKIDovztW8x0DpQnunSw2uXUDhw3IH0fQC75 + secretKey: rCH8tOfjX5XjegYBXfkZWc2E75nJq9Dx + region: ap-beijing diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/config/CosConfig.java b/ruoyi-common/src/main/java/com/ruoyi/common/config/CosConfig.java index bef9c56b9..46c58d770 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/config/CosConfig.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/config/CosConfig.java @@ -5,6 +5,9 @@ import com.qcloud.cos.ClientConfig; import com.qcloud.cos.auth.BasicCOSCredentials; import com.qcloud.cos.auth.COSCredentials; import com.qcloud.cos.region.Region; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -13,14 +16,17 @@ import org.springframework.context.annotation.Configuration; * @since 2020-12-28 */ @Configuration +@EnableConfigurationProperties({CosProperties.class}) public class CosConfig { + @Autowired + private CosProperties properties; @Bean(name = "cosCredentials") public COSCredentials cosCredentials() { // 1 初始化用户身份信息(secretId, secretKey)。 - String secretId = "AKIDovztW8x0DpQnunSw2uXUDhw3IH0fQC75"; - String secretKey = "rCH8tOfjX5XjegYBXfkZWc2E75nJq9Dx"; + String secretId = properties.secretId; + String secretKey = properties.secretKey; COSCredentials cred = new BasicCOSCredentials(secretId, secretKey); return cred; } @@ -31,7 +37,7 @@ public class CosConfig { public ClientConfig cosClientConfig() { // 2 设置 bucket 的区域, COS 地域的简称请参照 https://cloud.tencent.com/document/product/436/6224 // clientConfig 中包含了设置 region, https(默认 http), 超时, 代理等 set 方法, 使用可参见源码或者常见问题 Java SDK 部分。 - Region region = new Region("ap-beijing"); + Region region = new Region(properties.region); ClientConfig clientConfig = new ClientConfig(region); return clientConfig; } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/config/CosProperties.java b/ruoyi-common/src/main/java/com/ruoyi/common/config/CosProperties.java new file mode 100644 index 000000000..96b92f36e --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/config/CosProperties.java @@ -0,0 +1,15 @@ +package com.ruoyi.common.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; + +@Data +@ConfigurationProperties(prefix = "tencent-cos") +public class CosProperties { + + String bucketName; + String bucketUrl; + String secretId; + String secretKey; + String region; +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/CosUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/CosUtils.java index b3e08a7f9..ba772cfd4 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/CosUtils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/CosUtils.java @@ -7,6 +7,7 @@ import com.qcloud.cos.ClientConfig; import com.qcloud.cos.auth.COSCredentials; import com.qcloud.cos.model.*; import com.qcloud.cos.transfer.Download; +import com.ruoyi.common.config.CosProperties; import com.ruoyi.common.utils.uuid.UUID; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -37,13 +38,13 @@ public class CosUtils { @Autowired ClientConfig clientConfig; + @Autowired + private CosProperties properties; // 指定要上传到的存储桶 - - final String bucketName = "winery-1257413599"; String SPECIAL_CHARACTERS = "[`~! @#$%^&*()+=|{}':;',//[//]<>/?~!@#¥%……&*()_——+|{}【】‘;:”“’。,、?]"; - public String upload(MultipartFile file) { + public String upload(String type, MultipartFile file) { // 指定要上传到 COS 上对象键 @@ -55,7 +56,7 @@ public class CosUtils { metadata.setContentLength(file.getSize()); file.getContentType(); try { - PutObjectResult putObjectResult = cosClient.putObject(bucketName, key, file.getInputStream(), metadata); + PutObjectResult putObjectResult = cosClient.putObject(properties.getBucketName(), type + "/" + key, file.getInputStream(), metadata); file.getInputStream().close(); } catch (IOException e) { e.printStackTrace(); @@ -63,14 +64,14 @@ public class CosUtils { cosClient.shutdown(); } - return key; + return type + "/" + key; } public void getFile(String fileName, HttpServletResponse response) { COSClient cosClient = new COSClient(cosCredentials, clientConfig); - GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, fileName); + GetObjectRequest getObjectRequest = new GetObjectRequest(properties.getBucketName(), fileName); // 限流使用的单位是bit/s, 这里设置下载带宽限制为 10MB/s getObjectRequest.setTrafficLimit(80 * 1024 * 1024); @@ -104,5 +105,4 @@ public class CosUtils { } - } diff --git a/ruoyi-ui/src/mixin/common.js b/ruoyi-ui/src/mixin/common.js new file mode 100644 index 000000000..385a7e188 --- /dev/null +++ b/ruoyi-ui/src/mixin/common.js @@ -0,0 +1,11 @@ +import Vue from 'vue' + + +Vue.filter('getImageForKey', val => { + return "https://winery-1257413599.cos.ap-beijing.myqcloud.com/" + val +}) + +Vue.filter('getImage200', val => { + return "https://winery-1257413599.cos.ap-beijing.myqcloud.com/" + val + "?imageMogr2/thumbnail/!200x200r/|imageMogr2/gravity/center/crop/200x200/interlace/0" +}) + diff --git a/ruoyi-ui/src/store/modules/user.js b/ruoyi-ui/src/store/modules/user.js index 66a7287bd..8c8f78db1 100644 --- a/ruoyi-ui/src/store/modules/user.js +++ b/ruoyi-ui/src/store/modules/user.js @@ -51,7 +51,8 @@ const user = { return new Promise((resolve, reject) => { getInfo(state.token).then(res => { const user = res.user - const avatar = user.avatar == "" ? require("@/assets/images/profile.jpg") : process.env.VUE_APP_BASE_API + user.avatar; + const avatar = user.avatar == "" ? require("@/assets/images/profile.jpg") : user.avatar; + if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组 commit('SET_ROLES', res.roles) commit('SET_PERMISSIONS', res.permissions) diff --git a/ruoyi-ui/src/views/system/user/profile/userAvatar.vue b/ruoyi-ui/src/views/system/user/profile/userAvatar.vue index edc15e36e..696b2f995 100644 --- a/ruoyi-ui/src/views/system/user/profile/userAvatar.vue +++ b/ruoyi-ui/src/views/system/user/profile/userAvatar.vue @@ -126,7 +126,7 @@ export default { formData.append("avatarfile", data); uploadAvatar(formData).then(response => { this.open = false; - this.options.img = process.env.VUE_APP_BASE_API + response.imgUrl; + this.options.img = response.imgUrl; store.commit('SET_AVATAR', this.options.img); this.msgSuccess("修改成功"); this.visible = false; @@ -164,4 +164,4 @@ export default { line-height: 110px; border-radius: 50%; } - \ No newline at end of file + diff --git a/ruoyi-ui/src/views/winery/winery_goods/index.vue b/ruoyi-ui/src/views/winery/winery_goods/index.vue index 2abbab800..7c4cda9e3 100644 --- a/ruoyi-ui/src/views/winery/winery_goods/index.vue +++ b/ruoyi-ui/src/views/winery/winery_goods/index.vue @@ -19,24 +19,17 @@ @keyup.enter.native="handleQuery" /> + + - + - - - - + - - + + + +