Răsfoiți Sursa

考试查询接口

xiatian 8 luni în urmă
părinte
comite
b3e3dc0f57

+ 17 - 0
src/main/java/cn/com/qmth/markingaudit/bean/ExamDataQuery.java

@@ -0,0 +1,17 @@
+package cn.com.qmth.markingaudit.bean;
+
+import cn.com.qmth.markingaudit.support.IdPagerQuery;
+
+public class ExamDataQuery extends IdPagerQuery {
+
+    private String schoolCode;
+
+    public String getSchoolCode() {
+        return schoolCode;
+    }
+
+    public void setSchoolCode(String schoolCode) {
+        this.schoolCode = schoolCode;
+    }
+
+}

+ 105 - 0
src/main/java/cn/com/qmth/markingaudit/bean/ExamDataVo.java

@@ -0,0 +1,105 @@
+package cn.com.qmth.markingaudit.bean;
+
+public class ExamDataVo {
+
+    private String name;
+
+    private String kind;
+
+    private String examTime;
+
+    private String startTime;
+
+    private String endTime;
+
+    private Integer passScore;
+
+    private Integer excellentScore;
+
+    private String createTime;
+
+    private String sasConfig;
+
+    private Integer id;
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getKind() {
+        return kind;
+    }
+
+    public void setKind(String kind) {
+        this.kind = kind;
+    }
+
+    public String getExamTime() {
+        return examTime;
+    }
+
+    public void setExamTime(String examTime) {
+        this.examTime = examTime;
+    }
+
+    public String getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(String startTime) {
+        this.startTime = startTime;
+    }
+
+    public String getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(String endTime) {
+        this.endTime = endTime;
+    }
+
+    public Integer getPassScore() {
+        return passScore;
+    }
+
+    public void setPassScore(Integer passScore) {
+        this.passScore = passScore;
+    }
+
+    public Integer getExcellentScore() {
+        return excellentScore;
+    }
+
+    public void setExcellentScore(Integer excellentScore) {
+        this.excellentScore = excellentScore;
+    }
+
+    public String getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(String createTime) {
+        this.createTime = createTime;
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getSasConfig() {
+        return sasConfig;
+    }
+
+    public void setSasConfig(String sasConfig) {
+        this.sasConfig = sasConfig;
+    }
+
+}

+ 50 - 0
src/main/java/cn/com/qmth/markingaudit/config/SwaggerConfig.java

@@ -0,0 +1,50 @@
+package cn.com.qmth.markingaudit.config;
+
+import io.swagger.annotations.ApiOperation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.ParameterBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.schema.ModelRef;
+import springfox.documentation.service.ApiInfo;
+import springfox.documentation.service.Parameter;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@EnableSwagger2WebMvc
+@Configuration
+@ConditionalOnProperty(name = "markingaudit.swagger.enable", havingValue = "true")
+public class SwaggerConfig {
+
+    private static final Logger log = LoggerFactory.getLogger(SwaggerConfig.class);
+
+    @Bean
+    public Docket buildDocket(SysProperty sysProperty) {
+        log.info("swagger init...");
+
+        List<Parameter> parameters = new ArrayList<>();
+        parameters.add(new ParameterBuilder().name("Authorization").modelRef(new ModelRef("String"))
+                .parameterType("header").required(false).build());
+        parameters.add(new ParameterBuilder().name("time").modelRef(new ModelRef("String")).parameterType("header")
+                .required(false).build());
+
+        return new Docket(DocumentationType.SWAGGER_2).groupName("default").apiInfo(buildApiInfo(sysProperty))
+                .globalOperationParameters(parameters).useDefaultResponseMessages(false).select()
+                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)).paths(PathSelectors.any())
+                .build();
+    }
+
+    public ApiInfo buildApiInfo(SysProperty sysProperty) {
+        return new ApiInfoBuilder().title("接口文档").version(sysProperty.getVersion()).build();
+    }
+
+}

+ 7 - 2
src/main/java/cn/com/qmth/markingaudit/controller/MonitorController.java

@@ -1,5 +1,7 @@
 package cn.com.qmth.markingaudit.controller;
 
+import java.util.List;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -7,6 +9,8 @@ import org.springframework.web.bind.annotation.RestController;
 
 import com.qmth.boot.api.annotation.Aac;
 
+import cn.com.qmth.markingaudit.bean.ExamDataQuery;
+import cn.com.qmth.markingaudit.bean.ExamDataVo;
 import cn.com.qmth.markingaudit.service.MonitorService;
 import cn.com.qmth.markingaudit.support.AccessInfo;
 import cn.com.qmth.markingaudit.support.CustConstants;
