Преглед на файлове

Merge branch 'master' of http://git.dayaedu.com/yonge/mec

# Conflicts:
#	mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml
zouxuan преди 5 години
родител
ревизия
7a0dc3b082

+ 3 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java

@@ -621,11 +621,12 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
     List<StudentAttendance> queryUnsignedStudentList();
 
     /**
-     * @param classGroupId: 班级编号
+     * @param currentCourseDate: 班级编号
      * @return java.lang.Integer
      * @describe 统计已上的课时数
      * @author Joburgess
      * @date 2019/11/19
      */
-    Integer countCurrentTimes(Integer classGroupId);
+    Integer countCurrentTimes(@Param("classGroupId") Integer classGroupId,
+                              @Param("currentCourseDate") Date currentCourseDate);
 }

+ 3 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/StudentCourseHomeworkReplyService.java

@@ -5,4 +5,6 @@ import com.ym.mec.common.service.BaseService;
 
 public interface StudentCourseHomeworkReplyService extends BaseService<Long, StudentCourseHomeworkReply> {
 
-}
+    void insertTeacherReply(StudentCourseHomeworkReply bean);
+
+}

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

@@ -43,10 +43,20 @@ public class StudentCourseHomeworkReplyServiceImpl extends BaseServiceImpl<Long,
 		if(Objects.isNull(studentCourseHomework)){
 			throw new BizException("请指定需要回复的作业");
 		}
+		return super.insert(bean);
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void insertTeacherReply(StudentCourseHomeworkReply bean) {
+		StudentCourseHomework studentCourseHomework = studentCourseHomeworkService.get(bean.getStudentCourseHomeworkId());
+		if(Objects.isNull(studentCourseHomework)){
+			throw new BizException("请指定需要回复的作业");
+		}
 		studentCourseHomeworkService.updateReplyStatus(bean.getUserId(),
 				studentCourseHomework.getCourseHomeworkId(),
 				studentCourseHomework.getUserId());
-		return super.insert(bean);
+		super.insert(bean);
 	}
 
 	@Override
@@ -92,4 +102,4 @@ public class StudentCourseHomeworkReplyServiceImpl extends BaseServiceImpl<Long,
 		return studentCourseHomeworkCommentDto;
 	}
 
-}
+}

+ 14 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java

@@ -12,10 +12,12 @@ 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.page.PageInfo;
+import com.ym.mec.common.redis.service.RedisCache;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
+
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -52,6 +54,9 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 	@Autowired
 	private SubjectDao subjectDao;
 
+	@Autowired
+	private RedisCache<String,Object> redisCache;
+
 	@Override
 	public BaseDAO<Long, TeacherAttendance> getDAO() {
 		return teacherAttendanceDao;
@@ -101,7 +106,6 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 		if(courseSchedule == null){
 			throw new BizException("课程信息不存在");
 		}
-		teacherAttendance.setCurrentClassTimes(courseScheduleDao.countCurrentTimes(teacherAttendance.getClassGroupId()) + 1);
 		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);
