Kaynağa Gözat

fix:教研分析更改

caozixuan 1 yıl önce
ebeveyn
işleme
387e3c18aa

+ 3 - 2
teachcloud-common/src/main/java/com/qmth/teachcloud/common/contant/SystemConstant.java

@@ -125,6 +125,8 @@ public class SystemConstant {
     public static final String TEACHCLOUD_REPORT_OPEN_CALCULATE_API = "/api/report/open/calculate";
     public static final String TEACHCLOUD_REPORT_OPEN_PUBLISH_API = "/api/report/open/publish";
     public static final String TEACHCLOUD_REPORT_SSO_LOGIN_API = "/api/report/sso/login";
+    public static final String TEACHCLOUD_REPORT_LOGIN_URL = "/#/login-authen/";
+    public static final String TEACHCLOUD_REPORT_STUDENT_URL = "/#/student-report/";
 
     /**
      * 分布式印刷api
@@ -176,11 +178,10 @@ public class SystemConstant {
     public static final String TEACHCLOUD_REPORT_HOST_URL = "teachcloud.report.host.url";
     public static final String TEACHCLOUD_PRINT_OPEN_CALLBACK_PWD = "teachcloud.print.open.callback.pwd";
     public static final String QUESTION_HOST_URL = "question.host.url";
-    public static final String TEACHCLOUD_REPORT_STUDENT_URL = "teachcloud.report.student.url";
-    public static final String TEACHCLOUD_REPORT_LOGIN_URL = "teachcloud.report.login.url";
     public static final String TEACHCLOUD_PRINT_HOST_URL = "teachcloud.print.host.url";
     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 OPEN_FLOW_MESSAGE_PUSH = "open.flow.message.push";//是否开启消息推送
     public static final String FLOW_MESSAGE_TYPE = "flow.message.type";//消息类型,标准/非标准

+ 1 - 11
teachcloud-report/install/config.ini

@@ -1,28 +1,18 @@
 [app]
 version=3.3.1
-name=�����
-//������������
+name=½ÌÑзÖÎö
 portal=http://localhost:7500/
-//���ģ�����ö��ŷָ���ģ��������Ŀ¼������ͳһ
 module=api
-//������common������ö��ŷָ�
 depend=mysql,nginx,redis
 
 [mysql]
-//��������ö��ŷָ����Զ�����
 db=teachreport_db
-//����֮ǰִ�е�SQL�ű���ͨ��Ϊinit.sql
 before=init.sql
-//����֮��ִ�е�SQL�ű�������Ϊ��
 after=
 
 [upgrade]
-//����֧�ֵ���С�汾�ţ�����Ϊ��
 minmum_version=3.3.0
 
-//��module���ö�Ӧ��һ��ģ��һ������
 [api]
-//��ģ�������http�˿ڣ������жϽ��̴���Լ�����ֹͣ
 port=7580
-//�������������
 exec=%QMTH_HOME%\common\jdk\bin\java -Xms512m -Xmx1g -Dqmth.home=%QMTH_HOME% -jar teachreport.jar

+ 22 - 22
teachcloud-report/install/mysql/init/teachreport_db.sql

@@ -1351,27 +1351,6 @@ CREATE TABLE `t_school_role` (
                                  PRIMARY KEY (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学校角色权限表';
 
--- ----------------------------
--- Function structure for getRootChildId
--- ----------------------------
-delimiter //
-DROP FUNCTION IF EXISTS `getRootChildId`;
-CREATE FUNCTION `getRootChildId`(rootId bigint) RETURNS varchar(1000) CHARSET utf8mb4
-    DETERMINISTIC
-BEGIN
-    DECLARE ptemp VARCHAR(1000);
-    DECLARE ctemp VARCHAR(1000);
-    SET ptemp = '#';
-    SET ctemp = cast(rootId as CHAR);
-    WHILE ctemp IS NOT NULL DO
-            SET ptemp = concat(ptemp, ',', ctemp);
-            SELECT group_concat(id) INTO ctemp FROM sys_org WHERE FIND_IN_SET(parent_id, ctemp) > 0;
-        END WHILE;
-    RETURN ptemp;
-END;
-//
-delimiter ;
-
 INSERT INTO `sys_privilege` VALUES (1, '基础配置', 'base', 'MENU', NULL, 1, NULL, NULL, 1, 1, 1);
 INSERT INTO `sys_privilege` VALUES (2, '用户管理', 'user', 'MENU', 1, 1, NULL, NULL, 1, 1, 1);
 INSERT INTO `sys_privilege` VALUES (4, '组织架构', 'OrganizationManage', 'MENU', 2, 1, NULL, NULL, 1, 1, 1);
@@ -1761,4 +1740,25 @@ INSERT INTO `sys_config` VALUES (24, NULL, NULL, 'sms.sign.name', '短信签名'
 INSERT INTO `sys_config` VALUES (25, NULL, NULL, 'sms.tpl.code', '登录短信验证码', 'SMS_147416565', NULL, 1, 2, 1, NULL, NULL, NULL);
 INSERT INTO `sys_config` VALUES (26, NULL, NULL, 'sys.txt.charset', 'txt文件编码', 'utf8', NULL, 1, 1, 1, NULL, NULL, NULL);
 INSERT INTO `sys_config` VALUES (27, NULL, NULL, 'teachcloud.print.host.default.url', '分布式印刷地址', 'http://127.0.0.1:7400', NULL, 1, 1, 1, NULL, NULL, NULL);
-INSERT INTO `sys_config` VALUES (28, NULL, NULL, 'teachcloud.report.location.url', '报告和登录地址', 'http://127.0.0.1:7500', NULL, 1, 2, 1, NULL, NULL, NULL);
+INSERT INTO `sys_config` VALUES (28, NULL, NULL, 'teachcloud.report.host.default.url', '报告和登录地址', 'http://127.0.0.1:7500', NULL, 1, 2, 1, NULL, NULL, NULL);
+
+-- ----------------------------
+-- Function structure for getRootChildId
+-- ----------------------------
+DROP FUNCTION IF EXISTS `getRootChildId`;
+delimiter //
+CREATE FUNCTION `getRootChildId`(rootId bigint) RETURNS varchar(1000) CHARSET utf8mb4
+    DETERMINISTIC
+BEGIN
+    DECLARE ptemp VARCHAR(1000);
+    DECLARE ctemp VARCHAR(1000);
+    SET ptemp = '#';
+    SET ctemp = cast(rootId as CHAR);
+    WHILE ctemp IS NOT NULL DO
+            SET ptemp = concat(ptemp, ',', ctemp);
+            SELECT group_concat(id) INTO ctemp FROM sys_org WHERE FIND_IN_SET(parent_id, ctemp) > 0;
+        END WHILE;
+    RETURN ptemp;
+END;
+//
+delimiter ;

+ 2 - 1
teachcloud-report/install/mysql/upgrade/3.3.1.sql

@@ -1,3 +1,4 @@
 ALTER TABLE `basic_school` ADD COLUMN `has_paper_number` TINYINT(1) NULL DEFAULT '0' COMMENT '该学校是否有固定试卷编号' AFTER `default_school`;
 UPDATE `sys_user` SET `password` = 'UW10aDg3ODYzNTc3' WHERE (`id` = '1');
-ALTER TABLE `basic_school` ADD COLUMN `background_image` VARCHAR(500) NULL COMMENT '学校首页背景图' AFTER `has_paper_number`;
+ALTER TABLE `basic_school` ADD COLUMN `background_image` VARCHAR(500) NULL COMMENT '学校首页背景图' AFTER `has_paper_number`;
+UPDATE sys_config SET config_key = 'teachcloud.report.host.default.url' WHERE (id = '28');

+ 2 - 2
teachcloud-report/src/main/java/com/qmth/teachcloud/report/api/SsoApiController.java

@@ -148,9 +148,9 @@ public class SsoApiController {
         HttpServletResponse response = ServletUtil.getResponse();
         response.setHeader("Access-Control-Allow-Origin", SystemConstant.PATH_MATCH);
 
-        SysConfig sysConfig = commonCacheService.addSysConfigCache(SystemConstant.TEACHCLOUD_REPORT_LOGIN_URL);
+        SysConfig sysConfig = commonCacheService.addSysConfigCache(basicSchool.getId(), SystemConstant.TEACHCLOUD_REPORT_LOCATION_URL);
         Optional.ofNullable(sysConfig).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未配置单点登录地址"));
-        String loginAuthenUrl = sysConfig.getConfigValue();
+        String loginAuthenUrl = sysConfig.getConfigValue() + SystemConstant.TEACHCLOUD_REPORT_LOGIN_URL;
         if (loginAuthenUrl.contains(SystemConstant.PATH_MATCH)) {
             loginAuthenUrl = loginAuthenUrl.replace(SystemConstant.PATH_MATCH, basicSchool.getCode());
         }

+ 17 - 51
teachcloud-report/src/main/java/com/qmth/teachcloud/report/api/SysAdminSetController.java

@@ -1,6 +1,5 @@
 package com.qmth.teachcloud.report.api;
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.teachcloud.common.bean.result.SysConfigResult;
 import com.qmth.teachcloud.common.contant.SystemConstant;
@@ -13,7 +12,6 @@ import com.qmth.teachcloud.common.util.ResultUtil;
 import com.qmth.teachcloud.report.business.bean.params.SysAdminSetParam;
 import com.qmth.teachcloud.report.business.bean.result.SysAdminSetResult;
 import io.swagger.annotations.*;
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.BindingResult;
 import org.springframework.web.bind.annotation.*;
@@ -34,17 +32,19 @@ import java.util.Optional;
 @RestController
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_REPORT_SET)
 public class SysAdminSetController {
+
     @Resource
     CommonCacheService commonCacheService;
+
     @Resource
     SysConfigService sysConfigService;
 
     @ApiOperation(value = "同步配置查询")
-    @ApiResponses({@ApiResponse(code = 200, message = "同步配置信息", response = SysAdminSetResult.class)})
+    @ApiResponses({ @ApiResponse(code = 200, message = "同步配置信息", response = SysAdminSetResult.class) })
     @RequestMapping(value = "/sync/select", method = RequestMethod.POST)
     public Result sysadminSyncSelect(@ApiParam(value = "学校id ", required = true) @RequestParam Long schoolId) {
         SysConfig sysConfigTeachCloudPrintHostUrl = commonCacheService.addSysConfigCache(schoolId, SystemConstant.TEACHCLOUD_PRINT_HOST_URL);
-        SysConfig sysConfigTeachCloudReportLocationUrl = commonCacheService.addSysConfigCache(SystemConstant.TEACHCLOUD_REPORT_LOCATION_URL);
+        SysConfig sysConfigTeachCloudReportLocationUrl = commonCacheService.addSysConfigCache(schoolId, SystemConstant.TEACHCLOUD_REPORT_LOCATION_URL);
 
         List<SysConfigResult> sysConfigResultList = new ArrayList<>();
         if (Objects.nonNull(sysConfigTeachCloudPrintHostUrl)) {
@@ -52,7 +52,8 @@ public class SysAdminSetController {
         } else {
             SysConfig sysConfigTeachCloudPrintHostDefaultUrl = commonCacheService.addSysConfigCache(SystemConstant.TEACHCLOUD_PRINT_HOST_DEFAULT_URL);
             if (Objects.nonNull(sysConfigTeachCloudPrintHostDefaultUrl)) {
-                sysConfigResultList.add(new SysConfigResult(sysConfigTeachCloudPrintHostDefaultUrl));
+                sysConfigResultList.add(new SysConfigResult(null, SystemConstant.TEACHCLOUD_PRINT_HOST_URL, "分布式印刷地址",
+                        sysConfigTeachCloudPrintHostDefaultUrl.getConfigValue(), 1));
             } else {
                 sysConfigResultList.add(new SysConfigResult(null, SystemConstant.TEACHCLOUD_PRINT_HOST_URL, "分布式印刷地址", "", 1));
             }
@@ -60,13 +61,20 @@ public class SysAdminSetController {
         if (Objects.nonNull(sysConfigTeachCloudReportLocationUrl)) {
             sysConfigResultList.add(new SysConfigResult(sysConfigTeachCloudReportLocationUrl));
         } else {
-            sysConfigResultList.add(new SysConfigResult(null, SystemConstant.TEACHCLOUD_REPORT_LOCATION_URL, "报告和登录地址", "", 2));
+            SysConfig sysConfigTeachCloudReportHostDefaultUrl = commonCacheService.addSysConfigCache(SystemConstant.TEACHCLOUD_REPORT_HOST_DEFAULT_URL);
+            if (Objects.nonNull(sysConfigTeachCloudReportHostDefaultUrl)) {
+                sysConfigResultList.add(
+                        new SysConfigResult(null, SystemConstant.TEACHCLOUD_REPORT_LOCATION_URL, "报告和登录地址",
+                                sysConfigTeachCloudReportHostDefaultUrl.getConfigValue(), 2));
+            } else {
+                sysConfigResultList.add(new SysConfigResult(null, SystemConstant.TEACHCLOUD_REPORT_LOCATION_URL, "报告和登录地址", "", 2));
+            }
         }
         return ResultUtil.ok(new SysAdminSetResult(schoolId, sysConfigResultList));
     }
 
     @ApiOperation(value = "同步配置保存")
-    @ApiResponses({@ApiResponse(code = 200, message = "同步配置信息", response = ResultUtil.class)})
+    @ApiResponses({ @ApiResponse(code = 200, message = "同步配置信息", response = ResultUtil.class) })
     @RequestMapping(value = "/sync/save", method = RequestMethod.POST)
     @Transactional
     public Result sysadminSyncSave(@Valid @RequestBody SysAdminSetParam sysAdminSetParam, BindingResult bindingResult) {
@@ -76,56 +84,14 @@ public class SysAdminSetController {
         Optional.ofNullable(sysAdminSetParam.getParam()).orElseThrow(() -> ExceptionResultEnum.PARAMS_ERROR.exception("同步配置地址不能为空"));
 
         List<SysConfigResult> sysConfigResultList = sysAdminSetParam.getParam();
-        Long schoolId = sysAdminSetParam.getSchoolId();
         List<SysConfig> sysConfigList = new ArrayList<>();
-        List<String> keys = new ArrayList<>();
-        String value = null;
         for (SysConfigResult s : sysConfigResultList) {
-            if (s.getCode().contains(SystemConstant.TEACHCLOUD_REPORT_LOCATION_URL)) {
-                value = (String) s.getValue();
-                sysConfigList.add(new SysConfig(s));
-                if (Objects.nonNull(s.getEnable()) && !s.getEnable()){
-                    throw ExceptionResultEnum.ERROR.exception("报告和登录地址不能关闭");
-                }
-            } else {
-                s.setId(SystemConstant.getDbUuid());
-                s.setCode(s.getCode().replace(".default", ""));
-                keys.add(s.getCode());
-                sysConfigList.add(new SysConfig(sysAdminSetParam.getSchoolId(), s));
-            }
+            sysConfigList.add(new SysConfig(sysAdminSetParam.getSchoolId(), s));
         }
-        if (Objects.nonNull(value) && !Objects.equals(value.trim(), "")) {
-            SysConfig sysConfigTeachCloudReportLocalUrl = commonCacheService.addSysConfigCache(SystemConstant.TEACHCLOUD_REPORT_LOGIN_URL);
-            SysConfig sysConfigTeachCloudReportStudentUrl = commonCacheService.addSysConfigCache(SystemConstant.TEACHCLOUD_REPORT_STUDENT_URL);
-            String[] localStrs = StringUtils.split(sysConfigTeachCloudReportLocalUrl.getConfigValue(), "#");
-            String[] studentStrs = StringUtils.split(sysConfigTeachCloudReportStudentUrl.getConfigValue(), "#");
-            String split = value.substring(value.length() - 1, value.length());
-            if (split.contains(SystemConstant.ORG_SPLIT)) {
-                sysConfigTeachCloudReportLocalUrl.setConfigValue(value + SystemConstant.DEFAULT_SIGN + localStrs[1]);
-                sysConfigTeachCloudReportStudentUrl.setConfigValue(value + SystemConstant.DEFAULT_SIGN + studentStrs[1]);
-            } else {
-                sysConfigTeachCloudReportLocalUrl.setConfigValue(value + SystemConstant.ORG_SPLIT + SystemConstant.DEFAULT_SIGN + localStrs[1]);
-                sysConfigTeachCloudReportStudentUrl.setConfigValue(value + SystemConstant.ORG_SPLIT + SystemConstant.DEFAULT_SIGN + studentStrs[1]);
-            }
-            sysConfigList.add(sysConfigTeachCloudReportLocalUrl);
-            sysConfigList.add(sysConfigTeachCloudReportStudentUrl);
-            commonCacheService.updateSysConfigCache(sysConfigTeachCloudReportLocalUrl.getConfigKey());
-            commonCacheService.updateSysConfigCache(sysConfigTeachCloudReportStudentUrl.getConfigKey());
-        } else {
-            throw ExceptionResultEnum.ERROR.exception("报告和登录地址不能为空");
-        }
-        QueryWrapper<SysConfig> sysConfigQueryWrapper = new QueryWrapper<>();
-        sysConfigQueryWrapper.lambda().eq(SysConfig::getSchoolId, schoolId)
-                .in(SysConfig::getConfigKey, keys);
-        sysConfigService.remove(sysConfigQueryWrapper);
         sysConfigService.saveOrUpdateBatch(sysConfigList);
 
         for (SysConfigResult s : sysConfigResultList) {
-            if (s.getCode().contains(SystemConstant.TEACHCLOUD_REPORT_LOCATION_URL)) {
-                commonCacheService.updateSysConfigCache(s.getCode());
-            } else {
-                commonCacheService.updateSysConfigCache(sysAdminSetParam.getSchoolId(), s.getCode());
-            }
+            commonCacheService.updateSysConfigCache(sysAdminSetParam.getSchoolId(), s.getCode());
         }
         return ResultUtil.ok(true);
     }

+ 5 - 4
teachcloud-report/src/main/java/com/qmth/teachcloud/report/api/WudaOpenApiController.java

@@ -91,10 +91,10 @@ public class WudaOpenApiController {
             log.info("test-stu-cn:{}", cn);
         }
         BasicSchool basicSchool = commonCacheService.schoolCache(SystemConstant.SCHOOL_CODE);
-        SysConfig sysConfig = commonCacheService.addSysConfigCache(SystemConstant.TEACHCLOUD_REPORT_STUDENT_URL);
+        SysConfig sysConfig = commonCacheService.addSysConfigCache(basicSchool.getId(), SystemConstant.TEACHCLOUD_REPORT_LOCATION_URL);
         Optional.ofNullable(sysConfig).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未配置学生报告地址"));
 
-        String testUrl = sysConfig.getConfigValue() + basicSchool.getId() + SystemConstant.ORG_SPLIT + uid + SystemConstant.ORG_SPLIT + cn;
+        String testUrl = sysConfig.getConfigValue() + SystemConstant.TEACHCLOUD_REPORT_STUDENT_URL + basicSchool.getId() + SystemConstant.ORG_SPLIT + uid + SystemConstant.ORG_SPLIT + cn;
         log.info("test-stu-testUrl:{}", testUrl);
         String encoderUid = EncrypAES.encrypt(uid);
         log.info("test-encoderUid:{}", encoderUid);
@@ -140,14 +140,15 @@ public class WudaOpenApiController {
         String testPattern = "{0}{1}{2}{3}";
         String testCode = URLEncoder.encode(MessageFormat.format(testPattern, userAuthenticationDto.getUid() + SystemConstant.ORG_SPLIT + cn, SignatureEntityTest.FIELD_JOINER, SignatureEntityTest.encrypt(userAuthenticationDto.getCode())), SystemConstant.CHARSET_NAME);
         log.info("test-tea-code:{}", testCode);
-        SysConfig sysConfig = commonCacheService.addSysConfigCache(SystemConstant.TEACHCLOUD_REPORT_LOGIN_URL);
+        BasicSchool basicSchool = commonCacheService.schoolCache(SystemConstant.SCHOOL_CODE);
+        SysConfig sysConfig = commonCacheService.addSysConfigCache(basicSchool.getId(), SystemConstant.TEACHCLOUD_REPORT_LOCATION_URL);
         Optional.ofNullable(sysConfig).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未配置单点登录地址"));
 
         log.info("test-tea-url:{}", sysConfig.getConfigValue() + testCode);
         // 测试结束
         log.info("code:{}", code);
         response.setHeader("Access-Control-Allow-Origin", SystemConstant.PATH_MATCH);
-        response.sendRedirect(sysConfig.getConfigValue() + code + SystemConstant.ORG_SPLIT + AppSourceEnum.WHU_THIRD);
+        response.sendRedirect(sysConfig.getConfigValue() + SystemConstant.TEACHCLOUD_REPORT_LOGIN_URL + code + SystemConstant.ORG_SPLIT + AppSourceEnum.WHU_THIRD);
     }
 
 //    @ApiOperation(value = "cas用户鉴权测试接口")