diff --git a/base/src/main/java/com/tinyengine/it/common/context/LoginUserContext.java b/base/src/main/java/com/tinyengine/it/common/context/LoginUserContext.java index 7358dffc..5a2ae916 100644 --- a/base/src/main/java/com/tinyengine/it/common/context/LoginUserContext.java +++ b/base/src/main/java/com/tinyengine/it/common/context/LoginUserContext.java @@ -21,8 +21,14 @@ */ public interface LoginUserContext { /** - * 返回当前用户所诉的业务租户信息 - * @return 租户ID + * 返回当前用户所在的业务租户id + * @return 租户Id + */ + String getTenantId(); + + /** + * 返回当前用户所在的业务租户信息 + * @return 租户 */ List getTenants(); diff --git a/base/src/main/java/com/tinyengine/it/login/config/SSOInterceptor.java b/base/src/main/java/com/tinyengine/it/login/config/SSOInterceptor.java index 28456880..b138bb8f 100644 --- a/base/src/main/java/com/tinyengine/it/login/config/SSOInterceptor.java +++ b/base/src/main/java/com/tinyengine/it/login/config/SSOInterceptor.java @@ -41,17 +41,17 @@ public class SSOInterceptor implements HandlerInterceptor { public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { - String token = request.getHeader("Authorization"); - String requestURI = request.getRequestURI(); - - log.info("Intercepting: {}, Token: {}", requestURI, token != null ? "present" : "null"); - + String authorization = request.getHeader("Authorization"); // 如果没有token,重定向到登录页 - if (token == null || token.isEmpty()) { + if (authorization == null || authorization.isEmpty()) { log.info("No token, redirecting to: {}", SSO_SERVER); response.sendRedirect(SSO_SERVER); return false; } + String token = jwtUtil.getTokenFromRequest(authorization); + String requestURI = request.getRequestURI(); + + log.info("Intercepting: {}, Token: {}", requestURI, token != null ? "present" : "null"); try { // 验证token diff --git a/base/src/main/java/com/tinyengine/it/login/config/context/DefaultLoginUserContext.java b/base/src/main/java/com/tinyengine/it/login/config/context/DefaultLoginUserContext.java index ade54dfa..25467e16 100644 --- a/base/src/main/java/com/tinyengine/it/login/config/context/DefaultLoginUserContext.java +++ b/base/src/main/java/com/tinyengine/it/login/config/context/DefaultLoginUserContext.java @@ -16,6 +16,23 @@ public class DefaultLoginUserContext implements LoginUserContext { private static final ThreadLocal CURRENT_USER = new ThreadLocal<>(); private static final int DEFAULT_PLATFORM = 1; + private static final String DEFAULT_TENANT = "1"; + + /** + * 返回当前用户所在的业务租户id + * + * @return 租户Id + */ + @Override + public String getTenantId() { + UserInfo userInfo = CURRENT_USER.get(); + List tenantList = userInfo != null ? userInfo.getTenants() : null; + if (tenantList == null || tenantList.isEmpty()) { + return DEFAULT_TENANT; + } + + return tenantList.get(0).getId(); + } @Override public List getTenants() { diff --git a/base/src/main/java/com/tinyengine/it/mapper/AppMapper.java b/base/src/main/java/com/tinyengine/it/mapper/AppMapper.java index 20960c61..c308bcf6 100644 --- a/base/src/main/java/com/tinyengine/it/mapper/AppMapper.java +++ b/base/src/main/java/com/tinyengine/it/mapper/AppMapper.java @@ -31,7 +31,7 @@ public interface AppMapper extends BaseMapper { * * @return the list */ - List queryAllApp(); + List queryAllApp(String tenantId); /** * 分页查询应用所有信息 @@ -45,24 +45,24 @@ public interface AppMapper extends BaseMapper { * @param createdBy the createdBy * @return the list */ - List queryAllAppByPage(Integer pageSize, Integer offset, String name, - Integer industryId, Integer sceneId, String framework, String orderBy, String createdBy); + List queryAllAppByPage(Integer pageSize, Integer offset, String name, Integer industryId, + Integer sceneId, String framework, String orderBy, String createdBy, String tenantId); /** * 查询表t_app 应用总数 * * @return the int */ - @Select("SELECT COUNT(id) FROM t_app WHERE is_template IS NOT TRUE") - int queryAppTotal(); + @Select("SELECT COUNT(id) FROM t_app WHERE tenant_id = #{tenantId} AND is_template IS NOT TRUE") + int queryAppTotal(String tenantId); /** * 查询表t_app 模版总数 * * @return the int */ - @Select("SELECT COUNT(id) FROM t_app WHERE is_template = TRUE") - int queryAppTemplateTotal(); + @Select("SELECT COUNT(id) FROM t_app WHERE tenant_id = #{tenantId} AND is_template = TRUE") + int queryAppTemplateTotal(String tenantId); /** * 分页查询应用模版所有信息 @@ -76,8 +76,8 @@ List queryAllAppByPage(Integer pageSize, Integer offset, String name, * @param createdBy the createdBy * @return the list */ - List queryAllAppTemplate(Integer pageSize, Integer offset, String name, - Integer industryId, Integer sceneId, String framework, String orderBy, String createdBy); + List queryAllAppTemplate(Integer pageSize, Integer offset, String name, Integer industryId, + Integer sceneId, String framework, String orderBy, String createdBy, String tenantId); /** * 根据主键id查询应用模版数据 @@ -85,7 +85,7 @@ List queryAllAppTemplate(Integer pageSize, Integer offset, String name, * @param id the id * @return the app */ - App queryAppTemplateById(Integer id); + App queryAppTemplateById(Integer id, String tenantId); /** * 根据主键id查询表t_app数据 @@ -93,7 +93,7 @@ List queryAllAppTemplate(Integer pageSize, Integer offset, String name, * @param id the id * @return the app */ - App queryAppById(Integer id); + App queryAppById(Integer id, String tenantId); /** * 根据条件查询表t_app数据 @@ -109,7 +109,7 @@ List queryAllAppTemplate(Integer pageSize, Integer offset, String name, * @param id the id * @return the integer */ - Integer deleteAppById(@Param("id") Integer id); + Integer deleteAppById(@Param("id") Integer id, String tenantId); /** * 根据主键id更新表t_app数据 diff --git a/base/src/main/java/com/tinyengine/it/service/app/impl/AppServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/app/impl/AppServiceImpl.java index 829dd911..f9263f1a 100644 --- a/base/src/main/java/com/tinyengine/it/service/app/impl/AppServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/app/impl/AppServiceImpl.java @@ -14,6 +14,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.tinyengine.it.common.base.Result; +import com.tinyengine.it.common.context.LoginUserContext; import com.tinyengine.it.common.enums.Enums; import com.tinyengine.it.common.exception.ExceptionEnum; import com.tinyengine.it.common.log.SystemServiceLog; @@ -28,6 +29,7 @@ import com.tinyengine.it.model.entity.App; import com.tinyengine.it.model.entity.I18nEntry; import com.tinyengine.it.model.entity.Platform; +import com.tinyengine.it.model.entity.Tenant; import com.tinyengine.it.service.app.AppService; import com.tinyengine.it.service.app.I18nEntryService; import com.tinyengine.it.service.app.impl.v1.AppV1ServiceImpl; @@ -74,6 +76,9 @@ public class AppServiceImpl extends ServiceImpl implements AppSe @Autowired private AppV1ServiceImpl appV1ServiceImpl; + @Autowired + private LoginUserContext loginUserContext; + /** * 查询表t_app所有数据 * @@ -81,7 +86,7 @@ public class AppServiceImpl extends ServiceImpl implements AppSe */ @Override public List queryAllApp() { - return baseMapper.queryAllApp(); + return baseMapper.queryAllApp(loginUserContext.getTenantId()); } /** @@ -105,8 +110,9 @@ public AppDto queryAllAppByPage(Integer currentPage, Integer pageSize, String or } int offset = (currentPage - 1) * pageSize; List apps = this.baseMapper.queryAllAppByPage(pageSize, offset, app.getName(), - app.getIndustryId(), app.getSceneId(), app.getFramework(), orderBy, app.getCreatedBy()); - Integer total = this.baseMapper.queryAppTotal(); + app.getIndustryId(), app.getSceneId(), app.getFramework(), orderBy, app.getCreatedBy(), + loginUserContext.getTenantId()); + Integer total = this.baseMapper.queryAppTotal(loginUserContext.getTenantId()); AppDto appDto = new AppDto(); appDto.setApps(apps); appDto.setTotal(total); @@ -122,7 +128,7 @@ public AppDto queryAllAppByPage(Integer currentPage, Integer pageSize, String or @Override @SystemServiceLog(description = "通过id查询应用实现方法") public Result queryAppById(Integer id) { - App app = baseMapper.queryAppById(id); + App app = baseMapper.queryAppById(id, loginUserContext.getTenantId()); if (app == null) { return Result.failed(ExceptionEnum.CM009); } @@ -149,8 +155,8 @@ public List queryAppByCondition(App app) { @Override @SystemServiceLog(description = "应用删除实现方法") public Result deleteAppById(Integer id) { - App app = baseMapper.queryAppById(id); - int result = baseMapper.deleteAppById(id); + App app = baseMapper.queryAppById(id, loginUserContext.getTenantId()); + int result = baseMapper.deleteAppById(id, loginUserContext.getTenantId()); if (result < 1) { return Result.failed(ExceptionEnum.CM009); } @@ -168,7 +174,7 @@ public Result deleteAppById(Integer id) { public Result updateAppById(App app) { // 如果更新extend_config字段,从platform获取数据,继承非route部分 if (app.getExtendConfig() != null && !app.getExtendConfig().isEmpty()) { - App appResult = baseMapper.queryAppById(app.getId()); + App appResult = baseMapper.queryAppById(app.getId(), loginUserContext.getTenantId()); Platform platform = platformService.queryPlatformById(appResult.getPlatformId()); Map appExtendConfig = platform.getAppExtendConfig(); appExtendConfig.remove("route"); @@ -178,7 +184,7 @@ public Result updateAppById(App app) { if (result < 1) { return Result.failed(ExceptionEnum.CM001); } - App selectedApp = baseMapper.queryAppById(app.getId()); + App selectedApp = baseMapper.queryAppById(app.getId(), loginUserContext.getTenantId()); return Result.success(selectedApp); } diff --git a/base/src/main/java/com/tinyengine/it/service/app/impl/AppTemplateServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/app/impl/AppTemplateServiceImpl.java index 702e5213..6e7bd266 100644 --- a/base/src/main/java/com/tinyengine/it/service/app/impl/AppTemplateServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/app/impl/AppTemplateServiceImpl.java @@ -15,6 +15,7 @@ import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.tinyengine.it.common.base.Result; +import com.tinyengine.it.common.context.LoginUserContext; import com.tinyengine.it.common.exception.ExceptionEnum; import com.tinyengine.it.common.exception.ServiceException; import com.tinyengine.it.mapper.AppExtensionMapper; @@ -91,6 +92,9 @@ public class AppTemplateServiceImpl extends ServiceImpl implemen @Autowired private ModelMapper modelMapper; + @Autowired + private LoginUserContext loginUserContext; + /** * 分页查询应用模版所有信息 * @param currentPage the currentPage @@ -113,8 +117,9 @@ public AppDto queryAllAppTemplate(Integer currentPage, Integer pageSize, String int offset = (currentPage - 1) * pageSize; List apps = this.baseMapper.queryAllAppTemplate(pageSize, offset, app.getName(), - app.getIndustryId(), app.getSceneId(), app.getFramework(), orderBy, app.getCreatedBy()); - Integer total = this.baseMapper.queryAppTemplateTotal(); + app.getIndustryId(), app.getSceneId(), app.getFramework(), orderBy, app.getCreatedBy(), + loginUserContext.getTenantId()); + Integer total = this.baseMapper.queryAppTemplateTotal(loginUserContext.getTenantId()); AppDto appDto = new AppDto(); appDto.setApps(apps); appDto.setTotal(total); @@ -129,7 +134,7 @@ public AppDto queryAllAppTemplate(Integer currentPage, Integer pageSize, String */ @Override public Result queryAppTemplateById(Integer id) { - App app = baseMapper.queryAppTemplateById(id); + App app = baseMapper.queryAppTemplateById(id, loginUserContext.getTenantId()); if (app == null) { return Result.failed(ExceptionEnum.CM009); } @@ -157,7 +162,7 @@ public App createAppByTemplate(App app) { throw new ServiceException(ExceptionEnum.CM001.getResultCode(), ExceptionEnum.CM001.getResultMsg()); } copyData(templateId, app.getId()); - return appMapper.queryAppById(app.getId()); + return appMapper.queryAppById(app.getId(), loginUserContext.getTenantId()); } private void copyData(int templateId, int appId) { diff --git a/base/src/main/java/com/tinyengine/it/service/app/impl/PageServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/app/impl/PageServiceImpl.java index 9659b671..f115314f 100644 --- a/base/src/main/java/com/tinyengine/it/service/app/impl/PageServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/app/impl/PageServiceImpl.java @@ -177,7 +177,7 @@ public List queryAllPage(Integer aid) { public Page queryPageById(Integer id) { Page pageInfo = baseMapper.queryPageById(id); // 获取schemaMeta进行获取materialHistory中的framework进行判断 - String framework = appMapper.queryAppById(pageInfo.getApp()).getFramework(); + String framework = appMapper.queryAppById(pageInfo.getApp(), loginUserContext.getTenantId()).getFramework(); if (framework.isEmpty()) { throw new ServiceException(ExceptionEnum.CM312.getResultCode(), ExceptionEnum.CM312.getResultMsg()); } @@ -495,7 +495,7 @@ public Page addIsHome(Page pageInfo) { * @return the app home page id */ public int getAppHomePageId(int appId) { - App appInfo = appMapper.queryAppById(appId); + App appInfo = appMapper.queryAppById(appId, loginUserContext.getTenantId()); // appHomePageId 存在为null的情况,即app没有设置首页 Integer homePage = appInfo.getHomePage(); diff --git a/base/src/main/java/com/tinyengine/it/service/app/impl/v1/AppV1ServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/app/impl/v1/AppV1ServiceImpl.java index d2846ed0..c2bf340d 100644 --- a/base/src/main/java/com/tinyengine/it/service/app/impl/v1/AppV1ServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/app/impl/v1/AppV1ServiceImpl.java @@ -16,6 +16,7 @@ import static com.tinyengine.it.common.utils.Utils.findMaxVersion; import com.fasterxml.jackson.core.type.TypeReference; +import com.tinyengine.it.common.context.LoginUserContext; import com.tinyengine.it.common.exception.ServiceException; import com.tinyengine.it.common.log.SystemServiceLog; import com.tinyengine.it.common.utils.Schema; @@ -142,6 +143,9 @@ public class AppV1ServiceImpl implements AppV1Service { @Autowired private ComponentLibraryMapper componentLibraryMapper; + @Autowired + private LoginUserContext loginUserContext; + /** * 获取应用schema * @@ -275,7 +279,7 @@ private List getPackages() { * @return the meta */ public MetaDto getMetaDto(Integer id) { - App app = appMapper.queryAppById(id); + App app = appMapper.queryAppById(id, loginUserContext.getTenantId()); Platform platform = platformService.queryPlatformById(app.getPlatformId()); diff --git a/base/src/main/java/com/tinyengine/it/service/material/impl/BlockServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/material/impl/BlockServiceImpl.java index e22361ee..60cd055e 100644 --- a/base/src/main/java/com/tinyengine/it/service/material/impl/BlockServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/material/impl/BlockServiceImpl.java @@ -639,7 +639,7 @@ public Result> listNew(String appId, String groupId) { if (appId != null && !appId.isEmpty()) { appIdTemp = Integer.parseInt(appId); } - App apps = appMapper.queryAppById(appIdTemp); + App apps = appMapper.queryAppById(appIdTemp, loginUserContext.getTenantId()); if (groupIdTemp != 0) { if (!apps.getId().equals(appIdTemp)) { return Result.failed(ExceptionEnum.CM206); diff --git a/base/src/main/resources/mappers/AppMapper.xml b/base/src/main/resources/mappers/AppMapper.xml index 03478304..05bd57cd 100644 --- a/base/src/main/resources/mappers/AppMapper.xml +++ b/base/src/main/resources/mappers/AppMapper.xml @@ -430,7 +430,7 @@ SELECT - WHERE A.is_template IS NOT TRUE + WHERE A.is_template IS NOT TRUE AND A.tenant_id = #{tenantId} ORDER BY A.created_time DESC @@ -455,6 +455,9 @@ AND A.created_by = #{createdBy} + + AND A.tenant_id = #{tenantId} + ORDER BY @@ -488,6 +491,9 @@ AND A.created_by = #{createdBy} + + AND A.tenant_id = #{tenantId} + ORDER BY @@ -505,7 +511,7 @@ - A.id = #{id} + A.id = #{id} AND A.tenant_id = #{tenantId} @@ -515,7 +521,8 @@ - A.id = #{id} AND A.is_template = true + A.tenant_id = #{tenantId} AND + A.id = #{id} AND A.is_template = true @@ -532,7 +539,7 @@ DELETE FROM t_app - WHERE id = #{id} + WHERE id = #{id} AND tenant_id = #{tenantId} @@ -542,7 +549,7 @@ WHERE - id=#{id} + id = #{id} AND tenant_id = #{tenantId} diff --git a/base/src/test/java/com/tinyengine/it/mapper/AppMapperTest.java b/base/src/test/java/com/tinyengine/it/mapper/AppMapperTest.java index 3c9d057c..05595afa 100644 --- a/base/src/test/java/com/tinyengine/it/mapper/AppMapperTest.java +++ b/base/src/test/java/com/tinyengine/it/mapper/AppMapperTest.java @@ -15,6 +15,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; +import com.tinyengine.it.common.context.LoginUserContext; import com.tinyengine.it.model.entity.App; import org.junit.jupiter.api.Disabled; @@ -35,9 +36,12 @@ class AppMapperTest { @Autowired private AppMapper appMapper; + @Autowired + LoginUserContext loginUserContext; @Test void queryAllApp() { - List result = appMapper.queryAllApp(); + String tenantId = loginUserContext.getTenantId(); + List result = appMapper.queryAllApp(tenantId); assertNotNull(result); assertEquals(1, result.size()); App app = result.get(0); diff --git a/base/src/test/java/com/tinyengine/it/service/app/impl/AppServiceImplTest.java b/base/src/test/java/com/tinyengine/it/service/app/impl/AppServiceImplTest.java index e78f8c66..3087a176 100644 --- a/base/src/test/java/com/tinyengine/it/service/app/impl/AppServiceImplTest.java +++ b/base/src/test/java/com/tinyengine/it/service/app/impl/AppServiceImplTest.java @@ -19,6 +19,7 @@ import cn.hutool.core.util.ReflectUtil; import com.tinyengine.it.common.base.Result; +import com.tinyengine.it.common.context.LoginUserContext; import com.tinyengine.it.mapper.AppMapper; import com.tinyengine.it.mapper.I18nEntryMapper; import com.tinyengine.it.model.dto.I18nEntryDto; @@ -64,6 +65,10 @@ class AppServiceImplTest { @InjectMocks private AppServiceImpl appServiceImpl; + @Mock + LoginUserContext loginUserContext; + + private String TENANTID = loginUserContext.getTenantId(); @BeforeEach void setUp() { MockitoAnnotations.openMocks(this); @@ -73,7 +78,7 @@ void setUp() { @Test void testQueryAllApp() { List mockData = Arrays.asList(new App()); - when(appMapper.queryAllApp()).thenReturn(mockData); + when(appMapper.queryAllApp(TENANTID)).thenReturn(mockData); List result = appServiceImpl.queryAllApp(); Assertions.assertEquals(mockData, result); @@ -82,7 +87,7 @@ void testQueryAllApp() { @Test void testQueryAppById() { App app = new App(); - when(appMapper.queryAppById(1)).thenReturn(app); + when(appMapper.queryAppById(1, TENANTID)).thenReturn(app); Result result = appServiceImpl.queryAppById(1); Assertions.assertEquals(app, result.getData()); @@ -100,8 +105,8 @@ void testQueryAppByCondition() { @Test void testDeleteAppById() { App app = new App(); - when(appMapper.queryAppById(1)).thenReturn(app); - when(appMapper.deleteAppById(1)).thenReturn(2); + when(appMapper.queryAppById(1, TENANTID)).thenReturn(app); + when(appMapper.deleteAppById(1, TENANTID)).thenReturn(2); Result result = appServiceImpl.deleteAppById(1); Assertions.assertEquals(app, result.getData()); @@ -115,7 +120,7 @@ void testUpdateAppById() { resultApp.setExtendConfig(mockConfig); int appId = 1; - when(appMapper.queryAppById(appId)).thenReturn(resultApp); + when(appMapper.queryAppById(appId, TENANTID)).thenReturn(resultApp); App param = new App(); param.setId(appId);