ソースを参照

Merge remote-tracking branch 'origin/master'

zouxuan 4 年 前
コミット
7de8c0c05a

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

@@ -428,4 +428,14 @@ public interface CourseScheduleStudentPaymentDao extends BaseDAO<Long, CourseSch
      * @return
      */
     List<CourseScheduleStudentPayment> queryByIdsAndStudentId(@Param("studentPaymentIds") List<Long> studentPaymentIds, @Param("studentId") Integer studentId, @Param("courseType") String courseType);
+
+    /**
+     * @describe 统计课程组已经开始的课程的应缴费用
+     * @author qnc99
+     * @date 2020/12/8 0008
+     * @param groupId:
+     * @param groupType:
+     * @return java.math.BigDecimal
+     */
+    BigDecimal countFinishCoursePriceWithMusicGroup(@Param("groupId") String groupId, @Param("groupType") GroupType groupType);
 }

+ 11 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/DegreeRegistrationServiceImpl.java

@@ -152,6 +152,11 @@ public class DegreeRegistrationServiceImpl extends BaseServiceImpl<Integer, Degr
                 }
                 degree.setStatus(0);
                 degreeRegistrationDao.update(degree);
+
+                degreeRegistration.setStatus(1);
+                degreeRegistration.setCreateTime(nowDate);
+                degreeRegistration.setUpdateTime(nowDate);
+                degreeRegistrationDao.insert(degreeRegistration);
             }
         }
 
@@ -187,6 +192,10 @@ public class DegreeRegistrationServiceImpl extends BaseServiceImpl<Integer, Degr
 
             BigDecimal practiceUnitPrice = practiceGroupSellPrice.getOnceOriginalPrice(),
                     vipUnitPrice = practiceGroupSellPrice.getVipOneStudentTwelveCourseActivityPriceWithNewUser(), highUnitPrice;
+
+            if(additionCourseInfo.containsKey(CourseSchedule.CourseScheduleType.HIGH)){
+                historyHighNum = historyHighNum + additionCourseInfo.get(CourseSchedule.CourseScheduleType.HIGH);
+            }
             if(student.getIsNewUser()){
                 highUnitPrice = practiceGroupSellPrice.getHighOnlineTenCourseOriginalPriceWithNewUser();
                 if(additionCourseInfo.containsKey(CourseSchedule.CourseScheduleType.VIP)){
@@ -195,9 +204,6 @@ public class DegreeRegistrationServiceImpl extends BaseServiceImpl<Integer, Degr
                 if(historyVipNum<=0){
                     additionCourseInfo.remove(CourseSchedule.CourseScheduleType.PRACTICE);
                 }
-                if(additionCourseInfo.containsKey(CourseSchedule.CourseScheduleType.HIGH)){
-                    historyHighNum = historyHighNum + additionCourseInfo.get(CourseSchedule.CourseScheduleType.HIGH);
-                }
                 boolean vipMoreThan2 = historyVipNum>=2;
                 if(vipMoreThan2){
                     if(FREE_PRICE_LEVEL.contains(degreeRegistration.getLevel())){
@@ -321,6 +327,8 @@ public class DegreeRegistrationServiceImpl extends BaseServiceImpl<Integer, Degr
         }
 
         if (degree == null || !degree.getStatus().equals(1)) {
+            studentPaymentOrder.setMemo("订单状态已变更");
+            studentPaymentOrderService.update(studentPaymentOrder);
             return true;
         }
         degree.setOrderNo(studentPaymentOrder.getOrderNo());

+ 18 - 12
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -6,15 +6,7 @@ import static com.ym.mec.biz.dal.enums.DealStatusEnum.SUCCESS;
 import java.io.IOException;
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
 import java.util.stream.Collectors;
 
 import org.apache.commons.lang3.StringUtils;
@@ -1613,8 +1605,15 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             
             //操作人
             SysUser operator = sysUserFeignService.queryUserInfo();
+
+            BigDecimal price = courseScheduleStudentPaymentDao.countFinishCoursePriceWithMusicGroup(musicGroupId, GroupType.MUSIC);
+            BigDecimal subtractAmount = studentRegistration.getSurplusCourseFee();
+            if(Objects.isNull(price)){
+                price = new BigDecimal(0);
+            }
+            subtractAmount = subtractAmount.subtract(price);
             
-            studentRegistrationService.updateUserSurplusCourseFee(userId, musicGroupId, studentRegistration.getSurplusCourseFee().negate(), reason, operator.getId());
+            studentRegistrationService.updateUserSurplusCourseFee(userId, musicGroupId, subtractAmount.negate(), reason, operator.getId());
             
             
             //更新服务指标、运营指标
@@ -1756,8 +1755,15 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         
         //操作人
         SysUser operator = sysUserFeignService.queryUserInfo();
-        
-        studentRegistrationService.updateUserSurplusCourseFee(userId, musicGroupId, studentRegistration.getSurplusCourseFee().negate(), reason, operator.getId());
+
+        BigDecimal price = courseScheduleStudentPaymentDao.countFinishCoursePriceWithMusicGroup(musicGroupId, GroupType.MUSIC);
+        BigDecimal subtractAmount = studentRegistration.getSurplusCourseFee();
+        if(Objects.isNull(price)){
+            price = new BigDecimal(0);
+        }
+        subtractAmount = subtractAmount.subtract(price);
+
+        studentRegistrationService.updateUserSurplusCourseFee(userId, musicGroupId, subtractAmount.negate(), reason, operator.getId());
         
         //更新服务指标、运营指标
         int remainCourseNum = courseScheduleStudentPaymentDao.countStudentNotStartCourseNumWithCourseType(userId, null);

+ 0 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java

@@ -1428,10 +1428,6 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             throw new BizException("学员注册信息不存在");
         }
 
-        if(StudentMusicGroupStatusEnum.QUIT.equals(studentRegistration.getMusicGroupStatus())){
-            return BigDecimal.ZERO;
-        }
-
         if(BigDecimal.ZERO.compareTo(amount)>0&&amount.abs().compareTo(studentRegistration.getSurplusCourseFee())>0){
             amount = studentRegistration.getSurplusCourseFee().negate();
         }

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

@@ -669,4 +669,9 @@
 		</foreach>
 		AND cssp.user_id_ = #{studentId} AND cs.type_ = #{courseType}
 	</select>
+
+	<select id="countFinishCoursePriceWithMusicGroup" resultType="java.math.BigDecimal">
+		SELECT SUM(expect_price_)-SUM(actual_price_) FROM course_schedule_student_payment
+		WHERE music_group_id_=#{groupId} AND group_type_=#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+	</select>
 </mapper>