소스 검색

Merge remote-tracking branch 'origin/master'

周箭河 5 년 전
부모
커밋
a290b87445

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

@@ -99,4 +99,11 @@ public interface TeacherAttendanceDao extends BaseDAO<Long, TeacherAttendance> {
      * @return java.util.List<java.util.Map<java.lang.Integer,java.lang.Integer>>
      */
     List<TeacherAttendance> findTeacherIdByCourseSchedule(@Param("courseScheduleIds") List<Long> courseScheduleIds);
+    
+	/**
+	 * 更新vip课的签退状态
+	 * @param courseScheduleIdList
+	 * @return
+	 */
+	int updateViPSignOutStatus(String courseScheduleIdList);
 }

+ 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);
 }

+ 10 - 13
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseSchedule.java

@@ -1,26 +1,23 @@
 package com.ym.mec.biz.dal.entity;
 
-import com.fasterxml.jackson.annotation.JsonInclude;
-import com.google.common.collect.Lists;
-import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.enums.CourseStatusEnum;
-import com.ym.mec.biz.dal.enums.GroupType;
-import com.ym.mec.biz.dal.enums.TeachModeEnum;
-import com.ym.mec.common.enums.BaseEnum;
-
 import io.swagger.annotations.ApiModelProperty;
 
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-
 import java.math.BigDecimal;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 import java.util.Objects;
 
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.enums.CourseStatusEnum;
+import com.ym.mec.biz.dal.enums.GroupType;
+import com.ym.mec.biz.dal.enums.TeachModeEnum;
+import com.ym.mec.common.enums.BaseEnum;
+
 /**
  * 对应数据库表(course_schedule):
  */

+ 0 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TeacherAttendance.java

