Joburgess 5 rokov pred
rodič
commit
995a7ea590

+ 12 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupDao.java

@@ -434,7 +434,7 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
     int batchSoftDelete(@Param("classGroupIds") List<Integer> classGroupIds);
 
 
-    /*
+    /**
      * @describe 根据乐团编号和类型获取班级
      * @author Joburgess
      * @date 2019/11/17
@@ -446,6 +446,17 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
                                        @Param("groupType") String groupType);
 
     /**
+     * @describe 根据乐团编号和类型获取班级
+     * @author Joburgess
+     * @date 2019/11/17
+     * @param musicGroupId: 编号
+     * @param groupType: 类型
+     * @return com.ym.mec.biz.dal.entity.ClassGroup
+     */
+    ClassGroup lockByMusicGroupAndType(@Param("musicGroupId") String musicGroupId,
+                                       @Param("groupType") String groupType);
+
+    /**
      * @param musicGroupIds: 编号列表
      * @param groupType:     类型
      * @return com.ym.mec.biz.dal.entity.ClassGroup

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

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.service;
 
 import com.ym.mec.biz.dal.dto.*;
+import com.ym.mec.biz.dal.entity.ClassGroup;
 import com.ym.mec.biz.dal.entity.School;
 import com.ym.mec.biz.dal.entity.StudentApplyRefunds.StudentApplyRefundsStatus;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
@@ -170,7 +171,7 @@ public interface VipGroupService extends BaseService<Long, VipGroup> {
      * @param updateVipStatus: 是否修改VIP课状态
      * @return void
      */
