浏览代码

Merge branch 'active_course_2021-09-26~29' of http://git.dayaedu.com/yonge/mec into 2021-double-eleven

zouxuan 3 年之前
父节点
当前提交
50102111e2

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ActivityWaitCourseStudentNumDto.java

@@ -22,6 +22,17 @@ public class ActivityWaitCourseStudentNumDto{
 
     private Integer userId;
 
+    //活动和员工的分部
+    private String employeeAndActivityOrganIds;
+
+    public String getEmployeeAndActivityOrganIds() {
+        return employeeAndActivityOrganIds;
+    }
+
+    public void setEmployeeAndActivityOrganIds(String employeeAndActivityOrganIds) {
+        this.employeeAndActivityOrganIds = employeeAndActivityOrganIds;
+    }
+
     public String getPhone() {
         return phone;
     }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ReturnFeeDto.java

@@ -10,6 +10,9 @@ public class ReturnFeeDto {
     @ApiModelProperty(value = "课程组编号",required = false)
     private Long vipGroupId;
 
+    @ApiModelProperty(value = "课程组编号",required = false)
+    private Long groupId;
+
     @ApiModelProperty(value = "退费学员",required = false)
     private Integer studentId;
 
@@ -21,6 +24,14 @@ public class ReturnFeeDto {
 
     private GroupType groupType;
 
+    public Long getGroupId() {
+        return groupId;
+    }
+
+    public void setGroupId(Long groupId) {
+        this.groupId = groupId;
+    }
+
     public GroupType getGroupType() {
         return groupType;
     }

+ 7 - 31
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/VipGroupActivity.java

@@ -104,14 +104,14 @@ public class VipGroupActivity {
 //	@ApiModelProperty(value = "活动变量3")
 //	private String attribute3;
 
-	@ApiModelProperty(value = "薪水只读标识(1-只读 0-可写)")
-	private Integer salaryReadonlyFlag = 0;
-
-	@ApiModelProperty(value = "单节课程费用只读标识")
-	private Integer paymentReadonlyFlag = 1;
+//	@ApiModelProperty(value = "薪水只读标识(1-只读 0-可写)")
+//	private Integer salaryReadonlyFlag = 0;
+//
+//	@ApiModelProperty(value = "单节课程费用只读标识")
+//	private Integer paymentReadonlyFlag = 1;
 
-	@ApiModelProperty(value = "赠送课时支付薪水标识(1-计课酬  0-不计课酬)")
-	private Integer giveClassPaySalaryFlag = 1;
+//	@ApiModelProperty(value = "赠送课时支付薪水标识(1-计课酬  0-不计课酬)")
+//	private Integer giveClassPaySalaryFlag = 1;
 
 	@ApiModelProperty(value = "创建时间")
 	private java.util.Date createTime;
@@ -401,30 +401,6 @@ public class VipGroupActivity {
 		isPayToBalance = payToBalance;
 	}
 
-	public Integer getSalaryReadonlyFlag() {
-		return salaryReadonlyFlag;
-	}
-
-	public void setSalaryReadonlyFlag(Integer salaryReadonlyFlag) {
-		this.salaryReadonlyFlag = salaryReadonlyFlag;
-	}
-
-	public Integer getPaymentReadonlyFlag() {
-		return paymentReadonlyFlag;
-	}
-
-	public void setPaymentReadonlyFlag(Integer paymentReadonlyFlag) {
-		this.paymentReadonlyFlag = paymentReadonlyFlag;
-	}
-
-	public Integer getGiveClassPaySalaryFlag() {
-		return giveClassPaySalaryFlag;
-	}
-
-	public void setGiveClassPaySalaryFlag(Integer giveClassPaySalaryFlag) {
-		this.giveClassPaySalaryFlag = giveClassPaySalaryFlag;
-	}
-
 	public Date getCreateTime() {
 		return createTime;
 	}

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

@@ -72,5 +72,5 @@ public interface GroupClassService {
     * @author zx
     * @date 2021/10/13 13:59
     */
-    HttpResponseResult quitActivityGive(Integer activityUserMapperId,Boolean confirmReturnActivityGive,Integer studentId);
+    HttpResponseResult quitActivityGive(Integer activityUserMapperId,boolean confirmReturnActivityGive,Integer studentId);
 }

+ 15 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/GroupClassServiceImpl.java

@@ -150,7 +150,7 @@ public class GroupClassServiceImpl implements GroupClassService {
     @Override
     @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
     public HttpResponseResult cancelGroup(ReturnFeeDto returnFeeDto) {
-        Long groupId = returnFeeDto.getVipGroupId();
+        Long groupId = returnFeeDto.getGroupId();
         if (Objects.isNull(groupId)) {
             throw new BizException("请指定课程组");
         }
@@ -214,16 +214,25 @@ public class GroupClassServiceImpl implements GroupClassService {
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public HttpResponseResult quitActivityGive(Integer activityUserMapperId,Boolean confirmReturnActivityGive,Integer studentId){
+    public HttpResponseResult quitActivityGive(Integer activityUserMapperId,boolean confirmReturnActivityGive,Integer studentId){
         if(activityUserMapperId != null){
             ActivityUserMapper activityUserMapper = activityUserMapperDao.get(activityUserMapperId);
             if(activityUserMapper != null){
                 if(activityUserMapper.getReturnFee()){
-                    throw new BizException("当前课程组无法退费,请联系管理员");
+                    return BaseController.succeed();
                 }
-                if(!confirmReturnActivityGive && activityUserMapper.getGiveMemberFlag() != 0 && activityUserMapper.getGiveVipFlag() != 0 && activityUserMapper.getGivePracticeFlag() != 0){
-                    return BaseController.failed(HttpStatus.PARTIAL_CONTENT,"当前课程组为活动购买,退费会退还活动相关所有赠送,是否继续退费?");
+                if(!confirmReturnActivityGive){
+                    if(activityUserMapper.getGiveMemberFlag() != 0){
+                        return BaseController.failed(HttpStatus.PARTIAL_CONTENT,"当前课程组为活动购买,退费会退还赠送的会员,是否继续退费?");
+                    }
+                    if(activityUserMapper.getGiveVipFlag() != 0){
+                        return BaseController.failed(HttpStatus.PARTIAL_CONTENT,"当前课程组为活动购买,退费会退还赠送的VIP课,是否继续退费?");
+                    }
+                    if(activityUserMapper.getGivePracticeFlag() != 0){
+                        return BaseController.failed(HttpStatus.PARTIAL_CONTENT,"当前课程组为活动购买,退费会退还赠送的网管课,是否继续退费?");
+                    }
                 }
+                activityUserMapper.setReturnFee(true);
                 Date now = new Date();
                 if(activityUserMapper.getGiveMemberFlag() == 2){
                     VipGroupActivity activity = vipGroupActivityDao.get(activityUserMapper.getActivityId());
@@ -301,6 +310,7 @@ public class GroupClassServiceImpl implements GroupClassService {
                     practiceGroupService.update(practiceGroup);
                 }
             }
+            activityUserMapperDao.update(activityUserMapper);
         }
         return BaseController.succeed();
     }

+ 79 - 86
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -259,7 +259,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 				List<SimpleUserDto> students = teacherDao.getUsersSimpleInfo(errStudentIds);
 				TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 				String studentNames = StringUtils.join(students.stream().map(SimpleUserDto::getNickName).collect(Collectors.toList()), "、");
-				return BaseController.failed(HttpStatus.PARTIAL_CONTENT,"该活动"+studentNames+"学员已超过该活动购买次数限制");
+				throw new BizException("该活动{}学员已超过该活动购买次数限制",studentNames);
 			}
 		}
 		//判断课程安排是否超出范围
@@ -1202,9 +1202,16 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		}
 		Boolean giveFlag = vipGroup.getGiveFlag();
 		List<Integer> studentIdList = Arrays.stream(studentIds.split(",")).map(id->Integer.valueOf(id)).collect(Collectors.toList());
-		if(studentIdList.size() > vipGroupCategory.getStudentNum()){
-			throw new BizException("{}课程最多支持{}人",vipGroupCategory.getName(),vipGroupCategory.getStudentNum());
+		if(!vipGroupCategory.getMusicTheory()){
+			if(studentIdList.size() != vipGroupCategory.getStudentNum()){
+				throw new BizException("学员数量异常");
+			}
+		}else {
+			if(studentIdList.size() > vipGroupCategory.getStudentNum()){
+				throw new BizException("{}课程最多支持{}人",vipGroupCategory.getName(),vipGroupCategory.getStudentNum());
+			}
 		}
+
 		//获取学员排课资格
 		List<ActivityUserMapper> activityUserMappers = activityUserMapperService.findByStudentIdList(activity.getId(),studentIds,giveFlag?"GIVE_VIP":"VIP");
 		if(studentIdList.size() != activityUserMappers.size()){
@@ -2191,7 +2198,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 				vipGroupDetail.setCourseSchedules(collect);
 				vipGroupDetail.setTotalClassTimes(collect.size());
 			}
-
+			VipGroupCategory vipGroupCategory = vipGroupCategoryDao.get(vipGroup.getVipGroupCategoryId());
+			vipGroupDetail.setCategoryName(vipGroupCategory.getName());
 			vipGroupDetail.setNumberOfClasses(vipGroupDao.countTeacherVipGroups(vipGroupDetail.getTeacherId().longValue()));
 			return vipGroupDetail;
 		}
@@ -2425,7 +2433,11 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 					throw new BizException("您无法购买此课程");
 				}
 			}
-//			ClassGroup classGroup = classGroupDao.findByGroupAndType(vipGroupId.toString(), "PRACTICE");
+			ClassGroup classGroup = classGroupDao.findByGroupAndType(vipGroupId.toString(), "PRACTICE");
+			Boolean exist = classGroupStudentMapperDao.existByClassGroupIds(classGroup.getId().toString(), userId);
+			if(exist){
+				throw new BizException("您已加入此课程");
+			}
 //
 //			if(classGroup.getStudentNum()>0 && (VipGroupStatusEnum.APPLYING.equals(practiceGroup.getGroupStatus()))){
 //				int i = studentPaymentOrderDao.countGroupOrderWithoutFailed(vipGroupId.toString(), GroupType.PRACTICE);
@@ -2444,15 +2456,19 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 					throw new BizException("您无法购买此课程");
 				}
 			}
+			ClassGroup classGroup = classGroupDao.findByVipGroup(vipGroupId.longValue(), null);
+			//是否已经购买
+			Boolean exist = classGroupStudentMapperDao.existByClassGroupIds(classGroup.getId().toString(), userId);
+			if(exist){
+				throw new BizException("您已加入此课程");
+			}
 
-//			ClassGroup classGroup = classGroupDao.findByVipGroup(vipGroupId.longValue(), null);
-//
-//			if(classGroup.getStudentNum() > 0 && (VipGroupStatusEnum.APPLYING.equals(vipGroup.getStatus()))){
-//				int i = studentPaymentOrderDao.countGroupOrderWithoutFailed(vipGroupId.toString(), GroupType.VIP);
-//				if(i <= 0){
-//					throw new BizException("该课程已经无法通过购买加入,请联系教务老师!");
-//				}
-//			}
+			if(classGroup.getStudentNum() > 0 && (VipGroupStatusEnum.APPLYING.equals(vipGroup.getStatus()))){
+				int i = studentPaymentOrderDao.countGroupOrderWithoutFailed(vipGroupId.toString(), GroupType.VIP);
+				if(i <= 0){
+					throw new BizException("该课程已经无法通过购买加入,请联系教务老师!");
+				}
+			}
 
 			List<CourseSchedule> courseSchedules = JSON.parseArray(vipGroup.getCourseSchedulesJson(),CourseSchedule.class);
 			courseScheduleService.checkNewCourseSchedules(courseSchedules,false,false);
@@ -2562,12 +2578,20 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 						OrderTypeEnum.SMALL_CLASS_TO_BUY);
 
 		ClassGroup classGroup = classGroupDao.findByMusicGroupAndType(vipGroupBuyParams.getVipGroupId().toString(),ClassGroupTypeEnum.VIP.getCode());
-
-		classGroup = classGroupDao.lockClassGroup(classGroup.getId());
-
 		if(Objects.isNull(classGroup)){
 			throw new BizException("班级信息错误");
 		}
+		classGroup = classGroupDao.lockClassGroup(classGroup.getId());
+		Boolean exist = classGroupStudentMapperDao.existByClassGroupIds(classGroup.getId().toString(), vipGroupBuyParams.getUserId());
+		if(exist){
+			throw new BizException("您已加入此课程");
+		}
+		VipGroup vipGroup = vipGroupDao.get(vipGroupBuyParams.getVipGroupId());
+		int courseNum = courseScheduleDao.countVipGroupCourses(vipGroup.getId().intValue(),"VIP");
+		if(vipGroup.getStatus() != VipGroupStatusEnum.APPLYING || classGroup.getDelFlag() != 1 || courseNum > 0){
+			throw new BizException("当前VIP课已无法通过购买加入,请联系教务老师");
+		}
+
 		if (list.size() > 0) {
 			StudentPaymentOrder applyOrder = list.get(list.size() - 1);
 			// 查询订单状态
@@ -2594,8 +2618,6 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
 		Date date = new Date();
 
-        VipGroup vipGroup = vipGroupDao.get(vipGroupBuyParams.getVipGroupId());
-
 		if(classGroup.getStudentNum() >= classGroup.getExpectStudentNum()){
 			throw new BizException("该VIP课人数已满,请联系教务老师!");
 		}
@@ -2765,6 +2787,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			if(classGroup.getStudentNum().equals(classGroup.getExpectStudentNum())){
 				vipGroup.setStatus(VipGroupStatusEnum.PROGRESS);
 				classGroup.setDelFlag(0);
+				VipGroupDefaultClassesUnitPrice vipGroupDefaultClassesUnitPrice = vipGroupDefaultClassesUnitPriceDao.getByVipGroupCategory(vipGroup.getVipGroupCategoryId(), vipGroup.getOrganId());
+
 				//生成课表
 				List<CourseSchedule> courseSchedules = JSON.parseArray(vipGroup.getCourseSchedulesJson(),CourseSchedule.class);
 				classGroup.setTotalClassTimes(courseSchedules.size());
@@ -2797,6 +2821,9 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 					teacherAttendance.setCourseScheduleId(courseSchedule.getId());
 					teacherAttendances.add(teacherAttendance);
 				}
+				courseScheduleTeacherSalaryDao.batchInsert(courseScheduleTeacherSalaries);
+				teacherAttendanceDao.batchInsert(teacherAttendances);
+
 				//群聊数据
 				Map<Integer,String> userRoleMap = new HashMap<Integer, String>(5);
 				if(Objects.nonNull(vipGroup.getEducationalTeacherId())){
@@ -2806,7 +2833,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 				//生成课程学员关联
 				List<CourseScheduleStudentPayment> courseScheduleStudentPayments = new ArrayList<>();
 				List<ClassGroupStudentMapper> classGroupStudents = classGroupStudentMapperDao.findByClassGroup(classGroup.getId());
-				VipGroupDefaultClassesUnitPrice vipGroupDefaultClassesUnitPrice = vipGroupDefaultClassesUnitPriceDao.getByVipGroupCategory(vipGroup.getVipGroupCategoryId(), vipGroup.getOrganId());
+
 				List<Integer> studentIdList = classGroupStudents.stream().map(e -> e.getUserId()).collect(Collectors.toList());
 				for (ClassGroupStudentMapper classGroupStudent : classGroupStudents) {
 					StudentPaymentOrder successOrder = studentPaymentOrderDao.findByStudentVipGroup(vipGroup.getId(), classGroupStudent.getUserId(), "SUCCESS");
@@ -2836,8 +2863,6 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 				studentDao.updateStudentServiceTag(null, studentIdList, YesOrNoEnum.YES.getCode());
 
 				courseScheduleStudentPaymentDao.batchInsert(courseScheduleStudentPayments);
-				courseScheduleTeacherSalaryDao.batchInsert(courseScheduleTeacherSalaries);
-				teacherAttendanceDao.batchInsert(teacherAttendances);
 
 				imGroupService.create(classGroup.getId().longValue(), null, classGroup.getName(), classGroup.getName(), vipGroup.getName(), null, null, GroupType.VIP.getCode());
 				imGroupMemberService.join(classGroup.getId().longValue(), userRoleMap);
@@ -3407,14 +3432,14 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		if(CollectionUtils.isEmpty(userCourseInfos) && vipGroup.getStatus().equals(VipGroupStatusEnum.APPLYING)){
             StudentPaymentOrder studentPaymentOrder = studentPaymentOrderDao.findByStudentVipGroup(vipGroupId, studentId, DealStatusEnum.SUCCESS.getCode());
             if(Objects.isNull(studentPaymentOrder)){
-                bigDecimal = new BigDecimal(0);
+                bigDecimal = ZERO;
             }else{
                 bigDecimal = studentPaymentOrder.getActualAmount().add(studentPaymentOrder.getBalancePaymentAmount());
             }
 			result.put("suplusCourseOriginalFee", bigDecimal);
         }else if(!CollectionUtils.isEmpty(userCourseInfos)){
-            BigDecimal historyPrice = new BigDecimal(0);
-            BigDecimal allPrice = new BigDecimal(0);
+            BigDecimal historyPrice = ZERO;
+            BigDecimal allPrice = ZERO;
             for (StudentCourseInfoDto userCourseInfo : userCourseInfos) {
                 allPrice = allPrice.add(userCourseInfo.getExpectPrice());
                 if(now.after(userCourseInfo.getStartClassTime())){
@@ -3422,8 +3447,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
                 }
             }
             bigDecimal = allPrice.subtract(historyPrice);
-            if(bigDecimal.longValue() < 0){
-                bigDecimal = new BigDecimal(0);
+            if(bigDecimal.compareTo(ZERO) < 0){
+                bigDecimal = ZERO;
             }
 			result.put("suplusCourseOriginalFee", allPrice);
         }else{
@@ -4011,16 +4036,16 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		if(Objects.isNull(vipGroupId)){
 			throw new BizException("请指定vip课程");
 		}
-		VipGroup vipGroup=vipGroupDao.get(vipGroupId);
+		VipGroup vipGroup = vipGroupDao.get(vipGroupId);
 		if(Objects.isNull(vipGroup)){
 			throw new BizException("未找到指定的vip课程");
 		}
 
 		ClassGroup classGroup = classGroupDao.findByVipGroup(vipGroupId, null);
 
-		if(classGroup.getStudentNum()>0&&(VipGroupStatusEnum.APPLYING.equals(vipGroup.getStatus()))){
-			int i = studentPaymentOrderDao.countGroupOrderWithoutFailed(vipGroupId.toString(), GroupType.VIP);
-			if(i>0){
+		if(classGroup.getStudentNum() > 0 && (VipGroupStatusEnum.APPLYING.equals(vipGroup.getStatus()))){
+			int num = studentPaymentOrderDao.countGroupOrderWithoutFailed(vipGroupId.toString(), GroupType.VIP);
+			if(num > 0){
 				throw new BizException("已有学员购买了该课程组,无法添加,请走学员购买流程!");
 			}
 		}
@@ -4037,12 +4062,12 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		}
 
         Integer exitStudentNum = classGroupStudentMapperDao.countClassGroupExitStudentNum(classGroup.getId(), studentIds);
-		if(exitStudentNum>0){
+		if(exitStudentNum > 0){
 			throw new BizException("选择的学生中存在此课程中已存在的学生");
 		}
 
         Integer studentNum = classGroupStudentMapperDao.countClassGroupStudentNum(classGroup.getId());
-        if(studentNum.compareTo(classGroup.getExpectStudentNum())>=0){
+        if(studentNum.compareTo(classGroup.getExpectStudentNum()) >= 0){
             throw new BizException("该班级人数已达上限");
         }
 		
@@ -4135,9 +4160,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			}
 
 			Integer currentStudentNum = classGroupStudentMapperDao.countClassGroupStudentNum(classGroup.getId());
-			if((!vipGroup.getStatus().equals(VipGroupStatusEnum.FINISHED)
-					||!vipGroup.getStatus().equals(VipGroupStatusEnum.CANCEL))
-					&&currentStudentNum.compareTo(classGroup.getExpectStudentNum())>=0){
+			if((!vipGroup.getStatus().equals(VipGroupStatusEnum.FINISHED) || !vipGroup.getStatus().equals(VipGroupStatusEnum.CANCEL))
+					&& currentStudentNum.compareTo(classGroup.getExpectStudentNum()) >= 0){
 				vipGroup.setStatus(VipGroupStatusEnum.PROGRESS);
 				vipGroupDao.update(vipGroup);
 			}
@@ -4155,19 +4179,11 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			return;
 		}
 
-		BigDecimal surplusCoursesPrice=new BigDecimal(0);
-		boolean hasGiveClass=false;
-		int onlineCourseTimes=0,
-			offlineCourseTimes=0,
-			onlineCourseTotalTimes=0,
-			offlineCourseTotalTimes=0,
-			giveClassTimes=0;
+		BigDecimal surplusCoursesPrice = new BigDecimal(0);
 
 		//生成学生单课缴费信息
 		for (Integer studentId:studentIds) {
-			offlineCourseTimes=0;
-			onlineCourseTimes=0;
-			surplusCoursesPrice=new BigDecimal(0);
+			surplusCoursesPrice = new BigDecimal(0);
 
 			if(studentCoursePriceMap.containsKey(studentId)){
 				VipGroupStudentCoursePrice vipGroupStudentCoursePrice = studentCoursePriceMap.get(studentId);
@@ -4179,23 +4195,6 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			for (int i = 0;i < surplusCourses.size();i++) {
 				CourseSchedule courseSchedule = surplusCourses.get(i);
 				if(courseSchedule.getTeachMode().equals(TeachModeEnum.OFFLINE)){
-					offlineCourseTimes += 1;
-				}else if(courseSchedule.getTeachMode().equals(TeachModeEnum.ONLINE)){
-					onlineCourseTimes += 1;
-				}
-				if(hasGiveClass && vipGroup.getGiveTeachMode() == courseSchedule.getTeachMode()){
-					if(courseSchedule.getTeachMode().equals(TeachModeEnum.OFFLINE)
-							&& offlineCourseTimes > (offlineCourseTotalTimes - giveClassTimes)){
-						continue;
-					}
-
-					if(hasGiveClass && vipGroup.getGiveTeachMode() == courseSchedule.getTeachMode()){
-						if(courseSchedule.getTeachMode().equals(TeachModeEnum.ONLINE) && onlineCourseTimes > (onlineCourseTotalTimes-giveClassTimes)){
-							continue;
-						}
-					}
-				}
-				if(courseSchedule.getTeachMode().equals(TeachModeEnum.OFFLINE)){
 					surplusCoursesPrice = surplusCoursesPrice.add(vipGroup.getOfflineClassesUnitPrice());
 				}else if(courseSchedule.getTeachMode().equals(TeachModeEnum.ONLINE)){
 					surplusCoursesPrice = surplusCoursesPrice.add(vipGroup.getOnlineClassesUnitPrice());
@@ -4210,42 +4209,36 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
 			sysUserCashAccountService.subtractFromCourseBalanceAndBalance(studentId,surplusCoursesPrice,PlatformCashAccountDetailTypeEnum.PAY_FEE, "后台添加学员金额扣减");
 
-			List<CourseScheduleStudentPayment> courseScheduleStudentPayments=new ArrayList<>();
+			List<CourseScheduleStudentPayment> courseScheduleStudentPayments = new ArrayList<>();
 
-			offlineCourseTimes = 0;
-			onlineCourseTimes = 0;
-			for (CourseSchedule vipGroupCourseSchedule : surplusCourses) {
-				if(vipGroupCourseSchedule.getTeachMode().equals(TeachModeEnum.OFFLINE)){
-					offlineCourseTimes += 1;
-				}else if(vipGroupCourseSchedule.getTeachMode().equals(TeachModeEnum.ONLINE)){
-					onlineCourseTimes += 1;
-				}
+			//实际支付金额,去除优惠券
+			BigDecimal divide = ZERO;
+			BigDecimal firstAmount = ZERO;
+
+			if(surplusCoursesPrice.compareTo(ZERO) > 0){
+				divide = surplusCoursesPrice.divide(new BigDecimal(surplusCourses.size()), ROUND_DOWN);
+				firstAmount = surplusCoursesPrice.subtract(divide.multiply(new BigDecimal(surplusCourses.size()))).add(divide);
+			}
+			for (int i = 0; i < surplusCourses.size(); i++) {
+				CourseSchedule vipGroupCourseSchedule = surplusCourses.get(i);
 				CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
 				courseScheduleStudentPayment.setGroupType(GroupType.VIP);
 				courseScheduleStudentPayment.setMusicGroupId(vipGroupId.toString());
 				courseScheduleStudentPayment.setClassGroupId(vipGroupCourseSchedule.getClassGroupId());
 				courseScheduleStudentPayment.setCourseScheduleId(vipGroupCourseSchedule.getId());
 				courseScheduleStudentPayment.setUserId(studentId);
+				if(i == 0){
+					courseScheduleStudentPayment.setExpectPrice(firstAmount);
+					courseScheduleStudentPayment.setActualPrice(firstAmount);
+				}else {
+					courseScheduleStudentPayment.setExpectPrice(divide);
+					courseScheduleStudentPayment.setActualPrice(divide);
+				}
                 if(vipGroupCourseSchedule.getTeachMode().equals(TeachModeEnum.OFFLINE)){
-					courseScheduleStudentPayment.setExpectPrice(vipGroup.getOfflineClassesUnitPrice());
 					courseScheduleStudentPayment.setOriginalPrice(vipGroupDefaultClassesUnitPrice.getOfflineClassesUnitPrice());
                 }else if(vipGroupCourseSchedule.getTeachMode().equals(TeachModeEnum.ONLINE)){
-					courseScheduleStudentPayment.setExpectPrice(vipGroup.getOnlineClassesUnitPrice());
 					courseScheduleStudentPayment.setOriginalPrice(vipGroupDefaultClassesUnitPrice.getOnlineClassesUnitPrice());
                 }
-				if(hasGiveClass && vipGroup.getGiveTeachMode() == vipGroupCourseSchedule.getTeachMode()){
-					if(vipGroupCourseSchedule.getTeachMode().equals(TeachModeEnum.OFFLINE)
-							&&offlineCourseTimes>(offlineCourseTotalTimes-giveClassTimes)){
-						courseScheduleStudentPayment.setExpectPrice(new BigDecimal(0));
-					}
-					if(vipGroupCourseSchedule.getTeachMode().equals(TeachModeEnum.ONLINE)
-							&&onlineCourseTimes>(onlineCourseTotalTimes-giveClassTimes)){
-						courseScheduleStudentPayment.setExpectPrice(new BigDecimal(0));
-					}
-				}
-				if(Objects.nonNull(discount)){
-                    courseScheduleStudentPayment.setExpectPrice(courseScheduleStudentPayment.getExpectPrice().multiply(discount).setScale(CommonConstants.DECIMAL_FINAL_PLACE,BigDecimal.ROUND_HALF_UP));
-                }
 				courseScheduleStudentPayment.setActualPrice(courseScheduleStudentPayment.getExpectPrice());
 				courseScheduleStudentPayment.setCreateTime(now);
 				courseScheduleStudentPayment.setUpdateTime(now);

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

@@ -162,7 +162,7 @@
 	</select>
     <select id="findByStudentIdList" resultMap="ActivityUserMapper">
 		SELECT * FROM activity_user_mapper
-		WHERE activity_id_ = #{activityId} AND FIND_IN_SET(user_id_,#{studentIds})
+		WHERE activity_id_ = #{activityId} AND return_fee_ = 0 AND FIND_IN_SET(user_id_,#{studentIds})
 		<if test="type == 'GIVE_VIP'">
 			AND give_vip_flag_ = 1
 		</if>

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

@@ -16,9 +16,6 @@
 		<result column="organ_id_" property="organId" />
 		<result column="courses_start_time_" property="coursesStartTime" />
 		<result column="courses_end_time_" property="coursesEndTime" />
-		<result column="salary_readonly_flag_" property="salaryReadonlyFlag" />
-		<result column="payment_readonly_flag_" property="paymentReadonlyFlag" />
-		<result column="give_class_pay_salary_flag_" property="giveClassPaySalaryFlag" />
 		<result column="create_time_" property="createTime" />
 		<result column="update_time_" property="updateTime" />
 		<result column="salary_settlement_json_" property="salarySettlementJson" />
@@ -68,14 +65,14 @@
 	<!-- 向数据库增加一条记录 -->
 	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.VipGroupActivity" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
 		INSERT INTO vip_group_activity (name_,description_,vip_group_category_id_list_,start_time_,end_time_,organ_id_,courses_start_time_,courses_end_time_,
-		                                salary_readonly_flag_,give_class_pay_salary_flag_,create_time_,update_time_,salary_settlement_json_,del_flag_,
-		                                payment_readonly_flag_,online_class_join_gradient_rewards_,offline_class_join_gradient_rewards_,min_course_num_,max_course_num_,
+		                                create_time_,update_time_,salary_settlement_json_,del_flag_,
+		                                online_class_join_gradient_rewards_,offline_class_join_gradient_rewards_,min_course_num_,max_course_num_,
 										student_max_used_times_, apply_to_student_type_,allow_online_to_offline_,
 										single_course_time_,discount_,full_minus_course_times_,give_course_type_,give_category_id_,give_course_num_
 										,member_rank_id_,member_time_,give_member_rank_id_,give_member_time_,course_type_,
 		                                activity_type_,give_sign_course_time_,is_pay_to_balance_,teach_mode_,give_teach_mode_,period_,give_period_,status_,market_price_,give_prize_num_)
 		VALUES(#{name},#{description},#{vipGroupCategoryIdList},#{startTime},#{endTime},#{organId},#{coursesStartTime},#{coursesEndTime},
-		       #{salaryReadonlyFlag},#{giveClassPaySalaryFlag},now(),now(),#{salarySettlementJson},#{delFlag},#{paymentReadonlyFlag},#{onlineClassJoinGradientRewards},
+		       now(),now(),#{salarySettlementJson},#{delFlag},#{onlineClassJoinGradientRewards},
 		       #{offlineClassJoinGradientRewards},#{minCourseNum},#{maxCourseNum},#{studentMaxUsedTimes},#{applyToStudentType},#{allowOnlineToOffline},
 			   #{singleCourseTime},#{discount},#{fullMinusCourseTimes},#{giveCourseType},#{giveCategoryId},#{giveCourseNum}
 				  ,#{memberRankId},#{memberTime},#{giveMemberRankId},#{giveMemberTime},#{courseType},#{activityType},#{giveSingleCourseTime},
@@ -91,11 +88,11 @@
 		give_course_type_ = #{giveCourseType},give_category_id_ = #{giveCategoryId},give_course_num_ = #{giveCourseNum},
 		activity_type_ = #{activityType},course_type_ = #{courseType},member_time_ = #{memberTime},
 		member_rank_id_ = #{memberRankId},give_member_time_ = #{giveMemberTime},give_member_rank_id_ = #{giveMemberRankId},
-		salary_readonly_flag_ = #{salaryReadonlyFlag},organ_id_ = #{organId},give_class_pay_salary_flag_ = #{giveClassPaySalaryFlag},
+		organ_id_ = #{organId},
 		courses_end_time_ = #{coursesEndTime},
 		name_ = #{name},start_time_ = #{startTime},vip_group_category_id_list_ = #{vipGroupCategoryIdList},
 		description_ = #{description},salary_settlement_json_ = #{salarySettlementJson},courses_start_time_ = #{coursesStartTime},
-		payment_readonly_flag_ = #{paymentReadonlyFlag},online_class_join_gradient_rewards_=#{onlineClassJoinGradientRewards},
+		online_class_join_gradient_rewards_=#{onlineClassJoinGradientRewards},
 		offline_class_join_gradient_rewards_=#{offlineClassJoinGradientRewards},min_course_num_=#{minCourseNum},
 		max_course_num_=#{maxCourseNum},student_max_used_times_=#{studentMaxUsedTimes},apply_to_student_type_=#{applyToStudentType},
 		allow_online_to_offline_=#{allowOnlineToOffline},end_time_ = #{endTime},market_price_ = #{marketPrice},give_prize_num_ = #{givePrizeNum},update_time_ = NOW() WHERE id_ = #{id}
@@ -309,6 +306,9 @@
 					 MAX(give_vip_flag_) give_vip_flag_,MAX(give_practice_flag_) give_practice_flag_,user_id_,teacher_id_
 			  FROM activity_user_mapper
 			  WHERE activity_id_ = #{activityId}
+			<if test="userId != null">
+				AND teacher_id_ = #{userId}
+			</if>
 			  GROUP BY user_id_) aum
 		WHERE aum.activity_id_ = #{activityId}
 		<if test="userId != null">

+ 24 - 3
mec-web/src/main/java/com/ym/mec/web/controller/education/ActivityController.java

@@ -54,13 +54,23 @@ public class ActivityController extends BaseController {
 
     @ApiOperation(value = "获取待排课的活动方案列表")
     @RequestMapping("/queryWaitCourseActivity")
-    public Object queryWaitCourseActivity(){
+    public Object queryWaitCourseActivity(String organId){
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null) {
             return failed("用户信息获取失败");
         }
         Employee employee = employeeDao.get(sysUser.getId());
-        return succeed(vipGroupActivityService.queryWaitCourseActivity(null,employee.getOrganIdList()));
+        if (organId == null) {
+            organId = employee.getOrganIdList();
+        }else if(StringUtils.isEmpty(employee.getOrganIdList())){
+            return failed("用户所在分部异常");
+        }else {
+            List<String> list = Arrays.asList(employee.getOrganIdList().split(","));
+            if(!list.containsAll(Arrays.asList(organId.split(",")))){
+                return failed("非法请求");
+            }
+        }
+        return succeed(vipGroupActivityService.queryWaitCourseActivity(null,organId));
     }
 
     @ApiOperation(value = "获取活动待排课学员数量")
@@ -70,7 +80,18 @@ public class ActivityController extends BaseController {
         if(sysUser == null){
             return failed("用户信息获取失败");
         }
-        return succeed(vipGroupActivityService.getActivityWaitCourseStudentNum(null,activityId));
+        ActivityWaitCourseStudentNumDto courseStudentNum = vipGroupActivityService.getActivityWaitCourseStudentNum(null, activityId);
+        VipGroupActivity vipGroupActivity = courseStudentNum.getVipGroupActivity();
+        Employee employee = employeeDao.get(sysUser.getId());
+        List<String> activityOrgans = Arrays.asList(vipGroupActivity.getOrganId().split(","));
+        if(StringUtils.isEmpty(employee.getOrganIdList())){
+            courseStudentNum.setEmployeeAndActivityOrganIds(StringUtils.join(activityOrgans,","));
+            return succeed(courseStudentNum);
+        }
+        List<String> employeeOrgans = Arrays.asList(employee.getOrganIdList().split(","));
+        employeeOrgans.retainAll(activityOrgans);
+        courseStudentNum.setEmployeeAndActivityOrganIds(StringUtils.join(employeeOrgans,","));
+        return succeed(courseStudentNum);
     }
 
     @ApiOperation(value = "获取活动学员课排课次数")