feat: 新增大屏预览数据缓存,设计页面的预览不再会直接保存设计

新增大屏预览数据缓存,设计页面的预览不再会直接保存设计
main
hong.yang
parent 1b59a2a042
commit 8a1905c362

@ -0,0 +1,15 @@
package com.gccloud.dataroom.core.module.basic.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.gccloud.dataroom.core.module.basic.entity.PagePreviewEntity;
import org.apache.ibatis.annotations.Mapper;
/**
* @Author gcpaas
* @Date 2022/06/07
* @Version 1.0.0
*/
@Mapper
public interface DataRoomPagePreviewDao extends BaseMapper<PagePreviewEntity> {
}

@ -0,0 +1,41 @@
package com.gccloud.dataroom.core.module.basic.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.gccloud.common.entity.SuperEntity;
import com.gccloud.dataroom.core.module.basic.dto.BasePageDTO;
import com.gccloud.dataroom.core.module.basic.entity.type.BasePageDTOTypeHandler;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
*
*
* @Author qianxing
* @Date 2022/06/07
* @Version 1.0.0
*/
@Data
@TableName(value = "big_screen_page_preview", autoResultMap = true)
@ApiModel
public class PagePreviewEntity extends SuperEntity implements Serializable {
@TableId
@ApiModelProperty(notes = "主键")
private String id;
@ApiModelProperty(notes = "页面编码,页面唯一标识符")
private String code;
@ApiModelProperty(notes = "具体组件配置、JSON格式")
@TableField(typeHandler = BasePageDTOTypeHandler.class)
private BasePageDTO config;
@TableField(fill = FieldFill.INSERT, updateStrategy = FieldStrategy.NEVER)
@ApiModelProperty(notes = "创建时间")
private Date createDate;
}

@ -3,8 +3,10 @@ package com.gccloud.dataroom.core.module.manage.controller;
import com.gccloud.dataroom.core.config.DataRoomConfig;
import com.gccloud.dataroom.core.constant.DataRoomConst;
import com.gccloud.dataroom.core.module.basic.entity.PageEntity;
import com.gccloud.dataroom.core.module.basic.entity.PagePreviewEntity;
import com.gccloud.dataroom.core.module.manage.dto.DataRoomPageDTO;
import com.gccloud.dataroom.core.module.manage.dto.DataRoomSearchDTO;
import com.gccloud.dataroom.core.module.manage.service.IDataRoomPagePreviewService;
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;
@ -44,11 +46,19 @@ public class DataRoomPageController {
private IDataRoomPageService bigScreenPageService;
@Resource
private DataRoomConfig bigScreenConfig;
@Resource
private IDataRoomPagePreviewService previewService;
@ApiPermission(permissions = {Permission.DataRoom.VIEW})
@GetMapping("/info/code/{code}")
@ApiOperation(value = "大屏页/组件详情", position = 10, produces = MediaType.APPLICATION_JSON_VALUE)
public MixinsResp<DataRoomPageDTO> info(@PathVariable("code") String code) {
if (code.startsWith(IDataRoomPagePreviewService.PREVIEW_KEY)) {
PagePreviewEntity preview = previewService.getByCode(code);
MixinsResp<DataRoomPageDTO> r = new MixinsResp<DataRoomPageDTO>().setData((DataRoomPageDTO) preview.getConfig());
r.setCode(DataRoomConst.Response.Code.SUCCESS);
return r;
}
PageEntity bigScreen = bigScreenPageService.getByCode(code);
DataRoomPageDTO bigScreenPageDTO = (DataRoomPageDTO) bigScreen.getConfig();
BeanConvertUtils.convert(bigScreen, bigScreenPageDTO);
@ -84,6 +94,11 @@ public class DataRoomPageController {
@PostMapping("/update")
@ApiOperation(value = "修改大屏/组件", position = 30, produces = MediaType.APPLICATION_JSON_VALUE)
public R<String> update(@RequestBody DataRoomPageDTO bigScreenPageDTO) {
if (bigScreenPageDTO.getIsPreview().equals(Boolean.TRUE)) {
// 保存到预览临时缓存表
String code = previewService.add(bigScreenPageDTO);
return R.success(code);
}
ValidatorUtils.validateEntity(bigScreenPageDTO, Update.class);
if (StringUtils.isBlank(bigScreenPageDTO.getParentCode())) {
bigScreenPageDTO.setParentCode("0");

@ -72,6 +72,9 @@ public class DataRoomPageDTO extends BasePageDTO {
@ApiModelProperty(notes = "所属应用编码")
private String appCode;
@ApiModelProperty(notes = "是否预览")
private Boolean isPreview;
@Data
public static class CacheDataSet {
@ApiModelProperty(notes = "数据集名称")

@ -0,0 +1,31 @@
package com.gccloud.dataroom.core.module.manage.service;
import com.gccloud.common.service.ISuperService;
import com.gccloud.dataroom.core.module.basic.entity.PagePreviewEntity;
import com.gccloud.dataroom.core.module.manage.dto.DataRoomPageDTO;
/**
* @author hongyang
* @version 1.0
* @date 2023/9/13 10:10
*/
public interface IDataRoomPagePreviewService extends ISuperService<PagePreviewEntity> {
String PREVIEW_KEY = "preview";
/**
*
* @param bigScreenPageDTO
* @return
*/
String add(DataRoomPageDTO bigScreenPageDTO);
/**
* code
* @param code
* @return
*/
PagePreviewEntity getByCode(String code);
}

@ -0,0 +1,46 @@
package com.gccloud.dataroom.core.module.manage.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gccloud.common.exception.GlobalException;
import com.gccloud.common.utils.BeanConvertUtils;
import com.gccloud.dataroom.core.module.basic.dao.DataRoomPagePreviewDao;
import com.gccloud.dataroom.core.module.basic.entity.PagePreviewEntity;
import com.gccloud.dataroom.core.module.manage.dto.DataRoomPageDTO;
import com.gccloud.dataroom.core.module.manage.service.IDataRoomPagePreviewService;
import com.gccloud.dataroom.core.utils.CodeGenerateUtils;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author hongyang
* @version 1.0
* @date 2023/9/13 10:11
*/
@Service
public class DataRoomPagePreviewServiceImpl extends ServiceImpl<DataRoomPagePreviewDao, PagePreviewEntity> implements IDataRoomPagePreviewService {
@Override
public String add(DataRoomPageDTO bigScreenPageDTO) {
String code = CodeGenerateUtils.generate(PREVIEW_KEY);
bigScreenPageDTO.setCode(code);
PagePreviewEntity pagePreviewEntity = BeanConvertUtils.convert(bigScreenPageDTO, PagePreviewEntity.class);
this.save(pagePreviewEntity);
return code;
}
@Override
public PagePreviewEntity getByCode(String code) {
LambdaQueryWrapper<PagePreviewEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(PagePreviewEntity::getCode, code);
List<PagePreviewEntity> list = this.list(queryWrapper);
if (list == null || list.isEmpty()) {
throw new GlobalException("大屏预览数据不存在,可能已过期");
}
return list.get(0);
}
}

@ -104,6 +104,7 @@ public class DataRoomMapController {
if (info.getUploadedGeoJson().equals(1)) {
vo.setAvailable(1);
}
vo.setEnableDown(info.getEnableDown());
vo.setGeoJson(info.getGeoJson());
vo.setId(info.getId());
return R.success(vo);

Loading…
Cancel
Save