Selaa lähdekoodia

Merge branch 'system_fee' of http://git.dayaedu.com/yonge/mec into goods_organ

zouxuan 4 vuotta sitten
vanhempi
commit
332181dadb
17 muutettua tiedostoa jossa 205 lisäystä ja 87 poistoa
  1. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroup.java
  2. 4 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/CourseViewTypeEnum.java
  3. 45 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/MusicGroupQueryInfo.java
  4. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/service/SysConfigService.java
  5. 7 5
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CloudTeacherOrderServiceImpl.java
  6. 6 7
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  7. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExtracurricularExercisesReplyServiceImpl.java
  8. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java
  9. 30 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupSchoolTermCourseDetailServiceImpl.java
  10. 62 54
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  11. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentCourseHomeworkServiceImpl.java
  12. 1 7
      mec-biz/src/main/resources/config/mybatis/CloudTeacherOrderMapper.xml
  13. 2 2
      mec-biz/src/main/resources/config/mybatis/IndexBaseMonthDataMapper.xml
  14. 14 1
      mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml
  15. 1 1
      mec-biz/src/main/resources/config/mybatis/MusicGroupPaymentCalenderMapper.xml
  16. 3 2
      mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml
  17. 11 0
      mec-student/src/main/java/com/ym/mec/student/controller/StudentManageController.java

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroup.java

