瀏覽代碼

环境拆分

zouxuan 3 年之前
父節點
當前提交
980ebf470e
共有 35 個文件被更改,包括 156 次插入77 次删除
  1. 1 1
      cms/src/main/resources/bootstrap-dev.properties
  2. 2 2
      cms/src/main/resources/bootstrap-test.properties
  3. 1 1
      mec-auth/mec-auth-server/src/main/resources/bootstrap-dev.properties
  4. 1 1
      mec-auth/mec-auth-server/src/main/resources/bootstrap-test.properties
  5. 10 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/IndexBaseMonthDataDao.java
  6. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/event/listener/TeacherAttendanceListener.java
  7. 16 6
      mec-biz/src/main/java/com/ym/mec/biz/service/SysConfigService.java
  8. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  9. 23 13
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java
  10. 30 9
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/IndexBaseMonthDataServiceImpl.java
  11. 3 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupQuestionnaireServiceImpl.java
  12. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  13. 2 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupSubjectPlanServiceImpl.java
  14. 3 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentGoodsSellServiceImpl.java
  15. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  16. 8 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java
  17. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
  18. 2 2
      mec-biz/src/main/resources/config/mybatis/IndexBaseMonthDataMapper.xml
  19. 6 1
      mec-common/audit-log/src/main/java/com/yonge/log/interceptor/AuditLogInterceptor.java
  20. 1 1
      mec-eureka/src/main/resources/bootstrap-dev.properties
  21. 2 2
      mec-eureka/src/main/resources/bootstrap-test.properties
  22. 1 1
      mec-gateway/mec-gateway-web/src/main/resources/bootstrap-dev.properties
  23. 1 0
      mec-im/src/main/java/com/ym/controller/RoomController.java
  24. 22 7
      mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java
  25. 1 1
      mec-im/src/main/resources/bootstrap-dev.properties
  26. 1 1
      mec-im/src/main/resources/bootstrap-test.properties
  27. 1 1
      mec-student/src/main/resources/bootstrap-dev.properties
  28. 1 1
      mec-student/src/main/resources/bootstrap-test.properties
  29. 1 1
      mec-task/src/main/resources/bootstrap-dev.properties
  30. 1 1
      mec-task/src/main/resources/bootstrap-test.properties
  31. 1 1
      mec-teacher/src/main/resources/bootstrap-dev.properties
  32. 1 1
      mec-teacher/src/main/resources/bootstrap-test.properties
  33. 1 1
      mec-web/src/main/resources/bootstrap-dev.properties
  34. 1 1
      mec-web/src/main/resources/bootstrap-test.properties
  35. 1 1
      mec-websocket/src/main/resources/bootstrap-test.properties

+ 1 - 1
cms/src/main/resources/bootstrap-dev.properties

@@ -1,7 +1,7 @@
 #\u6307\u5b9a\u5f00\u53d1\u73af\u5883
 #spring.profiles.active=dev
 #\u670d\u52a1\u5668\u5730\u5740
-spring.cloud.nacos.config.server-addr=47.114.176.40:8848
+spring.cloud.nacos.config.server-addr=47.114.1.200:8848
 #\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
 spring.cloud.nacos.config.namespace=a5c10b43-0c4d-4e3b-a0ad-9af651cfe89c
 #\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e

+ 2 - 2
cms/src/main/resources/bootstrap-test.properties

@@ -1,9 +1,9 @@
 #\u6307\u5b9a\u5f00\u53d1\u73af\u5883
 #spring.profiles.active=dev
 #\u670d\u52a1\u5668\u5730\u5740
-spring.cloud.nacos.config.server-addr=47.114.1.200:8848
+spring.cloud.nacos.config.server-addr=47.114.176.40:8848
 #\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
-spring.cloud.nacos.config.namespace=f753d9d9-4bb2-4df6-a483-da9e169617c4
+spring.cloud.nacos.config.namespace=46f06363-b9d6-46f0-9cd7-7b33dcf26bb0
 #\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e
 spring.cloud.nacos.config.group=DEFAULT_GROUP
 #\u6587\u4ef6\u540d -- \u5982\u679c\u6ca1\u6709\u914d\u7f6e\u5219\u9ed8\u8ba4\u4e3a ${spring.appliction.name}

+ 1 - 1
mec-auth/mec-auth-server/src/main/resources/bootstrap-dev.properties

@@ -1,7 +1,7 @@
 #\u6307\u5b9a\u5f00\u53d1\u73af\u5883
 #spring.profiles.active=dev
 #\u670d\u52a1\u5668\u5730\u5740
-spring.cloud.nacos.config.server-addr=47.114.176.40:8848
+spring.cloud.nacos.config.server-addr=47.114.1.200:8848
 #\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
 spring.cloud.nacos.config.namespace=a5c10b43-0c4d-4e3b-a0ad-9af651cfe89c
 #\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e

+ 1 - 1
mec-auth/mec-auth-server/src/main/resources/bootstrap-test.properties

@@ -1,7 +1,7 @@
 #\u6307\u5b9a\u5f00\u53d1\u73af\u5883
 #spring.profiles.active=dev
 #\u670d\u52a1\u5668\u5730\u5740
-spring.cloud.nacos.config.server-addr=47.114.1.200:8848
+spring.cloud.nacos.config.server-addr=47.114.176.40:8848
 #\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
 spring.cloud.nacos.config.namespace=46f06363-b9d6-46f0-9cd7-7b33dcf26bb0
 #\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e

+ 10 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/IndexBaseMonthDataDao.java

@@ -206,7 +206,11 @@ public interface IndexBaseMonthDataDao extends BaseDAO<Long, IndexBaseMonthData>
      * @param organIds
      * @return
      */
