Jelajahi Sumber

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

zouxuan 5 tahun lalu
induk
melakukan
d05f4b42b9
23 mengubah file dengan 368 tambahan dan 206 penghapusan
  1. 2 2
      edu-thirdparty/src/main/java/com/keao/edu/thirdparty/storage/StoragePluginContext.java
  2. 1 1
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/config/ResourceServerConfig.java
  3. 2 4
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/ExamLocationController.java
  4. 10 10
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/ExamOrderController.java
  5. 3 8
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/ExamSongController.java
  6. 9 1
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/dao/ExamLocationDao.java
  7. 7 0
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/dao/ExamRegistrationDao.java
  8. 3 0
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/dao/ExamRegistrationPaymentDao.java
  9. 9 0
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/dao/ExamRoomDao.java
  10. 9 0
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/entity/ExamRegistrationPayment.java
  11. 13 0
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/entity/ExaminationBasic.java
  12. 1 1
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/ExamRegistrationPaymentService.java
  13. 5 2
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamRegistrationPaymentServiceImpl.java
  14. 13 2
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamRegistrationServiceImpl.java
  15. 72 9
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamRoomServiceImpl.java
  16. 162 158
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExaminationBasicServiceImpl.java
  17. 0 3
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/TenantInfoServiceImpl.java
  18. 1 1
      edu-user/edu-user-server/src/main/resources/config/mybatis/EmployeeMapper.xml
  19. 5 0
      edu-user/edu-user-server/src/main/resources/config/mybatis/ExamLocationMapper.xml
  20. 12 3
      edu-user/edu-user-server/src/main/resources/config/mybatis/ExamRegistrationMapper.xml
  21. 13 0
      edu-user/edu-user-server/src/main/resources/config/mybatis/ExamRegistrationPaymentMapper.xml
  22. 15 0
      edu-user/edu-user-server/src/main/resources/config/mybatis/ExamRoomMapper.xml
  23. 1 1
      edu-user/edu-user-server/src/main/resources/config/mybatis/StudentMapper.xml

+ 2 - 2
edu-thirdparty/src/main/java/com/keao/edu/thirdparty/storage/StoragePluginContext.java