@@ -180,6 +180,17 @@ public class MusicGroup {
 
 	private Boolean hasVerifyMusicalList = false;
 
+	//0云教练1云教练+
+	private Integer cloudTeacherType;
+
+	public Integer getCloudTeacherType() {
+		return cloudTeacherType;
+	}
+
+	public void setCloudTeacherType(Integer cloudTeacherType) {
+		this.cloudTeacherType = cloudTeacherType;
+	}
+
 	@ApiModelProperty(value = "进行中,缴费按钮控制",required = true)
 	private Boolean isRemedy = false;
 

+ 4 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/CourseViewTypeEnum.java

@@ -4,10 +4,11 @@ import com.ym.mec.common.enums.BaseEnum;
 
 public enum CourseViewTypeEnum implements BaseEnum<Integer, CourseViewTypeEnum> {
 //    COURSE_lIST(0, "课程详情", 2),
-//    AMR(1, "器乐练习系统", 4),
-//    CLOUD_TEACHER(2, "云教练收费", 4),
     COURSE_FEE(0, "课程收费", 2),
-    MEMBER_FEE(1, "会员收费", 4);
+    AMR(1, "器乐练习系统", 3),
+//    CLOUD_TEACHER(2, "云教练收费", 4),
+
+    MEMBER_FEE(2, "会员收费", 4);
 //    CLOUD_TEACHER_PLUS(3, "云教练+收费", 5);
 
     private Integer code;

+ 45 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/page/MusicGroupQueryInfo.java

@@ -1,12 +1,14 @@
 package com.ym.mec.biz.dal.page;
 
-import com.ym.mec.biz.dal.enums.CourseViewTypeEnum;
-import com.ym.mec.biz.dal.enums.MusicGroupStatusEnum;
-import com.ym.mec.common.page.QueryInfo;
 import io.swagger.annotations.ApiModelProperty;
 
+import java.util.Date;
 import java.util.List;
 
+import com.ym.mec.biz.dal.enums.CourseViewTypeEnum;
+import com.ym.mec.biz.dal.enums.MusicGroupStatusEnum;
+import com.ym.mec.common.page.QueryInfo;
+
 public class MusicGroupQueryInfo extends QueryInfo {
 
     @ApiModelProperty(value = "所属分部编号",required = false)
@@ -36,6 +38,14 @@ public class MusicGroupQueryInfo extends QueryInfo {
     private String searchType;
 
     private CourseViewTypeEnum courseViewType;
+    
+    private Date createStartDate;
+    
+    private Date createEndDate;
+    
+    private Date billStartDate;
+    
+    private Date billEndDate;
 
     public CourseViewTypeEnum getCourseViewType() {
         return courseViewType;
@@ -124,4 +134,36 @@ public class MusicGroupQueryInfo extends QueryInfo {
     public void setMusicGroupStatus(String musicGroupStatus) {
         this.musicGroupStatus = musicGroupStatus;
     }
+
+	public Date getCreateStartDate() {
+		return createStartDate;
+	}
+
+	public void setCreateStartDate(Date createStartDate) {
+		this.createStartDate = createStartDate;
+	}
+
+	public Date getCreateEndDate() {
+		return createEndDate;
+	}
+
+	public void setCreateEndDate(Date createEndDate) {
+		this.createEndDate = createEndDate;
+	}
+
+	public Date getBillStartDate() {
+		return billStartDate;
+	}
+
+	public void setBillStartDate(Date billStartDate) {
+		this.billStartDate = billStartDate;
+	}
+
+	public Date getBillEndDate() {
+		return billEndDate;
+	}
+
+	public void setBillEndDate(Date billEndDate) {
+		this.billEndDate = billEndDate;
+	}
 }

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SysConfigService.java

@@ -218,6 +218,8 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
 
     //会员结束前15天提醒学员续费(默认提前15天)
     String PUSH_MEMBER_RENEW = "push_member_renew";
+    //会员结束前15天提醒学员续费(默认提前5天)
+    String PUSH_MEMBER_RENEW_AGAIN = "push_member_renew_again";
 
     //会员结束前5天提醒学员续费(退团提醒)(默认提前5天)
     String PUSH_MEMBER_RENEW_QUIT = "push_member_renew_quit";

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

@@ -192,11 +192,13 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
             }
             int days = DateUtil.daysBetween(DateUtil.trunc(nowDate), cloudTeacherOrder.getEndTime());
             CloudTeacher cloudTeacher = cloudTeacherDao.getByStudentId(cloudTeacherOrder.getStudentId());
-            Date endDate = DateUtil.addDays(cloudTeacherOrder.getEndTime(), -days);
-            cloudTeacher.setEndTime(endDate);
-            cloudTeacher.setUpdateTime(nowDate);
-            if (cloudTeacherDao.update(cloudTeacher) <= 0) {
-                throw new BizException("云教练服务有效期更新失败,请重试");
+            if(cloudTeacher != null){
+                Date endDate = DateUtil.addDays(cloudTeacherOrder.getEndTime(), -days);
+                cloudTeacher.setEndTime(endDate);
+                cloudTeacher.setUpdateTime(nowDate);
+                if (cloudTeacherDao.update(cloudTeacher) <= 0) {
+                    throw new BizException("云教练服务有效期更新失败,请重试");
+                }
             }
         }
         return true;

+ 6 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -220,17 +220,10 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
         int normalRemindNum = studentAttendanceDao.countNormalRemindNum(courseID);
         currentCourseDetail.setNormalRemind(normalRemindNum<=0?0:1);
-
-		CourseSchedule courseSchedule = courseScheduleDao.get(courseID);
-		MusicGroup musicGroup = musicGroupDao.get(courseSchedule.getMusicGroupId());
-		if(musicGroup != null){
-			currentCourseDetail.setCourseViewType(musicGroup.getCourseViewType());
-		}
 		currentCourseDetail.setCurrentTime(new Date());
         currentCourseDetail.setAdvanceSignInMinutes(Integer.parseInt(sysConfigDao.findConfigValue(SysConfigService.ADVANCE_SIGN_IN_MINUTES)));
 		currentCourseDetail.setAttendanceRange(CourseScheduleType.VIP.equals(currentCourseDetail.getCourseType())?Integer.parseInt(sysConfigDao.findConfigValue(SysConfigService.ATTENDANCE_RANGE_VIP)):Integer.parseInt(sysConfigDao.findConfigValue(SysConfigService.ATTENDANCE_RANGE)));
         currentCourseDetail.setAdvanceSignOutMinutes(Integer.parseInt(sysConfigDao.findConfigValue(SysConfigService.ADVANCE_SIGN_OUT_MINUTES)));
-		List<BasicUserDto> students = courseScheduleStudentPaymentDao.findStudents(courseID);
 		//获取有会员的学员数
 		String configValue = sysConfigDao.findConfigValue(SysConfigService.HOMEWORK_OPEN_FLAG);
 		if(StringUtils.isEmpty(configValue)){
@@ -239,6 +232,12 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		if(configValue.equals("0")){
 			currentCourseDetail.setMemberNum(0);
 		}else {
+			CourseSchedule courseSchedule = courseScheduleDao.get(courseID);
+			MusicGroup musicGroup = musicGroupDao.get(courseSchedule.getMusicGroupId());
+			if(musicGroup != null){
+				currentCourseDetail.setCourseViewType(musicGroup.getCourseViewType());
+			}
+			List<BasicUserDto> students = courseScheduleStudentPaymentDao.findStudents(courseID);
 			currentCourseDetail.setMemberNum(studentDao.getMemberNum(StringUtils.join(students, ",")));
 		}
 		return currentCourseDetail;

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

@@ -112,11 +112,11 @@ public class ExtracurricularExercisesReplyServiceImpl extends BaseServiceImpl<Lo
 		if(configValue.equals("0")){
 			detail.setHasMember(0);
 		}else {
+			detail.setMusicScoreId(extraExerciseReply.getMusicScoreId());
+			detail.setMusicScoreName(extraExerciseReply.getMusicScoreName());
 			Student student = studentDao.get(extraExerciseReply.getUserId());
 			detail.setHasMember(student.getMemberRankSettingId()==null?0:1);
 		}
-		detail.setMusicScoreId(extraExerciseReply.getMusicScoreId());
-		detail.setMusicScoreName(extraExerciseReply.getMusicScoreName());
 		return detail;
 	}
 

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

@@ -789,6 +789,8 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 							tempPccs.setCourseCurrentPrice(pccs.getCourseCurrentPrice().divide(new BigDecimal(times), 0, BigDecimal.ROUND_DOWN));
 							tempPccs.setCourseOriginalPrice(pccs.getCourseOriginalPrice().divide(new BigDecimal(times), 0, BigDecimal.ROUND_DOWN));
 							tempPccs.setCourseTotalMinuties(pccs.getCourseTotalMinuties() / times);
+						} else {
+							continue;
 						}
 					}
 					totalPaymentAmount = totalPaymentAmount.add(tempPccs.getCourseCurrentPrice());

+ 30 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupSchoolTermCourseDetailServiceImpl.java

@@ -217,6 +217,36 @@ public class MusicGroupSchoolTermCourseDetailServiceImpl extends BaseServiceImpl
 					null,
 					"STUDENT",pushMemberRenew);
 		}