@@ -39,7 +39,6 @@ public class TeacherAttendance {
 	@ApiModelProperty(value = "签到时间",required = false)
 	private java.util.Date signInTime;
 	
-	/** 状态(正常签到,异常签到) */
 	@ApiModelProperty(value = "状态(0:签到,1:签退)",required = false)
 	private Integer status;
 

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/VipGroupService.java

@@ -306,4 +306,8 @@ public interface VipGroupService extends BaseService<Long, VipGroup> {
      */
     void addVipGroupStudents(Long vipGroupId,List<Integer> studentIds);
     
+	/**
+	 * 更新vipgroup至完成状态
+	 */
+	void updateVipGroupStatusToFinished();
 }

+ 27 - 10
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ContractServiceImpl.java

@@ -19,9 +19,11 @@ import org.springframework.stereotype.Service;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDao;
+import com.ym.mec.biz.dal.dao.MusicGroupStudentFeeDao;
 import com.ym.mec.biz.dal.dto.StudentInfo;
 import com.ym.mec.biz.dal.entity.Goods;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender;
+import com.ym.mec.biz.dal.entity.MusicGroupStudentFee;
 import com.ym.mec.biz.dal.entity.MusicGroupSubjectPlan;
 import com.ym.mec.biz.dal.entity.StudentRegistration;
 import com.ym.mec.biz.dal.entity.Subject;
@@ -69,6 +71,9 @@ public class ContractServiceImpl implements ContractService {
 
 	@Autowired
 	private MusicGroupPaymentCalenderDao musicGroupPaymentCalenderDao;
+	
+	@Autowired
+	private MusicGroupStudentFeeDao musicGroupStudentFeeDao;
 
 	@Autowired
 	private MusicGroupSubjectGoodsGroupService musicGroupSubjectGoodsGroupService;
@@ -250,12 +255,18 @@ public class ContractServiceImpl implements ContractService {
 		if (studentRegistration == null) {
 			throw new BizException("用户 报名信息不存在");
 		}
-		MusicGroupSubjectPlan musicGroupSubjectPlan = musicGroupSubjectPlanService.getMusicOneSubjectClassPlan(musicGroupId,
-				studentRegistration.getActualSubjectId());
-		if (musicGroupSubjectPlan == null) {
-			throw new BizException("声部课程费用设置找不到");
+		MusicGroupStudentFee musicGroupStudentFee = musicGroupStudentFeeDao.findByUser(userId, musicGroupId);
+		if (musicGroupStudentFee == null) {
+			MusicGroupSubjectPlan musicGroupSubjectPlan = musicGroupSubjectPlanService.getMusicOneSubjectClassPlan(musicGroupId,
+					studentRegistration.getActualSubjectId());
+			if (musicGroupSubjectPlan == null) {
+				throw new BizException("声部课程费用设置找不到");
+			}
+			params.put("courseFee", musicGroupSubjectPlan.getFee().doubleValue());
+		} else {
+			params.put("courseFee", musicGroupStudentFee.getTemporaryCourseFee().doubleValue() > 0 ? musicGroupStudentFee.getTemporaryCourseFee().doubleValue()
+					: musicGroupStudentFee.getCourseFee().doubleValue());
 		}
-		params.put("courseFee", musicGroupSubjectPlan.getFee().doubleValue());
 
 		// 收费形式
 		List<MusicGroupPaymentCalender> calenders = musicGroupPaymentCalenderDao.findByMusicGroupId(musicGroupId);
@@ -327,12 +338,18 @@ public class ContractServiceImpl implements ContractService {
 		if (studentRegistration == null) {
 			throw new BizException("用户 报名信息不存在");
 		}
-		MusicGroupSubjectPlan musicGroupSubjectPlan = musicGroupSubjectPlanService.getMusicOneSubjectClassPlan(musicGroupId,
-				studentRegistration.getActualSubjectId());
-		if (musicGroupSubjectPlan == null) {
-			throw new BizException("声部课程费用设置找不到");
+		MusicGroupStudentFee musicGroupStudentFee = musicGroupStudentFeeDao.findByUser(userId, musicGroupId);
+		if (musicGroupStudentFee == null) {
+			MusicGroupSubjectPlan musicGroupSubjectPlan = musicGroupSubjectPlanService.getMusicOneSubjectClassPlan(musicGroupId,
+					studentRegistration.getActualSubjectId());
+			if (musicGroupSubjectPlan == null) {
+				throw new BizException("声部课程费用设置找不到");
+			}
+			params.put("courseFee", musicGroupSubjectPlan.getFee().doubleValue());
+		} else {
+			params.put("courseFee", musicGroupStudentFee.getTemporaryCourseFee().doubleValue() > 0 ? musicGroupStudentFee.getTemporaryCourseFee().doubleValue()
+					: musicGroupStudentFee.getCourseFee().doubleValue());
 		}
-		params.put("courseFee", musicGroupSubjectPlan.getFee().doubleValue());
 
 		// 收费形式
 		List<MusicGroupPaymentCalender> calenders = musicGroupPaymentCalenderDao.findByMusicGroupId(musicGroupId);

+ 112 - 25
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -1,19 +1,83 @@
 package com.ym.mec.biz.service.impl;
 
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+import java.util.TreeSet;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import org.apache.commons.collections.ListUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.api.entity.SysUserRole;
 import com.ym.mec.auth.api.enums.SysUserType;
-import com.ym.mec.biz.dal.dao.*;
-import com.ym.mec.biz.dal.dto.*;
-import com.ym.mec.biz.dal.entity.*;
-import com.ym.mec.biz.dal.enums.*;
+import com.ym.mec.biz.dal.dao.ClassGroupDao;
+import com.ym.mec.biz.dal.dao.ClassGroupStudentMapperDao;
+import com.ym.mec.biz.dal.dao.CourseScheduleComplaintsDao;
+import com.ym.mec.biz.dal.dao.CourseScheduleDao;
+import com.ym.mec.biz.dal.dao.CourseScheduleStudentPaymentDao;
+import com.ym.mec.biz.dal.dao.CourseScheduleTeacherSalaryDao;
+import com.ym.mec.biz.dal.dao.MusicGroupDao;
+import com.ym.mec.biz.dal.dao.StudentAttendanceDao;
+import com.ym.mec.biz.dal.dao.SubjectDao;
+import com.ym.mec.biz.dal.dao.SysConfigDao;
+import com.ym.mec.biz.dal.dao.TeacherAttendanceDao;
+import com.ym.mec.biz.dal.dao.TeacherDefaultVipGroupSalaryDao;
+import com.ym.mec.biz.dal.dao.VipGroupDao;
+import com.ym.mec.biz.dal.dto.ClassDateAdjustDto;
+import com.ym.mec.biz.dal.dto.CourseAttendanceDetailHeadInfoDto;
+import com.ym.mec.biz.dal.dto.CourseScheduleDto;
+import com.ym.mec.biz.dal.dto.IntegerAndIntegerListDto;
+import com.ym.mec.biz.dal.dto.Mapper;
+import com.ym.mec.biz.dal.dto.TeacherAttendanceDto;
+import com.ym.mec.biz.dal.dto.TeacherClassCourseSchudeleDto;
+import com.ym.mec.biz.dal.entity.ClassGroup;
+import com.ym.mec.biz.dal.entity.ClassGroupStudentMapper;
+import com.ym.mec.biz.dal.entity.ClassGroupTeacherMapper;
+import com.ym.mec.biz.dal.entity.CourseSchedule;
+import com.ym.mec.biz.dal.entity.CourseScheduleComplaints;
+import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
+import com.ym.mec.biz.dal.entity.StudentAttendance;
+import com.ym.mec.biz.dal.entity.TeacherDefaultVipGroupSalary;
+import com.ym.mec.biz.dal.entity.VipGroup;
+import com.ym.mec.biz.dal.enums.AuditStatusEnum;
+import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
+import com.ym.mec.biz.dal.enums.CourseStatusEnum;
+import com.ym.mec.biz.dal.enums.GroupType;
+import com.ym.mec.biz.dal.enums.MessageTypeEnum;
+import com.ym.mec.biz.dal.enums.ParamEnum;
+import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
+import com.ym.mec.biz.dal.enums.TeachTypeEnum;
+import com.ym.mec.biz.dal.enums.VipGroupStatusEnum;
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.page.CourseScheduleQueryInfo;
 import com.ym.mec.biz.dal.page.StudentCourseScheduleRecordQueryInfo;
 import com.ym.mec.biz.dal.page.VipGroupQueryInfo;
-import com.ym.mec.biz.service.*;
+import com.ym.mec.biz.service.ClassGroupService;
+import com.ym.mec.biz.service.ClassGroupTeacherMapperService;
+import com.ym.mec.biz.service.CourseScheduleService;
+import com.ym.mec.biz.service.CourseScheduleStudentPaymentService;
+import com.ym.mec.biz.service.CourseScheduleTeacherSalaryService;
+import com.ym.mec.biz.service.SysConfigService;
+import com.ym.mec.biz.service.SysMessageService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
@@ -21,18 +85,6 @@ 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.collections.ListUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.CollectionUtils;
-
-import java.text.SimpleDateFormat;
-import java.util.*;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
 
 @Service
 public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSchedule>  implements CourseScheduleService {
@@ -926,30 +978,40 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public boolean updateCourseScheduleToOverStatus() {
 
 		Date date = new Date();
+		//课程已结束,更新“未签到”学生的状态未“旷课”
 		List<StudentAttendance> studentAttendanceList = courseScheduleDao.queryUnsignedStudentList();
 		for (StudentAttendance studentAttendance : studentAttendanceList) {
 			studentAttendance.setStatus(StudentAttendanceStatusEnum.TRUANT);
+			studentAttendance.setCurrentClassTimes(studentAttendance.getCurrentClassTimes() + 1);
 			studentAttendance.setCreateTime(date);
 		}
 
 		if (studentAttendanceList != null && studentAttendanceList.size() > 0) {
 			studentAttendanceDao.batchUpdate(studentAttendanceList);
 		}
-
+		
+		//自动更新课程状态至“已结束”
 		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) {
 			courseSchedule.setStatus(CourseStatusEnum.OVER);
 			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){
+				courseScheduleIdList.add(courseSchedule.getId());
 			}
 		}
 
@@ -957,11 +1019,36 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			courseScheduleDao.batchUpdate(updateList);
 		}
 
-		// 更新班级课次
-		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) {
+			// vip课自动签退
+			teacherAttendanceDao.updateViPSignOutStatus(courseScheduleIdList.stream().map(a -> a.toString()).collect(Collectors.joining(",")));
+		}
+		
 		return true;
 	}
 

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

@@ -3,6 +3,7 @@ package com.ym.mec.biz.service.impl;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.*;
+import com.ym.mec.biz.dal.entity.MusicGroup;
 import com.ym.mec.biz.dal.entity.SysUserCashAccount;
 import com.ym.mec.biz.dal.page.*;
 import com.ym.mec.biz.service.StudentManageService;

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

@@ -1547,4 +1547,9 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		}
 		sysUserCashAccountDetailDao.batchInsert(userCashAccountDetails);
 	}
+
+	@Override
+	public void updateVipGroupStatusToFinished() {
+		
+	}
 }

