Ver Fonte

活动排课

zouxuan há 3 anos atrás
pai
commit
65f16d7a53

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CloudTeacherOrderDao.java

@@ -44,7 +44,7 @@ public interface CloudTeacherOrderDao extends BaseDAO<Long, CloudTeacherOrder> {
      * @param studentId
      * @return
      */
-    List<CloudTeacherOrder> getStudentCloudTeacherOrder(@Param("studentId") Integer studentId);
+    List<CloudTeacherOrder> getStudentCloudTeacherOrder(@Param("studentId") Integer studentId, @Param("musicGroupId") String musicGroupId);
     
     /**
      * 根据订单编号查询订单详情

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

@@ -54,7 +54,7 @@ public interface CloudTeacherOrderService extends BaseService<Long, CloudTeacher
      * @param studentId
      * @return
      */
-    List<CloudTeacherOrder> getStudentCloudTeacherOrder(Integer studentId);
+    List<CloudTeacherOrder> getStudentCloudTeacherOrder(Integer studentId,String musicGroupId);
 
     /**
      * 退云教练

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

@@ -157,8 +157,8 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
     }
 
     @Override
-    public List<CloudTeacherOrder> getStudentCloudTeacherOrder(Integer studentId) {
-        return cloudTeacherOrderDao.getStudentCloudTeacherOrder(studentId);
+    public List<CloudTeacherOrder> getStudentCloudTeacherOrder(Integer studentId,String musicGroupId) {
+        return cloudTeacherOrderDao.getStudentCloudTeacherOrder(studentId,musicGroupId);
     }
 
     @Override

+ 53 - 25
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -2275,39 +2275,53 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                     throw new BizException("非会员乐团不允许退云教练");
                 }
                 //删除乐团会员时长
-                studentRegistrationDao.cleanMusicMember(userId,null);
+                studentRegistrationDao.cleanMusicMember(userId,musicGroupId);
                 //退云教练费用
                 if (returnFeeDto.getMemberFee() != null) {
                     Date nowDate = new Date();
-                    List<CloudTeacherOrder> cloudTeacherOrders = cloudTeacherOrderService.getStudentCloudTeacherOrder(userId);
+                    List<CloudTeacherOrder> cloudTeacherOrders = cloudTeacherOrderService.getStudentCloudTeacherOrder(userId,musicGroupId);
                     BigDecimal orderAmount = BigDecimal.ZERO;
+                    Student student = studentDao.get(userId);
                     if(cloudTeacherOrders.size() > 0){
+                        Integer subMemberDay = 0;
                         List<CloudTeacherOrder> quitCloudTeacherOrders = new ArrayList<>();
                         for (CloudTeacherOrder cloudTeacherOrder : cloudTeacherOrders) {
                             if (cloudTeacherOrder.getEndTime() == null || DateUtil.stringToDate(DateUtil.format(cloudTeacherOrder.getEndTime(),DateUtil.ISO_EXPANDED_DATE_FORMAT),DateUtil.ISO_EXPANDED_DATE_FORMAT).compareTo(
                                     DateUtil.stringToDate(DateUtil.format(nowDate,DateUtil.ISO_EXPANDED_DATE_FORMAT),DateUtil.ISO_EXPANDED_DATE_FORMAT)) >= 0) {
                                 quitCloudTeacherOrders.add(cloudTeacherOrder);
                                 orderAmount = orderAmount.add(cloudTeacherOrder.getAmount());
+                                subMemberDay =  subMemberDay + DateUtil.daysBetween(cloudTeacherOrder.getStartTime(), cloudTeacherOrder.getEndTime());
                             }
                         }
                         cloudTeacherOrderService.quitCloudTeacherOrders(quitCloudTeacherOrders, returnFeeDto.getMemberFee());
+                        Date memberEndTime = DateUtil.addDays(studentRegistration.getMembershipEndTime(), subMemberDay);
+                        if(memberEndTime.compareTo(nowDate) < 0){
+                            //清除学员云教练
+                            studentService.cleanMember(userId);
+                            //如果有试用会员,不清除
+                            if(student.getExperienceMemberRankSettingId() != null){
+                                student.setMemberRankSettingId(student.getExperienceMemberRankSettingId());
+                                student.setMembershipStartTime(student.getExperienceMembershipStartTime());
+                                student.setMembershipEndTime(student.getExperienceMembershipEndTime());
+                                studentDao.update(student);
+                            }
+                        }else {
+                            if(student.getExperienceMemberRankSettingId() != null){
+                                if(memberEndTime.compareTo(student.getExperienceMembershipEndTime()) > 0){
+                                    student.setMembershipEndTime(memberEndTime);
+                                }else {
+                                    student.setMembershipEndTime(student.getExperienceMembershipEndTime());
+                                }
+                                studentDao.update(student);
+                            }
+                        }
                     }
                     if (returnFeeDto.getMemberFee().compareTo(orderAmount) > 0) {
                         throw new BizException("云教练退费金额不能大于原始订单金额");
                     }
                     amount = amount.add(returnFeeDto.getMemberFee());
-                    //清除学员云教练
-                    studentService.cleanMember(userId);
-                    //如果有试用会员,不清除
-                    Student student = studentDao.get(userId);
-                    if(student.getExperienceMemberRankSettingId() != null){
-                        student.setMemberRankSettingId(student.getExperienceMemberRankSettingId());
-                        student.setMembershipStartTime(student.getExperienceMembershipStartTime());
-                        student.setMembershipEndTime(student.getExperienceMembershipEndTime());
-                        studentDao.update(student);
-                    }
                 }
-            }else {
+            } else {
                 //删除乐团会员时长
                 studentRegistrationDao.cleanMusicMember(userId,musicGroupId);
             }
@@ -2597,37 +2611,51 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                 throw new BizException("非会员乐团不允许退云教练");
             }
             //删除乐团会员时长
-            studentRegistrationDao.cleanMusicMember(userId,null);
+            studentRegistrationDao.cleanMusicMember(userId,musicGroupId);
             //退云教练费用
             if (cloudTeacherAmount != null) {
                 Date nowDate = new Date();
-                List<CloudTeacherOrder> cloudTeacherOrders = cloudTeacherOrderService.getStudentCloudTeacherOrder(userId);
+                List<CloudTeacherOrder> cloudTeacherOrders = cloudTeacherOrderService.getStudentCloudTeacherOrder(userId,musicGroupId);
                 BigDecimal orderAmount = BigDecimal.ZERO;
+                Student student = studentDao.get(userId);
                 if(cloudTeacherOrders.size() > 0){
+                    Integer subMemberDay = 0;
                     List<CloudTeacherOrder> quitCloudTeacherOrders = new ArrayList<>();
                     for (CloudTeacherOrder cloudTeacherOrder : cloudTeacherOrders) {
                         if (cloudTeacherOrder.getEndTime() == null || DateUtil.stringToDate(DateUtil.format(cloudTeacherOrder.getEndTime(),DateUtil.ISO_EXPANDED_DATE_FORMAT),DateUtil.ISO_EXPANDED_DATE_FORMAT).compareTo(
                                 DateUtil.stringToDate(DateUtil.format(nowDate,DateUtil.ISO_EXPANDED_DATE_FORMAT),DateUtil.ISO_EXPANDED_DATE_FORMAT)) >= 0) {
                             quitCloudTeacherOrders.add(cloudTeacherOrder);
                             orderAmount = orderAmount.add(cloudTeacherOrder.getAmount());
+                            subMemberDay =  subMemberDay + DateUtil.daysBetween(cloudTeacherOrder.getStartTime(), cloudTeacherOrder.getEndTime());
                         }
                     }
                     cloudTeacherOrderService.quitCloudTeacherOrders(quitCloudTeacherOrders, cloudTeacherAmount);
+                    Date memberEndTime = DateUtil.addDays(studentRegistration.getMembershipEndTime(), subMemberDay);
+                    if(memberEndTime.compareTo(nowDate) < 0){
+                        //清除学员云教练
+                        studentService.cleanMember(userId);
+                        //如果有试用会员,不清除
+                        if(student.getExperienceMemberRankSettingId() != null){
+                            student.setMemberRankSettingId(student.getExperienceMemberRankSettingId());
+                            student.setMembershipStartTime(student.getExperienceMembershipStartTime());
+                            student.setMembershipEndTime(student.getExperienceMembershipEndTime());
+                            studentDao.update(student);
+                        }
+                    }else {
+                        if(student.getExperienceMemberRankSettingId() != null){
+                            if(memberEndTime.compareTo(student.getExperienceMembershipEndTime()) > 0){
+                                student.setMembershipEndTime(memberEndTime);
+                            }else {
+                                student.setMembershipEndTime(student.getExperienceMembershipEndTime());
+                            }
+                            studentDao.update(student);
+                        }
+                    }
                 }
                 if (cloudTeacherAmount.compareTo(orderAmount) > 0) {
                     throw new BizException("云教练退费金额不能大于原始订单金额");
                 }
                 amount = amount.add(cloudTeacherAmount);
-                //清除学员云教练
-                studentService.cleanMember(userId);
-                //如果有试用会员,不清除
-                Student student = studentDao.get(userId);
-                if(student.getExperienceMemberRankSettingId() != null){
-                    student.setMemberRankSettingId(student.getExperienceMemberRankSettingId());
-                    student.setMembershipStartTime(student.getExperienceMembershipStartTime());
-                    student.setMembershipEndTime(student.getExperienceMembershipEndTime());
-                    studentDao.update(student);
-                }
             }
         }else {
             //删除乐团会员时长

+ 3 - 0
mec-biz/src/main/resources/config/mybatis/CloudTeacherOrderMapper.xml

@@ -181,6 +181,9 @@
         SELECT *
         FROM cloud_teacher_order
         WHERE student_id_ = #{studentId}
+        <if test="musicGroupId != null and musicGroupId != ''">
+            music_group_id_ = #{musicGroupId}
+        </if>
           AND status_ IN (1, 2)
     </select>
 

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

@@ -149,7 +149,7 @@
 				AND (vga.id_ = #{search} OR vga.name_ LIKE CONCAT('%', #{search}, '%'))
 			</if>
 			<if test="applyToStudentType != null">
-				AND FIND_IN_SET(#{applyToStudentType},vga.apply_to_student_type_)
+				AND (FIND_IN_SET(#{applyToStudentType},vga.apply_to_student_type_) OR vga.apply_to_student_type_ IS NULL)
 			</if>
 		</where>
 	</sql>