+		//会员结束前15天提醒学员续费
+		String pushMemberRenewAgain = sysConfigDao.findConfigValue(SysConfigService.PUSH_MEMBER_RENEW_AGAIN);
+		if(StringUtils.isEmpty(pushMemberRenewAgain)){
+			pushMemberRenewAgain = "5";
+		}
+		List<Integer> studentIdList = studentDao.queryPushMemberRenew(pushMemberRenewAgain);
+		if(studentIdList.size() > 0){
+			Map<Integer, String> studentPhoneMap = MapUtil.convertMybatisMap(teacherDao.queryPhoneByIds(StringUtils.join(studentIdList,",")));
+			Map<Integer,String> userMap = new HashMap<>(studentIdList.size());
+			Map<Integer,String> userMap1 = new HashMap<>(studentIdList.size());
+			for (Integer studentId : studentIdList) {
+				userMap.put(studentId,studentPhoneMap.get(studentId));
+				userMap1.put(studentId,studentId.toString());
+			}
+			sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS,
+					MessageTypeEnum.STUDENT_MEMBER_RENEW_MESSAGE,
+					userMap,
+					null,
+					0,
+					null,
+					null,pushMemberRenewAgain);
+
+			sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG,
+					MessageTypeEnum.STUDENT_MEMBER_RENEW_MESSAGE,
+					userMap1,
+					null,
+					0,
+					null,
+					"STUDENT",pushMemberRenewAgain);
+		}
 	}
 
 	private MusicGroupSchoolTermCourseDetail getCourseDetail(MusicGroupSchoolTermCourseDetail courseDetail){

+ 62 - 54
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -1936,7 +1936,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             if (hasPaid && musicGroupSubjectPlan != null) {
                 musicGroupSubjectPlan.setUpdateTime(date);
                 //减去缴费人数(器乐收费,0元时不减缴费人数)
-                if (musicGroup.getCourseViewType().equals(CourseViewTypeEnum.MEMBER_FEE) || musicGroup.getCourseViewType().equals(CourseViewTypeEnum.MEMBER_FEE)) {
+                if (musicGroup.getCourseViewType() == CourseViewTypeEnum.MEMBER_FEE) {
                     if (studentPaymentOrder != null && studentPaymentOrder.getPaymentAccountNo() != null && studentPaymentOrder.getPaymentAccountNo().equals("200")) {
                         musicGroupSubjectPlan.setPaidZeroNum(musicGroupSubjectPlan.getPaidZeroNum() - 1);
                         musicGroupSubjectPlan.setPaidStudentNum(musicGroupSubjectPlan.getPaidStudentNum() - 1);
@@ -1954,6 +1954,32 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                 groupEventSource.musicGroupStudentChangeEvent(musicGroupId, StudentMusicGroupStatusEnum.QUIT, new ArrayList<>(Arrays.asList(userId)));
 
             }
+
+            if(isRefundMemberFee){
+                //退云教练费用
+                if (cloudTeacherAmount != null) {
+                    Date nowDate = new Date();
+                    List<CloudTeacherOrder> cloudTeacherOrders = cloudTeacherOrderService.getStudentCloudTeacherOrder(userId, musicGroupId);
+                    BigDecimal orderAmount = BigDecimal.ZERO;
+                    if(cloudTeacherOrders.size() > 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());
+                            }
+                        }
+                        cloudTeacherOrderService.quitCloudTeacherOrders(quitCloudTeacherOrders, cloudTeacherAmount);
+                    }
+                    if (cloudTeacherAmount.compareTo(orderAmount) > 0) {
+                        throw new BizException("云教练退费金额不能大于原始订单金额");
+                    }
+                    amount = amount.add(cloudTeacherAmount);
+                    //清除学员云教练
+                    studentService.cleanMember(userId);
+                }
+            }
             if (currentStudentMusicGroupStatus != StudentMusicGroupStatusEnum.NORMAL) {
                 return true;
             }
@@ -2015,32 +2041,6 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                 }
             }
 