+ 7 - 4
mec-biz/src/main/resources/config/contracts/courses.ftl

@@ -80,7 +80,7 @@
         <div style="display: flex;">乙方:
             <div style="flex: 1 auto;">
                 <div class="iInfo">
-                    <span>家长姓名 ${studentInfo.parentsName!}</span>
+                    <span>家长姓名 ${studentInfo.parentsName!}</span>
                     <span>电话: ${studentInfo.phone!}</span>
                 </div>
                 <div class="iInfo">
@@ -106,7 +106,7 @@
         
         <div class="iInfoContent">
             <span>授课类别:${classesType}</span>
-            <span>课程费用:${courseFee?string("0.00")}</span>
+            <span>课程费用:${courseFee?string("0.00")}</span>
             <span>收费形式:${paymentcalender}</span>
         </div>
 
@@ -160,14 +160,17 @@
             <div class="sign">甲方签章:深圳大雅乐盟网络教育股份有限公司<img class="cachet" src="https://daya-online.oss-cn-beijing.aliyuncs.com/website/cachet.png" alt="" />
                 <span>日期:${.now?string("yyyy年MM月dd日")}</span>
             </div>
+            <div class="sign">乙方签字:${studentInfo.parentsName!}
+                <span>日期:${.now?string("yyyy年MM月dd日")} </span>
+            </div>
         	<#else>
             <div class="sign">甲方签章:深圳大雅乐盟网络教育股份有限公司
                 <span>日期:${.now?string("yyyy年MM月dd日")}</span>
             </div>
