Joburgess 5 年之前
父節點
當前提交
e683ac3bf9
共有 20 個文件被更改,包括 721 次插入17 次删除
  1. 0 2
      edu-user/edu-student-server/src/main/java/com/keao/edu/StudentServerApplication.java
  2. 1 1
      edu-user/edu-student-server/src/main/resources/bootstrap-dev.properties
  3. 35 0
      edu-user/edu-teacher-server/pom.xml
  4. 0 14
      edu-user/edu-teacher-server/src/main/java/com/keao/edu/App.java
  5. 29 0
      edu-user/edu-teacher-server/src/main/java/com/keao/edu/TeacherApplication.java
  6. 49 0
      edu-user/edu-teacher-server/src/main/java/com/keao/edu/config/PermissionCheckService.java
  7. 39 0
      edu-user/edu-teacher-server/src/main/java/com/keao/edu/config/ResourceServerConfig.java
  8. 55 0
      edu-user/edu-teacher-server/src/main/java/com/keao/edu/config/WebMvcConfig.java
  9. 14 0
      edu-user/edu-teacher-server/src/main/java/com/keao/edu/config/WebSocketConfig.java
  10. 32 0
      edu-user/edu-teacher-server/src/main/java/com/keao/edu/controller/EmployeeController.java
  11. 27 0
      edu-user/edu-teacher-server/src/main/java/com/keao/edu/controller/ExamCertificationController.java
  12. 51 0
      edu-user/edu-teacher-server/src/main/java/com/keao/edu/controller/ExamReviewController.java
  13. 66 0
      edu-user/edu-teacher-server/src/main/java/com/keao/edu/controller/ExamRoomController.java
  14. 47 0
      edu-user/edu-teacher-server/src/main/java/com/keao/edu/controller/ExamRoomStudentRelationController.java
  15. 50 0
      edu-user/edu-teacher-server/src/main/java/com/keao/edu/controller/StudentExamResultController.java
  16. 36 0
      edu-user/edu-teacher-server/src/main/java/com/keao/edu/controller/TenantInfoController.java
  17. 120 0
      edu-user/edu-teacher-server/src/main/resources/application.yml
  18. 16 0
      edu-user/edu-teacher-server/src/main/resources/bootstrap-dev.properties
  19. 16 0
      edu-user/edu-teacher-server/src/main/resources/bootstrap-prod.properties
  20. 38 0
      edu-user/edu-teacher-server/src/main/resources/logback-spring.xml

+ 0 - 2
edu-user/edu-student-server/src/main/java/com/keao/edu/StudentServerApplication.java

@@ -6,7 +6,6 @@ import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
 import org.springframework.cloud.openfeign.EnableFeignClients;
-import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.scheduling.annotation.EnableAsync;
 
@@ -14,7 +13,6 @@ import org.springframework.scheduling.annotation.EnableAsync;
 @EnableDiscoveryClient
 @EnableFeignClients({"com.keao.edu"})
 @MapperScan({"com.keao.edu.user.dao", "com.keao.edu.common.dao"})
-@ComponentScan(basePackages="com.keao.edu")
 @Configuration
 @EnableSwagger2Doc
 @EnableAsync

+ 1 - 1
edu-user/edu-student-server/src/main/resources/bootstrap-dev.properties

@@ -7,7 +7,7 @@ spring.cloud.nacos.config.namespace=753368b1-d0a9-42bc-bb76-c4ab319f0203
 #\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e
 spring.cloud.nacos.config.group=DEFAULT_GROUP
 #\u6587\u4ef6\u540d -- \u5982\u679c\u6ca1\u6709\u914d\u7f6e\u5219\u9ed8\u8ba4\u4e3a ${spring.appliction.name}
-spring.cloud.nacos.config.prefix=user
+spring.cloud.nacos.config.prefix=student
 #\u6307\u5b9a\u6587\u4ef6\u540e\u7f00
 spring.cloud.nacos.config.file-extension=yaml
 #\u662f\u5426\u52a8\u6001\u5237\u65b0

+ 35 - 0
edu-user/edu-teacher-server/pom.xml

@@ -22,5 +22,40 @@
       <version>3.8.1</version>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.springframework.cloud</groupId>
