From 6970319697202af6704be9433f10fd800b542b31 Mon Sep 17 00:00:00 2001 From: 77 <77@77.com> Date: Mon, 20 May 2024 12:32:57 +0800 Subject: [PATCH] init --- .../java/com/ruoyi/web/config/I18nConfig.java | 5 +++-- .../core/executor/ExecutorConstant.java | 4 ++++ .../ruoyi/component/oss/core/OssClient.java | 18 ++++++++++++++++++ .../component/tenant/helper/TenantHelper.java | 6 ++++-- .../system/controller/SysOssController.java | 2 +- .../java/com/ruoyi/system/domain/SysOss.java | 4 +++- .../ruoyi/system/service/SysLoginService.java | 3 ++- .../system/service/impl/SysOssServiceImpl.java | 11 ++++++++++- .../service/impl/SysTenantServiceImpl.java | 2 +- 9 files changed, 46 insertions(+), 9 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/config/I18nConfig.java b/ruoyi-admin/src/main/java/com/ruoyi/web/config/I18nConfig.java index c315c60..c434bd0 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/config/I18nConfig.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/config/I18nConfig.java @@ -35,7 +35,8 @@ public class I18nConfig implements LocaleResolver { **/ @Override public Locale resolveLocale(HttpServletRequest request) { - // 默认语言设置为中文 + return Locale.CHINA; + /*// 默认语言设置为中文 String defaultLocal = homeSettingService.getHomeSetting().getDefaultLocal(); Locale locale = null; // 从请求的头部获取Accept-Language标头,该标头指定了客户端期望的语言 @@ -61,7 +62,7 @@ public class I18nConfig implements LocaleResolver { locale = Locale.CHINA; } // 返回解析得到的Locale对象作为解析后的语言设置 - return locale; + return locale;*/ } /** diff --git a/ruoyi-component/ruoyi-component-core/src/main/java/com/ruoyi/component/core/executor/ExecutorConstant.java b/ruoyi-component/ruoyi-component-core/src/main/java/com/ruoyi/component/core/executor/ExecutorConstant.java index 2c5b309..6c09f39 100644 --- a/ruoyi-component/ruoyi-component-core/src/main/java/com/ruoyi/component/core/executor/ExecutorConstant.java +++ b/ruoyi-component/ruoyi-component-core/src/main/java/com/ruoyi/component/core/executor/ExecutorConstant.java @@ -22,6 +22,10 @@ public class ExecutorConstant { COMMON_EXECUTOR = TtlExecutors.getTtlExecutor(commonExecutor); } + public static void main(String[] args) { + + } + private static ThreadFactory init(String nameFormat){ return new ThreadFactoryBuilder().setNameFormat(nameFormat).build(); } diff --git a/ruoyi-component/ruoyi-component-oss/src/main/java/com/ruoyi/component/oss/core/OssClient.java b/ruoyi-component/ruoyi-component-oss/src/main/java/com/ruoyi/component/oss/core/OssClient.java index c4eb55c..437a0b0 100644 --- a/ruoyi-component/ruoyi-component-oss/src/main/java/com/ruoyi/component/oss/core/OssClient.java +++ b/ruoyi-component/ruoyi-component-oss/src/main/java/com/ruoyi/component/oss/core/OssClient.java @@ -137,6 +137,24 @@ public class OssClient { } } + public UploadResult uploadFile(byte[] data, String tenantPrefix, String suffix, String contentType) { + return upload(data, getPath(properties.getPrefix(),tenantPrefix, suffix), contentType); + } + + private String getPath(String prefix,String tenantPrefix, String suffix) { + // 生成uuid + String uuid = IdUtil.fastSimpleUUID(); + // 文件路径 + String path = DateUtils.datePath() + "/" + uuid; + if(StringUtils.isNotBlank(tenantPrefix)){ + path = tenantPrefix + "/" + path; + } + if (StringUtils.isNotBlank(prefix)) { + path = prefix + "/" + path; + } + return path + suffix; + } + public UploadResult uploadSuffix(byte[] data, String suffix, String contentType) { return upload(data, getPath(properties.getPrefix(), suffix), contentType); } diff --git a/ruoyi-component/ruoyi-component-tenant/src/main/java/com/ruoyi/component/tenant/helper/TenantHelper.java b/ruoyi-component/ruoyi-component-tenant/src/main/java/com/ruoyi/component/tenant/helper/TenantHelper.java index 1cc6b51..80574b3 100644 --- a/ruoyi-component/ruoyi-component-tenant/src/main/java/com/ruoyi/component/tenant/helper/TenantHelper.java +++ b/ruoyi-component/ruoyi-component-tenant/src/main/java/com/ruoyi/component/tenant/helper/TenantHelper.java @@ -110,11 +110,12 @@ public class TenantHelper { * @param handle 处理执行方法 */ public static void dynamic(String tenantId, Runnable handle) { + String oldTenant = getTenantId(); setTenantId(tenantId); try { handle.run(); } finally { - clearTenant(); + setTenantId(oldTenant); } } @@ -124,11 +125,12 @@ public class TenantHelper { * @param handle 处理执行方法 */ public static T dynamic(String tenantId, Supplier handle) { + String oldTenant = getTenantId(); setTenantId(tenantId); try { return handle.get(); } finally { - clearTenant(); + setTenantId(oldTenant); } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysOssController.java b/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysOssController.java index 45efa5b..19831c3 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysOssController.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysOssController.java @@ -67,7 +67,7 @@ public class SysOssController extends BaseController { * * @param file 文件 */ - @SaCheckPermission("system:oss:upload") +// @SaCheckPermission("system:oss:upload") @Log(title = "OSS对象存储", businessType = BusinessType.INSERT) @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public R> upload(@RequestPart("file") MultipartFile file) { diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOss.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOss.java index b650c8f..3d989ae 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOss.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOss.java @@ -3,6 +3,8 @@ package com.ruoyi.system.domain; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.ruoyi.component.mybatis.core.domain.BaseEntity; +import com.ruoyi.component.tenant.core.TenantEntity; +import com.ruoyi.component.tenant.helper.TenantHelper; import lombok.Data; import lombok.EqualsAndHashCode; @@ -14,7 +16,7 @@ import lombok.EqualsAndHashCode; @Data @EqualsAndHashCode(callSuper = true) @TableName("sys_oss") -public class SysOss extends BaseEntity { +public class SysOss extends TenantEntity { /** * 对象存储主键 diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java index 8c70938..cbdbf9f 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java @@ -5,6 +5,7 @@ import cn.dev33.satoken.secure.BCrypt; import cn.dev33.satoken.stp.StpUtil; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.ObjectUtil; +import com.alibaba.ttl.TransmittableThreadLocal; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ruoyi.component.core.constant.CacheConstants; import com.ruoyi.component.core.constant.Constants; @@ -79,12 +80,12 @@ public class SysLoginService { } // 框架登录不限制从什么表查询 只要最终构建出 LoginUser 即可 SysUser user = TenantHelper.ignore(() -> loadUserByUsername(username)); + TenantHelper.setTenantId(user.getTenantId()); checkLogin(LoginType.PASSWORD, username, () -> !BCrypt.checkpw(password, user.getPassword())); // 此处可根据登录用户的数据不同 自行创建 loginUser 属性不够用继承扩展就行了 LoginUser loginUser = buildLoginUser(user); // 生成token LoginHelper.loginByDevice(loginUser, DeviceType.PC); - TenantHelper.setTenantId(loginUser.getTenantId()); recordLogininfor(username,loginUser.getUserType(), Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")); recordLoginInfo(user.getUserId(), username); return StpUtil.getTokenValue(); diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssServiceImpl.java index b34e27e..d1daa63 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssServiceImpl.java @@ -19,11 +19,15 @@ import com.ruoyi.component.oss.core.OssClient; import com.ruoyi.component.oss.entity.UploadResult; import com.ruoyi.component.oss.enumd.AccessPolicyType; import com.ruoyi.component.oss.factory.OssFactory; +import com.ruoyi.component.satoken.utils.LoginHelper; +import com.ruoyi.component.tenant.helper.TenantHelper; import com.ruoyi.system.domain.SysOss; import com.ruoyi.system.domain.bo.SysOssBo; import com.ruoyi.system.domain.vo.SysOssVo; +import com.ruoyi.system.domain.vo.SysTenantVo; import com.ruoyi.system.mapper.SysOssMapper; import com.ruoyi.system.service.ISysOssService; +import com.ruoyi.system.service.ISysTenantService; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.http.MediaType; @@ -50,6 +54,7 @@ import java.util.stream.Collectors; public class SysOssServiceImpl implements ISysOssService, OssService { private final SysOssMapper baseMapper; + private final ISysTenantService tenantService; @Override public TableDataInfo queryPageList(SysOssBo bo, PageQuery pageQuery) { @@ -133,12 +138,16 @@ public class SysOssServiceImpl implements ISysOssService, OssService { @Override public SysOssVo upload(MultipartFile file) { + SysTenantVo tenant = tenantService.queryByTenantId(TenantHelper.getTenantId()); + if(tenant == null){ + throw new ServiceException("平台错误"); + } String originalfileName = file.getOriginalFilename(); String suffix = StringUtils.substring(originalfileName, originalfileName.lastIndexOf("."), originalfileName.length()); OssClient storage = OssFactory.instance(); UploadResult uploadResult; try { - uploadResult = storage.uploadSuffix(file.getBytes(), suffix, file.getContentType()); + uploadResult = storage.uploadFile(file.getBytes(), tenant.getPrefix(), suffix, file.getContentType()); } catch (IOException e) { throw new ServiceException(e.getMessage()); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTenantServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTenantServiceImpl.java index 9a0f5bf..5314702 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTenantServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTenantServiceImpl.java @@ -157,7 +157,7 @@ public class SysTenantServiceImpl implements ISysTenantService { roleDept.setRoleId(roleId); roleDept.setDeptId(deptId); roleDeptMapper.insert(roleDept); - String adminUsername = bo.getPrefix()+"_admin"; + String adminUsername = bo.getPrefix()+"-admin"; // 检测用户是否存在 SysUser sysUser = userMapper.selectUserByUserName(adminUsername); if(sysUser != null){