-        	</#if>
-            <div class="sign">乙方签字:${studentInfo.realName!}
+            <div class="sign">乙方签字:
                 <span>日期:${.now?string("yyyy年MM月dd日")} </span>
             </div>
+        	</#if>
         </div>
     </div>
 </body>

+ 7 - 4
mec-biz/src/main/resources/config/contracts/goods.ftl

@@ -79,7 +79,7 @@
         <div style="display: flex;">乙方:
             <div style="flex: 1 auto;">
                 <div class="iInfo">
-                    <span>家长姓名 ${studentInfo.parentsName!}</span>
+                    <span>家长姓名 ${studentInfo.parentsName!}</span>
                     <span>电话: ${studentInfo.phone!}</span>
                 </div>
                 <div class="iInfo">
@@ -113,7 +113,7 @@
         </div>
         <div class="iInfo">
             <span>型号:${goodsList[0].specification}</span>
-            <span>团购价格:${goodsList[0].groupPurchasePrice?string("0.00")}</span>
+            <span>团购价格:${goodsList[0].groupPurchasePrice?string("0.00")}</span>
         </div>
 
         <h2>四、违约责任</h2>  
@@ -139,14 +139,17 @@
             <div class="sign">甲方签章:深圳大雅乐盟网络教育股份有限公司<img class="cachet" src="https://daya-online.oss-cn-beijing.aliyuncs.com/website/cachet.png" alt="" />
                 <span>日期:${.now?string("yyyy年MM月dd日")}</span>
             </div>
