瀏覽代碼

Merge remote-tracking branch 'origin/master'

Joburgess 5 年之前
父節點
當前提交
d061502d4b
共有 19 個文件被更改,包括 325 次插入11 次删除
  1. 16 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java
  2. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentAttendanceDao.java
  3. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherAttendanceDao.java
  4. 7 1
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentAttendanceService.java
  5. 148 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentAttendanceServiceImpl.java
  6. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysTenantAccountServiceImpl.java
  7. 20 0
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  8. 5 0
      mec-biz/src/main/resources/config/mybatis/StudentAttendanceMapper.xml
  9. 5 0
      mec-biz/src/main/resources/config/mybatis/TeacherAttendanceMapper.xml
  10. 2 1
      mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml
  11. 5 0
      mec-common/common-core/pom.xml
  12. 14 0
      mec-common/common-core/src/main/java/com/ym/mec/common/config/LocalFastJsonHttpMessageConverter.java
  13. 52 0
      mec-common/common-core/src/main/java/com/ym/mec/common/filters/EmojiEncodingFilter.java
  14. 0 1
      mec-common/common-core/src/main/java/com/ym/mec/common/service/impl/RedisIdGeneratorService.java
  15. 15 1
      mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java
  16. 0 5
      mec-task/pom.xml
  17. 3 0
      mec-web/src/main/java/com/ym/mec/web/controller/APIController.java
  18. 10 0
      mec-web/src/main/java/com/ym/mec/web/controller/student/StudentAttendanceController.java
  19. 6 0
      pom.xml

+ 16 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java

@@ -1212,6 +1212,15 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      */
     CourseSchedule queryContinueCourse(@Param("courseSchedule") CourseSchedule courseSchedule,
                                        @Param("continueCourseTime") String continueCourseTime, @Param("endDateTime") String endDateTime);
+    /**
+     * 获取当前课程,下一次连堂课
+     *
+     * @param continueCourseTime
+     * @param courseSchedule
+     * @return
+     */
+    CourseSchedule queryRepairContinueCourse(@Param("courseSchedule") CourseSchedule courseSchedule,
+                                       @Param("continueCourseTime") String continueCourseTime, @Param("endDateTime") String endDateTime);
 
     /**
      * 获取单节课时长
@@ -1352,4 +1361,11 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      * @return
      */
     List<CourseSchedule> findCourseByGroupId(@Param("groupType") String groupType, @Param("groupId") String groupId);
+
+    /**
+     * 获取老师正常签退的课程
+     * @param month
+     * @return
+     */
+    List<CourseSchedule> queryScheduleByAttendance(Integer month);
 }

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentAttendanceDao.java

@@ -259,4 +259,11 @@ public interface StudentAttendanceDao extends BaseDAO<Long, StudentAttendance> {
     int deleteByGroup(@Param("groupId") String groupId,
                       @Param("groupType")GroupType groupType);
 
+    /**
+     * 连堂课签到,签退
+     * @param courseScheduleId
+     * @param startDateTime
+     * @param endDateTime
+     */
+    void cuntinueCourseSign(@Param("courseScheduleId")Long courseScheduleId,@Param("startDateTime")Date startDateTime,@Param("endDateTime")Date endDateTime);
 }

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherAttendanceDao.java

@@ -184,4 +184,11 @@ public interface TeacherAttendanceDao extends BaseDAO<Long, TeacherAttendance> {
 	int deleteByGroup(@Param("groupId") String groupId,
 					  @Param("groupType")GroupType groupType);
 
+	/**
+	 * 获取当前课程老师总上课时长
+	 * @param courseId
+	 * @param teacherId
+	 * @return
+	 */
+    int getTotalMinutes(@Param("courseId") Long courseId, @Param("teacherId") Integer teacherId);
 }

+ 7 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/StudentAttendanceService.java

