Joburgess il y a 5 ans
Parent
commit
30f8d2d0ec

+ 47 - 32
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -136,6 +136,11 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		className.append("•");
 		className.append(vipGroupApplyBaseInfoDto.getName());
 		vipGroupApplyBaseInfoDto.setName(className.toString());
+
+		Map<String, BigDecimal> stringBigDecimalMap = countVipGroupPredictFee(vipGroupApplyBaseInfoDto,
+				vipGroupApplyBaseInfoDto.getOnlineClassesUnitPrice(),
+				vipGroupApplyBaseInfoDto.getOfflineClassesUnitPrice());
+
 		vipGroupApplyBaseInfoDto.setTotalPrice(countVipGroupPredictFee(vipGroupApplyBaseInfoDto,
 				vipGroupApplyBaseInfoDto.getOnlineClassesUnitPrice(),
 				vipGroupApplyBaseInfoDto.getOfflineClassesUnitPrice()).get("totalPrice"));
@@ -444,41 +449,51 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		BigDecimal onlineVipGroupCharge = onlineClassesUnitPrice.multiply(onlineClassNum);
 		BigDecimal offlineVipGroupCharge = offlineClassesUnitPrice.multiply(offlineClassNum);
 
-		//教师课酬线上单课酬计算
-		switch (vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSalarySettlementType()){
-			case TEACHER_DEFAULT:
-				if(Objects.isNull(teacherDefaultVipGroupSalary)){
-					throw new BizException("未设置教师默认课酬");
-				}
-				results.put("onlineTeacherSalary",teacherDefaultVipGroupSalary.getOfflineClassesSalary());
-				break;
-			case RATIO_DISCOUNT:
-				results.put("onlineTeacherSalary",onlineClassesUnitPrice.multiply((vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue())));
-				break;
-			case FIXED_SALARY:
-				results.put("onlineTeacherSalary",vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue());
-				break;
-			default:
-				throw new BizException("未指定课酬结算标准!");
+		if(vipGroup.getOnlineClassesNum()>0){
+			//教师课酬线上单课酬计算
+			switch (vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSalarySettlementType()){
+				case TEACHER_DEFAULT:
+					if(Objects.isNull(teacherDefaultVipGroupSalary)){
+						throw new BizException("未设置教师默认课酬");
+					}
+					results.put("onlineTeacherSalary",teacherDefaultVipGroupSalary.getOfflineClassesSalary());
+					break;
+				case RATIO_DISCOUNT:
+					results.put("onlineTeacherSalary",onlineClassesUnitPrice.multiply((vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue())));
+					break;
+				case FIXED_SALARY:
+					results.put("onlineTeacherSalary",vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue());
+					break;
+				default:
+					throw new BizException("未指定课酬结算标准!");
+			}
+		}else{
+			results.put("onlineTeacherSalary",new BigDecimal(0));
 		}
-		//教师线下单课酬计算
-		switch (vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSalarySettlementType()){
-			case TEACHER_DEFAULT:
-				if(Objects.isNull(teacherDefaultVipGroupSalary)){
-					throw new BizException("未设置教师默认课酬");
-				}
-				results.put("offlineTeacherSalary",teacherDefaultVipGroupSalary.getOfflineClassesSalary());
-				break;
-			case RATIO_DISCOUNT:
-				results.put("offlineTeacherSalary",offlineClassesUnitPrice.multiply(vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue()));
-				break;
-			case FIXED_SALARY:
-				results.put("offlineTeacherSalary",vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue());
-				break;
-			default:
-				throw new BizException("未指定课酬结算标准!");
+
+		if(vipGroup.getOfflineClassesNum()>0){
+			//教师线下单课酬计算
+			switch (vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSalarySettlementType()){
+				case TEACHER_DEFAULT:
+					if(Objects.isNull(teacherDefaultVipGroupSalary)){
+						throw new BizException("未设置教师默认课酬");
+					}
+					results.put("offlineTeacherSalary",teacherDefaultVipGroupSalary.getOfflineClassesSalary());
+					break;
+				case RATIO_DISCOUNT:
+					results.put("offlineTeacherSalary",offlineClassesUnitPrice.multiply(vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue()));
+					break;
+				case FIXED_SALARY:
+					results.put("offlineTeacherSalary",vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue());
+					break;
+				default:
+					throw new BizException("未指定课酬结算标准!");
+			}
+		}else{
+			results.put("offlineTeacherSalary",new BigDecimal(0));
 		}
 
+
 		//课程购买费用计算
 		BigDecimal totalPrice;
 		switch (vipGroupActivity.getType()){

+ 2 - 2
mec-biz/src/main/resources/config/mybatis/DemoGroupMapper.xml

@@ -160,10 +160,10 @@
                 AND FIND_IN_SET(dg.subject_id_,#{subjectIds})
             </if>
             <if test="startTime!=null and endTime==null">
-                AND CONCAT(dgcp.course_date_,' ',dgcp.start_time_)&gt;=#{startTime}
+                AND CONCAT(dgcp.course_date_,' ',dgcp.start_time_)&gt;=DATE_FORMAT(#{startTime},'%Y-%m-%d %H:%i:%S')
             </if>
             <if test="startTime!=null and endTime!=null">
-                AND (CONCAT(dgcp.course_date_,' ',dgcp.start_time_) BETWEEN #{startTime} AND #{endTime})
+                AND (CONCAT(dgcp.course_date_,' ',dgcp.start_time_) BETWEEN DATE_FORMAT(#{startTime},'%Y-%m-%d %H:%i:%S') AND DATE_FORMAT(#{endTime},'%Y-%m-%d %H:%i:%S'))
             </if>
         </where>
     </sql>

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

@@ -187,7 +187,7 @@
         FROM
         student_vip_group_payment svgp
         LEFT JOIN student_payment_order spo ON svgp.student_payment_order_id_=spo.id_
-        WHERE svgp.user_id_=#{userId} AND svgp.vip_group_id_=#{vipGroupId}
+        WHERE svgp.user_id_=#{userId} AND svgp.vip_group_id_=#{vipGroupId} AND spo.status_='ING'
     </select>
     <!-- 查询报名订单 -->
     <select id="findMusicGroupApplyOrderByStatus" resultMap="StudentPaymentOrder">

+ 5 - 0
mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml

@@ -251,6 +251,10 @@
 		SELECT COUNT(*) FROM vip_group
 	</select>
 
+    <select id="getLockVipGroup" resultMap="VipGroup">
+      SELECT * FROM vip_group WHERE id_=#{vipGroupId} FOR UPDATE
+    </select>
+
     <sql id="studentVipGroupQueryCondition">
         <where>
             vg.status_!=3
@@ -407,6 +411,7 @@
             LEFT JOIN teacher t ON vg.user_id_=t.id_
           LEFT JOIN sys_user su ON vg.user_id_=su.id_
         WHERE vg.id_=#{vipGroupId}
+        ORDER BY start_class_time_
     </select>
     <select id="countSurplusClassTimes" resultType="java.util.Map">
         SELECT