+            <div class="sign">乙方签字:${studentInfo.parentsName!}
+                <span>日期:${.now?string("yyyy年MM月dd日")} </span>
+            </div>
         	<#else>
             <div class="sign">甲方签章:深圳大雅乐盟网络教育股份有限公司
                 <span>日期:${.now?string("yyyy年MM月dd日")}</span>
             </div>
-            </#if>
-            <div class="sign">乙方签字:${studentInfo.realName!}
+            <div class="sign">乙方签字:
                 <span>日期:${.now?string("yyyy年MM月dd日")} </span>
             </div>
+            </#if>
         </div>
     </div>
 </body>

+ 9 - 8
mec-biz/src/main/resources/config/mybatis/StudentManageDao.xml

@@ -189,13 +189,13 @@
         <where>
                 cgsm.status_ != 'QUIT'
             <if test="studentId!=null">
-                and cgsm.user_id_=#{studentId}
+                and cgsm.user_id_ = #{studentId}
             </if>
             <if test="musicGroupId!=null">
-                and cg.music_group_id_=#{musicGroupId} AND cg.group_type_='MUSIC'
+                and cg.music_group_id_ = #{musicGroupId} AND cg.group_type_='MUSIC'
             </if>
             <if test="classGroupType!=null">
-                and cg.type_=#{classGroupType}
+                and cg.type_ = #{classGroupType}
             </if>
             <if test="courseStatus!=null">
                 and cs.status_=#{courseStatus}
@@ -207,7 +207,7 @@
                 and su.username_ like CONCAT("%",#{teacherName},"%")
             </if>
             <if test="vipGroupId!=null">
-                and cg.music_group_id_=#{vipGroupId} AND cg.group_type_='VIP'
+                and cg.music_group_id_ = #{vipGroupId} AND cg.group_type_='VIP'
             </if>
         </where>
     </sql>
@@ -239,14 +239,15 @@
 
     <sql id="studentManageAttendanceQueryCondition">
         <where>
+            CONCAT(cs.class_date_," ",cs.start_class_time_) &lt; NOW()
             <if test="studentId!=null">
-                and sa.user_id_=#{studentId}
+                and sa.user_id_ = #{studentId}
             </if>
             <if test="classGroupType!=null">
-                and cg.type_=#{classGroupType}
+                and cg.type_ = #{classGroupType}
             </if>
             <if test="attendanceStatus!=null">
-                and sa.status_=#{attendanceStatus, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+                and sa.status_ = #{attendanceStatus, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
             </if>
             <if test="classGroupName!=null">
                 and cg.name_ like CONCAT("%",#{classGroupName},"%")
@@ -319,8 +320,8 @@
         cg.total_class_times_,sa.current_class_times_,sa.status_,cssp.expect_price_,cssp.actual_price_
         FROM course_schedule_student_payment cssp
         LEFT JOIN course_schedule cs ON cssp.course_schedule_id_ = cs.id_
+        LEFT JOIN class_group cg ON cg.id_ = cs.class_group_id_
         LEFT JOIN student_attendance sa ON sa.course_schedule_id_ = cssp.course_schedule_id_ AND sa.user_id_ = cssp.user_id_
-        LEFT JOIN class_group cg ON cg.id_ = sa.class_group_id_
         <include refid="studentPaymentSql"/>
         ORDER BY cs.class_date_ DESC,cs.start_class_time_ DESC
         <include refid="global.limit"/>

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

@@ -274,4 +274,8 @@
             #{courseScheduleId}
         </foreach>
     </select>
+    
+    <update id="updateViPSignOutStatus" parameterType="string">
+    	update teacher_attendance set sign_out_status_ = 1,sign_out_time_= now() where course_schedule_id_ in (#{courseScheduleIdList}) and sign_in_status_ = 1
+    </update>
 </mapper>

+ 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>