فهرست منبع

Merge branch 'master' of http://git.dayaedu.com/yonge/edu-saas

zouxuan 5 سال پیش
والد
کامیت
66f660df6e
30فایلهای تغییر یافته به همراه313 افزوده شده و 101 حذف شده
  1. 22 0
      edu-task/src/main/java/com/keao/edu/task/jobs/ExamStatusUpdateTask.java
  2. 2 3
      edu-task/src/main/java/com/keao/edu/task/jobs/QueryPaymentStatusTask.java
  3. 1 1
      edu-thirdparty/src/main/java/com/keao/edu/thirdparty/adapay/ConfigInit.java
  4. 9 0
      edu-user/edu-user-client-api/src/main/java/com/keao/edu/user/api/client/EduUserFeignService.java
  5. 4 0
      edu-user/edu-user-client-api/src/main/java/com/keao/edu/user/api/client/fallback/EduUserFeignServiceFallback.java
  6. 1 1
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/config/ResourceServerConfig.java
  7. 2 3
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/ExamRegistrationController.java
  8. 8 0
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/ExaminationBasicController.java
  9. 3 4
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/MusicTheoryController.java
  10. 14 3
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/TaskController.java
  11. 11 0
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/dto/ExamRegistrationRoomDto.java
  12. 12 1
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/entity/ExamReview.java
  13. 24 1
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/entity/ExaminationBasic.java
  14. 32 10
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/entity/StudentExamResult.java
  15. 11 3
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/page/ExamReviewQueryInfo.java
  16. 10 0
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/page/ExaminationQueryInfo.java
  17. 4 1
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamManualLedgerServiceImpl.java
  18. 1 1
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamOrganizationRelationServiceImpl.java
  19. 9 6
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamRegistrationPaymentServiceImpl.java
  20. 7 1
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamRegistrationServiceImpl.java
  21. 9 8
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamReviewServiceImpl.java
  22. 17 0
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamRoomServiceImpl.java
  23. 2 2
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamRoomStudentRelationServiceImpl.java
  24. 9 2
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExaminationBasicServiceImpl.java
  25. 10 3
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/StudentExamResultServiceImpl.java
  26. 2 1
      edu-user/edu-user-server/src/main/resources/config/mybatis/EmployeeMapper.xml
  27. 1 0
      edu-user/edu-user-server/src/main/resources/config/mybatis/ExamRegistrationMapper.xml
  28. 13 10
      edu-user/edu-user-server/src/main/resources/config/mybatis/ExamReviewMapper.xml
  29. 44 20
      edu-user/edu-user-server/src/main/resources/config/mybatis/ExaminationBasicMapper.xml
  30. 19 16
      edu-user/edu-user-server/src/main/resources/config/mybatis/StudentExamResultMapper.xml

+ 22 - 0
edu-task/src/main/java/com/keao/edu/task/jobs/ExamStatusUpdateTask.java

@@ -0,0 +1,22 @@
+package com.keao.edu.task.jobs;
+
+import com.keao.edu.task.core.BaseTask;
+import com.keao.edu.user.api.client.EduUserFeignService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * @Author Joburgess
+ * @Date 2020.07.10
+ */
+@Service
+public class ExamStatusUpdateTask extends BaseTask {
+
+    @Autowired
+    private EduUserFeignService eduUserFeignService;
+
+    @Override
+    public void execute(){
+        eduUserFeignService.updateExamStatus();
+    }
+}

+ 2 - 3
edu-task/src/main/java/com/keao/edu/task/jobs/PayStatusTask.java → edu-task/src/main/java/com/keao/edu/task/jobs/QueryPaymentStatusTask.java

@@ -1,19 +1,18 @@
 package com.keao.edu.task.jobs;
 
 import com.keao.edu.task.core.BaseTask;
-import com.keao.edu.task.core.TaskException;
 import com.keao.edu.user.api.client.EduUserFeignService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 @Service
