Browse Source

Merge remote-tracking branch 'origin/master'

周箭河 5 years ago
parent
commit
ff17398c19

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherDao.java

@@ -14,6 +14,8 @@ import java.util.Map;
 import java.util.Set;
 
 public interface TeacherDao extends BaseDAO<Integer, Teacher> {
+	
+	Teacher getLocked(Integer id);
 
     /**
      * 根据证件号查询老师

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

@@ -33,6 +33,6 @@ public interface OnlineMusicGroupService {
      * @param teacherId
      * @return
      */
-    Map getTeacherFreeTimes(Integer studentId, Integer teacherId);
+    Map getTeacherFreeTimes(Integer studentId, Integer teacherId, boolean skipHoliday);
 
 }

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

@@ -58,6 +58,9 @@ public class ExtracurricularExercisesServiceImpl extends BaseServiceImpl<Long, E
 		if(StringUtils.isBlank(exercises.getStudentIdList())){
 			throw new BizException("请指定学生");
 		}
+		
+		Teacher teacher = teacherDao.getLocked(exercises.getTeacherId());
+		
 		if(Objects.isNull(exercises.getExpireDate())){
 			LocalDateTime localDateTime=LocalDateTime.now();
 			localDateTime=localDateTime.plusDays(2).withHour(21).withMinute(0).withSecond(0);
@@ -68,7 +71,6 @@ public class ExtracurricularExercisesServiceImpl extends BaseServiceImpl<Long, E
 		exercises.setExpectNum(studentIds.size());
 		extracurricularExercisesDao.insert(exercises);
 		String dateStr = DateUtil.dateToString(exercises.getExpireDate(), "MM月dd日HH点");
-		Teacher teacher = teacherDao.get(exercises.getTeacherId());
 		for (Integer studentId : studentIds) {
 			ExtracurricularExercisesReply studentExtraExercise=new ExtracurricularExercisesReply();
 			studentExtraExercise.setExtracurricularExercisesId(exercises.getId());

+ 12 - 13
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderDetailServiceImpl.java

@@ -60,24 +60,23 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 			throw new BizException("缴费记录不存在");
 		}
 		Date date = new Date();
-		int compare = expectAmount.compareTo(BigDecimal.ZERO);
 		calenderDetails.forEach(e->{
 			if(e.getPaymentStatus() == null || e.getPaymentStatus() != NON_PAYMENT){
 				throw new BizException("修改失败,缴费状态不匹配");
 			}
-			if(expectAmount.intValue() == 0){
+			if(expectAmount.doubleValue() == 0){
 				e.setPaymentStatus(PAID_COMPLETED);
 			}
 			e.setUpdateTime(date);
 			e.setExpectAmount(expectAmount);
 		});
-		//如果是设置为0元
-		MusicGroupPaymentCalender calender = musicGroupPaymentCalenderDao.get(calenderDetails.get(0).getMusicGroupPaymentCalenderId());
-		if(calender.getType() == ONLINE){
-			//剩余网管课可购买次数加一
-			musicGroupStudentFeeDao.remainNetworkClassTimesAdd(ids);
-		}
-		if(expectAmount.intValue() == 0){
+		if(expectAmount.doubleValue() == 0){
+			//如果是设置为0元
+			MusicGroupPaymentCalender calender = musicGroupPaymentCalenderDao.get(calenderDetails.get(0).getMusicGroupPaymentCalenderId());
+			if(calender.getType() == ONLINE){
+				//剩余网管课可购买次数加一
+				musicGroupStudentFeeDao.remainNetworkClassTimesAdd(ids);
+			}
 			//缴费完成
 			musicGroupStudentFeeDao.setPaidCompleted(calenderDetails);
 		}
@@ -163,22 +162,22 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 		}
 		Date date = new Date();
 		MusicGroupStudentFee studentFee = musicGroupStudentFeeDao.findByUser(userId, calender.getMusicGroupId());
-		//修改预计人数
-//		calender.setExpectNum(calender.getExpectNum());
 		calender.setUpdateTime(date);
 		//生成详情
 		MusicGroupPaymentCalenderDetail musicGroupPaymentCalenderDetail = new MusicGroupPaymentCalenderDetail();
 		musicGroupPaymentCalenderDetail.setMusicGroupPaymentCalenderId(calender.getId());
 		musicGroupPaymentCalenderDetail.setCreateTime(date);
 		musicGroupPaymentCalenderDetail.setExpectAmount(studentFee.getCourseFee());
+		studentFee.setUpdateTime(date);
 		if (studentFee.getCourseFee().doubleValue() == 0) {
 			studentFee.setPaymentStatus(PAID_COMPLETED);
-			studentFee.setUpdateTime(date);
 			musicGroupPaymentCalenderDetail.setPaymentStatus(PAID_COMPLETED);
 			if(calender.getType() == ONLINE){
-				musicGroupStudentFeeDao.remainNetworkClassTimesAdd(userLastCalenderDetail.toString());
+				studentFee.setRemainNetworkClassTimes(studentFee.getRemainNetworkClassTimes() + 1);
+//				musicGroupStudentFeeDao.remainNetworkClassTimesAdd(userLastCalenderDetail.getId().toString());
 			}
 		} else {
+			studentFee.setPaymentStatus(NON_PAYMENT);
 			musicGroupPaymentCalenderDetail.setPaymentStatus(MusicGroupStudentFee.PaymentStatus.NON_PAYMENT);
 		}
 		musicGroupPaymentCalenderDetail.setUpdateTime(date);

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

@@ -325,7 +325,7 @@ public class OnlineMusicGroupServiceImpl implements OnlineMusicGroupService {
         if (!CollectionUtils.isEmpty(userCourses)) {
             Map<GroupType, List<CourseSchedule>> courseTypeCourseMap = userCourses.stream().collect(Collectors.groupingBy(CourseSchedule::getGroupType));
 
-            List<CourseSchedule> practiceCourses = courseTypeCourseMap.get(GroupType.MUSIC);
+            List<CourseSchedule> practiceCourses = courseTypeCourseMap.get(GroupType.PRACTICE);
             if (!CollectionUtils.isEmpty(practiceCourses)) {
                 for (CourseSchedule practiceCourse : practiceCourses) {
                     if (!includeTeacherIds.contains(practiceCourse.getTeacherId())) {
@@ -377,7 +377,7 @@ public class OnlineMusicGroupServiceImpl implements OnlineMusicGroupService {
     }
 
     @Override
-    public Map getTeacherFreeTimes(Integer studentId, Integer teacherId){
+    public Map getTeacherFreeTimes(Integer studentId, Integer teacherId, boolean skipHoliday){
         if (Objects.isNull(teacherId)) {
             throw new BizException("请选择教师");
         }
@@ -405,6 +405,15 @@ public class OnlineMusicGroupServiceImpl implements OnlineMusicGroupService {
             checkTeacherLeaveDate = false;
         }
 
+        Set<String> holidayDays = new HashSet<>();
+
+        if (skipHoliday) {
+            SysConfig holidaySetting = sysConfigService.findByParamName(SysConfigService.HOLIDAY_SETTING);
+            if(Objects.nonNull(holidaySetting)&&StringUtils.isNotBlank(holidaySetting.getParanValue())){
+                holidayDays = new HashSet<>(JSON.parseArray(holidaySetting.getParanValue(), String.class));
+            }
+        }
+
         Set<Integer> disableApplyWeekNum = new HashSet<>();
         Set<Integer> disableApplyWeekDay = new HashSet<>();
 
@@ -566,6 +575,9 @@ public class OnlineMusicGroupServiceImpl implements OnlineMusicGroupService {
                 Map<String, List<String>> rt=new HashMap<>();
                 for (Date tempDate : tempDates) {
                     String dateStr = DateUtil.dateToString(tempDate, "yyyy-MM-dd");
+                    if(holidayDays.contains(dateStr)){
+                        continue;
+                    }
                     String timeStr = DateUtil.dateToString(tempDate, "HH:mm:ss");
                     if(!rt.containsKey(dateStr)){
                         rt.put(dateStr, new ArrayList<>());
@@ -696,6 +708,9 @@ public class OnlineMusicGroupServiceImpl implements OnlineMusicGroupService {
             Map<String, List<String>> rt=new HashMap<>();
             for (Date tempDate : tempDates) {
                 String dateStr = DateUtil.dateToString(tempDate, "yyyy-MM-dd");
+                if(holidayDays.contains(dateStr)){
+                    continue;
+                }
                 String timeStr = DateUtil.dateToString(tempDate, "HH:mm:ss");
                 if(!rt.containsKey(dateStr)){
                     rt.put(dateStr, new ArrayList<>());

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

@@ -10,7 +10,7 @@
 		<result column="user_id_" property="userId" />
 		<result column="expect_amount_" property="expectAmount" />
 		<result column="actual_amount_" property="actualAmount" />
-		<result column="payment_status_" property="paymentStatus" />
+		<result column="payment_status_" property="paymentStatus" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
 		<result column="user_status_" property="userStatus" />
 		<result column="music_group_id_" property="musicGroupId" />
 		<result column="pay_time_" property="payTime" />
@@ -46,7 +46,7 @@
 		INSERT INTO music_group_payment_calender_detail
 		(id_,music_group_payment_calender_id_,user_id_,expect_amount_,actual_amount_,payment_status_,
 		user_status_,pay_time_,update_time_,create_time_,open_,start_payment_date_,deadline_payment_date_)
-		VALUES(#{id},#{musicGroupPaymentCalenderId},#{userId},#{expectAmount},#{actualAmount},#{paymentStatus},
+		VALUES(#{id},#{musicGroupPaymentCalenderId},#{userId},#{expectAmount},#{actualAmount},#{paymentStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
 		#{userStatus},#{payTime},#{updateTime},#{createTime},#{open},#{startPaymentDate},#{deadlinePaymentDate})
 	</insert>
 
@@ -57,7 +57,7 @@
 		VALUES
 		<foreach collection="list" item="item" separator=",">
             (#{item.id},#{item.musicGroupPaymentCalenderId},#{item.userId},#{item.expectAmount},
-            #{item.actualAmount},#{item.paymentStatus},#{item.userStatus},#{item.payTime},
+            #{item.actualAmount},#{item.paymentStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{item.userStatus},#{item.payTime},
             #{item.updateTime},#{item.createTime},#{item.open},#{item.startPaymentDate},#{item.deadlinePaymentDate})
         </foreach>
     </insert>
@@ -83,7 +83,7 @@
 				user_status_ = #{userStatus},
 			</if>
 			<if test="paymentStatus != null">
-				payment_status_ = #{paymentStatus},
+				payment_status_ = #{paymentStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
 			</if>
 			<if test="expectAmount != null">
 				expect_amount_ = #{expectAmount},
@@ -123,7 +123,7 @@
 					user_status_ = #{item.userStatus},
 				</if>
 				<if test="item.paymentStatus != null">
-					payment_status_ = #{item.paymentStatus},
+					payment_status_ = #{item.paymentStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
 				</if>
 				<if test="item.expectAmount != null">
 					expect_amount_ = #{item.expectAmount},
@@ -211,7 +211,10 @@
 		</where>
 	</select>
 	<select id="queryListByIds" resultMap="MusicGroupPaymentCalenderDetail">
-		SELECT * FROM music_group_payment_calender_detail WHERE FIND_IN_SET(id_,#{ids})
+		SELECT mgpcd.*,mgpc.music_group_id_ FROM music_group_payment_calender_detail mgpcd
+		LEFT JOIN music_group_payment_calender mgpc ON mgpc.id_ = mgpcd.music_group_payment_calender_id_
+		WHERE FIND_IN_SET(mgpcd.id_,#{ids})
+		GROUP BY mgpcd.id_
 	</select>
 	
 	<select id="queryByCalenderId" resultMap="MusicGroupPaymentCalenderDetail">
@@ -224,6 +227,7 @@
 		WHERE mgstf.music_group_id_=#{musicGroupId}
 		AND mgstf.subject_id_=#{subjectId}
 		AND mgstf.remain_network_class_times_>0
+		ORDER BY su.id_
 	</select>
 	<select id="sumActualAmount" resultType="java.math.BigDecimal">
 		SELECT SUM(mgpcd.actual_amount_) FROM music_group_payment_calender_detail mgpcd

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

@@ -611,6 +611,6 @@
     <select id="findMusicGroupAllStudentSubjects" resultMap="com.ym.mec.biz.dal.dao.SubjectDao.Subject">
         SELECT DISTINCT s.* FROM student_registration sr
         LEFT JOIN subject s ON sr.actual_subject_id_=s.id_
-        WHERE sr.music_group_id_=#{musicGroupId};
+        WHERE sr.music_group_id_=#{musicGroupId} ORDER BY s.id_
     </select>
 </mapper>

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

@@ -76,6 +76,10 @@
         FROM teacher
         ORDER BY id_
     </select>
+    
+    <select id="getLocked" resultMap="Teacher">
+        SELECT * FROM teacher where id_ = #{id} for update
+    </select>
 
     <!-- 向数据库增加一条记录 -->
     <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.Teacher" useGeneratedKeys="true" keyColumn="id"

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

@@ -912,7 +912,7 @@
     <select id="queryUserVipNames" resultType="java.util.Map">
         SELECT cgsm.user_id_ 'key',GROUP_CONCAT(vg.name_)'value' FROM class_group_student_mapper cgsm
         LEFT JOIN vip_group vg ON cgsm.music_group_id_ = vg.id_
-        WHERE vg.group_status_ IN (2,4,6) AND cgsm.user_id_ IN
+        WHERE vg.group_status_ IN (2,4,6) AND cgsm.group_type_='VIP' AND cgsm.user_id_ IN
         <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
             #{userId}
         </foreach>
@@ -925,7 +925,7 @@
         WHEN cgsm.status_ = 'QUIT_SCHOOL' THEN '休学' END) 'value'
         FROM class_group_student_mapper cgsm
         LEFT JOIN vip_group vg ON cgsm.music_group_id_ = vg.id_
-        WHERE vg.group_status_ IN (2,4,6) AND cgsm.user_id_ IN
+        WHERE vg.group_status_ IN (2,4,6) AND cgsm.group_type_='VIP' AND cgsm.user_id_ IN
         <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
             #{userId}
         </foreach>

+ 2 - 2
mec-web/src/main/java/com/ym/mec/web/controller/education/EduOnlineMusicGroupController.java

@@ -96,7 +96,7 @@ public class EduOnlineMusicGroupController extends BaseController {
     @ApiOperation(value = "获取教师空闲时间")
     @GetMapping("/getTeacherFreeTimes")
 //    @PreAuthorize("@pcs.hasPermissions('eduOnlineMusic/getTeacherFreeTimes')")
-    public HttpResponseResult getTeacherFreeTimes(Integer studentId, Integer teacherId) {
+    public HttpResponseResult getTeacherFreeTimes(Integer studentId, Integer teacherId, boolean skipHoliday) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null) {
             return failed(HttpStatus.FORBIDDEN, "请登录");
@@ -104,7 +104,7 @@ public class EduOnlineMusicGroupController extends BaseController {
         if(Objects.isNull(studentId)){
             throw new BizException("请指定学生");
         }
-        return succeed(onlineMusicGroupService.getTeacherFreeTimes(studentId,teacherId));
+        return succeed(onlineMusicGroupService.getTeacherFreeTimes(studentId,teacherId,skipHoliday));
     }
 
     @ApiOperation(value = "检测学生是否存在进行中的乐团网管课")