diff --git a/base/src/main/java/com/tinyengine/it/common/exception/ExceptionEnum.java b/base/src/main/java/com/tinyengine/it/common/exception/ExceptionEnum.java index 3e604e12..1f5c5113 100644 --- a/base/src/main/java/com/tinyengine/it/common/exception/ExceptionEnum.java +++ b/base/src/main/java/com/tinyengine/it/common/exception/ExceptionEnum.java @@ -245,12 +245,12 @@ public enum ExceptionEnum implements IBaseError { /** * Cm 324 exception enum. */ - CM324("CM324","文件名或路径无效"), + CM324("CM324", "文件名或路径无效"), /** * Cm 325 exception enum. */ - CM325("CM325","文件校验失败"); + CM325("CM325", "文件校验失败"); /** * 错误码 diff --git a/base/src/main/java/com/tinyengine/it/common/utils/SecurityFileCheckUtil.java b/base/src/main/java/com/tinyengine/it/common/utils/SecurityFileCheckUtil.java index 2b6e6b49..8687e99a 100644 --- a/base/src/main/java/com/tinyengine/it/common/utils/SecurityFileCheckUtil.java +++ b/base/src/main/java/com/tinyengine/it/common/utils/SecurityFileCheckUtil.java @@ -42,7 +42,7 @@ public class SecurityFileCheckUtil { public static boolean checkPathHasCrossDir(String dirOrFileName) { if (!dirOrFileName.contains("../") && !dirOrFileName.contains("/..")) { if (!dirOrFileName.contains("..\\") && !dirOrFileName.contains("\\..")) { - return dirOrFileName.contains("./") || dirOrFileName.contains(".\\.\\") + return dirOrFileName.contains("./") || dirOrFileName.contains(".\\.\\") || dirOrFileName.contains("%00"); } else { return true; diff --git a/base/src/main/java/com/tinyengine/it/common/utils/Utils.java b/base/src/main/java/com/tinyengine/it/common/utils/Utils.java index bf173001..af23969c 100644 --- a/base/src/main/java/com/tinyengine/it/common/utils/Utils.java +++ b/base/src/main/java/com/tinyengine/it/common/utils/Utils.java @@ -400,6 +400,7 @@ public static Result parseJsonFileStream(MultipartFile file) { log.info("Successfully parsed JSON file: {}", fileName); return Result.success(jsonFile); } + /** * 去除文件BOM字符 * @@ -412,6 +413,7 @@ public static String removeBOM(String input) { } return input; } + /** * 校验文件流合法性 * diff --git a/base/src/main/java/com/tinyengine/it/config/AiChatConfig.java b/base/src/main/java/com/tinyengine/it/config/AiChatConfig.java index b72bc3fd..d69dfc25 100644 --- a/base/src/main/java/com/tinyengine/it/config/AiChatConfig.java +++ b/base/src/main/java/com/tinyengine/it/config/AiChatConfig.java @@ -70,7 +70,7 @@ public static Map getAiChatConfig(String model, String String ernieBotAccessToken = Enums.FoundationModel.ERNIBOT_TURBO.getValue().equals(model) ? token : null; config.put(Enums.FoundationModel.ERNIBOT_TURBO.getValue(), new AiChatConfigData( "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions_pro?access_token=" - + ernieBotAccessToken, createCommonRequestOption(), ernieBotHeaders, "baidu")); + + ernieBotAccessToken, createCommonRequestOption(), ernieBotHeaders, "baidu")); return config; } diff --git a/base/src/main/java/com/tinyengine/it/controller/BlockGroupController.java b/base/src/main/java/com/tinyengine/it/controller/BlockGroupController.java index f090c927..133fa936 100644 --- a/base/src/main/java/com/tinyengine/it/controller/BlockGroupController.java +++ b/base/src/main/java/com/tinyengine/it/controller/BlockGroupController.java @@ -119,7 +119,7 @@ public Result createBlockGroups(@Valid @RequestBody BlockGroup block }, responses = { @ApiResponse(responseCode = "200", description = "返回信息", content = @Content(mediaType = "application/json", schema = @Schema(implementation = BlockGroup.class))), - @ApiResponse(responseCode = "400", description = "请求失败") + @ApiResponse(responseCode = "400", description = "请求失败") }) @SystemControllerLog(description = "修改区块分组") @PostMapping("/block-groups/update/{id}") diff --git a/base/src/main/java/com/tinyengine/it/controller/CanvasController.java b/base/src/main/java/com/tinyengine/it/controller/CanvasController.java index 575cfc7e..a9a3ba40 100644 --- a/base/src/main/java/com/tinyengine/it/controller/CanvasController.java +++ b/base/src/main/java/com/tinyengine/it/controller/CanvasController.java @@ -56,13 +56,13 @@ public class CanvasController { * @return CanvasDto */ @Operation(summary = "区块及页面锁", description = "区块及页面锁", parameters = { - @Parameter(name = "id", description = "页面id"), - @Parameter(name = "state", description = "状态"), - @Parameter(name = "type", description = "区分是页面还是区块") + @Parameter(name = "id", description = "页面id"), + @Parameter(name = "state", description = "状态"), + @Parameter(name = "type", description = "区分是页面还是区块") }, responses = { - @ApiResponse(responseCode = "200", description = "返回信息", - content = @Content(mediaType = "application/json", schema = @Schema())), - @ApiResponse(responseCode = "400", description = "请求失败")} + @ApiResponse(responseCode = "200", description = "返回信息", + content = @Content(mediaType = "application/json", schema = @Schema())), + @ApiResponse(responseCode = "400", description = "请求失败")} ) @SystemControllerLog(description = "区块及页面锁") @GetMapping("apps/canvas/lock") diff --git a/base/src/main/java/com/tinyengine/it/controller/DataSourceController.java b/base/src/main/java/com/tinyengine/it/controller/DataSourceController.java index a538011e..4b6ae3c3 100644 --- a/base/src/main/java/com/tinyengine/it/controller/DataSourceController.java +++ b/base/src/main/java/com/tinyengine/it/controller/DataSourceController.java @@ -36,7 +36,6 @@ import java.util.List; - /** *

* 前端控制器 diff --git a/base/src/main/java/com/tinyengine/it/controller/I18nEntryController.java b/base/src/main/java/com/tinyengine/it/controller/I18nEntryController.java index 9eb5c841..f16a2248 100644 --- a/base/src/main/java/com/tinyengine/it/controller/I18nEntryController.java +++ b/base/src/main/java/com/tinyengine/it/controller/I18nEntryController.java @@ -80,7 +80,7 @@ public class I18nEntryController { }) @SystemControllerLog(description = "通过app获取国际化词条列表") @GetMapping("/i18n/entries") - public Result getI18nEntriesByApp( @RequestParam(value = "host", required = false) Integer host, + public Result getI18nEntriesByApp(@RequestParam(value = "host", required = false) Integer host, @RequestParam(value = "host_type", required = false) String hostType) { I18nEntryListResult i18nEntriesList = i18nEntryService.findI18nEntryByApp(host, hostType); return Result.success(i18nEntriesList); diff --git a/base/src/main/java/com/tinyengine/it/controller/PageHistoryController.java b/base/src/main/java/com/tinyengine/it/controller/PageHistoryController.java index ff1509b0..b156c418 100644 --- a/base/src/main/java/com/tinyengine/it/controller/PageHistoryController.java +++ b/base/src/main/java/com/tinyengine/it/controller/PageHistoryController.java @@ -111,7 +111,7 @@ public Result> getLatestPublishPage(@RequestBody PageQuer @Parameter(name = "id", description = "页面历史主键id") }, responses = { @ApiResponse(responseCode = "200", description = "返回信息", - content = @Content(mediaType = "application/json", schema = @Schema(implementation = PageHistory.class))), + content = @Content(mediaType = "application/json", schema = @Schema(implementation = PageHistory.class))), @ApiResponse(responseCode = "400", description = "请求失败") }) @SystemControllerLog(description = "获取页面历史记录明细") @@ -182,9 +182,8 @@ public Result deletePageHistory(@PathVariable Integer historyId) { @Parameter(name = "app", description = "appId") }, responses = { @ApiResponse(responseCode = "200", description = "返回信息", - content = @Content(mediaType = "application/json", - schema = @Schema(implementation = PageHistory.class))), - @ApiResponse(responseCode = "400", description = "请求失败") + content = @Content(mediaType = "application/json", schema = @Schema(implementation = PageHistory.class))), + @ApiResponse(responseCode = "400", description = "请求失败") }) @SystemControllerLog(description = "根据名称查询页面历史记录") @GetMapping("/pages/histories/find") diff --git a/base/src/main/java/com/tinyengine/it/model/entity/User.java b/base/src/main/java/com/tinyengine/it/model/entity/User.java index 1c664c14..3570a20f 100644 --- a/base/src/main/java/com/tinyengine/it/model/entity/User.java +++ b/base/src/main/java/com/tinyengine/it/model/entity/User.java @@ -19,7 +19,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonProperty; -import com.tinyengine.it.common.base.BaseEntity; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Getter; 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 4b4d5821..3e0a1f9c 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 @@ -90,4 +90,13 @@ public interface PageHistoryService { * @return page history */ IPage findLatestPublishPage(PageQueryVo pageQueryVo); + + /** + * 查询页面历史的最大版本号 + * + * @param app the app + * @param name the name + * @return 页面历史的最大版本号 + */ + String selectMaxVersionOfPageHistory(String name, Integer app); } diff --git a/base/src/main/java/com/tinyengine/it/service/app/impl/CanvasServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/app/impl/CanvasServiceImpl.java index 143e7d72..fb1a8656 100644 --- a/base/src/main/java/com/tinyengine/it/service/app/impl/CanvasServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/app/impl/CanvasServiceImpl.java @@ -47,7 +47,7 @@ public Result lockCanvas(Integer id, String state, String type) { String occupier; // needTODO 先试用mock数据,后续添加登录及权限后从session获取, User user = userMapper.queryUserById(loginUserContext.getLoginUserId()); - if(user == null) { + if (user == null) { user = new User(); user.setId(loginUserContext.getLoginUserId()); } 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 a8dcc883..6f2b87c6 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 @@ -25,6 +25,7 @@ import org.apache.ibatis.annotations.Param; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import java.util.List; @@ -36,6 +37,8 @@ @Service @Slf4j public class PageHistoryServiceImpl implements PageHistoryService { + private static final String DEFAULT_PAGE_HISTORY_VERSION = "0"; + @Autowired private PageHistoryMapper pageHistoryMapper; @@ -123,4 +126,21 @@ public IPage findLatestPublishPage(PageQueryVo PublishedPageVo queryData = pageQueryVo.getData(); return pageHistoryMapper.findLatestPublishPage(pageQueryVo.getPage(), queryData); } + + /** + * 查询页面历史的最大版本号 + * + * @param app the app + * @param name the name + * @return 页面历史的最大版本号 + */ + @Override + public String selectMaxVersionOfPageHistory(String name, Integer app) { + List pageHistories = pageHistoryMapper.queryPageHistoryByName(name, app); + if (CollectionUtils.isEmpty(pageHistories)) { + return DEFAULT_PAGE_HISTORY_VERSION; + } + PageHistory lastPageHistory = pageHistories.get(pageHistories.size() - 1); + return lastPageHistory.getVersion(); + } } 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 39533e97..620fbfc9 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 @@ -53,7 +53,6 @@ import org.apache.ibatis.annotations.Param; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.ApplicationEvent; import org.springframework.context.ApplicationEventPublisher; import org.springframework.stereotype.Service; @@ -285,7 +284,7 @@ public Result createPage(Page page) { pageHistory.setId(null); pageHistory.setMessage(page.getMessage()); pageHistory.setIsPublished(false); - pageHistory.setVersion("draft"); + pageHistory.setVersion("0"); int resultPageHistory = pageHistoryService.createPageHistory(pageHistory); if (resultPageHistory < 1) { return Result.failed(ExceptionEnum.CM001); @@ -379,7 +378,9 @@ public Result updatePage(Page page) { pageHistory.setPage(pageTemp.getId()); pageHistory.setId(null); pageHistory.setIsPublished(false); - pageHistory.setVersion("draft"); + String maxVersion = + pageHistoryService.selectMaxVersionOfPageHistory(pageHistory.getName(), pageHistory.getApp()); + pageHistory.setVersion(maxVersion); int resultPageHistory = pageHistoryService.createPageHistory(pageHistory); if (resultPageHistory < 1) { return Result.failed(ExceptionEnum.CM001); @@ -541,7 +542,7 @@ public Result checkDelete(Integer id) { // needTODO 从缓存中获取的user信息 User user = userService.queryUserById(loginUserContext.getLoginUserId()); // 逻辑不对,如果没有同步用户数据,就用登录用户的 - if(user == null) { + if (user == null) { user = new User(); user.setId(loginUserContext.getLoginUserId()); user.setUsername(loginUserContext.getLoginUserId()); diff --git a/base/src/main/java/com/tinyengine/it/service/material/impl/ComponentServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/material/impl/ComponentServiceImpl.java index 1ec6d595..2b7b7abd 100644 --- a/base/src/main/java/com/tinyengine/it/service/material/impl/ComponentServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/material/impl/ComponentServiceImpl.java @@ -36,7 +36,6 @@ import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.annotations.Param; -import org.checkerframework.checker.units.qual.C; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; @@ -221,7 +220,7 @@ public Result parseBundle(BundleDto bundleDto) { if (components == null || components.isEmpty()) { return Result.failed(ExceptionEnum.CM009); } - List componentList = buildComponentList(bundleDto,components,snippets); + List componentList = buildComponentList(bundleDto, components, snippets); List> packages = bundleDto.getMaterials().getPackages(); BundleResultDto bundleList = new BundleResultDto(); @@ -293,7 +292,7 @@ public Result bulkCreate(List componentList) { List queryComponent = findComponentByCondition(componentParam); // 查询组件库id String packageName = null; - if (component.getNpm() != null &&component.getNpm().get("package") != null) { + if (component.getNpm() != null && component.getNpm().get("package") != null) { packageName = String.valueOf(component.getNpm().get("package")); } if (packageName != null && !packageName.isEmpty()) { @@ -355,7 +354,7 @@ private String toPascalCase(String input) { return result.toString(); } - private List buildComponentList(BundleDto bundleDto, List> components, + private List buildComponentList(BundleDto bundleDto, List> components, List snippets) { List componentList = new ArrayList<>(); for (Map comp : components) { diff --git a/base/src/main/resources/mappers/PageHistoryMapper.xml b/base/src/main/resources/mappers/PageHistoryMapper.xml index d75d5b43..9158dd38 100644 --- a/base/src/main/resources/mappers/PageHistoryMapper.xml +++ b/base/src/main/resources/mappers/PageHistoryMapper.xml @@ -239,6 +239,7 @@ WHERE name like concat('%',#{name},'%') and app_id = #{app} and is_published = 1 + ORDER BY last_updated_time ASC diff --git a/base/src/test/java/com/tinyengine/it/controller/BlockControllerTest.java b/base/src/test/java/com/tinyengine/it/controller/BlockControllerTest.java index 3f078915..2372099d 100644 --- a/base/src/test/java/com/tinyengine/it/controller/BlockControllerTest.java +++ b/base/src/test/java/com/tinyengine/it/controller/BlockControllerTest.java @@ -205,6 +205,6 @@ void testUpdateBlocks() { Result result = blockController.updateBlocks(blockParam, Integer.valueOf(0), Integer.valueOf(1)); Assertions.assertEquals(returnData, result.getData()); verify(blockService).updateBlockById( - argThat(param -> param.getName().equals("Updated Block") && param.getId().equals(0)), eq(1)); + argThat(param -> param.getName().equals("Updated Block") && param.getId().equals(0)), eq(1)); } } diff --git a/base/src/test/java/com/tinyengine/it/controller/BlockGroupControllerTest.java b/base/src/test/java/com/tinyengine/it/controller/BlockGroupControllerTest.java index 8b3ea646..9a595ceb 100644 --- a/base/src/test/java/com/tinyengine/it/controller/BlockGroupControllerTest.java +++ b/base/src/test/java/com/tinyengine/it/controller/BlockGroupControllerTest.java @@ -58,7 +58,7 @@ void testGetAllBlockGroups() { Arrays.asList(mockData)); Result> result = blockGroupController.getAllBlockGroups( - Arrays.asList(Integer.valueOf(0)), Integer.valueOf(0), "block"); + Arrays.asList(Integer.valueOf(0)), Integer.valueOf(0), "block"); Assertions.assertEquals(mockData, result.getData().get(0)); } diff --git a/base/src/test/java/com/tinyengine/it/gateway/ai/AiChatClientTest.java b/base/src/test/java/com/tinyengine/it/gateway/ai/AiChatClientTest.java index d66b34d8..7918bc4e 100644 --- a/base/src/test/java/com/tinyengine/it/gateway/ai/AiChatClientTest.java +++ b/base/src/test/java/com/tinyengine/it/gateway/ai/AiChatClientTest.java @@ -29,7 +29,6 @@ import org.junit.jupiter.api.Test; import org.mockito.Answers; import org.mockito.InjectMocks; -import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.springframework.http.HttpMethod;