@@ -75,7 +75,7 @@ public interface StudentAttendanceService extends BaseService<Long, StudentAtten
 	CourseScheduleResponse getStatisticsInfo(Integer classGroupId);
 
 	/**
-	 * VIP课学生考勤
+	 * 线上课学生考勤
 	 * @param courseScheduleId
 	 * @param userId
 	 * @param statusEnum
@@ -88,4 +88,10 @@ public interface StudentAttendanceService extends BaseService<Long, StudentAtten
 	 * @return
 	 */
 	PageInfo<StudentAttendance> findStudentAttendance(QueryInfo queryInfo);
+
+	/**
+	 * 修复连堂课学生签到记录
+	 * @param month
+	 */
+    void repairStudentAttendance(Integer month);
 }

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

@@ -482,8 +482,80 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
 				courseScheduleDao.update(courseSchedule);
 			}
 		}else if(signStatusEnum == SignStatusEnum.SIGN_OUT){
-			studentAttendance.setStatus(statusEnum);
-			studentAttendance.setSignOutTime(date);
+			String classDate = DateUtil.format(courseSchedule.getClassDate(), DateUtil.DEFAULT_PATTERN);
+			String startClassTime = DateUtil.format(courseSchedule.getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
+			String endClassTime = DateUtil.format(courseSchedule.getEndClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
+			//上课时间
+			Date classStartDateTime = DateUtil.stringToDate(classDate + " " + startClassTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
+			Date classEndDateTime = DateUtil.stringToDate(classDate + " " + endClassTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
+			if(DateUtil.minutesBetween(classEndDateTime,date) >= 0){
+				String continueCourseTime = sysConfigDao.findConfigValue(SysConfigService.ONLINE_CONTINUE_COURSE_TIME);
+				if(StringUtils.isEmpty(continueCourseTime)){
+					continueCourseTime = "10";
+				}
+				List<CourseSchedule> courseSchedules = new ArrayList<>();
+				CourseSchedule cs = courseSchedule;
+				while (true){
+					//获取当前课程的所有连堂课列表
+					String courseClassDate = DateUtil.format(cs.getClassDate(), DateUtil.DEFAULT_PATTERN);
+					String courseEndDateTime = DateUtil.format(cs.getEndClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
+					cs = courseScheduleDao.queryContinueCourse(cs,continueCourseTime,courseClassDate + " " + courseEndDateTime);
+					//存在连堂课
+					if(cs != null){
+						courseSchedules.add(cs);
+					}else {
+						break;
+					}
+				}
+				if(courseSchedules.size() > 0){
+					//获取总上课时长
+					int totalMinutes = DateUtil.minutesBetween(classStartDateTime, date);
+					//减去第一节课时长
+					int firstMinutes = courseScheduleDao.getSingleClassMinutes(courseScheduleId.longValue());
+					totalMinutes -= firstMinutes;
+					if(totalMinutes > 0){
+						String courseClassDate;
+						String courseStartDateTime;
+						String courseEndDateTime;
+						for (CourseSchedule e:courseSchedules) {
+							//获取当前课程的单节课时长
+							int signClassMinutes = courseScheduleDao.getSingleClassMinutes(e.getId());
+							totalMinutes -= signClassMinutes;
+							if(totalMinutes >= 0){
+								//补充签到签退时间
+								courseClassDate = DateUtil.format(e.getClassDate(), DateUtil.DEFAULT_PATTERN);
+								courseStartDateTime = DateUtil.format(e.getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
+								courseEndDateTime = DateUtil.format(e.getEndClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
+								Date startDateTime = DateUtil.stringToDate(courseClassDate + " " + courseStartDateTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
+								Date endDateTime = DateUtil.stringToDate(courseClassDate + " " + courseEndDateTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
+								StudentAttendance byStatusAndCourseScheduleId = studentAttendanceDao.findByStatusAndCourseScheduleId(userId, e.getId().intValue());
+								if(byStatusAndCourseScheduleId != null){
+									byStatusAndCourseScheduleId.setSignOutTime(date);
+									byStatusAndCourseScheduleId.setStatus(statusEnum);
+									byStatusAndCourseScheduleId.setUpdateTime(date);
+									studentAttendanceDao.update(byStatusAndCourseScheduleId);
+								}else {
+									byStatusAndCourseScheduleId.setSignOutTime(endDateTime);
+									byStatusAndCourseScheduleId.setStatus(statusEnum);
+									byStatusAndCourseScheduleId.setSignInTime(startDateTime);
+									byStatusAndCourseScheduleId.setUpdateTime(date);
+									byStatusAndCourseScheduleId.setUserId(userId);
+									byStatusAndCourseScheduleId.setTeacherId(courseSchedule.getActualTeacherId());
+									byStatusAndCourseScheduleId.setClassGroupId(classGroup.getId());
+									byStatusAndCourseScheduleId.setCourseScheduleId(courseScheduleId.longValue());
+									byStatusAndCourseScheduleId.setCurrentClassTimes(classGroup.getCurrentClassTimes() + 1);
+									studentAttendanceDao.insert(byStatusAndCourseScheduleId);
+								}
+							}else {
+								break;
+							}
+						}
+					}
+				}
+			}else {
+				studentAttendance.setStatus(statusEnum);
+				studentAttendance.setSignOutTime(date);
+			}
 		}
 		studentAttendanceDao.update(studentAttendance);
 	}
@@ -507,4 +579,78 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
 		pageInfo.setRows(dataList);
 		return pageInfo;
 	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void repairStudentAttendance(Integer month) {
+		//获取所有有老师考勤的课程记录,正常签退,当月线上课,有学员签到记录
+		List<CourseSchedule> courseScheduleList = courseScheduleDao.queryScheduleByAttendance(month);
+		//是否是连堂课
+		String continueCourseTime = sysConfigDao.findConfigValue(SysConfigService.ONLINE_CONTINUE_COURSE_TIME);
+		if(StringUtils.isEmpty(continueCourseTime)){
+			continueCourseTime = "10";
+		}
+		Date date = new Date();
+		for (CourseSchedule courseSchedule : courseScheduleList) {
+			List<CourseSchedule> courseSchedules = new ArrayList<>();
+			CourseSchedule cs = courseSchedule;
+			while (true){
+				//获取当前课程的所有连堂课列表
+				String courseClassDate = DateUtil.format(cs.getClassDate(), DateUtil.DEFAULT_PATTERN);
+				String courseEndDateTime = DateUtil.format(cs.getEndClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
+				cs = courseScheduleDao.queryRepairContinueCourse(cs,continueCourseTime,courseClassDate + " " + courseEndDateTime);
+				//存在连堂课
+				if(cs != null){
+					courseSchedules.add(cs);
+				}else {
+					break;
+				}
+			}
+			//只会修复签到的学员考勤
+			List<BasicUserDto> students = courseScheduleStudentPaymentDao.findStudents(courseSchedule.getId());
+			if(courseSchedules.size() > 0) {
+				//获取当前课程老师总上课时长
+				int totalMinutes = teacherAttendanceDao.getTotalMinutes(courseSchedule.getId(),courseSchedule.getActualTeacherId());
+				int firstMinutes = courseScheduleDao.getSingleClassMinutes(courseSchedule.getId());
+				totalMinutes -= firstMinutes;
+				if (totalMinutes > 0) {
+					String courseClassDate;
+					String courseStartDateTime;
+					String courseEndDateTime;
+					for (CourseSchedule e:courseSchedules) {
+						//获取当前课程的单节课时长
+						int signClassMinutes = courseScheduleDao.getSingleClassMinutes(e.getId());
+						totalMinutes -= signClassMinutes;
+						if (totalMinutes >= 0) {
+							//补充签到签退时间
+							courseClassDate = DateUtil.format(e.getClassDate(), DateUtil.DEFAULT_PATTERN);
+							courseStartDateTime = DateUtil.format(e.getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
+							courseEndDateTime = DateUtil.format(e.getEndClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
+							Date startDateTime = DateUtil.stringToDate(courseClassDate + " " + courseStartDateTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
+							Date endDateTime = DateUtil.stringToDate(courseClassDate + " " + courseEndDateTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
+							if(students != null && students.size() > 0){
+								students.forEach(student->{
+									StudentAttendance byStatusAndCourseScheduleId = studentAttendanceDao.findByStatusAndCourseScheduleId(student.getUserId(), e.getId().intValue());
+									if(byStatusAndCourseScheduleId == null){
+										byStatusAndCourseScheduleId = new StudentAttendance();
+										byStatusAndCourseScheduleId.setSignOutTime(endDateTime);
+										byStatusAndCourseScheduleId.setStatus(StudentAttendanceStatusEnum.NORMAL);
+										byStatusAndCourseScheduleId.setSignInTime(startDateTime);
+										byStatusAndCourseScheduleId.setUpdateTime(date);
+										byStatusAndCourseScheduleId.setUserId(student.getUserId());
+										byStatusAndCourseScheduleId.setTeacherId(e.getActualTeacherId());
+										byStatusAndCourseScheduleId.setClassGroupId(e.getClassGroupId());
+										byStatusAndCourseScheduleId.setMusicGroupId(e.getMusicGroupId());
+										byStatusAndCourseScheduleId.setGroupType(e.getGroupType());
+										byStatusAndCourseScheduleId.setCourseScheduleId(e.getId());
+										studentAttendanceDao.insert(byStatusAndCourseScheduleId);
+									}
+								});
+							}
+						}
+					}
+				}
+			}
+		}
+	}
 }

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysTenantAccountServiceImpl.java

@@ -45,6 +45,9 @@ public class SysTenantAccountServiceImpl extends BaseServiceImpl<Integer, SysTen
 			tenantAccount.setUserId(userId);
 			tenantAccount.setCreateTime(date);
 			tenantAccount.setUpdateTime(date);
+			tenantAccount.setStatus(AccountStatus.NORMAL);
+			tenantAccount.setAvailableMinutes(0);
+			tenantAccount.setFrozenMinutes(0);
 			sysTenantAccountDao.insert(tenantAccount);
 		}
 

+ 20 - 0
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -2539,6 +2539,17 @@
           AND ta.sign_out_time_ IS NULL
         LIMIT 1
     </select>
+    <select id="queryRepairContinueCourse" resultMap="CourseSchedule">
+        SELECT cs.*
+        FROM course_schedule cs
+                 LEFT JOIN teacher_attendance ta ON cs.id_ = ta.course_schedule_id_
+        WHERE (UNIX_TIMESTAMP(CONCAT(cs.class_date_, ' ', cs.start_class_time_)) - UNIX_TIMESTAMP(#{endDateTime})) >= 0
+          AND (UNIX_TIMESTAMP(CONCAT(cs.class_date_, ' ', cs.start_class_time_)) - UNIX_TIMESTAMP(#{endDateTime})) &lt;=
+              60 * #{continueCourseTime}
+          AND cs.teacher_id_ = #{courseSchedule.teacherId}
+          AND cs.class_group_id_ = #{courseSchedule.classGroupId}
+        LIMIT 1
+    </select>
     <select id="getSingleClassMinutes" resultType="java.lang.Integer">
         SELECT FLOOR((UNIX_TIMESTAMP(CONCAT(cs.class_date_, ' ', cs.end_class_time_)) -
                       UNIX_TIMESTAMP(CONCAT(cs.class_date_, ' ', cs.start_class_time_))) / 60)
@@ -2789,6 +2800,15 @@
         SELECT * FROM course_schedule cs
         WHERE cs.music_group_id_ = #{groupId} AND cs.group_type_ = #{groupType} AND cs.del_flag_ = 0
     </select>
+    <select id="queryScheduleByAttendance" resultMap="CourseSchedule">
+        SELECT cs.* FROM teacher_attendance ta
+        LEFT JOIN course_schedule cs ON ta.course_schedule_id_ = cs.id_
+        LEFT JOIN student_attendance sa ON ta.course_schedule_id_ = sa.course_schedule_id_
+        WHERE ta.sign_out_status_ = 1 AND ta.sign_in_time_ IS NOT NULL
+        AND MONTH(ta.sign_in_time_) = #{month} AND cs.teach_mode_ = 'ONLINE' AND ta.teacher_id_ = cs.actual_teacher_id_
+        GROUP BY ta.course_schedule_id_
+        HAVING COUNT(sa.id_) > 0
+    </select>
 
     <update id="updateCourseNameByGroup">
         UPDATE course_schedule SET name_=#{name} WHERE group_type_=#{groupType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler} AND music_group_id_ = #{groupId};

+ 5 - 0
mec-biz/src/main/resources/config/mybatis/StudentAttendanceMapper.xml

@@ -59,6 +59,11 @@
           #{studentAttendance.signInTime},#{studentAttendance.signOutTime})
       </foreach>
     </insert>
+    <insert id="cuntinueCourseSign">
+        INSERT INTO student_attendance (group_type_, music_group_id_, class_group_id_, course_schedule_id_,
+        user_id_, teacher_id_, status_, create_time_,update_time_, remark_ ,current_class_times_,sign_in_time_,sign_out_time_)
+        VALUES()
+    </insert>
 
     <!-- 根据主键查询一条记录 -->
     <update id="update" parameterType="com.ym.mec.biz.dal.entity.StudentAttendance">

+ 5 - 0
mec-biz/src/main/resources/config/mybatis/TeacherAttendanceMapper.xml

@@ -345,6 +345,11 @@
         WHERE ta.course_schedule_id_ = #{courseScheduleId}
         LIMIT 1
     </select>
+    <select id="getTotalMinutes" resultType="java.lang.Integer">
+        SELECT ROUND((UNIX_TIMESTAMP(CONCAT(ta.sign_out_time_)) - UNIX_TIMESTAMP(ta.sign_in_time_)) / 60)
+        FROM teacher_attendance ta
+        WHERE ta.course_schedule_id_ = #{courseId} AND ta.teacher_id_ = #{teacherId};
+    </select>
 
     <update id="updateViPSignOutStatus" parameterType="string">
     	UPDATE teacher_attendance SET sign_out_status_ = 1,sign_out_time_= now()

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

@@ -59,7 +59,8 @@
     <select id="get" resultMap="Teacher">
         SELECT t.id_,t.organ_id_ teacher_organ_id_,t.job_type_,t.job_nature_,t.is_probation_period_,t.education_background_,t.graduate_school_,t.graduate_school_,
         t.technical_titles_,t.work_unit_,t.subject_id_,t.entry_date_,t.certificate_type_,t.certificate_num_,t.flow_organ_range_,t.update_time_,
-        t.create_time_,t.introduction_,t.demission_date_,t.is_support_course_schedule_rewards_rules_,t.is_support_extra_practice_lesson_,t.lecture_num_,t.idcard_front_img_,t.idcard_back_img_,t.idcard_hand_img_,
+        t.create_time_,t.introduction_,t.demission_date_,t.is_support_course_schedule_rewards_rules_,t.is_support_extra_practice_lesson_,
+        t.lecture_num_,t.idcard_front_img_,t.idcard_back_img_,t.idcard_hand_img_,
         su.real_name_,su.id_card_no_,su.password_,su.salt_,su.phone_,su.avatar_,
         su.lock_flag_,su.del_flag_,su.wx_openid_,su.qq_openid_,su.user_type_,
         su.gender_,su.nation_,su.birthdate_,su.email_,su.im_token_,su.username_,su.organ_id_

+ 5 - 0
mec-common/common-core/pom.xml

@@ -61,5 +61,10 @@
 			<version>2.2.1.RELEASE</version>
 		</dependency>
 
+		<dependency>
+			<groupId>com.vdurmont</groupId>
+			<artifactId>emoji-java</artifactId>
+		</dependency>
+
 	</dependencies>
 </project>

+ 14 - 0
mec-common/common-core/src/main/java/com/ym/mec/common/config/LocalFastJsonHttpMessageConverter.java

@@ -2,6 +2,7 @@ package com.ym.mec.common.config;
 
 import java.io.IOException;
 import java.io.OutputStream;
+import java.lang.reflect.Type;
 import java.math.BigDecimal;
 import java.util.Date;
 
@@ -11,9 +12,12 @@ import org.springframework.http.HttpOutputMessage;
 import org.springframework.http.converter.HttpMessageNotReadableException;
 import org.springframework.http.converter.HttpMessageNotWritableException;
 
+import com.alibaba.fastjson.serializer.JSONSerializer;
+import com.alibaba.fastjson.serializer.ObjectSerializer;
 import com.alibaba.fastjson.serializer.SimpleDateFormatSerializer;
 import com.alibaba.fastjson.serializer.ValueFilter;
 import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
+import com.vdurmont.emoji.EmojiParser;
 import com.ym.mec.common.enums.BaseEnum;
 import com.ym.mec.util.json.JsonUtil;
 
@@ -31,12 +35,22 @@ public class LocalFastJsonHttpMessageConverter extends FastJsonHttpMessageConver
 
 		OutputStream out = outputMessage.getBody();
 		JsonUtil.getConfig().put(Date.class, new SimpleDateFormatSerializer(FORMAT));
+		JsonUtil.getConfig().put(String.class, new EmojiSerializer());
 		String text = JsonUtil.toJSONString(obj, EnumFilter.instance, getFeatures());
 		byte[] bytes = text.getBytes(getCharset());
 		out.write(bytes);
 	}
 }
 
+class EmojiSerializer implements ObjectSerializer{
+
+	@Override
+	public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {
+		serializer.write(EmojiParser.parseToUnicode(object.toString()));
+	}
+	
+}
+
 class EnumFilter implements ValueFilter {
 
 	public static EnumFilter instance = new EnumFilter();

+ 52 - 0
mec-common/common-core/src/main/java/com/ym/mec/common/filters/EmojiEncodingFilter.java

@@ -0,0 +1,52 @@
+package com.ym.mec.common.filters;
+
+import java.io.IOException;
+
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.annotation.WebFilter;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletRequestWrapper;
+
+import org.springframework.core.annotation.Order;
+
+import com.vdurmont.emoji.EmojiParser;
+
+@Order(1)
+//执行的顺序,值越小,越先执行
+@WebFilter(urlPatterns = "/*")
+public class EmojiEncodingFilter  implements Filter {
+
+	@Override
+	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
+		request = new HttpServletRequestWrapper((HttpServletRequest) request) {
+
+            @Override
+            public String getParameter(String name) {
+                // 参数名
+                // 返回值之前 先进行 Emoji 转化
+                return EmojiParser.parseToAliases(super.getParameter(name));
+            }
+
+            @Override
+            public String[] getParameterValues(String name) {
+                // 参数值
+                // 返回值之前 先进行 Emoji 转化
+                String[] values = super.getParameterValues(name);
+                if (values != null) {
+                    for (int i = 0; i < values.length; i++) {
+                        values[i] = EmojiParser.parseToAliases(values[i]);
+                    }
+                }
+                return values;
+            }
+
+        };
+
+        chain.doFilter(request, response);
+	}
+
+}

+ 0 - 1
mec-common/common-core/src/main/java/com/ym/mec/common/service/impl/RedisIdGeneratorService.java

@@ -1,7 +1,6 @@
 package com.ym.mec.common.service.impl;
 
 import com.google.common.base.Strings;
-import com.timevale.tgtext.text.au;
 import com.ym.mec.common.redis.service.RedisCache;
 import com.ym.mec.common.service.IdGeneratorService;
 

+ 15 - 1
mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

@@ -32,6 +32,7 @@ import com.ym.utils.IdentifierUtils;
 import com.ym.whiteboard.WhiteBoardHelper;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -87,6 +88,9 @@ public class RoomServiceImpl implements RoomService {
     @Autowired
     private SysUserFeignService sysUserFeignService;
 
+    @Value("${auth.sysconfig.tenantId}")
+    private Integer lesseeOrganId;
+
     @Transactional(rollbackFor = Exception.class)
     @Override
     public RoomResult joinRoom(String userName, String roomId, boolean isAudience, boolean isDisableCamera) throws ApiException, Exception {
@@ -101,13 +105,23 @@ public class RoomServiceImpl implements RoomService {
         try {
             if(teacher != null && teacher.getId().equals(courseSchedule.getActualTeacherId())){
                 teacherAttendanceService.addTeacherAttendanceRecord(Integer.parseInt(roomId),courseSchedule.getActualTeacherId(), SignStatusEnum.SIGN_IN,true);
+                if(teacher.getTeacherOrganId() == lesseeOrganId){
+                    roomId = "I" + roomId;
+                }else {
+                    roomId = "S" + roomId;
+                }
             }else {
                 studentAttendanceService.addStudentAttendanceRecord(Integer.parseInt(roomId),Integer.parseInt(userId), StudentAttendanceStatusEnum.NORMAL,SignStatusEnum.SIGN_IN);
+                if(teacher.getOrganId() == lesseeOrganId){
+                    roomId = "I" + roomId;
+                }else {
+                    roomId = "S" + roomId;
+                }
             }
         }catch (Exception e){
             e.printStackTrace();
         }
-        roomId = "DAYA" + roomId;
+//        roomId = "DAYA" + roomId;
         String display = "";
         Date curTime = DateTimeUtils.currentUTC();
         List<Room> roomList = roomDao.findByRid(roomId);

+ 0 - 5
mec-task/pom.xml

@@ -26,11 +26,6 @@
 		</dependency>
 		
 		<dependency>
-			<groupId>com.ym</groupId>
-			<artifactId>common-core</artifactId>
-		</dependency>
-
-		<dependency>
 			<groupId>org.quartz-scheduler</groupId>
 			<artifactId>quartz</artifactId>
 		</dependency>

+ 3 - 0
mec-web/src/main/java/com/ym/mec/web/controller/APIController.java

@@ -1,5 +1,6 @@
 package com.ym.mec.web.controller;
 
+import com.ym.mec.common.exception.BizException;
 import io.swagger.annotations.Api;
 
 import org.springframework.beans.factory.annotation.Autowired;
@@ -14,6 +15,8 @@ import com.ym.mec.biz.dal.entity.Teacher;
 import com.ym.mec.biz.service.PracticeLessonApplyService;
 import com.ym.mec.common.controller.BaseController;
 
+import javax.swing.plaf.basic.BasicIconFactory;
+
 @RequestMapping("api")
 @Api(tags = "对外接口")
 @RestController

+ 10 - 0
mec-web/src/main/java/com/ym/mec/web/controller/student/StudentAttendanceController.java

@@ -6,6 +6,7 @@ import com.ym.mec.biz.dal.page.StudentAttendanceQueryInfo;
 import com.ym.mec.biz.service.ClassGroupService;
 import com.ym.mec.biz.service.StudentAttendanceService;
 import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.QueryInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -23,6 +24,15 @@ public class StudentAttendanceController extends BaseController {
     @Autowired
     private ClassGroupService classGroupService;
 
+    //修复逻辑:是连堂课,有签退记录,某个月,遍历有学员签到记录的每节课
+    @GetMapping("/fuckYou")
+    public void fuckYou(Integer month) {
+        if(month == null){
+            throw new BizException("参数校验失败");
+        }
+        studentAttendanceService.repairStudentAttendance(month);
+    }
+
     @ApiOperation(value = "点名完成")
     @PostMapping("/addStudentAttendances")
     public Object addStudentAttendances(@RequestBody StudentAttendanceDto studentAttendanceDto){

+ 6 - 0
pom.xml

@@ -183,6 +183,12 @@
 				<version>${google.zxing.version}</version>
 			</dependency>
 
+			<dependency>
+				<groupId>com.vdurmont</groupId>
+				<artifactId>emoji-java</artifactId>
+				<version>5.1.1</version>
+			</dependency>
+
 		</dependencies>
 	</dependencyManagement>