Browse Source

强制从超管激活

wangliang 2 years ago
parent
commit
bb8e95150b

+ 2 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamCardMapper.java

@@ -35,4 +35,6 @@ public interface ExamCardMapper extends BaseMapper<ExamCard> {
     List<SyncExamCardDto> listSyncCardByCourseCodeAndPaperNumber(@Param("schoolId") Long schoolId, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber);
 
     IPage<ExamCard> listPage(@Param("page") Page<ExamCard> page, @Param("schoolId") Long schoolId, @Param("type") String type, @Param("title") String title, @Param("createMethod") String createMethod, @Param("enable") Boolean enable, @Param("createStartTime") Long createStartTime, @Param("createEndTime") Long createEndTime);
+
+    List<ExamCard> listCustomByExamStage(@Param("schoolId") Long schoolId, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber, @Param("type") String type);
 }

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamCardService.java

@@ -33,7 +33,7 @@ public interface ExamCardService extends IService<ExamCard> {
 
     ExamCard getOneByTemplateId(Long id);
 
-    List<ExamCard> listSelectCard(String courseCode, Long cardRuleId);
+    List<ExamCard> listSelectCard(String courseCode, Long cardRuleId, String paperNumber);
 
     void downloadFiles(HttpServletResponse response, ArraysParams arraysParams) throws Exception;
 

+ 7 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamCardServiceImpl.java

@@ -250,7 +250,7 @@ public class ExamCardServiceImpl extends ServiceImpl<ExamCardMapper, ExamCard> i
     }
 
     @Override
-    public List<ExamCard> listSelectCard(String courseCode, Long cardRuleId) {
+    public List<ExamCard> listSelectCard(String courseCode, Long cardRuleId, String paperNumber) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         Set<Long> orgIds = teachcloudCommonService.listSubOrgIds(null);
@@ -272,6 +272,12 @@ public class ExamCardServiceImpl extends ServiceImpl<ExamCardMapper, ExamCard> i
                 }
             }
         }
+
+        // 命题任务未提交的任务,单独查询题卡
+        List<ExamCard> customCards = this.baseMapper.listCustomByExamStage(schoolId, courseCode, paperNumber, CardTypeEnum.CUSTOM.name());
+        if (!customCards.isEmpty()) {
+            list.addAll(customCards);
+        }
         list.sort(Comparator.comparing(ExamCard::getType));
         return list;
     }

+ 18 - 0
distributed-print-business/src/main/resources/mapper/ExamCardMapper.xml

@@ -208,4 +208,22 @@
             </if>
         </where>
     </select>
