diff --git a/DataRoom/dataroom-core/pom.xml b/DataRoom/dataroom-core/pom.xml index 79cd414d..46c7cdfb 100644 --- a/DataRoom/dataroom-core/pom.xml +++ b/DataRoom/dataroom-core/pom.xml @@ -18,6 +18,7 @@ + com.gccloud dataset-core @@ -42,103 +43,21 @@ - - org.aspectj - aspectjrt - - - org.springframework.boot - spring-boot-starter-aop - - - - io.swagger - swagger-annotations - ${swagger.annotations.version} - - - com.github.xiaoymin - swagger-bootstrap-ui - ${swagger.bootstrap.version} - - - - org.projectlombok - lombok - ${lombok.version} - - - - org.mybatis - mybatis - ${mybatis.version} - - - com.baomidou - mybatis-plus-core - ${mybatis.plus.version} - - - org.mybatis - mybatis - - - - - org.mybatis - mybatis-spring - ${mybatis-spring.version} - - - com.baomidou - mybatis-plus-boot-starter - ${mybatis.plus.version} - - - com.baomidou - mybatis-plus-extension - ${mybatis.plus.version} - - - - org.apache.commons - commons-lang3 - ${commons-lang3.version} - - - org.apache.commons - commons-collections4 - ${commons-collections4.version} - - - commons-io - commons-io - ${commons-io.version} - - - org.hibernate.validator - hibernate-validator - - - com.google.guava - guava - ${guava.version} - com.fasterxml.jackson.core jackson-core - ${jackson.core.version} + ${jackson.version.core} com.fasterxml.jackson.core jackson-databind - ${jackson.core.version} + ${jackson.version.core} com.fasterxml.jackson.core jackson-annotations - ${jackson.core.version} + ${jackson.version.core} org.json @@ -148,60 +67,7 @@ com.fasterxml.jackson.datatype jackson-datatype-json-org - ${jackson.core.version} - - - - org.codehaus.groovy - groovy-all - pom - ${groovy.version} - - - org.kohsuke - groovy-sandbox - 1.19 - - - - com.github.ben-manes.caffeine - caffeine - - - - com.alibaba - druid-spring-boot-starter - ${druid.version} - - - p6spy - p6spy - ${p6spy.version} - - - mysql - mysql-connector-java - ${mysql.version} - - - com.oracle.database.jdbc - ojdbc8 - ${ojdbc8.version} - - - org.postgresql - postgresql - ${postgresql.version} - - - com.clickhouse - clickhouse-jdbc - ${clickhouse.version} - - - com.squareup.okhttp3 - okhttp - 4.9.1 + ${jackson.version.core} \ No newline at end of file diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/chart/components/datasource/DataSetDataSource.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/chart/components/datasource/DataSetDataSource.java index b7c63375..00636c65 100644 --- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/chart/components/datasource/DataSetDataSource.java +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/chart/components/datasource/DataSetDataSource.java @@ -50,35 +50,6 @@ public class DataSetDataSource extends BaseChartDataSource { @ApiModelProperty(notes = "服务端分页页长") private Integer pageSize; - /** - * 树组件的配置 - * 懒加载时,需要配置treeNodeField、 - */ - - @ApiModelProperty(notes = "是否懒加载树") - private boolean lazy = false; - - @ApiModelProperty(notes = "子级列表字段,非懒加载时使用") - private String childrenField; - - @ApiModelProperty(notes = "树节点显示字段, 用于树组件,树表组件可不填") - private String treeNodeField; - - @ApiModelProperty(notes = "父节点字段所存储的字段") - private String parentIdValueField; - - @ApiModelProperty(notes = "父节点字段参数") - private String parentIdParam; - - @ApiModelProperty(notes = "父节点字段") - private String parentIdField; - - @ApiModelProperty(notes = "是否有子节点字段") - private String hasChildrenField; - - @ApiModelProperty(notes = "默认根节点的父节点ID的值,如果不设置则默认为0") - private String rootNodeParentIdValue; - /** * 散点图特殊配置 */ diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/controller/DataRoomPageController.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/controller/DataRoomPageController.java index 315faa25..e905671a 100644 --- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/controller/DataRoomPageController.java +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/controller/DataRoomPageController.java @@ -8,7 +8,7 @@ import com.gccloud.dataroom.core.module.manage.dto.DataRoomSearchDTO; import com.gccloud.dataroom.core.module.manage.service.IDataRoomPageService; import com.gccloud.dataroom.core.module.manage.vo.StaticFileVO; import com.gccloud.dataroom.core.permission.Permission; -import com.gccloud.dataroom.core.permission.ScreenPermission; +import com.gccloud.common.permission.ApiPermission; import com.gccloud.dataroom.core.utils.Webjars; import com.gccloud.common.exception.GlobalException; import com.gccloud.common.utils.BeanConvertUtils; @@ -45,7 +45,7 @@ public class DataRoomPageController { @Resource private DataRoomConfig bigScreenConfig; - @ScreenPermission(permissions = {Permission.Screen.VIEW}) + @ApiPermission(permissions = {Permission.DataRoom.VIEW}) @GetMapping("/info/code/{code}") @ApiOperation(value = "大屏页/组件详情", position = 10, produces = MediaType.APPLICATION_JSON_VALUE) public MixinsResp info(@PathVariable("code") String code) { @@ -57,7 +57,7 @@ public class DataRoomPageController { return resp; } - @ScreenPermission(permissions = {Permission.Screen.VIEW}) + @ApiPermission(permissions = {Permission.DataRoom.VIEW}) @GetMapping("/page") @ApiOperation(value = "大屏/组件分页列表", position = 10, produces = MediaType.APPLICATION_JSON_VALUE) public MixinsResp> page(DataRoomSearchDTO searchDTO) { @@ -68,7 +68,7 @@ public class DataRoomPageController { } - @ScreenPermission(permissions = {Permission.Screen.EDIT}) + @ApiPermission(permissions = {Permission.DataRoom.ADD}) @PostMapping("/add") @ApiOperation(value = "从空白新增大屏/组件", position = 20, produces = MediaType.APPLICATION_JSON_VALUE) public R add(@RequestBody DataRoomPageDTO bigScreenPageDTO) { @@ -80,7 +80,7 @@ public class DataRoomPageController { return R.success(bigScreenPageDTO.getCode()); } - @ScreenPermission(permissions = {Permission.Screen.EDIT}) + @ApiPermission(permissions = {Permission.DataRoom.UPDATE}) @PostMapping("/update") @ApiOperation(value = "修改大屏/组件", position = 30, produces = MediaType.APPLICATION_JSON_VALUE) public R update(@RequestBody DataRoomPageDTO bigScreenPageDTO) { @@ -92,7 +92,7 @@ public class DataRoomPageController { return R.success(bigScreenPageDTO.getCode()); } - @ScreenPermission(permissions = {Permission.Screen.DELETE}) + @ApiPermission(permissions = {Permission.DataRoom.DELETE}) @PostMapping("/delete/{code}") @ApiOperation(value = "删除大屏/组件", position = 40, produces = MediaType.APPLICATION_JSON_VALUE) public R delete(@PathVariable String code) { @@ -104,7 +104,7 @@ public class DataRoomPageController { return R.success(); } - @ScreenPermission(permissions = {Permission.Screen.EDIT}) + @ApiPermission(permissions = {Permission.DataRoom.ADD}) @PostMapping("/copy/{code}") @ApiOperation(value = "复制大屏/组件", position = 50, produces = MediaType.APPLICATION_JSON_VALUE) public R copy(@PathVariable String code) { @@ -116,7 +116,7 @@ public class DataRoomPageController { return R.success(newCode); } - @ScreenPermission(permissions = {Permission.Screen.EDIT}) + @ApiPermission(permissions = {Permission.DataRoom.ADD}) @PostMapping("/add/template") @ApiOperation(value = "从模板新增大屏页", position = 20, produces = MediaType.APPLICATION_JSON_VALUE) public R addByTemplate(@RequestBody DataRoomPageDTO bigScreenPageDTO) { @@ -127,7 +127,6 @@ public class DataRoomPageController { return R.success(code); } - @ScreenPermission(permissions = {Permission.Screen.TEMPLATE_VIEW}) @PostMapping("/get/template") @ApiOperation(value = "根据模板获取配置", position = 20, produces = MediaType.APPLICATION_JSON_VALUE) public MixinsResp getByTemplate(@RequestBody DataRoomPageDTO bigScreenPageDTO) { @@ -138,7 +137,7 @@ public class DataRoomPageController { } - @ScreenPermission + @ApiPermission @GetMapping("/bg/list") @ApiOperation(value = "背景图片列表", position = 60, produces = MediaType.APPLICATION_JSON_VALUE) public R> getBgList() { @@ -154,7 +153,7 @@ public class DataRoomPageController { return R.success(bgList); } - @ScreenPermission + @ApiPermission @GetMapping("/map/list/{level}") @ApiOperation(value = "地图数据列表", position = 60, produces = MediaType.APPLICATION_JSON_VALUE) public R> getMapJsonList(@PathVariable("level") String level) { diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/template/controller/PageTemplateController.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/template/controller/PageTemplateController.java index 99b3fc05..26dbf2c4 100644 --- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/template/controller/PageTemplateController.java +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/template/controller/PageTemplateController.java @@ -6,8 +6,6 @@ import com.gccloud.dataroom.core.module.template.dto.PageTemplateSearchDTO; import com.gccloud.dataroom.core.module.template.entity.PageTemplateEntity; import com.gccloud.dataroom.core.module.template.service.IPageTemplateService; import com.gccloud.dataroom.core.module.template.vo.PageTemplateVO; -import com.gccloud.dataroom.core.permission.Permission; -import com.gccloud.dataroom.core.permission.ScreenPermission; import com.gccloud.common.controller.SuperController; import com.gccloud.common.utils.BeanConvertUtils; import com.gccloud.common.validator.ValidatorUtils; @@ -47,7 +45,6 @@ public class PageTemplateController extends SuperController { * @param searchDTO * @return */ - @ScreenPermission(permissions = {Permission.Screen.TEMPLATE_VIEW}) @GetMapping("/page") @ApiOperation(value = "分页查询", position = 10, notes = "分页查询列表", produces = MediaType.APPLICATION_JSON_VALUE) @ApiImplicitParams({@ApiImplicitParam(name = "current", value = "页码", paramType = "query", required = true, dataType = "int"), @ApiImplicitParam(name = "size", value = "每页条数", paramType = "query", required = true, dataType = "int"), @ApiImplicitParam(name = "searchKey", value = "查询条件", paramType = "query", dataType = "string")}) @@ -68,7 +65,6 @@ public class PageTemplateController extends SuperController { * @param searchDTO * @return */ - @ScreenPermission(permissions = {Permission.Screen.TEMPLATE_VIEW}) @GetMapping("/list") @ApiOperation(value = "列表查询", position = 10, notes = "查询列表", produces = MediaType.APPLICATION_JSON_VALUE) public R> getList(@ApiParam(name = "查询", value = "传入查询的业务条件", required = true) PageTemplateSearchDTO searchDTO) { @@ -88,7 +84,6 @@ public class PageTemplateController extends SuperController { * @param id * @return */ - @ScreenPermission(permissions = {Permission.Screen.TEMPLATE_VIEW}) @GetMapping("/info/{id}") @ApiOperation(value = "详情", position = 20, notes = "获取详情", produces = MediaType.APPLICATION_JSON_VALUE) public R getById(@ApiParam(name = "id", value = "传入String格式", required = true) @PathVariable("id") String id) { @@ -103,7 +98,6 @@ public class PageTemplateController extends SuperController { * @param pageTemplateDTO * @return */ - @ScreenPermission(permissions = {Permission.Screen.TEMPLATE_EDIT}) @PostMapping("/add") @ApiOperation(value = "新增", position = 30, notes = "新增数据", produces = MediaType.APPLICATION_JSON_VALUE) public R add(@ApiParam(name = "新增对象", value = "传入json格式", required = true) @RequestBody PageTemplateDTO pageTemplateDTO) { @@ -119,7 +113,6 @@ public class PageTemplateController extends SuperController { * @param pageTemplateDTO * @return */ - @ScreenPermission(permissions = {Permission.Screen.TEMPLATE_EDIT}) @PostMapping("/update") @ApiOperation(value = "更新", position = 40, notes = "更新数据", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) public R update(@ApiParam(name = "更新对象", value = "传入json格式", required = true) @RequestBody PageTemplateDTO pageTemplateDTO) { @@ -136,7 +129,6 @@ public class PageTemplateController extends SuperController { * @param idList * @return */ - @ScreenPermission(permissions = {Permission.Screen.TEMPLATE_DELETE}) @PostMapping("/delete") @ApiOperation(value = "删除", position = 50, notes = "删除", produces = MediaType.APPLICATION_JSON_VALUE) public R deleteById(@ApiParam(name = "id列表", value = "传入id列表", required = true) @RequestBody List idList) { diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/permission/DataRoomPermissionClient.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/permission/DataRoomPermissionClient.java index c991e93d..646e6328 100644 --- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/permission/DataRoomPermissionClient.java +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/permission/DataRoomPermissionClient.java @@ -16,15 +16,13 @@ public class DataRoomPermissionClient { @Autowired(required = false) private IDataRoomPermissionService tokenService; - public boolean verifyApiPermission(HttpServletRequest request, String... permissions) { - boolean verify = true; - if (tokenService != null) { - verify = tokenService.verifyApiPermission(request, permissions); - } - return verify; - } - + /** + * 校验大屏页面访问权限 + * @param request 请求 + * @param pageCode 页面编码 + * @return 是否有权限 + */ public boolean verifyDataPermission(HttpServletRequest request, String pageCode) { boolean verify = true; if (tokenService != null) { diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/permission/IDataRoomPermissionService.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/permission/IDataRoomPermissionService.java index f1e1f722..152651e5 100644 --- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/permission/IDataRoomPermissionService.java +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/permission/IDataRoomPermissionService.java @@ -10,15 +10,6 @@ import javax.servlet.http.HttpServletRequest; */ public interface IDataRoomPermissionService { - /** - * 校验接口权限 - * @param request - * @param permission - * @return - */ - boolean verifyApiPermission(HttpServletRequest request, String... permission); - - /** * 校验大屏页面数据访问权限 * @param request diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/permission/LoginRequiredAspect.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/permission/LoginRequiredAspect.java deleted file mode 100644 index f82cce2d..00000000 --- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/permission/LoginRequiredAspect.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.gccloud.dataroom.core.permission; - -import com.gccloud.common.exception.GlobalException; -import lombok.extern.slf4j.Slf4j; -import org.aspectj.lang.JoinPoint; -import org.aspectj.lang.annotation.AfterThrowing; -import org.aspectj.lang.annotation.Aspect; -import org.aspectj.lang.annotation.Before; -import org.aspectj.lang.reflect.MethodSignature; -import org.springframework.stereotype.Component; -import org.springframework.web.context.request.RequestContextHolder; -import org.springframework.web.context.request.ServletRequestAttributes; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; -import java.lang.reflect.Method; -import java.util.Objects; - -/** - * @author hongyang - * @version 1.0 - * @date 2023/5/15 10:51 - */ -@Slf4j -@Aspect -@Component("dataRoomLoginRequiredAspect") -public class LoginRequiredAspect { - @Resource - private DataRoomPermissionClient tokenClient; - - @Before("@annotation(loginRequired) || @within(loginRequired)") - public void doBefore(JoinPoint joinPoint, ScreenPermission loginRequired) { - // 获取request - HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest(); - // 判断方法所属的类是否标记了该注解 - Class targetClass = joinPoint.getTarget().getClass(); - ScreenPermission classAnnotation = targetClass.getAnnotation(ScreenPermission.class); - boolean classRequired = (classAnnotation != null && classAnnotation.required()); - // 判断方法是否标记了该注解 - MethodSignature signature = (MethodSignature) joinPoint.getSignature(); - Method method = signature.getMethod(); - ScreenPermission methodAnnotation = method.getAnnotation(ScreenPermission.class); - boolean methodRequired = (methodAnnotation != null && methodAnnotation.required()); - // 判断是否需要登录权限,就近原则,方法上有优先方法上的,方法上没有则使用类上的 - boolean required = methodRequired || classRequired; - if (required) { - // 获取权限 - String[] permissions = methodAnnotation != null ? methodAnnotation.permissions() : classAnnotation.permissions(); - // 校验token - boolean verify = tokenClient.verifyApiPermission(request, permissions); - if (!verify) { - throw new GlobalException("请求权限不足"); - } - } - } - - @AfterThrowing(pointcut = "@annotation(loginRequired) || @within(loginRequired)") - public void doAfterThrowing(JoinPoint joinPoint, ScreenPermission loginRequired) { - // 记录日志等操作 - } -} diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/permission/Permission.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/permission/Permission.java index 99950e34..1b907295 100644 --- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/permission/Permission.java +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/permission/Permission.java @@ -1,16 +1,18 @@ package com.gccloud.dataroom.core.permission; +import com.gccloud.dataset.constant.DatasetConstant; + /** * @author hongyang * @version 1.0 * @date 2023/5/15 17:08 */ -public interface Permission { +public interface Permission extends DatasetConstant.Permission { /** * 大屏页面的权限 */ - interface Screen { + interface DataRoom { /** * 大屏页面/组件的查询接口权限 @@ -18,85 +20,20 @@ public interface Permission { String VIEW = "screen:view"; /** - * 大屏页面/组件的编辑接口权限 - */ - String EDIT = "screen:edit"; - - /** - * 大屏页面/组件的删除接口权限 - */ - String DELETE = "screen:delete"; - - - /** - * 大屏页面模板的查询接口权限 - */ - String TEMPLATE_VIEW = "screen:template:view"; - - /** - * 大屏页面模板的编辑接口权限 - */ - String TEMPLATE_EDIT = "screen:template:edit"; - - /** - * 大屏页面模板的删除接口权限 - */ - String TEMPLATE_DELETE = "screen:template:delete"; - - - } - - interface DataSource { - - /** - * 数据源的查询接口权限 + * 大屏页面/组件的新增接口权限 */ - String VIEW = "dataSource:view"; + String ADD = "screen:add"; /** - * 数据源的编辑接口权限 - */ - String EDIT = "dataSource:edit"; - - /** - * 数据源的删除接口权限 - */ - String DELETE = "dataSource:delete"; - - /** - * 数据源的测试接口权限 - */ - String TEST = "dataSource:test"; - - } - - interface DataSet { - - /** - * 数据集的分类树查询接口权限 - */ - String CATEGORY = "dataSet:category"; - - /** - * 数据集的查询接口权限 - */ - String VIEW = "dataSet:view"; - - /** - * 数据集的编辑接口权限 + * 大屏页面/组件的编辑接口权限 */ - String EDIT = "dataSet:edit"; + String UPDATE = "screen:update"; /** - * 数据集的删除接口权限 + * 大屏页面/组件的删除接口权限 */ - String DELETE = "dataSet:delete"; + String DELETE = "screen:delete"; - /** - * 数据集的执行(获取数据)接口权限 - */ - String EXECUTE = "dataSet:execute"; } - } diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/permission/ScreenPermission.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/permission/ScreenPermission.java deleted file mode 100644 index e00ac80e..00000000 --- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/permission/ScreenPermission.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.gccloud.dataroom.core.permission; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * @author hongyang - * @version 1.0 - * @date 2023/5/15 10:51 - */ -@Target({ElementType.METHOD, ElementType.TYPE}) -@Retention(RetentionPolicy.RUNTIME) -public @interface ScreenPermission { - - boolean required() default true; - - String[] permissions() default {}; -} diff --git a/DataRoom/pom.xml b/DataRoom/pom.xml index f5a184b6..018b6514 100644 --- a/DataRoom/pom.xml +++ b/DataRoom/pom.xml @@ -50,16 +50,17 @@ portable-1.7.8 5.3.1 20.0 - 2.13.3 + 2.13.3 20220320 1.2.11 3.9.0 - 12.2.0.1 + 12.2.0.1 5.1.49 42.3.3 0.3.2 2.2 - 0.0.1.2023071001.Alpha + 4.9.1 + 0.0.1.2023071101.Alpha diff --git a/data-room-ui/packages/js/store/mutations.js b/data-room-ui/packages/js/store/mutations.js index 30ed4eb8..8c5bc62c 100644 --- a/data-room-ui/packages/js/store/mutations.js +++ b/data-room-ui/packages/js/store/mutations.js @@ -250,6 +250,12 @@ export default { state.pageInfo.chartList = _.cloneDeep(currentStore?.chartList || []) } } + state.pageInfo.chartList = state.pageInfo.chartList.map(chart => { + return { + ...chart, + key: chart.code + new Date().getTime() + } + }) }, clearTimeline (state) { // 最后一个状态