-    int getCourseTimeError(@Param("organIds") Set<Integer> organIds, @Param("classGroupIds") List<Long> classGroupIds);
+    int getCourseTimeError(@Param("organIds") Set<Integer> organIds,
+                           @Param("classGroupIds") List<Long> classGroupIds,
+                           @Param("courseStartTimeError") String courseStartTimeError,
+                           @Param("courseEndTimeError") String courseEndTimeError);
+
     List<Map<Integer, Integer>> getOrganCourseTimeError(@Param("organIds") Set<Integer> organIds, @Param("classGroupIds") List<Long> classGroupIds);
 
     /**
@@ -317,7 +321,11 @@ public interface IndexBaseMonthDataDao extends BaseDAO<Long, IndexBaseMonthData>
                                                                  @Param("endDate") String endDate,
                                                                  @Param("organIds") List<Integer> organIds);
 
-    int countStudentErrorLeave(@Param("organIdList") Set<Integer> organIdList, @Param("format") String format, @Param("classGroupIds") List<Long> classGroupIds);
+    int countStudentErrorLeave(@Param("organIdList") Set<Integer> organIdList,
+                               @Param("format") String format,
+                               @Param("classGroupIds") List<Long> classGroupIds,
+                               @Param("studentErrorLeaveNum") Integer studentErrorLeaveNum);
+
     List<Map<Integer, Integer>> countOrganStudentErrorLeave(@Param("organIds") Set<Integer> organIds, @Param("classGroupIds") List<Long> classGroupIds);
 
     int countStudentErrorLeave1(Map<String, Object> params);

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/event/listener/TeacherAttendanceListener.java

@@ -0,0 +1,4 @@
+package com.ym.mec.biz.event.listener;
+
+public class TeacherAttendanceListener {
+}

+ 16 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/SysConfigService.java

@@ -19,7 +19,7 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
     //乐团问卷调查编号
     String MUSIC_GROUP_TOPIC_ID = "music_group_topic_id";
     //自动确认收货时间
-    String AUTO_AFFIRM_RECEIVE_TIME = "music_group_topic_id";
+    String AUTO_AFFIRM_RECEIVE_TIME = "auto_affirm_receive_time";
     //各声部不购买会员入团资格限制学员数
     String MEMBER_GROUP_FEE_STUDENT_NUM = "member_group_fee_student_num";
     //会员团每学期赠送课程分钟数
@@ -123,7 +123,7 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
     String LABOUR_TEACHER_SALARY_TYPE = "labour_teacher_salary_type";
     //线上连堂课间隔时间
     String ONLINE_CONTINUE_COURSE_TIME = "online_continue_course_time";
-    //线连堂课间隔时间
+    //线连堂课间隔时间
     String OFFLINE_CONTINUE_COURSE_MINUTES = "offline_continue_course_minutes";
     //陪练课可选老师的分部
     String PRACTICE_TEACHER_ORGAN_RANGE = "practice_teacher_organ_range";
@@ -148,6 +148,20 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
     //退款周期
     String REFUND_PERIOD = "refund_period";
 
+    //服务异常提醒
+
+    //学员当月请假指定次数及以上提醒异常请假
+    String STUDENT_ERROR_LEAVE_NUM = "student_error_leave_num";
+    //上课时间在指定时间段内提醒时间安排异常
+    String COURSE_START_TIME_ERROR = "course_start_time_error";
+    //上课时间在指定时间段内提醒时间安排异常
+    String COURSE_END_TIME_ERROR = "course_end_time_error";
+
+    //对外课程课后缓冲时间{}分钟
+    String COURSE_BEFORE_BUFFER_TIME = "course_before_buffer_time";
+    //对外课程课后缓冲时间{}分钟
+    String COURSE_AFTER_BUFFER_TIME = "course_after_buffer_time";
+
     public static final String BASE_API_URL = "base_api_url";
 
     /**
@@ -291,10 +305,6 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
      */
     String TEACHER_BASE_URL = "teacher_base_url";
 
-    String COURSE_BEFORE_BUFFER_TIME = "course_before_buffer_time";
-
-    String COURSE_AFTER_BUFFER_TIME = "course_after_buffer_time";
-
     String PRACTICE_PROMOTION_ACTIVITY_START_DATE = "practice_promotion_activity_start_date";
 
     String NEW_MSG_PUSH = "您收到一条训练回复,请点击查看";

+ 2 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -128,7 +128,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     @Autowired
     private SysConfigDao sysConfigDao;
     @Autowired
-    private SysTenantConfigDao sysTenantConfigDao;
+    private SysTenantConfigService sysTenantConfigService;
     @Autowired
     private SubjectDao subjectDao;
     @Autowired
@@ -2798,7 +2798,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         if(musicGroup.getTenantId() == null){
             throw new BizException("乐团机构信息异常,请联系管理员");
         }
-        String configValue = sysTenantConfigDao.getConfigValue(SysConfigService.MEMBER_GROUP_TERM_GIVE_COURSE_TIME, musicGroup.getTenantId());
+        String configValue = sysTenantConfigService.getTenantConfigValue(SysConfigService.MEMBER_GROUP_TERM_GIVE_COURSE_TIME, musicGroup.getTenantId());
         if(StringUtils.isEmpty(configValue)){
             throw new BizException("请配置会员团每学期赠送课程分钟数");
         }

+ 23 - 13
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java

@@ -287,10 +287,16 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 
             List<TeacherAttendance> courseTeacherAttendances = teacherCourseAttendanceMap.get(org.apache.commons.lang3.StringUtils.joinWith(":", courseScheduleTeacherSalary.getCourseScheduleId(), courseScheduleTeacherSalary.getUserId()));
             CourseSchedule courseSchedule = courseScheduleTeacherSalary.getCourseSchedule();
-            TeacherAttendance teacherAttendance = courseTeacherAttendances.get(0);
             //获取签到状态
             TeachModeEnum teachMode = courseScheduleTeacherSalary.getCourseSchedule().getTeachMode();
