diff --git a/core/core-backend/src/main/java/io/dataease/font/dao/auto/entity/CoreFont.java b/core/core-backend/src/main/java/io/dataease/font/dao/auto/entity/CoreFont.java new file mode 100644 index 0000000000..e8c9f41095 --- /dev/null +++ b/core/core-backend/src/main/java/io/dataease/font/dao/auto/entity/CoreFont.java @@ -0,0 +1,108 @@ +package io.dataease.font.dao.auto.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author fit2cloud + * @since 2024-08-23 + */ +@TableName("core_font") +public class CoreFont implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * ID + */ + private Long id; + + /** + * 字体名称 + */ + private String name; + + /** + * 文件名称 + */ + private String fileName; + + /** + * 文件转换名称 + */ + private String fileTransName; + + /** + * 是否默认 + */ + private Boolean isDefault; + + /** + * 是否内置 + */ + private Boolean isBuiltin; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getFileName() { + return fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } + + public String getFileTransName() { + return fileTransName; + } + + public void setFileTransName(String fileTransName) { + this.fileTransName = fileTransName; + } + + public Boolean getIsDefault() { + return isDefault; + } + + public void setIsDefault(Boolean isDefault) { + this.isDefault = isDefault; + } + + public Boolean getIsBuiltin() { + return isBuiltin; + } + + public void setIsBuiltin(Boolean isBuiltin) { + this.isBuiltin = isBuiltin; + } + + @Override + public String toString() { + return "CoreFont{" + + "id = " + id + + ", name = " + name + + ", fileName = " + fileName + + ", fileTransName = " + fileTransName + + ", isDefault = " + isDefault + + ", isBuiltin = " + isBuiltin + + "}"; + } +} diff --git a/core/core-backend/src/main/java/io/dataease/font/dao/auto/mapper/CoreFontMapper.java b/core/core-backend/src/main/java/io/dataease/font/dao/auto/mapper/CoreFontMapper.java new file mode 100644 index 0000000000..08fc2bc8c9 --- /dev/null +++ b/core/core-backend/src/main/java/io/dataease/font/dao/auto/mapper/CoreFontMapper.java @@ -0,0 +1,18 @@ +package io.dataease.font.dao.auto.mapper; + +import io.dataease.font.dao.auto.entity.CoreFont; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author fit2cloud + * @since 2024-08-23 + */ +@Mapper +public interface CoreFontMapper extends BaseMapper { + +} diff --git a/core/core-backend/src/main/java/io/dataease/font/manage/FontManage.java b/core/core-backend/src/main/java/io/dataease/font/manage/FontManage.java new file mode 100644 index 0000000000..aee86a7744 --- /dev/null +++ b/core/core-backend/src/main/java/io/dataease/font/manage/FontManage.java @@ -0,0 +1,100 @@ +package io.dataease.font.manage; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import io.dataease.api.font.dto.FontDto; +import io.dataease.exception.DEException; +import io.dataease.font.dao.auto.entity.CoreFont; +import io.dataease.font.dao.auto.mapper.CoreFontMapper; +import io.dataease.utils.BeanUtils; +import io.dataease.utils.IDUtils; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Component; +import org.springframework.web.multipart.MultipartFile; + +import java.io.File; +import java.io.FileOutputStream; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +@Component +public class FontManage { + + private static String path = "/opt/dataease2.0/data/font/"; + @Resource + private CoreFontMapper coreFontMapper; + + public List list(FontDto fontDto) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + List coreFonts = coreFontMapper.selectList(queryWrapper); + List fontDtos = new ArrayList<>(); + for (CoreFont coreFont : coreFonts) { + FontDto dto = new FontDto(); + BeanUtils.copyBean(dto, coreFont); + fontDtos.add(dto); + } + + return fontDtos; + } + + public FontDto create(FontDto fontDto) { + fontDto.setId(IDUtils.snowID()); + CoreFont coreFont = new CoreFont(); + BeanUtils.copyBean(coreFont, fontDto); + coreFontMapper.insert(coreFont); + return fontDto; + } + + + public FontDto edit(FontDto fontDto) { + fontDto.setId(IDUtils.snowID()); + CoreFont coreFont = new CoreFont(); + BeanUtils.copyBean(coreFont, fontDto); + coreFontMapper.updateById(coreFont); + return fontDto; + } + + public void delete(Long id) { + coreFontMapper.deleteById(id); + //TODO delete file + } + + public void changeDefault(FontDto fontDto) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("id", fontDto.getId()); + CoreFont record = new CoreFont(); + record.setIsDefault(fontDto.getIsDefault()); + coreFontMapper.update(record, queryWrapper); + } + + public void upload(MultipartFile file, long fontID) { + String filename = file.getOriginalFilename(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("id", fontID); + CoreFont record = new CoreFont(); + record.setFileName(filename); + record.setFileTransName(filename); + coreFontMapper.update(record, queryWrapper); + String fileUuid = UUID.randomUUID().toString(); + saveFile(file, fileUuid); + } + + private static String saveFile(MultipartFile file, String fileNameUUID) throws DEException { + String fileTransName = ""; + try { + String filename = file.getOriginalFilename(); + String suffix = filename.substring(filename.lastIndexOf(".") + 1); + String filePath = path + fileNameUUID + "." + suffix; + File f = new File(filePath); + FileOutputStream fileOutputStream = new FileOutputStream(f); + fileOutputStream.write(file.getBytes()); + fileOutputStream.flush(); + fileOutputStream.close(); + fileTransName = fileNameUUID + "." + suffix; + } catch (Exception e) { + DEException.throwException(e); + } + return fileTransName; + } + +} diff --git a/core/core-backend/src/main/java/io/dataease/font/server/FontServer.java b/core/core-backend/src/main/java/io/dataease/font/server/FontServer.java new file mode 100644 index 0000000000..defa053694 --- /dev/null +++ b/core/core-backend/src/main/java/io/dataease/font/server/FontServer.java @@ -0,0 +1,50 @@ +package io.dataease.font.server; + +import io.dataease.api.font.api.FontApi; +import io.dataease.api.font.dto.FontDto; +import io.dataease.exception.DEException; +import jakarta.annotation.Resource; +import io.dataease.font.manage.FontManage; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import java.util.List; + +@RestController +@RequestMapping("/typeface") +public class FontServer implements FontApi { + + @Resource + private FontManage fontManage; + + @Override + public List list(FontDto fontDto) { + return fontManage.list(fontDto); + } + + @Override + public FontDto create(FontDto fontDto) { + return fontManage.create(fontDto); + } + + @Override + public FontDto edit(FontDto fontDto) { + return fontManage.edit(fontDto); + } + + @Override + public void delete(Long id) { + fontManage.delete(id); + } + + @Override + public void changeDefault(FontDto fontDto) { + fontManage.changeDefault(fontDto); + } + + @Override + public void upload(MultipartFile file, long fontID) throws DEException { + fontManage.upload(file, fontID); + } +} diff --git a/core/core-backend/src/main/java/io/dataease/system/dao/auto/entity/CoreTypeface.java b/core/core-backend/src/main/java/io/dataease/system/dao/auto/entity/CoreTypeface.java new file mode 100644 index 0000000000..20238624a8 --- /dev/null +++ b/core/core-backend/src/main/java/io/dataease/system/dao/auto/entity/CoreTypeface.java @@ -0,0 +1,94 @@ +package io.dataease.system.dao.auto.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author fit2cloud + * @since 2024-08-08 + */ +@TableName("core_typeface") +public class CoreTypeface implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * ID + */ + private Long id; + + /** + * 字体名称 + */ + private String name; + + /** + * 文件名称 + */ + private String fileName; + + /** + * 文件转换名称 + */ + private String fileTransName; + + /** + * 是否默认 + */ + private Boolean isDefault; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getFileName() { + return fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } + + public String getFileTransName() { + return fileTransName; + } + + public void setFileTransName(String fileTransName) { + this.fileTransName = fileTransName; + } + + public Boolean getIsDefault() { + return isDefault; + } + + public void setIsDefault(Boolean isDefault) { + this.isDefault = isDefault; + } + + @Override + public String toString() { + return "CoreTypeface{" + + "id = " + id + + ", name = " + name + + ", fileName = " + fileName + + ", fileTransName = " + fileTransName + + ", isDefault = " + isDefault + + "}"; + } +} diff --git a/core/core-backend/src/main/java/io/dataease/system/dao/auto/mapper/CoreTypefaceMapper.java b/core/core-backend/src/main/java/io/dataease/system/dao/auto/mapper/CoreTypefaceMapper.java new file mode 100644 index 0000000000..fe8189576d --- /dev/null +++ b/core/core-backend/src/main/java/io/dataease/system/dao/auto/mapper/CoreTypefaceMapper.java @@ -0,0 +1,18 @@ +package io.dataease.system.dao.auto.mapper; + +import io.dataease.system.dao.auto.entity.CoreTypeface; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author fit2cloud + * @since 2024-08-08 + */ +@Mapper +public interface CoreTypefaceMapper extends BaseMapper { + +}