初始代码

This commit is contained in:
wangmingwei
2026-04-21 16:49:46 +08:00
parent aae9dc4036
commit f0453ff3a3
2396 changed files with 256575 additions and 0 deletions

View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>yunzhupaas-visualdata</artifactId>
<groupId>com.yunzhupaas</groupId>
<version>5.2.0-RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>yunzhupaas-visualdata-controller</artifactId>
<dependencies>
<dependency>
<groupId>com.yunzhupaas</groupId>
<artifactId>yunzhupaas-visualdata-biz</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>

View File

@@ -0,0 +1,127 @@
package com.yunzhupaas.visualdata.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Parameters;
import io.swagger.v3.oas.annotations.tags.Tag;
import com.yunzhupaas.base.ActionResult;
import com.yunzhupaas.base.controller.SuperController;
import com.yunzhupaas.constant.MsgCode;
import com.yunzhupaas.util.JsonUtil;
import com.yunzhupaas.visualdata.entity.VisualAssetsEntity;
import com.yunzhupaas.visualdata.model.VisualPageVO;
import com.yunzhupaas.visualdata.model.visual.VisualPaginationModel;
import com.yunzhupaas.visualdata.model.visualassets.*;
import com.yunzhupaas.visualdata.service.VisualAssetsService;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 静态资源
*
* @author 云筑产品开发平台组
* @version V3.5.0
* @copyright 深圳市乐程软件有限公司
* @date 2023年7月7日
*/
@RestController
@Tag(name = "全局变量", description = "assets")
@RequestMapping("/api/blade-visual/assets")
public class VisualAssetsController extends SuperController<VisualAssetsService, VisualAssetsEntity> {
/**
* 分页
*
* @param pagination 分页模型
* @return
*/
@Operation(summary = "分页")
@GetMapping("/list")
public ActionResult<VisualPageVO<VisualAssetsListVO>> list(VisualPaginationModel pagination) {
List<VisualAssetsEntity> data = getBaseService().getList(pagination);
List<VisualAssetsListVO> list = JsonUtil.getJsonToList(data, VisualAssetsListVO.class);
VisualPageVO paginationVO = JsonUtil.getJsonToBean(pagination, VisualPageVO.class);
paginationVO.setRecords(list);
return ActionResult.success(paginationVO);
}
/**
* 详情
*
* @param id 主键
* @return
*/
@Operation(summary = "详情")
@GetMapping("/detail")
@Parameters({
@Parameter(name = "id", description = "主键", required = true),
})
@SaCheckPermission("onlineDev.dataScreen")
public ActionResult<VisualAssetsInfoVO> info(@RequestParam("id")String id) {
VisualAssetsEntity entity = getBaseService().getInfo(id);
VisualAssetsInfoVO vo = JsonUtil.getJsonToBean(entity, VisualAssetsInfoVO.class);
return ActionResult.success(vo);
}
/**
* 新增
*
* @param recordCrForm 数据模型
* @return
*/
@Operation(summary = "新增")
@PostMapping("/save")
@Parameters({
@Parameter(name = "recordCrForm", description = "数据模型",required = true),
})
@SaCheckPermission("onlineDev.dataScreen")
public ActionResult create(@RequestBody VisualAssetsCrForm recordCrForm) {
VisualAssetsEntity entity = JsonUtil.getJsonToBean(recordCrForm, VisualAssetsEntity.class);
getBaseService().create(entity);
return ActionResult.success(MsgCode.SU001.get());
}
/**
* 修改
*
* @param recordUpForm 数据模型
* @return
*/
@Operation(summary = "修改")
@PostMapping("/update")
@Parameters({
@Parameter(name = "recordUpForm", description = "数据模型",required = true),
})
@SaCheckPermission("onlineDev.dataScreen")
public ActionResult update(@RequestBody VisualAssetsUpForm recordUpForm) {
VisualAssetsEntity entity = JsonUtil.getJsonToBean(recordUpForm, VisualAssetsEntity.class);
getBaseService().update(entity.getId(), entity);
return ActionResult.success(MsgCode.SU004.get());
}
/**
* 删除
*
* @param ids 主键
* @return
*/
@Operation(summary = "删除")
@PostMapping("/remove")
@Parameters({
@Parameter(name = "ids", description = "主键", required = true),
})
@SaCheckPermission("onlineDev.dataScreen")
public ActionResult delete(String ids) {
if (getBaseService().delete(ids)) {
return ActionResult.success(MsgCode.SU003.get());
}
return ActionResult.fail(MsgCode.FA003.get());
}
}

View File