+      <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.springframework.boot</groupId>
+      <artifactId>spring-boot-starter-websocket</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>org.springframework.cloud</groupId>
+      <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>org.springframework.boot</groupId>
+      <artifactId>spring-boot-starter-web</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.springframework.cloud</groupId>
+      <artifactId>spring-cloud-openfeign-core</artifactId>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>com.spring4all</groupId>
+      <artifactId>swagger-spring-boot-starter</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>com.keao.edu</groupId>
+      <artifactId>edu-user-biz</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>javax.servlet</groupId>
+      <artifactId>javax.servlet-api</artifactId>
+    </dependency>
   </dependencies>
 </project>

+ 0 - 14
edu-user/edu-teacher-server/src/main/java/com/keao/edu/App.java

@@ -1,14 +0,0 @@
-package com.keao.edu;
-
-/**
- * Hello world!
- *
- */
-
-public class App 
-{
-    public static void main( String[] args )
-    {
-        System.out.println( "Hello World!" );
-    }
-}

+ 29 - 0
edu-user/edu-teacher-server/src/main/java/com/keao/edu/TeacherApplication.java

@@ -0,0 +1,29 @@
+package com.keao.edu;
+
+import com.spring4all.swagger.EnableSwagger2Doc;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.cloud.openfeign.EnableFeignClients;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.EnableAsync;
+
+/**
+ * Hello world!
+ *
+ */
+@SpringBootApplication
+@EnableDiscoveryClient
+@EnableFeignClients({"com.keao.edu"})
+@MapperScan({"com.keao.edu.user.dao", "com.keao.edu.common.dao"})
+@Configuration
+@EnableSwagger2Doc
+@EnableAsync
+public class TeacherApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(TeacherApplication.class, args);
+    }
+
+}

+ 49 - 0
edu-user/edu-teacher-server/src/main/java/com/keao/edu/config/PermissionCheckService.java

@@ -0,0 +1,49 @@
+package com.keao.edu.config;
+
+import com.keao.edu.auth.api.client.SysUserFeignService;
+import com.keao.edu.auth.api.entity.SysUser;
+import com.keao.edu.auth.api.util.SecurityUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.stereotype.Component;
+
+import java.util.Collection;
+
+@Component("pcs")
+public class PermissionCheckService {
+
+	@Autowired
+	private SysUserFeignService sysUserFeignService;
+
+	public boolean hasPermissions(String... permissions) {
+		Authentication authentication = SecurityUtils.getAuthentication();
+		if (authentication == null) {
+			return false;
+		}
+
+		SysUser user = sysUserFeignService.queryUserInfo();
+		if (user.getIsSuperAdmin()) {
+			return true;
+		}
+
+		Collection<? extends GrantedAuthority> authorities = authentication.getAuthorities();
+
+		for (String perm : permissions) {
+			for (GrantedAuthority authority : authorities) {
+				if (StringUtils.equalsIgnoreCase(perm, authority.getAuthority())) {
+					return true;
+				}
+			}
+		}
+
+		return false;
+	}
+
+	public boolean hasRoles(String... roles) {
+
+		return hasPermissions(roles);
+	}
+
+}

+ 39 - 0
edu-user/edu-teacher-server/src/main/java/com/keao/edu/config/ResourceServerConfig.java

@@ -0,0 +1,39 @@
+package com.keao.edu.config;
+
+import com.keao.edu.common.security.BaseAccessDeniedHandler;
+import com.keao.edu.common.security.BaseAuthenticationEntryPoint;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
+import org.springframework.security.config.annotation.web.builders.HttpSecurity;
+import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer;
+import org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter;
+import org.springframework.security.oauth2.config.annotation.web.configurers.ResourceServerSecurityConfigurer;
+
+@Configuration
+@EnableResourceServer
+@EnableGlobalMethodSecurity(prePostEnabled = true)
+public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
+
+    @Autowired
+    private BaseAccessDeniedHandler baseAccessDeniedHandler;
+
+    @Autowired
+    private BaseAuthenticationEntryPoint baseAuthenticationEntryPoint;
+
+    @Override
+    public void configure(HttpSecurity http) throws Exception {
+        http.authorizeRequests()
+                .antMatchers("/task/*","/v2/api-docs", "/su/**", "/student/apply", "/examRegistration/ocr", "/examOrder/paymentResult",
+                        "/examOrder/notify","/examinationBasic/getInfo","/examOrder/executePayment","/examOrder/pageList","/studentExamResult/recordSync")
+                .permitAll()
+                .anyRequest().authenticated().and().csrf().disable().exceptionHandling().accessDeniedHandler(baseAccessDeniedHandler)
+                .authenticationEntryPoint(baseAuthenticationEntryPoint).and();
+    }
+
+    @Override
+    public void configure(ResourceServerSecurityConfigurer resources) throws Exception {
+        resources.authenticationEntryPoint(baseAuthenticationEntryPoint).accessDeniedHandler(baseAccessDeniedHandler);
+    }
+
+}