-            if(isRefundMemberFee){
-                //退云教练费用
-                if (cloudTeacherAmount != null) {
-                    Date nowDate = new Date();
-                    List<CloudTeacherOrder> cloudTeacherOrders = cloudTeacherOrderService.getStudentCloudTeacherOrder(userId, musicGroupId);
-                    BigDecimal orderAmount = BigDecimal.ZERO;
-                    if(cloudTeacherOrders.size() > 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());
-                            }
-                        }
-                        cloudTeacherOrderService.quitCloudTeacherOrders(quitCloudTeacherOrders, cloudTeacherAmount);
-                    }
-                    if (cloudTeacherAmount.compareTo(orderAmount) > 0) {
-                        throw new BizException("云教练退费金额不能大于原始订单金额");
-                    }
-                    amount = amount.add(cloudTeacherAmount);
-                    //清除学员云教练
-                    studentService.cleanMember(userId);
-                }
-            }
-
             if (amount.doubleValue() > 0) {
                 // 增加交易流水
                 sysUserCashAccountDetailService.addCashAccountDetail(userId, amount, SysUserCashAccountDetailService.MUSIC_GROUP + musicGroupId, "",
@@ -2189,7 +2189,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         if (hasPaid && musicGroupSubjectPlan != null) {
             musicGroupSubjectPlan.setUpdateTime(date);
             //减去缴费人数(器乐收费,0元时不减缴费人数)
-            if (musicGroup.getCourseViewType().equals(CourseViewTypeEnum.MEMBER_FEE) || musicGroup.getCourseViewType().equals(CourseViewTypeEnum.MEMBER_FEE)) {
+            if (musicGroup.getCourseViewType() == CourseViewTypeEnum.MEMBER_FEE) {
                 if (studentPaymentOrder != null && studentPaymentOrder.getPaymentAccountNo() != null && studentPaymentOrder.getPaymentAccountNo().equals("200")) {
                     musicGroupSubjectPlan.setPaidZeroNum(musicGroupSubjectPlan.getPaidZeroNum() - 1);
                     musicGroupSubjectPlan.setPaidStudentNum(musicGroupSubjectPlan.getPaidStudentNum() - 1);
@@ -2206,6 +2206,31 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             //统计变更学员数
             groupEventSource.musicGroupStudentChangeEvent(musicGroupId, StudentMusicGroupStatusEnum.QUIT, new ArrayList<>(Arrays.asList(userId)));
         }
+        if (isRefundMemberFee){
+            //退云教练费用
+            if (cloudTeacherAmount != null) {
+                Date nowDate = new Date();
+                List<CloudTeacherOrder> cloudTeacherOrders = cloudTeacherOrderService.getStudentCloudTeacherOrder(userId, musicGroupId);
+                BigDecimal orderAmount = BigDecimal.ZERO;
+                if(cloudTeacherOrders.size() > 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());
+                        }
+                    }
+                    cloudTeacherOrderService.quitCloudTeacherOrders(quitCloudTeacherOrders, cloudTeacherAmount);
+                }
+                if (cloudTeacherAmount.compareTo(orderAmount) > 0) {
+                    throw new BizException("云教练退费金额不能大于原始订单金额");
+                }
+                amount = amount.add(cloudTeacherAmount);
+                //清除学员云教练
+                studentService.cleanMember(userId);
+            }
+        }
 
         if (currentStudentMusicGroupStatus != StudentMusicGroupStatusEnum.NORMAL) {
             return true;
@@ -2268,32 +2293,6 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             }
         }
 
-        if (isRefundMemberFee){
-            //退云教练费用
-            if (cloudTeacherAmount != null) {
-                Date nowDate = new Date();
-                List<CloudTeacherOrder> cloudTeacherOrders = cloudTeacherOrderService.getStudentCloudTeacherOrder(userId, musicGroupId);
-                BigDecimal orderAmount = BigDecimal.ZERO;
-                if(cloudTeacherOrders.size() > 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());
-                        }
-                    }
-                    cloudTeacherOrderService.quitCloudTeacherOrders(quitCloudTeacherOrders, cloudTeacherAmount);
-                }
-                if (cloudTeacherAmount.compareTo(orderAmount) > 0) {
-                    throw new BizException("云教练退费金额不能大于原始订单金额");
-                }
-                amount = amount.add(cloudTeacherAmount);
-                //清除学员云教练
-                studentService.cleanMember(userId);
-            }
-        }
-
         if (amount.doubleValue() > 0) {
             // 增加交易流水
             sysUserCashAccountDetailService.addCashAccountDetail(userId, amount, SysUserCashAccountDetailService.MUSIC_GROUP + musicGroupId, "",
@@ -2950,6 +2949,15 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                 musicGroupPaymentCalenderCourseSettingsDao.deleteByMusicGroupPaymentCalenderId(calenderIds);
             }
         }