@@ -0,0 +1,158 @@
package com.yunzhupaas.visualdata.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Parameters;
import io.swagger.v3.oas.annotations.tags.Tag;
import com.yunzhupaas.base.ActionResult;
import com.yunzhupaas.base.controller.SuperController;
import com.yunzhupaas.constant.MsgCode;
import com.yunzhupaas.util.JsonUtil;
import com.yunzhupaas.visualdata.entity.VisualCategoryEntity;
import com.yunzhupaas.visualdata.model.VisualPageVO;
import com.yunzhupaas.visualdata.model.VisualPagination;
import com.yunzhupaas.visualdata.model.visual.VisualPaginationModel;
import com.yunzhupaas.visualdata.model.visualcategory.VisualCategoryCrForm;
import com.yunzhupaas.visualdata.model.visualcategory.VisualCategoryInfoVO;
import com.yunzhupaas.visualdata.model.visualcategory.VisualCategoryListVO;
import com.yunzhupaas.visualdata.model.visualcategory.VisualCategoryUpForm;
import com.yunzhupaas.visualdata.service.VisualCategoryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import jakarta.validation.Valid;
import java.util.List;
/**
* 大屏分类
*
* @author 云筑产品开发平台组
* @version V3.1.0
* @copyright 深圳市乐程软件有限公司
* @date 2024年6月15日
*/
@RestController
@Tag(name = "大屏分类", description = "category")
@RequestMapping("/api/blade-visual/category")
public class VisualCategoryController extends SuperController<VisualCategoryService, VisualCategoryEntity> {
@Autowired
private VisualCategoryService categoryService;
/**
* 列表
*
* @param pagination 分页模型
* @return
*/
@Operation(summary = "列表")
@GetMapping("/page")
@SaCheckPermission("onlineDev.dataScreen")
public ActionResult<VisualPageVO<VisualCategoryListVO>> page(VisualPaginationModel pagination) {
List<VisualCategoryEntity> data = categoryService.getList(pagination,true);
List<VisualCategoryListVO> list = JsonUtil.getJsonToList(data, VisualCategoryListVO.class);
VisualPageVO paginationVO = JsonUtil.getJsonToBean(pagination, VisualPageVO.class);
paginationVO.setRecords(list);
return ActionResult.success(paginationVO);
}
/**
* 列表
*
* @return
*/
@Operation(summary = "列表")
@GetMapping("/list")
@SaCheckPermission("onlineDev.dataScreen")
public ActionResult<List<VisualCategoryListVO>> list(VisualPaginationModel pagination) {
List<VisualCategoryEntity> data = categoryService.getList(pagination,false);
List<VisualCategoryListVO> list = JsonUtil.getJsonToList(data, VisualCategoryListVO.class);
return ActionResult.success(list);
}
/**
* 详情
*
* @param id 主键
* @return
*/
@Operation(summary = "详情")
@GetMapping("/detail")
@Parameters({
@Parameter(name = "id", description = "主键", required = true),
})
public ActionResult<VisualCategoryInfoVO> info(@RequestParam("id") String id) {
VisualCategoryEntity entity = categoryService.getInfo(id);
VisualCategoryInfoVO vo = JsonUtil.getJsonToBean(entity, VisualCategoryInfoVO.class);
return ActionResult.success(vo);
}
/**
* 新增
*
* @param categoryCrForm 大屏分类模型
* @return
*/
@Operation(summary = "新增")
@PostMapping("/save")
@Parameters({
@Parameter(name = "categoryCrForm", description = "大屏分类模型",required = true),
})
@SaCheckPermission("onlineDev.dataScreen")
public ActionResult create(@RequestBody @Valid VisualCategoryCrForm categoryCrForm) {
VisualCategoryEntity entity = JsonUtil.getJsonToBean(categoryCrForm, VisualCategoryEntity.class);
if (categoryService.isExistByValue(entity.getCategoryvalue(), entity.getId())) {
return ActionResult.fail(MsgCode.EXIST003.get());
}
categoryService.create(entity);
return ActionResult.success(MsgCode.SU001.get());
}
/**
* 修改
*
* @param categoryUpForm 大屏分类模型
* @return
*/
@Operation(summary = "修改")
@PostMapping("/update")
@Parameters({
@Parameter(name = "categoryUpForm", description = "大屏分类模型",required = true),
})
@SaCheckPermission("onlineDev.dataScreen")
public ActionResult update(@RequestBody VisualCategoryUpForm categoryUpForm) {
VisualCategoryEntity entity = JsonUtil.getJsonToBean(categoryUpForm, VisualCategoryEntity.class);
if (categoryService.isExistByValue(entity.getCategoryvalue(), entity.getId())) {
return ActionResult.fail(MsgCode.EXIST003.get());
}
boolean flag = categoryService.update(categoryUpForm.getId(), entity);
if (!flag) {
return ActionResult.fail(MsgCode.FA001.get());
}
return ActionResult.success(MsgCode.SU004.get());
}
/**
* 删除
*
* @param ids 主键
* @return
*/
@Operation(summary = "删除")
@PostMapping("/remove")
@Parameters({
@Parameter(name = "ids", description = "主键", required = true),
})
@SaCheckPermission("onlineDev.dataScreen")
public ActionResult delete(String ids) {
VisualCategoryEntity entity = categoryService.getInfo(ids);
if (entity != null) {
categoryService.delete(entity);
return ActionResult.success(MsgCode.SU003.get());
}
return ActionResult.fail(MsgCode.FA003.get());
}
}

View File

@@ -0,0 +1,132 @@
package com.yunzhupaas.visualdata.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Parameters;
import io.swagger.v3.oas.annotations.tags.Tag;
import com.yunzhupaas.base.ActionResult;
import com.yunzhupaas.base.controller.SuperController;
import com.yunzhupaas.constant.MsgCode;
import com.yunzhupaas.util.JsonUtil;
import com.yunzhupaas.util.StringUtil;
import com.yunzhupaas.visualdata.entity.VisualComponentEntity;
import com.yunzhupaas.visualdata.model.VisualPageVO;
import com.yunzhupaas.visualdata.model.visual.VisualPaginationModel;
import com.yunzhupaas.visualdata.model.visualcomponent.*;
import com.yunzhupaas.visualdata.service.VisualComponentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 大屏组件库
*
* @author 云筑产品开发平台组
* @version V3.5.0
* @copyright 深圳市乐程软件有限公司
* @date 2023年7月7日
*/
@RestController
@Tag(name = "大屏组件库配置", description = "component")
@RequestMapping("/api/blade-visual/component")
public class VisualComponentController extends SuperController<VisualComponentService, VisualComponentEntity> {
@Autowired
private VisualComponentService componentService;
/**
* 分页
*
* @param pagination 分页模型
* @return
*/
@Operation(summary = "分页")
@GetMapping("/list")
public ActionResult<VisualPageVO<VisualComponentListVO>> list(VisualPaginationModel pagination) {
List<VisualComponentEntity> data = componentService.getList(pagination);
List<VisualComponentListVO> list = JsonUtil.getJsonToList(data, VisualComponentListVO.class);
VisualPageVO paginationVO = JsonUtil.getJsonToBean(pagination, VisualPageVO.class);
paginationVO.setRecords(list);
return ActionResult.success(paginationVO);
}
/**
* 详情
*
* @param id 主键
* @return
*/
@Operation(summary = "详情")
@GetMapping("/detail")
@Parameters({
@Parameter(name = "id", description = "主键", required = true),
})
@SaCheckPermission("onlineDev.dataScreen")
public ActionResult<VisualComponentInfoVO> info(@RequestParam("id")String id) {
VisualComponentEntity entity = componentService.getInfo(id);
VisualComponentInfoVO vo = JsonUtil.getJsonToBean(entity, VisualComponentInfoVO.class);
return ActionResult.success(vo);
}
/**
* 新增
*
* @param recordCrForm 数据模型
* @return
*/
@Operation(summary = "新增")
@PostMapping("/save")
@Parameters({
@Parameter(name = "recordCrForm", description = "数据模型",required = true),
})
@SaCheckPermission("onlineDev.dataScreen")
public ActionResult create(@RequestBody VisualComponentCrForm recordCrForm) {
VisualComponentEntity entity = JsonUtil.getJsonToBean(recordCrForm, VisualComponentEntity.class);
componentService.create(entity);
return ActionResult.success(MsgCode.SU001.get());
}
/**
* 修改
*
* @param recordUpForm 数据模型
* @return
*/
@Operation(summary = "修改")
@PostMapping("/update")
@Parameters({
@Parameter(name = "recordUpForm", description = "数据模型",required = true),
})
@SaCheckPermission("onlineDev.dataScreen")
public ActionResult update(@RequestBody VisualComponentUpForm recordUpForm) {
VisualComponentEntity entity = JsonUtil.getJsonToBean(recordUpForm, VisualComponentEntity.class);
componentService.update(entity.getId(), entity);
return ActionResult.success(MsgCode.SU004.get());
}
/**
* 删除
*
* @param ids 主键
* @return
*/
@Operation(summary = "删除")
@PostMapping("/remove")
@Parameters({
@Parameter(name = "ids", description = "主键", required = true),
})
@SaCheckPermission("onlineDev.dataScreen")
public ActionResult delete(String ids) {
VisualComponentEntity entity = componentService.getInfo(ids);
if (entity != null) {
componentService.delete(entity);
return ActionResult.success(MsgCode.SU003.get());
}
return ActionResult.fail(MsgCode.FA003.get());
}
}