+ 55 - 0
edu-user/edu-teacher-server/src/main/java/com/keao/edu/config/WebMvcConfig.java

@@ -0,0 +1,55 @@
+package com.keao.edu.config;
+
+import com.keao.edu.common.config.EnumConverterFactory;
+import com.keao.edu.common.config.LocalFastJsonHttpMessageConverter;
+import com.keao.edu.common.tenant.TenantInterceptor;
+import com.keao.edu.datasource.interceptor.DataSourceInterceptor;
+import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.format.FormatterRegistry;
+import org.springframework.http.MediaType;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Configuration
+public class WebMvcConfig implements WebMvcConfigurer {
+
+	/**
+	 * 枚举类的转换器 addConverterFactory
+	 */
+	@Override
+	public void addFormatters(FormatterRegistry registry) {
+		registry.addConverterFactory(new EnumConverterFactory());
+	}
+
+	@Override
+	public void addInterceptors(InterceptorRegistry registry) {
+
+		registry.addInterceptor(getDataSrouceInterceptor()).addPathPatterns("/**");
+		registry.addInterceptor(getTenantInterceptor()).addPathPatterns("/**");
+	}
+
+	@Bean
+	public DataSourceInterceptor getDataSrouceInterceptor() {
+		return new DataSourceInterceptor();
+	}
+
+	@Bean
+	public TenantInterceptor getTenantInterceptor() {
+		return new TenantInterceptor();
+	}
+	
+	@Bean
+    public HttpMessageConverters fastJsonHttpMessageConverters(){
+		LocalFastJsonHttpMessageConverter converter = new LocalFastJsonHttpMessageConverter();
+        List<MediaType> fastMediaTypes =  new ArrayList<MediaType>();
+        fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
+        converter.setSupportedMediaTypes(fastMediaTypes);
+        return new HttpMessageConverters(converter);
+    }
+
+}

+ 14 - 0
edu-user/edu-teacher-server/src/main/java/com/keao/edu/config/WebSocketConfig.java

@@ -0,0 +1,14 @@
+package com.keao.edu.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.socket.server.standard.ServerEndpointExporter;
+
+@Configuration
+public class WebSocketConfig {
+
+    @Bean
+    public ServerEndpointExporter serverEndpointExporter () {
+        return new ServerEndpointExporter();
+    }
+}

+ 32 - 0
edu-user/edu-teacher-server/src/main/java/com/keao/edu/controller/EmployeeController.java

@@ -0,0 +1,32 @@
+package com.keao.edu.controller;
+
+
+import com.keao.edu.auth.api.client.SysUserFeignService;
+import com.keao.edu.auth.api.entity.SysUser;
+import com.keao.edu.common.controller.BaseController;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("employee")
+@Api(tags = "员工服务")
+public class EmployeeController extends BaseController {
+
+	@Autowired
+	private SysUserFeignService sysUserFeignService;
+
+	@ApiOperation(value = "获取用户信息")
+	@GetMapping("/queryUserInfo")
+	public Object apiQueryUserInfo() {
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		if(sysUser != null && sysUser.getId() != null){
+			return succeed(sysUser);
+		}
+		return failed("获取用户信息失败");
+	}
+
+}

+ 27 - 0
edu-user/edu-teacher-server/src/main/java/com/keao/edu/controller/ExamCertificationController.java