+        //课程团和amr可以互相修改,但不可以改为会员团
+        if(group.getCourseViewType() != musicGroup.getCourseViewType()){
+            if(group.getCourseViewType() == CourseViewTypeEnum.MEMBER_FEE){
+                throw new BizException("会员收费乐团不可更改收费模式");
+            }
+            if(musicGroup.getCourseViewType() == CourseViewTypeEnum.MEMBER_FEE){
+                throw new BizException("当前乐团收费模式不可更改为会员收费");
+            }
+        }
         musicGroup.setUpdateTime(date);
         musicGroupDao.update(musicGroup);
         // 删除乐团付费主体列表

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

@@ -215,6 +215,8 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
             configValue = "0";
         }
         if(configValue.equals("0")){
+            courseHomeworkStudentDetail.setMusicScoreId(null);
+            courseHomeworkStudentDetail.setMusicScoreName(null);
             courseHomeworkStudentDetail.setHasMember(0);
         }else {
             Student student = studentDao.get(userId.intValue());

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

@@ -177,13 +177,7 @@
     <select id="getStudentCloudTeacherOrder" resultMap="CloudTeacherOrder">
         SELECT *
         FROM cloud_teacher_order
-        WHERE order_id_ IN (
-            SELECT id_
-            FROM student_payment_order
-            WHERE status_ = 'SUCCESS'
-              AND user_id_ = #{studentId}
-        )
-          AND student_id_ = #{studentId}
+        WHERE student_id_ = #{studentId}
           AND status_ IN (1, 2)
     </select>
 

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

@@ -1371,7 +1371,7 @@
 			</foreach>
 		</if>
 		GROUP BY DATE_FORMAT(spo.pay_time_,'%Y-%m-%d')
-		UNION
+		UNION ALL
 		SELECT spo.organ_id_,SUM(CASE WHEN spo.actual_amount_ IS NULL THEN 0 ELSE spo.actual_amount_ END +
 		CASE WHEN spo.balance_payment_amount_ IS NULL THEN 0 ELSE spo.balance_payment_amount_ END) total_num_
 		,DATE_FORMAT(spo.pay_time_,'%Y-%m-%d') month_
@@ -1403,7 +1403,7 @@
 			</foreach>
 		</if>
 		GROUP BY DATE_FORMAT(spo.pay_time_,'%Y-%m-%d')
-		UNION
+		UNION ALL
 		SELECT spo.organ_id_,SUM(CASE WHEN spod.price_ IS NULL THEN 0 ELSE spod.price_ END) total_num_,DATE_FORMAT(spo.pay_time_,'%Y-%m-%d') month_
 		FROM student_payment_order spo
 			   LEFT JOIN student_payment_order_detail spod ON spo.id_ = spod.payment_order_id_

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

@@ -40,6 +40,7 @@
         <result column="payment_valid_end_date_" property="paymentValidEndDate"/>
         <result column="payment_pattern_" property="paymentPattern"/>
         <result column="is_classroom_lessons_" property="isClassroomLessons"/>
+        <result column="cloud_teacher_type_" property="cloudTeacherType"/>
         <result column="course_view_type_" property="courseViewType"
                 typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
     </resultMap>
@@ -241,6 +242,18 @@
                     #{musicGroupId}
                 </foreach>
             </if>
+            <if test="createStartDate!=null">
+                AND date(transaction_teacher_id_) &gt;= #{createStartDate}
+            </if>
+            <if test="createEndDate!=null">
+                AND date(transaction_teacher_id_) &lt;= #{createEndDate}
+            </if>
+            <if test="billStartDate!=null">
+                AND date(bill_start_date_) &gt;= #{billStartDate}
+            </if>
+            <if test="billEndDate!=null">
+                AND date(bill_start_date_) &lt;= #{billEndDate}
+            </if>
         </where>
     </sql>
 
@@ -882,7 +895,7 @@
     </select>
     <sql id="queryMusicMemberListSql">
         <where>
-            sr.music_group_status_ = 'NORMAL' AND mg.course_view_type_ = 1
+            sr.music_group_status_ = 'NORMAL' AND mg.course_view_type_ = 2
             AND mg.status_ = 'PROGRESS'
             <if test="search != null and search != ''">
                 AND (mg.name_ LIKE CONCAT('%',#{search},'%') OR mg.id_ LIKE CONCAT('%',#{search},'%') OR su.username_ LIKE CONCAT('%',#{search},'%') OR su.id_ = #{search})

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

@@ -499,7 +499,7 @@
     </select>
     <select id="queryAuditList" resultMap="MusicGroupPaymentCalenderAuditDtoMap">
         SELECT mgpc.batch_no_,MAX(mgpc.music_group_id_) music_group_id_
-        ,MAX(mgpc.create_time_) create_time_,MAX(mgpc.payment_type_) payment_type_,MAX(mgpc.operator_) operator_,
+        ,MAX(mgpc.create_time_) create_time_,MIN(mgpc.payment_type_) payment_type_,MAX(mgpc.operator_) operator_,
         MAX(mgpc.pay_user_type_) pay_user_type_,MAX(mgpc.memo_) memo_,MAX(mgpc.audit_memo_) audit_memo_,MAX(mgpc.status_) status_,
         CASE WHEN MAX(mgpc.payment_type_) = 'SPAN_GROUP_CLASS_ADJUST' THEN MAX(mgsca.master_class_course_times_) ELSE SUM(mgpccs.course_total_minuties_) END course_total_minuties_,
         CASE WHEN MAX(mgpc.payment_type_) = 'SPAN_GROUP_CLASS_ADJUST' THEN MAX(mgpc.payment_amount_) ELSE SUM(mgpccs.course_original_price_) END course_original_price_,

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

@@ -1512,7 +1512,8 @@
     <select id="checkHasMemberGroup" resultType="java.lang.Boolean">
         SELECT COUNT(sr.id_) > 0 FROM student_registration sr
         LEFT JOIN music_group mg ON mg.id_ = sr.music_group_id_
-        WHERE sr.music_group_id_ != #{musicGroupId} AND sr.music_group_status_ != 'QUIT' AND sr.user_id_ = #{userId} AND mg.course_view_type_ = 1
+        WHERE sr.music_group_id_ != #{musicGroupId} AND sr.music_group_status_ != 'QUIT'
+          AND sr.user_id_ = #{userId} AND mg.course_view_type_ = 2
     </select>
 
     <!-- 获取报名相关数据 -->
@@ -1540,7 +1541,7 @@
         SELECT sr.music_group_id_,sr.user_id_ FROM student_registration sr
         LEFT JOIN music_group mg ON mg.id_ = sr.music_group_id_
         LEFT JOIN cloud_teacher_order cto ON cto.student_id_ = sr.user_id_ AND cto.status_ IN (1,2)
-        WHERE sr.music_group_status_ = 'NORMAL' AND mg.course_view_type_ = 1
+        WHERE sr.music_group_status_ = 'NORMAL' AND mg.course_view_type_ = 2
         AND mg.status_ = 'PROGRESS'
         <if test="educationUserId != null">
             AND mg.educational_teacher_id_ = #{educationUserId}

+ 11 - 0
mec-student/src/main/java/com/ym/mec/student/controller/StudentManageController.java

@@ -27,6 +27,7 @@ import com.ym.mec.biz.dal.dto.CashAccountDetail;
 import com.ym.mec.biz.dal.entity.AppVersionInfo;
 import com.ym.mec.biz.dal.entity.MemberRankSetting;
 import com.ym.mec.biz.dal.entity.Student;
+import com.ym.mec.biz.dal.entity.SysConfig;
 import com.ym.mec.biz.dal.entity.SysSuggestion;
 import com.ym.mec.biz.dal.entity.SysUserBankCard;
 import com.ym.mec.biz.service.AppVersionInfoService;
@@ -38,6 +39,7 @@ import com.ym.mec.biz.service.OrganizationService;
 import com.ym.mec.biz.service.StudentManageService;
 import com.ym.mec.biz.service.StudentService;
 import com.ym.mec.biz.service.SubjectService;
+import com.ym.mec.biz.service.SysConfigService;
 import com.ym.mec.biz.service.SysSuggestionService;
 import com.ym.mec.biz.service.SysUserBankCardService;
 import com.ym.mec.biz.service.SysUserCashAccountDetailService;
@@ -85,6 +87,9 @@ public class StudentManageController extends BaseController {
     
     @Autowired
     private MemberRankPrivilegesService memberRankPrivilegesService;
+    
+    @Autowired
+    private SysConfigService sysConfigService;
 
     private final static Logger LOGGER = LoggerFactory.getLogger(StudentManageController.class);
 
@@ -166,6 +171,12 @@ public class StudentManageController extends BaseController {
 		} else {
 			datas.put("userPrivileges", memberRankPrivilegesService.queryByMemberRankId(student.getMemberRankSettingId()));
 		}
+		SysConfig sysConfig = sysConfigService.findByParamName(SysConfigService.HOMEWORK_OPEN_FLAG);
+		if (sysConfig == null) {
+			datas.put("homeworkOpenFlag", 0);
+		} else {
+			datas.put("homeworkOpenFlag", Integer.parseInt(sysConfig.getParanValue()));
+		}
 
 		return succeed(datas);
 	}