瀏覽代碼

加入sysSetting

wangliang 2 年之前
父節點
當前提交
a751966b6a
共有 23 個文件被更改,包括 736 次插入50 次删除
  1. 3 22
      cas/src/main/java/com/qmth/teachcloud/cas/util/XjtuCasUtil.java
  2. 5 0
      cas/src/main/resources/application.properties
  3. 5 0
      pom.xml
  4. 4 0
      teachcloud-exchange-common/pom.xml
  5. 47 0
      teachcloud-exchange-common/src/main/java/com/qmth/teachcloud/exchange/common/bean/dto/syssetting/SettingObject.java
  6. 75 0
      teachcloud-exchange-common/src/main/java/com/qmth/teachcloud/exchange/common/bean/dto/syssetting/SimpleObject.java
  7. 38 0
      teachcloud-exchange-common/src/main/java/com/qmth/teachcloud/exchange/common/contant/SysSettingConstant.java
  8. 1 0
      teachcloud-exchange-common/src/main/java/com/qmth/teachcloud/exchange/common/contant/SystemConstant.java
  9. 91 0
      teachcloud-exchange-common/src/main/java/com/qmth/teachcloud/exchange/common/entity/SysConfig.java
  10. 94 0
      teachcloud-exchange-common/src/main/java/com/qmth/teachcloud/exchange/common/entity/SysSetting.java
  11. 16 0
      teachcloud-exchange-common/src/main/java/com/qmth/teachcloud/exchange/common/mapper/SysConfigMapper.java
  12. 13 0
      teachcloud-exchange-common/src/main/java/com/qmth/teachcloud/exchange/common/mapper/SysSettingMapper.java
  13. 55 0
      teachcloud-exchange-common/src/main/java/com/qmth/teachcloud/exchange/common/service/CommonCacheService.java
  14. 16 0
      teachcloud-exchange-common/src/main/java/com/qmth/teachcloud/exchange/common/service/SysConfigService.java
  15. 23 0
      teachcloud-exchange-common/src/main/java/com/qmth/teachcloud/exchange/common/service/SysSettingService.java
  16. 7 14
      teachcloud-exchange-common/src/main/java/com/qmth/teachcloud/exchange/common/service/impl/AuthInfoServiceImpl.java
  17. 105 0
      teachcloud-exchange-common/src/main/java/com/qmth/teachcloud/exchange/common/service/impl/CommonCacheServiceImpl.java
  18. 3 14
      teachcloud-exchange-common/src/main/java/com/qmth/teachcloud/exchange/common/service/impl/CommonServiceImpl.java
  19. 20 0
      teachcloud-exchange-common/src/main/java/com/qmth/teachcloud/exchange/common/service/impl/SysConfigServiceImpl.java
  20. 97 0
      teachcloud-exchange-common/src/main/java/com/qmth/teachcloud/exchange/common/service/impl/SysSettingServiceImpl.java
  21. 8 0
      teachcloud-exchange-common/src/main/java/com/qmth/teachcloud/exchange/common/util/ServletUtil.java
  22. 5 0
      teachcloud-exchange-common/src/main/resources/mapper/SysConfigMapper.xml
  23. 5 0
      teachcloud-exchange-common/src/main/resources/mapper/SysSettingMapper.xml

+ 3 - 22
cas/src/main/java/com/qmth/teachcloud/cas/util/XjtuCasUtil.java

@@ -3,8 +3,6 @@ package com.qmth.teachcloud.cas.util;
 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.qmth.boot.core.cache.service.CacheService;
 import com.qmth.boot.tools.signature.SignatureEntity;
 import com.qmth.boot.tools.signature.SignatureType;
 import com.qmth.teachcloud.exchange.common.bean.params.OpenParams;
@@ -13,7 +11,7 @@ import com.qmth.teachcloud.exchange.common.contant.SystemConstant;
 import com.qmth.teachcloud.exchange.common.entity.BasicSchool;
 import com.qmth.teachcloud.exchange.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.exchange.common.service.AuthInfoService;
-import com.qmth.teachcloud.exchange.common.service.BasicSchoolService;
+import com.qmth.teachcloud.exchange.common.service.CommonCacheService;
 import com.qmth.teachcloud.exchange.common.util.HttpUtil;
 import com.qmth.teachcloud.exchange.common.util.JacksonUtil;
 import com.qmth.teachcloud.exchange.common.util.Result;
