Browse Source

加入report武大鉴权

wangliang 4 years ago
parent
commit
a1c32bd1c2

+ 15 - 6
README.md

@@ -1,16 +1,25 @@
-分布式印刷平台
+逸教云平台
 
 项目模块:
 1.distributed-print
-数码印刷项目
-
+分布式印刷项目
+   
 2.distributed-print-business
-业务公用
+分布式印刷业务
 
-3.distributed-print-common
+3.teachcloud-print-common
 项目公用
 
-4.distributed-print-task
+4.teachcloud-print-common-api
+项目公用api
+
+5.teachcloud-report
+教研分析报告
+
+6.teachcloud-report-business
+教研分析报告业务
+
+7.teachcloud-task
 分布式job
 
 项目框架:

+ 10 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/domain/PrefixUrlDomain.java

@@ -25,8 +25,18 @@ public class PrefixUrlDomain implements Serializable {
 
     String client;
 
+    String reportWuda;
+
     String reportSchool;
 
+    public String getReportWuda() {
+        return reportWuda;
+    }
+
+    public void setReportWuda(String reportWuda) {
+        this.reportWuda = reportWuda;
+    }
+
     public String getData() {
         return data;
     }

+ 10 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/domain/SysDomain.java

@@ -40,6 +40,16 @@ public class SysDomain implements Serializable {
 
     boolean customThreadPoolCoreSize;
 
+    String reportUrl;
+
+    public String getReportUrl() {
+        return reportUrl;
+    }
+
+    public void setReportUrl(String reportUrl) {
+        this.reportUrl = reportUrl;
+    }
+
     public boolean isCustomThreadPoolCoreSize() {
         return customThreadPoolCoreSize;
     }

+ 7 - 0
teachcloud-report-business/pom.xml

@@ -92,6 +92,13 @@
 			<groupId>org.freemarker</groupId>
 			<artifactId>freemarker</artifactId>
 		</dependency>
+		<dependency>
+			<groupId>cas.client.core</groupId>
+			<artifactId>cas</artifactId>
+			<version>3.2.1</version>
+			<scope>system</scope>
+			<systemPath>${project.basedir}/src/main/resources/lib/cas-client-core-3.2.1.jar</systemPath>
+		</dependency>
 	</dependencies>
 
 </project>

+ 49 - 0
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/filter/MyWebApplicationInitializer.java

@@ -0,0 +1,49 @@
+package com.qmth.teachcloud.report.business.filter;
+
+import org.jasig.cas.client.authentication.AuthenticationFilter;
+import org.jasig.cas.client.session.SingleSignOutFilter;
+import org.jasig.cas.client.session.SingleSignOutHttpSessionListener;
+import org.jasig.cas.client.util.HttpServletRequestWrapperFilter;
+import org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter;
+import org.springframework.boot.web.servlet.ServletContextInitializer;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.filter.CharacterEncodingFilter;
+
+import javax.servlet.FilterRegistration;
+import javax.servlet.ServletContext;
+
+/**
+ * @Description: 加入web.xml filter
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2020/12/30
+ */
+@Configuration
+public class MyWebApplicationInitializer implements ServletContextInitializer {
+
+    @Override
+    public void onStartup(ServletContext sc) {
+        sc.addListener(new SingleSignOutHttpSessionListener());
+        FilterRegistration.Dynamic encodingFilter = sc.addFilter("encoding-filter", CharacterEncodingFilter.class);
+        encodingFilter.setInitParameter("encoding", "UTF-8");
+        encodingFilter.addMappingForUrlPatterns(null, false, "/*");
+
+        FilterRegistration.Dynamic CASSingleSignOutFilter = sc.addFilter("CAS Single Sign Out Filter", SingleSignOutFilter.class);
+        CASSingleSignOutFilter.addMappingForUrlPatterns(null, false, "/*");
+
+        FilterRegistration.Dynamic CASFilter = sc.addFilter("CASFilter", AuthenticationFilter.class);
+        CASFilter.setInitParameter("casServerLoginUrl", "http://cas.whu.edu.cn/authserver/login");
+        CASFilter.setInitParameter("serverName", "https://wdfx.qmth.com.cn");
+        CASFilter.addMappingForUrlPatterns(null, false, "/api/report/wuda/open/authentication/*");
+
+        FilterRegistration.Dynamic CASValidationFilter = sc.addFilter("CAS Validation Filter", Cas20ProxyReceivingTicketValidationFilter.class);
+        CASValidationFilter.setInitParameter("casServerUrlPrefix", "http://cas.whu.edu.cn/authserver");
+        CASValidationFilter.setInitParameter("serverName", "https://wdfx.qmth.com.cn");
+        CASValidationFilter.setInitParameter("encoding", "UTF-8");
+        CASValidationFilter.addMappingForUrlPatterns(null, false, "/api/report/wuda/open/authentication/*");
+
+        FilterRegistration.Dynamic CASHttpServletRequestWrapperFilter = sc.addFilter("CAS HttpServletRequest Wrapper Filter", HttpServletRequestWrapperFilter.class);
+        CASHttpServletRequestWrapperFilter.addMappingForUrlPatterns(null, false, "/*");
+    }
+}

BIN
teachcloud-report-business/src/main/resources/lib/cas-client-core-3.2.1.jar


+ 64 - 64
teachcloud-report/src/main/java/com/qmth/teachcloud/report/api/TBTaskController.java

@@ -1,64 +1,64 @@
-package com.qmth.teachcloud.report.api;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.qmth.boot.api.constant.ApiConstant;
-import com.qmth.teachcloud.common.bean.result.TaskListResult;
-import com.qmth.teachcloud.common.contant.SystemConstant;
-import com.qmth.teachcloud.common.enums.TaskResultEnum;
-import com.qmth.teachcloud.common.enums.TaskStatusEnum;
-import com.qmth.teachcloud.common.enums.TaskTypeEnum;
-import com.qmth.teachcloud.common.service.TBTaskService;
-import com.qmth.teachcloud.common.util.Result;
-import com.qmth.teachcloud.common.util.ResultUtil;
-import com.qmth.teachcloud.common.util.ServletUtil;
-import io.swagger.annotations.*;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.annotation.Resource;
-import java.util.List;
-import java.util.Objects;
-
-/**
- * <p>
- * 导入导出任务表 前端控制器
- * </p>
- *
- * @author wangliang
- * @since 2021-03-19
- */
-@Api(tags = "数据管理-任务管理Controller")
-@RestController
-@RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/${prefix.url.data}")
-public class TBTaskController {
-
-    @Resource
-    TBTaskService tbTaskService;
-
-    @ApiOperation(value = "任务管理查询接口")
-    @RequestMapping(value = "/task/query", method = RequestMethod.POST)
-    @ApiResponses({@ApiResponse(code = 200, message = "任务管理列表信息", response = TaskListResult.class)})
-    public Result taskQuery(@ApiParam(value = "印刷计划id", required = false) @RequestParam(required = false) String printPlanId,
-                            @ApiParam(value = "任务状态", required = false) @RequestParam(required = false) TaskStatusEnum status,
-                            @ApiParam(value = "任务类型", required = false) @RequestParam(required = false) TaskTypeEnum type,
-                            @ApiParam(value = "任务数据结果", required = false) @RequestParam(required = false) TaskResultEnum result,
-                            @ApiParam(value = "分页页码", required = true) @RequestParam int pageNumber,
-                            @ApiParam(value = "分页数", required = true) @RequestParam int pageSize) {
-        IPage<TaskListResult> taskListResultIPage = tbTaskService.query(new Page<>(pageNumber, pageSize), Objects.nonNull(ServletUtil.getRequestHeaderSchoolId()) ? Long.parseLong(ServletUtil.getRequestHeaderSchoolId().toString()) : null, SystemConstant.convertIdToLong(printPlanId), status, type, result);
-        if (Objects.nonNull(taskListResultIPage) && Objects.nonNull(taskListResultIPage.getRecords()) && taskListResultIPage.getRecords().size() > 0) {
-            List<TaskListResult> taskListResultList = taskListResultIPage.getRecords();
-            for (TaskListResult taskListResult : taskListResultList) {
-                if (Objects.equals(taskListResult.getStatus(), TaskStatusEnum.FINISH.getTitle()) && Objects.equals(taskListResult.getResult(), TaskResultEnum.ERROR.getTitle())
-//                        && taskListResult.getResetCount() >= dictionaryConfig.sysDomain().getAutoCreatePdfResetMaxCount()
-                        && Objects.equals(taskListResult.getType(), TaskTypeEnum.CREATE_PDF.getTitle())
-                        && Objects.isNull(taskListResult.getErrorMessage())) {
-                    taskListResult.setResetCreatePdf(true);
-                }
-            }
-        }
-        return ResultUtil.ok(taskListResultIPage);
-    }
-}
+//package com.qmth.teachcloud.report.api;
+//
+//import com.baomidou.mybatisplus.core.metadata.IPage;
+//import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+//import com.qmth.boot.api.constant.ApiConstant;
+//import com.qmth.teachcloud.common.bean.result.TaskListResult;
+//import com.qmth.teachcloud.common.contant.SystemConstant;
+//import com.qmth.teachcloud.common.enums.TaskResultEnum;
+//import com.qmth.teachcloud.common.enums.TaskStatusEnum;
+//import com.qmth.teachcloud.common.enums.TaskTypeEnum;
+//import com.qmth.teachcloud.common.service.TBTaskService;
+//import com.qmth.teachcloud.common.util.Result;
+//import com.qmth.teachcloud.common.util.ResultUtil;
+//import com.qmth.teachcloud.common.util.ServletUtil;
+//import io.swagger.annotations.*;
+//import org.springframework.web.bind.annotation.RequestMapping;
+//import org.springframework.web.bind.annotation.RequestMethod;
+//import org.springframework.web.bind.annotation.RequestParam;
+//import org.springframework.web.bind.annotation.RestController;
+//
+//import javax.annotation.Resource;
+//import java.util.List;
+//import java.util.Objects;
+//
+///**
+// * <p>
+// * 导入导出任务表 前端控制器
+// * </p>
+// *
+// * @author wangliang
+// * @since 2021-03-19
+// */
+//@Api(tags = "数据管理-任务管理Controller")
+//@RestController
+//@RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/${prefix.url.data}")
+//public class TBTaskController {
+//
+//    @Resource
+//    TBTaskService tbTaskService;
+//
+//    @ApiOperation(value = "任务管理查询接口")
+//    @RequestMapping(value = "/task/query", method = RequestMethod.POST)
+//    @ApiResponses({@ApiResponse(code = 200, message = "任务管理列表信息", response = TaskListResult.class)})
+//    public Result taskQuery(@ApiParam(value = "印刷计划id", required = false) @RequestParam(required = false) String printPlanId,
+//                            @ApiParam(value = "任务状态", required = false) @RequestParam(required = false) TaskStatusEnum status,
+//                            @ApiParam(value = "任务类型", required = false) @RequestParam(required = false) TaskTypeEnum type,
+//                            @ApiParam(value = "任务数据结果", required = false) @RequestParam(required = false) TaskResultEnum result,
+//                            @ApiParam(value = "分页页码", required = true) @RequestParam int pageNumber,
+//                            @ApiParam(value = "分页数", required = true) @RequestParam int pageSize) {
+//        IPage<TaskListResult> taskListResultIPage = tbTaskService.query(new Page<>(pageNumber, pageSize), Objects.nonNull(ServletUtil.getRequestHeaderSchoolId()) ? Long.parseLong(ServletUtil.getRequestHeaderSchoolId().toString()) : null, SystemConstant.convertIdToLong(printPlanId), status, type, result);
+//        if (Objects.nonNull(taskListResultIPage) && Objects.nonNull(taskListResultIPage.getRecords()) && taskListResultIPage.getRecords().size() > 0) {
+//            List<TaskListResult> taskListResultList = taskListResultIPage.getRecords();
+//            for (TaskListResult taskListResult : taskListResultList) {
+//                if (Objects.equals(taskListResult.getStatus(), TaskStatusEnum.FINISH.getTitle()) && Objects.equals(taskListResult.getResult(), TaskResultEnum.ERROR.getTitle())
+////                        && taskListResult.getResetCount() >= dictionaryConfig.sysDomain().getAutoCreatePdfResetMaxCount()
+//                        && Objects.equals(taskListResult.getType(), TaskTypeEnum.CREATE_PDF.getTitle())
+//                        && Objects.isNull(taskListResult.getErrorMessage())) {
+//                    taskListResult.setResetCreatePdf(true);
+//                }
+//            }
+//        }
+//        return ResultUtil.ok(taskListResultIPage);
+//    }
+//}

+ 48 - 0
teachcloud-report/src/main/java/com/qmth/teachcloud/report/api/WudaOpenApiController.java

@@ -0,0 +1,48 @@
+package com.qmth.teachcloud.report.api;
+
+import com.qmth.teachcloud.common.config.DictionaryConfig;
+import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.util.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.Objects;
+
+@Api(tags = "武大开放接口层apiController")
+@RestController
+@RequestMapping("/${prefix.url.reportWuda}")
+public class WudaOpenApiController {
+
+    @Resource
+    DictionaryConfig dictionaryConfig;
+
+    @ApiOperation(value = "cas鉴权接口")
+    @RequestMapping(value = "/authentication", method = RequestMethod.GET)
+    @ApiResponses({@ApiResponse(code = 200, message = "返回消息", response = Result.class)})
+    public void authentication(HttpServletRequest request, HttpServletResponse response) throws IOException {
+        String uid = request.getRemoteUser();
+        if (Objects.isNull(uid)) {
+            throw ExceptionResultEnum.NOT_LOGIN.exception();
+        }
+        response.setHeader("Access-Control-Allow-Origin", "*");
+        response.sendRedirect(dictionaryConfig.sysDomain().getReportUrl() + uid);
+    }
+
+//    @ApiOperation(value = "cas鉴权接口")
+//    @RequestMapping(value = "/authentication/{studentCode}", method = RequestMethod.GET)
+//    @ApiResponses({@ApiResponse(code = 200, message = "{\"success\":true}", response = Result.class)})
+//    public void authentication(HttpServletRequest request, HttpServletResponse response, @PathVariable String studentCode
+//    ) throws IOException {
+//        response.setHeader("Access-Control-Allow-Origin", "*");
+//        response.sendRedirect(dictionaryConfig.sysDomain().getReportUrl() + studentCode);
+//    }
+}

+ 1 - 0
teachcloud-report/src/main/resources/application-dev.properties

@@ -53,6 +53,7 @@ sys.config.adminLogoUrl=http://qmth-test.oss-cn-shenzhen.aliyuncs.com/frontend/w
 #sys.config.autoCreatePdfResetMaxCount=5
 sys.config.threadPoolCoreSize=1
 sys.config.customThreadPoolCoreSize=true
+sys.config.reportUrl=http://localhost:8082/report/#/student-report/
 spring.resources.static-locations=file:${sys.config.serverUpload},classpath:/META-INF/resources/,classpath:/resources/
 
 org.center.url=https://solar.qmth.com.cn

+ 1 - 0
teachcloud-report/src/main/resources/application-master.properties

@@ -53,6 +53,7 @@ sys.config.adminLogoUrl=http://qmth-test.oss-cn-shenzhen.aliyuncs.com/frontend/w
 #sys.config.autoCreatePdfResetMaxCount=5
 sys.config.threadPoolCoreSize=1
 sys.config.customThreadPoolCoreSize=true
+sys.config.reportUrl=http://localhost:8082/report/#/student-report/
 spring.resources.static-locations=file:${sys.config.serverUpload},classpath:/META-INF/resources/,classpath:/resources/
 
 org.center.url=https://solar.qmth.com.cn

+ 1 - 0
teachcloud-report/src/main/resources/application-release.properties

@@ -53,6 +53,7 @@ sys.config.adminLogoUrl=http://qmth-test.oss-cn-shenzhen.aliyuncs.com/frontend/w
 #sys.config.autoCreatePdfResetMaxCount=5
 sys.config.threadPoolCoreSize=1
 sys.config.customThreadPoolCoreSize=true
+sys.config.reportUrl=http://localhost:8082/report/#/student-report/
 spring.resources.static-locations=file:${sys.config.serverUpload},classpath:/META-INF/resources/,classpath:/resources/
 
 org.center.url=https://solar.qmth.com.cn

+ 1 - 0
teachcloud-report/src/main/resources/application.properties

@@ -14,6 +14,7 @@ prefix.url.sys=admin/sys
 prefix.url.basic=admin/basic
 prefix.url.exam=admin/exam
 prefix.url.data=admin/data
+prefix.url.reportWuda=report/wuda/open
 prefix.url.reportSchool=report/school
 
 #\u65E5\u5FD7\u914D\u7F6E