View File

@@ -0,0 +1,439 @@
package com.yunzhupaas.visualdata.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.Method;
import cn.xuyanwu.spring.file.storage.FileInfo;
import com.google.common.base.Joiner;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Parameters;
import io.swagger.v3.oas.annotations.tags.Tag;
import com.yunzhupaas.base.ActionResult;
import com.yunzhupaas.base.controller.SuperController;
import com.yunzhupaas.base.vo.DownloadVO;
import com.yunzhupaas.base.vo.ListVO;
import com.yunzhupaas.config.ConfigValueUtil;
import com.yunzhupaas.constant.FileTypeConstant;
import com.yunzhupaas.constant.MsgCode;
import com.yunzhupaas.emnus.ModuleTypeEnum;
import com.yunzhupaas.exception.DataException;
import com.yunzhupaas.model.FileListVO;
import com.yunzhupaas.util.*;
import com.yunzhupaas.util.FileExport;
import com.yunzhupaas.util.FileUploadUtils;
import com.yunzhupaas.visualdata.entity.VisualCategoryEntity;
import com.yunzhupaas.visualdata.entity.VisualConfigEntity;
import com.yunzhupaas.visualdata.entity.VisualEntity;
import com.yunzhupaas.visualdata.enums.VisualImgEnum;
import com.yunzhupaas.visualdata.model.VisualPageVO;
import com.yunzhupaas.visualdata.model.visual.*;
import com.yunzhupaas.visualdata.model.visualcategory.VisualCategoryListVO;
import com.yunzhupaas.visualdata.model.visualconfig.VisualConfigInfoModel;
import com.yunzhupaas.visualdata.model.visualfile.ImageVO;
import com.yunzhupaas.visualdata.service.VisualCategoryService;
import com.yunzhupaas.visualdata.service.VisualConfigService;
import com.yunzhupaas.visualdata.service.VisualService;
import lombok.extern.slf4j.Slf4j;
import okhttp3.Headers;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import jakarta.validation.Valid;
import java.io.IOException;
import java.time.Duration;
import java.util.*;
import java.util.stream.Collectors;
/**
* 大屏基本信息
*
* @author 云筑产品开发平台组
* @version V3.1.0
* @copyright 深圳市乐程软件有限公司
* @date 2024年6月15日
*/
@RestController
@Tag(name = "大屏基本信息", description = "visual")
@RequestMapping("/api/blade-visual/visual")
@Slf4j
public class VisualController extends SuperController<VisualService, VisualEntity> {
@Autowired
private FileExport fileExport;
@Autowired
private VisualService visualService;
@Autowired
private VisualConfigService configService;
@Autowired
private ConfigValueUtil configValueUtil;
@Autowired
private VisualCategoryService categoryService;
/**
* 列表
*
* @param pagination 分页模型
* @return
*/
@Operation(summary = "分页")
@GetMapping("/list")
@SaCheckPermission("onlineDev.dataScreen")
public ActionResult<VisualPageVO<VisualListVO>> list(VisualPaginationModel pagination) {
List<VisualEntity> data = visualService.getList(pagination);
List<VisualListVO> list = JsonUtil.getJsonToList(data, VisualListVO.class);
VisualPageVO paginationVO = JsonUtil.getJsonToBean(pagination, VisualPageVO.class);
paginationVO.setRecords(list);
return ActionResult.success(paginationVO);
}
/**
* 详情
*
* @param id 主键
* @return
*/
@Operation(summary = "详情")
@GetMapping("/detail")
@Parameters({
@Parameter(name = "id", description = "主键", required = true),
})
public ActionResult<VisualInfoVO> info(@RequestParam("id")String id) {
VisualEntity visual = visualService.getInfo(id);
VisualConfigEntity config = configService.getInfo(id);
VisualInfoVO vo = new VisualInfoVO();
vo.setVisual(JsonUtil.getJsonToBean(visual, VisualInfoModel.class));
vo.setConfig(JsonUtil.getJsonToBean(config, VisualConfigInfoModel.class));
return ActionResult.success(vo);
}
/**
* 新增
*
* @param visualCrform 大屏模型
* @return
*/
@Operation(summary = "新增")
@PostMapping("/save")
@Parameters({
@Parameter(name = "visualCrform", description = "大屏模型",required = true),
})
@SaCheckPermission("onlineDev.dataScreen")
public ActionResult create(@RequestBody @Valid VisualCrform visualCrform) {
VisualEntity visual = JsonUtil.getJsonToBean(visualCrform.getVisual(), VisualEntity.class);
visual.setBackgroundUrl(VisusalImgUrl.url + configValueUtil.getBiVisualPath() + "bg/bg1.png");
VisualConfigEntity config = JsonUtil.getJsonToBean(visualCrform.getConfig(), VisualConfigEntity.class);
visualService.create(visual, config);
Map<String, String> data = new HashMap<>(16);
data.put("id", visual.getId());
return ActionResult.success(data);
}
/**
* 修改
*
* @param categoryUpForm 大屏模型
* @return
*/
@Operation(summary = "修改")
@PostMapping("/update")
@Parameters({
@Parameter(name = "categoryUpForm", description = "大屏模型",required = true),
})
@SaCheckPermission("onlineDev.dataScreen")
public ActionResult update(@RequestBody VisualUpform categoryUpForm) {
VisualEntity visual = JsonUtil.getJsonToBean(categoryUpForm.getVisual(), VisualEntity.class);
VisualConfigEntity config = JsonUtil.getJsonToBean(categoryUpForm.getConfig(), VisualConfigEntity.class);
visualService.update(visual.getId(), visual, config);
return ActionResult.success(MsgCode.SU004.get());
}
/**
* 删除
*
* @param ids 主键
* @return
*/
@Operation(summary = "删除")
@PostMapping("/remove")
@Parameters({
@Parameter(name = "ids", description = "主键", required = true),
})
@SaCheckPermission("onlineDev.dataScreen")
public ActionResult delete(@RequestParam("ids")String ids) {
VisualEntity entity = visualService.getInfo(ids);
if (entity != null) {
visualService.delete(entity);
return ActionResult.success(MsgCode.SU003.get());
}
return ActionResult.fail(MsgCode.FA003.get());
}
/**
* 复制
*
* @param id 主键
* @return
*/
@Operation(summary = "复制")
@PostMapping("/copy")
@Parameters({
@Parameter(name = "id", description = "主键", required = true),
})
@SaCheckPermission("onlineDev.dataScreen")
public ActionResult copy(@RequestParam("id")String id) {
VisualEntity entity = visualService.getInfo(id);
VisualConfigEntity config = configService.getInfo(id);
if (entity != null) {
entity.setTitle(entity.getTitle() + "_复制");
visualService.create(entity, config);
return ActionResult.success(MsgCode.SU005.get(), entity.getId());
}
return ActionResult.fail(MsgCode.FA001.get());
}
/**
* 获取类型
*
* @return
*/
@Operation(summary = "获取类型")
@GetMapping("/category")
@SaCheckPermission("onlineDev.dataScreen")
public ActionResult<List<VisualCategoryListVO>> list() {
List<VisualCategoryEntity> data = categoryService.getList();
List<VisualCategoryListVO> list = JsonUtil.getJsonToList(data, VisualCategoryListVO.class);
return ActionResult.success(list);
}
/**
* 上传文件
*
* @param file 文件
* @param type 类型
* @return
*/
@NoDataSourceBind()
@Operation(summary = "上传文件")
@Parameters({
@Parameter(name = "type", description = "类型",required = true),
})
@PostMapping(value = "/put-file/{type}", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public ActionResult<ImageVO> file(MultipartFile file, @PathVariable("type") String type) {
ImageVO vo = new ImageVO();
VisualImgEnum imgEnum = VisualImgEnum.getByMessage(type);
if (imgEnum != null) {
String path = imgEnum.getMessage();
String filePath = configValueUtil.getBiVisualPath() + path + "/";
String name = RandomUtil.uuId() + "." + UpUtil.getFileType(file);
//上传文件
FileInfo fileInfo = FileUploadUtils.uploadFile(file, filePath, name);
vo.setOriginalName(fileInfo.getOriginalFilename());
vo.setLink(VisusalImgUrl.url + fileInfo.getPath() + fileInfo.getFilename());
vo.setName(VisusalImgUrl.url + fileInfo.getPath() + fileInfo.getFilename());
}
return ActionResult.success(vo);
}
/**
* 获取图片列表
*
* @param type 文件夹
* @return
*/
@NoDataSourceBind()
@Operation(summary = "获取图片列表")
@GetMapping("/{type}")
@Parameters({
@Parameter(name = "type", description = "文件夹", required = true),
})
public ActionResult<List<ImageVO>> getFile(@PathVariable("type") String type) {
List<ImageVO> vo = new ArrayList<>();
VisualImgEnum imgEnum = VisualImgEnum.getByMessage(type);
if (imgEnum != null) {
String path = configValueUtil.getBiVisualPath() + imgEnum.getMessage() + "/";
List<FileListVO> fileList = FileUploadUtils.getFileList(path);
fileList.forEach(fileListVO -> {
ImageVO imageVO = new ImageVO();
imageVO.setName(fileListVO.getFileName());
imageVO.setLink(VisusalImgUrl.url + fileListVO.getFileName());
imageVO.setOriginalName(fileListVO.getFileName());
vo.add(imageVO);
});
}
return ActionResult.success(vo);
}
/**
* 大屏下拉框
*/
@Operation(summary = "大屏下拉框")
@GetMapping("/Selector")
@SaCheckPermission("onlineDev.dataScreen")
public ActionResult<ListVO<VisualSelectorVO>> selector() {
List<VisualEntity> visualList = visualService.getList();
List<VisualCategoryEntity> categoryList = categoryService.getList();
List<VisualSelectorVO> listVos = new ArrayList<>();
for (VisualCategoryEntity category : categoryList) {
VisualSelectorVO categoryModel = new VisualSelectorVO();
categoryModel.setId(category.getCategoryvalue());
categoryModel.setFullName(category.getCategorykey());
List<VisualEntity> visualAll = visualList.stream().filter(t -> t.getCategory().equals(Integer.parseInt(category.getCategoryvalue()))).collect(Collectors.toList());
if (visualAll.size() > 0) {
List<VisualSelectorVO> childList = new ArrayList<>();
for (VisualEntity visual : visualAll) {
VisualSelectorVO visualModel = new VisualSelectorVO();
visualModel.setId(visual.getId());
visualModel.setFullName(visual.getTitle());
visualModel.setChildren(null);
visualModel.setHasChildren(false);
childList.add(visualModel);
}
categoryModel.setHasChildren(true);
categoryModel.setChildren(childList);
listVos.add(categoryModel);
}
}
ListVO vo = new ListVO();
vo.setList(listVos);
return ActionResult.success(vo);
}
/**
* 大屏导出
*
* @param id 主键
* @return
*/
@Operation(summary = "大屏导出")
@PostMapping("/{id}/Actions/ExportData")
@Parameters({
@Parameter(name = "id", description = "主键", required = true),
})
@SaCheckPermission("onlineDev.dataScreen")
public ActionResult<DownloadVO> exportData(@PathVariable("id") String id) {
VisualEntity entity = visualService.getInfo(id);
VisualConfigEntity configEntity = configService.getInfo(id);
VisualModel model = new VisualModel();
model.setEntity(entity);
model.setConfigEntity(configEntity);
DownloadVO downloadVO = fileExport.exportFile(model, configValueUtil.getTemporaryFilePath(), entity.getTitle(), ModuleTypeEnum.VISUAL_DATA.getTableName());
return ActionResult.success(downloadVO);
}
/**
* 大屏导入
*
* @param multipartFile 文件
* @return
*/
@Operation(summary = "大屏导入")
@SaCheckPermission("onlineDev.dataScreen")
@PostMapping(value = "/Model/Actions/ImportData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public ActionResult ImportData(MultipartFile multipartFile) throws DataException {
//判断是否为.json结尾
if (FileUtil.existsSuffix(multipartFile, ModuleTypeEnum.VISUAL_DATA.getTableName())) {
return ActionResult.fail(MsgCode.IMP002.get());
}
//获取文件内容
String fileContent = FileUtil.getFileContent(multipartFile);
VisualModel vo = JsonUtil.getJsonToBean(fileContent, VisualModel.class);
visualService.createImport(vo.getEntity(), vo.getConfigEntity());
return ActionResult.success(MsgCode.SU000.get());
}
/**
* 获取API动态数据
*
* @param apiRequest 大屏模型
* @return
*/
@Operation(summary = "获取API动态数据")
@PostMapping(value = "/GetApiData")
@Parameters({
@Parameter(name = "apiRequest", description = "大屏模型",required = true),
})
public String getApiData(@RequestBody @Valid VisualApiRequest apiRequest) throws IOException {
OkHttpClient client = new OkHttpClient.Builder().callTimeout(Duration.ofSeconds(apiRequest.getTimeout())).build();
Headers headers;
Request request;
if (!apiRequest.getHeaders().isEmpty()) {
Headers.Builder builder = new Headers.Builder();
apiRequest.getHeaders().forEach((k, v) -> {
builder.add(k, v);
});
headers = builder.build();
} else {
headers = new Headers.Builder().build();
}
if (apiRequest.getMethod().equalsIgnoreCase("post")) {
request = new Request.Builder().url(apiRequest.getUrl())
.post(okhttp3.RequestBody.create(okhttp3.MediaType.parse("application/json;charset=utf-8"), apiRequest.getParams().isEmpty() ? "" : JsonUtil.getObjectToString(apiRequest.getParams())))
.headers(headers)
.build();
} else {
String params = Joiner.on("&")
.useForNull("")
.withKeyValueSeparator("=")
.join(apiRequest.getParams());
request = new Request.Builder().url(apiRequest.getUrl() + (apiRequest.getUrl().contains("?") ? "&" : "?") + params)
.get()
.headers(headers)
.build();
}
return client.newCall(request).execute().body().string();
}
/**
* 获取API动态数据
*
* @param proxyModel 代理模型
* @return
*/
@Operation(summary = "获取API动态数据")
@PostMapping(value = "/proxy")
@Parameters({
@Parameter(name = "proxyModel", description = "代理模型",required = true),
})
public String getApiData(@RequestBody @Valid VisualProxyModel proxyModel) throws IOException {
Map<String, String> headers;
boolean isForm = false;
if (!proxyModel.getHeaders().isEmpty()) {
headers = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
headers.putAll(proxyModel.getHeaders());
if(headers.containsKey("form")){
//头部指定当前为form表单
isForm = true;
}
} else {
headers = new HashMap<>(1, 1);
}
//Header无自定义TOKEN 取当前TOKEN
if(!headers.containsKey("Authorization")){
String token = UserProvider.getToken();
if(StringUtil.isNotEmpty(token)){
headers.put("Authorization", token);
}
}
HttpRequest httpRequest = HttpRequest.of(proxyModel.getUrl()).method(Method.valueOf(proxyModel.getMethod().toUpperCase())).addHeaders(headers);
if(isForm){
httpRequest.form(proxyModel.getData());
}else if(proxyModel.getData() != null && !proxyModel.getData().isEmpty()){
httpRequest.body(JsonUtil.getObjectToString(proxyModel.getData()));
}else {
httpRequest.form(proxyModel.getParams());
}
try {
return httpRequest.timeout(10000).execute().body();
} catch (Exception e){
log.info("接口请求失败 {} {}", proxyModel.getUrl(), e.getMessage());
throw new DataException(MsgCode.FA037.get());
}
}
}

View File

@@ -0,0 +1,181 @@
package com.yunzhupaas.visualdata.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Parameters;
import io.swagger.v3.oas.annotations.tags.Tag;
import com.yunzhupaas.base.ActionResult;
import com.yunzhupaas.base.controller.SuperController;
import com.yunzhupaas.constant.MsgCode;
import com.yunzhupaas.util.DesUtil;
import com.yunzhupaas.util.JsonUtil;
import com.yunzhupaas.util.StringUtil;
import com.yunzhupaas.visualdata.entity.VisualDbEntity;
import com.yunzhupaas.visualdata.model.VisualPageVO;
import com.yunzhupaas.visualdata.model.VisualPagination;
import com.yunzhupaas.visualdata.model.visual.VisualPaginationModel;
import com.yunzhupaas.visualdata.model.visualdb.*;
import com.yunzhupaas.visualdata.service.VisualDbService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* 大屏数据源配置
*
* @author 云筑产品开发平台组
* @version V3.1.0
* @copyright 深圳市乐程软件有限公司
* @date 2024年6月15日
*/
@RestController
@Tag(name = "大屏数据源配置", description = "db")
@RequestMapping("/api/blade-visual/db")
public class VisualDbController extends SuperController<VisualDbService, VisualDbEntity> {
@Autowired
private VisualDbService dbService;
/**
* 分页
*
* @param pagination 分页模型
* @return
*/
@Operation(summary = "分页")
@GetMapping("/list")
public ActionResult<VisualPageVO<VisualDbListVO>> list(VisualPaginationModel pagination) {
List<VisualDbEntity> data = dbService.getList(pagination);
List<VisualDbListVO> list = JsonUtil.getJsonToList(data, VisualDbListVO.class);
VisualPageVO paginationVO = JsonUtil.getJsonToBean(pagination, VisualPageVO.class);
paginationVO.setRecords(list);
return ActionResult.success(paginationVO);
}
/**
* 详情
*
* @param id 主键
* @return
*/
@Operation(summary = "详情")
@GetMapping("/detail")
@Parameters({
@Parameter(name = "id", description = "主键", required = true),
})
@SaCheckPermission("onlineDev.dataScreen")
public ActionResult<VisualDbInfoVO> info(@RequestParam("id")String id) {
VisualDbEntity entity = dbService.getInfo(id);
VisualDbInfoVO vo = JsonUtil.getJsonToBean(entity, VisualDbInfoVO.class);
return ActionResult.success(vo);
}
/**
* 新增或修改
*
* @param dbUpForm 数据模型
* @return
*/
@Operation(summary = "新增或修改")
@PostMapping("/submit")
@Parameters({
@Parameter(name = "dbUpForm", description = "数据模型",required = true),
})
@SaCheckPermission("onlineDev.dataScreen")
public ActionResult submit(@RequestBody VisualDbUpForm dbUpForm) {
VisualDbEntity entity = JsonUtil.getJsonToBean(dbUpForm, VisualDbEntity.class);
if (StringUtil.isEmpty(entity.getId())) {
dbService.create(entity);
return ActionResult.success(MsgCode.SU001.get());
} else {
dbService.update(entity.getId(), entity);
return ActionResult.success(MsgCode.SU004.get());
}
}
/**
* 删除
*
* @param ids 主键
* @return
*/
@Operation(summary = "删除")
@PostMapping("/remove")
@Parameters({
@Parameter(name = "ids", description = "主键", required = true),
})
@SaCheckPermission("onlineDev.dataScreen")
public ActionResult delete(String ids) {
VisualDbEntity entity = dbService.getInfo(ids);
if (entity != null) {
dbService.delete(entity);
return ActionResult.success(MsgCode.SU003.get());
}
return ActionResult.fail(MsgCode.FA003.get());
}
/**
* 下拉数据源
*
* @return
*/
@Operation(summary = "下拉数据源")
@GetMapping("/db-list")
@SaCheckPermission("onlineDev.dataScreen")
public ActionResult<List<VisualDbSelectVO>> list() {
List<VisualDbEntity> data = dbService.getList();
List<VisualDbSelectVO> list = JsonUtil.getJsonToList(data, VisualDbSelectVO.class);
return ActionResult.success(list);
}
/**
* 数据源测试连接
*
* @param dbCrForm 数据源模型
* @return
*/
@Operation(summary = "数据源测试连接")
@PostMapping("/db-test")
@Parameters({
@Parameter(name = "dbCrForm", description = "数据源模型",required = true),
})
@SaCheckPermission("onlineDev.dataScreen")
public ActionResult test(@RequestBody VisualDbCrForm dbCrForm) {
VisualDbEntity entity = JsonUtil.getJsonToBean(dbCrForm, VisualDbEntity.class);
entity.setPassword(DesUtil.aesOrDecode(entity.getPassword(), false, true));
boolean flag = dbService.dbTest(entity);
if (flag) {
return ActionResult.success(MsgCode.DB301.get());
}
return ActionResult.fail(MsgCode.DB302.get());
}
/**
* 动态执行SQL
*
* @param queryForm 数据模型
* @return
*/
@Operation(summary = "动态执行SQL")
@PostMapping("/dynamic-query")
@Parameters({
@Parameter(name = "queryForm", description = "数据模型",required = true),
})
public ActionResult query(@RequestBody VisualDbQueryForm queryForm) {
VisualDbEntity entity = dbService.getInfo(queryForm.getId());
List<Map<String, Object>> data = new ArrayList<>();
if (entity != null) {
entity.setPassword(DesUtil.aesOrDecode(entity.getPassword(), false, true));
queryForm.setSql(DesUtil.aesOrDecode(queryForm.getSql(), false, true));
data = dbService.query(entity, queryForm.getSql());
}
return ActionResult.success(data);
}
}

View File

@@ -0,0 +1,132 @@
package com.yunzhupaas.visualdata.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Parameters;
import io.swagger.v3.oas.annotations.tags.Tag;
import com.yunzhupaas.base.ActionResult;
import com.yunzhupaas.base.controller.SuperController;
import com.yunzhupaas.constant.MsgCode;
import com.yunzhupaas.util.JsonUtil;
import com.yunzhupaas.visualdata.entity.VisualGlobEntity;
import com.yunzhupaas.visualdata.model.VisualPageVO;
import com.yunzhupaas.visualdata.model.visual.VisualPaginationModel;
import com.yunzhupaas.visualdata.model.visualglob.*;
import com.yunzhupaas.visualdata.service.VisualGlobService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 全局变量
*
* @author 云筑产品开发平台组
* @version V3.5.0
* @copyright 深圳市乐程软件有限公司
* @date 2023年7月7日
*/
@RestController
@Tag(name = "全局变量", description = "glob")
@RequestMapping("/api/blade-visual/visual-global")
public class VisualGlobController extends SuperController<VisualGlobService, VisualGlobEntity> {
@Autowired
private VisualGlobService gloService;
/**
* 分页
*
* @param pagination 分页模型
* @return
*/
@Operation(summary = "分页")
@GetMapping("/list")
public ActionResult<VisualPageVO<VisualGlobListVO>> list(VisualPaginationModel pagination) {
List<VisualGlobEntity> data = gloService.getList(pagination);
List<VisualGlobListVO> list = JsonUtil.getJsonToList(data, VisualGlobListVO.class);
VisualPageVO paginationVO = JsonUtil.getJsonToBean(pagination, VisualPageVO.class);
paginationVO.setRecords(list);
return ActionResult.success(paginationVO);
}
/**
* 详情
*
* @param id 主键
* @return
*/
@Operation(summary = "详情")
@GetMapping("/detail")
@Parameters({
@Parameter(name = "id", description = "主键", required = true),
})
@SaCheckPermission("onlineDev.dataScreen")
public ActionResult<VisualGlobInfoVO> info(@RequestParam("id")String id) {
VisualGlobEntity entity = gloService.getInfo(id);
VisualGlobInfoVO vo = JsonUtil.getJsonToBean(entity, VisualGlobInfoVO.class);
return ActionResult.success(vo);
}
/**
* 新增
*
* @param recordCrForm 数据模型
* @return
*/
@Operation(summary = "新增")
@PostMapping("/save")
@Parameters({
@Parameter(name = "recordCrForm", description = "数据模型",required = true),
})
@SaCheckPermission("onlineDev.dataScreen")
public ActionResult create(@RequestBody VisualGlobCrForm recordCrForm) {
VisualGlobEntity entity = JsonUtil.getJsonToBean(recordCrForm, VisualGlobEntity.class);
gloService.create(entity);
return ActionResult.success(MsgCode.SU001.get());
}
/**
* 修改
*
* @param recordUpForm 数据模型
* @return
*/
@Operation(summary = "修改")
@PostMapping("/update")
@Parameters({
@Parameter(name = "recordUpForm", description = "数据模型",required = true),
})
@SaCheckPermission("onlineDev.dataScreen")
public ActionResult update(@RequestBody VisualGlobUpForm recordUpForm) {
VisualGlobEntity entity = JsonUtil.getJsonToBean(recordUpForm, VisualGlobEntity.class);
gloService.update(entity.getId(), entity);
return ActionResult.success(MsgCode.SU004.get());
}
/**
* 删除
*
* @param ids 主键
* @return
*/
@Operation(summary = "删除")
@PostMapping("/remove")
@Parameters({
@Parameter(name = "ids", description = "主键", required = true),
})
@SaCheckPermission("onlineDev.dataScreen")
public ActionResult delete(String ids) {
VisualGlobEntity entity = gloService.getInfo(ids);
if (entity != null) {
gloService.delete(entity);
return ActionResult.success(MsgCode.SU003.get());
}
return ActionResult.fail(MsgCode.FA003.get());
}
}

View File

@@ -0,0 +1,156 @@
package com.yunzhupaas.visualdata.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Parameters;
import io.swagger.v3.oas.annotations.tags.Tag;
import com.yunzhupaas.base.ActionResult;
import com.yunzhupaas.base.controller.SuperController;
import com.yunzhupaas.constant.MsgCode;
import com.yunzhupaas.util.JsonUtil;
import com.yunzhupaas.visualdata.entity.VisualMapEntity;
import com.yunzhupaas.visualdata.model.visual.VisualPaginationModel;
import com.yunzhupaas.visualdata.model.visualmap.*;
import com.yunzhupaas.visualdata.service.VisualMapService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.Assert;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 大屏地图
*
* @author 云筑产品开发平台组
* @version V3.1.0
* @copyright 深圳市乐程软件有限公司
* @date 2024年6月15日
*/
@RestController
@Tag(name = "大屏地图", description = "map")
@RequestMapping("/api/blade-visual/map")
public class VisualMapController extends SuperController<VisualMapService, VisualMapEntity> {
@Autowired
private VisualMapService mapService;
/**
* 分页
*
* @param pagination 分页模型
* @return
*/
@Operation(summary = "分页")
@GetMapping("/lazy-list")
public ActionResult<List<VisualMapListVO>> list(VisualPaginationModel pagination) {
List<VisualMapEntity> data = mapService.getListWithColnums(pagination, VisualMapEntity::getId, VisualMapEntity::getName
, VisualMapEntity::getCode, VisualMapEntity::getParentCode, VisualMapEntity::getParentId
, VisualMapEntity::getAncestors, VisualMapEntity::getMapLevel);
List<VisualMapListVO> list = JsonUtil.getJsonToList(data, VisualMapListVO.class);
VisualMapEntity parent = getBaseService().getInfo(pagination.getParentId());
list.forEach(m -> {
m.setHasChildren(getBaseService().hasChild(m.getId()));
if(parent != null){
m.setParentName(parent.getName());
}
});
return ActionResult.success(MsgCode.SU005.get(), list);
}
/**
* 详情
*
* @param id 主键
* @return
*/
@Operation(summary = "详情")
@GetMapping("/detail")
public ActionResult<VisualMapInfoVO> info(@RequestParam("id") String id) {
VisualMapEntity entity = mapService.getInfo(id);
VisualMapInfoVO vo = JsonUtil.getJsonToBean(entity, VisualMapInfoVO.class);
return ActionResult.success(vo);
}
/**
* 新增
*
* @param mapCrForm 地图模型
* @return
*/
@Operation(summary = "新增")
@PostMapping("/save")
@Parameters({
@Parameter(name = "mapCrForm", description = "地图模型", required = true),
})
@SaCheckPermission("onlineDev.dataScreen")
public ActionResult create(@RequestBody VisualMapCrForm mapCrForm) {
VisualMapEntity entity = JsonUtil.getJsonToBean(mapCrForm, VisualMapEntity.class);
mapService.create(entity);
return ActionResult.success(MsgCode.SU001.get());
}
/**
* 修改
*
* @param mapUpForm 地图模型
* @return
*/
@Operation(summary = "修改")
@PostMapping("/update")
@Parameters({
@Parameter(name = "mapUpForm", description = "地图模型", required = true),
})
@SaCheckPermission("onlineDev.dataScreen")
public ActionResult update(@RequestBody VisualMapUpForm mapUpForm) {
VisualMapEntity entity = JsonUtil.getJsonToBean(mapUpForm, VisualMapEntity.class);
boolean flag = mapService.update(mapUpForm.getId(), entity);
if (!flag) {
return ActionResult.fail(MsgCode.FA001.get());
}
return ActionResult.success(MsgCode.SU004.get());
}
/**
* 删除
*
* @param ids 主键
* @return
*/
@Operation(summary = "删除")
@PostMapping("/remove")
@Parameters({
@Parameter(name = "ids", description = "主键", required = true),
})
@SaCheckPermission("onlineDev.dataScreen")
public ActionResult delete(@RequestParam("ids") String ids) {
VisualMapEntity entity = mapService.getInfo(ids);
if (entity != null) {
mapService.delete(entity);
return ActionResult.success(MsgCode.SU003.get());
}
return ActionResult.fail(MsgCode.FA003.get());
}
/**
* 数据详情
*
* @param id 主键
* @return
*/
@Operation(summary = "数据详情")
@GetMapping("/data")
@Parameters({
@Parameter(name = "id", description = "主键", required = true),
})
public String dataInfo(@RequestParam("id") String id) {
VisualMapEntity entity = mapService.getInfo(id);
Assert.notNull(entity, MsgCode.FA001::get);
return entity.getData();
}
}

View File

@@ -0,0 +1,136 @@
package com.yunzhupaas.visualdata.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Parameters;
import io.swagger.v3.oas.annotations.tags.Tag;
import com.yunzhupaas.base.ActionResult;
import com.yunzhupaas.base.controller.SuperController;
import com.yunzhupaas.constant.MsgCode;
import com.yunzhupaas.util.JsonUtil;
import com.yunzhupaas.util.StringUtil;
import com.yunzhupaas.visualdata.entity.VisualRecordEntity;
import com.yunzhupaas.visualdata.model.VisualPageVO;
import com.yunzhupaas.visualdata.model.VisualPagination;
import com.yunzhupaas.visualdata.model.visual.VisualPaginationModel;
import com.yunzhupaas.visualdata.model.visualrecord.VisualRecordCrForm;
import com.yunzhupaas.visualdata.model.visualrecord.VisualRecordInfoVO;
import com.yunzhupaas.visualdata.model.visualrecord.VisualRecordListVO;
import com.yunzhupaas.visualdata.model.visualrecord.VisualRecordUpForm;
import com.yunzhupaas.visualdata.service.VisualRecordService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 大屏数据源配置
*
* @author 云筑产品开发平台组
* @version V3.5.0
* @copyright 深圳市乐程软件有限公司
* @date 2023年7月7日
*/
@RestController
@Tag(name = "大屏数据集配置", description = "record")
@RequestMapping("/api/blade-visual/record")
public class VisualRecordController extends SuperController<VisualRecordService, VisualRecordEntity> {
@Autowired
private VisualRecordService recordService;
/**
* 分页
*
* @param pagination 分页模型
* @return
*/
@Operation(summary = "分页")
@GetMapping("/list")
public ActionResult<VisualPageVO<VisualRecordListVO>> list(VisualPaginationModel pagination) {
List<VisualRecordEntity> data = recordService.getList(pagination);
List<VisualRecordListVO> list = JsonUtil.getJsonToList(data, VisualRecordListVO.class);
VisualPageVO paginationVO = JsonUtil.getJsonToBean(pagination, VisualPageVO.class);
paginationVO.setRecords(list);
return ActionResult.success(paginationVO);
}
/**
* 详情
*
* @param id 主键
* @return
*/
@Operation(summary = "详情")
@GetMapping("/detail")
@Parameters({
@Parameter(name = "id", description = "主键", required = true),
})
@SaCheckPermission("onlineDev.dataScreen")
public ActionResult<VisualRecordInfoVO> info(@RequestParam("id")String id) {
VisualRecordEntity entity = recordService.getInfo(id);
VisualRecordInfoVO vo = JsonUtil.getJsonToBean(entity, VisualRecordInfoVO.class);
return ActionResult.success(vo);
}
/**
* 新增
*
* @param recordCrForm 数据模型
* @return
*/
@Operation(summary = "新增")
@PostMapping("/save")
@Parameters({
@Parameter(name = "recordCrForm", description = "数据模型",required = true),
})
@SaCheckPermission("onlineDev.dataScreen")
public ActionResult create(@RequestBody VisualRecordCrForm recordCrForm) {
VisualRecordEntity entity = JsonUtil.getJsonToBean(recordCrForm, VisualRecordEntity.class);
recordService.create(entity);
return ActionResult.success(MsgCode.SU001.get());
}
/**
* 修改
*
* @param recordUpForm 数据模型
* @return
*/
@Operation(summary = "修改")
@PostMapping("/update")
@Parameters({
@Parameter(name = "recordUpForm", description = "数据模型",required = true),
})
@SaCheckPermission("onlineDev.dataScreen")
public ActionResult update(@RequestBody VisualRecordUpForm recordUpForm) {
VisualRecordEntity entity = JsonUtil.getJsonToBean(recordUpForm, VisualRecordEntity.class);
recordService.update(entity.getId(), entity);
return ActionResult.success(MsgCode.SU004.get());
}
/**
* 删除
*
* @param ids 主键
* @return
*/
@Operation(summary = "删除")
@PostMapping("/remove")
@Parameters({
@Parameter(name = "ids", description = "主键", required = true),
})
@SaCheckPermission("onlineDev.dataScreen")
public ActionResult delete(String ids) {
VisualRecordEntity entity = recordService.getInfo(ids);
if (entity != null) {
recordService.delete(entity);
return ActionResult.success(MsgCode.SU003.get());
}
return ActionResult.fail(MsgCode.FA003.get());
}
}

View File

@@ -0,0 +1,74 @@
package com.yunzhupaas.visualdata.controller.aop;
/**
* @author 云筑产品开发平台组
* @version V3.1.0
* @copyright 深圳市乐程软件有限公司http://www.szlecheng.cn
* @date 2024-03-26
*/
import com.yunzhupaas.base.UserInfo;
import com.yunzhupaas.config.ConfigValueUtil;
import com.yunzhupaas.database.util.TenantDataSourceUtil;
import com.yunzhupaas.util.ServletUtil;
import com.yunzhupaas.util.StringUtil;
import com.yunzhupaas.util.UserProvider;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
/**
* @author 云筑产品开发平台组
* @version V3.1.0
* @copyright 深圳市乐程软件有限公司
* @date 2024/3/15 17:12
*/
@Slf4j
@Aspect
@Component
@Order(1)
public class VisualBindAspect {
@Autowired
private ConfigValueUtil configValueUtil;
@Pointcut("within(com.yunzhupaas.visualdata.controller.VisualCategoryController || com.yunzhupaas.visualdata.controller.VisualMapController) && (execution(* com.yunzhupaas.*.controller.VisualCategoryController.list(..)) || execution(* com.yunzhupaas.*.controller.VisualMapController.dataInfo(..)))")
public void bindDataSource() {
}
/**
* NoDataSourceBind 不需要绑定数据库的注解
*
* @param pjp
* @return
* @throws Throwable
*/
@Around("bindDataSource()")
public Object doAroundService(ProceedingJoinPoint pjp) throws Throwable {
if (configValueUtil.isMultiTenancy()) {
String jwtToken = ServletUtil.getRequest().getHeader("Authorization");
if(StringUtil.isEmpty(jwtToken)){
//兼容旧版大屏前端
jwtToken = ServletUtil.getRequest().getParameter("token");
}
UserInfo userInfo = UserProvider.getUser(jwtToken);
if(userInfo.getTenantId() == null){
throw new RuntimeException("租户信息为空: " + jwtToken);
}
//设置租户
TenantDataSourceUtil.switchTenant(userInfo.getTenantId());
}
Object obj = pjp.proceed();
return obj;
}
}

View File

@@ -0,0 +1,36 @@
package com.yunzhupaas.visualdata.utils;
import cn.dev33.satoken.stp.StpUtil;
import com.yunzhupaas.properties.SecurityProperties;
import com.yunzhupaas.util.ServletUtil;
import org.springframework.stereotype.Component;
import java.util.Map;
@Component
public class VisualDataPermissionUtil {
private static SecurityProperties securityProperties;
private static final String[] refererPath = new String[]{"**/DataV/view/{id}", "**/DataV/build/{id}"};
public VisualDataPermissionUtil(SecurityProperties securityProperties) {
VisualDataPermissionUtil.securityProperties = securityProperties;
}
public static void checkByReferer() {
if (securityProperties.isEnablePreAuth()) {
String referer = ServletUtil.getHeader("Referer");
String id = null;
for (String s : refererPath) {
Map<String, String> pathVariables = ServletUtil.getPathVariables(s, referer);
id = pathVariables.get("id");
if (id != null) {
id = id.split("[?]")[0];
break;
}
}
StpUtil.checkPermissionOr("onlineDev.dataScreen", id);
}
}
}