@@ -50,10 +48,7 @@ public class XjtuCasUtil {
     AuthInfoService authInfoService;
 
     @Resource
-    CacheService cacheService;
-
-    @Resource
-    BasicSchoolService basicSchoolService;
+    CommonCacheService commonCacheService;
 
     /**
      * 西交大登录逻辑
@@ -88,14 +83,8 @@ public class XjtuCasUtil {
             strs[0] = strs[0].replace(SystemConstant.PATH_MATCH, schoolCode);
         }
 
-        BasicSchool basicSchool = (BasicSchool) cacheService.get(SystemConstant.SCHOOL_CODE_CACHE, schoolCode);
-        if (Objects.isNull(basicSchool)) {
-            QueryWrapper<BasicSchool> basicSchoolQueryWrapper = new QueryWrapper<>();
-            basicSchoolQueryWrapper.lambda().eq(BasicSchool::getCode, schoolCode);
-            basicSchool = basicSchoolService.getOne(basicSchoolQueryWrapper);
-        }
+        BasicSchool basicSchool = commonCacheService.schoolCache(schoolCode);
         Optional.ofNullable(basicSchool).orElseThrow(() -> ExceptionResultEnum.PARAMS_ERROR.exception("学校信息不存在"));
-        cacheService.put(SystemConstant.SCHOOL_CODE_CACHE, schoolCode, basicSchool);
 
         Long timestamp = System.currentTimeMillis();
         String signature = SignatureEntity.build(SignatureType.SECRET, SystemConstant.METHOD, LOGIN_BEFORE_XJU_LOGIC_API, timestamp, basicSchool.getAccessKey(), basicSchool.getAccessSecret());
@@ -111,14 +100,6 @@ public class XjtuCasUtil {
                 if (CollectionUtils.isEmpty(sysuserList)) {
                     throw ExceptionResultEnum.ERROR.exception("未查到此用户");
                 }
-//                if (sysuserList.size() >= 2) {
-//                    throw ExceptionResultEnum.ERROR.exception("查询到有多个用户");
-//                }
-//                String schoolId = String.valueOf(sysuserList.get(0).get("schoolId"));
-//                Optional.ofNullable(schoolId).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("学校id为空"));
-//                BasicSchool basicSchoolMap = (BasicSchool) cacheService.get(SystemConstant.SCHOOL_CACHE, schoolId);
-//                Optional.ofNullable(basicSchoolMap).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("学校id:" + schoolId + ",学校不存在"));
-//                schoolCodeParam = basicSchoolMap.getCode();
             } else {
                 throw ExceptionResultEnum.ERROR.exception("调用知学知考西交大登录前查找账号接口失败");
             }

+ 5 - 0
cas/src/main/resources/application.properties

@@ -16,6 +16,11 @@ db.name=eds-v1.0.0
 db.username=root
 db.password=123456789
 
+com.qmth.redis.host=${db.host}
+com.qmth.redis.db=5
+com.qmth.redis.port=6379
+#com.qmth.redis.password=123456
+
 #mysql\u914D\u7F6E
 com.qmth.datasource.url=jdbc:mysql://${db.host}:${db.port}/${db.name}?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&nullCatalogMeansCurrent=true
 com.qmth.datasource.username=${db.username}

+ 5 - 0
pom.xml

@@ -76,6 +76,11 @@
                 <artifactId>core-cache</artifactId>
                 <version>${qmth.boot.version}</version>
             </dependency>
+            <dependency>
+                <groupId>com.qmth.boot</groupId>
+                <artifactId>data-redis</artifactId>
+                <version>${qmth.boot.version}</version>
+            </dependency>
             <dependency>
                 <groupId>com.qmth.boot</groupId>
                 <artifactId>core-concurrent</artifactId>

+ 4 - 0
teachcloud-exchange-common/pom.xml

@@ -50,6 +50,10 @@
             <groupId>com.qmth.boot</groupId>
             <artifactId>core-cache</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.qmth.boot</groupId>
+            <artifactId>data-redis</artifactId>
+        </dependency>
         <dependency>
             <groupId>io.netty</groupId>
             <artifactId>netty-all</artifactId>

+ 47 - 0
teachcloud-exchange-common/src/main/java/com/qmth/teachcloud/exchange/common/bean/dto/syssetting/SettingObject.java

@@ -0,0 +1,47 @@
+package com.qmth.teachcloud.exchange.common.bean.dto.syssetting;
+
+import java.util.List;
+
+public class SettingObject {
+
+    private String name;
+
+    private int sort;
+
+    private List<SimpleObject> data;
+
+    public SettingObject() {
+    }
+
+    public SettingObject(String name, int sort, List<SimpleObject> data) {
+        this.name = name;
+        this.sort = sort;
+        this.data = data;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public int getSort() {
+        return sort;
+    }
+
+    public void setSort(int sort) {
+        this.sort = sort;
+    }
+
+    public List<SimpleObject> getData() {
+        return data;
+    }
+
+    public void setData(List<SimpleObject> data) {
+        this.data = data;
+    }
+
+
+}

+ 75 - 0
teachcloud-exchange-common/src/main/java/com/qmth/teachcloud/exchange/common/bean/dto/syssetting/SimpleObject.java

@@ -0,0 +1,75 @@
+package com.qmth.teachcloud.exchange.common.bean.dto.syssetting;
+
+public class SimpleObject {
+    private String code;
+
+    private String value;
+
+    private String name;
+
+    private String type;
+
+    private int sort;
+
+    private boolean enable;
+
+    public SimpleObject() {
+    }
+
+    public SimpleObject(String code, String name, String value, String type, int sort, boolean enable) {
+        this.code = code;
+        this.name = name;
+        this.value = value;
+        this.type = type;
+        this.sort = sort;
+        this.enable = enable;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public int getSort() {
+        return sort;
+    }
+
+    public void setSort(int sort) {
+        this.sort = sort;
+    }
+
+    public boolean isEnable() {
+        return enable;
+    }
+
+    public void setEnable(boolean enable) {
+        this.enable = enable;
+    }
+}

+ 38 - 0
teachcloud-exchange-common/src/main/java/com/qmth/teachcloud/exchange/common/contant/SysSettingConstant.java

@@ -0,0 +1,38 @@
+package com.qmth.teachcloud.exchange.common.contant;
+
+/**
+ * API常量
+ */
+public class SysSettingConstant {
+    /**
+     * 武汉大学参数
+     */
+    public static final String WHU_APP_KEY = "whuAppKey";
+    public static final String WHU_APP_SECRET = "whuAppSecret";
+    public static final String WHU_TOKEN_URL = "whuTokenUrl";
+    public static final String WHU_KW_URL = "whuKwUrl";
+
+    /**
+     * 成都理工大学参数
+     */
+    public static final String CDUT_APP_KEY = "cdutAppKey";
+    public static final String CDUT_APP_SECRET = "cdutAppSecret";
+    public static final String CDUT_TOKEN_URL = "cdutTokenUrl";
+    public static final String CDUT_KW_URL = "cdutKwUrl";
+
+    /**
+     * 云阅卷参数
+     */
+    public static final String CLOUD_MARKING_ACCESS_KEY = "cloudMarkingAccessKey";
+    public static final String CLOUD_MARKING_ACCESS_SECRET = "cloudMarkingAccessSecret";
+    public static final String CLOUD_MARKING_ROOT_URL = "cloudMarkingRootUrl";
+    public static final String FILE_HOST_URL = "fileHostUrl";
+
+    // 云阅卷考试查询api
+    public static final String CLOUD_MARKING_EXAM_URL = "/api/exams";
+    // 云阅卷考生数量查询api
+    public static final String CLOUD_MARKING_STUDENT_COUNT_URL = "/api/exam/student/count";
+    // 云阅卷考生成绩查询api
+    public static final String CLOUD_MARKING_STUDENT_SCORE_URL = "/api/exam/student/score";
+
+}

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

@@ -56,6 +56,7 @@ public class SystemConstant {
      */
     public static final String SCHOOL_CACHE = "school:cache";
     public static final String SCHOOL_CODE_CACHE = "school:code:cache";
+    public static final String SYS_SETTING_CACHE = "sys:setting:cache";
 
     /**
      * 鉴权

+ 91 - 0
teachcloud-exchange-common/src/main/java/com/qmth/teachcloud/exchange/common/entity/SysConfig.java

@@ -0,0 +1,91 @@
+package com.qmth.teachcloud.exchange.common.entity;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.teachcloud.exchange.common.base.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 参数表
+ * </p>
+ *
+ * @author wangliang
+ * @since 2022-05-14
+ */
+@ApiModel(value = "SysConfig对象", description = "参数表")
+public class SysConfig extends BaseEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "学校id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long schoolId;
+
+    @ApiModelProperty(value = "机构id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long orgId;
+
+    @ApiModelProperty(value = "参数键名")
+    private String configKey;
+
+    @ApiModelProperty(value = "参数名称")
+    private String configName;
+
+    @ApiModelProperty(value = "参数键值")
+    private String configValue;
+
+    @ApiModelProperty(value = "备注")
+    private String remark;
+
+    public Long getSchoolId() {
+        return schoolId;
+    }
+
+    public void setSchoolId(Long schoolId) {
+        this.schoolId = schoolId;
+    }
+
+    public Long getOrgId() {
+        return orgId;
+    }
+
+    public void setOrgId(Long orgId) {
+        this.orgId = orgId;
+    }
+
+    public String getConfigKey() {
+        return configKey;
+    }
+
+    public void setConfigKey(String configKey) {
+        this.configKey = configKey;
+    }
+
+    public String getConfigName() {
+        return configName;
+    }
+
+    public void setConfigName(String configName) {
+        this.configName = configName;
+    }
+
+    public String getConfigValue() {
+        return configValue;
+    }
+
+    public void setConfigValue(String configValue) {
+        this.configValue = configValue;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+}

+ 94 - 0
teachcloud-exchange-common/src/main/java/com/qmth/teachcloud/exchange/common/entity/SysSetting.java

@@ -0,0 +1,94 @@
+package com.qmth.teachcloud.exchange.common.entity;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.teachcloud.exchange.common.base.BaseEntity;
+import com.qmth.teachcloud.exchange.common.bean.dto.syssetting.SettingObject;
+import com.qmth.teachcloud.exchange.common.bean.dto.syssetting.SimpleObject;
+import com.qmth.teachcloud.exchange.common.contant.SysSettingConstant;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <p>
+ * 系统设置表
+ * </p>
+ */
+@TableName("sys_setting")
+public class SysSetting extends BaseEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "学校id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    @TableField("school_id")
+    private Long schoolId;
+
+
+    /**
+     * 参数配置详情
+     */
+    @TableField("parameter_object")
+    private String parameterObject;
+
+    public Long getSchoolId() {
+        return schoolId;
+    }
+
+    public void setSchoolId(Long schoolId) {
+        this.schoolId = schoolId;
+    }
+
+    public String getParameterObject() {
+        return parameterObject;
+    }
+
+    public void setParameterObject(String parameterObject) {
+        this.parameterObject = parameterObject;
+    }
+
+    /**
+     * 初始化数据
+     */
+    public static SysSetting init(BasicSchool basicSchool) {
+        List<SettingObject> settingObjects = new ArrayList<>();
+
+        List<SimpleObject> basicSimpleObjects = new ArrayList<>();
+        basicSimpleObjects.add(new SimpleObject(SysSettingConstant.FILE_HOST_URL, "文件访问地址", "", "text", 1, true));
+        settingObjects.add(new SettingObject("访问参数设置", 1, basicSimpleObjects));
+
+        String schoolCode = basicSchool.getCode();
+        if ("whdx".equals(schoolCode) || "test-school-1".equals(schoolCode)) {
+            List<SimpleObject> simpleObjects1 = new ArrayList<>();
+            simpleObjects1.add(new SimpleObject(SysSettingConstant.WHU_APP_KEY, "App Key", "", "text", 1, true));
+            simpleObjects1.add(new SimpleObject(SysSettingConstant.WHU_APP_SECRET, "App Secret", "", "text", 2, true));
+            simpleObjects1.add(new SimpleObject(SysSettingConstant.WHU_TOKEN_URL, "Token接口", "", "text", 3, true));
+            simpleObjects1.add(new SimpleObject(SysSettingConstant.WHU_KW_URL, "考务数据接口", "", "text", 4, true));
+            settingObjects.add(new SettingObject("对接参数设置", 2, simpleObjects1));
+        } else if ("cdut".equals(schoolCode)) {
+            List<SimpleObject> simpleObjects1 = new ArrayList<>();
+            simpleObjects1.add(new SimpleObject(SysSettingConstant.CDUT_APP_KEY, "App Key", "", "text", 1, true));
+            simpleObjects1.add(new SimpleObject(SysSettingConstant.CDUT_APP_SECRET, "App Secret", "", "text", 2, true));
+            simpleObjects1.add(new SimpleObject(SysSettingConstant.CDUT_TOKEN_URL, "Token接口", "", "text", 3, true));
+            simpleObjects1.add(new SimpleObject(SysSettingConstant.CDUT_KW_URL, "考务数据接口", "", "text", 4, true));
+            settingObjects.add(new SettingObject("对接参数设置", 2, simpleObjects1));
+        }
+
+        List<SimpleObject> cloudMarkingSimpleObjects = new ArrayList<>();
+        cloudMarkingSimpleObjects.add(new SimpleObject(SysSettingConstant.CLOUD_MARKING_ACCESS_KEY, "Access Key", basicSchool.getAccessKey(), "text", 1, true));
+        cloudMarkingSimpleObjects.add(new SimpleObject(SysSettingConstant.CLOUD_MARKING_ACCESS_SECRET, "Access Secret", basicSchool.getAccessSecret(), "text", 2, true));
+        cloudMarkingSimpleObjects.add(new SimpleObject(SysSettingConstant.CLOUD_MARKING_ROOT_URL, "云阅卷地址", "", "text", 3, true));
+        settingObjects.add(new SettingObject("云阅卷参数设置", 3, cloudMarkingSimpleObjects));
+
+        SysSetting sysSetting = new SysSetting();
+        sysSetting.setSchoolId(basicSchool.getId());
+        sysSetting.setParameterObject(JSON.toJSONString(settingObjects));
+        return sysSetting;
+    }
+}

+ 16 - 0
teachcloud-exchange-common/src/main/java/com/qmth/teachcloud/exchange/common/mapper/SysConfigMapper.java

@@ -0,0 +1,16 @@
+package com.qmth.teachcloud.exchange.common.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qmth.teachcloud.exchange.common.entity.SysConfig;
+
+/**
+ * <p>
+ * 参数表 Mapper 接口
+ * </p>
+ *
+ * @author wangliang
+ * @since 2022-05-14
+ */
+public interface SysConfigMapper extends BaseMapper<SysConfig> {
+
+}

+ 13 - 0
teachcloud-exchange-common/src/main/java/com/qmth/teachcloud/exchange/common/mapper/SysSettingMapper.java

@@ -0,0 +1,13 @@
+package com.qmth.teachcloud.exchange.common.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qmth.teachcloud.exchange.common.entity.SysSetting;
+
+/**
+ * <p>
+ * 系统设置 Mapper 接口
+ * </p>
+ */
+public interface SysSettingMapper extends BaseMapper<SysSetting> {
+
+}

+ 55 - 0
teachcloud-exchange-common/src/main/java/com/qmth/teachcloud/exchange/common/service/CommonCacheService.java

@@ -0,0 +1,55 @@
+package com.qmth.teachcloud.exchange.common.service;
+
+import com.qmth.teachcloud.exchange.common.bean.dto.syssetting.SimpleObject;
+import com.qmth.teachcloud.exchange.common.entity.BasicSchool;
+
+import java.util.Map;
+
+/**
+ * @Description: 缓存操作service
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2021/3/25
+ */
+public interface CommonCacheService {
+
+    /**
+     * 添加学校缓存
+     *
+     * @param schoolId
+     * @return
+     */
+    public BasicSchool schoolCache(Long schoolId);
+
+    /**
+     * 添加学校缓存
+     *
+     * @param code
+     * @return
+     */
+    public BasicSchool schoolCache(String code);
+
+    /**
+     * 删除学校缓存
+     */
+    public void removeSchoolIdCache();
+
+    /**
+     * 删除学校缓存
+     */
+    public void removeSchoolCodeCache();
+
+    /**
+     * 删除系统参数数据
+     *
+     * @param schoolId
+     * @return
+     */
+    String removeSysSetting(Long schoolId);
+
+    /**
+     * 获取学校缓存
+     */
+    Map<String, SimpleObject> getSysSetting(Long schoolId);
+}

+ 16 - 0
teachcloud-exchange-common/src/main/java/com/qmth/teachcloud/exchange/common/service/SysConfigService.java

@@ -0,0 +1,16 @@
+package com.qmth.teachcloud.exchange.common.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.teachcloud.exchange.common.entity.SysConfig;
+
+/**
+ * <p>
+ * 参数表 服务类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2022-05-14
+ */
+public interface SysConfigService extends IService<SysConfig> {
+
+}

+ 23 - 0
teachcloud-exchange-common/src/main/java/com/qmth/teachcloud/exchange/common/service/SysSettingService.java

@@ -0,0 +1,23 @@
+package com.qmth.teachcloud.exchange.common.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.teachcloud.exchange.common.bean.dto.syssetting.SettingObject;
+import com.qmth.teachcloud.exchange.common.entity.SysSetting;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 系统设置 服务类
+ * </p>
+ */
+public interface SysSettingService extends IService<SysSetting> {
+
+    List<SettingObject> getData();
+
+    boolean saveData(List<SettingObject> settingObjects);
+
+    SysSetting getBySchoolId(Long schoolId);
+
+    void flushCache(String type);
+}

+ 7 - 14
teachcloud-exchange-common/src/main/java/com/qmth/teachcloud/exchange/common/service/impl/AuthInfoServiceImpl.java

@@ -2,7 +2,6 @@ package com.qmth.teachcloud.exchange.common.service.impl;
 
 import com.aventrix.jnanoid.jnanoid.NanoIdUtils;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.qmth.boot.core.cache.service.CacheService;
 import com.qmth.boot.core.solar.config.SolarProperties;
 import com.qmth.boot.core.solar.model.AppInfo;
 import com.qmth.boot.core.solar.model.OrgInfo;
@@ -17,9 +16,9 @@ import com.qmth.teachcloud.exchange.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.exchange.common.enums.UploadFileEnum;
 import com.qmth.teachcloud.exchange.common.service.AuthInfoService;
 import com.qmth.teachcloud.exchange.common.service.BasicSchoolService;
+import com.qmth.teachcloud.exchange.common.service.CommonCacheService;
 import com.qmth.teachcloud.exchange.common.service.TSAuthService;
 import com.qmth.teachcloud.exchange.common.util.FileStoreUtil;
-import com.qmth.teachcloud.exchange.common.util.JacksonUtil;
 import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.commons.io.FilenameUtils;
 import org.slf4j.Logger;
@@ -64,7 +63,7 @@ public class AuthInfoServiceImpl implements AuthInfoService {
     DictionaryConfig dictionaryConfig;
 
     @Resource
-    CacheService cacheService;
+    CommonCacheService commonCacheService;
 
     /**
      * 授权信息初始化
@@ -112,7 +111,7 @@ public class AuthInfoServiceImpl implements AuthInfoService {
      */
     @Override
     public void appHasExpired(String code) {
-        BasicSchool basicSchool = (BasicSchool) cacheService.get(SystemConstant.SCHOOL_CODE_CACHE, code);
+        BasicSchool basicSchool = commonCacheService.schoolCache(code);
         if ((Objects.nonNull(basicSchool) && Objects.nonNull(basicSchool.getEnable()) && !basicSchool.getEnable())
                 || (Objects.isNull(solarService.getAppInfo()) || solarService.getAppInfo().getControl().hasExpired())
                 || (Objects.isNull(solarService.getAppControl()) || solarService.getAppControl().hasExpired())) {
@@ -234,8 +233,8 @@ public class AuthInfoServiceImpl implements AuthInfoService {
 
             if (!CollectionUtils.isEmpty(basicSchoolSet)) {
                 basicSchoolService.saveOrUpdateBatch(basicSchoolSet);
-                cacheService.clear(SystemConstant.SCHOOL_CACHE);
-                cacheService.clear(SystemConstant.SCHOOL_CODE_CACHE);
+                commonCacheService.removeSchoolIdCache();
+                commonCacheService.removeSchoolCodeCache();
             }
 
             AuthInfoService authInfoService = SpringContextHolder.getBean(AuthInfoService.class);
@@ -258,14 +257,8 @@ public class AuthInfoServiceImpl implements AuthInfoService {
                 } else {
                     b.setEnable(false);
                 }
-                cacheService.put(SystemConstant.SCHOOL_CACHE, String.valueOf(b.getId()), b);
-                cacheService.put(SystemConstant.SCHOOL_CODE_CACHE, b.getCode(), b);
-            }
-            for (BasicSchool b : basicSchoolList) {
-                BasicSchool basicSchool1 = (BasicSchool) cacheService.get(SystemConstant.SCHOOL_CACHE, String.valueOf(b.getId()));
-                BasicSchool basicSchool2 = (BasicSchool) cacheService.get(SystemConstant.SCHOOL_CODE_CACHE, b.getCode());
-                log.info("basicSchool_cache_id:{}", JacksonUtil.parseJson(basicSchool1));
-                log.info("basicSchool_cache_code:{}", JacksonUtil.parseJson(basicSchool2));
+                commonCacheService.schoolCache(b.getId());
+                commonCacheService.schoolCache(b.getCode());
             }
             basicSchoolService.saveOrUpdateBatch(basicSchoolList);
         }

+ 105 - 0
teachcloud-exchange-common/src/main/java/com/qmth/teachcloud/exchange/common/service/impl/CommonCacheServiceImpl.java

@@ -0,0 +1,105 @@
+package com.qmth.teachcloud.exchange.common.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.qmth.teachcloud.exchange.common.bean.dto.syssetting.SettingObject;
+import com.qmth.teachcloud.exchange.common.bean.dto.syssetting.SimpleObject;
+import com.qmth.teachcloud.exchange.common.contant.SystemConstant;
+import com.qmth.teachcloud.exchange.common.entity.BasicSchool;
+import com.qmth.teachcloud.exchange.common.entity.SysSetting;
+import com.qmth.teachcloud.exchange.common.service.BasicSchoolService;
+import com.qmth.teachcloud.exchange.common.service.CommonCacheService;
+import com.qmth.teachcloud.exchange.common.service.SysSettingService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: 缓存操作serviceImpl 实现类
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2021/3/25
+ */
+@Service
+public class CommonCacheServiceImpl implements CommonCacheService {
+    private final static Logger log = LoggerFactory.getLogger(CommonCacheServiceImpl.class);
+
+    @Resource
+    BasicSchoolService basicSchoolService;
+
+    @Resource
+    SysSettingService sysSettingService;
+
+    /**
+     * 添加学校缓存
+     *
+     * @param schoolId
+     * @return
+     */
+    @Override
+    @Cacheable(value = SystemConstant.SCHOOL_CACHE, key = "#p0")
+    public BasicSchool schoolCache(Long schoolId) {
+        return basicSchoolService.getById(schoolId);
+    }
+
+    /**
+     * 添加学校缓存
+     *
+     * @param code
+     * @return
+     */
+    @Override
+    @Cacheable(value = SystemConstant.SCHOOL_CODE_CACHE, key = "#p0")
+    public BasicSchool schoolCache(String code) {
+        QueryWrapper<BasicSchool> basicSchoolQueryWrapper = new QueryWrapper<>();
+        basicSchoolQueryWrapper.lambda().eq(BasicSchool::getCode, code);
+        return basicSchoolService.getOne(basicSchoolQueryWrapper);
+    }
+
+    /**
+     * 删除学校缓存
+     */
+    @Override
+    @CacheEvict(value = SystemConstant.SCHOOL_CACHE, allEntries = true)
+    public void removeSchoolIdCache() {
+    }
+
+    /**
+     * 删除学校缓存
+     */
+    @Override
+    @CacheEvict(value = SystemConstant.SCHOOL_CODE_CACHE, allEntries = true)
+    public void removeSchoolCodeCache() {
+    }
+
+    @Override
+    @CacheEvict(value = SystemConstant.SYS_SETTING_CACHE, key = "#p0")
+    public String removeSysSetting(Long schoolId) {
+        return null;
+    }
+
+    @Override
+    @Cacheable(value = SystemConstant.SYS_SETTING_CACHE, key = "#p0")
+    public Map<String, SimpleObject> getSysSetting(Long schoolId) {
+        Map<String, SimpleObject> map = new HashMap<>();
+        SysSetting sysSetting = sysSettingService.getBySchoolId(schoolId);
+        if (sysSetting != null) {
+            String parameterObject = sysSetting.getParameterObject();
+            List<SettingObject> settingObjects = JSON.parseArray(parameterObject, SettingObject.class);
+            for (SettingObject settingObject : settingObjects) {
+                for (SimpleObject simpleObject : settingObject.getData()) {
+                    map.put(simpleObject.getCode(), simpleObject);
+                }
+            }
+        }
+        return map;
+    }
+}

+ 3 - 14
teachcloud-exchange-common/src/main/java/com/qmth/teachcloud/exchange/common/service/impl/CommonServiceImpl.java

@@ -1,14 +1,12 @@
 package com.qmth.teachcloud.exchange.common.service.impl;
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.qmth.boot.core.cache.service.CacheService;
 import com.qmth.boot.tools.signature.SignatureEntity;
 import com.qmth.boot.tools.signature.SignatureType;
 import com.qmth.teachcloud.exchange.common.bean.params.OpenParams;
 import com.qmth.teachcloud.exchange.common.contant.SystemConstant;
 import com.qmth.teachcloud.exchange.common.entity.BasicSchool;
 import com.qmth.teachcloud.exchange.common.enums.ExceptionResultEnum;
-import com.qmth.teachcloud.exchange.common.service.BasicSchoolService;
+import com.qmth.teachcloud.exchange.common.service.CommonCacheService;
 import com.qmth.teachcloud.exchange.common.service.CommonService;
 import com.qmth.teachcloud.exchange.common.util.Base64Util;
 import com.qmth.teachcloud.exchange.common.util.JacksonUtil;
@@ -39,14 +37,11 @@ import java.util.StringJoiner;
 public class CommonServiceImpl implements CommonService {
     private final static Logger log = LoggerFactory.getLogger(CommonServiceImpl.class);
 
-    @Resource
-    BasicSchoolService basicSchoolService;
-
     @Value("${cas.config.teachcloudPrintLoginUrl}")
     String teachcloudLoginUrl;
 
     @Resource
-    CacheService cacheService;
+    CommonCacheService commonCacheService;
 
     /**
      * 跳转方法
@@ -71,14 +66,8 @@ public class CommonServiceImpl implements CommonService {
         }
 //        accountUser = URLDecoder.decode(accountUser, SystemConstant.CHARSET_NAME);
 
-        BasicSchool basicSchool = (BasicSchool) cacheService.get(SystemConstant.SCHOOL_CODE_CACHE, schoolCode);
-        if (Objects.isNull(basicSchool)) {
-            QueryWrapper<BasicSchool> basicSchoolQueryWrapper = new QueryWrapper<>();
-            basicSchoolQueryWrapper.lambda().eq(BasicSchool::getCode, schoolCode);
-            basicSchool = basicSchoolService.getOne(basicSchoolQueryWrapper);
-        }
+        BasicSchool basicSchool = commonCacheService.schoolCache(schoolCode);
         Optional.ofNullable(basicSchool).orElseThrow(() -> ExceptionResultEnum.PARAMS_ERROR.exception("学校信息不存在"));
-        cacheService.put(SystemConstant.SCHOOL_CODE_CACHE, schoolCode, basicSchool);
 
         long timestamp = System.currentTimeMillis();
         String path = teachcloudLoginUrl.substring(teachcloudLoginUrl.indexOf(SystemConstant.PATH_SUBSTR), teachcloudLoginUrl.length());

+ 20 - 0
teachcloud-exchange-common/src/main/java/com/qmth/teachcloud/exchange/common/service/impl/SysConfigServiceImpl.java

@@ -0,0 +1,20 @@
+package com.qmth.teachcloud.exchange.common.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.teachcloud.exchange.common.entity.SysConfig;
+import com.qmth.teachcloud.exchange.common.mapper.SysConfigMapper;
+import com.qmth.teachcloud.exchange.common.service.SysConfigService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 参数表 服务实现类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2022-05-14
+ */
+@Service
+public class SysConfigServiceImpl extends ServiceImpl<SysConfigMapper, SysConfig> implements SysConfigService {
+
+}

+ 97 - 0
teachcloud-exchange-common/src/main/java/com/qmth/teachcloud/exchange/common/service/impl/SysSettingServiceImpl.java

@@ -0,0 +1,97 @@
+package com.qmth.teachcloud.exchange.common.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.teachcloud.exchange.common.bean.dto.syssetting.SettingObject;
+import com.qmth.teachcloud.exchange.common.contant.SystemConstant;
+import com.qmth.teachcloud.exchange.common.entity.BasicSchool;
+import com.qmth.teachcloud.exchange.common.entity.SysSetting;
+import com.qmth.teachcloud.exchange.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.exchange.common.mapper.SysSettingMapper;
+import com.qmth.teachcloud.exchange.common.service.CommonCacheService;
+import com.qmth.teachcloud.exchange.common.service.SysSettingService;
+import com.qmth.teachcloud.exchange.common.util.ServletUtil;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * <p>
+ * 系统设置 服务实现类
+ * </p>
+ */
+@Service
+public class SysSettingServiceImpl extends ServiceImpl<SysSettingMapper, SysSetting> implements SysSettingService {
+
+    @Resource
+    CommonCacheService commonCacheService;
+
+    @Override
+    public List<SettingObject> getData() {
+        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
+        QueryWrapper<SysSetting> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(SysSetting::getSchoolId, schoolId);
+        List<SysSetting> sysSettingList = this.list(queryWrapper);
+
+        SysSetting sysSetting = new SysSetting();
+        // 第一次设置,初始化数据
+        if (sysSettingList.isEmpty()) {
+            BasicSchool basicSchool = commonCacheService.schoolCache(schoolId);
+            sysSetting = SysSetting.init(basicSchool);
+            this.save(sysSetting);
+        } else if (sysSettingList.size() > 1) {
+            throw ExceptionResultEnum.ERROR.exception("系统设置有误,查出多条数据");
+        }
+
+        if (!sysSettingList.isEmpty()) {
+            sysSetting = sysSettingList.get(0);
+        }
+
+        return JSON.parseArray(sysSetting.getParameterObject(), SettingObject.class);
+    }
+
+    @Override
+    public boolean saveData(List<SettingObject> settingObjects) {
+        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
+        Long userId = Long.valueOf(ServletUtil.getRequestUserId().toString());
+
+        QueryWrapper<SysSetting> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(SysSetting::getSchoolId, schoolId);
+        SysSetting sysSetting = this.getOne(queryWrapper);
+
+        String parameterObject = JSON.toJSONString(settingObjects);
+        // 新增
+        if (sysSetting == null) {
+            sysSetting = new SysSetting();
+            sysSetting.setId(SystemConstant.getDbUuid());
+            sysSetting.setParameterObject(parameterObject);
+            sysSetting.setSchoolId(schoolId);
+            sysSetting.setCreateId(userId);
+            sysSetting.setCreateTime(System.currentTimeMillis());
+        } else {
+            sysSetting.setParameterObject(parameterObject);
+            sysSetting.setUpdateId(userId);
+            sysSetting.setUpdateTime(System.currentTimeMillis());
+            commonCacheService.removeSysSetting(schoolId);
+        }
+        return this.saveOrUpdate(sysSetting);
+    }
+
+    @Override
+    public SysSetting getBySchoolId(Long schoolId) {
+        QueryWrapper<SysSetting> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(SysSetting::getSchoolId, schoolId);
+        return this.getOne(queryWrapper);
+    }
+
+    @Override
+    public void flushCache(String type) {
+        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
+        commonCacheService.removeSysSetting(schoolId);
+        commonCacheService.getSysSetting(schoolId);
+//        commonCacheService.removePrivilegeUrlCache(PrivilegePropertyEnum.AUTH);
+//        commonCacheService.removePrivilegeUrlCache(PrivilegePropertyEnum.SYS);
+    }
+}

+ 8 - 0
teachcloud-exchange-common/src/main/java/com/qmth/teachcloud/exchange/common/util/ServletUtil.java

@@ -281,4 +281,12 @@ public class ServletUtil {
         ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
         return servletRequestAttributes.getRequest().getSession();
     }
+
+    public static Long getRequestUserId() {
+        Object object = getRequest().getHeader("userId");
+        if (Objects.isNull(object)) {
+            throw ExceptionResultEnum.NOT_LOGIN.exception();
+        }
+        return Long.parseLong(object.toString());
+    }
 }

+ 5 - 0
teachcloud-exchange-common/src/main/resources/mapper/SysConfigMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.qmth.teachcloud.exchange.common.mapper.SysConfigMapper">
+
+</mapper>

+ 5 - 0
teachcloud-exchange-common/src/main/resources/mapper/SysSettingMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.qmth.teachcloud.exchange.common.mapper.SysSettingMapper">
+
+</mapper>