@@ -23,9 +27,10 @@ public class MonitorController {
 
     @ApiOperation(value = "考试数据")
     @PostMapping("examDataSync")
-    public String examData() throws Exception {
+    public List<ExamDataVo> examData(ExamDataQuery req) throws Exception {
         AccessInfo ai = ServletUtil.getAccessInfo();
-        return monitorService.examData(ai.getSchoolCode());
+        req.setSchoolCode(ai.getSchoolCode());
+        return monitorService.examData(req);
     }
 
 }

+ 6 - 1
src/main/java/cn/com/qmth/markingaudit/dao/MonitorDao.java

@@ -1,9 +1,14 @@
 package cn.com.qmth.markingaudit.dao;
 
+import java.util.List;
+
 import org.apache.ibatis.annotations.Param;
 
+import cn.com.qmth.markingaudit.bean.ExamDataQuery;
+import cn.com.qmth.markingaudit.bean.ExamDataVo;
+
 public interface MonitorDao {
 
-    String examData(@Param("schoolCode") String schoolCode);
+    List<ExamDataVo> examData(@Param("req") ExamDataQuery req);
 
 }

+ 6 - 1
src/main/java/cn/com/qmth/markingaudit/service/MonitorService.java

@@ -1,10 +1,15 @@
 package cn.com.qmth.markingaudit.service;
 
+import java.util.List;
+
+import cn.com.qmth.markingaudit.bean.ExamDataQuery;
+import cn.com.qmth.markingaudit.bean.ExamDataVo;
+
 /**
  * 类注释
  */
 public interface MonitorService {
 
-    String examData(String schoolCode);
+    List<ExamDataVo> examData(ExamDataQuery req);
 
 }

+ 25 - 2
src/main/java/cn/com/qmth/markingaudit/service/impl/MonitorServiceImpl.java

@@ -1,8 +1,16 @@
 package cn.com.qmth.markingaudit.service.impl;
 
+import java.util.List;
+
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import com.alibaba.fastjson.JSONObject;
+
+import cn.com.qmth.markingaudit.bean.ExamDataQuery;
+import cn.com.qmth.markingaudit.bean.ExamDataVo;
 import cn.com.qmth.markingaudit.dao.MonitorDao;
 import cn.com.qmth.markingaudit.service.MonitorService;
 
@@ -13,8 +21,23 @@ public class MonitorServiceImpl implements MonitorService {
     private MonitorDao monitorDao;
 
     @Override
-    public String examData(String schoolCode) {
-        return monitorDao.examData(schoolCode);
+    public List<ExamDataVo> examData(ExamDataQuery req) {
+        List<ExamDataVo> ret = monitorDao.examData(req);
+        if (CollectionUtils.isNotEmpty(ret)) {
+            for (ExamDataVo vo : ret) {
+                if (StringUtils.isNotBlank(vo.getSasConfig())) {
+                    JSONObject js = JSONObject.parseObject(vo.getSasConfig());
+                    if (js.containsKey("passScore")) {
+                        vo.setPassScore(js.getInteger("passScore"));
+                    }
+                    if (js.containsKey("excellentScore")) {
+                        vo.setExcellentScore(js.getInteger("excellentScore"));
+                    }
+                    vo.setSasConfig(null);
+                }
+            }
+        }
+        return ret;
     }
 
 }

+ 39 - 0
src/main/java/cn/com/qmth/markingaudit/support/IdPagerQuery.java

@@ -0,0 +1,39 @@
+package cn.com.qmth.markingaudit.support;
+
+import io.swagger.annotations.ApiModelProperty;
+
+public class IdPagerQuery {
+
+    @ApiModelProperty(value = "起始id")
+    protected Integer startId;
+
+    @ApiModelProperty(value = "每页条数")
+    protected Integer pageSize;
+
+    public Integer getStartId() {
+        // 默认值
+        if (startId == null || startId < 1) {
+            startId = 1;
+        }
+
+        return startId;
+    }
+
+    public Integer getPageSize() {
+        // 默认值
+        if (pageSize == null || pageSize < 1) {
+            pageSize = 10;
+        }
+
+        return pageSize;
+    }
+
+    public void setStartId(Integer startId) {
+        this.startId = startId;
+    }
+
+    public void setPageSize(Integer pageSize) {
+        this.pageSize = pageSize;
+    }
+
+}

+ 39 - 0
src/main/java/cn/com/qmth/markingaudit/support/PagerQuery.java

@@ -0,0 +1,39 @@
+package cn.com.qmth.markingaudit.support;
+
+import io.swagger.annotations.ApiModelProperty;
+
+public class PagerQuery {
+
+    @ApiModelProperty(value = "第几页(从1开始)")
+    protected Integer pageNumber;
+
+    @ApiModelProperty(value = "每页条数")
+    protected Integer pageSize;
+
+    public Integer getPageNumber() {
+        // 默认值
+        if (pageNumber == null || pageNumber < 1) {
+            pageNumber = 1;
+        }
+
+        return pageNumber;
+    }
+
+    public Integer getPageSize() {
+        // 默认值
+        if (pageSize == null || pageSize < 1) {
+            pageSize = 10;
+        }
+
+        return pageSize;
+    }
+
+    public void setPageNumber(Integer pageNumber) {
+        this.pageNumber = pageNumber;
+    }
+
+    public void setPageSize(Integer pageSize) {
+        this.pageSize = pageSize;
+    }
+
+}

+ 29 - 9
src/main/java/cn/com/qmth/markingaudit/support/ResponseAdvice.java

@@ -1,11 +1,16 @@
 package cn.com.qmth.markingaudit.support;
 
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.core.MethodParameter;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.MediaType;
 import org.springframework.http.converter.HttpMessageConverter;
 import org.springframework.http.server.ServerHttpRequest;
 import org.springframework.http.server.ServerHttpResponse;
+import org.springframework.http.server.ServletServerHttpRequest;
 import org.springframework.web.bind.annotation.RestControllerAdvice;
 import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
 
@@ -15,6 +20,9 @@ import com.qmth.boot.api.exception.ExceptionResponseEntity;
 @RestControllerAdvice
 public class ResponseAdvice implements ResponseBodyAdvice<Object> {
 
+    @Value("${server.servlet.context-path:}")
+    private String contextPath;
+
     @Override
     public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {
         return true;
@@ -24,17 +32,29 @@ public class ResponseAdvice implements ResponseBodyAdvice<Object> {
     public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType,
             Class<? extends HttpMessageConverter<?>> selectedConverterType, ServerHttpRequest request,
             ServerHttpResponse response) {
-        response.setStatusCode(HttpStatus.OK);
-        if (body instanceof String) {
-            return JSON.toJSONString(Result.of(body));
-        }
         if (body instanceof Result) {
             return body;
+        } else {
+            String apiUrl;
+            if (StringUtils.isNotEmpty(contextPath) && !"/".equals(contextPath)) {
+                apiUrl = contextPath + CustConstants.URI_PREFIX;
+            } else {
+                apiUrl = CustConstants.URI_PREFIX;
+            }
+            HttpServletRequest httpServletRequest = ((ServletServerHttpRequest) request).getServletRequest();
+            String url = httpServletRequest.getRequestURI();
+            if (!url.startsWith(apiUrl)) {
+                return body;
+            }
+            response.setStatusCode(HttpStatus.OK);
+            if (body instanceof String) {
+                return JSON.toJSONString(Result.of(body));
+            }
+            if (body instanceof ExceptionResponseEntity) {
+                ExceptionResponseEntity t = (ExceptionResponseEntity) body;
+                return new Result<Object>(500, t.getMessage());
+            }
+            return Result.of(body);
         }
-        if (body instanceof ExceptionResponseEntity) {
-            ExceptionResponseEntity t = (ExceptionResponseEntity) body;
-            return new Result<Object>(500, t.getMessage());
-        }
-        return Result.of(body);
     }
 }

+ 1 - 1
src/main/java/cn/com/qmth/markingaudit/utils/AuthorizationCreateUtil.java

@@ -10,7 +10,7 @@ import cn.com.qmth.markingaudit.support.CustConstants;
 public class AuthorizationCreateUtil {
 
     public static void main(String[] args) throws NoSuchAlgorithmException {
-        StringBuilder token = new StringBuilder("test-school-1");
+        StringBuilder token = new StringBuilder("school1");
         token.reverse();
         token.append(CustConstants.QMTH);
         System.out.println(MD5Util.encoder(token.toString()));

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

@@ -29,3 +29,4 @@ spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
 spring.jackson.time-zone=GMT+8
 
 com.qmth.solar.app-version=@project.version@
+markingaudit.swagger.enable=true

+ 8 - 4
src/main/resources/mapper/MonitorMapper.xml

@@ -1,9 +1,13 @@
 <?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="cn.com.qmth.markingaudit.dao.MonitorDao">
-	<select id="examData" resultType="string">
-		select t.name 
-		from b_school t
-		where t.code=#{schoolCode}
+	<select id="examData" resultType="cn.com.qmth.markingaudit.bean.ExamDataVo">
+		select t.id,t.name,t.type kind,t.exam_time,t.mark_start_time start_time,t.mark_end_time end_time,t.create_time,t.sas_config
+		from eb_exam t 
+		left join b_school s on t.school_id=s.id
+		where s.code=#{req.schoolCode}
+		and t.id&gt;=#{req.startId}
+		order by t.id
+		limit #{req.pageSize}
 	</select>
 </mapper>