@@ -0,0 +1,27 @@
+package com.keao.edu.controller;
+
+import com.keao.edu.common.controller.BaseController;
+import com.keao.edu.common.entity.HttpResponseResult;
+import com.keao.edu.user.dto.ExamCertificationDto;
+import com.keao.edu.user.service.ExamCertificationService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("examCertification")
+@Api(tags = "准考证服务")
+public class ExamCertificationController extends BaseController {
+
+    @Autowired
+    private ExamCertificationService examCertificationService;
+
+    @ApiOperation("后台获取学员准考证详情")
+    @GetMapping(value = "findDetailByStudentId")
+    public HttpResponseResult<ExamCertificationDto> findDetailByStudentId(Long examRegistrationId) {
+        return succeed(examCertificationService.findDetailByStudentId(examRegistrationId));
+    }
+}

+ 51 - 0
edu-user/edu-teacher-server/src/main/java/com/keao/edu/controller/ExamReviewController.java

@@ -0,0 +1,51 @@
+package com.keao.edu.controller;
+
+import com.keao.edu.auth.api.client.SysUserFeignService;
+import com.keao.edu.auth.api.entity.SysUser;
+import com.keao.edu.common.controller.BaseController;
+import com.keao.edu.common.entity.HttpResponseResult;
+import com.keao.edu.common.page.PageInfo;
+import com.keao.edu.user.dto.ExamReviewRecordDto;
+import com.keao.edu.user.entity.ExamReview;
+import com.keao.edu.user.page.ExamReviewRecordQueryInfo;
+import com.keao.edu.user.service.ExamReviewService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("examReview")
+@Api(tags = "评审服务")
+public class ExamReviewController extends BaseController {
+
+    @Autowired
+    private ExamReviewService examReviewService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+    @ApiOperation("监考页面分页查询评审结果")
+    @GetMapping(value = "/queryExamReviewRecordList")
+    public HttpResponseResult<PageInfo<ExamReviewRecordDto>> queryExamReviewRecordList(ExamReviewRecordQueryInfo queryInfo) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        queryInfo.setTeacherId(sysUser.getId());
+        return succeed(examReviewService.queryExamReviewRecordList(queryInfo));
+    }
+
+    @ApiOperation("修改评审结果")
+    @PostMapping(value = "/update")
+    public HttpResponseResult update(ExamReview examReview){
+        examReviewService.update(examReview);
+        return succeed();
+    }
+
+    @ApiOperation("老师评审")
+    @PostMapping(value = "/createExamReview")
+    public HttpResponseResult createExamReview(ExamReview examReview){
+        examReviewService.add(examReview);
+        return succeed();
+    }
+}

+ 66 - 0
edu-user/edu-teacher-server/src/main/java/com/keao/edu/controller/ExamRoomController.java

@@ -0,0 +1,66 @@
+package com.keao.edu.controller;
+
+import com.keao.edu.auth.api.client.SysUserFeignService;
+import com.keao.edu.auth.api.entity.SysUser;
+import com.keao.edu.common.controller.BaseController;
+import com.keao.edu.common.entity.HttpResponseResult;
+import com.keao.edu.common.page.PageInfo;
+import com.keao.edu.user.api.entity.ExamRoom;
+import com.keao.edu.user.dto.ExamRoomListDto;
+import com.keao.edu.user.entity.Teacher;
+import com.keao.edu.user.page.ExamRoomListQueryInfo;
+import com.keao.edu.user.service.EmployeeService;
+import com.keao.edu.user.service.ExamRoomService;
+import com.keao.edu.user.service.TeacherService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Objects;
+
+@RestController
+@RequestMapping("examRoom")
+@Api(tags = "考场服务")
+public class ExamRoomController extends BaseController {
+
+    @Autowired
+    private ExamRoomService examRoomService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private EmployeeService employeeService;
+    @Autowired
+    private TeacherService teacherService;
+
+    @ApiOperation("分页查询监考列表")
+    @GetMapping(value = "/list")
+    public HttpResponseResult<PageInfo<ExamRoomListDto>> getList(ExamRoomListQueryInfo queryInfo) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if(!sysUser.getIsSuperAdmin() && Objects.isNull(queryInfo.getOrganId())){
+            Teacher teacher = teacherService.get(sysUser.getId());
+            if(Objects.isNull(teacher)){
+                return failed("用户信息异常");
+            }
+            queryInfo.setOrganId(teacher.getOrganId());
+        }
+        return succeed(examRoomService.queryExamRoomPage(queryInfo));
+    }
+
+    @ApiOperation("教室状态变更(关闭教室,开启教室)")
+    @PostMapping(value = "/changeExamRoom")
+    public HttpResponseResult changeExamRoom(Long examRoomId,Integer openFlag){
+        examRoomService.changeExamRoom(examRoomId,openFlag);
+        return succeed();
+    }
+
+    @ApiOperation("获取教室")
+    @GetMapping(value = "/get")
+    public HttpResponseResult<ExamRoom> getExamRoom(Long id){
+        return succeed(examRoomService.get(id));
+    }
+
+}