@@ -112,6 +116,7 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 		Date add20Minutes = DateUtil.addMinutes(classStartDateTime, advanceSignMinutes * -1);
 		Date add60Minutes = DateUtil.addMinutes(classStartDateTime, -60);
 		if(teacherAttendance.getSignInTime() == null && teacherSignOutDto.getTeacherAttendanceInfo().getStatus().equals(SignStatusEnum.SIGN_IN.getCode())){
+			teacherAttendance.setCurrentClassTimes(courseScheduleDao.countCurrentTimes(teacherAttendance.getClassGroupId(),courseSchedule.getStartClassTime()) + 1);
 
 			if (currentCourseDetail.getEndClassTime().before(date)){
 				throw new BizException("该课程已结束,不能进行签到!");
@@ -149,7 +154,7 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 		}else if(teacherAttendance.getSignOutTime() == null && teacherSignOutDto.getTeacherAttendanceInfo().getStatus().equals(SignStatusEnum.SIGN_OUT.getCode())){
 			//正常签退范围(结束后1小时内)
 			teacherAttendance.setSignOutTime(date);
-			if(DateUtil.minutesBetween(classEndDateTime,date) > 0 && DateUtil.minutesBetween(date,classEndDateAdd60Minutes) > 0){
+			if(DateUtil.minutesBetween(classEndDateTime,date) >= 0 && DateUtil.minutesBetween(date,classEndDateAdd60Minutes) >= 0){
 				teacherAttendance.setSignOutStatus(YesOrNoEnum.YES);
 				result.put("signInStatus",0);
 			}else if(DateUtil.minutesBetween(classEndDateAdd60Minutes,date) > 0){
@@ -321,8 +326,14 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 			Map<Integer, String> receivers = new HashMap<Integer, String>();
 			Integer userId = (Integer) mapper.getKey();
 			receivers.put(userId, userId + "");
+			
+			String key = "SignOut_" + userId + "_" + mapper.getCourseScheduleId();
 
-			sysMessageService.batchSendMessage(MessageSender.JIGUANG, MessageTypeEnum.TEACHER_PUSH_SIGN_OUT_MESSAGE, receivers, null, 0,"5?courseScheduleId=" + mapper.getCourseScheduleId(), mapper.getValue());
+			if (!redisCache.exists(key)) {
+				sysMessageService.batchSendMessage(MessageSender.JIGUANG, MessageTypeEnum.TEACHER_PUSH_SIGN_OUT_MESSAGE, receivers, null, 0,
+						"5?courseScheduleId=" + mapper.getCourseScheduleId(), mapper.getValue());
+				redisCache.put(key, 1, (int) DateUtil.getTomorrowZeroSeconds());
+			}
 		}
 		return true;
 	}

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

@@ -909,19 +909,13 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			throw new BizException("该课程已结束报名!");
 		}
 
-		StudentPaymentOrder successOrder = studentPaymentOrderDao.findByStudentVipGroup(vipGroupBuyParams.getVipGroupId(),
+		StudentPaymentOrder oldOrder = studentPaymentOrderDao.findByStudentVipGroup(vipGroupBuyParams.getVipGroupId(),
 				user.getId(),
-				DealStatusEnum.SUCCESS.getMsg());
+				null);
 
-		if(Objects.nonNull(successOrder)){
+		if(Objects.nonNull(oldOrder)&&oldOrder.getStatus().equals(DealStatusEnum.SUCCESS)){
 			throw new BizException("您已购买过此课程");
-		}
-
-		StudentPaymentOrder byStudentVipGroup = studentPaymentOrderDao.findByStudentVipGroup(vipGroupBuyParams.getVipGroupId(),
-				user.getId(),
-				DealStatusEnum.ING.getCode());
-
-		if(Objects.nonNull(byStudentVipGroup)){
+		}else if(Objects.nonNull(oldOrder)&&oldOrder.getStatus().equals(DealStatusEnum.ING)){
 			throw new BizException("您有处理中的订单,请等待处理结果");
 		}else{
 			if(classGroup.getStudentNum()>=classGroup.getExpectStudentNum()){

+ 3 - 3
mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml

@@ -164,7 +164,7 @@
     <select id="findAllMixClassGroup" resultMap="ClassGroup">
         SELECT * FROM
         class_group cg
-        WHERE cg.type_="MIX" AND cg.music_group_id_=#{musicGroupId} AND del_flag_='0'
+        WHERE cg.type_='MIX' AND cg.music_group_id_=#{musicGroupId} AND group_type_='MUSIC' AND del_flag_='0'
     </select>
     <select id="findMixClassChildClassGroup" resultMap="ClassGroup">
         SELECT * FROM class_group WHERE id_ IN
@@ -179,7 +179,7 @@
         subject_name_
         FROM
         class_group cg
-        WHERE cg.music_group_id_=#{musicGroupId} AND cg.type_='NORMAL' AND cg.del_flag_='0'
+        WHERE cg.music_group_id_=#{musicGroupId} AND group_type_='MUSIC' AND cg.type_='NORMAL' AND cg.del_flag_='0'
     </select>
 
     <!-- 查询合奏班包含子班名字信息 -->
@@ -351,7 +351,7 @@
     </select>
     <select id="findNoClassSubjects" resultMap="ClassGroup">
         SELECT cg.* FROM class_group cg LEFT JOIN class_group_relation cgr ON cgr.sub_class_group_id_=cg.id_
-        WHERE cg.music_group_id_=#{musicGroupId} AND cg.type_ = 'NORMAL' AND cg.del_flag_ = '0' AND cgr.id_ IS NULL
+        WHERE cg.music_group_id_=#{musicGroupId} AND cg.type_ = 'NORMAL' AND cg.group_type_='MUSIC' AND cg.del_flag_ = '0' AND cgr.id_ IS NULL
     </select>
 
     <select id="countTeacherNum" resultType="java.lang.Integer">

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

@@ -58,7 +58,7 @@
 		DELETE FROM class_group_student_mapper WHERE id_ = #{id} 
 	</delete>
     <delete id="deleteByClassId">
-        UPDATE class_group_student_mapper SET status_='QUIT' WHERE class_group_id_ = #{classGroupId} AND status_='NORMAL'
+        UPDATE class_group_student_mapper SET status_='QUIT' WHERE class_group_id_ = #{classGroupId} AND status_='NORMAL' AND group_type_='MUSIC'
     </delete>
 
     <!-- 分页查询 -->

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

@@ -188,7 +188,7 @@
         FROM
         course_schedule cs
         INNER JOIN class_group cg ON cs.class_group_id_=cg.id_
-        WHERE cg.music_group_id_=#{musicGroupID}
+        WHERE cg.music_group_id_=#{musicGroupID} AND cg.group_type_='MUSIC'
     </delete>
 
     <delete id="batchDeleteCourseSchedules">
@@ -1418,6 +1418,6 @@
         LIMIT 1
     </select>
     <select id="countCurrentTimes" resultType="int">
-        SELECT COUNT(*) FROM course_schedule WHERE class_group_id_=#{classGroupId} AND CONCAT(class_date_,' ',end_class_time_)&lt;NOW()
+        SELECT COUNT(*) FROM course_schedule WHERE class_group_id_=#{classGroupId} AND CONCAT(class_date_,' ',end_class_time_)&lt;#{currentCourseDate}
     </select>
 </mapper>

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

@@ -250,7 +250,7 @@
 			student_course_homework sch
 			LEFT JOIN sys_user su ON sch.user_id_=su.id_
 			<where>
-				sch.course_homework_id_=#{courseScheduleId}
+				sch.course_schedule_id_=#{courseScheduleId}
 				<if test="userName!=null and userName!=''">
 					AND su.username_ LIKE CONCAT('%',#{userName},'%')
 				</if>

+ 3 - 1
mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml

@@ -200,7 +200,9 @@
           student_payment_order spo
         WHERE spo.user_id_=#{userId}
             AND spo.music_group_id_=#{vipGroupId}
-            AND spo.status_=#{status}
+            <if test="status!=null and status!=''">
+                AND spo.status_=#{status}
+            </if>
             AND spo.type_ = 'SMALL_CLASS_TO_BUY'
     </select>
     <!-- 查询报名订单 -->

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

@@ -318,13 +318,13 @@
 
     <select id="findTeacherByMusicGroup" resultMap="com.ym.mec.biz.dal.dao.MusicGroupDao.BasicUserDto">
         SELECT
-        su.id_ user_id_,
-        su.username_
+            su.id_ user_id_,
+            su.username_
         FROM
-        class_group_teacher_mapper cgtm
-        LEFT JOIN class_group cg ON cg.id_=cgtm.class_group_id_
-        LEFT JOIN sys_user su ON cgtm.user_id_=su.id_
-        WHERE cg.music_group_id_=#{musicGroupId}
+          class_group_teacher_mapper cgtm
+            LEFT JOIN class_group cg ON cg.id_=cgtm.class_group_id_
+            LEFT JOIN sys_user su ON cgtm.user_id_=su.id_
+        WHERE cg.music_group_id_=#{musicGroupId} AND cg.group_type_='MUSIC'
         GROUP BY su.id_
     </select>
     <resultMap id="MusicGroupTeachersDto" type="com.ym.mec.biz.dal.dto.MusicGroupTeachersDto">

+ 1 - 1
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherCourseHomeworkReplyController.java

@@ -37,7 +37,7 @@ public class TeacherCourseHomeworkReplyController extends BaseController {
             return failed(HttpStatus.FORBIDDEN,"请登录");
         }
         studentCourseHomeworkReply.setUserId(user.getId());
-        studentCourseHomeworkReplyService.insert(studentCourseHomeworkReply);
+        studentCourseHomeworkReplyService.insertTeacherReply(studentCourseHomeworkReply);
         return succeed();
     }
 

+ 50 - 36
mec-util/src/main/java/com/ym/mec/util/date/DateUtil.java

@@ -14,7 +14,6 @@ import java.util.*;
  */
 public class DateUtil {
 
-
 	private static final String CHINESE_DATA_FORMAT = "yyyy年MM月dd日 HH:mm:ss";
 
 	public static final String DEFAULT_PATTERN = "yyyy-MM-dd";
@@ -885,14 +884,14 @@ public class DateUtil {
 	 * @param weekNum 周几
 	 * @return java.util.List<java.util.Date>
 	 */
-	public static List<Date> getWeekDays(Date startTime, Date endTime, int weekNum){
+	public static List<Date> getWeekDays(Date startTime, Date endTime, int weekNum) {
 		Calendar calendar = Calendar.getInstance();
-		List<Date> dates=new ArrayList<>();
-		for(Date x = startTime; x.compareTo(endTime) <= 0;){
+		List<Date> dates = new ArrayList<>();
+		for (Date x = startTime; x.compareTo(endTime) <= 0;) {
 			calendar.setTime(x);
 			calendar.add(Calendar.DATE, 1);
 			x = calendar.getTime();
-			if(calendar.get(Calendar.DAY_OF_WEEK) == weekNum){
+			if (calendar.get(Calendar.DAY_OF_WEEK) == weekNum) {
 				dates.add(x);
 			}
 		}
@@ -909,7 +908,7 @@ public class DateUtil {
 	public static Date getWeekMondayWithDate(Date date) {
 		Calendar cal = Calendar.getInstance();
 		try {
-			date=new SimpleDateFormat(DEFAULT_PATTERN).parse(new SimpleDateFormat(DEFAULT_PATTERN).format(date));
+			date = new SimpleDateFormat(DEFAULT_PATTERN).parse(new SimpleDateFormat(DEFAULT_PATTERN).format(date));
 		} catch (ParseException e) {
 			e.printStackTrace();
 		}
@@ -960,14 +959,12 @@ public class DateUtil {
 	 * @param days: 天数
 	 * @return java.util.Date
 	 */
-	public static Date addDays1(Date date,int days) {
+	public static Date addDays1(Date date, int days) {
 		Calendar cal = Calendar.getInstance();
 		cal.setTime(date);
 		cal.add(Calendar.DATE, days);
 		try {
-			return new SimpleDateFormat(DateUtil.DEFAULT_PATTERN)
-					.parse(new SimpleDateFormat(DateUtil.DEFAULT_PATTERN)
-							.format(cal.getTime()));
+			return new SimpleDateFormat(DateUtil.DEFAULT_PATTERN).parse(new SimpleDateFormat(DateUtil.DEFAULT_PATTERN).format(cal.getTime()));
 		} catch (ParseException e) {
 			return cal.getTime();
 		}
@@ -978,7 +975,7 @@ public class DateUtil {
 	 * @param date
 	 * @return
 	 */
-	public static String date2ChineseDate(Date date){
+	public static String date2ChineseDate(Date date) {
 		return new SimpleDateFormat(CHINESE_DATA_FORMAT).format(date);
 	}
 
@@ -989,13 +986,13 @@ public class DateUtil {
 	 * @param dateZones:
 	 * @return boolean
 	 */
-	public static boolean checkDateZoneOverlap(List<DateZone> dateZones){
+	public static boolean checkDateZoneOverlap(List<DateZone> dateZones) {
 		dateZones.sort(Comparator.comparing(DateZone::getStartTime));
-		if(dateZones.size()<=1){
+		if (dateZones.size() <= 1) {
 			return false;
-		}else{
-			for (int i=0;i<dateZones.size()-1;i++){
-				if(dateZones.get(i+1).getStartTime().before(dateZones.get(i).getEndTime())){
+		} else {
+			for (int i = 0; i < dateZones.size() - 1; i++) {
+				if (dateZones.get(i + 1).getStartTime().before(dateZones.get(i).getEndTime())) {
 					return true;
 				}
 			}
@@ -1009,7 +1006,7 @@ public class DateUtil {
 	 * @date 2019/10/27
 	 * @return
 	 */
-	public static class DateZone{
+	public static class DateZone {
 		private Date startTime;
 		private Date endTime;
 
@@ -1050,32 +1047,49 @@ public class DateUtil {
 		calendar.setTime(date);
 		int i = calendar.get(Calendar.DAY_OF_WEEK);
 		switch (i) {
-			case 1:
-				return "星期日";
-			case 2:
-				return "星期一";
-			case 3:
-				return "星期二";
-			case 4:
-				return "星期三";
-			case 5:
-				return "星期四";
-			case 6:
-				return "星期五";
-			case 7:
-				return "星期六";
-			default:
-				return "";
+		case 1:
+			return "星期日";
+		case 2:
+			return "星期一";
+		case 3:
+			return "星期二";
+		case 4:
+			return "星期三";
+		case 5:
+			return "星期四";
+		case 6:
+			return "星期五";
+		case 7:
+			return "星期六";
+		default:
+			return "";
 		}
 	}
 
+	/**
+	 * 获取当前时间到0点的毫秒数
+	 * @return
+	 */
+	public static long getTomorrowZeroSeconds() {
+		long current = System.currentTimeMillis();// 当前时间毫秒数
+		Calendar calendar = Calendar.getInstance();
+		calendar.add(Calendar.DAY_OF_MONTH, 1);
+		calendar.set(Calendar.HOUR_OF_DAY, 0);
+		calendar.set(Calendar.MINUTE, 0);
+		calendar.set(Calendar.SECOND, 0);
+		calendar.set(Calendar.MILLISECOND, 0);
+		long tomorrowzero = calendar.getTimeInMillis();
+		long tomorrowzeroSeconds = (tomorrowzero - current) / 1000;
+		return tomorrowzeroSeconds;
+	}
+
 	public static void main(String[] args) throws ParseException {
-//		DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
+		// DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
 		// DateFormat df1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-//		System.out.println(daysBetween(df.parse("2017-07-20 10:07:42"), df.parse(df.format(new Date()))));
+		// System.out.println(daysBetween(df.parse("2017-07-20 10:07:42"), df.parse(df.format(new Date()))));
 		System.out.println(getWeekMondayWithDate(new Date()));
 		System.out.println(getNextWeekMonday(new Date()));
 		System.out.println(getNextWeekSunday(new Date()));
-        System.out.println(dayEnd(new Date()));
+		System.out.println(dayEnd(new Date()));
 	}
 }