Selaa lähdekoodia

Merge branch 'Joburgess'

Joburgess 5 vuotta sitten
vanhempi
commit
623cd1a960

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleStudentPaymentDao.java

@@ -295,4 +295,15 @@ public interface CourseScheduleStudentPaymentDao extends BaseDAO<Long, CourseSch
      * @return
      */
     String getMidiByCourseIdAndUserId(@Param("courseScheduleId") String courseScheduleId, @Param("userId") String userId);
+
+    /**
+     * @describe 统计课程组下的课程单价
+     * @author Joburgess
+     * @date 2020.06.11
+     * @param groupType:
+     * @param groupIds:
+     * @return java.util.List<java.util.Map<java.lang.String,java.math.BigDecimal>>
+     */
+    List<Map<String, BigDecimal>> findGroupCoursesUnitPrice(@Param("groupType") GroupType groupType,
+                                                            @Param("groupIds") List<String> groupIds);
 }

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

@@ -2077,22 +2077,24 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         }
         if(groupType == VIP){
 			VipGroup vipGroup = vipGroupDao.get(vipGroupCourseAdjustInfo.getVipGroupId().longValue());
-			try {
-				Map<String, BigDecimal> costInfo = vipGroupService.countVipGroupPredictFee(vipGroup,
-						courseSchedules.get(0).getActualTeacherId(),
-						vipGroup.getOnlineClassesUnitPrice(),
-						vipGroup.getOfflineClassesUnitPrice(),
-						false,true);
-				courseScheduleTeacherSalaryDao.batchUpdateCourseSalarys(courseScheduleIds,
-						vipGroupCourseAdjustInfo.getTeachMode().equals(TeachModeEnum.OFFLINE)?costInfo.get("offlineTeacherSalary"):costInfo.get("onlineTeacherSalary"));
-			} catch (Exception e) {
+
+			BigDecimal teacherSalary=BigDecimal.ZERO;
+
+			ClassGroupTeacherSalary classGroupTeacherSalary = classGroupTeacherSalaryDao.findByVipGoupAndTeacher(vipGroupCourseAdjustInfo.getVipGroupId().intValue(), courseSchedules.get(0).getActualTeacherId());
+
+			if(Objects.nonNull(classGroupTeacherSalary)){
+				teacherSalary=vipGroupCourseAdjustInfo.getTeachMode().equals(TeachModeEnum.OFFLINE)?classGroupTeacherSalary.getSalary():classGroupTeacherSalary.getOnlineClassesSalary();
+			}
+			if(teacherSalary.compareTo(BigDecimal.ZERO)<=0){
 				TeacherDefaultVipGroupSalary tdvs = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(courseSchedules.get(0).getActualTeacherId(),vipGroup.getVipGroupCategoryId());
-				if (tdvs == null) {
+				if (tdvs == null||Objects.isNull(tdvs.getOfflineClassesSalary())) {
 					throw new BizException("老师[]没有设置默认课酬,请先设置", courseSchedules.get(0).getActualTeacherId());
 				}
-				courseScheduleTeacherSalaryDao.batchUpdateCourseSalarys(courseScheduleIds,
-						vipGroupCourseAdjustInfo.getTeachMode().equals(TeachModeEnum.OFFLINE)?tdvs.getOfflineClassesSalary():tdvs.getOnlineClassesSalary());
+				teacherSalary=tdvs.getOfflineClassesSalary();
 			}
+
+			courseScheduleTeacherSalaryDao.batchUpdateCourseSalarys(courseScheduleIds, teacherSalary);
+
 		}
 
         courseScheduleDao.batchUpdate(courseSchedules);
@@ -2697,24 +2699,24 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 						if (vipGroup == null) {
 							throw new BizException("课程[{}]记录存在异常,请联系管理员", courseScheduleId);
 						}
-						try {
-							Map<String, BigDecimal> costInfo = vipGroupService.countVipGroupPredictFee(vipGroup,
-									teacherId,
-									vipGroup.getOnlineClassesUnitPrice(),
-									vipGroup.getOfflineClassesUnitPrice(),
-									false,true);
-							if (newCourseSchedule.getTeachMode() == TeachModeEnum.OFFLINE) {
-								ts.setExpectSalary(costInfo.get("offlineTeacherSalary"));
-							} else {
-								ts.setExpectSalary(costInfo.get("onlineTeacherSalary"));
-							}
-						} catch (Exception e) {
-							TeacherDefaultVipGroupSalary tdvs = map.get(vipGroup.getVipGroupCategoryId());
-							if (tdvs == null) {
+
+						BigDecimal teacherSalary=BigDecimal.ZERO;
+
+						ClassGroupTeacherSalary classGroupTeacherSalary = classGroupTeacherSalaryDao.findByVipGoupAndTeacher(vipGroup.getId().intValue(), teacherId);
+
+						if(Objects.nonNull(classGroupTeacherSalary)){
+							teacherSalary=newCourseSchedule.getTeachMode() == TeachModeEnum.OFFLINE?classGroupTeacherSalary.getSalary():classGroupTeacherSalary.getOnlineClassesSalary();
+						}
+						if(teacherSalary.compareTo(BigDecimal.ZERO)<=0){
+							TeacherDefaultVipGroupSalary tdvs = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(teacherId,vipGroup.getVipGroupCategoryId());
+							if (tdvs == null||Objects.isNull(tdvs.getOfflineClassesSalary())) {
 								throw new BizException("老师[]没有设置默认课酬,请先设置", teacherId);
 							}
-							ts.setExpectSalary(newCourseSchedule.getTeachMode() == TeachModeEnum.OFFLINE?tdvs.getOfflineClassesSalary():tdvs.getOnlineClassesSalary());
+							teacherSalary=tdvs.getOfflineClassesSalary();
 						}
+
+						courseScheduleTeacherSalaryDao.batchUpdateCourseSalarys(courseScheduleIds, teacherSalary);
+
 					} else if (newCourseSchedule.getGroupType() == PRACTICE) {
 						List<TeacherDefaultPracticeGroupSalary> teacherDefaultPracticeGroupSalaryList = teacherDefaultPracticeGroupSalaryDao
 								.queryByUserId(teacherId);

+ 2 - 22
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -967,21 +967,6 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		totalPrice=totalPrice.setScale(0,BigDecimal.ROUND_CEILING);
 		results.put("totalPrice",totalPrice);
 
-		Teacher teacher = teacherDao.get(teacherId);
-		if(!JobNatureEnum.FULL_TIME.equals(teacher.getJobNature())){
-			if(Objects.isNull(teacherDefaultVipGroupSalary)||Objects.isNull(teacherDefaultVipGroupSalary.getOnlineClassesSalary())){
-				results.put("onlineTeacherSalary", BigDecimal.ZERO);
-			}else{
-				results.put("onlineTeacherSalary", teacherDefaultVipGroupSalary.getOnlineClassesSalary());
-			}
-			if(Objects.isNull(teacherDefaultVipGroupSalary)||Objects.isNull(teacherDefaultVipGroupSalary.getOfflineClassesSalary())){
-				results.put("offlineTeacherSalary", BigDecimal.ZERO);
-			}else{
-				results.put("offlineTeacherSalary", teacherDefaultVipGroupSalary.getOfflineClassesSalary());
-			}
-			return results;
-		}
-
 		//教师课酬线上单课酬计算
 		if(Objects.nonNull(vipGroupSalarySettlementDto.getOnlineSalarySettlement())){
 			if(vipGroup instanceof VipGroupApplyBaseInfoDto&&!useDefaultTeacherSalary
@@ -992,17 +977,14 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			if(Objects.isNull(teacherOnlineSalary)){
 				switch (vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSalarySettlementType()){
 					case TEACHER_DEFAULT:
-						if(Objects.isNull(teacherDefaultVipGroupSalary)||Objects.isNull(teacherDefaultVipGroupSalary.getOnlineClassesSalary())){
+						if(Objects.isNull(teacherDefaultVipGroupSalary)||Objects.isNull(teacherDefaultVipGroupSalary.getOfflineClassesSalary())){
 							teacherOnlineSalary=new BigDecimal(0);
 						}else{
-							teacherOnlineSalary=teacherDefaultVipGroupSalary.getOnlineClassesSalary();
+							teacherOnlineSalary=teacherDefaultVipGroupSalary.getOfflineClassesSalary();
 						}
-//                        teacherOnlineSalary=teacherOnlineSalary.multiply(classTimeDuty);
 						results.put("onlineTeacherSalary",teacherOnlineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
 						break;
 					case RATIO_DISCOUNT:
-//						results.put("onlineTeacherSalary",onlineClassesUnitPrice.multiply((vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue())).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).setScale(0,BigDecimal.ROUND_HALF_UP));
-
 						results.put("onlineTeacherSalary",totalPrice.multiply(new BigDecimal(vipGroupCategory.getStudentNum())).divide(totalClassNum, CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue()).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).setScale(0,BigDecimal.ROUND_HALF_UP));
 
 						break;
@@ -1036,8 +1018,6 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 						results.put("offlineTeacherSalary",teacherOfflineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
 						break;
 					case RATIO_DISCOUNT:
-//						results.put("offlineTeacherSalary",offlineClassesUnitPrice.multiply(vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue()).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).setScale(0,BigDecimal.ROUND_HALF_UP));
-
 						results.put("offlineTeacherSalary",totalPrice.multiply(new BigDecimal(vipGroupCategory.getStudentNum())).divide(totalClassNum, CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue()).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).setScale(0,BigDecimal.ROUND_HALF_UP));
 
 						break;

+ 16 - 0
mec-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml

@@ -464,4 +464,20 @@
 		SELECT cssp.open_play_midi_ FROM course_schedule_student_payment cssp
 		WHERE cssp.user_id_ = #{userId} AND cssp.course_schedule_id_ = #{courseScheduleId}
 	</select>
+
+    <select id="findGroupCoursesUnitPrice" resultType="java.util.Map">
+		SELECT
+			music_group_id_ AS 'key',
+			CONVERT ( SUM( expect_price_ ) / COUNT( course_schedule_id_ ), DECIMAL ( 10, 2 ) ) AS 'value'
+		FROM
+			course_schedule_student_payment
+		WHERE
+			group_type_ = #{groupType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+			AND music_group_id_ IN
+			<foreach collection="groupIds" item="groupId" separator="," open="(" close=")">
+				#{groupId}
+			</foreach>
+		GROUP BY
+			music_group_id_;
+	</select>
 </mapper>