-public class PayStatusTask extends BaseTask {
+public class QueryPaymentStatusTask extends BaseTask {
 
 	@Autowired
 	private EduUserFeignService eduUserFeignService;
 
 	@Override
-	public void execute() throws TaskException {
+	public void execute(){
 		eduUserFeignService.queryPaymentStatus();
 	}
 }

+ 1 - 1
edu-thirdparty/src/main/java/com/keao/edu/thirdparty/adapay/ConfigInit.java

@@ -38,7 +38,7 @@ public class ConfigInit {
         /**
          * prodMode 模式,默认为生产模式,false可以使用mock模式
          */
-        Adapay.prodMode = false;
+        Adapay.prodMode = true;
 
         /**
          *添加商户配置,一个商户只需要 添加一次,添加以后在内存中。

+ 9 - 0
edu-user/edu-user-client-api/src/main/java/com/keao/edu/user/api/client/EduUserFeignService.java

@@ -41,4 +41,13 @@ public interface EduUserFeignService {
 	@GetMapping("task/queryPaymentStatus")
 	// 订单支付状态查询
 	void queryPaymentStatus();
+
+	/**
+	 * @describe 更新考级项目状态
+	 * @author Joburgess
+	 * @date 2020.07.10
+	 * @return void
+	 */
+	@GetMapping("task/updateExamStatus")
+	void updateExamStatus();
 }

+ 4 - 0
edu-user/edu-user-client-api/src/main/java/com/keao/edu/user/api/client/fallback/EduUserFeignServiceFallback.java

@@ -28,4 +28,8 @@ public class EduUserFeignServiceFallback implements EduUserFeignService {
 		return;
 	}
 
+	@Override
+	public void updateExamStatus() {
+		return;
+	}
 }

+ 1 - 1
edu-user/edu-user-server/src/main/java/com/keao/edu/user/config/ResourceServerConfig.java

@@ -25,7 +25,7 @@ public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
     @Override
     public void configure(HttpSecurity http) throws Exception {
         http.authorizeRequests()
-                .antMatchers("/v2/api-docs", "/su/**", "/student/apply", "/examRegistration/ocr", "/examOrder/paymentResult",
+                .antMatchers("/task/*","/v2/api-docs", "/su/**", "/student/apply", "/examRegistration/ocr", "/examOrder/paymentResult",
                         "/examOrder/notify","/examinationBasic/getInfo","/examOrder/executePayment","/examOrder/pageList")
                 .permitAll()
                 .anyRequest().authenticated().and().csrf().disable().exceptionHandling().accessDeniedHandler(baseAccessDeniedHandler)

+ 2 - 3
edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/ExamRegistrationController.java

@@ -51,9 +51,8 @@ public class ExamRegistrationController extends BaseController {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (!sysUser.getIsSuperAdmin() && Objects.isNull(queryInfo.getOrganId())) {
             Employee employee = employeeService.get(sysUser.getId());
-            if (Objects.nonNull(employee)) {
-                queryInfo.setOrganId(employee.getOrganId());
-            }
+            if(Objects.isNull(employee))
+            queryInfo.setOrganId(employee.getOrganId());
         }
         return succeed(examRegistrationService.queryExamRegistrationStudents(queryInfo));
     }

+ 8 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/ExaminationBasicController.java

@@ -43,6 +43,14 @@ public class ExaminationBasicController extends BaseController {
     @ApiOperation("分页查询")
     @GetMapping(value = "/list")
     public HttpResponseResult<PageInfo<ExaminationBasicDto>> getList(ExaminationQueryInfo queryInfo) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if(!sysUser.getIsSuperAdmin()){
+            Employee employee = employeeService.get(sysUser.getId());
+            if(Objects.isNull(employee)){
+                return failed("用户信息异常");
+            }
+            queryInfo.setOrganId(employee.getOrganId());
+        }
         return succeed(examinationBasicService.findExaminationBasics(queryInfo));
     }
 

+ 3 - 4
edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/MusicTheoryController.java

@@ -10,7 +10,6 @@ import com.keao.edu.user.service.MusicTheoryService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -36,13 +35,13 @@ public class MusicTheoryController extends BaseController {
     @ApiOperation("查询乐理详情")
     @ApiImplicitParam(name = "id", value = "机构ID", required = true, dataType = "Integer", paramType = "path")
     @GetMapping(value = "/query")
-    public HttpResponseResult<MusicTheory> query(@RequestParam("id") Integer id) {
+    public HttpResponseResult<MusicTheory> query(Integer id) {
         return succeed(musicTheoryService.get(id));
     }
 
     @ApiOperation("新增乐理")
     @PostMapping(value = "/add")
-    public HttpResponseResult add(@ApiParam(value = "乐理信息") @RequestBody MusicTheory musicTheory) {
+    public HttpResponseResult add(MusicTheory musicTheory) {
         musicTheory.setTenantId(TenantContextHolder.getTenantId().toString());
         musicTheoryService.addMusicTheory(musicTheory);
         return succeed();
@@ -50,7 +49,7 @@ public class MusicTheoryController extends BaseController {
 
     @ApiOperation("更新乐理")
     @PostMapping(value = "/update")
-    public HttpResponseResult update(@ApiParam(value = "乐理信息") @RequestBody MusicTheory musicTheory) {
+    public HttpResponseResult update(MusicTheory musicTheory) {
         musicTheoryService.update(musicTheory);
         return succeed();
     }

+ 14 - 3
edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/TaskController.java

@@ -2,17 +2,23 @@ package com.keao.edu.user.controller;
 
 import com.keao.edu.common.controller.BaseController;
 import com.keao.edu.user.service.ExamRegistrationPaymentService;
+import com.keao.edu.user.service.ExaminationBasicService;
 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;
 
+@RequestMapping("task")
 @RestController
 public class TaskController extends BaseController {
 
-@Autowired
-private ExamRegistrationPaymentService examRegistrationPaymentService;
+    @Autowired
+    private ExamRegistrationPaymentService examRegistrationPaymentService;
+    @Autowired
+    private ExaminationBasicService examinationBasicService;
+
     // 查询订单状态
-    @GetMapping("/queryOrderStatus")
+    @GetMapping("/queryPaymentStatus")
     public void queryOrderStatus() throws Exception {
         try {
             examRegistrationPaymentService.queryPaymentStatus();
@@ -20,4 +26,9 @@ private ExamRegistrationPaymentService examRegistrationPaymentService;
             e.printStackTrace();
         }
     }
+
+    @GetMapping("/updateExamStatus")
+    public void updateExamStatus(){
+        examinationBasicService.updateExamStatus();
+    }
 }

+ 11 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/dto/ExamRegistrationRoomDto.java

@@ -20,6 +20,9 @@ public class ExamRegistrationRoomDto extends ExamRegistration {
     @ApiModelProperty(value = "考试结束时间")
     private Date examEndTime;
 
+    @ApiModelProperty(value = "是否完成考试")
+    private Integer isFinishedExam;
+
     public Long getExamRoomId() {
         return examRoomId;
     }
@@ -43,4 +46,12 @@ public class ExamRegistrationRoomDto extends ExamRegistration {
     public void setExamEndTime(Date examEndTime) {
         this.examEndTime = examEndTime;
     }
+
+    public Integer getIsFinishedExam() {
+        return isFinishedExam;
+    }
+
+    public void setIsFinishedExam(Integer isFinishedExam) {
+        this.isFinishedExam = isFinishedExam;
+    }
 }

+ 12 - 1
edu-user/edu-user-server/src/main/java/com/keao/edu/user/entity/ExamReview.java

@@ -1,5 +1,6 @@
 package com.keao.edu.user.entity;
 
+import com.keao.edu.auth.api.entity.SysUser;
 import com.keao.edu.user.enums.YesOrNoEnum;
 import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.builder.ToStringBuilder;
@@ -21,6 +22,8 @@ public class ExamReview {
 	/**  */
 	@ApiModelProperty(value = "教师编号")
 	private Integer teacherId;
+
+	private SysUser teacher;
 	
 	/**  */
 	@ApiModelProperty(value = "学员编号")
@@ -69,7 +72,15 @@ public class ExamReview {
 	public Long getId(){
 		return this.id;
 	}
-			
+
+	public SysUser getTeacher() {
+		return teacher;
+	}
+
+	public void setTeacher(SysUser teacher) {
+		this.teacher = teacher;
+	}
+
 	public void setExaminationBasicId(Integer examinationBasicId){
 		this.examinationBasicId = examinationBasicId;
 	}

+ 24 - 1
edu-user/edu-user-server/src/main/java/com/keao/edu/user/entity/ExaminationBasic.java

@@ -5,6 +5,7 @@ import com.keao.edu.user.enums.ExamStatusEnum;
 import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -42,6 +43,12 @@ public class ExaminationBasic {
 	@ApiModelProperty(value = "预计考试结束时间")
 	private java.util.Date expectExamEndTime;
 
+	@ApiModelProperty(value = "实际考试开始时间")
+	private java.util.Date actualExamStartTime;
+
+	@ApiModelProperty(value = "实际考试结束时间")
+	private java.util.Date actualExamEndTime;
+
 	@ApiModelProperty(value = "标题")
 	private String posterTitle;
 
@@ -163,7 +170,23 @@ public class ExaminationBasic {
 	public java.util.Date getExpectExamEndTime(){
 		return this.expectExamEndTime;
 	}
-			
+
+	public Date getActualExamStartTime() {
+		return actualExamStartTime;
+	}
+
+	public void setActualExamStartTime(Date actualExamStartTime) {
+		this.actualExamStartTime = actualExamStartTime;
+	}
+
+	public Date getActualExamEndTime() {
+		return actualExamEndTime;
+	}
+
+	public void setActualExamEndTime(Date actualExamEndTime) {
+		this.actualExamEndTime = actualExamEndTime;
+	}
+
 	public void setPosterTitle(String posterTitle){
 		this.posterTitle = posterTitle;
 	}

+ 32 - 10
edu-user/edu-user-server/src/main/java/com/keao/edu/user/entity/StudentExamResult.java

@@ -16,6 +16,9 @@ public class StudentExamResult {
 	
 	@ApiModelProperty(value = "考级项目编号")
 	private Integer examinationBasicId;
+
+	@ApiModelProperty(value = "考级项目")
+	private ExaminationBasic examinationBasic;
 	
 	@ApiModelProperty(value = "学员编号")
 	private Integer studentId;
@@ -30,7 +33,7 @@ public class StudentExamResult {
 	private Float avgScore;
 
 	@ApiModelProperty(value = "考试结果确认")
-	private Boolean confirmStatus;
+	private Integer confirmStatus;
 	
 	@ApiModelProperty(value = "备注")
 	private String memo;
@@ -39,7 +42,10 @@ public class StudentExamResult {
 	private Integer operatorId;
 
 	@ApiModelProperty(value = "是否参与考试")
-	private Boolean isFinishedExam;
+	private Integer isFinishedExam;
+
+	@ApiModelProperty(value = "视频连接")
+	private String videoUrl;
 
 	private java.util.Date createTime;
 
@@ -47,6 +53,14 @@ public class StudentExamResult {
 
 	private String tenantId;
 
+	public ExaminationBasic getExaminationBasic() {
+		return examinationBasic;
+	}
+
+	public void setExaminationBasic(ExaminationBasic examinationBasic) {
+		this.examinationBasic = examinationBasic;
+	}
+
 	public Long getExamRegistrationId() {
 		return examRegistrationId;
 	}
@@ -71,14 +85,18 @@ public class StudentExamResult {
 		this.examRegistration = examRegistration;
 	}
 
-	public Boolean getConfirmStatus() {
+	public Integer getConfirmStatus() {
 		return confirmStatus;
 	}
 
-	public void setConfirmStatus(Boolean confirmStatus) {
+	public void setConfirmStatus(Integer confirmStatus) {
 		this.confirmStatus = confirmStatus;
 	}
 
+	public void setIsFinishedExam(Integer isFinishedExam) {
+		this.isFinishedExam = isFinishedExam;
+	}
+
 	public void setExaminationBasicId(Integer examinationBasicId){
 		this.examinationBasicId = examinationBasicId;
 	}
@@ -103,6 +121,14 @@ public class StudentExamResult {
 		this.result = result;
 	}
 
+	public String getVideoUrl() {
+		return videoUrl;
+	}
+
+	public void setVideoUrl(String videoUrl) {
+		this.videoUrl = videoUrl;
+	}
+
 	public void setMemo(String memo){
 		this.memo = memo;
 	}
@@ -151,12 +177,8 @@ public class StudentExamResult {
 		return this.tenantId;
 	}
 
-	public Boolean getIsFinishedExam() {
-		return this.isFinishedExam;
-	}
-
-	public void setIsFinishedExam(Boolean isFinishedExam) {
-		this.isFinishedExam = isFinishedExam;
+	public Integer getIsFinishedExam() {
+		return isFinishedExam;
 	}
 
 	@Override

+ 11 - 3
edu-user/edu-user-server/src/main/java/com/keao/edu/user/page/ExamReviewQueryInfo.java

@@ -1,17 +1,17 @@
 package com.keao.edu.user.page;
 
 import com.keao.edu.common.page.QueryInfo;
-import com.keao.edu.user.enums.ExamStatusEnum;
 import com.keao.edu.user.enums.StudentRegistrationStatusEnum;
 import io.swagger.annotations.ApiModelProperty;
 
-import java.util.Date;
-
 public class ExamReviewQueryInfo extends QueryInfo {
 
     @ApiModelProperty(value = "考试项目编号")
     private Integer examinationBaseId;
 
+    @ApiModelProperty(value = "学员报名编号")
+    private Long registId;
+
     @ApiModelProperty(value = "准考证号")
     private String cardNo;
 
@@ -42,6 +42,14 @@ public class ExamReviewQueryInfo extends QueryInfo {
     @ApiModelProperty(value = "评审时间")
     private String endTime;
 
+    public Long getRegistId() {
+        return registId;
+    }
+
+    public void setRegistId(Long registId) {
+        this.registId = registId;
+    }
+
     public String getStartTime() {
         return startTime;
     }

+ 10 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/page/ExaminationQueryInfo.java

@@ -11,6 +11,16 @@ public class ExaminationQueryInfo extends QueryInfo {
 
     private ExamStatusEnum examStatus;
 
+    private Integer organId;
+
+    public Integer getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(Integer organId) {
+        this.organId = organId;
+    }
+
     public ExamStatusEnum getExamStatus() {
         return examStatus;
     }

+ 4 - 1
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamManualLedgerServiceImpl.java

@@ -46,7 +46,7 @@ public class ExamManualLedgerServiceImpl extends BaseServiceImpl<Long, ExamManua
 			throw new BizException("请指定交易金额");
 		}
 		sysUserDao.lockUser(examManualLedger.getOperatorUserId());
-		if(Objects.nonNull(examManualLedger.getOrganId())){
+		if(Objects.nonNull(examManualLedger.getOrganId())&&examManualLedger.getOrganId()>0){
 			ExamOrganizationRelation examOrganizationRelation = examOrganizationRelationDao.getExamOrganizationRelation(examManualLedger.getOrganId(), examManualLedger.getOrganId());
 			if(Objects.isNull(examOrganizationRelation)){
 				throw new BizException("合作单位信息异常");
@@ -54,6 +54,9 @@ public class ExamManualLedgerServiceImpl extends BaseServiceImpl<Long, ExamManua
 			examOrganizationRelation.setTotalTransAmount(examOrganizationRelation.getTotalTransAmount().add(examManualLedger.getAmount()));
 			examOrganizationRelationDao.update(examOrganizationRelation);
 		}
+		if(Objects.nonNull(examManualLedger.getOrganId())&&examManualLedger.getOrganId()<=0){
+			examManualLedger.setOrganId(null);
+		}
 		examManualLedgerDao.insert(examManualLedger);
 	}
 

+ 1 - 1
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamOrganizationRelationServiceImpl.java

@@ -174,7 +174,7 @@ public class ExamOrganizationRelationServiceImpl extends BaseServiceImpl<Long, E
 		if(Objects.isNull(examinationBasic)){
 			throw new BizException("考级项目不存在");
 		}
-		if(!ExamStatusEnum.CLOSE.equals(examinationBasic.getStatus())){
+		if(ExamStatusEnum.CLOSE.equals(examinationBasic.getStatus())){
 			throw new BizException("考级项目已关闭");
 		}
 

+ 9 - 6
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamRegistrationPaymentServiceImpl.java

@@ -111,10 +111,10 @@ public class ExamRegistrationPaymentServiceImpl extends BaseServiceImpl<Long, Ex
         }
         //更新报名人数,和报名金额
         ExamOrganizationRelation examOrganizationRelation = examOrganizationRelationDao.getExamOrganizationRelation(examRegistration.getExaminationBasicId(), examRegistration.getOrganId());
-        examOrganizationRelation.setTotalRegistrationStudentNum(examOrganizationRelation.getTotalRegistrationStudentNum()+1);
+        examOrganizationRelation.setTotalRegistrationStudentNum(examOrganizationRelation.getTotalRegistrationStudentNum() + 1);
         BigDecimal amount = examOrganizationRelation.getTotalPaymentAmount().add(examRegistration.getLevelFee()).add(examRegistration.getTheoryLevelFee());
         examOrganizationRelation.setTotalPaymentAmount(amount);
-        if(examOrganizationRelationDao.update(examOrganizationRelation) <= 0){
+        if (examOrganizationRelationDao.update(examOrganizationRelation) <= 0) {
             throw new BizException("报名人数报名金额更新失败");
         }
         return order;
@@ -217,7 +217,7 @@ public class ExamRegistrationPaymentServiceImpl extends BaseServiceImpl<Long, Ex
             Map<String, Object> payment = Payment.queryPayment(order.getTransNo());
             Map<String, String> rpMap = new HashMap<>();
             rpMap.put("orderNo", order.getOrderNo());
-            rpMap.put("transNo", (String) payment.get("id"));
+            rpMap.put("transNo", order.getTransNo());
             rpMap.put("channelType", (String) payment.get("pay_channel"));
             String status = (String) payment.get("status");
             if (payment.containsKey("error_msg")) {
@@ -259,9 +259,12 @@ public class ExamRegistrationPaymentServiceImpl extends BaseServiceImpl<Long, Ex
         List<ExamRegistrationPayment> ordersOverTime = examRegistrationPaymentDao.findOrdersOverTime(orderNoList, TransStatusEnum.ING, beforeDate);
         for (ExamRegistrationPayment order : ordersOverTime) {
             try {
-                order.setTransStatus(TransStatusEnum.FAILED);
-                order.setMemo("超时未支付关闭");
-
+                Map<String, String> rpMap = new HashMap<>();
+                rpMap.put("orderNo", order.getOrderNo());
+                rpMap.put("transNo", order.getTransNo());
+                rpMap.put("memo", "超时未支付关闭");
+                rpMap.put("transStatus", "FAILED");
+                updateOrder(rpMap); //更新订单
             } catch (Exception e) {
                 e.printStackTrace();
                 continue;

+ 7 - 1
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamRegistrationServiceImpl.java

@@ -177,10 +177,15 @@ public class ExamRegistrationServiceImpl extends BaseServiceImpl<Long, ExamRegis
 
             List<Integer> studentIds = dataList.stream().map(ExamRegistration::getStudentId).collect(Collectors.toList());
             Map<Integer, String> idPhotoMap = this.getMap("student", "user_id_", "certificate_photo_", studentIds, Integer.class, String.class);
-            for (ExamRegistration examRegistration : dataList) {
+
+            List<Integer> registIds = dataList.stream().map(ExamRegistrationRoomDto::getId).collect(Collectors.toList());
+            Map<Integer, Integer> registExamStatusMap = this.getMap("student_exam_result", "exam_registration_id_", "is_finished_exam_", registIds, Integer.class, Integer.class);
+
+            for (ExamRegistrationRoomDto examRegistration : dataList) {
                 examRegistration.setOrganization(new Organization(examRegistration.getOrganId(), organIdNameMap.get(examRegistration.getOrganId())));
                 examRegistration.getSubject().setName(subjectIdNameMap.get(examRegistration.getSubjectId()));
                 examRegistration.getSysUser().setCertificatePhoto(idPhotoMap.get(examRegistration.getStudentId()));
+                examRegistration.setIsFinishedExam(registExamStatusMap.get(examRegistration.getId()));
                 examRegistration.setExaminationBasic(new ExaminationBasic(examRegistration.getExaminationBasicId(), examIdNameMap.get(examRegistration.getExaminationBasicId())));
             }
         }
@@ -295,6 +300,7 @@ public class ExamRegistrationServiceImpl extends BaseServiceImpl<Long, ExamRegis
         orderNo = idGeneratorService.generatorId("payment") + "";
 
         order.setId(null);
+        order.setTransNo(null);
         order.setTransStatus(TransStatusEnum.ING);
         order.setOrderNo(orderNo);
         examRegistrationPaymentService.insert(order);

+ 9 - 8
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamReviewServiceImpl.java

@@ -8,19 +8,20 @@ import com.keao.edu.common.page.PageInfo;
 import com.keao.edu.common.service.impl.BaseServiceImpl;
 import com.keao.edu.user.dao.ExamReviewDao;
 import com.keao.edu.user.dto.ExamReviewDto;
-import com.keao.edu.user.dto.ExamRoomStudentRelationDto;
 import com.keao.edu.user.entity.ExamReview;
 import com.keao.edu.user.entity.Subject;
 import com.keao.edu.user.enums.YesOrNoEnum;
 import com.keao.edu.user.page.ExamReviewQueryInfo;
 import com.keao.edu.user.service.ExamReviewService;
 import com.keao.edu.util.collection.MapUtil;
-import org.apache.poi.ss.formula.functions.T;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.*;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 @Service
@@ -42,8 +43,8 @@ public class ExamReviewServiceImpl extends BaseServiceImpl<Long, ExamReview> imp
 		Map<String, Object> params = new HashMap<String, Object>();
 		MapUtil.populateMap(params, queryInfo);
 
-		List<Integer> nextLevelOrganIds = organizationService.getChildOrganIds(queryInfo.getOrganId(), true);
-		params.put("organIds", nextLevelOrganIds);
+//		List<Integer> nextLevelOrganIds = organizationService.getChildOrganIds(queryInfo.getOrganId(), true);
+//		params.put("organIds", nextLevelOrganIds);
 
 		List<ExamReviewDto> dataList = null;
 		int count = examReviewDao.countExamResult(params);
@@ -51,12 +52,12 @@ public class ExamReviewServiceImpl extends BaseServiceImpl<Long, ExamReview> imp
 			pageInfo.setTotal(count);
 			params.put("offset", pageInfo.getOffset());
 			dataList = examReviewDao.findExamResult(params);
-			List<Integer> studentIds = dataList.stream().map(ExamReviewDto::getStudentId).collect(Collectors.toList());
+			List<Integer> teacherIds = dataList.stream().map(ExamReviewDto::getTeacherId).collect(Collectors.toList());
 			List<Integer> subjectIds = dataList.stream().map(e->e.getExamRegistration().getSubjectId()).collect(Collectors.toList());
-			Map<Integer, String> studentIdNameMap = this.getMap("sys_user", "id_", "real_name_", studentIds, Integer.class, String.class);
+			Map<Integer, String> teacherIdNameMap = this.getMap("sys_user", "id_", "real_name_", teacherIds, Integer.class, String.class);
 			Map<Integer, String> subjectIdNameMap = this.getMap("subject", "id_", "name_", subjectIds, Integer.class, String.class);
 			for (ExamReviewDto e : dataList) {
-				e.setStudentInfo(new SysUser(e.getStudentId(),studentIdNameMap.get(e.getStudentId())));
+				e.setTeacher(new SysUser(e.getStudentId(),teacherIdNameMap.get(e.getStudentId())));
 				e.getExamRegistration().setSubject(new Subject(e.getExamRegistration().getSubjectId(), subjectIdNameMap.get(e.getExamRegistration().getSubjectId())));
 			}
 		}

+ 17 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamRoomServiceImpl.java

@@ -23,6 +23,7 @@ import com.keao.edu.user.service.OrganizationService;
 import com.keao.edu.util.collection.MapUtil;
 import com.keao.edu.util.date.DateUtil;
 import org.apache.commons.beanutils.BeanUtils;
+import org.apache.commons.lang.time.DateUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -125,7 +126,23 @@ public class ExamRoomServiceImpl extends BaseServiceImpl<Long, ExamRoom> impleme
 			examRooms.add(er);
 		}
 		checkRoomTeachers(examRooms);
+		Date minStartTime = examRooms.stream().min(Comparator.comparing(ExamRoom::getExamStartTime)).get().getExamStartTime();
+		Date maxEndTime = examRooms.stream().max(Comparator.comparing(ExamRoom::getExamEndTime)).get().getExamEndTime();
+
+		if(Objects.isNull(examinationBasic.getActualExamStartTime())){
+			examinationBasic.setActualExamStartTime(minStartTime);
+		}
+		if(Objects.isNull(examinationBasic.getActualExamEndTime())){
+			examinationBasic.setActualExamEndTime(maxEndTime);
+		}
+		if(minStartTime.compareTo(examinationBasic.getActualExamStartTime())<0){
+			examinationBasic.setActualExamStartTime(DateUtils.truncate(minStartTime, Calendar.DAY_OF_MONTH));
+		}
+		if(maxEndTime.compareTo(examinationBasic.getActualExamEndTime())>0){
+			examinationBasic.setActualExamEndTime(DateUtils.ceiling(maxEndTime, Calendar.DAY_OF_MONTH));
+		}
 		examRoomDao.batchInsert(examRooms);
+		examinationBasicDao.update(examinationBasic);
 	}
 
 	@Override

+ 2 - 2
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamRoomStudentRelationServiceImpl.java

@@ -104,8 +104,8 @@ public class ExamRoomStudentRelationServiceImpl extends BaseServiceImpl<Long, Ex
 			StudentExamResult ser = new StudentExamResult();
 			ser.setExaminationBasicId(examRoom.getExaminationBasicId());
 			ser.setStudentId(Integer.valueOf(studentId));
-			ser.setIsFinishedExam(false);
-			ser.setConfirmStatus(false);
+			ser.setIsFinishedExam(0);
+			ser.setConfirmStatus(0);
 			ser.setTenantId(TenantContextHolder.getTenantId().toString());
 			studentExamResults.add(ser);
 

+ 9 - 2
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExaminationBasicServiceImpl.java

@@ -13,6 +13,7 @@ import com.keao.edu.user.entity.*;
 import com.keao.edu.user.enums.ExamStatusEnum;
 import com.keao.edu.user.page.ExaminationQueryInfo;
 import com.keao.edu.user.service.ExaminationBasicService;
+import com.keao.edu.user.service.OrganizationService;
 import com.keao.edu.util.collection.MapUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -39,6 +40,8 @@ public class ExaminationBasicServiceImpl extends BaseServiceImpl<Long, Examinati
     private ExamLocationDao examLocationDao;
     @Autowired
     private SysUserDao sysUserDao;
+    @Autowired
+    private OrganizationService organizationService;
 
     @Override
     public BaseDAO<Long, ExaminationBasic> getDAO() {
@@ -108,8 +111,9 @@ public class ExaminationBasicServiceImpl extends BaseServiceImpl<Long, Examinati
             if (now.compareTo(needUpdateStatusExam.getEnrollEndTime()) >= 0) {
                 needUpdateStatusExam.setStatus(ExamStatusEnum.APPLIED);
             }
-            if (now.compareTo(needUpdateStatusExam.getExpectExamStartTime()) >= 0) {
-                needUpdateStatusExam.setStatus(ExamStatusEnum.EXAM_ING);
+            if (Objects.nonNull(needUpdateStatusExam.getActualExamEndTime())
+                    &&now.compareTo(needUpdateStatusExam.getActualExamEndTime()) >= 0) {
+                needUpdateStatusExam.setStatus(ExamStatusEnum.EXAM_END);
             }
         }
         examinationBasicDao.batchUpdate(needUpdateStatusExams);
@@ -121,6 +125,9 @@ public class ExaminationBasicServiceImpl extends BaseServiceImpl<Long, Examinati
         Map<String, Object> params = new HashMap<String, Object>();
         MapUtil.populateMap(params, queryInfo);
 
+        List<Integer> childOrganIds = organizationService.getChildOrganIds(queryInfo.getOrganId(), true);
+        params.put("organIds", childOrganIds);
+
         List<ExaminationBasicDto> dataList = new ArrayList<>();
         int count = examinationBasicDao.countExaminationBasics(params);
         if (count > 0) {

+ 10 - 3
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/StudentExamResultServiceImpl.java

@@ -8,6 +8,7 @@ import com.keao.edu.common.service.impl.BaseServiceImpl;
 import com.keao.edu.user.api.entity.Student;
 import com.keao.edu.user.dao.ExaminationBasicDao;
 import com.keao.edu.user.dao.StudentExamResultDao;
+import com.keao.edu.user.dto.ExaminationBasicDto;
 import com.keao.edu.user.dto.StudentExamResultStatisticsDto;
 import com.keao.edu.user.entity.ExaminationBasic;
 import com.keao.edu.user.entity.Organization;
@@ -50,22 +51,28 @@ public class StudentExamResultServiceImpl extends BaseServiceImpl<Long, StudentE
 		params.put("organIds", childOrganIds);
 
 		List<StudentExamResult> dataList = new ArrayList<>();
-		int count = this.findCount(params);
+		int count = studentExamResultDao.countStudentExamResult(params);
 		if (count > 0) {
 			pageInfo.setTotal(count);
 			params.put("offset", pageInfo.getOffset());
-			dataList = this.getDAO().queryPage(params);
+			dataList = studentExamResultDao.queryStudentExamResult(params);
+			List<Integer> examIds = dataList.stream().map(StudentExamResult::getExaminationBasicId).collect(Collectors.toList());
 			List<Integer> studentIds = dataList.stream().map(StudentExamResult::getStudentId).collect(Collectors.toList());
 			List<Integer> subjectIds = dataList.stream().map(e -> e.getExamRegistration().getSubjectId()).collect(Collectors.toList());
 			List<Integer> organIds = dataList.stream().map(e -> e.getExamRegistration().getOrganId()).collect(Collectors.toList());
 			Map<Integer, String> studentIdNameMap = this.getMap("sys_user", "id_", "real_name_", studentIds, Integer.class, String.class);
 			Map<Integer, String> subjectIdNameMap = this.getMap("subject", "id_", "name_", subjectIds, Integer.class, String.class);
 			Map<Integer, String> organIdNameMap = this.getMap("organization", "id_", "name_", organIds, Integer.class, String.class);
+
+			List<ExaminationBasicDto> exams = examinationBasicDao.getExams(examIds);
+			Map<Integer, ExaminationBasicDto> idExamMap = exams.stream().collect(Collectors.toMap(ExaminationBasic::getId, e -> e));
+
 			for (StudentExamResult s : dataList) {
 				Student student=new Student(s.getStudentId(), studentIdNameMap.get(s.getStudentId()));
+				s.setExaminationBasic(idExamMap.get(s.getExaminationBasicId()));
 				s.getExamRegistration().setSysUser(student);
 				s.getExamRegistration().setSubject(new Subject(s.getExamRegistration().getSubjectId(), subjectIdNameMap.get(s.getExamRegistration().getSubjectId())));
-				s.getExamRegistration().setOrganization(new Organization(s.getExamRegistration().getOrganId(), organIdNameMap.get(s.getExamRegistration().getSubjectId())));
+				s.getExamRegistration().setOrganization(new Organization(s.getExamRegistration().getOrganId(), organIdNameMap.get(s.getExamRegistration().getOrganId())));
 			}
 		}
 		pageInfo.setRows(dataList);

+ 2 - 1
edu-user/edu-user-server/src/main/resources/config/mybatis/EmployeeMapper.xml

@@ -118,7 +118,8 @@
 	
 	<!-- 分页查询 -->
 	<select id="queryPage" resultMap="Employee" parameterType="map">
-		SELECT su.*,e.*,GROUP_CONCAT(sr.role_name_) role_name_ FROM employee e
+		SELECT su.*,e.*,GROUP_CONCAT(sr.role_name_) role_name_
+		FROM employee e
 		LEFT JOIN sys_user su ON e.user_id_ = su.id_
 		LEFT JOIN sys_user_role sur ON sur.user_id_ = su.id_
 		LEFT JOIN sys_role sr ON sr.id_ = sur.role_id_

+ 1 - 0
edu-user/edu-user-server/src/main/resources/config/mybatis/ExamRegistrationMapper.xml

@@ -219,6 +219,7 @@
 			er.student_id_,
 			er.memo_,
 			su.real_name_ sys_user_real_name_,
+			su.phone_ sys_user_phone_,
 			er.last_exam_certificate_url_,
 			er.last_music_theory_certificate_url_,
 			er.level_fee_,

+ 13 - 10
edu-user/edu-user-server/src/main/resources/config/mybatis/ExamReviewMapper.xml

@@ -13,7 +13,7 @@
 		<result column="teacher_id_" property="teacherId" />
 		<result column="student_id_" property="studentId" />
 		<result column="evaluation_content_" property="evaluationContent" />
-		<result column="evaluation_result_" property="evaluationResult" typeHandler="com.keao.edu.common.dal.CustomEnumTypeHandler"/>
+		<result column="evaluation_result_" property="evaluationResult"/>
 		<result column="create_time_" property="createTime" />
 		<result column="update_time_" property="updateTime" />
 		<result column="tenant_id_" property="tenantId" />
@@ -40,7 +40,7 @@
 		INSERT INTO exam_review (id_,examination_basic_id_,teacher_id_,student_id_,evaluation_content_,
 		evaluation_result_,create_time_,update_time_,tenant_id_,enable_edit_,exam_registration_id_)
 		VALUES(#{id},#{examinationBasicId},#{teacherId},#{studentId},#{evaluationContent},
-		#{evaluationResult,typeHandler=com.keao.edu.common.dal.CustomEnumTypeHandler},NOW(),NOW(),
+		#{evaluationResult},NOW(),NOW(),
 		#{tenantId},#{enableEdit,typeHandler=com.keao.edu.common.dal.CustomEnumTypeHandler},#{examRegistrationId})
 	</insert>
 	
@@ -58,7 +58,7 @@
 				teacher_id_ = #{teacherId},
 			</if>
 			<if test="evaluationResult != null">
-				evaluation_result_ = #{evaluationResult,typeHandler=com.keao.edu.common.dal.CustomEnumTypeHandler},
+				evaluation_result_ = #{evaluationResult},
 			</if>
 			<if test="tenantId != null">
 				tenant_id_ = #{tenantId},
@@ -101,6 +101,9 @@
 					#{organId}
 				</foreach>
 			</if>
+			<if test="registId!=null">
+				AND er.exam_registration_id_=#{registId}
+			</if>
 			<if test="examinationBaseId!=null">
 				AND ere.examination_basic_id_ = #{examinationBaseId}
 			</if>
@@ -123,26 +126,26 @@
 	</sql>
 	<select id="findExamResult" resultMap="ExamReviewDto">
 		SELECT
+			er.*,
 			ere.id_ regist_id_,
 			ere.student_id_ regist_student_id_,
 			ere.organ_id_ regist_organ_id_,
 			ere.subject_id_ regist_subject_id_,
 			ere.level_ regist_level_,
-			ere.status_ regist_status_,
-			er.evaluation_result_
+			ere.status_ regist_status_
 		FROM
-			exam_registration ere
-			LEFT JOIN exam_review er ON ere.student_id_ = er.student_id_ AND ere.examination_basic_id_=er.examination_basic_id_
+			exam_review er
+			LEFT JOIN exam_registration ere ON ere.id_=er.exam_registration_id_
 		<include refid="findExamResultCondition"/>
 		ORDER BY ere.id_ DESC
 		<include refid="global.limit"/>
 	</select>
 	<select id="countExamResult" resultType="int">
 		SELECT
-			COUNT(ere.id_)
+			COUNT(er.id_)
 		FROM
-			exam_registration ere
-			LEFT JOIN exam_review er ON ere.student_id_ = er.student_id_ AND ere.examination_basic_id_=er.examination_basic_id_
+			exam_review er
+			LEFT JOIN exam_registration ere ON ere.id_=er.exam_registration_id_
 		<include refid="findExamResultCondition"/>
 	</select>
 </mapper>

+ 44 - 20
edu-user/edu-user-server/src/main/resources/config/mybatis/ExaminationBasicMapper.xml

@@ -17,6 +17,8 @@
 		<result column="enroll_end_time_" property="enrollEndTime" />
 		<result column="expect_exam_start_time_" property="expectExamStartTime" />
 		<result column="expect_exam_end_time_" property="expectExamEndTime" />
+		<result column="actual_exam_start_time_" property="actualExamStartTime" />
+		<result column="actual_exam_end_time_" property="actualExamEndTime" />
 		<result column="poster_title_" property="posterTitle" />
 		<result column="poster_profile_" property="posterProfile" />
 		<result column="poster_background_img_" property="posterBackgroundImg" />
@@ -47,8 +49,13 @@
 	
 	<!-- 向数据库增加一条记录 -->
 	<insert id="insert" parameterType="com.keao.edu.user.entity.ExaminationBasic" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-		INSERT INTO examination_basic (id_,name_,exam_mode_,exam_location_id_list_,exam_location_name_list_,status_,enroll_start_time_,enroll_end_time_,expect_exam_start_time_,expect_exam_end_time_,poster_title_,poster_profile_,poster_background_img_,creator_id_,create_time_,update_time_,tenant_id_,memo_,organ_id_)
-		VALUES(#{id},#{name},#{examMode,typeHandler=com.keao.edu.common.dal.CustomEnumTypeHandler},#{examLocationIdList},#{examLocationNameList},#{status,typeHandler=com.keao.edu.common.dal.CustomEnumTypeHandler},#{enrollStartTime},#{enrollEndTime},#{expectExamStartTime},#{expectExamEndTime},#{posterTitle},#{posterProfile},#{posterBackgroundImg},#{creatorId},NOW(),NOW(),#{tenantId},#{memo},#{organId})
+		INSERT INTO examination_basic (id_,name_,exam_mode_,exam_location_id_list_,exam_location_name_list_,status_,enroll_start_time_,enroll_end_time_,
+		expect_exam_start_time_,expect_exam_end_time_,actual_exam_start_time_,actual_exam_end_time_,
+		poster_title_,poster_profile_,poster_background_img_,creator_id_,create_time_,update_time_,tenant_id_,memo_,organ_id_)
+		VALUES(#{id},#{name},#{examMode,typeHandler=com.keao.edu.common.dal.CustomEnumTypeHandler},#{examLocationIdList},#{examLocationNameList},
+		#{status,typeHandler=com.keao.edu.common.dal.CustomEnumTypeHandler},#{enrollStartTime},#{enrollEndTime},
+		#{expectExamStartTime},#{expectExamEndTime},#{actualExamStartTime},#{actualExamEndTime},
+		#{posterTitle},#{posterProfile},#{posterBackgroundImg},#{creatorId},NOW(),NOW(),#{tenantId},#{memo},#{organId})
 	</insert>
 
 	<update id="update" parameterType="com.keao.edu.user.entity.ExamOrganizationRelation">
@@ -81,6 +88,12 @@
 			<if test="expectExamEndTime != null">
 				expect_exam_end_time_ = #{expectExamEndTime},
 			</if>
+			<if test="actualExamStartTime != null">
+				actual_exam_start_time_ = #{actualExamStartTime},
+			</if>
+			<if test="actualExamEndTime != null">
+				actual_exam_end_time_ = #{actualExamEndTime},
+			</if>
 			<if test="posterTitle != null">
 				poster_title_ = #{posterTitle},
 			</if>
@@ -107,50 +120,56 @@
 		<foreach collection="exams" item="exam" separator=";">
 			UPDATE examination_basic
 			<set>
-				<if test="name != null">
+				<if test="exam.name != null">
 					name_ = #{exam.name},
 				</if>
-				<if test="examMode != null">
+				<if test="exam.examMode != null">
 					exam_mode_ = #{exam.examMode,typeHandler=com.keao.edu.common.dal.CustomEnumTypeHandler},
 				</if>
-				<if test="examLocationIdList != null">
+				<if test="exam.examLocationIdList != null">
 					exam_location_id_list_ = #{exam.examLocationIdList},
 				</if>
-				<if test="examLocationNameList != null">
+				<if test="exam.examLocationNameList != null">
 					exam_location_name_list_ = #{exam.examLocationNameList},
 				</if>
-				<if test="status != null">
+				<if test="exam.status != null">
 					status_ = #{exam.status,typeHandler=com.keao.edu.common.dal.CustomEnumTypeHandler},
 				</if>
-				<if test="enrollStartTime != null">
+				<if test="exam.enrollStartTime != null">
 					enroll_start_time_ = #{exam.enrollStartTime},
 				</if>
-				<if test="enrollEndTime != null">
+				<if test="exam.enrollEndTime != null">
 					enroll_end_time_ = #{exam.enrollEndTime},
 				</if>
-				<if test="expectExamStartTime != null">
+				<if test="exam.expectExamStartTime != null">
 					expect_exam_start_time_ = #{exam.expectExamStartTime},
 				</if>
-				<if test="expectExamEndTime != null">
+				<if test="exam.expectExamEndTime != null">
 					expect_exam_end_time_ = #{exam.expectExamEndTime},
 				</if>
-				<if test="posterTitle != null">
+				<if test="exam.actualExamStartTime != null">
+					actual_exam_start_time_ = #{exam.actualExamStartTime},
+				</if>
+				<if test="exam.actualExamEndTime != null">
+					actual_exam_end_time_ = #{exam.actualExamEndTime},
+				</if>
+				<if test="exam.posterTitle != null">
 					poster_title_ = #{exam.posterTitle},
 				</if>
-				<if test="posterProfile != null">
+				<if test="exam.posterProfile != null">
 					poster_profile_ = #{exam.posterProfile},
 				</if>
-				<if test="posterBackgroundImg != null">
+				<if test="exam.posterBackgroundImg != null">
 					poster_profile_ = #{exam.posterBackgroundImg},
 				</if>
-				<if test="tenantId != null">
+				<if test="exam.tenantId != null">
 					tenant_id_ = #{exam.tenantId},
 				</if>
-				<if test="memo!=null">
-					memo_=#{memo},
+				<if test="exam.memo!=null">
+					memo_=#{exam.memo},
 				</if>
-				<if test="creatorId!=null">
-					creator_id_=#{creatorId},
+				<if test="exam.creatorId!=null">
+					creator_id_=#{exam.creatorId},
 				</if>
 				update_time_ = NOW()
 			</set> WHERE id_ = #{exam.id}
@@ -164,7 +183,12 @@
 
 	<sql id="queryCondition">
 		<where>
-			tenant_id_=#{tenantId}
+			<if test="organIds!=null">
+				AND organ_id_ IN
+				<foreach collection="organIds" item="organId" separator="," open="(" close=")">
+					#{organId}
+				</foreach>
+			</if>
 			<if test="examStatus!=null">
 				AND status_=#{examStatus}
 			</if>

+ 19 - 16
edu-user/edu-user-server/src/main/resources/config/mybatis/StudentExamResultMapper.xml

@@ -16,6 +16,7 @@
 		<result column="confirm_status_" property="confirmStatus" />
 		<result column="is_finished_exam_" property="isFinishedExam" />
 		<result column="memo_" property="memo" />
+		<result column="video_url_" property="videoUrl" />
 		<result column="operator_id_" property="operatorId" />
 		<result column="create_time_" property="createTime" />
 		<result column="update_time_" property="updateTime" />
@@ -35,19 +36,19 @@
 	
 	<!-- 向数据库增加一条记录 -->
 	<insert id="insert" parameterType="com.keao.edu.user.entity.StudentExamResult" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-		INSERT INTO student_exam_result (id_,examination_basic_id_,student_id_,result_,avg_score_,
+		INSERT INTO student_exam_result (id_,examination_basic_id_,student_id_,result_,avg_score_,video_url_,
 		confirm_status_,memo_,operator_id_,is_finished_exam_,create_time_,update_time_,tenant_id_,exam_registration_id_)
 		VALUES(#{id},#{examinationBasicId},#{studentId},#{result,typeHandler=com.keao.edu.common.dal.CustomEnumTypeHandler},
-		#{avgScore},#{confirmStatus},#{memo},#{operatorId},#{isFinishedExam},NOW(),NOW(),#{tenantId},#{examRegistrationId})
+		#{avgScore},#{#{videoUrl}},#{confirmStatus},#{memo},#{operatorId},#{isFinishedExam},NOW(),NOW(),#{tenantId},#{examRegistrationId})
 	</insert>
 
 	<insert id="batchInsert" parameterType="com.keao.edu.user.entity.StudentExamResult" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-		INSERT INTO student_exam_result (examination_basic_id_,student_id_,result_,#{avg_score_},
+		INSERT INTO student_exam_result (examination_basic_id_,student_id_,result_,avg_score_,video_url_,
 		confirm_status_,memo_,operator_id_,is_finished_exam_,create_time_,update_time_,tenant_id_,exam_registration_id_)
 		VALUES
 		<foreach collection="results" item="result" separator=",">
 			(#{result.examinationBasicId},#{result.studentId},#{result.result,typeHandler=com.keao.edu.common.dal.CustomEnumTypeHandler},
-			#{result.avgScore},#{result.confirmStatus},#{result.memo},#{result.operatorId},#{result.isFinishedExam},NOW(),NOW(),#{result.tenantId},#{result.examRegistrationId})
+			#{result.avgScore},#{result.videoUrl},#{result.confirmStatus},#{result.memo},#{result.operatorId},#{result.isFinishedExam},NOW(),NOW(),#{result.tenantId},#{result.examRegistrationId})
 		</foreach>
 	</insert>
 
@@ -82,6 +83,9 @@
 			<if test="memo != null">
 				memo_ = #{memo},
 			</if>
+			<if test="videoUrl != null">
+				video_url_ = #{videoUrl},
+			</if>
 			<if test="isFinishedExam != null">
 				is_finished_exam_ = #{isFinishedExam},
 			</if>
@@ -120,27 +124,26 @@
 
 	<select id="queryStudentExamResult" resultMap="StudentExamResult" parameterType="map">
 		SELECT
-			er.card_no_,
-			er.student_id_,
-			er.organ_id_,
-			er.subject_id_,
-			er.level_,
-			CASE WHEN ser.id_>0 THEN 1 ELSE 0 END,
-			ser.confirm_status_
+			ser.*,
+			er.card_no_ regist_card_no_,
+			er.student_id_ regist_student_id_,
+			er.organ_id_ regist_organ_id_,
+			er.subject_id_ regist_subject_id_,
+			er.level_ regist_level_
 		FROM
-			exam_registration er
-			LEFT JOIN student_exam_result ser ON er.examination_basic_id_ = ser.examination_basic_id_
+			student_exam_result ser
+			LEFT JOIN exam_registration er ON er.examination_basic_id_ = ser.examination_basic_id_
 			AND er.student_id_ = ser.student_id_
 		<include refid="queryStudentExamResultCondition"/>
-		ORDER BY id_ <include refid="global.limit"/>
+		ORDER BY er.id_ <include refid="global.limit"/>
 	</select>
 
 	<select id="countStudentExamResult" resultType="int">
 		SELECT
 			COUNT(er.id_)
 		FROM
-			exam_registration er
-			LEFT JOIN student_exam_result ser ON er.examination_basic_id_ = ser.examination_basic_id_
+			student_exam_result ser
+			LEFT JOIN exam_registration er ON er.examination_basic_id_ = ser.examination_basic_id_
 			AND er.student_id_ = ser.student_id_
 		<include refid="queryStudentExamResultCondition"/>
 	</select>