+    <select id="listCustomByExamStage" resultType="com.qmth.distributed.print.business.entity.ExamCard">
+        SELECT
+            a.id, a.title, a.type, a.create_id createId, a.make_method makeMethod, a.create_method createMethod
+        FROM
+            exam_card a
+        WHERE
+            a.school_id = #{schoolId}
+          AND a.type = #{type}
+          AND a.course_code = #{courseCode}
+          AND EXISTS( SELECT
+                              1
+                          FROM
+                              exam_task_detail b
+                                  LEFT JOIN exam_task et on b.exam_task_id = et.id
+                          WHERE
+                              et.paper_number = #{paperNumber} and et.status = 'STAGE' and FIND_IN_SET(a.id, REPLACE(substring_index(substring_index(CONVERT((b.paper_attachment_ids ->>'$[*].cardId') USING utf8), ']', 1), '[',-1),'"','')))
+        order by a.create_time desc
+    </select>
 </mapper>

+ 2 - 2
distributed-print/src/main/java/com/qmth/distributed/print/api/ExamCardController.java

@@ -178,9 +178,9 @@ public class ExamCardController {
      */
     @ApiOperation(value = "选择已有题卡列表")
     @RequestMapping(value = "/select_card_list", method = RequestMethod.POST)
-    public Result selectCardList(@RequestParam String examId,@RequestParam String courseCode) {
+    public Result selectCardList(@RequestParam String examId,@RequestParam String courseCode, @RequestParam(required = false) String paperNumber) {
         BasicPrintConfig basicPrintConfig = basicPrintConfigService.getByExamIdAndCourseCode(SystemConstant.convertIdToLong(examId),courseCode);
-        List<ExamCard> list = examCardService.listSelectCard(courseCode, basicPrintConfig.getCardRuleId());
+        List<ExamCard> list = examCardService.listSelectCard(courseCode, basicPrintConfig.getCardRuleId(), paperNumber);
         return ResultUtil.ok(list);
     }
 

+ 4 - 2
distributed-print/src/main/resources/application-test.properties

@@ -141,8 +141,10 @@ sync.config.groupDeleteUrl=/api/exam/mark_group/delete
 sync.config.markerSaveUrl=/api/exam/marker/save
 sync.config.markLeaderSaveUrl=/api/exam/subject_header/save
 
-com.qmth.solar.access-key=918d0878ee7944beb448980b011ff804
-com.qmth.solar.access-secret=IY3NB9FXtd7OQHWH5YHl6mbrU9ch33QC
+com.qmth.solar.access-key=274f823e5f59410f8b3bb6edcd8e2b6e
+com.qmth.solar.access-secret=y7AO6W0TOdTF8HpWBwGHbp3wfIHsmUKr
+#com.qmth.solar.access-key=918d0878ee7944beb448980b011ff804
+#com.qmth.solar.access-secret=IY3NB9FXtd7OQHWH5YHl6mbrU9ch33QC
 #com.qmth.solar.license=/Users/king/Downloads/tc-dev-wl.lic
 
 sms.config.smsNormalCode=8635

+ 9 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/AuthInfoService.java

@@ -3,6 +3,8 @@ package com.qmth.teachcloud.common.service;
 import com.qmth.boot.core.solar.model.AppInfo;
 import com.qmth.teachcloud.common.enums.AuthEnum;
 
+import java.util.Map;
+
 /**
  * @Description: 授权信息service
  * @Param:
@@ -49,4 +51,11 @@ public interface AuthInfoService {
      * @throws Exception
      */
     public void saveAuthInfo(AppInfo appInfo, AuthEnum authEnum, byte[] file) throws Exception;
+
+    /**
+     * 更新学校启用/禁用
+     *
+     * @param orgIdsMap
+     */
+    public void updateSchoolEnable(Map<Long, Long> orgIdsMap);
 }

+ 22 - 23
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/CommonCacheService.java

@@ -1,7 +1,6 @@
 package com.qmth.teachcloud.common.service;
 
 import com.qmth.teachcloud.common.bean.auth.AuthBean;
-import com.qmth.teachcloud.common.bean.dto.AuthOrgInfoDto;
 import com.qmth.teachcloud.common.bean.result.MenuResult;
 import com.qmth.teachcloud.common.entity.*;
 import com.qmth.teachcloud.common.enums.PrivilegePropertyEnum;
@@ -335,28 +334,28 @@ public interface CommonCacheService {
      */
     public void removeSurveyTeacherViewCache(Long schoolId, Long semesterId, Long examId, String courseCode, Long collegeId);
 
-    /**
-     * 添加鉴权缓存
-     *
-     * @param code
-     * @return
-     */
-    public AuthOrgInfoDto authInfoCache(String code);
-
-    /**
-     * 修改鉴权缓存
-     *
-     * @param code
-     * @return
-     */
-    public AuthOrgInfoDto updateAuthInfoCache(String code);
-
-    /**
-     * 删除鉴权缓存
-     *
-     * @param code
-     */
-    public void removeAuthInfoCache(String code);
+//    /**
+//     * 添加鉴权缓存
+//     *
+//     * @param code
+//     * @return
+//     */
+//    public AuthOrgInfoDto authInfoCache(String code);
+//
+//    /**
+//     * 修改鉴权缓存
+//     *
+//     * @param code
+//     * @return
+//     */
+//    public AuthOrgInfoDto updateAuthInfoCache(String code);
+//
+//    /**
+//     * 删除鉴权缓存
+//     *
+//     * @param code
+//     */
+//    public void removeAuthInfoCache(String code);
 
     /**
      * 添加系统参数缓存

+ 77 - 41
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/AuthInfoServiceImpl.java

@@ -5,8 +5,8 @@ import com.qmth.boot.core.solar.config.SolarProperties;
 import com.qmth.boot.core.solar.model.AppInfo;
 import com.qmth.boot.core.solar.model.OrgInfo;
 import com.qmth.boot.core.solar.service.SolarService;
-import com.qmth.teachcloud.common.bean.dto.AuthOrgInfoDto;
 import com.qmth.teachcloud.common.config.DictionaryConfig;
+import com.qmth.teachcloud.common.contant.SpringContextHolder;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.BasicSchool;
 import com.qmth.teachcloud.common.entity.SysOrg;
@@ -14,9 +14,6 @@ import com.qmth.teachcloud.common.entity.TSAuth;
 import com.qmth.teachcloud.common.enums.AuthEnum;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.UploadFileEnum;
-import com.qmth.teachcloud.common.mapper.BasicSchoolMapper;
-import com.qmth.teachcloud.common.mapper.SysOrgMapper;
-import com.qmth.teachcloud.common.mapper.TSAuthMapper;
 import com.qmth.teachcloud.common.service.*;
 import com.qmth.teachcloud.common.util.FileStoreUtil;
 import org.apache.commons.codec.digest.DigestUtils;
@@ -52,18 +49,12 @@ public class AuthInfoServiceImpl implements AuthInfoService {
     @Resource
     TSAuthService tsAuthService;
 
-    @Resource
-    TSAuthMapper tsAuthMapper;
-
     @Resource
     CommonCacheService commonCacheService;
 
     @Resource
     BasicSchoolService basicSchoolService;
 
-    @Resource
-    BasicSchoolMapper basicSchoolMapper;
-
     @Resource
     FileStoreUtil fileStoreUtil;
 
@@ -76,9 +67,6 @@ public class AuthInfoServiceImpl implements AuthInfoService {
     @Resource
     SysOrgService sysOrgService;
 
-    @Resource
-    SysOrgMapper sysOrgMapper;
-
     /**
      * 授权信息初始化
      *
@@ -94,24 +82,20 @@ public class AuthInfoServiceImpl implements AuthInfoService {
                         && !Objects.equals(solarProperties.getAccessKey().trim(), "")
                         && Objects.nonNull(solarProperties.getAccessSecret())
                         && !Objects.equals(solarProperties.getAccessSecret().trim(), "")) {//在线激活
-                    authInfoService.saveAuthInfo(appInfo, AuthEnum.ON_LINE, null);
+//                    this.authError("不支持在线激活,请联系系统管理员!");
+                    log.error("不支持在线激活,请联系系统管理员!");
+                    licenseForDb();
                 } else if (Objects.nonNull(solarProperties.getLicense())
                         && !Objects.equals(solarProperties.getLicense().trim(), "")) {//离线激活
-                    authInfoService.saveAuthInfo(appInfo, AuthEnum.OFF_LINE, null);
+//                    this.authError("不支持离线激活,请联系系统管理员!");
+                    log.error("不支持离线激活,请联系系统管理员!");
+                    licenseForDb();
                 }
             } else {
-                QueryWrapper<TSAuth> tsAuthQueryWrapper = new QueryWrapper<>();
-                tsAuthQueryWrapper.lambda().isNotNull(TSAuth::getFile);
-                List<TSAuth> tsAuthList = tsAuthService.list(tsAuthQueryWrapper);
-                if (!CollectionUtils.isEmpty(tsAuthList)) {
-                    for (TSAuth t : tsAuthList) {
-                        appInfo = solarService.update(t.getFile());
-                        authInfoService.saveAuthInfo(appInfo, AuthEnum.OFF_LINE, t.getFile());
-                    }
-                }
+                licenseForDb();
             }
         } catch (Exception e) {
-            e.printStackTrace();
+            log.error(SystemConstant.LOG_ERROR, e);
         }
         return appInfo;
     }
@@ -124,11 +108,11 @@ public class AuthInfoServiceImpl implements AuthInfoService {
      */
     @Override
     public void appHasExpired(String code) {
-        if (Objects.nonNull(code)) {
-            AuthOrgInfoDto authOrgInfoDto = commonCacheService.authInfoCache(code);
-            if (Objects.isNull(authOrgInfoDto) || (Objects.nonNull(authOrgInfoDto) && authOrgInfoDto.getControl().hasExpired())) {
-                throw ExceptionResultEnum.AUTH_INFO_ERROR.exception();
-            }
+        BasicSchool basicSchool = commonCacheService.schoolCache(code);
+        if ((Objects.nonNull(basicSchool) && Objects.nonNull(basicSchool.getEnable()) && basicSchool.getEnable() == false)
+                || (Objects.isNull(solarService.getAppInfo()) || solarService.getAppInfo().getControl().hasExpired())
+                || (Objects.isNull(solarService.getAppControl()) || solarService.getAppControl().hasExpired())) {
+            throw ExceptionResultEnum.AUTH_INFO_ERROR.exception();
         }
     }
 
@@ -141,7 +125,7 @@ public class AuthInfoServiceImpl implements AuthInfoService {
     public void updateLicense(byte[] licenseData) throws Exception {
         AppInfo appInfo = solarService.update(licenseData);
         if (Objects.isNull(appInfo)) {
-            throw ExceptionResultEnum.ERROR.exception("激活失败");
+            throw ExceptionResultEnum.AUTH_INFO_ERROR.exception("激活失败");
         }
         authInfoService.saveAuthInfo(appInfo, AuthEnum.OFF_LINE, licenseData);
     }
@@ -175,6 +159,7 @@ public class AuthInfoServiceImpl implements AuthInfoService {
         List<OrgInfo> orgInfoList = solarService.getOrgList();
         List<TSAuth> tsAuthList = null;
         Set<Long> orgIdsSet = null;
+        Map<Long, Long> orgIdsMap = null;
         Set<BasicSchool> basicSchoolSet = null;
         Set<SysOrg> sysOrgSet = null;
         if (!CollectionUtils.isEmpty(orgInfoList)) {
@@ -182,10 +167,12 @@ public class AuthInfoServiceImpl implements AuthInfoService {
             orgIdsSet = new HashSet<>();
             basicSchoolSet = new HashSet<>();
             sysOrgSet = new HashSet<>();
+            orgIdsMap = new HashMap<>();
         }
         boolean oss = dictionaryConfig.sysDomain().isOss();
         for (OrgInfo o : orgInfoList) {
             orgIdsSet.add(o.getId());
+            orgIdsMap.put(o.getId(), o.getId());
             if (authEnum == AuthEnum.OFF_LINE) {
                 if (Objects.isNull(file)) {
                     tsAuthList.add(new TSAuth(o.getId(), solarProperties.getLicense(), authEnum, appInfo.getControl().getExpireTime()));
@@ -195,10 +182,6 @@ public class AuthInfoServiceImpl implements AuthInfoService {
             } else {
                 tsAuthList.add(new TSAuth(o.getId(), solarProperties.getAccessKey(), solarProperties.getAccessSecret(), authEnum, appInfo.getControl().getExpireTime()));
             }
-            if (Objects.isNull(commonCacheService.updateAuthInfoCache(o.getCode()))) {
-                commonCacheService.removeAuthInfoCache(o.getCode());
-            }
-
             QueryWrapper<BasicSchool> basicSchoolQueryWrapper = new QueryWrapper<>();
             basicSchoolQueryWrapper.lambda().eq(BasicSchool::getCode, o.getCode());
             BasicSchool basicSchool = basicSchoolService.getOne(basicSchoolQueryWrapper);
@@ -243,20 +226,73 @@ public class AuthInfoServiceImpl implements AuthInfoService {
         }
 
         if (!CollectionUtils.isEmpty(tsAuthList) && !CollectionUtils.isEmpty(orgIdsSet)) {
-            QueryWrapper<TSAuth> tsAuthQueryWrapper = new QueryWrapper<>();
-            tsAuthQueryWrapper.lambda().in(TSAuth::getSchoolId, orgIdsSet);
-            tsAuthService.remove(tsAuthQueryWrapper);
-            tsAuthMapper.insertBatch(tsAuthList);
+            tsAuthService.remove(new QueryWrapper<TSAuth>().lambda().ge(TSAuth::getId, 0L));
+            tsAuthService.saveOrUpdateBatch(tsAuthList);
 
             if (!CollectionUtils.isEmpty(basicSchoolSet)) {
+                basicSchoolService.saveOrUpdateBatch(basicSchoolSet);
                 commonCacheService.removeSchoolIdCache();
                 commonCacheService.removeSchoolCodeCache();
-                basicSchoolMapper.insertBatch(basicSchoolSet);
             }
 
+            AuthInfoService authInfoService = SpringContextHolder.getBean(AuthInfoService.class);
+            authInfoService.updateSchoolEnable(orgIdsMap);
+
             if (!CollectionUtils.isEmpty(sysOrgSet)) {
+                sysOrgService.saveOrUpdateBatch(sysOrgSet);
                 commonCacheService.removeOrgCache();
-                sysOrgMapper.insertBatch(sysOrgSet);
+            }
+        }
+    }
+
+//    /**
+//     * 激活失败
+//     *
+//     * @param message
+//     */
+//    protected void authError(String message) {
+//        List<OrgInfo> orgInfoList = solarService.getOrgList();
+//        if (!CollectionUtils.isEmpty(orgInfoList)) {
+//            Map<Long, Long> orgIdsMap = orgInfoList.stream().collect(Collectors.toMap(m -> m.getId(), m -> m.getId()));
+//            this.updateSchoolEnable(orgIdsMap);
+//        }
+//        throw ExceptionResultEnum.AUTH_INFO_ERROR.exception(message);
+//    }
+
+    /**
+     * 更新学校启用/禁用
+     *
+     * @param orgIdsMap
+     */
+    public void updateSchoolEnable(Map<Long, Long> orgIdsMap) {
+        List<BasicSchool> basicSchoolList = basicSchoolService.list();
+        if (!CollectionUtils.isEmpty(basicSchoolList)) {
+            for (BasicSchool b : basicSchoolList) {
+                if (orgIdsMap.containsKey(b.getId())) {
+                    b.setEnable(true);
+                } else {
+                    b.setEnable(false);
+                }
+            }
+            basicSchoolService.saveOrUpdateBatch(basicSchoolList);
+            commonCacheService.removeSchoolIdCache();
+            commonCacheService.removeSchoolCodeCache();
+        }
+    }
+
+    /**
+     * 强制从db更新激活信息
+     *
+     * @throws Exception
+     */
+    public void licenseForDb() throws Exception {
+        QueryWrapper<TSAuth> tsAuthQueryWrapper = new QueryWrapper<>();
+        tsAuthQueryWrapper.lambda().isNotNull(TSAuth::getFile);
+        List<TSAuth> tsAuthList = tsAuthService.list(tsAuthQueryWrapper);
+        if (!CollectionUtils.isEmpty(tsAuthList)) {
+            for (TSAuth t : tsAuthList) {
+                AppInfo appInfo = solarService.update(t.getFile());
+                authInfoService.saveAuthInfo(appInfo, AuthEnum.OFF_LINE, t.getFile());
             }
         }
     }

+ 33 - 38
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/CommonCacheServiceImpl.java

@@ -1,11 +1,8 @@
 package com.qmth.teachcloud.common.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.qmth.boot.core.solar.model.AppInfo;
-import com.qmth.boot.core.solar.model.OrgInfo;
 import com.qmth.boot.core.solar.service.SolarService;
 import com.qmth.teachcloud.common.bean.auth.AuthBean;
-import com.qmth.teachcloud.common.bean.dto.AuthOrgInfoDto;
 import com.qmth.teachcloud.common.bean.result.MenuResult;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.*;
@@ -20,9 +17,7 @@ import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.util.List;
-import java.util.Objects;
 import java.util.Set;
-import java.util.stream.Collectors;
 
 /**
  * @Description: 缓存操作serviceImpl 实现类
@@ -538,39 +533,39 @@ public class CommonCacheServiceImpl implements CommonCacheService {
 
     }
 
-    @Override
-    @Cacheable(value = SystemConstant.AUTH_INFO_CACHE, key = "#p0", unless = "#result == null")
-    public AuthOrgInfoDto authInfoCache(String code) {
-        AppInfo appInfo = solarService.getAppInfo();
-        AuthOrgInfoDto authOrgInfoDto = null;
-        if (Objects.nonNull(appInfo)) {
-            List<OrgInfo> orgInfoList = solarService.getOrgList().stream().filter(s -> Objects.equals(s.getCode(), code)).collect(Collectors.toList());
-            if (Objects.nonNull(orgInfoList) && orgInfoList.size() > 0) {
-                authOrgInfoDto = new AuthOrgInfoDto(orgInfoList.get(0), appInfo.getControl());
-            }
-        }
-        return authOrgInfoDto;
-    }
-
-    @Override
-    @CachePut(value = SystemConstant.AUTH_INFO_CACHE, key = "#p0", condition = "#result != null")
-    public AuthOrgInfoDto updateAuthInfoCache(String code) {
-        AppInfo appInfo = solarService.getAppInfo();
-        AuthOrgInfoDto authOrgInfoDto = null;
-        if (Objects.nonNull(appInfo)) {
-            List<OrgInfo> orgInfoList = solarService.getOrgList().stream().filter(s -> Objects.equals(s.getCode(), code)).collect(Collectors.toList());
-            if (Objects.nonNull(orgInfoList) && orgInfoList.size() > 0) {
-                authOrgInfoDto = new AuthOrgInfoDto(orgInfoList.get(0), appInfo.getControl());
-            }
-        }
-        return authOrgInfoDto;
-    }
-
-    @Override
-    @CacheEvict(value = SystemConstant.AUTH_INFO_CACHE, key = "#p0")
-    public void removeAuthInfoCache(String code) {
-
-    }
+//    @Override
+//    @Cacheable(value = SystemConstant.AUTH_INFO_CACHE, key = "#p0", unless = "#result == null")
+//    public AuthOrgInfoDto authInfoCache(String code) {
+//        AppInfo appInfo = solarService.getAppInfo();
+//        AuthOrgInfoDto authOrgInfoDto = null;
+//        if (Objects.nonNull(appInfo)) {
+//            List<OrgInfo> orgInfoList = solarService.getOrgList().stream().filter(s -> Objects.equals(s.getCode(), code)).collect(Collectors.toList());
+//            if (Objects.nonNull(orgInfoList) && orgInfoList.size() > 0) {
+//                authOrgInfoDto = new AuthOrgInfoDto(orgInfoList.get(0), appInfo.getControl());
+//            }
+//        }
+//        return authOrgInfoDto;
+//    }
+//
+//    @Override
+//    @CachePut(value = SystemConstant.AUTH_INFO_CACHE, key = "#p0", condition = "#result != null")
+//    public AuthOrgInfoDto updateAuthInfoCache(String code) {
+//        AppInfo appInfo = solarService.getAppInfo();
+//        AuthOrgInfoDto authOrgInfoDto = null;
+//        if (Objects.nonNull(appInfo)) {
+//            List<OrgInfo> orgInfoList = solarService.getOrgList().stream().filter(s -> Objects.equals(s.getCode(), code)).collect(Collectors.toList());
+//            if (Objects.nonNull(orgInfoList) && orgInfoList.size() > 0) {
+//                authOrgInfoDto = new AuthOrgInfoDto(orgInfoList.get(0), appInfo.getControl());
+//            }
+//        }
+//        return authOrgInfoDto;
+//    }
+//
+//    @Override
+//    @CacheEvict(value = SystemConstant.AUTH_INFO_CACHE, key = "#p0")
+//    public void removeAuthInfoCache(String code) {
+//
+//    }
 
     /**
      * 添加系统参数缓存