-            if(teacherAttendance.getSignInStatus() == YesOrNoEnum.NO){
+            TeacherAttendance teacherAttendance = null;
+            if(courseTeacherAttendances != null && courseTeacherAttendances.size() > 0){
+                teacherAttendance = courseTeacherAttendances.get(0);
+            }
+            if(teacherAttendance == null){
+                teacherAttendance = new TeacherAttendance();
+            }
+            if(teacherAttendance.getSignInStatus() == null || teacherAttendance.getSignInStatus() == YesOrNoEnum.NO){
                 SalarySettlementSignEnum signInStatus = getSignInStatus(teacherAttendance.getSignInTime(), courseSchedule.getStartClassTime(), teachMode,tenantId);
                 BigDecimal signInDeductCost = getSignInDeduce(expectSalary, signInStatus, teachMode,tenantId);
                 if(signInDeductCost.compareTo(BigDecimal.ZERO) > 0){
@@ -298,7 +304,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                     deductReasons.add("签到状态异常扣除课酬" + signInDeductCost);
                 }
             }
-            if(teacherAttendance.getSignOutStatus() == YesOrNoEnum.NO){
+            if(teacherAttendance.getSignInStatus() == null || teacherAttendance.getSignOutStatus() == YesOrNoEnum.NO){
                 SalarySettlementSignEnum signOutStatus = getSignInStatus(teacherAttendance.getSignInTime(), courseSchedule.getStartClassTime(), teachMode,tenantId);
                 BigDecimal signOutDeductCost = getSignInDeduce(expectSalary, signOutStatus, teachMode,tenantId);
                 if(signOutDeductCost.compareTo(BigDecimal.ZERO) > 0){
@@ -419,7 +425,10 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                 if(courseTeacherAttendances != null && courseTeacherAttendances.size() > 0){
                     teacherAttendance = courseTeacherAttendances.get(0);
                 }
-                if(teacherAttendance.getSignInStatus() == YesOrNoEnum.NO){
+                if(teacherAttendance == null){
+                    teacherAttendance = new TeacherAttendance();
+                }
+                if(teacherAttendance.getSignInStatus() == null || teacherAttendance.getSignInStatus() == YesOrNoEnum.NO){
                     SalarySettlementSignEnum signInStatus = getSignInStatus(teacherAttendance.getSignInTime(), courseSchedule.getStartClassTime(), teachMode,tenantId);
                     BigDecimal signInDeductCost = getSignInDeduce(expectSalary, signInStatus, teachMode,tenantId);
                     if(signInDeductCost.compareTo(BigDecimal.ZERO) > 0){
@@ -427,7 +436,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                         deductReasons.add("签到状态异常扣除课酬" + signInDeductCost);
                     }
                 }
-                if(teacherAttendance.getSignOutStatus() == YesOrNoEnum.NO){
+                if(teacherAttendance.getSignOutStatus() == null || teacherAttendance.getSignOutStatus() == YesOrNoEnum.NO){
                     SalarySettlementSignEnum signOutStatus = getSignInStatus(teacherAttendance.getSignInTime(), courseSchedule.getStartClassTime(), teachMode,tenantId);
                     BigDecimal signOutDeductCost = getSignInDeduce(expectSalary, signOutStatus, teachMode,tenantId);
                     if(signOutDeductCost.compareTo(BigDecimal.ZERO) > 0){
@@ -737,16 +746,17 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 
             //扣除费用
             BigDecimal deductCost = BigDecimal.ZERO;
-
+            //获取签到状态
+            TeachModeEnum teachMode = courseScheduleTeacherSalary.getCourseSchedule().getTeachMode();
             List<TeacherAttendance> courseTeacherAttendances = teacherCourseAttendanceMap.get(org.apache.commons.lang3.StringUtils.joinWith(":", courseScheduleTeacherSalary.getCourseScheduleId(), courseScheduleTeacherSalary.getUserId()));
             TeacherAttendance teacherAttendance = null;
             if(courseTeacherAttendances != null && courseTeacherAttendances.size() > 0){
                 teacherAttendance = courseTeacherAttendances.get(0);
             }
-
-            //获取签到状态
-            TeachModeEnum teachMode = courseScheduleTeacherSalary.getCourseSchedule().getTeachMode();
-            if(teacherAttendance == null || teacherAttendance.getSignInStatus() == null || teacherAttendance.getSignInStatus() == YesOrNoEnum.NO){
+            if(teacherAttendance == null){
+                teacherAttendance = new TeacherAttendance();
+            }
+            if(teacherAttendance.getSignInStatus() == null || teacherAttendance.getSignInStatus() == YesOrNoEnum.NO){
                 SalarySettlementSignEnum signInStatus = getSignInStatus(teacherAttendance.getSignInTime(), courseSchedule.getStartClassTime(), teachMode,tenantId);
                 BigDecimal signInDeductCost = getSignInDeduce(teacherSalary, signInStatus, teachMode,tenantId);
                 if(signInDeductCost.compareTo(BigDecimal.ZERO) > 0){
@@ -754,7 +764,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                     deductReasons.add("签到状态异常扣除课酬" + signInDeductCost);
                 }
             }
-            if(teacherAttendance == null || teacherAttendance.getSignOutStatus() == null || teacherAttendance.getSignOutStatus() == YesOrNoEnum.NO){
+            if(teacherAttendance.getSignOutStatus() == null || teacherAttendance.getSignOutStatus() == YesOrNoEnum.NO){
                 SalarySettlementSignEnum signOutStatus = getSignInStatus(teacherAttendance.getSignInTime(), courseSchedule.getStartClassTime(), teachMode,tenantId);
                 BigDecimal signOutDeductCost = getSignInDeduce(teacherSalary, signOutStatus, teachMode,tenantId);
                 if(signOutDeductCost.compareTo(BigDecimal.ZERO) > 0){
@@ -768,11 +778,11 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                 School school = idSchoolMap.get(courseSchedule.getSchoolId());
                 if(school != null){
                     Boolean signInRange = false;
-                    if(teacherAttendance == null || StringUtils.isEmpty(teacherAttendance.getSignInLongitudeLatitude())){
+                    if(teacherAttendance != null && StringUtils.isNotEmpty(teacherAttendance.getSignInLongitudeLatitude())){
                         signInRange = getSignRange(school.getLongitudeLatitude(),teacherAttendance.getSignInLongitudeLatitude(),attendanceRange);
                     }
                     Boolean signOutRange = false;
-                    if(teacherAttendance == null || StringUtils.isEmpty(teacherAttendance.getSignOutLongitudeLatitude())){
+                    if(teacherAttendance != null || StringUtils.isNotEmpty(teacherAttendance.getSignOutLongitudeLatitude())){
                         signOutRange = getSignRange(school.getLongitudeLatitude(),teacherAttendance.getSignOutLongitudeLatitude(),attendanceRange);
                     }
                     if(!signInRange){

+ 30 - 9
mec-biz/src/main/java/com/ym/mec/biz/service/impl/IndexBaseMonthDataServiceImpl.java

@@ -15,6 +15,7 @@ import com.ym.mec.biz.service.*;
 import com.ym.mec.common.constant.CommonConstants;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.filters.TenantIdThreadLocal;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.util.collection.MapUtil;
@@ -51,7 +52,7 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 	@Autowired
 	private SysConfigDao sysConfigDao;
 	@Autowired
-	private SysTenantConfigDao sysTenantConfigDao;
+	private SysTenantConfigService sysTenantConfigService;
 	@Autowired
 	private MusicGroupPaymentCalenderDao musicGroupPaymentCalenderDao;
 	@Autowired
@@ -606,6 +607,7 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 
 	@Override
 	public Map<String, Object> getIndexErrData(String organIdsStr, IndexErrorType errorType) {
+		Integer tenantId = TenantIdThreadLocal.get();
 		//只筛选指定时间之后的数据
 		String startTime = DateUtil.format(DateUtil.getFirstDayOfMonth(DateUtil.addMonths(new Date(), -2)),DateUtil.ISO_EXPANDED_DATE_FORMAT);
 
@@ -655,8 +657,14 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 			two.setDesc(IndexErrorType.STUDENT_INFO.getMsg());
 			List<IndexErrInfoDto> twoChild = new ArrayList<>();
 			//学员请假异常提醒(只提醒本月的异常)
-			String format1 = DateUtil.format(new Date(), DateUtil.ISO_YEAR_MONTH_FORMAT);
-			twoChild.add(new IndexErrInfoDto(IndexErrorType.STUDENT_ERROR_LEAVE, IndexErrorType.STUDENT_ERROR_LEAVE.getMsg(), indexBaseMonthDataDao.countStudentErrorLeave(organIds,format1,classGroupIds), null));
+			int studentErrorLeave = 0;
+			String studentErrorLeaveNum = sysTenantConfigService.getTenantConfigValue(SysConfigService.STUDENT_ERROR_LEAVE_NUM, tenantId);
+			if(StringUtils.isNotEmpty(studentErrorLeaveNum)){
+				String format1 = DateUtil.format(new Date(), DateUtil.ISO_YEAR_MONTH_FORMAT);
+				studentErrorLeave = indexBaseMonthDataDao.countStudentErrorLeave(organIds, format1, classGroupIds,Integer.parseInt(studentErrorLeaveNum));
+			}
+
+			twoChild.add(new IndexErrInfoDto(IndexErrorType.STUDENT_ERROR_LEAVE, IndexErrorType.STUDENT_ERROR_LEAVE.getMsg(),studentErrorLeave , null));
 
 			//未缴费学员数
 			twoChild.add(new IndexErrInfoDto(IndexErrorType.STUDENT_ARREARAGE, IndexErrorType.STUDENT_ARREARAGE.getMsg(), indexBaseMonthDataDao.countNoPaymentStudentNum(organIds,educationUserId,0), Arrays.asList(educationUserId)));
@@ -728,7 +736,11 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 			if(classGroupIds == null || classGroupIds.size() > 0){
 				attendanceError = indexBaseMonthDataDao.getAttendanceError(organIds,startTime,classGroupIds);
 				noAttendance = indexBaseMonthDataDao.getNoAttendance(organIds,startTime,classGroupIds);
-				courseTimeError = indexBaseMonthDataDao.getCourseTimeError(organIds,classGroupIds);
+				String courseStartTimeError = sysTenantConfigService.getTenantConfigValue(SysConfigService.COURSE_START_TIME_ERROR, tenantId);
+				String courseEndTimeError = sysTenantConfigService.getTenantConfigValue(SysConfigService.COURSE_END_TIME_ERROR, tenantId);
+				if(StringUtils.isNotEmpty(courseStartTimeError) && StringUtils.isNotEmpty(courseEndTimeError)){
+					courseTimeError = indexBaseMonthDataDao.getCourseTimeError(organIds,classGroupIds,courseStartTimeError,courseEndTimeError);
+				}
 			}
 			fourChild.add(new IndexErrInfoDto(IndexErrorType.COURSE_TIME_ERROR, IndexErrorType.COURSE_TIME_ERROR.getMsg(), courseTimeError, null));
 
@@ -1042,7 +1054,7 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 		IndexErrInfoDto indexErrInfoDto = new IndexErrInfoDto();
 		indexErrInfoDto.setErrorType(WAIT_CREATE_PAYMENT_CALENDER);
 		indexErrInfoDto.setDesc(WAIT_CREATE_PAYMENT_CALENDER.getMsg());
-		String configValue1 = sysTenantConfigDao.getConfigValue(SysConfigService.PUSH_CREATE_PAYMENT_CALENDER, tenantId);
+		String configValue1 = sysTenantConfigService.getTenantConfigValue(SysConfigService.PUSH_CREATE_PAYMENT_CALENDER, tenantId);
 		if(StringUtils.isNotEmpty(configValue1)){
 			//获取关联的乐团列表
 			List<String> musicGroupIds = musicGroupDao.queryIdsByEduIdAndOrganIds(educationUserId,organIds);
@@ -1095,6 +1107,7 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 
 	@Override
 	public Map<String,Boolean> hasIndexErrData(String organIdsStr) {
+		Integer tenantId = TenantIdThreadLocal.get();
 		String startTime = DateUtil.format(DateUtil.getFirstDayOfMonth(DateUtil.addMonths(new Date(), -2)),DateUtil.ISO_EXPANDED_DATE_FORMAT);
 
 		Map<String,Boolean> resultMap = new HashMap<>();
@@ -1134,9 +1147,13 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 		boolean flag2 = false;
 		if(!flag2){
 			//学员请假异常提醒(获取前两个月的)
-			String format1 = DateUtil.format(date, DateUtil.ISO_YEAR_MONTH_FORMAT);
-			int studentErrorLeaveNum = indexBaseMonthDataDao.countStudentErrorLeave(organIds,format1,classGroupIds);
-			if(studentErrorLeaveNum > 0){
+			int studentErrorLeave = 0;
+			String studentErrorLeaveNum = sysTenantConfigService.getTenantConfigValue(SysConfigService.STUDENT_ERROR_LEAVE_NUM, tenantId);
+			if(StringUtils.isNotEmpty(studentErrorLeaveNum)){
+				String format1 = DateUtil.format(new Date(), DateUtil.ISO_YEAR_MONTH_FORMAT);
+				studentErrorLeave = indexBaseMonthDataDao.countStudentErrorLeave(organIds, format1, classGroupIds,Integer.parseInt(studentErrorLeaveNum));
+			}
+			if(studentErrorLeave > 0){
 				flag2 = true;
 			}
 		}
@@ -1196,7 +1213,11 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 		if(!flag4){
 			int courseTimeError = 0;
 			if(classGroupIds == null || classGroupIds.size() > 0){
-				courseTimeError = indexBaseMonthDataDao.getCourseTimeError(organIds,classGroupIds);
+				String courseStartTimeError = sysTenantConfigService.getTenantConfigValue(SysConfigService.COURSE_START_TIME_ERROR, tenantId);
+				String courseEndTimeError = sysTenantConfigService.getTenantConfigValue(SysConfigService.COURSE_END_TIME_ERROR, tenantId);
+				if(StringUtils.isNotEmpty(courseStartTimeError) && StringUtils.isNotEmpty(courseEndTimeError)){
+					courseTimeError = indexBaseMonthDataDao.getCourseTimeError(organIds,classGroupIds,courseStartTimeError,courseEndTimeError);
+				}
 			}
 			if(courseTimeError > 0){
 				flag4 = true;

+ 3 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupQuestionnaireServiceImpl.java

@@ -2,6 +2,7 @@ package com.ym.mec.biz.service.impl;
 
 import com.ym.mec.biz.dal.dao.MusicGroupQuestionnaireDao;
 import com.ym.mec.biz.dal.dao.QuestionnaireUserResultDao;
+import com.ym.mec.biz.dal.dao.SysConfigDao;
 import com.ym.mec.biz.dal.dao.SysTenantConfigDao;
 import com.ym.mec.biz.dal.dto.QuestionnaireResultDto;
 import com.ym.mec.biz.dal.entity.MusicGroupQuestionnaire;
@@ -29,7 +30,7 @@ public class MusicGroupQuestionnaireServiceImpl extends BaseServiceImpl<Integer,
 	@Autowired
 	private MusicGroupQuestionnaireDao musicGroupQuestionnaireDao;
 	@Autowired
-	private SysTenantConfigDao sysTenantConfigDao;
+	private SysConfigDao sysConfigDao;
 	@Autowired
 	private QuestionnaireTopicService questionnaireTopicService;
 	@Autowired
@@ -58,7 +59,7 @@ public class MusicGroupQuestionnaireServiceImpl extends BaseServiceImpl<Integer,
 
 	@Override
 	public QuestionnaireTopic getQuestionDetail(Integer tenantId) {
-		String topicId = sysTenantConfigDao.getConfigValue(SysConfigService.MUSIC_GROUP_TOPIC_ID,tenantId);
+		String topicId = sysConfigDao.findConfigValue(SysConfigService.MUSIC_GROUP_TOPIC_ID);
 		if(StringUtils.isEmpty(topicId)){
 			throw new BizException("操作失败:请选择问卷调查模板");
 		}

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -1638,7 +1638,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         }*/
         //获取当前乐团所有已报名学员
         List<StudentRegistration> registrations = studentRegistrationDao.findClassGroupStu(musicGroupId, null);
-        String configValue = sysTenantConfigService.getTenantConfigValue(SysConfigService.REFUND_PERIOD, musicGroup.getTenantId());
+        String configValue = sysConfigDao.findConfigValue(SysConfigService.REFUND_PERIOD);
         if (StringUtils.isNotEmpty(configValue) && musicGroup.getOwnershipType() != null && musicGroup.getOwnershipType() == CooperationOrgan.OwnershipType.OWN) {
             if (registrations != null && registrations.size() > 0) {
                 Map<Integer, String> map = new HashMap<>(registrations.size());

+ 2 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupSubjectPlanServiceImpl.java

@@ -48,9 +48,7 @@ public class MusicGroupSubjectPlanServiceImpl extends BaseServiceImpl<Integer, M
     private StudentRegistrationService studentRegistrationService;
 
     @Autowired
-    private GoodsService goodsService;
-    @Autowired
-    private SysTenantConfigDao sysTenantConfigDao;
+    private SysTenantConfigService sysTenantConfigService;
 
     @Autowired
     private MusicGroupSubjectGoodsGroupService musicGroupSubjectGoodsGroupService;
@@ -118,7 +116,7 @@ public class MusicGroupSubjectPlanServiceImpl extends BaseServiceImpl<Integer, M
         if(musicGroup.getTenantId() == null){
         	throw new BizException("乐团机构信息异常,请联系管理员");
         }
-        String configValue = sysTenantConfigDao.getConfigValue(SysConfigService.MEMBER_GROUP_TERM_GIVE_COURSE_TIME, musicGroup.getTenantId());
+        String configValue = sysTenantConfigService.getTenantConfigValue(SysConfigService.MEMBER_GROUP_TERM_GIVE_COURSE_TIME, musicGroup.getTenantId());
         if(StringUtils.isEmpty(configValue)){
             throw new BizException("请配置会员团每学期赠送课程分钟数");
         }

+ 3 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentGoodsSellServiceImpl.java

@@ -11,6 +11,7 @@ import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.page.GoodsSellQueryInfo;
 import com.ym.mec.biz.service.StudentGoodsSellService;
 import com.ym.mec.biz.service.SysConfigService;
+import com.ym.mec.biz.service.SysTenantConfigService;
 import com.ym.mec.biz.service.TenantInfoService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.page.PageInfo;
@@ -32,7 +33,7 @@ public class StudentGoodsSellServiceImpl extends BaseServiceImpl<Integer, Studen
     @Autowired
     private SysConfigDao sysConfigDao;
     @Autowired
-    private SysTenantConfigDao sysTenantConfigDao;
+    private SysTenantConfigService sysTenantConfigService;
     @Autowired
     private TenantInfoService tenantInfoService;
     @Autowired
@@ -40,8 +41,6 @@ public class StudentGoodsSellServiceImpl extends BaseServiceImpl<Integer, Studen
     @Autowired
     private StudentInstrumentDao studentInstrumentDao;
     @Autowired
-    private StudentPaymentOrderDao studentPaymentOrderDao;
-    @Autowired
     private SysCouponCodeDao sysCouponCodeDao;
 
     @Override
@@ -88,7 +87,7 @@ public class StudentGoodsSellServiceImpl extends BaseServiceImpl<Integer, Studen
         if(tenantInfos != null && tenantInfos.size() > 0){
             for (int i = 0; i < tenantInfos.size(); i++) {
                 TenantInfo tenantInfo = tenantInfos.get(i);
-                String autoAffirmReceiveTime = sysTenantConfigDao.getConfigValue(SysConfigService.AUTO_AFFIRM_RECEIVE_TIME,tenantInfo.getId());
+                String autoAffirmReceiveTime = sysTenantConfigService.getTenantConfigValue(SysConfigService.AUTO_AFFIRM_RECEIVE_TIME,tenantInfo.getId());
                 //获取到期的订单编号
                 String s = studentGoodsSellDao.queryNoAffirmOrderNo(autoAffirmReceiveTime);
                 if(StringUtils.isNotEmpty(s)){

+ 2 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java

@@ -145,7 +145,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     @Autowired
     private SysConfigDao sysConfigDao;
     @Autowired
-    private SysTenantConfigDao sysTenantConfigDao;
+    private SysTenantConfigService sysTenantConfigService;
     @Autowired
     private MusicGroupDao musicGroupDao;
     @Autowired
@@ -1975,7 +1975,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         MusicGroupSubjectPlan musicOneSubjectClassPlan = musicGroupSubjectPlanService.getMusicOneSubjectClassPlan(studentRegistration.getMusicGroupId(), studentRegistration.getActualSubjectId());
         int paidNum = musicOneSubjectClassPlan.getPaidStudentNum() == null ? 0 : musicOneSubjectClassPlan.getPaidStudentNum();
         int paidZeroNum = musicOneSubjectClassPlan.getPaidZeroNum() == null ? 0 : musicOneSubjectClassPlan.getPaidZeroNum();
-        String configValue = sysTenantConfigDao.getConfigValue(SysConfigService.MEMBER_GROUP_FEE_STUDENT_NUM,musicGroup.getTenantId());
+        String configValue = sysTenantConfigService.getTenantConfigValue(SysConfigService.MEMBER_GROUP_FEE_STUDENT_NUM,musicGroup.getTenantId());
         if(StringUtils.isNotEmpty(configValue)){
             if(paidZeroNum >= Integer.parseInt(configValue)){
                 throw new BizException("每个声部只能有{}个免费入团名额",configValue);

+ 8 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java

@@ -12,6 +12,7 @@ import com.ym.mec.biz.dal.page.TeacherCloseQueryInfo;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.filters.TenantIdThreadLocal;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.redis.service.RedisCache;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
@@ -415,6 +416,7 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public void addTeacherAttendanceSignIn(Long firstCourseId, Integer userId, Long courseScheduleId,String deviceNum) {
+		Integer tenantId = TenantIdThreadLocal.get();
 		ClassGroup classGroup = classGroupDao.findByCourseSchedule(courseScheduleId.intValue(),0);
 		TeacherAttendance teacherAttendance=teacherAttendanceDao.findByTeacherAttendanceInfo(userId.longValue(),courseScheduleId);
 		if(Objects.isNull(teacherAttendance)){
@@ -452,7 +454,12 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 			teacherAttendance.setSignInTime(date);
 			teacherAttendance.setSignInStatus(YesOrNoEnum.YES);
 			teacherAttendance.setCurrentClassTimes(classGroup.getCurrentClassTimes() + 1);
-			Date add1Minutes = DateUtil.addMinutes(classStartDateTime, -1);
+			String onlineAdvanceSignInMinutesStr = sysTenantConfigService.getTenantConfigValue(SysConfigService.ONLINE_ADVANCE_SIGN_IN_MINUTES, tenantId);
+			Integer onlineAdvanceSignInMinutes = 0;
+			if(StringUtils.isNotEmpty(onlineAdvanceSignInMinutesStr)){
+				onlineAdvanceSignInMinutes = Integer.parseInt(onlineAdvanceSignInMinutesStr);
+			}
+			Date add1Minutes = DateUtil.addMinutes(classStartDateTime, ~--onlineAdvanceSignInMinutes);
 			int secondsBetween = DateUtil.secondsBetween(date, add1Minutes);
 
 			if(yesOrNoEnum != YesOrNoEnum.YES && secondsBetween <= 0){

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -4006,7 +4006,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		if(tenantId == null){
 			throw new BizException("课程机构信息异常");
 		}
-		String refundPeriod = sysTenantConfigService.getTenantConfigValue(SysConfigService.REFUND_PERIOD, tenantId);
+		String refundPeriod = sysConfigDao.findConfigValue(SysConfigService.REFUND_PERIOD);
 		if(StringUtils.isNotEmpty(refundPeriod)){
 			Map<Integer,String> map1 = MapUtil.convertMybatisMap(classGroupStudentMapperDao.queryStudentIdMap(vipGroupId));
 			if(map1 != null && map1.size() > 0){

+ 2 - 2
mec-biz/src/main/resources/config/mybatis/IndexBaseMonthDataMapper.xml

@@ -955,7 +955,7 @@
 	</select>
     <select id="getCourseTimeError" resultType="int">
 		SELECT COUNT(cs.id_) FROM course_schedule cs
-		WHERE cs.status_ = 'NOT_START' AND cs.del_flag_ = 0 AND cs.is_lock_ = 0 AND (cs.start_class_time_ &lt; '06:00:00' OR cs.end_class_time_ > '21:00:00')
+		WHERE cs.status_ = 'NOT_START' AND cs.del_flag_ = 0 AND cs.is_lock_ = 0 AND (cs.start_class_time_ &lt; #{courseStartTimeError} OR cs.end_class_time_ > #{courseEndTimeError})
 		AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_) AND cs.pre_course_flag_ = 0
 		<if test="classGroupIds != null and classGroupIds.size() > 0">
 			AND cs.class_group_id_ IN
@@ -1546,7 +1546,7 @@
 			</foreach>
 		</if>
 		GROUP BY sa.user_id_,DATE_FORMAT(cs.class_date_,'%Y-%m')
-		HAVING COUNT(sa.id_) > 1 AND COUNT(sa.id_) > SUM(sa.leave_visit_flag_)) c
+		HAVING COUNT(sa.id_) >= #{studentErrorLeaveNum} AND COUNT(sa.id_) > SUM(sa.leave_visit_flag_)) c
 	</select>
 	<select id="countOrganStudentErrorLeave" resultType="map">
 		SELECT c.organ_id_ 'key',COUNT(c.user_id_) 'value' FROM (

+ 6 - 1
mec-common/audit-log/src/main/java/com/yonge/log/interceptor/AuditLogInterceptor.java

@@ -12,6 +12,7 @@ import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.web.method.HandlerMethod;
 import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
 import com.ym.mec.util.json.JsonUtil;
@@ -43,12 +44,16 @@ public class AuditLogInterceptor extends HandlerInterceptorAdapter {
 
 	@Override
 	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws ServletException, IOException {
-
 		return true;
 	}
 
 	@Override
 	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
+		syncSaveLog(request,handler);
+	}
+
+	@Async
+	private void syncSaveLog(HttpServletRequest request, Object handler){
 		try {
 			String servletPath = request.getServletPath();
 			HandlerMethod handlerMethod = (HandlerMethod) handler;

+ 1 - 1
mec-eureka/src/main/resources/bootstrap-dev.properties

@@ -1,7 +1,7 @@
 #\u6307\u5b9a\u5f00\u53d1\u73af\u5883
 #spring.profiles.active=dev
 #\u670d\u52a1\u5668\u5730\u5740
-spring.cloud.nacos.config.server-addr=47.114.176.40:8848
+spring.cloud.nacos.config.server-addr=47.114.1.200:8848
 #\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
 spring.cloud.nacos.config.namespace=a5c10b43-0c4d-4e3b-a0ad-9af651cfe89c
 #\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e

+ 2 - 2
mec-eureka/src/main/resources/bootstrap-test.properties

@@ -1,9 +1,9 @@
 #\u6307\u5b9a\u5f00\u53d1\u73af\u5883
 #spring.profiles.active=dev
 #\u670d\u52a1\u5668\u5730\u5740
-spring.cloud.nacos.config.server-addr=47.114.1.200:8848
+spring.cloud.nacos.config.server-addr=47.114.176.40:8848
 #\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
-spring.cloud.nacos.config.namespace=f9d46b0a-9847-48ae-8e4b-216c7a3eb466
+spring.cloud.nacos.config.namespace=46f06363-b9d6-46f0-9cd7-7b33dcf26bb0
 #\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e
 spring.cloud.nacos.config.group=DEFAULT_GROUP
 #\u6587\u4ef6\u540d -- \u5982\u679c\u6ca1\u6709\u914d\u7f6e\u5219\u9ed8\u8ba4\u4e3a ${spring.appliction.name}

+ 1 - 1
mec-gateway/mec-gateway-web/src/main/resources/bootstrap-dev.properties

@@ -1,7 +1,7 @@
 #\u6307\u5b9a\u5f00\u53d1\u73af\u5883
 #spring.profiles.active=dev
 #\u670d\u52a1\u5668\u5730\u5740
-spring.cloud.nacos.config.server-addr=47.114.176.40:8848
+spring.cloud.nacos.config.server-addr=47.114.1.200:8848
 #\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
 spring.cloud.nacos.config.namespace=a5c10b43-0c4d-4e3b-a0ad-9af651cfe89c
 #\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e

+ 1 - 0
mec-im/src/main/java/com/ym/controller/RoomController.java

@@ -7,6 +7,7 @@ import com.ym.service.MessageService;
 import com.ym.service.RoomService;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.FactoryBean;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import java.util.List;

+ 22 - 7
mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

@@ -124,6 +124,13 @@ public class RoomServiceImpl implements RoomService {
         return Integer.parseInt(roomId);
     }
 
+    public static void main(String[] args) {
+        Date date = DateUtil.stringToDate("2021-12-14 11:34:00", DateUtil.EXPANDED_DATE_TIME_FORMAT);
+        Date classDate = DateUtil.stringToDate("2021-12-14 11:40:00", DateUtil.EXPANDED_DATE_TIME_FORMAT);
+        int i = classDate.compareTo(DateUtil.addMinutes(date, 5));
+        int i1 = DateUtil.minutesBetween(classDate, date);
+    }
+
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
     @Override
     public RoomResult joinRoom(String roomId) throws Exception {
@@ -138,6 +145,16 @@ public class RoomServiceImpl implements RoomService {
         if(courseSchedule.getTeachMode() == TeachModeEnum.OFFLINE){
             throw new ApiException(ErrorEnum.JOIN_ROOM_ERROR);
         }
+        Date curTime = DateTimeUtils.currentUTC();
+        //是否提前进入教室
+        String courseBeforeBufferTime = sysTenantConfigService.getTenantConfigValue(SysConfigService.COURSE_BEFORE_BUFFER_TIME,courseSchedule.getTenantId());
+        if (StringUtils.isEmpty(courseBeforeBufferTime)) {
+            courseBeforeBufferTime = "5";
+        }
+        Date addMinutes = DateUtil.addMinutes(curTime, Integer.parseInt(courseBeforeBufferTime));
+        if(courseSchedule.getStartClassTime().compareTo(addMinutes) > 0 ){
+            throw new BizException("网络教室暂未开启,请在{}分钟后进入教室",DateUtil.minutesBetween(addMinutes,courseSchedule.getStartClassTime()));
+        }
 
         //是否是连堂课
         String continueCourseTime = sysTenantConfigService.getTenantConfigValue(SysConfigService.ONLINE_CONTINUE_COURSE_TIME,courseSchedule.getTenantId());
@@ -145,9 +162,9 @@ public class RoomServiceImpl implements RoomService {
             continueCourseTime = "5";
         }
 
-        String autoCloseNetworkRoomTime = sysConfigDao.findConfigValue(SysConfigService.AUTO_CLOSE_NETWORK_ROOM);
+        String autoCloseNetworkRoomTime = sysTenantConfigService.getTenantConfigValue(SysConfigService.COURSE_BEFORE_BUFFER_TIME,courseSchedule.getTenantId());
         if(StringUtils.isEmpty(autoCloseNetworkRoomTime)){
-            continueCourseTime = "15";
+            autoCloseNetworkRoomTime = "15";
         }
         RoomResult roomResult = new RoomResult();
         roomResult.setAutoCloseNetworkRoomTime(autoCloseNetworkRoomTime);
@@ -173,8 +190,6 @@ public class RoomServiceImpl implements RoomService {
         }
         redisTemplate.opsForValue().setIfAbsent(roomId + userId,courseSchedule.getId().toString());
         log.info("joinRoom current: roomId={}, userId={}", roomId, userId);
-        Date curTime = DateTimeUtils.currentUTC();
-
         RoleEnum roleEnum;
 
 
@@ -249,9 +264,9 @@ public class RoomServiceImpl implements RoomService {
         userResult.setPlayMidiJson(JSONObject.parseObject(midi,CustomMessage.class));
 
         //获取当前课程剩余时长
-        String classDate = DateUtil.format(courseSchedule.getClassDate(), DateUtil.DEFAULT_PATTERN);
-        String endClassTime = DateUtil.format(courseSchedule.getEndClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
-        roomResult.setSurplusTime(DateUtil.secondsBetween(new Date(),DateUtil.stringToDate(classDate + " " + endClassTime,DateUtil.EXPANDED_DATE_TIME_FORMAT)));
+//        String classDate = DateUtil.format(courseSchedule.getClassDate(), DateUtil.DEFAULT_PATTERN);
+//        String endClassTime = DateUtil.format(courseSchedule.getEndClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
+        roomResult.setSurplusTime(DateUtil.secondsBetween(new Date(),courseSchedule.getEndClassTime()));
 
         roomResult.setUserInfo(userResult);
         roomResult.setDisplay(display);

+ 1 - 1
mec-im/src/main/resources/bootstrap-dev.properties

@@ -1,7 +1,7 @@
 #\u6307\u5b9a\u5f00\u53d1\u73af\u5883
 #spring.profiles.active=dev
 #\u670d\u52a1\u5668\u5730\u5740
-spring.cloud.nacos.config.server-addr=47.114.176.40:8848
+spring.cloud.nacos.config.server-addr=47.114.1.200:8848
 #\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
 spring.cloud.nacos.config.namespace=a5c10b43-0c4d-4e3b-a0ad-9af651cfe89c
 #\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e

+ 1 - 1
mec-im/src/main/resources/bootstrap-test.properties

@@ -1,7 +1,7 @@
 #\u6307\u5b9a\u5f00\u53d1\u73af\u5883
 #spring.profiles.active=dev
 #\u670d\u52a1\u5668\u5730\u5740
-spring.cloud.nacos.config.server-addr=47.114.1.200:8848
+spring.cloud.nacos.config.server-addr=47.114.176.40:8848
 #\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
 spring.cloud.nacos.config.namespace=46f06363-b9d6-46f0-9cd7-7b33dcf26bb0
 #\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e

+ 1 - 1
mec-student/src/main/resources/bootstrap-dev.properties

@@ -1,7 +1,7 @@
 #\u6307\u5b9a\u5f00\u53d1\u73af\u5883
 #spring.profiles.active=dev
 #\u670d\u52a1\u5668\u5730\u5740
-spring.cloud.nacos.config.server-addr=47.114.176.40:8848
+spring.cloud.nacos.config.server-addr=47.114.1.200:8848
 #\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
 spring.cloud.nacos.config.namespace=a5c10b43-0c4d-4e3b-a0ad-9af651cfe89c
 #\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e

+ 1 - 1
mec-student/src/main/resources/bootstrap-test.properties

@@ -1,7 +1,7 @@
 #\u6307\u5b9a\u5f00\u53d1\u73af\u5883
 #spring.profiles.active=dev
 #\u670d\u52a1\u5668\u5730\u5740
-spring.cloud.nacos.config.server-addr=47.114.1.200:8848
+spring.cloud.nacos.config.server-addr=47.114.176.40:8848
 #\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
 spring.cloud.nacos.config.namespace=46f06363-b9d6-46f0-9cd7-7b33dcf26bb0
 #\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e

+ 1 - 1
mec-task/src/main/resources/bootstrap-dev.properties

@@ -1,7 +1,7 @@
 #\u6307\u5b9a\u5f00\u53d1\u73af\u5883
 #spring.profiles.active=dev
 #\u670d\u52a1\u5668\u5730\u5740
-spring.cloud.nacos.config.server-addr=47.114.176.40:8848
+spring.cloud.nacos.config.server-addr=47.114.1.200:8848
 #\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
 spring.cloud.nacos.config.namespace=a5c10b43-0c4d-4e3b-a0ad-9af651cfe89c
 #\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e

+ 1 - 1
mec-task/src/main/resources/bootstrap-test.properties

@@ -1,7 +1,7 @@
 #\u6307\u5b9a\u5f00\u53d1\u73af\u5883
 #spring.profiles.active=dev
 #\u670d\u52a1\u5668\u5730\u5740
-spring.cloud.nacos.config.server-addr=47.114.1.200:8848
+spring.cloud.nacos.config.server-addr=47.114.176.40:8848
 #\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
 spring.cloud.nacos.config.namespace=46f06363-b9d6-46f0-9cd7-7b33dcf26bb0
 #\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e

+ 1 - 1
mec-teacher/src/main/resources/bootstrap-dev.properties

@@ -1,7 +1,7 @@
 #\u6307\u5b9a\u5f00\u53d1\u73af\u5883
 #spring.profiles.active=dev
 #\u670d\u52a1\u5668\u5730\u5740
-spring.cloud.nacos.config.server-addr=47.114.176.40:8848
+spring.cloud.nacos.config.server-addr=47.114.1.200:8848
 #\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
 spring.cloud.nacos.config.namespace=a5c10b43-0c4d-4e3b-a0ad-9af651cfe89c
 #\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e

+ 1 - 1
mec-teacher/src/main/resources/bootstrap-test.properties

@@ -1,7 +1,7 @@
 #\u6307\u5b9a\u5f00\u53d1\u73af\u5883
 #spring.profiles.active=dev
 #\u670d\u52a1\u5668\u5730\u5740
-spring.cloud.nacos.config.server-addr=47.114.1.200:8848
+spring.cloud.nacos.config.server-addr=47.114.176.40:8848
 #\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
 spring.cloud.nacos.config.namespace=46f06363-b9d6-46f0-9cd7-7b33dcf26bb0
 #\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e

+ 1 - 1
mec-web/src/main/resources/bootstrap-dev.properties

@@ -1,7 +1,7 @@
 #\u6307\u5b9a\u5f00\u53d1\u73af\u5883
 #spring.profiles.active=dev
 #\u670d\u52a1\u5668\u5730\u5740
-spring.cloud.nacos.config.server-addr=47.114.176.40:8848
+spring.cloud.nacos.config.server-addr=47.114.1.200:8848
 #\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
 spring.cloud.nacos.config.namespace=a5c10b43-0c4d-4e3b-a0ad-9af651cfe89c
 #\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e

+ 1 - 1
mec-web/src/main/resources/bootstrap-test.properties

@@ -1,7 +1,7 @@
 #\u6307\u5b9a\u5f00\u53d1\u73af\u5883
 #spring.profiles.active=dev
 #\u670d\u52a1\u5668\u5730\u5740
-spring.cloud.nacos.config.server-addr=47.114.1.200:8848
+spring.cloud.nacos.config.server-addr=47.114.176.40:8848
 #\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
 spring.cloud.nacos.config.namespace=46f06363-b9d6-46f0-9cd7-7b33dcf26bb0
 #\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e

+ 1 - 1
mec-websocket/src/main/resources/bootstrap-test.properties

@@ -1,7 +1,7 @@
 #\u6307\u5b9a\u5f00\u53d1\u73af\u5883
 #spring.profiles.active=dev
 #\u670d\u52a1\u5668\u5730\u5740
-spring.cloud.nacos.config.server-addr=47.114.1.200:8848
+spring.cloud.nacos.config.server-addr=47.114.176.40:8848
 #\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
 spring.cloud.nacos.config.namespace=46f06363-b9d6-46f0-9cd7-7b33dcf26bb0
 #\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e