+ 47 - 0
edu-user/edu-teacher-server/src/main/java/com/keao/edu/controller/ExamRoomStudentRelationController.java

@@ -0,0 +1,47 @@
+package com.keao.edu.controller;
+
+import com.keao.edu.common.controller.BaseController;
+import com.keao.edu.common.entity.HttpResponseResult;
+import com.keao.edu.user.service.ExamRoomStudentRelationService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("examRoomStudentRelation")
+@Api(tags = "考场与学生关联服务")
+public class ExamRoomStudentRelationController extends BaseController {
+
+    @Autowired
+    private ExamRoomStudentRelationService examRoomStudentRelationService;
+
+    @ApiOperation("下一位")
+    @PostMapping(value = "/nextBit")
+    public HttpResponseResult nextBit(Integer examStatus,Long roomId) {
+        examRoomStudentRelationService.nextBit(examStatus,roomId);
+        return succeed();
+    }
+
+    @ApiOperation("开始考试")
+    @PostMapping(value = "/actionExam")
+    public HttpResponseResult actionExam(Long roomId) {
+        examRoomStudentRelationService.actionExam(roomId);
+        return succeed();
+    }
+
+    @ApiOperation("监考端选择去录播")
+    @PostMapping(value = "/webRecorded")
+    public HttpResponseResult webRecorded(Long roomId) {
+        examRoomStudentRelationService.recorded(roomId);
+        return succeed();
+    }
+
+    @ApiOperation("获取后台考场待考队列")
+    @PostMapping(value = "/queryNeedCheckingList")
+    public HttpResponseResult queryNeedCheckingList(Long roomId) {
+        return succeed(examRoomStudentRelationService.queryNeedCheckingList(roomId));
+    }
+}

+ 50 - 0
edu-user/edu-teacher-server/src/main/java/com/keao/edu/controller/StudentExamResultController.java

