diff --git a/DataRoom/README.md b/DataRoom/README.md index de942ff5..e69de29b 100644 --- a/DataRoom/README.md +++ b/DataRoom/README.md @@ -1,42 +0,0 @@ -## 📚简介 - -🔥DataRoom是一款基于SpringBoot、MyBatisPlus、ElementUI、G2Plot、Echarts等技术栈的大屏设计器,具备大屏目录管理、大屏设计、大屏预览能力,支持MySQL、Oracle、PostgreSQL、JSON、HTTP、Groovy等数据集接入,使用简单,完全免费,代码开源。 - -

- GitHub Repo stars - GitHub forks - GitHub license - npm - Maven Central - Company -

-------------------------------------------------------------------------------- - -## 效果图 - -#### 管理页 -logo - -#### 设计器 -logo - -## 快速开始 - -快速开始 - -## 演示DEMO - - http://gcpaas.gccloud.com/bigScreen - -## 联系我们 -Email - -QQ群 - -

- logo -

- -## License - -Apache License 2.0 diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/config/bean/FileConfig.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/config/bean/FileConfig.java index 8da947f1..6e660bd6 100644 --- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/config/bean/FileConfig.java +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/config/bean/FileConfig.java @@ -18,6 +18,8 @@ public class FileConfig { * 文件地址前缀 */ private String urlPrefix; + + private String img; /** * 允许的上传文件后缀类型 */ diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/biz/component/dao/DataRoomBizUserDao.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/biz/component/dao/DataRoomBizUserDao.java new file mode 100644 index 00000000..88c6fda0 --- /dev/null +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/biz/component/dao/DataRoomBizUserDao.java @@ -0,0 +1,15 @@ +package com.gccloud.dataroom.core.module.biz.component.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gccloud.dataroom.core.module.biz.component.entity.BizComponentEntity; +import com.gccloud.dataroom.core.module.biz.component.entity.BizComponentUser; +import org.apache.ibatis.annotations.Mapper; + +/** + * @author hongyang + * @version 1.0 + * @date 2023/6/5 11:39 + */ +@Mapper +public interface DataRoomBizUserDao extends BaseMapper { +} diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/biz/component/entity/BizComponentUser.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/biz/component/entity/BizComponentUser.java new file mode 100644 index 00000000..5306f83d --- /dev/null +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/biz/component/entity/BizComponentUser.java @@ -0,0 +1,45 @@ +package com.gccloud.dataroom.core.module.biz.component.entity; + +import com.baomidou.mybatisplus.annotation.FieldStrategy; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.gccloud.common.entity.SuperEntity; +import com.gccloud.dataroom.core.constant.PageDesignConstant; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * @author 17803 + * @date 2024-08-23 11:13 + */ +@Data +@TableName(value = "big_screen_page_permission") +@ApiModel +public class BizComponentUser extends SuperEntity implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(notes = "业务组件中文名称") + private String userId; + + @ApiModelProperty(notes = "业务组件编码,页面唯一标识符") + @TableField(updateStrategy = FieldStrategy.NEVER) + private String code; + + @ApiModelProperty(notes = "父节点编码/所属分组编码") + private String parentCode; + + @ApiModelProperty(notes = "排序") + private Integer orderNum; + + /** + * 参考:{@link PageDesignConstant.Type} + */ + @ApiModelProperty(notes = "页面类型") + private String type; + + +} diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/biz/component/service/impl/BizComponentServiceImpl.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/biz/component/service/impl/BizComponentServiceImpl.java index 4fd0b0e7..20e79035 100644 --- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/biz/component/service/impl/BizComponentServiceImpl.java +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/biz/component/service/impl/BizComponentServiceImpl.java @@ -48,7 +48,7 @@ public class BizComponentServiceImpl extends ServiceImpl page = this.page(searchDTO, queryWrapper); List list = page.getList(); - String urlPrefix = bigScreenConfig.getFile().getUrlPrefix(); + String urlPrefix = bigScreenConfig.getFile().getBasePath(); if (!urlPrefix.endsWith("/")) { urlPrefix += "/"; } @@ -67,7 +67,7 @@ public class BizComponentServiceImpl extends ServiceImpl list = this.list(queryWrapper); - String urlPrefix = bigScreenConfig.getFile().getUrlPrefix(); + String urlPrefix = bigScreenConfig.getFile().getBasePath(); if (!urlPrefix.endsWith("/")) { urlPrefix += "/"; } @@ -92,7 +92,7 @@ public class BizComponentServiceImpl extends ServiceImpl getUserDataRoomCodeList() { + // 模拟获取当前用户有权限的大屏code列表,需要根据实际情况自行实现 + return Lists.newArrayList("bigScreen_auPP6DkIIn", "bigScreen_auPxxDkIIn", "bigScreen_auPP6Dkxxn"); + } + + @Override + public boolean verifyDataPermission(HttpServletRequest request, String pageCode) { + return false; + } + + + /** + * 在大屏分页查询时会调用,可在该方法中根据用户标识到关联表中查询出用户有权限的大屏编码列表, + * 然后根据该列表将入参的大屏编码列表过滤,只保留有权限的部分 + */ + + @Override + public List filterByPermission(List allCode, String userId,String type) { + +// LambdaQueryWrapper newQueryWrapper = new LambdaQueryWrapper<>(); +// newQueryWrapper.eq() + + // + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + //用户ID + queryWrapper.eq(BizComponentUser::getUserId,userId); + //单独授权码 + queryWrapper.select(BizComponentUser::getCode); + //页面类型 + queryWrapper.in(BizComponentUser::getType, type); + //根据创建时间排序 + queryWrapper.orderByDesc(BizComponentUser::getCreateDate); + + + + List bizComponentUserList = userDao.selectList(queryWrapper); + List codeList = bizComponentUserList.stream().map(item -> item.getCode()).collect(Collectors.toList()); + + if (CollectionUtils.isEmpty(codeList)) + { + //拷贝三个默认图形 + List arrayList = new ArrayList<>(); + arrayList.add("bigScreen_mrayOVaVLN"); + arrayList.add("bigScreen_1Z7KtlBQjM"); + arrayList.add("bigScreen_31aDDWOXhH"); + + for (String code : arrayList) { + PageEntity bigScreenPage = bigScreenPageService.getByCode(code); + String newCode = bigScreenPageService.copy(bigScreenPage); + BizComponentUser bizComponentUser = new BizComponentUser(); + bizComponentUser.setType("bigScreen"); + bizComponentUser.setUserId(userId); + bizComponentUser.setCode(newCode); + userDao.insert(bizComponentUser); + codeList.add(newCode); + } + } + + return codeList; + } +} 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 c46122bc..270af908 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 @@ -29,6 +29,7 @@ import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.io.File; import java.util.List; /** @@ -71,6 +72,7 @@ public class DataRoomPageController { @GetMapping("/page") @ApiOperation(value = "大屏/组件分页列表", position = 10, produces = MediaType.APPLICATION_JSON_VALUE) public MixinsResp> page(DataRoomSearchDTO searchDTO) { + PageVO page = bigScreenPageService.getByCategory(searchDTO); MixinsResp> resp = new MixinsResp>().setData(page); resp.setCode(DataRoomConst.Response.Code.SUCCESS); @@ -149,7 +151,9 @@ public class DataRoomPageController { public R> getBgList() { List staticFileList = Webjars.BIG_SCREEN_BG; List bgList = Lists.newArrayList(); - String urlPrefix = bigScreenConfig.getFile().getUrlPrefix() + "bigScreenBg/"; + + + String urlPrefix = bigScreenConfig.getFile().getImg() + File.separator+ "bigScreenBg/"; for (String fileName : staticFileList) { StaticFileVO fileVO = new StaticFileVO(); fileVO.setUrl(urlPrefix + fileName); diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/dto/DataRoomPageDTO.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/dto/DataRoomPageDTO.java index 5a47715e..5ec6928f 100644 --- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/dto/DataRoomPageDTO.java +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/dto/DataRoomPageDTO.java @@ -27,6 +27,9 @@ public class DataRoomPageDTO extends BasePageDTO { @ApiModelProperty(notes = "主键id") private String id; + @ApiModelProperty(notes = "用户id") + private String userId; + @NotBlank(message = "名称不能为空", groups = {Update.class, Insert.class}) @ApiModelProperty(notes = "大屏名称") private String name; diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/dto/DataRoomSearchDTO.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/dto/DataRoomSearchDTO.java index b1456ee3..f99d0acc 100644 --- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/dto/DataRoomSearchDTO.java +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/dto/DataRoomSearchDTO.java @@ -19,4 +19,6 @@ public class DataRoomSearchDTO extends SearchDTO { * 类型 */ private String type; + + private String userId; } diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/service/impl/DataRoomPageServiceImpl.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/service/impl/DataRoomPageServiceImpl.java index 323557b8..ddac0e63 100644 --- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/service/impl/DataRoomPageServiceImpl.java +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/service/impl/DataRoomPageServiceImpl.java @@ -7,6 +7,8 @@ import com.gccloud.dataroom.core.constant.PageDesignConstant; import com.gccloud.dataroom.core.module.basic.dao.DataRoomPageDao; import com.gccloud.dataroom.core.module.basic.entity.PageEntity; import com.gccloud.dataroom.core.module.basic.entity.PagePreviewEntity; +import com.gccloud.dataroom.core.module.biz.component.dao.DataRoomBizUserDao; +import com.gccloud.dataroom.core.module.biz.component.entity.BizComponentUser; import com.gccloud.dataroom.core.module.chart.bean.Chart; import com.gccloud.dataroom.core.module.chart.bean.Linkage; import com.gccloud.dataroom.core.module.chart.components.datasource.DataSetDataSource; @@ -35,16 +37,15 @@ import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.exception.ExceptionUtils; import org.apache.tomcat.util.http.fileupload.FileItem; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.commons.CommonsMultipartFile; import javax.annotation.Resource; import java.io.*; -import java.util.Base64; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; /** @@ -75,6 +76,9 @@ public class DataRoomPageServiceImpl extends ServiceImpl chartList = bigScreenPageDTO.getChartList(); @@ -111,6 +123,15 @@ public class DataRoomPageServiceImpl extends ServiceImpl getByCategory(DataRoomSearchDTO searchDTO) { +// if (StringUtils.isBlank(searchDTO.getType())) { +// throw new GlobalException("类型不能为空"); +// } +// LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); +// queryWrapper.like(StringUtils.isNotBlank(searchDTO.getSearchKey()), PageEntity::getName, searchDTO.getSearchKey()); +// if (StringUtils.isNotBlank(searchDTO.getParentCode())) { +// queryWrapper.eq(PageEntity::getParentCode, searchDTO.getParentCode()); +// } +// queryWrapper.eq(PageEntity::getType, searchDTO.getType()); +// queryWrapper.select(PageEntity::getCode); +// List idEntityList = this.list(queryWrapper); +// if (idEntityList == null || idEntityList.isEmpty()) { +// PageVO pageVO = new PageVO<>(); +// pageVO.setList(Lists.newArrayList()); +// return pageVO; +// } +// List codeList = idEntityList.stream().map(PageEntity::getCode).collect(Collectors.toList()); +// List filterByPermission = permissionClient.filterByPermission(codeList); +// if (filterByPermission == null || filterByPermission.isEmpty()) { +// PageVO pageVO = new PageVO<>(); +// pageVO.setList(Lists.newArrayList()); +// return pageVO; +// } +// LambdaQueryWrapper reQueryWrapper = new LambdaQueryWrapper<>(); +// if (idEntityList.size() == filterByPermission.size()) { +// // 说明没有过滤掉任何一个, 按照原来的条件查询 +// reQueryWrapper = queryWrapper; +// } else { +// // 说明过滤掉了一些, 按照过滤后的编码查询 +// reQueryWrapper.in(PageEntity::getCode, filterByPermission); +// } +// reQueryWrapper.select(PageEntity::getId, PageEntity::getAppCode, PageEntity::getCode, PageEntity::getName, PageEntity::getParentCode, PageEntity::getOrderNum, PageEntity::getCoverPicture, PageEntity::getUpdateDate); +// // 优先序号升序,其次创建时间降序 +// reQueryWrapper.orderByAsc(PageEntity::getOrderNum); +// reQueryWrapper.orderByDesc(PageEntity::getCreateDate); +// PageVO page = this.page(searchDTO, reQueryWrapper); +// List list = page.getList(); +// if (list == null || list.isEmpty()) { +// return page; +// } +// String urlPrefix = bigScreenConfig.getFile().getBasePath(); +// if (!urlPrefix.endsWith("/")) { +// urlPrefix += "/"; +// } +// for (PageEntity pageEntity : list) { +// String coverPicture = pageEntity.getCoverPicture(); +// if (StringUtils.isBlank(coverPicture)) { +// continue; +// } +// if (coverPicture.startsWith("/")) { +// coverPicture = coverPicture.substring(1); +// } +// pageEntity.setCoverPicture(urlPrefix + PathUtils.normalizePath(coverPicture)); +// } +// return page; +// } + @Override public PageVO getByCategory(DataRoomSearchDTO searchDTO) { if (StringUtils.isBlank(searchDTO.getType())) { throw new GlobalException("类型不能为空"); } + // 使用,分割type + List types = Lists.newArrayList(searchDTO.getType().split(",")); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.like(StringUtils.isNotBlank(searchDTO.getSearchKey()), PageEntity::getName, searchDTO.getSearchKey()); if (StringUtils.isNotBlank(searchDTO.getParentCode())) { queryWrapper.eq(PageEntity::getParentCode, searchDTO.getParentCode()); } - queryWrapper.eq(PageEntity::getType, searchDTO.getType()); + queryWrapper.in(PageEntity::getType, types); + //查询code code和userId关联 queryWrapper.select(PageEntity::getCode); List idEntityList = this.list(queryWrapper); if (idEntityList == null || idEntityList.isEmpty()) { @@ -227,12 +310,15 @@ public class DataRoomPageServiceImpl extends ServiceImpl codeList = idEntityList.stream().map(PageEntity::getCode).collect(Collectors.toList()); - List filterByPermission = permissionClient.filterByPermission(codeList); + List filterByPermission = permissionClient.filterByPermission(codeList,searchDTO.getUserId(),searchDTO.getType()); if (filterByPermission == null || filterByPermission.isEmpty()) { PageVO pageVO = new PageVO<>(); pageVO.setList(Lists.newArrayList()); return pageVO; } + + + LambdaQueryWrapper reQueryWrapper = new LambdaQueryWrapper<>(); if (idEntityList.size() == filterByPermission.size()) { // 说明没有过滤掉任何一个, 按照原来的条件查询 @@ -241,29 +327,13 @@ public class DataRoomPageServiceImpl extends ServiceImpl page = this.page(searchDTO, reQueryWrapper); List list = page.getList(); - if (list == null || list.isEmpty()) { - return page; - } - String urlPrefix = bigScreenConfig.getFile().getUrlPrefix(); - if (!urlPrefix.endsWith("/")) { - urlPrefix += "/"; - } - for (PageEntity pageEntity : list) { - String coverPicture = pageEntity.getCoverPicture(); - if (StringUtils.isBlank(coverPicture)) { - continue; - } - if (coverPicture.startsWith("/")) { - coverPicture = coverPicture.substring(1); - } - pageEntity.setCoverPicture(urlPrefix + PathUtils.normalizePath(coverPicture)); - } return page; } 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 26dbf2c4..fc1e25ef 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 @@ -53,7 +53,7 @@ public class PageTemplateController extends SuperController { PageVO pageVO = BeanConvertUtils.convertPage(page, PageTemplateVO.class, (source, target) -> { // 如果缩略图的不是http开头的,那么就拼接上当前服务后端地址 if (target.getThumbnail() != null && !target.getThumbnail().startsWith("http")) { - target.setThumbnail(bigScreenConfig.getFile().getUrlPrefix() + target.getThumbnail()); + target.setThumbnail(bigScreenConfig.getFile().getBasePath() + target.getThumbnail()); } }); return success(pageVO); @@ -72,7 +72,7 @@ public class PageTemplateController extends SuperController { List voList = BeanConvertUtils.convert(list, PageTemplateVO.class, (source, target) -> { // 如果缩略图的不是http开头的,那么就拼接上当前服务后端地址 if (target.getThumbnail() != null && !target.getThumbnail().startsWith("http")) { - target.setThumbnail(bigScreenConfig.getFile().getUrlPrefix() + target.getThumbnail()); + target.setThumbnail(bigScreenConfig.getFile().getBasePath() + target.getThumbnail()); } }); return success(voList); diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/type/controller/TypeController.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/type/controller/TypeController.java index 5214181c..299badf9 100644 --- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/type/controller/TypeController.java +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/type/controller/TypeController.java @@ -13,6 +13,7 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.http.MediaType; +import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -34,10 +35,15 @@ public class TypeController { private ITypeService typeService; - @GetMapping("/list/{type}") + @GetMapping("/list") @ApiOperation(value = "分类列表", position = 10, produces = MediaType.APPLICATION_JSON_VALUE) - public R> list(@PathVariable("type") String type) { - List entityList = typeService.listByType(type); + public R> list(String type,String userId) { + if (!StringUtils.hasText(userId)) + { + throw new RuntimeException("userId不能空"); + } + + List entityList = typeService.listByType(type,userId); List typeVOList = BeanConvertUtils.convert(entityList, TypeVO.class); return R.success(typeVOList); } diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/type/dto/TypeDTO.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/type/dto/TypeDTO.java index 98e70029..a3287df7 100644 --- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/type/dto/TypeDTO.java +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/type/dto/TypeDTO.java @@ -38,5 +38,7 @@ public class TypeDTO { @ApiModelProperty(notes = "排序") private Integer orderNum; + @ApiModelProperty(notes = "用户ID") + private String userId; } diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/type/service/ITypeService.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/type/service/ITypeService.java index cd9928ae..abc3f51b 100644 --- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/type/service/ITypeService.java +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/type/service/ITypeService.java @@ -38,7 +38,7 @@ public interface ITypeService extends ISuperService { * @param type * @return */ - List listByType(String type); + List listByType(String type,String userId); /** * code查重 diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/type/service/impl/TypeServiceImpl.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/type/service/impl/TypeServiceImpl.java index 85e7075e..9ade5215 100644 --- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/type/service/impl/TypeServiceImpl.java +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/type/service/impl/TypeServiceImpl.java @@ -2,6 +2,8 @@ package com.gccloud.dataroom.core.module.type.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gccloud.dataroom.core.module.biz.component.dao.DataRoomBizUserDao; +import com.gccloud.dataroom.core.module.biz.component.entity.BizComponentUser; import com.gccloud.dataroom.core.module.type.dao.DataRoomTypeDao; import com.gccloud.dataroom.core.module.type.dto.TypeDTO; import com.gccloud.dataroom.core.module.type.entity.TypeEntity; @@ -12,9 +14,11 @@ import com.gccloud.common.utils.BeanConvertUtils; import com.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; +import java.util.stream.Collectors; /** * @author hongyang @@ -25,11 +29,15 @@ import java.util.List; @Service("dataRoomTypeService") public class TypeServiceImpl extends ServiceImpl implements ITypeService { + @Autowired + private DataRoomBizUserDao userDao; + @Override public String add(TypeDTO typeDTO) { TypeEntity entity = BeanConvertUtils.convert(typeDTO, TypeEntity.class); + String code = null; if (StringUtils.isBlank(entity.getCode())) { - String code = CodeGenerateUtils.generate(typeDTO.getType()); + code = CodeGenerateUtils.generate(typeDTO.getType()); while (this.checkCodeRepeat(null, typeDTO.getType(), code)) { code = CodeGenerateUtils.generate(typeDTO.getType()); } @@ -43,6 +51,14 @@ public class TypeServiceImpl extends ServiceImpl im throw new GlobalException("分组名称已存在"); } this.save(entity); + + + BizComponentUser bizComponentUser = new BizComponentUser(); + bizComponentUser.setUserId(typeDTO.getUserId()); + bizComponentUser.setCode(code); + bizComponentUser.setType(typeDTO.getType()); + userDao.insert(bizComponentUser); + return entity.getId(); } @@ -60,16 +76,41 @@ public class TypeServiceImpl extends ServiceImpl im if (StringUtils.isBlank(id)) { return; } + TypeEntity byId = this.getById(id); + this.removeById(id); + //根据ID查询code 和type,然后删除 + + String type = byId.getType(); + String code = byId.getCode(); + + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(BizComponentUser::getType,type); + lambdaQueryWrapper.eq(BizComponentUser::getCode,code); + + userDao.delete(lambdaQueryWrapper); + + } @Override - public List listByType(String type) { + public List listByType(String type,String userId) { if (StringUtils.isBlank(type)) { return Lists.newArrayList(); } + + //获取所有code + LambdaQueryWrapper userLambdaQueryWrapper = new LambdaQueryWrapper<>(); + userLambdaQueryWrapper.eq(BizComponentUser::getUserId,userId); + userLambdaQueryWrapper.eq(BizComponentUser::getType,type); + List bizComponentUserList = userDao.selectList(userLambdaQueryWrapper); + List codeList = bizComponentUserList.stream().map(code -> code.getCode()).collect(Collectors.toList()); + + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(TypeEntity::getType, type); + queryWrapper.in(TypeEntity::getCode,codeList); queryWrapper.orderByAsc(TypeEntity::getOrderNum); queryWrapper.orderByDesc(TypeEntity::getCreateDate); return this.list(queryWrapper); 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 fd75bcc7..28e1e425 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 @@ -1,9 +1,16 @@ package com.gccloud.dataroom.core.permission; +import com.gccloud.dataroom.core.module.basic.entity.PageEntity; +import com.gccloud.dataroom.core.module.biz.component.dao.DataRoomBizUserDao; +import com.gccloud.dataroom.core.module.biz.component.entity.BizComponentUser; +import com.gccloud.dataroom.core.module.manage.service.IDataRoomPageService; +import com.google.common.collect.Lists; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; import java.util.List; /** @@ -36,16 +43,21 @@ public class DataRoomPermissionClient { /** * 根据权限过滤 * @param allCode 全部的大屏code - * @return 当前用户有权限的大屏code + * @return 当限前用户有权的大屏code */ - public List filterByPermission(List allCode) { + public List filterByPermission(List allCode,String userId,String type) { if (permissionService != null) { - return permissionService.filterByPermission(allCode); + return permissionService.filterByPermission(allCode,userId,type); } return allCode; } + private List getUserDataRoomCodeList() { + // 模拟获取当前用户有权限的大屏code列表,需要根据实际情况自行实现 + return Lists.newArrayList("bigScreen_auPP6DkIIn", "bigScreen_auPxxDkIIn", "bigScreen_auPP6Dkxxn"); + } + } 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 c226eb88..bfcd0237 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 @@ -24,8 +24,6 @@ public interface IDataRoomPermissionService { * @param allCode 全部的大屏code * @return 当前用户有权限的大屏code */ - default List filterByPermission(List allCode) { - return allCode; - } + List filterByPermission(List allCode,String userId,String type) ; } diff --git a/DataRoom/dataroom-server/src/main/resources/application.yml b/DataRoom/dataroom-server/src/main/resources/application.yml index 8819574b..ce9877d3 100644 --- a/DataRoom/dataroom-server/src/main/resources/application.yml +++ b/DataRoom/dataroom-server/src/main/resources/application.yml @@ -8,6 +8,10 @@ server: spring: profiles: active: dev + servlet: + multipart: + max-file-size: 500MB + max-request-size: 500MB jackson: time-zone: GMT+8 date-format: yyyy-MM-dd HH:mm:ss @@ -29,7 +33,12 @@ spring: web: resources: static-locations: classpath:/static/,classpath:/META-INF/resources/,classpath:/META-INF/resources/webjars/,file:${gc.starter.file.basePath} - + datasource: + type: com.alibaba.druid.pool.DruidDataSource + driverClassName: com.p6spy.engine.spy.P6SpyDriver + url: jdbc:p6spy:mysql://118.31.7.2:3306/dashboard?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true&nullCatalogMeansCurrent=true + username: root + password: sztzjy2017 mybatis-plus: # mybatis plus xml配置文件扫描,多个通过分号隔开 @@ -40,3 +49,10 @@ mybatis-plus: db-config: #主键类型 0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"唯一ID"; id-type: AUTO +gc: + starter: + file: + basePath: /usr/local/tianzeProject/largeScreen/uploadFile/img + img: http://118.31.7.2:96/file + + diff --git a/null/cover/bigScreen_3PRTYchPNc.png b/null/cover/bigScreen_3PRTYchPNc.png new file mode 100644 index 00000000..b92f5e2a Binary files /dev/null and b/null/cover/bigScreen_3PRTYchPNc.png differ diff --git a/null/cover/bigScreen_50m2Ltmc4b.png b/null/cover/bigScreen_50m2Ltmc4b.png new file mode 100644 index 00000000..1c9f1861 Binary files /dev/null and b/null/cover/bigScreen_50m2Ltmc4b.png differ diff --git a/null/cover/bigScreen_F9GUhaJI4B.png b/null/cover/bigScreen_F9GUhaJI4B.png new file mode 100644 index 00000000..6424405b Binary files /dev/null and b/null/cover/bigScreen_F9GUhaJI4B.png differ diff --git a/null/cover/bigScreen_FkqW0EsjzT.png b/null/cover/bigScreen_FkqW0EsjzT.png new file mode 100644 index 00000000..af61f679 Binary files /dev/null and b/null/cover/bigScreen_FkqW0EsjzT.png differ diff --git a/null/cover/bigScreen_J4nJfu9HoA.png b/null/cover/bigScreen_J4nJfu9HoA.png new file mode 100644 index 00000000..73ca95be Binary files /dev/null and b/null/cover/bigScreen_J4nJfu9HoA.png differ diff --git a/null/cover/bigScreen_NWhNLwik8G.png b/null/cover/bigScreen_NWhNLwik8G.png new file mode 100644 index 00000000..b92f5e2a Binary files /dev/null and b/null/cover/bigScreen_NWhNLwik8G.png differ diff --git a/null/cover/bigScreen_W9hQXZdi67.png b/null/cover/bigScreen_W9hQXZdi67.png new file mode 100644 index 00000000..96de20a8 Binary files /dev/null and b/null/cover/bigScreen_W9hQXZdi67.png differ diff --git a/null/cover/bigScreen_bMYGsd3CrQ.png b/null/cover/bigScreen_bMYGsd3CrQ.png new file mode 100644 index 00000000..b92f5e2a Binary files /dev/null and b/null/cover/bigScreen_bMYGsd3CrQ.png differ diff --git a/null/cover/bigScreen_iIshef08PY.png b/null/cover/bigScreen_iIshef08PY.png new file mode 100644 index 00000000..b92f5e2a Binary files /dev/null and b/null/cover/bigScreen_iIshef08PY.png differ diff --git a/null/cover/component_Kc7kysD29H.png b/null/cover/component_Kc7kysD29H.png new file mode 100644 index 00000000..e89f33b5 Binary files /dev/null and b/null/cover/component_Kc7kysD29H.png differ