Selaa lähdekoodia

新增超管字体配置

wangliang 3 kuukautta sitten
vanhempi
commit
858ce0c67a

+ 112 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/admin/SetFontDto.java

@@ -0,0 +1,112 @@
+package com.qmth.distributed.print.business.bean.dto.admin;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.teachcloud.common.entity.BasicAttachment;
+import io.swagger.annotations.ApiModelProperty;
+import org.jetbrains.annotations.NotNull;
+
+import java.io.Serializable;
+import java.util.Objects;
+
+/**
+ * @Description: 超管设置字体
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2025/3/4
+ */
+public class SetFontDto implements Serializable, Comparable<SetFontDto> {
+
+    @ApiModelProperty(value = "附件id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long attachmentId;
+
+    @ApiModelProperty(value = "字体名称")
+    private String fontName;
+
+    @ApiModelProperty(value = "字体格式")
+    private String format;
+
+    @ApiModelProperty(value = "是否选择,false:未启用,true:启用")
+    private Boolean choose;
+
+    public SetFontDto() {
+
+    }
+
+    public SetFontDto(String fontName) {
+        this.attachmentId = -1L;
+        this.fontName = fontName;
+        this.format = "null";
+        this.choose = false;
+    }
+
+    public SetFontDto(BasicAttachment basicAttachment, Boolean choose) {
+        this.attachmentId = basicAttachment.getId();
+        this.fontName = basicAttachment.getName();
+        this.format = basicAttachment.getType();
+        this.choose = choose;
+    }
+
+    public Long getAttachmentId() {
+        return attachmentId;
+    }
+
+    public void setAttachmentId(Long attachmentId) {
+        this.attachmentId = attachmentId;
+    }
+
+    public String getFontName() {
+        return fontName;
+    }
+
+    public void setFontName(String fontName) {
+        this.fontName = fontName;
+    }
+
+    public String getFormat() {
+        return format;
+    }
+
+    public void setFormat(String format) {
+        this.format = format;
+    }
+
+    public Boolean getChoose() {
+        return choose;
+    }
+
+    public void setChoose(Boolean choose) {
+        this.choose = choose;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
+        SetFontDto that = (SetFontDto) o;
+        return attachmentId.equals(that.attachmentId) && fontName.equals(that.fontName) && format.equals(that.format);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(attachmentId, fontName, format);
+    }
+
+    @Override
+    public int compareTo(@NotNull SetFontDto o) {
+        if (o.getAttachmentId().longValue() < this.getAttachmentId().longValue()) {
+            return 1;
+        } else if (o.getAttachmentId().longValue() > this.getAttachmentId().longValue()) {
+            return -1;
+        } else {
+            return 0;
+        }
+    }
+}
+

+ 17 - 0
distributed-print/install/mysql/upgrade/3.4.4.sql

@@ -150,4 +150,21 @@ INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence
 UPDATE `sys_privilege` SET `related` = '971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1007,1009,1010,1013,1014,1148,3072,3073,3074,3075' WHERE (`id` = '970');
 
 -- 2025-03-04
+UPDATE sys_config
+SET school_id=NULL, org_id=NULL, config_key='attachment.type', config_name='附件类型', config_value='[.xlsx,.xls,.doc,.docx,.pdf,.jpg,.jpeg,.png,.html,.zip,.mp3,.wav,.dll,.exe,.ftl,.bpmn,.xml,.ttf,.otf,.pfm,.woff,.svg,.eot]', remark=NULL, enable=1, sort=1, create_id=1, create_time=NULL, update_id=NULL, update_time=NULL
+WHERE id=10;
+
 ALTER TABLE `basic_print_config` ADD COLUMN `default_serial_number` INT(2) NULL DEFAULT 0 COMMENT '默认抽取卷型(0-随机,1-卷1,2-卷2)' AFTER `draw_rule`;
+
+INSERT INTO sys_privilege
+(id, name, url, `type`, parent_id, `sequence`, property, related, enable, default_auth, front_display)
+VALUES(1195, '字体查询', '/api/admin/set/font/select', 'URL', 508, 21, 'AUTH', NULL, 1, 0, 1);
+INSERT INTO sys_privilege
+(id, name, url, `type`, parent_id, `sequence`, property, related, enable, default_auth, front_display)
+VALUES(1196, '字体保存', '/api/admin/set/font/save', 'URL', 508, 21, 'AUTH', NULL, 1, 0, 1);
+INSERT INTO sys_privilege
+(id, name, url, `type`, parent_id, `sequence`, property, related, enable, default_auth, front_display)
+VALUES(1197, '字体修改', '/api/admin/set/font/update', 'URL', 508, 21, 'AUTH', NULL, 1, 0, 1);
+INSERT INTO sys_privilege
+(id, name, url, `type`, parent_id, `sequence`, property, related, enable, default_auth, front_display)
+VALUES(1198, '字体删除', '/api/admin/set/font/delete', 'URL', 508, 21, 'AUTH', NULL, 1, 0, 1);

+ 132 - 12
distributed-print/src/main/java/com/qmth/distributed/print/api/SysAdminSetController.java

@@ -1,11 +1,14 @@
 package com.qmth.distributed.print.api;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.google.gson.reflect.TypeToken;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.distributed.print.business.backup.MySQLDatabaseBackup;
 import com.qmth.distributed.print.business.bean.dto.StudentNumberConfigDto;
 import com.qmth.distributed.print.business.bean.dto.StudentNumberLetterRelationShipDto;
+import com.qmth.distributed.print.business.bean.dto.admin.SetFontDto;
 import com.qmth.distributed.print.business.bean.params.SysAdminSetParam;
 import com.qmth.distributed.print.business.bean.result.CustomPrivilegeResult;
 import com.qmth.distributed.print.business.bean.result.SysAdminSetResult;
@@ -18,6 +21,7 @@ import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.FlowMsgTypeEnum;
 import com.qmth.teachcloud.common.enums.log.OperationTypeEnum;
 import com.qmth.teachcloud.common.service.*;
+import com.qmth.teachcloud.common.util.GsonUtil;
 import com.qmth.teachcloud.common.util.RedisUtil;
 import com.qmth.teachcloud.common.util.Result;
 import com.qmth.teachcloud.common.util.ResultUtil;
@@ -81,6 +85,9 @@ public class SysAdminSetController {
     @Resource
     private RedisUtil redisUtil;
 
+    @Resource
+    BasicAttachmentService basicAttachmentService;
+
     @ApiOperation(value = "数据还原")
     @ApiResponses({@ApiResponse(code = 200, message = "数据还原信息", response = ResultUtil.class)})
     @RequestMapping(value = "/backup", method = RequestMethod.POST)
@@ -546,9 +553,9 @@ public class SysAdminSetController {
     public Result sysadminCourseDegreeSelect(@ApiParam(value = "学校id ", required = true) @RequestParam Long schoolId) {
         SysConfig sysConfig = commonCacheService.addSysConfigCache(schoolId, SystemConstant.SCHOOL_COURSE_DEGREE_TEMPLATE);
         SysConfigResult sysConfigResult = new SysConfigResult();
-        if (sysConfig != null) {
+        if (Objects.nonNull(sysConfig)) {
             sysConfigResult = new SysConfigResult(sysConfig);
-            if (sysConfigResult != null && sysConfigResult.getValue() != null) {
+            if (Objects.nonNull(sysConfigResult) && Objects.nonNull(sysConfigResult.getValue())) {
                 sysConfigResult.setValue(fileUploadService.filePreview(Long.valueOf(sysConfigResult.getValue().toString())));
             }
         }
@@ -561,7 +568,7 @@ public class SysAdminSetController {
     public Result sysadminCourseDegreeSave(@ApiParam(value = "学校ID", required = true) @RequestParam Long schoolId,
                                            @ApiParam(value = "附件ID", required = true) @RequestParam Long attachmentId) {
         SysConfig sysConfig = commonCacheService.addSysConfigCache(schoolId, SystemConstant.SCHOOL_COURSE_DEGREE_TEMPLATE);
-        if (sysConfig == null) {
+        if (Objects.isNull(sysConfig)) {
             sysConfig = new SysConfig(schoolId, SystemConstant.SCHOOL_COURSE_DEGREE_TEMPLATE, "课程目标达成度模板配置", String.valueOf(attachmentId));
         } else {
             sysConfig.setConfigValue(String.valueOf(attachmentId));
@@ -570,7 +577,7 @@ public class SysAdminSetController {
             commonCacheService.updateSysConfigCache(schoolId, sysConfig.getConfigKey());
         }
         SysConfigResult sysConfigResult = new SysConfigResult(sysConfig);
-        if (sysConfigResult != null && sysConfigResult.getValue() != null) {
+        if (Objects.nonNull(sysConfigResult) && Objects.nonNull(sysConfigResult.getValue())) {
             sysConfigResult.setValue(fileUploadService.filePreview(Long.valueOf(sysConfigResult.getValue().toString())));
         }
         return ResultUtil.ok(sysConfigResult);
@@ -584,22 +591,22 @@ public class SysAdminSetController {
         List<SysConfigResult> list = new ArrayList<>();
         // 数据库类型
         SysConfig datasourceType = commonCacheService.addSysConfigCache(schoolId, SystemConstant.DATA_DATASOURCE_TYPE);
-        list.add(datasourceType != null ? new SysConfigResult(datasourceType) : new SysConfigResult(null, SystemConstant.DATA_DATASOURCE_TYPE, "数据库类型", "", 1));
+        list.add(Objects.nonNull(datasourceType) ? new SysConfigResult(datasourceType) : new SysConfigResult(null, SystemConstant.DATA_DATASOURCE_TYPE, "数据库类型", "", 1));
         // 数据库HOST
         SysConfig datasourceHost = commonCacheService.addSysConfigCache(schoolId, SystemConstant.DATA_DATASOURCE_HOST);
-        list.add(datasourceHost != null ? new SysConfigResult(datasourceHost) : new SysConfigResult(null, SystemConstant.DATA_DATASOURCE_HOST, "HOST", "", 2));
+        list.add(Objects.nonNull(datasourceHost) ? new SysConfigResult(datasourceHost) : new SysConfigResult(null, SystemConstant.DATA_DATASOURCE_HOST, "HOST", "", 2));
         // 数据库PORT
         SysConfig datasourcePort = commonCacheService.addSysConfigCache(schoolId, SystemConstant.DATA_DATASOURCE_PORT);
-        list.add(datasourcePort != null ? new SysConfigResult(datasourcePort) : new SysConfigResult(null, SystemConstant.DATA_DATASOURCE_PORT, "端口", "", 3));
+        list.add(Objects.nonNull(datasourcePort) ? new SysConfigResult(datasourcePort) : new SysConfigResult(null, SystemConstant.DATA_DATASOURCE_PORT, "端口", "", 3));
         // 数据库DataName
         SysConfig datasourceDataName = commonCacheService.addSysConfigCache(schoolId, SystemConstant.DATA_DATASOURCE_DATANAME);
-        list.add(datasourceDataName != null ? new SysConfigResult(datasourceDataName) : new SysConfigResult(null, SystemConstant.DATA_DATASOURCE_DATANAME, "数据库名", "", 4));
+        list.add(Objects.nonNull(datasourceDataName) ? new SysConfigResult(datasourceDataName) : new SysConfigResult(null, SystemConstant.DATA_DATASOURCE_DATANAME, "数据库名", "", 4));
         // 数据库用户名
         SysConfig datasourceUserName = commonCacheService.addSysConfigCache(schoolId, SystemConstant.DATA_DATASOURCE_USERNAME);
-        list.add(datasourceUserName != null ? new SysConfigResult(datasourceUserName) : new SysConfigResult(null, SystemConstant.DATA_DATASOURCE_USERNAME, "用户名", "", 5));
+        list.add(Objects.nonNull(datasourceUserName) ? new SysConfigResult(datasourceUserName) : new SysConfigResult(null, SystemConstant.DATA_DATASOURCE_USERNAME, "用户名", "", 5));
         // 数据库密码
         SysConfig datasourcePassword = commonCacheService.addSysConfigCache(schoolId, SystemConstant.DATA_DATASOURCE_PASSWORD);
-        list.add(datasourcePassword != null ? new SysConfigResult(datasourcePassword) : new SysConfigResult(null, SystemConstant.DATA_DATASOURCE_PASSWORD, "密码", "", 6));
+        list.add(Objects.nonNull(datasourcePassword) ? new SysConfigResult(datasourcePassword) : new SysConfigResult(null, SystemConstant.DATA_DATASOURCE_PASSWORD, "密码", "", 6));
 
         sysAdminSetResult.setResult(list);
         return ResultUtil.ok(sysAdminSetResult);
@@ -637,10 +644,10 @@ public class SysAdminSetController {
         List<SysConfigResult> list = new ArrayList<>();
         // 是否开启机器人
         SysConfig aiRobotSwitch = commonCacheService.addSysConfigCache(schoolId, SystemConstant.AI_ROBOT_ENABLE);
-        list.add(aiRobotSwitch != null ? new SysConfigResult(aiRobotSwitch) : new SysConfigResult(null, SystemConstant.AI_ROBOT_ENABLE, "是否启用机器人", "false", 1));
+        list.add(Objects.nonNull(aiRobotSwitch) ? new SysConfigResult(aiRobotSwitch) : new SysConfigResult(null, SystemConstant.AI_ROBOT_ENABLE, "是否启用机器人", "false", 1));
         // 机器人链接
         SysConfig aiRobotUrl = commonCacheService.addSysConfigCache(schoolId, SystemConstant.AI_ROBOT_URL);
-        list.add(aiRobotUrl != null ? new SysConfigResult(aiRobotUrl) : new SysConfigResult(null, SystemConstant.AI_ROBOT_URL, "机器人链接", "https://dify.qmth.com.cn/chat/O5OzUXL2hAOsr86c", 2));
+        list.add(Objects.nonNull(aiRobotUrl) ? new SysConfigResult(aiRobotUrl) : new SysConfigResult(null, SystemConstant.AI_ROBOT_URL, "机器人链接", "https://dify.qmth.com.cn/chat/O5OzUXL2hAOsr86c", 2));
         sysAdminSetResult.setResult(list);
         return ResultUtil.ok(sysAdminSetResult);
     }
@@ -706,4 +713,117 @@ public class SysAdminSetController {
         }
         return ResultUtil.ok(true);
     }
+
+    @ApiOperation(value = "字体查询")
+    @ApiResponses({@ApiResponse(code = 200, message = "字体信息", response = SysConfigResult.class)})
+    @RequestMapping(value = "/font/select", method = RequestMethod.POST)
+    public Result sysadminFontSelect(@ApiParam(value = "学校id ", required = true) @RequestParam Long schoolId) {
+        SysConfig sysConfig = commonCacheService.addSysConfigCache(schoolId, SystemConstant.SCHOOL_FONT_TEMPLATE);
+        return ResultUtil.ok(Objects.nonNull(sysConfig) ? new SysConfigResult(sysConfig) : new SysConfigResult(null, SystemConstant.SCHOOL_FONT_TEMPLATE, "自定义字体配置", null, 1));
+    }
+
+    @ApiOperation(value = "字体保存")
+    @ApiResponses({@ApiResponse(code = 200, message = "字体信息", response = SysConfigResult.class)})
+    @RequestMapping(value = "/font/save", method = RequestMethod.POST)
+    @Transactional
+    @OperationLogDetail(operationType = OperationTypeEnum.SAVE)
+    public Result sysadminFontSave(@ApiParam(value = "学校ID", required = true) @RequestParam Long schoolId,
+                                   @ApiParam(value = "附件ID", required = true) @RequestParam Long attachmentId) {
+        BasicAttachment basicAttachment = basicAttachmentService.getById(attachmentId);
+        Objects.requireNonNull(basicAttachment, "未找到附件信息");
+
+        SysConfig sysConfig = commonCacheService.addSysConfigCache(schoolId, SystemConstant.SCHOOL_FONT_TEMPLATE);
+        SetFontDto setFontDto = null;
+        List<SetFontDto> setFontDtoList = new ArrayList<>();
+        if (Objects.isNull(sysConfig)) {
+            setFontDto = new SetFontDto(basicAttachment, true);
+            setFontDtoList.add(setFontDto);
+            SetFontDto sysSetFontDto = new SetFontDto("系统默认字体");
+            setFontDtoList.add(sysSetFontDto);
+            Collections.sort(setFontDtoList);
+            sysConfig = new SysConfig(schoolId, SystemConstant.SCHOOL_FONT_TEMPLATE, "自定义字体配置", JSONArray.toJSONString(setFontDtoList));
+        } else {
+            setFontDtoList = GsonUtil.fromJson(sysConfig.getConfigValue(), new TypeToken<List<SetFontDto>>() {
+            }.getType());
+            setFontDto = new SetFontDto(basicAttachment, false);
+            if (setFontDtoList.contains(setFontDto)) {
+                throw ExceptionResultEnum.ERROR.exception("此字体已存在");
+            }
+            setFontDtoList.add(setFontDto);
+            Collections.sort(setFontDtoList);
+            sysConfig.setConfigValue(JSONArray.toJSONString(setFontDtoList));
+        }
+        if (sysConfigService.saveOrUpdate(sysConfig)) {
+            commonCacheService.updateSysConfigCache(schoolId, sysConfig.getConfigKey());
+        }
+        return ResultUtil.ok(new SysConfigResult(sysConfig));
+    }
+
+    @ApiOperation(value = "字体修改")
+    @ApiResponses({@ApiResponse(code = 200, message = "字体信息", response = SysConfigResult.class)})
+    @RequestMapping(value = "/font/update", method = RequestMethod.POST)
+    @Transactional
+    public Result sysadminFontUpdate(@ApiParam(value = "学校ID", required = true) @RequestParam Long schoolId,
+                                     @ApiParam(value = "附件ID", required = true) @RequestParam Long attachmentId) {
+        SysConfig sysConfig = commonCacheService.addSysConfigCache(schoolId, SystemConstant.SCHOOL_FONT_TEMPLATE);
+        Objects.requireNonNull(sysConfig, "未找到字体信息");
+
+        List<SetFontDto> setFontDtoList = GsonUtil.fromJson(sysConfig.getConfigValue(), new TypeToken<List<SetFontDto>>() {
+        }.getType());
+        setFontDtoList.stream().map(s -> {
+            if (s.getAttachmentId().longValue() == attachmentId.longValue() && attachmentId.longValue() == -1L && s.getChoose()) {
+                throw ExceptionResultEnum.ERROR.exception("系统默认字体已被选择");
+            } else if (s.getAttachmentId().longValue() == attachmentId.longValue() && s.getChoose()) {
+                throw ExceptionResultEnum.ERROR.exception("当前字体已被选择");
+            } else if (s.getAttachmentId().longValue() == attachmentId.longValue()) {
+                s.setChoose(true);
+            } else {
+                s.setChoose(false);
+            }
+            return true;
+        }).collect(Collectors.toList());
+        List<SetFontDto> setFontDtoListTemp = setFontDtoList.stream().filter(s -> s.getChoose()).collect(Collectors.toList());
+        if (CollectionUtils.isEmpty(setFontDtoListTemp)) {
+            throw ExceptionResultEnum.ERROR.exception("未找到字体");
+        }
+        sysConfig.setConfigValue(JSONArray.toJSONString(setFontDtoList));
+        if (sysConfigService.saveOrUpdate(sysConfig)) {
+            commonCacheService.updateSysConfigCache(schoolId, sysConfig.getConfigKey());
+        }
+        return ResultUtil.ok(true);
+    }
+
+    @ApiOperation(value = "字体删除")
+    @ApiResponses({@ApiResponse(code = 200, message = "字体信息", response = SysConfigResult.class)})
+    @RequestMapping(value = "/font/delete", method = RequestMethod.POST)
+    @Transactional
+    public Result sysadminFontDelete(@ApiParam(value = "学校ID", required = true) @RequestParam Long schoolId,
+                                     @ApiParam(value = "附件ID", required = true) @RequestParam Long attachmentId) {
+        SysConfig sysConfig = commonCacheService.addSysConfigCache(schoolId, SystemConstant.SCHOOL_FONT_TEMPLATE);
+        Objects.requireNonNull(sysConfig, "未找到字体信息");
+        if (attachmentId.longValue() == -1L) {
+            throw ExceptionResultEnum.ERROR.exception("系统默认字体无法删除");
+        }
+
+        List<SetFontDto> setFontDtoList = GsonUtil.fromJson(sysConfig.getConfigValue(), new TypeToken<List<SetFontDto>>() {
+        }.getType());
+        List<SetFontDto> setFontDtoDelList = setFontDtoList.stream().filter(s -> s.getAttachmentId().longValue() == attachmentId.longValue()).collect(Collectors.toList());
+        if (CollectionUtils.isEmpty(setFontDtoDelList)) {
+            throw ExceptionResultEnum.ERROR.exception("未找到字体");
+        } else {
+            basicAttachmentService.removeById(attachmentId);
+        }
+
+        setFontDtoList.removeAll(setFontDtoDelList);
+        if (CollectionUtils.isEmpty(setFontDtoList)) {
+            sysConfig.setConfigValue(null);
+        } else {
+            setFontDtoList.get(0).setChoose(true);
+            sysConfig.setConfigValue(JSONArray.toJSONString(setFontDtoList));
+        }
+        if (sysConfigService.saveOrUpdate(sysConfig)) {
+            commonCacheService.updateSysConfigCache(schoolId, sysConfig.getConfigKey());
+        }
+        return ResultUtil.ok(true);
+    }
 }

+ 60 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/result/FontResult.java

@@ -0,0 +1,60 @@
+package com.qmth.teachcloud.common.bean.result;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * @Description: 字体信息
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2025/3/4
+ */
+public class FontResult implements Serializable {
+
+    @ApiModelProperty(value = "附件id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long attachmentId;
+
+    @ApiModelProperty(value = "字体名称")
+    private String fontName;
+
+    @ApiModelProperty(value = "字体格式")
+    private String format;
+
+    public FontResult() {
+    }
+
+    public FontResult(Long attachmentId, String fontName, String format) {
+        this.attachmentId = attachmentId;
+        this.fontName = fontName;
+        this.format = format;
+    }
+
+    public String getFontName() {
+        return fontName;
+    }
+
+    public void setFontName(String fontName) {
+        this.fontName = fontName;
+    }
+
+    public String getFormat() {
+        return format;
+    }
+
+    public void setFormat(String format) {
+        this.format = format;
+    }
+
+    public Long getAttachmentId() {
+        return attachmentId;
+    }
+
+    public void setAttachmentId(Long attachmentId) {
+        this.attachmentId = attachmentId;
+    }
+}

+ 11 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/result/LoginResult.java

@@ -77,6 +77,9 @@ public class LoginResult implements Serializable {
     @ApiModelProperty(name = "机器人参数")
     private AiRobotResult aiRobotResult;
 
+    @ApiModelProperty(name = "字体信息")
+    private FontResult fontResult;
+
     public String getVersion() {
         return version;
     }
@@ -122,6 +125,14 @@ public class LoginResult implements Serializable {
         this.version = version;
     }
 
+    public FontResult getFontResult() {
+        return fontResult;
+    }
+
+    public void setFontResult(FontResult fontResult) {
+        this.fontResult = fontResult;
+    }
+
     public List<RoleResult> getRoleSource() {
         return roleSource;
     }

+ 1 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/contant/SystemConstant.java

@@ -194,6 +194,7 @@ public class SystemConstant {
     public static final String TEACHCLOUD_REPORT_LOCATION_URL = "teachcloud.report.location.url";
     public static final String TEACHCLOUD_PRINT_HOST_DEFAULT_URL = "teachcloud.print.host.default.url";
     public static final String TEACHCLOUD_REPORT_HOST_DEFAULT_URL = "teachcloud.report.host.default.url";
+    public static final String SCHOOL_FONT_TEMPLATE = "school.font.template";
 
     public static final String OPEN_FLOW_MESSAGE_PUSH = "open.flow.message.push";//是否开启消息推送
     public static final String FLOW_MESSAGE_TYPE = "flow.message.type";//消息类型,标准/非标准

+ 15 - 3
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/TeachcloudCommonServiceImpl.java

@@ -1,6 +1,7 @@
 package com.qmth.teachcloud.common.service.impl;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.google.common.collect.Lists;
@@ -77,8 +78,6 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
     FileStoreUtil fileStoreUtil;
     @Resource
     SysUserService sysUserService;
-    @Resource
-    TSchoolPrivilegeService tSchoolPrivilegeService;
 
     /**
      * 获取用户菜单
@@ -890,7 +889,20 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
             pwdCount = 1;
         }
         loginResult.setUserLoginCheckResult(new UserLoginCheckResult(sysUser.getId(), mobileNumber, pwdCount));
-//        //TODO 西交大切换学校定制
+
+        SysConfig sysConfig = commonCacheService.addSysConfigCache(sysUser.getSchoolId(), SystemConstant.SCHOOL_FONT_TEMPLATE);
+        if (Objects.nonNull(sysConfig)) {
+            JSONArray jsonArray = JSONArray.parseArray(sysConfig.getConfigValue());
+            for (int i = 0; i < jsonArray.size(); i++) {
+                JSONObject jsonObject = jsonArray.getJSONObject(i);
+                Boolean choose = jsonObject.getBoolean("choose");
+                if (choose) {
+                    loginResult.setFontResult(new FontResult(jsonObject.getLong("attachmentId"), jsonObject.getString("fontName"), jsonObject.getString("format")));
+                    break;
+                }
+            }
+        }
+//        TODO 西交大切换学校定制
 //        QueryWrapper<SysUser> sysUserQueryWrapper = new QueryWrapper<>();
 //        sysUserQueryWrapper.lambda().eq(SysUser::getLoginName, sysUser.getLoginName()).eq(SysUser::getEnable, true);
 //        List<SysUser> sysUserList = sysUserService.list(sysUserQueryWrapper);