Selaa lähdekoodia

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

zouxuan 5 vuotta sitten
vanhempi
commit
96539f68f6

+ 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

+ 21 - 24
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/VipGroupStatusEnum.java

@@ -6,36 +6,33 @@ import com.ym.mec.common.enums.BaseEnum;
  * @Author Joburgess
  * @Date 2019/10/2
  */
-public enum  VipGroupStatusEnum implements BaseEnum<Integer, VipGroupStatusEnum> {
+public enum VipGroupStatusEnum implements BaseEnum<Integer, VipGroupStatusEnum> {
 
-    NOT_START(0, "未开始"),
-    APPLYING(1, "报名中"),
-    FINISH(2, "报名已结束"),
-    CANCEL(3, "取消");
+	NOT_START(0, "未开始"), APPLYING(1, "报名中"), PROGRESS(2, "进行中"), FINISHED(4, "已结束"), CANCEL(3, "取消");
 
-    private Integer code;
+	private Integer code;
 
-    private String msg;
+	private String msg;
 
-    VipGroupStatusEnum(Integer code, String msg) {
-        this.code = code;
-        this.msg = msg;
-    }
+	VipGroupStatusEnum(Integer code, String msg) {
+		this.code = code;
+		this.msg = msg;
+	}
 
-    public void setCode(Integer code) {
-        this.code = code;
-    }
+	public void setCode(Integer code) {
+		this.code = code;
+	}
 
-    public String getMsg() {
-        return msg;
-    }
+	public String getMsg() {
+		return msg;
+	}
 
-    public void setMsg(String msg) {
-        this.msg = msg;
-    }
+	public void setMsg(String msg) {
+		this.msg = msg;
+	}
 
-    @Override
-    public Integer getCode() {
-        return this.code;
-    }
+	@Override
+	public Integer getCode() {
+		return this.code;
+	}
 }

+ 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

@@ -138,7 +138,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);
 

+ 14 - 13
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -231,7 +231,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
 		vipGroupApplyBaseInfoDto.setTotalPrice(costInfo.get("totalPrice"));
 		if(StringUtils.isNotBlank(studentIds)){
-			vipGroupApplyBaseInfoDto.setStatus(VipGroupStatusEnum.FINISH);
+			vipGroupApplyBaseInfoDto.setStatus(VipGroupStatusEnum.PROGRESS);
 		}else{
 			vipGroupApplyBaseInfoDto.setStatus(VipGroupStatusEnum.APPLYING);
 		}
@@ -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("未找到关联班级");
 		}
@@ -838,12 +837,13 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		Integer studentPaymentNum=studentPaymentOrderDao.countStudentPaymentNum(vipGroupId.toString());
 		if(studentPaymentNum.equals(classGroup.getExpectStudentNum())&&updateVipStatus){
 			classGroup.setDelFlag(YesOrNoEnum.NO);
-			vipGroup.setStatus(VipGroupStatusEnum.FINISH);
+			vipGroup.setStatus(VipGroupStatusEnum.PROGRESS);
 			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());
@@ -1325,7 +1326,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
     	if(CollectionUtils.isEmpty(maps)||(maps.size()==1&&Objects.isNull(maps.get(0)))){
 			vipGroup.setStatus(VipGroupStatusEnum.CANCEL);
 			vipGroupDao.update(vipGroup);
-			if(vipGroup.getStatus().equals(VipGroupStatusEnum.FINISH)){
+			if(vipGroup.getStatus().equals(VipGroupStatusEnum.PROGRESS)){
 				courseScheduleDao.batchDeleteCourseSchedules(courseScheduleIds);
 				courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(courseScheduleIds);
 			}

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

@@ -758,6 +758,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_