yonge 5 лет назад
Родитель
Сommit
6a59c13731

+ 14 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/VipGroupDao.java

@@ -280,4 +280,18 @@ public interface VipGroupDao extends BaseDAO<Long, VipGroup> {
 	 * @return
 	 */
 	int countStudentVipGroups(Map<String, Object> params);
+	
+	/**
+	 * 根编号列表查询对象
+	 * @param idList
+	 * @return
+	 */
+	List<VipGroup> queryByIds(String idList);
+
+	/**
+	 * 批量更新
+	 * @param vipGroupList
+	 * @return
+	 */
+	int batchUpdate(List<VipGroup> vipGroupList);
 }

+ 26 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -978,6 +978,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public boolean updateCourseScheduleToOverStatus() {
 
 		Date date = new Date();
@@ -985,6 +986,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		List<StudentAttendance> studentAttendanceList = courseScheduleDao.queryUnsignedStudentList();
 		for (StudentAttendance studentAttendance : studentAttendanceList) {
 			studentAttendance.setStatus(StudentAttendanceStatusEnum.TRUANT);
+			studentAttendance.setCurrentClassTimes(studentAttendance.getCurrentClassTimes() + 1);
 			studentAttendance.setCreateTime(date);
 		}
 
@@ -996,7 +998,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		List<CourseSchedule> list = courseScheduleDao.queryFinishedWithNoUpdateStatus();
 
 		List<CourseSchedule> updateList = new ArrayList<CourseSchedule>();
-		List<Integer> classGroups = new ArrayList<Integer>();
+		List<Integer> classGroupIds = new ArrayList<Integer>();
 		List<Long> courseScheduleIdList = new ArrayList<Long>();
 		
 		for (CourseSchedule courseSchedule : list) {
@@ -1004,8 +1006,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			courseSchedule.setUpdateTime(date);
 			updateList.add(courseSchedule);
 
-			if (!classGroups.contains(courseSchedule.getClassGroupId())) {
-				classGroups.add(courseSchedule.getClassGroupId());
+			if (!classGroupIds.contains(courseSchedule.getClassGroupId())) {
+				classGroupIds.add(courseSchedule.getClassGroupId());
 			}
 			
 			if(courseSchedule.getGroupType() == GroupType.VIP){
@@ -1018,9 +1020,28 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		}
 
 		// 更新班级已上课次
-		if (classGroups.size() > 0) {
-			classGroupService.batchIncreaseClassTimes(classGroups);
+		if (classGroupIds.size() > 0) {
+			classGroupService.batchIncreaseClassTimes(classGroupIds);
+			
+			//查询班级信息
+			List<ClassGroup> classGroupList = classGroupService.findClassGroupByIds(classGroupIds.stream().map(e->e.toString()).collect(Collectors.joining(",")));
 			
+			List<String> vipGroupIdList = new ArrayList<String>();
+			for(ClassGroup classGroup : classGroupList){
+				if(classGroup.getGroupType() == GroupType.VIP && classGroup.getCurrentClassTimes() == classGroup.getTotalClassTimes().intValue()){
+					if(!vipGroupIdList.contains(classGroup.getMusicGroupId())){
+						vipGroupIdList.add(classGroup.getMusicGroupId());
+					}
+				}
+			}
+			if(vipGroupIdList.size() > 0){
+				List<VipGroup> vipGroupList = vipGroupDao.queryByIds(vipGroupIdList.stream().collect(Collectors.joining(",")));
+				for(VipGroup vipGroup : vipGroupList){
+					vipGroup.setStatus(VipGroupStatusEnum.FINISHED);
+					vipGroup.setUpdateTime(date);
+				}
+				vipGroupDao.batchUpdate(vipGroupList);
+			}
 		}
 		
 		if (courseScheduleIdList.size() > 0) {

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

@@ -755,4 +755,83 @@
             LEFT JOIN course_schedule_student_payment cssp ON cs.id_=cssp.user_id_
             WHERE cssp.settlement_time_ IS NOT NULL AND cs.class_group_id_=#{classGroupId}
     </select>
+    
+    <select id="queryByIds" resultMap="VipGroup" parameterType="string">
+    	select * from vip_group where id_ in (#{idList})
+    </select>
+    
+    <update id="batchUpdate" parameterType="java.util.List">
+    	<foreach collection="list" item="item" index="index" open="" close="" separator=";">
+	        UPDATE vip_group
+	        <set>
+	            <if test="item.paymentExpireDate != null">
+	                payment_expire_date_ = #{item.paymentExpireDate},
+	            </if>
+	            <if test="item.userId != null">
+	                user_id_ = #{item.userId},
+	            </if>
+	            <if test="item.offlineClassesNum != null">
+	                offline_classes_num_ = #{item.offlineClassesNum},
+	            </if>
+	            <if test="item.onlineClassesNum != null">
+	                online_classes_num_ = #{item.onlineClassesNum},
+	            </if>
+	            <if test="item.updateTime != null">
+	                update_time_ = NOW(),
+	            </if>
+	            <if test="item.singleClassMinutes != null">
+	                single_class_minutes_ = #{item.singleClassMinutes},
+	            </if>
+	            <if test="item.teacherSchoolId != null">
+	                teacher_school_id_ = #{item.teacherSchoolId},
+	            </if>
+	            <if test="item.coursesExpireDate != null">
+	                courses_expire_date_ = #{item.coursesExpireDate},
+	            </if>
+	            <if test="item.registrationStartTime != null">
+	                registration_start_time_ = #{item.registrationStartTime},
+	            </if>
+	            <if test="item.organIdList!=null">
+	                organ_id_list_=#{item.organIdList},
+	            </if>
+	            <if test="item.auditStatus != null">
+	                audit_status_ = #{item.auditStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+	            </if>
+	            <if test="item.organIdList != null">
+	                organ_id_list_ = #{item.organIdList},
+	            </if>
+	            <if test="item.vipGroupActivityId != null">
+	                vip_group_activity_id_ = #{item.vipGroupActivityId},
+	            </if>
+	            <if test="item.status != null">
+	                status_ = #{item.status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+	            </if>
+	            <if test="item.onlineClassesUnitPrice != null">
+	                online_classes_unit_price_ = #{item.onlineClassesUnitPrice},
+	            </if>
+	            <if test="item.offlineClassesUnitPrice != null">
+	                offline_classes_unit_price_ = #{item.offlineClassesUnitPrice},
+	            </if>
+	            <if test="item.totalPrice != null">
+	                total_price_ = #{item.totalPrice},
+	            </if>
+	            <if test="item.giveTeachMode!=null">
+	                give_teach_mode_=#{item.giveTeachMode},
+	            </if>
+	            <if test="item.organId!=null">
+	                organ_id_=#{item.organId},
+	            </if>
+	            <if test="item.stopReason!=null">
+	                stop_reason_=#{item.stopReason},
+	            </if>
+	            <if test="item.auditStatus!=null">
+	                audit_status_=#{item.auditStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+	            </if>
+	            <if test="item.courseSchedulesJson!=null">
+	                course_schedules_json_=#{item.courseSchedulesJson},
+	            </if>
+	        </set>
+	        WHERE id_ = #{item.id}
+        </foreach>
+    </update>
 </mapper>