-    void updateVipGroupStudentNumAndStatus(Long vipGroupId,Integer num,boolean updateVipStatus);
+    void updateVipGroupStudentNumAndStatus(Long vipGroupId, ClassGroup classGroup, Integer num, boolean updateVipStatus);
 
     /**
      * @describe 课程购买成功后,创建课程相关信息

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

@@ -140,7 +140,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		if(Objects.isNull(teacherCourseByDateSpeed)){
 			return YesOrNoEnum.NO;
 		}else{
-			if(Objects.nonNull(teacherCourseByDateSpeed.getSignInTime())&&checkSchool&&schoolId.equals(teacherCourseByDateSpeed.getSchoolId())){
+			if(Objects.nonNull(teacherCourseByDateSpeed.getSignInTime())&&checkSchool&&schoolId.equals(teacherCourseByDateSpeed.getSchoolId().intValue())){
 				return YesOrNoEnum.YES;
 			}else{
 				return YesOrNoEnum.NO;

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/DemoGroupServiceImpl.java

@@ -206,6 +206,7 @@ public class DemoGroupServiceImpl extends BaseServiceImpl<Long, DemoGroup>  impl
 		classGroup.setGroupType(GroupType.DEMO);
 		classGroup.setCreateTime(now);
 		classGroup.setUpdateTime(now);
+		classGroup.setSubjectIdList(demoGroup.getSubjectId().toString());
 		classGroupDao.insert(classGroup);
 
 		//创建班级学生映射
@@ -213,6 +214,7 @@ public class DemoGroupServiceImpl extends BaseServiceImpl<Long, DemoGroup>  impl
 		classGroupStudentMapper.setClassGroupId(classGroup.getId());
 		classGroupStudentMapper.setUserId(user.getId());
 		classGroupStudentMapper.setStatus(ClassGroupStudentStatusEnum.NORMAL);
+		classGroupStudentMapper.setMusicGroupId(demoGroup.getId().toString());
 		classGroupStudentMapper.setGroupType(GroupType.DEMO);
 		classGroupStudentMapperDao.insert(classGroupStudentMapper);
 

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

@@ -820,12 +820,11 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public void updateVipGroupStudentNumAndStatus(Long vipGroupId, Integer num, boolean updateVipStatus) {
+	public void updateVipGroupStudentNumAndStatus(Long vipGroupId , ClassGroup classGroup, Integer num, boolean updateVipStatus) {
 		VipGroup vipGroup = vipGroupDao.getLockVipGroup(vipGroupId);
 		if(Objects.isNull(vipGroup)){
 			throw new BizException("指定的vip课程不存在");
 		}
-		ClassGroup classGroup=classGroupDao.findByMusicGroupAndType(vipGroupId.toString(),ClassGroupTypeEnum.VIP.getCode());
 		if(Objects.isNull(classGroup)){
 			throw new BizException("未找到关联班级");
 		}
@@ -842,8 +841,9 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			vipGroupDao.update(vipGroup);
 			createVipGroupCourseScheInfo(vipGroupId);
 		}
-		System.out.println(studentPaymentNum+"------"+JSON.toJSONString(classGroup));
-		classGroupDao.update(classGroup);
+		if(num>0){
+			classGroupDao.update(classGroup);
+		}
 	}
 
 	@Override
@@ -912,7 +912,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			throw new BizException("您已购买过此课程");
 		}
 
-		ClassGroup classGroup= classGroupDao.findByMusicGroupAndType(vipGroup.getId().toString(),ClassGroupTypeEnum.VIP.getCode());
+		ClassGroup classGroup= classGroupDao.lockByMusicGroupAndType(vipGroup.getId().toString(),ClassGroupTypeEnum.VIP.getCode());
 		if(Objects.isNull(classGroup)){
 			throw new BizException("课程信息错误");
 		}
@@ -928,7 +928,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 				throw new BizException("该课程人数已达上限");
 			}
 			//更新班级人数,如果订单支付失败则减少
-			this.updateVipGroupStudentNumAndStatus(vipGroup.getId(),1,false);
+			this.updateVipGroupStudentNumAndStatus(vipGroup.getId(),classGroup,1,false);
 
 			ClassGroupStudentMapper classGroupStudentMapper=new ClassGroupStudentMapper(classGroup.getId(),user.getId().intValue());
 			classGroupStudentMapper.setGroupType(GroupType.VIP);
@@ -990,14 +990,17 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
 		studentPaymentOrderDao.update(order);
 
+		ClassGroup classGroup=classGroupDao.lockByMusicGroupAndType(vipGroupId.toString(),ClassGroupTypeEnum.VIP.getCode());
+
 		//将学生加入到班级,更新班级报名状态及人数信息
 		if(!isOk){
-			updateVipGroupStudentNumAndStatus(vipGroupId,-1,false);
+			updateVipGroupStudentNumAndStatus(vipGroupId,classGroup,-1,false);
 			classGroupStudentMapperDao.deleteStudentByMusicGroupId(vipGroupId.toString(),userId);
 			return;
 		}
 
-		updateVipGroupStudentNumAndStatus(vipGroupId,0,true);
+
+		updateVipGroupStudentNumAndStatus(vipGroupId, classGroup,0,true);
 		SysUserCashAccount sysUserCashAccount = sysUserCashAccountService.get(userId);
 
 		VipGroup vipGroup = vipGroupDao.get(vipGroupId);
@@ -1027,8 +1030,6 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_VIP_BUY, map, null, 0, "2",
 				vipGroup.getName());
 
-		ClassGroup classGroup=classGroupDao.findByMusicGroupAndType(vipGroupId.toString(),ClassGroupTypeEnum.VIP.getCode());
-
 		//更新所属分部列表
 		List<Integer> organIds = classGroupDao.findStudentOrganIdsByClassGroup(classGroup.getId().longValue());
 		organIds.add(vipGroup.getOrganId());

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

@@ -757,6 +757,15 @@
             music_group_id_ = #{musicGroupId}
             AND group_type_ = #{groupType}
     </select>
+    <select id="lockByMusicGroupAndType" resultMap="ClassGroup">
+        SELECT
+            *
+        FROM
+            class_group
+        WHERE
+            music_group_id_ = #{musicGroupId}
+            AND group_type_ = #{groupType} FOR UPDATE
+    </select>
 
     <select id="findByMusicGroupsAndType" resultMap="ClassGroup">
         SELECT

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

@@ -300,7 +300,7 @@
     </resultMap>
     <select id="queryCloses" resultMap="TeacherCloseDto">
         SELECT cs.id_ course_schedule_id_,cs.class_date_,cs.start_class_time_,cg.name_ class_name_,cs.type_ class_type_,
-        csts.teacher_role_,cg.current_class_times_,cg.total_class_times_,
+        csts.teacher_role_,ta.current_class_times_,cg.total_class_times_,
         ta.sign_in_status_,ta.sign_out_status_,csts.actual_salary_,csts.settlement_time_,csts.subsidy_
         FROM course_schedule cs
         LEFT JOIN course_schedule_teacher_salary csts ON cs.id_ = csts.course_schedule_id_