@@ -15,7 +15,7 @@ public class StoragePluginContext {
 	
 	public static void addStoragePlugin(StoragePlugin storagePlugin) {
 		if (mapper.containsKey(storagePlugin.getName())) {
-			throw new ThirdpartyException("消息提供方:{}不存在", storagePlugin.getName());
+			throw new ThirdpartyException("存储插件:{}已存在", storagePlugin.getName());
 		}
 		mapper.put(storagePlugin.getName(), storagePlugin);
 	}
@@ -29,7 +29,7 @@ public class StoragePluginContext {
 		StoragePlugin storagePlugin = mapper.get(storagePluginName);
 
 		if (storagePlugin == null) {
-			throw new ThirdpartyException("消息提供方:{}不存在", storagePluginName);
+			throw new ThirdpartyException("存储插件:{}不存在", storagePluginName);
 		}
 
 		return storagePlugin;

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

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

+ 2 - 4
edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/ExamLocationController.java

@@ -3,10 +3,8 @@ package com.keao.edu.user.controller;
 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.common.page.QueryInfo;
 import com.keao.edu.common.tenant.TenantContextHolder;
 import com.keao.edu.user.entity.ExamLocation;
-import com.keao.edu.user.entity.ExamSong;
 import com.keao.edu.user.page.ExamLocationQueryInfo;
 import com.keao.edu.user.service.ExamLocationService;
 import io.swagger.annotations.Api;
@@ -44,7 +42,7 @@ public class ExamLocationController extends BaseController {
 
     @ApiOperation("新增考点")
     @PostMapping(value = "/add")
-    public HttpResponseResult add(ExamLocation examLocation) {
+    public HttpResponseResult add(@RequestBody ExamLocation examLocation) {
         examLocation.setTenantId(TenantContextHolder.getTenantId().toString());
         examLocationService.insert(examLocation);
         return succeed();
@@ -52,7 +50,7 @@ public class ExamLocationController extends BaseController {
 
     @ApiOperation("更新考点")
     @PostMapping(value = "/update")
-    public HttpResponseResult update(ExamLocation examLocation) {
+    public HttpResponseResult update(@RequestBody ExamLocation examLocation) {
         examLocation.setUpdateTime(new Date());
         examLocationService.update(examLocation);
         return succeed();

+ 10 - 10
edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/ExamOrderController.java

@@ -47,16 +47,16 @@ public class ExamOrderController extends BaseController {
     private EmployeeService employeeService;
 
     @ApiOperation(value = "缴费列表")
-    @GetMapping(value = "list")
-    @PreAuthorize("@pcs.hasPermissions('examOrder/pageList')")
-    public HttpResponseResult<PageInfo<ExamRegistration>> list(ExamRegistrationQueryInfo queryInfo) {
-        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());
-            }
-        }
+    @GetMapping(value = "pageList")
+    //@PreAuthorize("@pcs.hasPermissions('examOrder/pageList')")
+    public HttpResponseResult<PageInfo<ExamRegistrationPayment>> list(ExamRegistrationQueryInfo queryInfo) {
+//        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());
+//            }
+//        }
         return succeed(examRegistrationPaymentService.pageList(queryInfo));
     }
 

+ 3 - 8
edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/ExamSongController.java

@@ -2,7 +2,6 @@ package com.keao.edu.user.controller;
 
 import com.keao.edu.common.controller.BaseController;
 import com.keao.edu.common.entity.HttpResponseResult;
-import com.keao.edu.common.exception.BizException;
 import com.keao.edu.common.page.PageInfo;
 import com.keao.edu.common.page.QueryInfo;
 import com.keao.edu.common.tenant.TenantContextHolder;
@@ -12,12 +11,8 @@ import com.keao.edu.user.service.ExamSongService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 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.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.Date;
 import java.util.List;
@@ -55,7 +50,7 @@ public class ExamSongController extends BaseController {
 
     @ApiOperation("新增曲库")
     @PostMapping(value = "/add")
-    public HttpResponseResult add(ExamSong examSong) {
+    public HttpResponseResult add(@RequestBody ExamSong examSong) {
         examSong.setTenantId(TenantContextHolder.getTenantId().toString());
         examSongService.insert(examSong);
         return succeed();
@@ -63,7 +58,7 @@ public class ExamSongController extends BaseController {
 
     @ApiOperation("更新曲库")
     @PostMapping(value = "/update")
-    public HttpResponseResult update(ExamSong examSong) {
+    public HttpResponseResult update(@RequestBody ExamSong examSong) {
         examSong.setUpdateTime(new Date());
         examSongService.update(examSong);
         return succeed();

+ 9 - 1
edu-user/edu-user-server/src/main/java/com/keao/edu/user/dao/ExamLocationDao.java

@@ -3,8 +3,16 @@ package com.keao.edu.user.dao;
 
 import com.keao.edu.common.dal.BaseDAO;
 import com.keao.edu.user.entity.ExamLocation;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 public interface ExamLocationDao extends BaseDAO<Integer, ExamLocation> {
 
-	
+    /**
+     * 根据ids获取考点
+     * @param ids
+     * @return
+     */
+    List<ExamLocation> getExamLocationByIds(@Param("ids") String ids);
 }

+ 7 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/dao/ExamRegistrationDao.java

@@ -106,4 +106,11 @@ public interface ExamRegistrationDao extends BaseDAO<Long, ExamRegistration> {
      * @return
      */
     ExamRegistrationDto getExamRegistration(@Param("examRegistrationId") Long examRegistrationId);
+
+    /**
+     * 获取单条报名信息
+     * @param id
+     * @return
+     */
+    ExamRegistration getExamRegistrationInfo(@Param("id") Integer id);
 }

+ 3 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/dao/ExamRegistrationPaymentDao.java

@@ -40,6 +40,7 @@ public interface ExamRegistrationPaymentDao extends BaseDAO<Long, ExamRegistrati
 
     /**
      * 获取报名订单信息
+     *
      * @param orderNo
      * @return
      */
@@ -48,6 +49,7 @@ public interface ExamRegistrationPaymentDao extends BaseDAO<Long, ExamRegistrati
 
     /**
      * 获取过期未支付的订单列表
+     *
      * @param orderNoList
      * @param transStatus
      * @param beforeTime
@@ -55,4 +57,5 @@ public interface ExamRegistrationPaymentDao extends BaseDAO<Long, ExamRegistrati
      */
     List<ExamRegistrationPayment> findOrdersOverTime(@Param("orderNoList") List<String> orderNoList, @Param("transStatus") TransStatusEnum transStatus, @Param("beforeTime") Date beforeTime);
 
+    List<ExamRegistrationPayment> getOrderPageList();
 }

+ 9 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/dao/ExamRoomDao.java

@@ -49,4 +49,13 @@ public interface ExamRoomDao extends BaseDAO<Long, ExamRoom> {
     int updateSL(ExamRoom examRoom);
 
     ExamRoom lockRoom(@Param("examRoomId") Long examRoomId);
+
+    /**
+     * @describe 根据日期获取教室
+     * @author Joburgess
+     * @date 2020.07.07
+     * @param days:
+     * @return java.util.List<com.keao.edu.user.api.entity.ExamRoom>
+     */
+    List<ExamRoom> getWithDays(@Param("days") List<String> days);
 }

+ 9 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/entity/ExamRegistrationPayment.java

@@ -52,6 +52,8 @@ public class ExamRegistrationPayment {
 	private java.util.Date updateTime;
 
 	private String tenantId;
+
+	private ExamRegistration examRegistration;
 	
 	public void setId(Long id){
 		this.id = id;
@@ -186,4 +188,11 @@ public class ExamRegistrationPayment {
 		return ToStringBuilder.reflectionToString(this);
 	}
 
+	public ExamRegistration getExamRegistration() {
+		return examRegistration;
+	}
+
+	public void setExamRegistration(ExamRegistration examRegistration) {
+		this.examRegistration = examRegistration;
+	}
 }

+ 13 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/entity/ExaminationBasic.java

@@ -5,6 +5,8 @@ import com.keao.edu.user.enums.ExamStatusEnum;
 import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
+import java.util.List;
+
 /**
  * 对应数据库表(examination_basic):
  */
@@ -49,6 +51,9 @@ public class ExaminationBasic {
 	@ApiModelProperty(value = "备注")
 	private String memo;
 
+	@ApiModelProperty(value = "考试地址")
+	private List<ExamLocation> examLocations;
+
 	private java.util.Date createTime;
 
 	private java.util.Date updateTime;
@@ -190,6 +195,14 @@ public class ExaminationBasic {
 	public String getTenantId(){
 		return this.tenantId;
 	}
+
+	public List<ExamLocation> getExamLocations() {
+		return examLocations;
+	}
+
+	public void setExamLocations(List<ExamLocation> examLocations) {
+		this.examLocations = examLocations;
+	}
 			
 	@Override
 	public String toString() {

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

@@ -46,7 +46,7 @@ public interface ExamRegistrationPaymentService extends BaseService<Long, ExamRe
     ExamRegistrationPayment updateOrder(Map<String,String> rpMap);
 
 
-    PageInfo<ExamRegistration> pageList(ExamRegistrationQueryInfo queryInfo);
+    PageInfo<ExamRegistrationPayment> pageList(ExamRegistrationQueryInfo queryInfo);
 
 
     /**

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

@@ -94,8 +94,11 @@ public class ExamRegistrationPaymentServiceImpl extends BaseServiceImpl<Long, Ex
     }
 
     @Override
-    public PageInfo<ExamRegistration> pageList(ExamRegistrationQueryInfo queryInfo) {
-        return null;
+    public PageInfo<ExamRegistrationPayment> pageList(ExamRegistrationQueryInfo queryInfo) {
+        PageInfo<ExamRegistrationPayment> examRegistrationPageInfo = new PageInfo<>();
+        List<ExamRegistrationPayment> orderPageList = examRegistrationPaymentDao.getOrderPageList();
+        examRegistrationPageInfo.setRows(orderPageList);
+        return examRegistrationPageInfo;
     }
 
     @Override

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

@@ -52,6 +52,8 @@ public class ExamRegistrationServiceImpl extends BaseServiceImpl<Long, ExamRegis
     private SysConfigDao sysConfigDao;
     @Autowired
     private ExamRegistrationPaymentService examRegistrationPaymentService;
+    @Autowired
+    private OrganizationDao organizationDao;
 
     @Override
     public BaseDAO<Long, ExamRegistration> getDAO() {
@@ -71,6 +73,14 @@ public class ExamRegistrationServiceImpl extends BaseServiceImpl<Long, ExamRegis
         if (examSubjectSong == null) {
             throw new BizException("请选择专业级别");
         }
+
+        if(examRegistration.getOrganId() == null){
+            throw new BizException("机构id不能为空");
+        }
+        Organization organization = organizationDao.get(examRegistration.getOrganId());
+        if(organization == null){
+            throw new BizException("机构不存在");
+        }
         Date nowDate = new Date();
         String orderNo = idGeneratorService.generatorId("payment") + "";
 
@@ -85,9 +95,10 @@ public class ExamRegistrationServiceImpl extends BaseServiceImpl<Long, ExamRegis
         if (examMusicTheory != null) {
             theoryLevelFee = examMusicTheory.getFee();
             examRegistration.setExamMusicTheoryLevel(examMusicTheory.getLevel());
-            amount.add(theoryLevelFee);
+            amount = amount.add(theoryLevelFee);
         }
 
+        examRegistration.setTenantId(organization.getTenantId());
         examRegistration.setStatus(StudentRegistrationStatusEnum.PAY_WAIT);
         examRegistration.setLevelFee(examSubjectSong.getRegistrationFee());
         examRegistration.setTheoryLevelFee(theoryLevelFee);
@@ -95,7 +106,7 @@ public class ExamRegistrationServiceImpl extends BaseServiceImpl<Long, ExamRegis
         examRegistration.setUpdateTime(nowDate);
         examRegistrationDao.insert(examRegistration);
 
-        ExamRegistrationPayment examIngOrder = examRegistrationPaymentService.getExamIngOrder(examinationBasic.getId(), examRegistration.getSubjectId());
+        ExamRegistrationPayment examIngOrder = examRegistrationPaymentService.getExamIngOrder(examinationBasic.getId(), examRegistration.getStudentId());
         if (examIngOrder != null) {
             examIngOrder.setTransStatus(TransStatusEnum.CLOSE);
             examIngOrder.setMemo("用户主动放弃支付");

+ 72 - 9
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamRoomServiceImpl.java

@@ -2,8 +2,8 @@ package com.keao.edu.user.service.impl;
 
 
 import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.keao.edu.auth.api.entity.SysUser;
 import com.keao.edu.common.dal.BaseDAO;
 import com.keao.edu.common.enums.YesOrNoEnum;
 import com.keao.edu.common.exception.BizException;
@@ -11,10 +11,7 @@ import com.keao.edu.common.page.PageInfo;
 import com.keao.edu.common.service.impl.BaseServiceImpl;
 import com.keao.edu.common.tenant.TenantContextHolder;
 import com.keao.edu.user.api.entity.ExamRoom;
-import com.keao.edu.user.dao.ExamRegistrationDao;
-import com.keao.edu.user.dao.ExamRoomDao;
-import com.keao.edu.user.dao.ExamRoomStudentRelationDao;
-import com.keao.edu.user.dao.ExaminationBasicDao;
+import com.keao.edu.user.dao.*;
 import com.keao.edu.user.dto.ExamRoomDto;
 import com.keao.edu.user.dto.ExamRoomStatisticsDto;
 import com.keao.edu.user.api.enums.ExamModeEnum;
@@ -23,14 +20,13 @@ import com.keao.edu.user.page.ExamRoomQueryInfo;
 import com.keao.edu.user.service.ExamRoomService;
 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.lang3.StringUtils;
-import org.apache.commons.lang3.time.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
-import java.lang.reflect.InvocationTargetException;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -47,6 +43,8 @@ public class ExamRoomServiceImpl extends BaseServiceImpl<Long, ExamRoom> impleme
 	private ExamRegistrationDao examRegistrationDao;
 	@Autowired
 	private ExaminationBasicDao examinationBasicDao;
+	@Autowired
+	private SysUserDao sysUserDao;
 
 	@Override
 	public BaseDAO<Long, ExamRoom> getDAO() {
@@ -120,8 +118,12 @@ public class ExamRoomServiceImpl extends BaseServiceImpl<Long, ExamRoom> impleme
 			if(Objects.isNull(er.getExamStartTime())||Objects.isNull(er.getExamEndTime())){
 				throw new BizException("请指定考试时间");
 			}
+			if(er.getExamStartTime().compareTo(er.getExamEndTime())>=0){
+				throw new BizException("考试时间异常");
+			}
 			examRooms.add(er);
 		}
+		checkRoomTeachers(examRooms);
 		examRoomDao.batchInsert(examRooms);
 	}
 
@@ -184,10 +186,71 @@ public class ExamRoomServiceImpl extends BaseServiceImpl<Long, ExamRoom> impleme
 
 	@Override
 	public void checkRoomTeachers(List<ExamRoom> examRooms) {
-		List<String> days=new ArrayList<>();
+		if(CollectionUtils.isEmpty(examRooms)){
+			throw new BizException("考场信息异常");
+		}
+		Set<String> days=new HashSet<>();
+		Map<Integer, List<ExamRoom>> teacherRoomMap = new HashMap<>();
 		for (ExamRoom examRoom : examRooms) {
 			if(Objects.nonNull(examRoom.getExamStartTime())){
-//				days.add(DateUtils)
+				days.add(DateUtil.dateToString(examRoom.getExamStartTime(), "yyyy-MM-dd"));
+			}
+			if(Objects.nonNull(examRoom.getExamEndTime())){
+				days.add(DateUtil.dateToString(examRoom.getExamEndTime(), "yyyy-MM-dd"));
+			}
+			if(Objects.nonNull(examRoom.getMainTeacherUserId())&&!teacherRoomMap.containsKey(examRoom.getMainTeacherUserId())){
+				List<ExamRoom> teacherExamRooms=new ArrayList<>();
+				teacherExamRooms.add(examRoom);
+				teacherRoomMap.put(examRoom.getMainTeacherUserId(), teacherExamRooms);
+			}else if(teacherRoomMap.containsKey(examRoom.getMainTeacherUserId())){
+				teacherRoomMap.get(examRoom.getMainTeacherUserId()).add(examRoom);
+			}
+			if(StringUtils.isBlank(examRoom.getAssistantTeacherUserIdList())){
+				continue;
+			}
+			String[] teacherStrIds = examRoom.getAssistantTeacherUserIdList().split(",");
+			for (String teacherStrId : teacherStrIds) {
+				if(!teacherRoomMap.containsKey(Integer.valueOf(teacherStrId))){
+					List<ExamRoom> teacherExamRooms=new ArrayList<>();
+					teacherExamRooms.add(examRoom);
+					teacherRoomMap.put(Integer.valueOf(teacherStrId), teacherExamRooms);
+				}else if(teacherRoomMap.containsKey(Integer.valueOf(teacherStrId))){
+					teacherRoomMap.get(Integer.valueOf(teacherStrId)).add(examRoom);
+				}
+			}
+		}
+		if(CollectionUtils.isEmpty(days)){
+			throw new BizException("考场信息异常");
+		}
+		List<ExamRoom> withDays = examRoomDao.getWithDays(new ArrayList<>(days));
+		for (ExamRoom examRoom : withDays) {
+			if(teacherRoomMap.containsKey(examRoom.getMainTeacherUserId())){
+				teacherRoomMap.get(examRoom.getMainTeacherUserId()).add(examRoom);
+			}
+			if(StringUtils.isBlank(examRoom.getAssistantTeacherUserIdList())){
+				continue;
+			}
+			String[] teacherStrIds = examRoom.getAssistantTeacherUserIdList().split(",");
+			for (String teacherStrId : teacherStrIds) {
+				if(teacherRoomMap.containsKey(Integer.valueOf(teacherStrId))){
+					teacherRoomMap.get(Integer.valueOf(teacherStrId)).add(examRoom);
+				}
+			}
+		}
+
+		for (Map.Entry<Integer, List<ExamRoom>> teacherRoomEntry : teacherRoomMap.entrySet()) {
+			List<ExamRoom> teacherRooms = teacherRoomEntry.getValue();
+			teacherRooms.sort(Comparator.comparing(ExamRoom::getExamStartTime));
+			for (int i = 0; i < teacherRooms.size(); i++) {
+				if(i==0){
+					continue;
+				}
+				ExamRoom preExamRoom=teacherRooms.get(i-1);
+				ExamRoom currentExamRoom = teacherRooms.get(i);
+				if(preExamRoom.getExamEndTime().compareTo(currentExamRoom.getExamStartTime())>0){
+					SysUser sysUser = sysUserDao.get(teacherRoomEntry.getKey());
+					throw new BizException("{}教师时间存在冲突", sysUser.getRealName());
+				}
 			}
 		}
 	}

+ 162 - 158
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExaminationBasicServiceImpl.java

@@ -5,16 +5,10 @@ import com.keao.edu.common.exception.BizException;
 import com.keao.edu.common.page.PageInfo;
 import com.keao.edu.common.service.impl.BaseServiceImpl;
 import com.keao.edu.common.tenant.TenantContextHolder;
-import com.keao.edu.user.dao.ExamMusicTheoryDao;
-import com.keao.edu.user.dao.ExamOrganizationRelationDao;
-import com.keao.edu.user.dao.ExaminationBasicDao;
-import com.keao.edu.user.dao.MusicTheoryDao;
+import com.keao.edu.user.dao.*;
 import com.keao.edu.user.dto.ExaminationBasicDto;
-import com.keao.edu.user.entity.ExamMusicTheory;
-import com.keao.edu.user.entity.ExamOrganizationRelation;
-import com.keao.edu.user.entity.ExaminationBasic;
+import com.keao.edu.user.entity.*;
 import com.keao.edu.user.api.enums.ExamModeEnum;
-import com.keao.edu.user.entity.MusicTheory;
 import com.keao.edu.user.enums.ExamStatusEnum;
 import com.keao.edu.user.page.ExaminationQueryInfo;
 import com.keao.edu.user.service.ExaminationBasicService;
@@ -30,157 +24,167 @@ import java.util.*;
 import java.util.stream.Collectors;
 
 @Service
-public class ExaminationBasicServiceImpl extends BaseServiceImpl<Long, ExaminationBasic> implements ExaminationBasicService{
-
-	@Autowired
-	private ExaminationBasicDao examinationBasicDao;
-	@Autowired
-	private ExamOrganizationRelationDao examOrganizationRelationDao;
-	@Autowired
-	private MusicTheoryDao musicTheoryDao;
-	@Autowired
-	private ExamMusicTheoryDao examMusicTheoryDao;
-
-	@Override
-	public BaseDAO<Long, ExaminationBasic> getDAO() {
-		return examinationBasicDao;
-	}
-
-	@Override
-	public ExaminationBasic addExaminationBasic(ExaminationBasic examinationBasic) {
-		if(StringUtils.isBlank(examinationBasic.getName())){
-			throw new BizException("请填写项目名称");
-		}
-		if(Objects.isNull(examinationBasic.getExamMode())){
-			throw new BizException("请选择考试类型");
-		}
-		if(ExamModeEnum.OFFLINE.equals(examinationBasic.getExamMode())&&StringUtils.isBlank(examinationBasic.getExamLocationIdList())){
-			throw new BizException("请指定考试地点");
-		}
-		if(Objects.isNull(examinationBasic.getEnrollStartTime())||Objects.isNull(examinationBasic.getEnrollEndTime())){
-			throw new BizException("请指定考试开始与结束时间");
-		}
-
-		examinationBasic.setTenantId(TenantContextHolder.getTenantId().toString());
-
-		List<MusicTheory> musicTheories = musicTheoryDao.getWithTenant(Integer.valueOf(examinationBasic.getTenantId()));
-		if(CollectionUtils.isEmpty(musicTheories)){
-			throw new BizException("请设置乐理");
-		}
-
-		examinationBasic.setStatus(ExamStatusEnum.SETTING);
-		examinationBasicDao.insert(examinationBasic);
-
-		List<ExamMusicTheory> examMusicTheories=new ArrayList<>();
-		for (MusicTheory musicTheory : musicTheories) {
-			ExamMusicTheory emt=new ExamMusicTheory();
-			emt.setExaminationBasicId(examinationBasic.getId());
-			emt.setTenantId(examinationBasic.getTenantId());
-			emt.setLevel(musicTheory.getLevel());
-			emt.setFee(musicTheory.getFee());
-			examMusicTheories.add(emt);
-		}
-
-		examMusicTheoryDao.batchInsert(examMusicTheories);
-
-		return examinationBasic;
-	}
-
-	@Override
-	public void updateExamStatus() {
-		List<ExaminationBasic> needUpdateStatusExams = examinationBasicDao.getNeedUpdateStatusExams();
-		if(CollectionUtils.isEmpty(needUpdateStatusExams)){
-			return;
-		}
-		Date now=new Date();
-		for (ExaminationBasic needUpdateStatusExam : needUpdateStatusExams) {
-			if(now.compareTo(needUpdateStatusExam.getEnrollStartTime())>=0){
-				needUpdateStatusExam.setStatus(ExamStatusEnum.APPLYING);
-			}
-			if(now.compareTo(needUpdateStatusExam.getEnrollEndTime())>=0){
-				needUpdateStatusExam.setStatus(ExamStatusEnum.APPLIED);
-			}
-			if(now.compareTo(needUpdateStatusExam.getExpectExamStartTime())>=0){
-				needUpdateStatusExam.setStatus(ExamStatusEnum.EXAM_ING);
-			}
-		}
-		examinationBasicDao.batchUpdate(needUpdateStatusExams);
-	}
-
-	@Override
-	public PageInfo<ExaminationBasicDto> findExaminationBasics(ExaminationQueryInfo queryInfo) {
-		PageInfo<ExaminationBasicDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
-		Map<String, Object> params = new HashMap<String, Object>();
-		MapUtil.populateMap(params, queryInfo);
-
-		List<ExaminationBasicDto> dataList = new ArrayList<>();
-		int count = examinationBasicDao.countExaminationBasics(params);
-		if (count > 0) {
-			pageInfo.setTotal(count);
-			params.put("offset", pageInfo.getOffset());
-			dataList = examinationBasicDao.findExaminationBasics(params);
-			List<Integer> examIds = dataList.stream().map(ExaminationBasicDto::getId).collect(Collectors.toList());
-			List<ExamOrganizationRelation> examOrgans = new ArrayList<>();
-			if(!CollectionUtils.isEmpty(examIds)){
-				examOrganizationRelationDao.getWithExams(examIds);
-			}
-			Map<Integer, List<ExamOrganizationRelation>> examOrgansMap = new HashMap<>();
-			if(!CollectionUtils.isEmpty(examOrgans)){
-				examOrgansMap = examOrgans.stream().collect(Collectors.groupingBy(ExamOrganizationRelation::getExaminationBasicId));
-			}
-			for (ExaminationBasicDto examinationBasicDto : dataList) {
-				List<ExamOrganizationRelation> examOrganizationRelations = examOrgansMap.get(examinationBasicDto.getId());
-				if(CollectionUtils.isEmpty(examOrganizationRelations)){
-					continue;
-				}
-				long totalRegistrationStudentNum = examOrganizationRelations.stream().map(ExamOrganizationRelation::getTotalRegistrationStudentNum).count();
-				long totalPaymentAmount = examOrganizationRelations.stream().map(ExamOrganizationRelation::getTotalPaymentAmount).count();
-				examinationBasicDto.setTotalRegistrationStudentNum((int) totalRegistrationStudentNum);
-				examinationBasicDto.setTotalPaymentAmount(new BigDecimal(totalPaymentAmount));
-			}
-		}
-		pageInfo.setRows(dataList);
-		return pageInfo;
-	}
-
-	@Override
-	public ExaminationBasicDto getExaminationBasic(Integer examId) {
-		if(Objects.isNull(examId)){
-			throw new BizException("请指定考级项目");
-		}
-		ExaminationBasicDto examinationBasic = examinationBasicDao.getExaminationBasic(examId);
-		if(Objects.isNull(examinationBasic)){
-			throw new BizException("指定的考级项目不存在");
-		}
-		List<ExamOrganizationRelation> examOrganizationRelations = examOrganizationRelationDao.getWithExam(examId);
-		if(!CollectionUtils.isEmpty(examOrganizationRelations)){
-			long totalRegistrationStudentNum = examOrganizationRelations.stream().map(ExamOrganizationRelation::getTotalRegistrationStudentNum).count();
-			long totalPaymentAmount = examOrganizationRelations.stream().map(ExamOrganizationRelation::getTotalPaymentAmount).count();
-			examinationBasic.setTotalRegistrationStudentNum((int) totalRegistrationStudentNum);
-			examinationBasic.setTotalPaymentAmount(new BigDecimal(totalPaymentAmount));
-		}
-		return examinationBasic;
-	}
-
-	@Override
-	public void closeExam(Integer examId, String reason) {
-		if(Objects.isNull(examId)){
-			throw new BizException("请指定考级项目");
-		}
-		ExaminationBasic examinationBasic = examinationBasicDao.get(examId.longValue());
-		if(Objects.isNull(examinationBasic)){
-			throw new BizException("考级项目不存在");
-		}
-		if(StringUtils.isBlank(reason)){
-			reason="后台手动关闭";
-		}
-		examinationBasic.setMemo(reason);
-		examinationBasic.setStatus(ExamStatusEnum.CLOSE);
-		examinationBasicDao.update(examinationBasic);
-	}
+public class ExaminationBasicServiceImpl extends BaseServiceImpl<Long, ExaminationBasic> implements ExaminationBasicService {
+
+    @Autowired
+    private ExaminationBasicDao examinationBasicDao;
+    @Autowired
+    private ExamOrganizationRelationDao examOrganizationRelationDao;
+    @Autowired
+    private MusicTheoryDao musicTheoryDao;
+    @Autowired
+    private ExamMusicTheoryDao examMusicTheoryDao;
+    @Autowired
+    private ExamLocationDao examLocationDao;
+
+    @Override
+    public BaseDAO<Long, ExaminationBasic> getDAO() {
+        return examinationBasicDao;
+    }
+
+    @Override
+    public ExaminationBasic addExaminationBasic(ExaminationBasic examinationBasic) {
+        if (StringUtils.isBlank(examinationBasic.getName())) {
+            throw new BizException("请填写项目名称");
+        }
+        if (Objects.isNull(examinationBasic.getExamMode())) {
+            throw new BizException("请选择考试类型");
+        }
+        if (ExamModeEnum.OFFLINE.equals(examinationBasic.getExamMode()) && StringUtils.isBlank(examinationBasic.getExamLocationIdList())) {
+            throw new BizException("请指定考试地点");
+        }
+        if (Objects.isNull(examinationBasic.getEnrollStartTime()) || Objects.isNull(examinationBasic.getEnrollEndTime())) {
+            throw new BizException("请指定考试开始与结束时间");
+        }
+
+        examinationBasic.setTenantId(TenantContextHolder.getTenantId().toString());
+
+        List<MusicTheory> musicTheories = musicTheoryDao.getWithTenant(Integer.valueOf(examinationBasic.getTenantId()));
+        if (CollectionUtils.isEmpty(musicTheories)) {
+            throw new BizException("请设置乐理");
+        }
+
+        examinationBasic.setStatus(ExamStatusEnum.SETTING);
+        examinationBasicDao.insert(examinationBasic);
+
+        List<ExamMusicTheory> examMusicTheories = new ArrayList<>();
+        for (MusicTheory musicTheory : musicTheories) {
+            ExamMusicTheory emt = new ExamMusicTheory();
+            emt.setExaminationBasicId(examinationBasic.getId());
+            emt.setTenantId(examinationBasic.getTenantId());
+            emt.setLevel(musicTheory.getLevel());
+            emt.setFee(musicTheory.getFee());
+            examMusicTheories.add(emt);
+        }
+
+        examMusicTheoryDao.batchInsert(examMusicTheories);
+
+        return examinationBasic;
+    }
+
+    @Override
+    public void updateExamStatus() {
+        List<ExaminationBasic> needUpdateStatusExams = examinationBasicDao.getNeedUpdateStatusExams();
+        if (CollectionUtils.isEmpty(needUpdateStatusExams)) {
+            return;
+        }
+        Date now = new Date();
+        for (ExaminationBasic needUpdateStatusExam : needUpdateStatusExams) {
+            if (now.compareTo(needUpdateStatusExam.getEnrollStartTime()) >= 0) {
+                needUpdateStatusExam.setStatus(ExamStatusEnum.APPLYING);
+            }
+            if (now.compareTo(needUpdateStatusExam.getEnrollEndTime()) >= 0) {
+                needUpdateStatusExam.setStatus(ExamStatusEnum.APPLIED);
+            }
+            if (now.compareTo(needUpdateStatusExam.getExpectExamStartTime()) >= 0) {
+                needUpdateStatusExam.setStatus(ExamStatusEnum.EXAM_ING);
+            }
+        }
+        examinationBasicDao.batchUpdate(needUpdateStatusExams);
+    }
+
+    @Override
+    public PageInfo<ExaminationBasicDto> findExaminationBasics(ExaminationQueryInfo queryInfo) {
+        PageInfo<ExaminationBasicDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<String, Object>();
+        MapUtil.populateMap(params, queryInfo);
+
+        List<ExaminationBasicDto> dataList = new ArrayList<>();
+        int count = examinationBasicDao.countExaminationBasics(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            dataList = examinationBasicDao.findExaminationBasics(params);
+            List<Integer> examIds = dataList.stream().map(ExaminationBasicDto::getId).collect(Collectors.toList());
+            List<ExamOrganizationRelation> examOrgans = new ArrayList<>();
+            if (!CollectionUtils.isEmpty(examIds)) {
+                examOrganizationRelationDao.getWithExams(examIds);
+            }
+            Map<Integer, List<ExamOrganizationRelation>> examOrgansMap = new HashMap<>();
+            if (!CollectionUtils.isEmpty(examOrgans)) {
+                examOrgansMap = examOrgans.stream().collect(Collectors.groupingBy(ExamOrganizationRelation::getExaminationBasicId));
+            }
+            for (ExaminationBasicDto examinationBasicDto : dataList) {
+                List<ExamOrganizationRelation> examOrganizationRelations = examOrgansMap.get(examinationBasicDto.getId());
+                if (CollectionUtils.isEmpty(examOrganizationRelations)) {
+                    continue;
+                }
+                long totalRegistrationStudentNum = examOrganizationRelations.stream().map(ExamOrganizationRelation::getTotalRegistrationStudentNum).count();
+                long totalPaymentAmount = examOrganizationRelations.stream().map(ExamOrganizationRelation::getTotalPaymentAmount).count();
+                examinationBasicDto.setTotalRegistrationStudentNum((int) totalRegistrationStudentNum);
+                examinationBasicDto.setTotalPaymentAmount(new BigDecimal(totalPaymentAmount));
+            }
+        }
+        pageInfo.setRows(dataList);
+        return pageInfo;
+    }
+
+    @Override
+    public ExaminationBasicDto getExaminationBasic(Integer examId) {
+        if (Objects.isNull(examId)) {
+            throw new BizException("请指定考级项目");
+        }
+        ExaminationBasicDto examinationBasic = examinationBasicDao.getExaminationBasic(examId);
+        if (Objects.isNull(examinationBasic)) {
+            throw new BizException("指定的考级项目不存在");
+        }
+        List<ExamOrganizationRelation> examOrganizationRelations = examOrganizationRelationDao.getWithExam(examId);
+        if (!CollectionUtils.isEmpty(examOrganizationRelations)) {
+            long totalRegistrationStudentNum = examOrganizationRelations.stream().map(ExamOrganizationRelation::getTotalRegistrationStudentNum).count();
+            long totalPaymentAmount = examOrganizationRelations.stream().map(ExamOrganizationRelation::getTotalPaymentAmount).count();
+            examinationBasic.setTotalRegistrationStudentNum((int) totalRegistrationStudentNum);
+            examinationBasic.setTotalPaymentAmount(new BigDecimal(totalPaymentAmount));
+        }
+        return examinationBasic;
+    }
+
+    @Override
+    public void closeExam(Integer examId, String reason) {
+        if (Objects.isNull(examId)) {
+            throw new BizException("请指定考级项目");
+        }
+        ExaminationBasic examinationBasic = examinationBasicDao.get(examId.longValue());
+        if (Objects.isNull(examinationBasic)) {
+            throw new BizException("考级项目不存在");
+        }
+        if (StringUtils.isBlank(reason)) {
+            reason = "后台手动关闭";
+        }
+        examinationBasic.setMemo(reason);
+        examinationBasic.setStatus(ExamStatusEnum.CLOSE);
+        examinationBasicDao.update(examinationBasic);
+    }
 
     @Override
     public ExaminationBasic getInfo(Integer examId) {
-		return examinationBasicDao.get(examId.longValue());
-	}
+        ExaminationBasic examinationBasic = examinationBasicDao.get(examId.longValue());
+        if (examinationBasic == null) {
+            throw new BizException("考试项目不存在,请核对");
+        }
+        if (!StringUtils.isBlank(examinationBasic.getExamLocationIdList())) {
+            List<ExamLocation> examLocations = examLocationDao.getExamLocationByIds(examinationBasic.getExamLocationIdList());
+            examinationBasic.setExamLocations(examLocations);
+        }
+        return examinationBasic;
+    }
 }

+ 0 - 3
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/TenantInfoServiceImpl.java

@@ -21,12 +21,10 @@ import com.keao.edu.user.enums.YesOrNoEnum;
 import com.keao.edu.user.service.TenantInfoService;
 import com.keao.edu.util.collection.MapUtil;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.poi.ss.formula.functions.T;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.CollectionUtils;
 
 import java.util.*;
 import java.util.stream.Collectors;
@@ -70,7 +68,6 @@ public class TenantInfoServiceImpl extends BaseServiceImpl<Integer, TenantInfo>
 		sysUser.setRealName(tenantInfo.getContactName());
 		sysUser.setAvatar(tenantInfo.getLogoUrl());
 		sysUser.setPhone(tenantInfo.getContactPhone());
-		sysUser.setRoles(tenantInfo.getSysUser().getRoles());
 		sysUserDao.insert(sysUser);
 		if(StringUtils.isNotBlank(tenantInfo.getRoleIds())){
 			Set<Integer> roleIds = Arrays.stream(tenantInfo.getRoleIds().split(",")).map(e -> Integer.valueOf(e)).collect(Collectors.toSet());

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

@@ -32,7 +32,7 @@
 	<select id="get" resultMap="Employee" >
 		SELECT e.*,su.*,sur.role_id_ FROM employee e
 		LEFT JOIN sys_user su ON e.user_id_ = su.id_
-		LEFT JOIN sys_user_role sur ON e.user_id_ = sur.id_
+		LEFT JOIN sys_user_role sur ON e.user_id_ = sur.user_id_
 		WHERE e.user_id_ = #{userId}
 	</select>
 	

+ 5 - 0
edu-user/edu-user-server/src/main/resources/config/mybatis/ExamLocationMapper.xml

@@ -99,4 +99,9 @@
 		SELECT COUNT(*) FROM exam_location
 		<include refid="queryCondition"/>
 	</select>
+
+	<!-- 根据ids获取考点 -->
+	<select id="getExamLocationByIds" resultMap="ExamLocation">
+		SELECT * FROM exam_location WHERE FIND_IN_SET(id_,#{ids})
+	</select>
 </mapper>

+ 12 - 3
edu-user/edu-user-server/src/main/resources/config/mybatis/ExamRegistrationMapper.xml

@@ -7,7 +7,7 @@
 <mapper namespace="com.keao.edu.user.dao.ExamRegistrationDao">
 
 	<resultMap type="com.keao.edu.user.entity.ExamRegistration" id="ExamRegistration">
-		<result column="id_" property="id" />
+		<id column="id_" property="id" />
 		<result column="examination_basic_id_" property="examinationBasicId" />
 		<result column="student_id_" property="studentId" />
 		<result column="organ_id_" property="organId" />
@@ -18,16 +18,17 @@
 		<result column="last_exam_level_" property="lastExamLevel" />
 		<result column="last_exam_certificate_url_" property="lastExamCertificateUrl" />
 		<result column="exam_music_theory_level_" property="examMusicTheoryLevel" />
-		<result column="last_music_theory_certificate_url_" property="lastMusicTheoryCertificateUrl"/>
 		<result column="theory_level_fee_" property="theoryLevelFee" />
+		<result column="last_music_theory_level_" property="lastMusicTheoryLevel" />
+		<result column="last_music_theory_certificate_url_" property="lastMusicTheoryCertificateUrl" />
 		<result column="adviser_name_" property="adviserName" />
 		<result column="adviser_phone_" property="adviserPhone" />
 		<result column="card_no_" property="cardNo" />
 		<result column="status_" property="status" />
-		<result column="memo_" property="memo" />
 		<result column="create_time_" property="createTime" />
 		<result column="update_time_" property="updateTime" />
 		<result column="tenant_id_" property="tenantId" />
+		<result column="memo_" property="memo" />
 		<association property="sysUser" columnPrefix="sys_user_" resultMap="com.keao.edu.user.dao.StudentDao.Student"/>
 		<association property="subject" columnPrefix="subject_" resultMap="com.keao.edu.user.dao.SubjectDao.Subject"/>
 	</resultMap>
@@ -312,4 +313,12 @@
 		LEFT JOIN subject s on er.subject_id_ = s.id_
 		WHERE er.id_ = #{examRegistrationId}
 	</select>
+
+	<select id="getExamRegistrationInfo" resultMap="ExamRegistration">
+		SELECT er.*, su.id_ sys_user_id_, su.real_name_ sys_user_real_name_,su.phone_ sys_user_phone_ , s.id_ subject_id_, s.name_ subject_name_
+		FROM exam_registration er
+		LEFT JOIN sys_user su ON er.student_id_ = su.id_
+		LEFT JOIN subject s on er.subject_id_ = s.id_
+		WHERE er.id_ = #{id}
+	</select>
 </mapper>

+ 13 - 0
edu-user/edu-user-server/src/main/resources/config/mybatis/ExamRegistrationPaymentMapper.xml

@@ -79,6 +79,9 @@
             <if test="transNo != null">
                 trans_no_ = #{transNo},
             </if>
+            <if test="payType != null">
+                pay_type_ = #{payType},
+            </if>
             <if test="payChannel != null">
                 pay_channel_ = #{payChannel},
             </if>
@@ -150,4 +153,14 @@
         AND trans_status_=#{transStatus,typeHandler=com.keao.edu.common.dal.CustomEnumTypeHandler}
         <![CDATA[ AND create_time_ <= ]]> #{beforeTime}
     </select>
+
+    <resultMap id="pageList" type="com.keao.edu.user.entity.ExamRegistrationPayment" extends="ExamRegistrationPayment">
+        <association property="examRegistration" select="com.keao.edu.user.dao.ExamRegistrationDao.getExamRegistrationInfo" column="{id=exam_registration_id_}"/>
+    </resultMap>
+    <!-- 获取订单列表 -->
+    <select id="getOrderPageList" resultMap="pageList">
+        SELECT erp.*  FROM exam_registration_payment erp
+        LEFT JOIN sys_user su on erp.student_id_ = su.id_
+        LEFT JOIN subject s on erp.id_ = s.id_
+    </select>
 </mapper>

+ 15 - 0
edu-user/edu-user-server/src/main/resources/config/mybatis/ExamRoomMapper.xml

@@ -240,4 +240,19 @@
 	<select id="lockRoom" resultType="com.keao.edu.user.api.entity.ExamRoom">
 		SELECT * FROM exam_room WHERE id_=#{examRoomId} FOR UPDATE
 	</select>
+    <select id="getWithDays" resultType="com.keao.edu.user.api.entity.ExamRoom">
+		SELECT
+			* 
+		FROM
+			exam_room 
+		WHERE
+			DATE_FORMAT( exam_start_time_, '%Y-%m-%d' ) IN 
+			<foreach collection="days" item="day" separator="," open="(" close=")" >
+				#{day}
+			</foreach>
+			OR DATE_FORMAT( exam_end_time_, '%Y-%m-%d' ) IN
+			<foreach collection="days" item="day" separator="," open="(" close=")" >
+				#{day}
+			</foreach>
+	</select>
 </mapper>

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

@@ -6,7 +6,7 @@
 -->
 <mapper namespace="com.keao.edu.user.dao.StudentDao">
 	
-	<resultMap type="com.keao.edu.user.api.entity.Student" id="Student">
+	<resultMap type="com.keao.edu.user.api.entity.Student" id="Student" extends="com.keao.edu.user.dao.SysUserDao.SysUser">
 		<result column="user_id_" property="userId" />
 		<result column="certificate_photo_" property="certificatePhoto" />
 		<result column="create_time_" property="createTime" />