diff --git a/app/src/main/java/com/tinyengine/it/config/context/DefaultLoginUserContext.java b/app/src/main/java/com/tinyengine/it/config/context/DefaultLoginUserContext.java new file mode 100644 index 00000000..37ad3e83 --- /dev/null +++ b/app/src/main/java/com/tinyengine/it/config/context/DefaultLoginUserContext.java @@ -0,0 +1,44 @@ +/** + * Copyright (c) 2023 - present TinyEngine Authors. + * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd. + * + * Use of this source code is governed by an MIT-style license. + * + * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, + * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR + * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. + */ + +package com.tinyengine.it.config.context; + +import com.tinyengine.it.common.context.LoginUserContext; + +/** + * 默认的登录用户Context实现 + */ +public class DefaultLoginUserContext implements LoginUserContext { + @Override + public String getTenantId() { + return "1"; + } + + @Override + public String getLoginUserId() { + return "1"; + } + + @Override + public String getRenterId() { + return "1"; + } + + @Override + public int getAppId() { + return 1; + } + + @Override + public int getPlatformId() { + return 1; + } +} diff --git a/base/src/main/java/com/tinyengine/it/common/base/PageQueryVo.java b/base/src/main/java/com/tinyengine/it/common/base/PageQueryVo.java index 9eb6df88..ed52d8b9 100644 --- a/base/src/main/java/com/tinyengine/it/common/base/PageQueryVo.java +++ b/base/src/main/java/com/tinyengine/it/common/base/PageQueryVo.java @@ -1,12 +1,13 @@ /** * Copyright (c) 2023 - present TinyEngine Authors. * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd. - *

+ * * Use of this source code is governed by an MIT-style license. - *

+ * * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. + * */ package com.tinyengine.it.common.base; @@ -23,6 +24,7 @@ public class PageQueryVo { * 最大分页数量 */ public static final int PAGESIZE_MAX = 200; + /** * 默认分页数量 */ 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 new file mode 100644 index 00000000..6f8bde93 --- /dev/null +++ b/base/src/main/java/com/tinyengine/it/common/context/LoginUserContext.java @@ -0,0 +1,48 @@ +/** + * Copyright (c) 2023 - present TinyEngine Authors. + * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd. + *

+ * Use of this source code is governed by an MIT-style license. + *

+ * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, + * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR + * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. + */ + +package com.tinyengine.it.common.context; + +/** + * 保存用户信息的上下文 + * 由集成方自行实现接口 + */ +public interface LoginUserContext { + /** + * 返回当前用户所诉的业务租户信息 + * @return 租户ID + */ + public String getTenantId(); + + /** + * 返回当前用户信息 + * @return 用户ID + */ + public String getLoginUserId(); + + /** + * 返回当前用户所属业务租户信息 + * @return 业务租户ID + */ + public String getRenterId(); + + /** + * 返回当前应用信息 + * @return 应用ID + */ + public int getAppId(); + + /** + * 返回当前设计器信息 + * @return 设计器ID + */ + public int getPlatformId(); +} diff --git a/base/src/main/java/com/tinyengine/it/common/handler/MyMetaObjectHandler.java b/base/src/main/java/com/tinyengine/it/common/handler/MyMetaObjectHandler.java index 7effc2d9..b3673728 100644 --- a/base/src/main/java/com/tinyengine/it/common/handler/MyMetaObjectHandler.java +++ b/base/src/main/java/com/tinyengine/it/common/handler/MyMetaObjectHandler.java @@ -13,10 +13,12 @@ package com.tinyengine.it.common.handler; import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; +import com.tinyengine.it.common.context.LoginUserContext; import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.reflection.MetaObject; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.time.LocalDateTime; @@ -29,15 +31,17 @@ @Component @Slf4j public class MyMetaObjectHandler implements MetaObjectHandler { + @Autowired + private LoginUserContext loginUserContext; + @Override public void insertFill(MetaObject metaObject) { this.setFieldValByName("createdTime", LocalDateTime.now(), metaObject); this.setFieldValByName("lastUpdatedTime", LocalDateTime.now(), metaObject); - this.setFieldValByName("createdBy", "1", metaObject); - this.setFieldValByName("lastUpdatedBy", "1", metaObject); - this.setFieldValByName("tenantId", "1", metaObject); - this.setFieldValByName("renterId", "1", metaObject); - this.setFieldValByName("siteId", "1", metaObject); + this.setFieldValByName("createdBy", loginUserContext.getLoginUserId(), metaObject); + this.setFieldValByName("lastUpdatedBy", loginUserContext.getLoginUserId(), metaObject); + this.setFieldValByName("tenantId", loginUserContext.getTenantId(), metaObject); + this.setFieldValByName("renterId", loginUserContext.getRenterId(), metaObject); } @Override diff --git a/base/src/main/java/com/tinyengine/it/common/utils/TestUtil.java b/base/src/main/java/com/tinyengine/it/common/utils/TestUtil.java new file mode 100644 index 00000000..3260c471 --- /dev/null +++ b/base/src/main/java/com/tinyengine/it/common/utils/TestUtil.java @@ -0,0 +1,35 @@ +/** + * Copyright (c) 2023 - present TinyEngine Authors. + * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd. + *

+ * Use of this source code is governed by an MIT-style license. + *

+ * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, + * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR + * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. + */ + +package com.tinyengine.it.common.utils; + +import java.lang.reflect.Field; + +/** + * 测试工工具类 + */ +public class TestUtil { + /** + * 设置私有字段的属性值 + * + * @param obj 对象 + * @param field 字段名 + * @param value 值 + * @throws NoSuchFieldException 异常 + * @throws IllegalAccessException 异常 + */ + public static void setPrivateValue(Object obj, String field, Object value) + throws NoSuchFieldException, IllegalAccessException { + Field declaredField = obj.getClass().getDeclaredField(field); + declaredField.setAccessible(true); + declaredField.set(obj, value); + } +} diff --git a/base/src/main/java/com/tinyengine/it/controller/PageController.java b/base/src/main/java/com/tinyengine/it/controller/PageController.java index 8fefcb94..92bff43c 100644 --- a/base/src/main/java/com/tinyengine/it/controller/PageController.java +++ b/base/src/main/java/com/tinyengine/it/controller/PageController.java @@ -1,13 +1,12 @@ /** * Copyright (c) 2023 - present TinyEngine Authors. * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd. - * + *

* Use of this source code is governed by an MIT-style license. - * + *

* THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. - * */ package com.tinyengine.it.controller; @@ -71,8 +70,8 @@ public class PageController { * @return allpage */ @Operation(summary = "获取页面列表", description = "获取页面列表", parameters = { - @Parameter(name = "aid", description = "appId")}, responses = { - @ApiResponse(responseCode = "200", description = "返回信息", + @Parameter(name = "aid", description = "appId")}, responses = { + @ApiResponse(responseCode = "200", description = "返回信息", content = @Content(mediaType = "application/json", schema = @Schema(implementation = Page.class))), @ApiResponse(responseCode = "400", description = "请求失败")}) @@ -207,8 +206,8 @@ public Result previewData(@ModelAttribute PreviewParam previewParam) @ApiResponse(responseCode = "400", description = "请求失败")}) @SystemControllerLog(description = "页面发布") @PostMapping("/pages/deploy") - public Result pageDeploy(@RequestBody PageHistory pageHistory) { - Integer result = pageHistoryService.createPageHistory(pageHistory); - return Result.success(result); + public Result pageDeploy(@RequestBody PageHistory pageHistory) { + pageHistoryService.createPageHistory(pageHistory); + return Result.success(pageHistory); } } diff --git a/base/src/main/java/com/tinyengine/it/mapper/BlockGroupBlockMapper.java b/base/src/main/java/com/tinyengine/it/mapper/BlockGroupBlockMapper.java index 47c878e1..2318bb27 100644 --- a/base/src/main/java/com/tinyengine/it/mapper/BlockGroupBlockMapper.java +++ b/base/src/main/java/com/tinyengine/it/mapper/BlockGroupBlockMapper.java @@ -1,12 +1,13 @@ /** * Copyright (c) 2023 - present TinyEngine Authors. * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd. - *

+ * * Use of this source code is governed by an MIT-style license. - *

+ * * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. + * */ package com.tinyengine.it.mapper; diff --git a/base/src/main/java/com/tinyengine/it/mapper/PageHistoryMapper.java b/base/src/main/java/com/tinyengine/it/mapper/PageHistoryMapper.java index 960ba41b..502594e6 100644 --- a/base/src/main/java/com/tinyengine/it/mapper/PageHistoryMapper.java +++ b/base/src/main/java/com/tinyengine/it/mapper/PageHistoryMapper.java @@ -1,12 +1,13 @@ /** * Copyright (c) 2023 - present TinyEngine Authors. * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd. - *

+ * * Use of this source code is governed by an MIT-style license. - *

+ * * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. + * */ package com.tinyengine.it.mapper; @@ -85,10 +86,10 @@ public interface PageHistoryMapper extends BaseMapper { /** * 查询发布的页面记录 * - * @param iPage the iPage + * @param iPage the iPage * @param pageHistoryVo the pageQueryVo * @return page history */ IPage findLatestPublishPage(IPage iPage, - @Param("pageHistory") PublishedPageVo pageHistoryVo); + @Param("pageHistory") PublishedPageVo pageHistoryVo); } \ No newline at end of file diff --git a/base/src/main/java/com/tinyengine/it/model/dto/PageHistoryVo.java b/base/src/main/java/com/tinyengine/it/model/dto/PageHistoryVo.java index e0b5c41d..f6c79962 100644 --- a/base/src/main/java/com/tinyengine/it/model/dto/PageHistoryVo.java +++ b/base/src/main/java/com/tinyengine/it/model/dto/PageHistoryVo.java @@ -1,12 +1,13 @@ /** * Copyright (c) 2023 - present TinyEngine Authors. * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd. - *

+ * * Use of this source code is governed by an MIT-style license. - *

+ * * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. + * */ package com.tinyengine.it.model.dto; diff --git a/base/src/main/java/com/tinyengine/it/model/dto/PublishedPageVo.java b/base/src/main/java/com/tinyengine/it/model/dto/PublishedPageVo.java index 6b94d9bf..252fe55f 100644 --- a/base/src/main/java/com/tinyengine/it/model/dto/PublishedPageVo.java +++ b/base/src/main/java/com/tinyengine/it/model/dto/PublishedPageVo.java @@ -1,12 +1,13 @@ /** * Copyright (c) 2023 - present TinyEngine Authors. * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd. - *

+ * * Use of this source code is governed by an MIT-style license. - *

+ * * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. + * */ package com.tinyengine.it.model.dto; @@ -25,6 +26,7 @@ @Getter public class PublishedPageVo { private Integer refId; + /** * 名称 */ diff --git a/base/src/main/java/com/tinyengine/it/service/app/PageHistoryService.java b/base/src/main/java/com/tinyengine/it/service/app/PageHistoryService.java index 165c73ff..4b4d5821 100644 --- a/base/src/main/java/com/tinyengine/it/service/app/PageHistoryService.java +++ b/base/src/main/java/com/tinyengine/it/service/app/PageHistoryService.java @@ -1,12 +1,13 @@ /** * Copyright (c) 2023 - present TinyEngine Authors. * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd. - *

+ * * Use of this source code is governed by an MIT-style license. - *

+ * * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. + * */ package com.tinyengine.it.service.app; diff --git a/base/src/main/java/com/tinyengine/it/service/app/impl/I18nEntryServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/app/impl/I18nEntryServiceImpl.java index f9e172fe..0c15e806 100644 --- a/base/src/main/java/com/tinyengine/it/service/app/impl/I18nEntryServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/app/impl/I18nEntryServiceImpl.java @@ -40,7 +40,6 @@ import com.tinyengine.it.service.app.I18nEntryService; import cn.hutool.core.bean.BeanUtil; - import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.annotations.Param; @@ -169,7 +168,8 @@ public List fillParam(OperateI18nEntries operateI18nEntries, Map contents = operateI18nEntries.getContents(); - contents.keySet().forEach(item -> { + contents.keySet().forEach(item -> + { int lang = langsDic.get(item); if (lang != 0) { I18nEntry i18nEntries = new I18nEntry(); @@ -180,7 +180,7 @@ public List fillParam(OperateI18nEntries operateI18nEntries, Map readFilesAndbulkCreate(String lang, MultipartFile file @SystemServiceLog(description = "bulkCreateOrUpdate 批量创建或修改") public Result bulkCreateOrUpdate(List entriesArr, int host) { List entries = new ArrayList<>(); - entriesArr.forEach(entriesItem -> { + entriesArr.forEach(entriesItem -> + { Map langEntries = entriesItem.getEntries(); - langEntries.forEach((key, value) -> { + langEntries.forEach((key, value) -> + { I18nEntry i18nEntry = new I18nEntry(); i18nEntry.setKey(key); i18nEntry.setLang(entriesItem.getLang()); @@ -395,8 +397,8 @@ public Result bulkCreateOrUpdate(List entriesArr, int h i18nEntry.setHostType("app"); i18nEntry.setContent(value.toString()); entries.add(i18nEntry); + }); }); - }); // 超大量数据更新,如上传国际化文件,不返回插入或更新的词条 FileResult result = bulkInsertOrUpdate(entries); return Result.success(result); diff --git a/base/src/main/java/com/tinyengine/it/service/app/impl/PageHistoryServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/app/impl/PageHistoryServiceImpl.java index 99e890f6..62736861 100644 --- a/base/src/main/java/com/tinyengine/it/service/app/impl/PageHistoryServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/app/impl/PageHistoryServiceImpl.java @@ -1,12 +1,13 @@ /** * Copyright (c) 2023 - present TinyEngine Authors. * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd. - *

+ * * Use of this source code is governed by an MIT-style license. - *

+ * * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. + * */ package com.tinyengine.it.service.app.impl; @@ -101,6 +102,7 @@ public Integer updatePageHistoryById(PageHistory pageHistory) { @Override @SystemServiceLog(description = "创建页面历史记录") public Integer createPageHistory(PageHistory pageHistory) { + pageHistory.setIsPublished(true); return pageHistoryMapper.createPageHistory(pageHistory); } 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 19b62506..09095570 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 @@ -1,13 +1,12 @@ /** * Copyright (c) 2023 - present TinyEngine Authors. * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd. - * + *

* Use of this source code is governed by an MIT-style license. - * + *

* THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. - * */ package com.tinyengine.it.service.app.impl; @@ -15,6 +14,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; 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.exception.ServiceException; @@ -126,6 +126,9 @@ public class PageServiceImpl implements PageService { @Autowired private PageHistoryService pageHistoryService; + @Autowired + private LoginUserContext loginUserContext; + /** * 通过appId查询page所有数据实现方法 * @@ -217,8 +220,8 @@ public Result createPage(Page page) { if (!page.getGroup().isEmpty() && Arrays.asList("static", "public").contains(page.getGroup())) { page.setGroup(page.getGroup() + "Pages"); } - String userId = "1"; - page.setOccupierBy(userId); + + page.setOccupierBy(loginUserContext.getLoginUserId()); page.setIsDefault(false); page.setDepth(0); @@ -284,9 +287,8 @@ public Result createFolder(Page page) { page.setGroup("staticPages"); page.setIsDefault(false); page.setIsBody(true); - // needTODO 获取user的ID - String userId = "1"; - page.setOccupierBy(userId); + // 获取user的ID + page.setOccupierBy(loginUserContext.getLoginUserId()); List pageResult = queryPages(page); if (!pageResult.isEmpty()) { return Result.failed(ExceptionEnum.CM003); @@ -531,12 +533,13 @@ public boolean iCanDoIt(User occupier, User user) { /** * 保护默认页面 + * * @param page the pages * @return boolean */ public boolean protectDefaultPage(Page page) { String id = page.getParentId(); - if("0".equals(id)){ + if ("0".equals(id)) { return true; } String parentId = this.getParentPage(id); @@ -558,6 +561,7 @@ public boolean protectDefaultPage(Page page) { /** * 查询父页面 + * * @param parentId the parentId * @return parentId the parentId */ @@ -572,6 +576,7 @@ private String getParentPage(String parentId) { /** * 查询默认子页面 + * * @param parentId the parentId * @return subPageId the subPageId */ diff --git a/base/src/main/java/com/tinyengine/it/service/material/impl/BlockGroupServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/material/impl/BlockGroupServiceImpl.java index d3ef6c45..3f6bb081 100644 --- a/base/src/main/java/com/tinyengine/it/service/material/impl/BlockGroupServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/material/impl/BlockGroupServiceImpl.java @@ -13,6 +13,7 @@ package com.tinyengine.it.service.material.impl; 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.mapper.BlockCarriersRelationMapper; @@ -51,7 +52,8 @@ public class BlockGroupServiceImpl implements BlockGroupService { @Autowired private BlockGroupBlockMapper blockGroupBlockMapper; - private static final String DEFAULT_USER_ID = "1"; + @Autowired + private LoginUserContext loginUserContext; /** * 查询表t_block_group所有数据 @@ -71,7 +73,7 @@ public List findAllBlockGroup() { */ @Override public BlockGroup findBlockGroupById(@Param("id") Integer id) { - BlockGroup blockGroupResult = blockGroupMapper.queryBlockGroupAndBlockById(id, null, DEFAULT_USER_ID); + BlockGroup blockGroupResult = blockGroupMapper.queryBlockGroupAndBlockById(id, null, loginUserContext.getLoginUserId()); // 对查询的结果的区块赋值current_version if (blockGroupResult == null || blockGroupResult.getBlocks().isEmpty()) { return blockGroupResult; @@ -186,8 +188,8 @@ public Result> createBlockGroup(BlockGroup blockGroup) { public List getBlockGroupByIdsOrAppId(List ids, Integer appId, String from) { // 此接收到的两个参数不一定同时存在 List blockGroupsListResult = new ArrayList<>(); - String groupCreatedBy = "1"; // 获取登录用户id - String blockCreatedBy = "1"; + String groupCreatedBy = loginUserContext.getLoginUserId(); // 获取登录用户id + String blockCreatedBy = loginUserContext.getLoginUserId(); blockCreatedBy = (Enums.BlockGroup.BLOCK.getValue()).equals(from) ? blockCreatedBy : null; // from值为block在区块管理处增加createdBy条件 BlockGroup blockGroup = new BlockGroup(); if (ids != null) { 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 8fe27152..d932106e 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 @@ -20,6 +20,7 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; 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; @@ -93,8 +94,8 @@ public class BlockServiceImpl implements BlockService { @Autowired private BlockGroupBlockMapper blockGroupBlockMapper; - private static final int DEFAULT_PLATFORM_ID = 1; - private static final String DEFAULT_USER_ID = "1"; + @Autowired + private LoginUserContext loginUserContext; /** * 查询表t_block所有数据 @@ -122,7 +123,7 @@ public BlockDto queryBlockById(@Param("id") Integer id) { && blockDto.getLastBuildInfo().get("result") instanceof Boolean ? (Boolean) blockDto.getLastBuildInfo().get("result") : Boolean.FALSE; blockDto.setIsPublished(isPublished); - List groups = blockGroupMapper.findBlockGroupByBlockId(blockDto.getId(), DEFAULT_USER_ID); + List groups = blockGroupMapper.findBlockGroupByBlockId(blockDto.getId(), loginUserContext.getLoginUserId()); blockDto.setGroups(groups); return blockDto; } @@ -170,7 +171,7 @@ public Result updateBlockById(BlockParam blockParam, Integer appId) { // 把前端传参赋值给实体 Block blocks = new Block(); BeanUtils.copyProperties(blockParam, blocks); - blocks.setOccupierBy(DEFAULT_USER_ID); + blocks.setOccupierBy(loginUserContext.getLoginUserId()); if (blockParam.getLatestHistoryId() != null) { blocks.setLatestHistoryId(blockParam.getLatestHistoryId().getId()); } @@ -187,7 +188,7 @@ public Result updateBlockById(BlockParam blockParam, Integer appId) { } // 根据区块id获取区块所在分组 - List blockGroups = blockGroupMapper.findBlockGroupByBlockId(blocks.getId(), DEFAULT_USER_ID); + List blockGroups = blockGroupMapper.findBlockGroupByBlockId(blocks.getId(), loginUserContext.getLoginUserId()); // 删除区块与分组关系 if(blockGroups != null && !blockGroups.isEmpty()){ List blockGroupIds = blockGroups.stream().map(BlockGroup::getId).collect(Collectors.toList()); @@ -234,7 +235,7 @@ public Result createBlock(BlockParam blockParam) { BeanUtils.copyProperties(blockParam, blocks); blocks.setIsDefault(false); blocks.setIsOfficial(false); - blocks.setPlatformId(DEFAULT_PLATFORM_ID); // 新建区块给默认值 + blocks.setPlatformId(loginUserContext.getPlatformId()); // 新建区块给默认值 int result = blockMapper.createBlock(blocks); if (result < 1) { @@ -453,7 +454,7 @@ public List getNotInGroupBlocks(NotGroupDto notGroupDto) { } for (BlockDto blockDto : blocksList) { - List blockGroups = blockGroupMapper.findBlockGroupByBlockId(blockDto.getId(), DEFAULT_USER_ID); + List blockGroups = blockGroupMapper.findBlockGroupByBlockId(blockDto.getId(), loginUserContext.getLoginUserId()); blockDto.setGroups(blockGroups); } return blocksList.stream() @@ -641,7 +642,7 @@ public Result> listNew(String appId, String groupId) { List blocksList = new ArrayList<>(); // 如果有 groupId, 只查group下的block,以及自己创建的区块 if (groupIdTemp != 0) { - blocksList = blockMapper.findBlockByBlockGroupId(groupIdTemp, DEFAULT_USER_ID); + blocksList = blockMapper.findBlockByBlockGroupId(groupIdTemp, loginUserContext.getLoginUserId()); return Result.success(blocksList); } // 如果没有 groupId @@ -653,7 +654,7 @@ public Result> listNew(String appId, String groupId) { List appBlocks = blocksList; // 通过createBy查询区块表数据 Block blocks = new Block(); - blocks.setCreatedBy(DEFAULT_USER_ID); + blocks.setCreatedBy(loginUserContext.getLoginUserId()); List personalBlocks = queryBlockByCondition(blocks); List retBlocks = new ArrayList<>(); // 合并 personalBlocks 和 appBlocks 数组 @@ -698,7 +699,7 @@ public int ensureBlockId(BlockDto blockDto) { Block queryBlock = new Block(); queryBlock.setLabel(blockDto.getLabel()); queryBlock.setFramework(blockDto.getFramework()); - queryBlock.setCreatedBy(DEFAULT_USER_ID); + queryBlock.setCreatedBy(loginUserContext.getLoginUserId()); List blockList = blockMapper.queryBlockByCondition(queryBlock); List groups = blockDto.getGroups().stream().map(BlockGroup::getId).collect(Collectors.toList()); ; diff --git a/base/src/test/java/com/tinyengine/it/common/handler/MockUserContext.java b/base/src/test/java/com/tinyengine/it/common/handler/MockUserContext.java new file mode 100644 index 00000000..e39eebcf --- /dev/null +++ b/base/src/test/java/com/tinyengine/it/common/handler/MockUserContext.java @@ -0,0 +1,44 @@ +/** + * Copyright (c) 2023 - present TinyEngine Authors. + * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd. + *

+ * Use of this source code is governed by an MIT-style license. + *

+ * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, + * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR + * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. + */ + +package com.tinyengine.it.common.handler; + +import com.tinyengine.it.common.context.LoginUserContext; + +/** + * Mock user context + */ +public class MockUserContext implements LoginUserContext { + @Override + public String getTenantId() { + return "1"; + } + + @Override + public String getLoginUserId() { + return "1"; + } + + @Override + public String getRenterId() { + return "1"; + } + + @Override + public int getAppId() { + return 1; + } + + @Override + public int getPlatformId() { + return 1; + } +} diff --git a/base/src/test/java/com/tinyengine/it/common/handler/MyMetaObjectHandlerTest.java b/base/src/test/java/com/tinyengine/it/common/handler/MyMetaObjectHandlerTest.java index f4d57936..a713172c 100644 --- a/base/src/test/java/com/tinyengine/it/common/handler/MyMetaObjectHandlerTest.java +++ b/base/src/test/java/com/tinyengine/it/common/handler/MyMetaObjectHandlerTest.java @@ -1,13 +1,12 @@ /** * Copyright (c) 2023 - present TinyEngine Authors. * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd. - * + *

* Use of this source code is governed by an MIT-style license. - * + *

* THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. - * */ package com.tinyengine.it.common.handler; @@ -17,6 +16,8 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import com.tinyengine.it.common.utils.TestUtil; + import org.apache.ibatis.reflection.MetaObject; import org.junit.jupiter.api.Test; import org.mockito.Mockito; @@ -30,17 +31,19 @@ class MyMetaObjectHandlerTest { MyMetaObjectHandler myMetaObjectHandler = new MyMetaObjectHandler(); @Test - void testInsertFill() { + void testInsertFill() throws NoSuchFieldException, IllegalAccessException { MetaObject param = Mockito.mock(MetaObject.class); when(param.hasSetter("tenantId")).thenReturn(true); + TestUtil.setPrivateValue(myMetaObjectHandler, "loginUserContext", new MockUserContext()); myMetaObjectHandler.insertFill(param); - verify(param, times(7)).hasSetter(anyString()); + verify(param, times(6)).hasSetter(anyString()); } @Test - void testUpdateFill() { + void testUpdateFill() throws NoSuchFieldException, IllegalAccessException { MetaObject param = Mockito.mock(MetaObject.class); when(param.hasSetter("lastUpdatedTime")).thenReturn(true); + TestUtil.setPrivateValue(myMetaObjectHandler, "loginUserContext", new MockUserContext()); myMetaObjectHandler.updateFill(param); verify(param, times(1)).hasSetter(anyString()); } diff --git a/base/src/test/java/com/tinyengine/it/service/app/impl/PageServiceImplTest.java b/base/src/test/java/com/tinyengine/it/service/app/impl/PageServiceImplTest.java index 2d98e7ff..bc496654 100644 --- a/base/src/test/java/com/tinyengine/it/service/app/impl/PageServiceImplTest.java +++ b/base/src/test/java/com/tinyengine/it/service/app/impl/PageServiceImplTest.java @@ -21,6 +21,7 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.tinyengine.it.common.base.Result; +import com.tinyengine.it.common.context.LoginUserContext; import com.tinyengine.it.mapper.AppExtensionMapper; import com.tinyengine.it.mapper.AppMapper; import com.tinyengine.it.mapper.BlockHistoryMapper; @@ -89,6 +90,9 @@ class PageServiceImplTest { @InjectMocks private PageServiceImpl pageServiceImpl; + @Mock + private LoginUserContext loginUserContext; + @BeforeEach void setUp() { MockitoAnnotations.openMocks(this); @@ -150,6 +154,7 @@ void testCreatePage() { // not home page when(appMapper.queryAppById(333)).thenReturn(app); when(pageHistoryService.createPageHistory(any(PageHistory.class))).thenReturn(1); + when(loginUserContext.getLoginUserId()).thenReturn("1"); Result result = pageServiceImpl.createPage(param); assertEquals(returnPage, result.getData()); @@ -189,6 +194,7 @@ void testCreateFolder() { } }; when(blockServiceImpl.getBlockAssets(any(Map.class), anyString())).thenReturn(blockAsset); + when(loginUserContext.getLoginUserId()).thenReturn("1"); Result result = pageServiceImpl.createFolder(param); assertEquals(returnPage, result.getData()); diff --git a/base/src/test/java/com/tinyengine/it/service/material/impl/BlockGroupServiceImplTest.java b/base/src/test/java/com/tinyengine/it/service/material/impl/BlockGroupServiceImplTest.java index ccd31939..24059616 100644 --- a/base/src/test/java/com/tinyengine/it/service/material/impl/BlockGroupServiceImplTest.java +++ b/base/src/test/java/com/tinyengine/it/service/material/impl/BlockGroupServiceImplTest.java @@ -1,13 +1,12 @@ /** * Copyright (c) 2023 - present TinyEngine Authors. * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd. - * + *

* Use of this source code is governed by an MIT-style license. - * + *

* THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. - * */ package com.tinyengine.it.service.material.impl; @@ -16,6 +15,7 @@ import static org.mockito.Mockito.when; import com.tinyengine.it.common.base.Result; +import com.tinyengine.it.common.context.LoginUserContext; import com.tinyengine.it.mapper.BlockCarriersRelationMapper; import com.tinyengine.it.mapper.BlockGroupBlockMapper; import com.tinyengine.it.mapper.BlockGroupMapper; @@ -47,6 +47,8 @@ class BlockGroupServiceImplTest { private BlockCarriersRelationMapper blockCarriersRelationMapper; @Mock private BlockGroupBlockMapper blockGroupBlockMapper; + @Mock + private LoginUserContext loginUserContext; @BeforeEach void setUp() { @@ -65,7 +67,8 @@ void testFindAllBlockGroup() { @Test void testFindBlockGroupById() { BlockGroup mockData = new BlockGroup(); - when(blockGroupMapper.queryBlockGroupAndBlockById(any(),any(),any())).thenReturn(mockData); + when(blockGroupMapper.queryBlockGroupAndBlockById(any(), any(), any())).thenReturn(mockData); + when(loginUserContext.getLoginUserId()).thenReturn("1"); BlockGroup result = blockGroupServiceImpl.findBlockGroupById(1); Assertions.assertEquals(mockData, result); @@ -105,6 +108,7 @@ void testUpdateBlockGroupById() { void testCreateBlockGroup() { BlockGroup param = new BlockGroup(); when(blockGroupMapper.createBlockGroup(param)).thenReturn(1); + when(loginUserContext.getLoginUserId()).thenReturn("1"); BlockGroup blockGroupParam = new BlockGroup(); blockGroupParam.setId(1); Result> result = blockGroupServiceImpl.createBlockGroup(blockGroupParam); @@ -119,6 +123,7 @@ void testGetBlockGroupByIdsOrAppId() { List mockData = new ArrayList<>(); when(blockGroupMapper.queryBlockGroupAndBlockById(any(), any(), any())).thenReturn(new BlockGroup()); when(blockGroupMapper.queryBlockGroupByAppId(any(), any(), any())).thenReturn(mockData); + when(loginUserContext.getLoginUserId()).thenReturn("1"); // not empty param List result = blockGroupServiceImpl.getBlockGroupByIdsOrAppId(paramIdList, appId, from); diff --git a/base/src/test/java/com/tinyengine/it/service/material/impl/BlockServiceImplTest.java b/base/src/test/java/com/tinyengine/it/service/material/impl/BlockServiceImplTest.java index f4469344..ec53692c 100644 --- a/base/src/test/java/com/tinyengine/it/service/material/impl/BlockServiceImplTest.java +++ b/base/src/test/java/com/tinyengine/it/service/material/impl/BlockServiceImplTest.java @@ -23,6 +23,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.fasterxml.jackson.core.JsonProcessingException; 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.BlockGroupMapper; import com.tinyengine.it.mapper.BlockMapper; @@ -68,9 +69,13 @@ class BlockServiceImplTest { @Mock private BlockGroupMapper blockGroupMapper; + @Mock + private LoginUserContext loginUserContext; + @BeforeEach void setUp() { MockitoAnnotations.openMocks(this); + when(loginUserContext.getLoginUserId()).thenReturn("1"); } @Test