@@ -0,0 +1,50 @@
+package com.keao.edu.controller;
+
+import com.keao.edu.auth.api.client.SysUserFeignService;
+import com.keao.edu.common.controller.BaseController;
+import com.keao.edu.common.entity.HttpResponseResult;
+import com.keao.edu.user.service.EmployeeService;
+import com.keao.edu.user.service.StudentExamResultService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @Author Joburgess
+ * @Date 2020.06.30
+ */
+@RestController
+@RequestMapping("studentExamResult")
+@Api(tags = "考试结果服务")
+public class StudentExamResultController extends BaseController {
+
+    @Autowired
+    private StudentExamResultService studentExamResultService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private EmployeeService employeeService;
+
+    @ApiOperation("确认考生")
+    @PostMapping(value = "/confirmStudent")
+    public HttpResponseResult confirmStudent(Long examRegistrationId) {
+        studentExamResultService.confirmStudent(examRegistrationId);
+        return succeed();
+    }
+
+    /**
+     * 屏蔽指定用户
+     * @param roomId
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping(value = "/shieldUserId", method = RequestMethod.POST)
+    public Object shieldUserId(Long roomId,Integer shieldFlag)throws Exception {
+        studentExamResultService.shieldUserId(roomId,shieldFlag);
+        return succeed();
+    }
+}

+ 36 - 0
edu-user/edu-teacher-server/src/main/java/com/keao/edu/controller/TenantInfoController.java

@@ -0,0 +1,36 @@
+package com.keao.edu.controller;
+
+
+import com.keao.edu.common.controller.BaseController;
+import com.keao.edu.common.entity.HttpResponseResult;
+import com.keao.edu.common.tenant.TenantContextHolder;
+import com.keao.edu.user.entity.TenantInfo;
+import com.keao.edu.user.service.TenantInfoService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("tenantInfo")
+@Api(tags = "机构服务")
+public class TenantInfoController extends BaseController {
+
+	@Autowired
+	private TenantInfoService tenantInfoService;
+
+	@ApiOperation("查询机构详情")
+	@GetMapping(value = "/query")
+	public HttpResponseResult<TenantInfo> query() {
+		String tenantId = TenantContextHolder.getTenantId();
+		if(StringUtils.isNotEmpty(tenantId)){
+			return succeed(tenantInfoService.get(Integer.parseInt(tenantId)));
+		}else {
+			return succeed(new TenantInfo());
+		}
+	}
+
+}

+ 120 - 0
edu-user/edu-teacher-server/src/main/resources/application.yml

@@ -0,0 +1,120 @@
+server:
+  port: 8003
+  tomcat:
+    accesslog:
+      enabled: true
+      buffered: true
+      directory: /var/logs
+      file-date-format: -yyyy-MM-dd
+      pattern: common
+      prefix: tomcat-user
+      rename-on-rotate: false
+      request-attributes-enabled: false
+      rotate: true
+      suffix: .log
+
+eureka:
+  client:
+    serviceUrl:
+      defaultZone: http://admin:admin123@localhost:8761/eureka/eureka/
+    instance: 
+      lease-renewal-interval-in-seconds: 5
+
+spring:
+  application:
+    name: student-server
+
+  servlet:
+    multipart:
+      # 最大支持文件大小
+      max-file-size: 50MB
+      # 最大支持请求大小
+      max-request-size: 50MB
+    
+  datasource:
+    name: test
+#    url: jdbc:mysql://47.99.212.176:3306/edu_saas?useUnicode=true&characterEncoding=UTF8&serverTimezone=Asia/Shanghai
+#    username: edu_saas
+#    password: edu_saas
+    url: jdbc:mysql://47.114.176.40:3306/edu_saas?useUnicode=true&characterEncoding=UTF8&serverTimezone=Asia/Shanghai&allowMultiQueries=true
+    username: edu_saas
+    password: dayaDataOnline@2019
+    # 使用druid数据源
+    type: com.alibaba.druid.pool.DruidDataSource
+    driver-class-name: com.mysql.cj.jdbc.Driver
+    filters: stat
+    maxActive: 20
+    initialSize: 1
+    maxWait: 60000
+    minIdle: 1
+    timeBetweenEvictionRunsMillis: 60000
+    minEvictableIdleTimeMillis: 300000
+    validationQuery: select 'x'
+    testWhileIdle: true
+    testOnBorrow: false
+    testOnReturn: false
+    poolPreparedStatements: true
+    maxOpenPreparedStatements: 20
+
+  redis:
+    host: 47.114.176.40
+    port: 6379
+    password: dyym
+    database: 1
+    #连接超时时间(毫秒)
+    timeout: 10000
+    jedis:
+      pool:
+        #连接池最大连接数(使用负值表示没有限制)
+        max-active: 10
+        #连接池最大阻塞等待时间(使用负值表示没有限制)
+        max-wait: -1
+        #连接池中的最大空闲连接
+        max-idle: 10
+        #连接池中的最小空闲连接
+        min-idle: 1
+
+mybatis:
+  mapperLocations: classpath*:config/mybatis/*.xml
+  typeAliasesPackage: com.keao.edu.*.entity
+  configuration:
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+
+swagger:
+  base-package: com.keao.edu.user.controller
+##认证 
+security:
+  oauth2:
+    client:
+      client-id: student
+      client-secret: student
+    resource:
+      token-info-uri: http://localhost:8001/oauth/check_token
+  
+#spring boot admin 相关配置
+management:
+  endpoints:
+    web:
+      exposure:
+        include: "*"
+  endpoint:
+    health:
+      show-details: ALWAYS
+      
+ribbon:
+  ReadTimeout: 60000
+  ConnectTimeout: 60000
+
+message:
+  debugMode: true
+
+logging:
+  level:
+    com.keao.edu.user.api.client.EduUserFeignService: INFO
+    com.keao.edu.user.dao: DEBUG
+
+
+push:
+  jiguang:
+    reqURL: https://api.jpush.cn/v3/push
+    apns_production: false

+ 16 - 0
edu-user/edu-teacher-server/src/main/resources/bootstrap-dev.properties

@@ -0,0 +1,16 @@
+#\u6307\u5b9a\u5f00\u53d1\u73af\u5883
+#spring.profiles.active=dev
+#\u670d\u52a1\u5668\u5730\u5740
+spring.cloud.nacos.config.server-addr=47.114.176.40:8848
+#\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
+spring.cloud.nacos.config.namespace=753368b1-d0a9-42bc-bb76-c4ab319f0203
+#\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e
+spring.cloud.nacos.config.group=DEFAULT_GROUP
+#\u6587\u4ef6\u540d -- \u5982\u679c\u6ca1\u6709\u914d\u7f6e\u5219\u9ed8\u8ba4\u4e3a ${spring.appliction.name}
+spring.cloud.nacos.config.prefix=teacher
+#\u6307\u5b9a\u6587\u4ef6\u540e\u7f00
+spring.cloud.nacos.config.file-extension=yaml
+#\u662f\u5426\u52a8\u6001\u5237\u65b0
+spring.cloud.nacos.config.refresh.enabled=true
+#\u662f\u5426\u542f\u7528nacos\u914d\u7f6e\u4e2d\u5fc3
+spring.cloud.nacos.config.enabled=true

+ 16 - 0
edu-user/edu-teacher-server/src/main/resources/bootstrap-prod.properties

@@ -0,0 +1,16 @@
+#\u6307\u5b9a\u5f00\u53d1\u73af\u5883
+#spring.profiles.active=dev
+#\u670d\u52a1\u5668\u5730\u5740
+spring.cloud.nacos.config.server-addr=121.40.129.226:8848
+#\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
+spring.cloud.nacos.config.namespace=a97db240-8024-45f2-bceb-bbccbb07ea1d
+#\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e
+spring.cloud.nacos.config.group=DEFAULT_GROUP
+#\u6587\u4ef6\u540d -- \u5982\u679c\u6ca1\u6709\u914d\u7f6e\u5219\u9ed8\u8ba4\u4e3a ${spring.appliction.name}
+spring.cloud.nacos.config.prefix=user
+#\u6307\u5b9a\u6587\u4ef6\u540e\u7f00
+spring.cloud.nacos.config.file-extension=yaml
+#\u662f\u5426\u52a8\u6001\u5237\u65b0
+spring.cloud.nacos.config.refresh.enabled=true
+#\u662f\u5426\u542f\u7528nacos\u914d\u7f6e\u4e2d\u5fc3
+spring.cloud.nacos.config.enabled=true

+ 38 - 0
edu-user/edu-teacher-server/src/main/resources/logback-spring.xml

@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="true" scanPeriod="10 seconds">
+
+	<property name="LOG_HOME" value="/mdata/logs/cms-%d{yyyy-MM-dd_HH}-%i.log" />
+	<property name="CONSOLE_LOG_PATTERN"
+		value="[%X{username} %X{ip} %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}] : %msg%n" />
+
+	<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
+		<encoder charset="UTF-8">
+			<pattern>${CONSOLE_LOG_PATTERN}</pattern>
+		</encoder>
+	</appender>
+
+	<appender name="file"
+		class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<FileNamePattern>${LOG_HOME}</FileNamePattern>
+			<MaxHistory>90</MaxHistory>
+			<TimeBasedFileNamingAndTriggeringPolicy
+				class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+				<MaxFileSize>20MB</MaxFileSize>
+			</TimeBasedFileNamingAndTriggeringPolicy>
+		</rollingPolicy>
+
+		<encoder>
+			<pattern>${CONSOLE_LOG_PATTERN}</pattern>
+		</encoder>
+	</appender>
+
+	<logger name="com.keao.edu" level="INFO" />
+
+	<!--开发环境:打印控制台 -->
+	<root level="INFO">
+		<appender-ref ref="stdout" />
+		<appender-ref ref="file" />
+	</root>
+
+</configuration>