Bladeren bron

Merge remote-tracking branch 'origin/master'

Joburgess 5 jaren geleden
bovenliggende
commit
3f01e8fcb7
35 gewijzigde bestanden met toevoegingen van 508 en 90 verwijderingen
  1. 5 24
      mec-auth/mec-auth-server/src/main/resources/logback-spring.xml
  2. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleStudentPaymentDao.java
  3. 6 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupPaymentCalenderDetailDao.java
  4. 9 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupStudentFeeDao.java
  5. 8 4
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java
  6. 65 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/FeeStudentDto.java
  7. 33 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/RongyunBasicUserDto.java
  8. 87 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentMusicDetailDto.java
  9. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroup.java
  10. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupPaymentCalender.java
  11. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SporadicChargeInfo.java
  12. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/SporadicChargeInfoQueryInfo.java
  13. 14 0
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupPaymentCalenderDetailService.java
  14. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/service/SporadicChargeInfoService.java
  15. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentRegistrationService.java
  16. 20 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderDetailServiceImpl.java
  17. 28 32
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java
  18. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SporadicChargeInfoImpl.java
  19. 6 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  20. 13 0
      mec-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml
  21. 3 0
      mec-biz/src/main/resources/config/mybatis/MusicGroupPaymentCalenderDetailMapper.xml
  22. 25 0
      mec-biz/src/main/resources/config/mybatis/MusicGroupStudentFeeMapper.xml
  23. 7 0
      mec-biz/src/main/resources/config/mybatis/SporadicChargeInfo.xml
  24. 23 0
      mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml
  25. 7 3
      mec-im/src/main/java/com/ym/controller/RoomController.java
  26. 2 2
      mec-im/src/main/java/com/ym/dao/RoomMemberDao.java
  27. 1 0
      mec-im/src/main/java/com/ym/pojo/RoomMember.java
  28. 2 0
      mec-im/src/main/java/com/ym/pojo/RoomResult.java
  29. 24 12
      mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java
  30. 8 0
      mec-im/src/main/java/com/ym/service/RoomService.java
  31. 8 8
      mec-student/src/main/java/com/ym/mec/student/controller/StudentOrderController.java
  32. 6 0
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherManageController.java
  33. 2 0
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/adapay/Pay.java
  34. 15 0
      mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupPaymentCalenderDetailController.java
  35. 8 0
      mec-web/src/main/java/com/ym/mec/web/controller/SporadicChargeInfoController.java

+ 5 - 24
mec-auth/mec-auth-server/src/main/resources/logback-spring.xml

@@ -27,29 +27,10 @@
 		</encoder>
 	</appender>
 
-	<logger name="com.ym.mec" level="INFO" />
-
-	<!--开发环境:打印控制台 -->
-	<springProfile name="dev">
-		<root level="INFO">
-			<appender-ref ref="stdout" />
-			<appender-ref ref="file" />
-		</root>
-	</springProfile>
-	
-	<springProfile name="test">
-		<root level="INFO">
-			<appender-ref ref="stdout" />
-			<appender-ref ref="file" />
-		</root>
-	</springProfile>
-
-	<!--生产环境:输出到文件 -->
-	<springProfile name="prod">
-		<root level="WARN">
-			<appender-ref ref="stdout" />
-			<appender-ref ref="file" />
-		</root>
-	</springProfile>
+	<logger name="com.ym.mec" level="DEBUG" />
+	<root level="DEBUG">
+		<appender-ref ref="stdout" />
+		<appender-ref ref="file" />
+	</root>
 
 </configuration>

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

@@ -306,4 +306,12 @@ public interface CourseScheduleStudentPaymentDao extends BaseDAO<Long, CourseSch
      */
     List<Map<String, BigDecimal>> findGroupCoursesUnitPrice(@Param("groupType") GroupType groupType,
                                                             @Param("groupIds") List<String> groupIds);
+
+    /**
+     * 获取未进入教室的学员列表
+     * @param roomId
+     * @param courseScheduleId
+     * @return
+     */
+    List<RongyunBasicUserDto> queryNoJoinStu(@Param("roomId") String roomId, @Param("courseScheduleId") String courseScheduleId);
 }

+ 6 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupPaymentCalenderDetailDao.java

@@ -100,4 +100,10 @@ public interface MusicGroupPaymentCalenderDetailDao extends BaseDAO<Long, MusicG
 	 * @return
 	 */
 	List<Map<Integer, String>> queryPaymentPushMap();
+
+	/**
+	 * 删除缴费详情
+	 * @param musicGroupPaymentCalenderIds
+	 */
+	void batchDel(String musicGroupPaymentCalenderIds);
 }

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

@@ -5,6 +5,7 @@ import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
+import com.ym.mec.biz.dal.dto.FeeStudentDto;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderDetail;
 import org.apache.ibatis.annotations.Param;
 
@@ -142,7 +143,7 @@ public interface MusicGroupStudentFeeDao extends BaseDAO<Long, MusicGroupStudent
 	 * @param musicGroupId
 	 * @return
 	 */
-	List<MusicGroupStudentFee> queryByMusicGroupId(String musicGroupId);
+	List<MusicGroupStudentFee> queryByMusicGroupId(@Param("musicGroupId") String musicGroupId, @Param("studentIds") String studentIds);
 
 	/**
 	 * 修改学员缴费周期锁定状态
@@ -194,4 +195,11 @@ public interface MusicGroupStudentFeeDao extends BaseDAO<Long, MusicGroupStudent
 	 * @param musicGroupPaymentCalenderDetailIds
 	 */
 	void remainNetworkClassTimesAdd(@Param("musicGroupPaymentCalenderDetailIds") String musicGroupPaymentCalenderDetailIds);
+
+	/**
+	 * 获取fee表学员列表
+	 * @param musicGroupId
+	 * @return
+	 */
+    List<FeeStudentDto> queryFeeStudents(@Param("musicGroupId") String musicGroupId, @Param("search") String search, @Param("subjectId") Integer subjectId);
 }

+ 8 - 4
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java

@@ -4,14 +4,11 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
+import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.Subject;
 import org.apache.ibatis.annotations.Param;
 
 import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.dto.StudentApplyDetailDto;
-import com.ym.mec.biz.dal.dto.StudentFeeDetailDto;
-import com.ym.mec.biz.dal.dto.StudentInfo;
-import com.ym.mec.biz.dal.dto.StudentRegisterPerDto;
 import com.ym.mec.biz.dal.entity.MusicGroupSubjectPlan;
 import com.ym.mec.biz.dal.entity.StudentRegistration;
 import com.ym.mec.biz.dal.enums.PaymentStatusEnum;
@@ -328,4 +325,11 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
      * @return
      */
     List<Subject> findMusicGroupAllStudentSubjects(@Param("musicGroupId") String musicGroupId);
+
+    /**
+     * 获取学员详情页,包含所在乐团信息
+     * @param studentId
+     * @return
+     */
+    StudentMusicDetailDto getStudentDetail(Integer studentId);
 }

+ 65 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/FeeStudentDto.java

@@ -0,0 +1,65 @@
+package com.ym.mec.biz.dal.dto;
+
+import java.math.BigDecimal;
+
+public class FeeStudentDto {
+    private Integer userId;
+
+    private String username;
+
+    private Integer gender;
+
+    private String subjectName;
+
+    private BigDecimal courseFee;
+
+    private String musicGroupId;
+
+    public Integer getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+
+    public String getUsername() {
+        return username;
+    }
+
+    public void setUsername(String username) {
+        this.username = username;
+    }
+
+    public Integer getGender() {
+        return gender;
+    }
+
+    public void setGender(Integer gender) {
+        this.gender = gender;
+    }
+
+    public String getSubjectName() {
+        return subjectName;
+    }
+
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
+    }
+
+    public BigDecimal getCourseFee() {
+        return courseFee;
+    }
+
+    public void setCourseFee(BigDecimal courseFee) {
+        this.courseFee = courseFee;
+    }
+
+    public String getMusicGroupId() {
+        return musicGroupId;
+    }
+
+    public void setMusicGroupId(String musicGroupId) {
+        this.musicGroupId = musicGroupId;
+    }
+}

+ 33 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/RongyunBasicUserDto.java

@@ -0,0 +1,33 @@
+package com.ym.mec.biz.dal.dto;
+
+public class RongyunBasicUserDto {
+    private Integer userId;
+
+    private String userName;
+
+    private String headUrl;
+
+    public Integer getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getHeadUrl() {
+        return headUrl;
+    }
+
+    public void setHeadUrl(String headUrl) {
+        this.headUrl = headUrl;
+    }
+}

+ 87 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentMusicDetailDto.java

@@ -0,0 +1,87 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.entity.MusicGroup;
+
+import java.util.List;
+
+public class StudentMusicDetailDto {
+    private Integer userId;
+
+    private String username;
+
+    private Integer gender;
+
+    private String subjectName;
+
+    private String phone;
+
+    private String avatar;
+
+    private String imToken;
+
+    private List<MusicGroup> musicGroups;
+
+    public Integer getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+
+    public String getUsername() {
+        return username;
+    }
+
+    public void setUsername(String username) {
+        this.username = username;
+    }
+
+    public Integer getGender() {
+        return gender;
+    }
+
+    public void setGender(Integer gender) {
+        this.gender = gender;
+    }
+
+    public String getSubjectName() {
+        return subjectName;
+    }
+
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
+    }
+
+    public String getPhone() {
+        return phone;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
+
+    public String getAvatar() {
+        return avatar;
+    }
+
+    public void setAvatar(String avatar) {
+        this.avatar = avatar;
+    }
+
+    public String getImToken() {
+        return imToken;
+    }
+
+    public void setImToken(String imToken) {
+        this.imToken = imToken;
+    }
+
+    public List<MusicGroup> getMusicGroups() {
+        return musicGroups;
+    }
+
+    public void setMusicGroups(List<MusicGroup> musicGroups) {
+        this.musicGroups = musicGroups;
+    }
+}

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

@@ -152,6 +152,16 @@ public class MusicGroup {
 	
 	private FeeType feeType;
 
+	private String subjectName;
+
+	public String getSubjectName() {
+		return subjectName;
+	}
+
+	public void setSubjectName(String subjectName) {
+		this.subjectName = subjectName;
+	}
+
 	public Integer getRepairUserId() {
 		return repairUserId;
 	}

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupPaymentCalender.java

@@ -57,6 +57,16 @@ public class MusicGroupPaymentCalender implements Comparable<MusicGroupPaymentCa
 	/**  */
 	private java.util.Date updateTime;
 
+	private String studentIds;
+
+	public String getStudentIds() {
+		return studentIds;
+	}
+
+	public void setStudentIds(String studentIds) {
+		this.studentIds = studentIds;
+	}
+
 	public void setId(Long id) {
 		this.id = id;
 	}

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

@@ -47,9 +47,20 @@ public class SporadicChargeInfo {
 	@ApiModelProperty(value = "操作人", required = true)
 	private String operatorName;
 
+	@ApiModelProperty(value = "是否关闭", required = true)
+	private Integer openFlag;
+
 	@ApiModelProperty(value = "是否删除", required = true)
 	private Integer delFlag;
 
+	public Integer getOpenFlag() {
+		return openFlag;
+	}
+
+	public void setOpenFlag(Integer openFlag) {
+		this.openFlag = openFlag;
+	}
+
 	public String getUserName() {
 		return userName;
 	}

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/SporadicChargeInfoQueryInfo.java

@@ -17,6 +17,17 @@ public class SporadicChargeInfoQueryInfo extends QueryInfo {
 
     private boolean isExport = false;
 
+    @ApiModelProperty(value = "是否关闭", required = true)
+    private Integer openFlag;
+
+    public Integer getOpenFlag() {
+        return openFlag;
+    }
+
+    public void setOpenFlag(Integer openFlag) {
+        this.openFlag = openFlag;
+    }
+
     public boolean getIsExport() {
         return isExport;
     }

+ 14 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupPaymentCalenderDetailService.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.service;
 
+import com.ym.mec.biz.dal.dto.FeeStudentDto;
 import com.ym.mec.biz.dal.dto.SimpleUserDto;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderDetail;
 import com.ym.mec.common.entity.HttpResponseResult;
@@ -43,4 +44,17 @@ public interface MusicGroupPaymentCalenderDetailService extends BaseService<Long
      * @param userId
      */
     void add(Long musicGroupPaymentCalenderId, Integer userId);
+
+    /**
+     * 获取fee表学员列表
+     * @param musicGroupId
+     * @return
+     */
+    List<FeeStudentDto> queryFeeStudents(String musicGroupId,String search,Integer subjectId);
+
+    /**
+     * 批量删除缴费信息
+     * @param musicGroupPaymentCalenderIds
+     */
+    void batchDel(String musicGroupPaymentCalenderIds);
 }

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SporadicChargeInfoService.java

@@ -29,4 +29,11 @@ public interface SporadicChargeInfoService extends BaseService<Integer, Sporadic
     SporadicChargeInfo getDetail(Integer id);
 
     SporadicChargeInfo findByOrganIdAndType(Integer organId,Integer type);
+
+    /**
+     * 开启/关闭缴费
+     * @param sporadicId
+     * @param openFlag
+     */
+    void updateOpenFlag(Integer sporadicId, Integer openFlag);
 }

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentRegistrationService.java

@@ -242,4 +242,11 @@ public interface StudentRegistrationService extends BaseService<Long, StudentReg
 	 * @return
 	 */
 	List<Subject> findMusicGroupAllStudentSubjects(String musicGroupId);
+
+	/**
+	 * 获取学员详情页,包含所在乐团信息
+	 * @param studentId
+	 * @return
+	 */
+	StudentMusicDetailDto getStudentDetail(Integer studentId);
 }

+ 20 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderDetailServiceImpl.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.service.impl;
 
 import com.ym.mec.biz.dal.dao.*;
+import com.ym.mec.biz.dal.dto.FeeStudentDto;
 import com.ym.mec.biz.dal.dto.SimpleUserDto;
 import com.ym.mec.biz.dal.entity.MusicGroup;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender;
@@ -221,4 +222,23 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 		musicGroupPaymentCalenderDao.update(calender);
 		musicGroupStudentFeeDao.update(studentFee);
 	}
+
+	@Override
+	public List<FeeStudentDto> queryFeeStudents(String musicGroupId,String search,Integer subjectId) {
+		return musicGroupStudentFeeDao.queryFeeStudents(musicGroupId,search,subjectId);
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void batchDel(String musicGroupPaymentCalenderIds) {
+		List<MusicGroupPaymentCalenderDetail> details = musicGroupPaymentCalenderDetailDao.queryListByIds(musicGroupPaymentCalenderIds);
+		if(details == null || details.size() == 0){
+			throw new BizException("删除失败: 数据不可为空");
+		}
+		long count = details.stream().filter(e -> e.getPaymentStatus() == PAID_COMPLETED).count();
+		if(count > 0){
+			throw new BizException("删除失败: 存在已缴费的学员");
+		}
+		musicGroupPaymentCalenderDetailDao.batchDel(musicGroupPaymentCalenderIds);
+	}
 }

+ 28 - 32
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java

@@ -78,44 +78,40 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 			musicGroupPaymentCalender.setPaymentStatus(PaymentStatusEnum.YES);
 		} else if (date.after(musicGroupPaymentCalender.getStartPaymentDate())) {
 			musicGroupPaymentCalender.setPaymentStatus(PaymentStatusEnum.OPEN);
-			// 统计缴费人数
-			musicGroupStudentFeeList = musicGroupStudentFeeDao.queryByMusicGroupId(musicGroupId);
-			if (musicGroupStudentFeeList == null) {
-				musicGroupStudentFeeList = new ArrayList<>();
-			}
-			musicGroupPaymentCalender.setExpectNum(musicGroupStudentFeeList.size());
 		} else {
 			musicGroupPaymentCalender.setPaymentStatus(PaymentStatusEnum.NO);
 		}
+		// 统计缴费人数
+		musicGroupStudentFeeList = musicGroupStudentFeeDao.queryByMusicGroupId(musicGroupId,musicGroupPaymentCalender.getStudentIds());
+		if (musicGroupStudentFeeList == null) {
+			musicGroupStudentFeeList = new ArrayList<>();
+		}
+		musicGroupPaymentCalender.setExpectNum(musicGroupStudentFeeList.size());
 
 		this.insert(musicGroupPaymentCalender);
 
 		List<MusicGroupStudentFee> updateMusicGroupStudentFeeList = new ArrayList<MusicGroupStudentFee>();
 
 		List<MusicGroupPaymentCalenderDetail> musicGroupPaymentCalenderDetailList = new ArrayList<MusicGroupPaymentCalenderDetail>();
-		if (musicGroupPaymentCalender.getPaymentStatus() == PaymentStatusEnum.OPEN) {
-			if (musicGroupStudentFeeList != null && musicGroupStudentFeeList.size() > 0) {
-				Set<Integer> studentIds = new HashSet<Integer>();
-				MusicGroupPaymentCalenderDetail musicGroupPaymentCalenderDetail = null;
-				// 创建缴费明细
-				for (MusicGroupStudentFee mgsf : musicGroupStudentFeeList) {
-					/*if (mgsf.getPaymentStatus() != PaymentStatus.PAID_COMPLETED) {
-						continue;
-					}*/
-					musicGroupPaymentCalenderDetail = new MusicGroupPaymentCalenderDetail();
-					musicGroupPaymentCalenderDetail.setMusicGroupPaymentCalenderId(musicGroupPaymentCalender.getId());
-					musicGroupPaymentCalenderDetail.setCreateTime(date);
-					musicGroupPaymentCalenderDetail.setExpectAmount(mgsf.getCourseFee());
-					musicGroupPaymentCalenderDetail.setPaymentStatus(PaymentStatus.NON_PAYMENT);
-					if (mgsf.getCourseFee().doubleValue() != 0) {
-						studentIds.add(mgsf.getUserId());
-					}
-					musicGroupPaymentCalenderDetail.setUpdateTime(date);
-					musicGroupPaymentCalenderDetail.setUserId(mgsf.getUserId());
 
-					musicGroupPaymentCalenderDetailList.add(musicGroupPaymentCalenderDetail);
+		if (musicGroupStudentFeeList != null && musicGroupStudentFeeList.size() > 0) {
+			Set<Integer> studentIds = new HashSet<>();
+			MusicGroupPaymentCalenderDetail musicGroupPaymentCalenderDetail = null;
+			// 创建缴费明细
+			for (MusicGroupStudentFee mgsf : musicGroupStudentFeeList) {
+				musicGroupPaymentCalenderDetail = new MusicGroupPaymentCalenderDetail();
+				musicGroupPaymentCalenderDetail.setMusicGroupPaymentCalenderId(musicGroupPaymentCalender.getId());
+				musicGroupPaymentCalenderDetail.setCreateTime(date);
+				musicGroupPaymentCalenderDetail.setExpectAmount(mgsf.getCourseFee());
+				musicGroupPaymentCalenderDetail.setPaymentStatus(PaymentStatus.NON_PAYMENT);
+				if (mgsf.getCourseFee().doubleValue() != 0) {
+					studentIds.add(mgsf.getUserId());
 				}
-
+				musicGroupPaymentCalenderDetail.setUpdateTime(date);
+				musicGroupPaymentCalenderDetail.setUserId(mgsf.getUserId());
+				musicGroupPaymentCalenderDetailList.add(musicGroupPaymentCalenderDetail);
+			}
+			if (musicGroupPaymentCalender.getPaymentStatus() == PaymentStatusEnum.OPEN) {
 				// 更新学员缴费状态
 				for (MusicGroupStudentFee mgsf : musicGroupStudentFeeList) {
 					mgsf.setPaymentStatus(PaymentStatus.NON_PAYMENT);
@@ -187,7 +183,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 
 		for (MusicGroupPaymentCalender mgpc : musicGroupPaymentCalenderList) {
 
-			List<MusicGroupStudentFee> musicGroupStudentFeeList = musicGroupStudentFeeDao.queryByMusicGroupId(mgpc.getMusicGroupId());
+			List<MusicGroupStudentFee> musicGroupStudentFeeList = musicGroupStudentFeeDao.queryByMusicGroupId(mgpc.getMusicGroupId(),null);
 			Map<Integer, MusicGroupStudentFee> feeMap = musicGroupStudentFeeList.stream()
 					.collect(Collectors.toMap(MusicGroupStudentFee::getUserId, fee -> fee));
 
@@ -226,10 +222,10 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 				// 学生状态更新进行中
 				Set<Integer> studentIds = new HashSet<Integer>();
 				// 创建缴费明细
-				for (MusicGroupStudentFee mgsf : musicGroupStudentFeeList) {
-					/*if (mgsf.getPaymentStatus() != PaymentStatus.PAID_COMPLETED) {
+				/*for (MusicGroupStudentFee mgsf : musicGroupStudentFeeList) {
+					if (mgsf.getPaymentStatus() != PaymentStatus.PAID_COMPLETED) {
 						continue;
-					}*/
+					}
 					musicGroupPaymentCalenderDetail = new MusicGroupPaymentCalenderDetail();
 					musicGroupPaymentCalenderDetail.setMusicGroupPaymentCalenderId(mgpc.getId());
 					musicGroupPaymentCalenderDetail.setCreateTime(date);
@@ -242,7 +238,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 					musicGroupPaymentCalenderDetail.setUserId(mgsf.getUserId());
 
 					musicGroupPaymentCalenderDetailList.add(musicGroupPaymentCalenderDetail);
-				}
+				}*/
 
 				// 更新学员缴费状态
 				for (MusicGroupStudentFee mgsf : musicGroupStudentFeeList) {

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SporadicChargeInfoImpl.java

@@ -182,4 +182,13 @@ public class SporadicChargeInfoImpl extends BaseServiceImpl<Integer, SporadicCha
     public SporadicChargeInfo findByOrganIdAndType(Integer organId, Integer type) {
         return sporadicChargeInfoDao.findByOrganIdAndType(organId, type);
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateOpenFlag(Integer sporadicId, Integer openFlag) {
+        SporadicChargeInfo sporadicChargeInfo = sporadicChargeInfoDao.get(sporadicId);
+        sporadicChargeInfo.setOpenFlag(openFlag);
+        sporadicChargeInfo.setUpdateTime(new Date());
+        sporadicChargeInfoDao.update(sporadicChargeInfo);
+    }
 }

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

@@ -5,10 +5,7 @@ import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.api.entity.SysUserRole;
 import com.ym.mec.biz.dal.dao.*;
-import com.ym.mec.biz.dal.dto.StudentAddDto;
-import com.ym.mec.biz.dal.dto.StudentApplyDetailDto;
-import com.ym.mec.biz.dal.dto.StudentFeeDetailDto;
-import com.ym.mec.biz.dal.dto.StudentInfo;
+import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.page.StudentRegistrationQueryInfo;
@@ -1028,4 +1025,9 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     public List<Subject> findMusicGroupAllStudentSubjects(String musicGroupId) {
         return studentRegistrationDao.findMusicGroupAllStudentSubjects(musicGroupId);
     }
+
+    @Override
+    public StudentMusicDetailDto getStudentDetail(Integer studentId) {
+        return studentRegistrationDao.getStudentDetail(studentId);
+    }
 }

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

@@ -480,4 +480,17 @@
 		GROUP BY
 			music_group_id_;
 	</select>
+    <resultMap id="RongyunBasicUserDto" type="com.ym.mec.biz.dal.dto.RongyunBasicUserDto">
+        <result property="userName" column="username_"/>
+        <result property="userId" column="user_id_"/>
+        <result property="headUrl" column="avatar_"/>
+    </resultMap>
+    <select id="queryNoJoinStu" resultMap="RongyunBasicUserDto">
+		SELECT CASE WHEN su.username_ IS NULL THEN su.real_name_ ELSE su.username_ END username_,
+		su.avatar_,cssp.user_id_
+		FROM course_schedule_student_payment cssp
+		LEFT JOIN sys_user su ON su.id_ = cssp.user_id_
+		WHERE cssp.course_schedule_id_ = #{courseScheduleId}
+		AND NOT EXISTS (SELECT * FROM rongyun_room_member rrm WHERE rrm.rid = #{roomId} AND rrm.uid = cssp.user_id_)
+	</select>
 </mapper>

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

@@ -154,6 +154,9 @@
 	<delete id="delete">
 		DELETE FROM music_group_payment_calender_detail WHERE id_ = #{id}
 	</delete>
+	<delete id="batchDel">
+		DELETE FROM music_group_payment_calender_detail WHERE FIND_IN_SET(id_,#{musicGroupPaymentCalenderIds})
+	</delete>
 
 	<!-- 分页查询 -->
 	<select id="queryPage" resultMap="MusicGroupPaymentCalenderDetail"

+ 25 - 0
mec-biz/src/main/resources/config/mybatis/MusicGroupStudentFeeMapper.xml

@@ -228,6 +228,31 @@
     </select>
     <select id="queryByMusicGroupId" resultMap="MusicGroupStudentFee">
         SELECT * FROM music_group_student_fee_ WHERE music_group_id_ = #{musicGroupId}
+        <if test="studentIds != null and studentIds != ''">
+            AND FIND_IN_SET(user_id_,#{studentIds})
+        </if>
+    </select>
+    <resultMap id="FeeStudentDto" type="com.ym.mec.biz.dal.dto.FeeStudentDto">
+        <result property="userId" column="id_"/>
+        <result property="username" column="username_"/>
+        <result property="musicGroupId" column="music_group_id_"/>
+        <result property="subjectName" column="name_"/>
+        <result property="courseFee" column="course_fee_"/>
+        <result property="gender" column="gender_"/>
+    </resultMap>
+    <select id="queryFeeStudents" resultMap="FeeStudentDto">
+        SELECT su.id_,su.username_,su.gender_,s.name_,mgsf.course_fee_,mgsf.music_group_id_
+        FROM music_group_student_fee_ mgsf
+        LEFT JOIN sys_user su ON su.id_ = mgsf.user_id_
+        LEFT JOIN `subject` s ON s.id_ = mgsf.subject_id_
+        WHERE mgsf.music_group_id_ = #{musicGroupId}
+        <if test="search != null and search != ''">
+            AND (su.id_ = #{search} OR su.username_ LIKE CONCAT('%',#{search},'%')
+            OR su.phone_ LIKE CONCAT('%',#{search},'%'))
+        </if>
+        <if test="subjectId != null">
+            AND mgsf.subject_id_ = #{subjectId}
+        </if>
     </select>
 
     <update id="batchUpdate" parameterType="java.util.List">

+ 7 - 0
mec-biz/src/main/resources/config/mybatis/SporadicChargeInfo.xml

@@ -15,6 +15,7 @@
 		<result column="update_time_" property="updateTime" />
 		<result column="operator_id_" property="operatorId" />
 		<result column="del_flag_" property="delFlag" />
+		<result column="open_flag_" property="openFlag" />
 		<result column="organ_name_" property="organName" />
 		<result column="user_id_" property="userId" />
 	</resultMap>
@@ -45,6 +46,9 @@
 			<if test="title != null">
 				title_ = #{title},
 			</if>
+			<if test="openFlag != null">
+				open_flag_ = #{openFlag},
+			</if>
 			<if test="chargeType != null">
 				charge_type_ = #{chargeType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
 			</if>
@@ -102,6 +106,9 @@
 			<if test="type == 'common'">
 				AND sci.user_id_ IS NULL
 			</if>
+			<if test="openFlag != null">
+				AND sci.open_flag_ = #{openFlag}
+			</if>
 			<if test="search != null">
 				AND (sci.title_ LIKE CONCAT('%',#{search},'%') OR su.username_ LIKE CONCAT('%',#{search},'%'))
 			</if>

+ 23 - 0
mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml

@@ -610,4 +610,27 @@
         LEFT JOIN subject s ON sr.actual_subject_id_=s.id_
         WHERE sr.music_group_id_=#{musicGroupId} ORDER BY s.id_
     </select>
+    <resultMap id="getStudentDetail" type="com.ym.mec.biz.dal.dto.StudentMusicDetailDto">
+        <result property="gender" column="gender_"/>
+        <result property="username" column="username_"/>
+        <result property="userId" column="id_"/>
+        <result property="phone" column="phone_"/>
+        <result property="avatar" column="avatar_"/>
+        <result property="imToken" column="im_token_"/>
+        <collection property="musicGroups" ofType="com.ym.mec.biz.dal.entity.MusicGroup">
+            <result property="name" column="music_group_name_"/>
+            <result column="music_group_id_" property="id"/>
+            <result column="subject_name_" property="subjectName"/>
+        </collection>
+    </resultMap>
+    <select id="getStudentDetail" resultMap="getStudentDetail">
+        SELECT su.username_,su.gender_,su.phone_,su.avatar_,su.id_,su.im_token_,
+        mg.name_ music_group_name_,mg.id_ music_group_id_,sj.name_ subject_name_
+        FROM student s
+        LEFT JOIN music_group_student_fee_ mgsf ON mgsf.user_id_ = s.user_id_
+        LEFT JOIN music_group mg ON mg.id_ = mgsf.music_group_id_
+        LEFT JOIN `subject` sj ON sj.id_ = mgsf.subject_id_
+        LEFT JOIN sys_user su ON su.id_ = s.user_id_
+        WHERE s.user_id_ = #{studentId}
+    </select>
 </mapper>

+ 7 - 3
mec-im/src/main/java/com/ym/controller/RoomController.java

@@ -5,12 +5,9 @@ import com.ym.common.ApiException;
 import com.ym.common.BaseResponse;
 import com.ym.common.ErrorEnum;
 import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.common.exception.BizException;
 import com.ym.pojo.*;
 import com.ym.service.MessageService;
 import com.ym.service.RoomService;
-import io.rong.models.message.GroupMessage;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -38,6 +35,11 @@ public class RoomController{
         return new BaseResponse<>(roomResult);
     }
 
+    @RequestMapping(value = "/queryNoJoinStu", method = RequestMethod.GET)
+    public Object queryNoJoinStu(String roomId){
+        return new BaseResponse<>(roomService.queryNoJoinStu(roomId));
+    }
+
     @RequestMapping(value = "/signIn", method = RequestMethod.POST)
     public Object signIn(Long roomId){
         roomService.signIn(roomId);
@@ -172,6 +174,8 @@ public class RoomController{
             result = roomService.syncDeviceState(data.getRoomId(), DeviceTypeEnum.Microphone, data.getMicrophoneOn());
         } else if (data.getMusicModeOn() != null) {
             result = roomService.syncDeviceState(data.getRoomId(), DeviceTypeEnum.MusicMode, data.getMusicModeOn());
+        }  else if (data.getHandUpOn() != null) {
+            result = roomService.syncDeviceState(data.getRoomId(), DeviceTypeEnum.HandUp, data.getHandUpOn());
         } else {
             throw new ApiException(ErrorEnum.ERR_REQUEST_PARA_ERR);
         }

+ 2 - 2
mec-im/src/main/java/com/ym/dao/RoomMemberDao.java

@@ -64,8 +64,8 @@ public interface RoomMemberDao extends JpaRepository<RoomMember, Long> {
 
     @Transactional
     @Modifying
-    @Query(value = "update rongyun_room_member set mic=?3 where rid=?1 and uid=?2", nativeQuery = true)
-    public int updateHandByRidAndUid(String rid, String uid, boolean mic);
+    @Query(value = "update rongyun_room_member set hand=?3 where rid=?1 and uid=?2", nativeQuery = true)
+    public int updateHandByRidAndUid(String rid, String uid, boolean hand);
 
     @Transactional
     @Modifying

+ 1 - 0
mec-im/src/main/java/com/ym/pojo/RoomMember.java

@@ -18,6 +18,7 @@ public class RoomMember {
 
     private @Getter @Setter String uid;
     private @Getter @Setter String rid;
+    private @Getter @Setter String headUrl;
     private @Getter @Setter int role;
     private @Getter @Setter Date joinDt;
     private @Getter @Setter String name;

+ 2 - 0
mec-im/src/main/java/com/ym/pojo/RoomResult.java

@@ -28,6 +28,7 @@ public class RoomResult {
     public static class MemberResult {
         String userId;
         String userName;
+        String headUrl;
         int role;
         Date joinTime;
         boolean camera;
@@ -53,6 +54,7 @@ public class RoomResult {
             result.setCamera(member.isCamera());
             result.setUserName(member.getName());
             result.setHandUp(member.isHand());
+            result.setHeadUrl(member.getHeadUrl());
             result.setPlayMidiJson(JSONObject.parseObject(midiMap.get(Integer.parseInt(member.getUid())),CustomMessage.class));
             members.add(result);
         }

+ 24 - 12
mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

@@ -14,6 +14,8 @@ import com.ym.job.ScheduleManager;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.*;
+import com.ym.mec.biz.dal.dto.BasicUserDto;
+import com.ym.mec.biz.dal.dto.RongyunBasicUserDto;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.dal.entity.StudentAttendance;
 import com.ym.mec.biz.dal.entity.Teacher;
@@ -24,6 +26,7 @@ import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
 import com.ym.mec.biz.service.StudentAttendanceService;
 import com.ym.mec.biz.service.SysConfigService;
 import com.ym.mec.biz.service.TeacherAttendanceService;
+import com.ym.mec.common.entity.ImPlayMidiMessage;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.im.IMHelper;
 import com.ym.mec.im.message.*;
@@ -185,7 +188,7 @@ public class RoomServiceImpl implements RoomService {
             }else {
                 roleEnum = RoleEnum.RoleStudent;
             }
-            saveRoomMember(userId, userName, roomId, roleEnum.getValue(), !isDisableCamera,!isMusicMode, curTime);
+            saveRoomMember(userId,sysUser.getAvatar(), userName, roomId, roleEnum.getValue(), !isDisableCamera,!isMusicMode, curTime);
             IMApiResultInfo resultInfo = imHelper.joinGroup(new String[]{userId}, roomId, roomId);
             if (!resultInfo.isSuccess()) {
                 throw new ApiException(ErrorEnum.ERR_CREATE_ROOM_ERROR, resultInfo.getErrorMessage());
@@ -355,7 +358,7 @@ public class RoomServiceImpl implements RoomService {
         }
     }
 
-    private void saveRoomMember(String userId, String userName, String roomId, int role, boolean cameraOn,boolean musicModeOn, Date joinTime) {
+    private void saveRoomMember(String userId, String headUrl, String userName, String roomId, int role, boolean cameraOn,boolean musicModeOn, Date joinTime) {
         RoomMember roomMember = new RoomMember();
         roomMember.setUid(userId);
         roomMember.setName(userName);
@@ -364,6 +367,7 @@ public class RoomServiceImpl implements RoomService {
         roomMember.setCamera(cameraOn);
         roomMember.setJoinDt(joinTime);
         roomMember.setMusicMode(musicModeOn);
+        roomMember.setHeadUrl(headUrl);
         roomMemberDao.save(roomMember);
     }
 
@@ -785,9 +789,6 @@ public class RoomServiceImpl implements RoomService {
             msg.setType(taskInfo.getTypeEnum().ordinal());
             msg.setOpUserId(authUser.getId().toString());
             msg.setOpUserName(authUser.getUsername());
-            if (typeEnum.equals(DeviceTypeEnum.HandUp)){
-                userId = authUser.getId().toString();
-            }
             imHelper.publishMessage(authUser.getId().toString(), userId, roomId, msg);
         } else {
             if (typeEnum.equals(DeviceTypeEnum.Camera)) {
@@ -901,6 +902,9 @@ public class RoomServiceImpl implements RoomService {
         } else if (type.equals(DeviceTypeEnum.Microphone)){
             result = roomMemberDao.updateMicByRidAndUid(roomId, userId, enable);
             deviceResourceMessage = new DeviceStateChangedMessage(type.ordinal(), enable);
+        } else if (type.equals(DeviceTypeEnum.HandUp)){
+            result = roomMemberDao.updateHandByRidAndUid(roomId, userId, enable);
+            deviceResourceMessage = new DeviceStateChangedMessage(type.ordinal(), enable);
         }else {
             result = roomMemberDao.updateMusicByRidAndUid(roomId, userId, enable);
             deviceResourceMessage = new DeviceStateChangedMessage(type.ordinal(), enable);
@@ -1410,17 +1414,20 @@ public class RoomServiceImpl implements RoomService {
             throw new BizException("用户信息获取失败");
         }
 //        roomService.sendImPlayMidiMessage(playMidiMessageData);
-        GroupMessage groupMessage = new GroupMessage();
+//        GroupMessage groupMessage = new GroupMessage();
         String content = playMidiMessageData.getContent();
         String roomId = playMidiMessageData.getRoomId();
         CustomMessage customMessage = JSONObject.parseObject(content,CustomMessage.class);
-        groupMessage.setContent(customMessage);
-        groupMessage.setTargetId(roomId.split(","));
-        groupMessage.setSenderId(sysUser.getId().toString());
-        groupMessage.setObjectName("DY:PlayMidiMessage");
-        messageService.groupSend(groupMessage);
+//        groupMessage.setContent(customMessage);
+//        groupMessage.setTargetId(roomId.split(","));
+//        groupMessage.setSenderId(sysUser.getId().toString());
+//        groupMessage.setObjectName("DY:PlayMidiMessage");
+        String userId = sysUser.getId().toString();
+        MetronomeMessageMessage displayMessage = new MetronomeMessageMessage(customMessage);
+        imHelper.publishMessage(userId, roomId, displayMessage, 1);
+//        messageService.groupSend(groupMessage);
         //记录节拍器消息
-        String userId = playMidiMessageData.getUserId();
+
 //        long courseId = Long.parseLong(roomId.substring(1));
         courseScheduleStudentPaymentDao.adjustPlayMidi(Long.parseLong(roomId.substring(1)),userId,content);
         /*if(StringUtils.isEmpty(userId)){
@@ -1436,6 +1443,11 @@ public class RoomServiceImpl implements RoomService {
         }*/
     }
 
+    @Override
+    public List<RongyunBasicUserDto> queryNoJoinStu(String roomId) {
+        return courseScheduleStudentPaymentDao.queryNoJoinStu(roomId,roomId.substring(1));
+    }
+
     /*@Override
     public void sendImPlayMidiMessage(PlayMidiMessageData playMidiMessageData) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();

+ 8 - 0
mec-im/src/main/java/com/ym/service/RoomService.java

@@ -1,6 +1,8 @@
 package com.ym.service;
 
 import com.ym.common.ApiException;
+import com.ym.mec.biz.dal.dto.BasicUserDto;
+import com.ym.mec.biz.dal.dto.RongyunBasicUserDto;
 import com.ym.pojo.*;
 
 import java.util.List;
@@ -74,6 +76,12 @@ public interface RoomService {
     void sendImPlayMidiMessage(PlayMidiMessageData playMidiMessageData) throws Exception;
 
     /**
+     * 获取未进入教室的学员列表
+     * @return
+     */
+    List<RongyunBasicUserDto> queryNoJoinStu(String roomId);
+
+    /**
      * 发送节拍器自定义消息
      */
 //    void sendImPlayMidiMessage(PlayMidiMessageData playMidiMessageData);

+ 8 - 8
mec-student/src/main/java/com/ym/mec/student/controller/StudentOrderController.java

@@ -151,8 +151,8 @@ public class StudentOrderController extends BaseController {
             @ApiImplicitParam(name = "payChannel", value = "支付方式(alipay-支付宝app支付)", required = true, dataType = "String"),
     })
     public Object executePayment(BigDecimal amount, String orderNo, String payChannel, String notifyUrl, String returnUrl, String orderSubject, String orderBody, String sign, String code) throws Exception {
-        String appId = "wx80f175c0eb6836e9";
-        String appSecret = "f817dc79e4149aaa4fafd6f8279b3593";
+        String appId = "wx751141096e75a4ee";
+        String appSecret = "e882d76c95d1613607a85338b1bed3ff";
         String wxMpOAuth2AccessTokenUrl = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=%s&secret=%s&code=%s&grant_type=authorization_code";
         //payChannel = PayChannelEnum.ALIPAY_QR.getCode();
 //        if (!new Pay().verifySign(amount, orderNo, notifyUrl, orderSubject, orderBody,sign)) {
@@ -160,7 +160,7 @@ public class StudentOrderController extends BaseController {
 //        }
 
         String openid = "";
-        if (payChannel == "wx_pub") {
+        if (payChannel.equals("wx_pub")) {
             if (code == null || code.isEmpty()) {
                 return failed("微信支付请先授权");
             }
@@ -177,7 +177,7 @@ public class StudentOrderController extends BaseController {
             return failed("订单不存在");
         }
 
-        Payment payment = new Pay().executePayment(amount, orderNo, payChannel, orderSubject, orderBody, code);
+        Payment payment = new Pay().executePayment(amount, orderNo, payChannel, orderSubject, orderBody, openid);
         order.setTransNo(payment.getId());
         studentPaymentOrderService.update(order);
 
@@ -207,8 +207,8 @@ public class StudentOrderController extends BaseController {
 
     @GetMapping("/authorize")
     public String authorize(@RequestParam("returnUrl") String returnUrl) {
-        String appId = "wxcf8e8b33a9477845";
-        String url = URLEncoder.encode("http://wxwechat.utools.club/studentOrder/userInfo");
+        String appId = "wx80f175c0eb6836e9";
+        String url = URLEncoder.encode("http://mstudev.dayaedu.com/studentOrder/userInfo");
 
         String redirectURL = String.format("https://open.weixin.qq.com/connect/oauth2/authorize?appid=%s&redirect_uri=%s&response_type=code&scope=snsapi_base&state=1&connect_redirect=1#wechat_redirect",
                 appId, url);
@@ -219,8 +219,8 @@ public class StudentOrderController extends BaseController {
     @GetMapping("/userInfo")
     public Object userInfo(@RequestParam("code") String code,
                            @RequestParam("state") String returnUrl) throws Exception {
-        String appId = "wxcf8e8b33a9477845";
-        String appSecret = "1286452b9c68b13325dece7cdf892645";
+        String appId = "wx80f175c0eb6836e9";
+        String appSecret = "f817dc79e4149aaa4fafd6f8279b3593";
 
         String wxMpOAuth2AccessTokenUrl = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=%s&secret=%s&code=%s&grant_type=authorization_code";
 

+ 6 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherManageController.java

@@ -177,4 +177,10 @@ public class TeacherManageController extends BaseController {
         }
         return succeed(studentRegistrationService.batchUpdateSubject(userId, subId,musicGroupId));
     }
+
+    @ApiOperation(value = "获取学员详情页,包含所在乐团信息")
+    @PostMapping("studentManage/detail")
+    public Object getStudentDetail(Integer studentId){
+        return succeed(studentRegistrationService.getStudentDetail(studentId));
+    }
 }

+ 2 - 0
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/adapay/Pay.java

@@ -135,7 +135,9 @@ public class Pay {
 
         if (openid != null && !openid.isEmpty()) {
             PaymentExpend expend = new PaymentExpend();
+            expend.setWxAppId("wx751141096e75a4ee");
             expend.setOpenId(openid);
+            expend.setIsRaw("0");
             paymentParams.put("expend", expend);
         }
 

+ 15 - 0
mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupPaymentCalenderDetailController.java

@@ -38,6 +38,13 @@ public class MusicGroupPaymentCalenderDetailController extends BaseController {
         return succeed();
     }
 
+    @ApiOperation(value = "新增缴费学员列表获取")
+    @PostMapping("/queryFeeStudents")
+    @PreAuthorize("@pcs.hasPermissions('musicGroupPaymentCalenderDetail/queryFeeStudents')")
+    public Object queryFeeStudents(String musicGroupId,String search,Integer subjectId) {
+        return succeed(musicGroupPaymentCalenderDetailService.queryFeeStudents(musicGroupId,search,subjectId));
+    }
+
     @ApiOperation(value = "乐团缴费记录新增学员")
     @PostMapping("/add")
     @PreAuthorize("@pcs.hasPermissions('musicGroupPaymentCalenderDetail/add')")
@@ -46,6 +53,14 @@ public class MusicGroupPaymentCalenderDetailController extends BaseController {
         return succeed();
     }
 
+    @ApiOperation(value = "批量删除缴费信息")
+    @PostMapping("/batchDel")
+    @PreAuthorize("@pcs.hasPermissions('musicGroupPaymentCalenderDetail/batchDel')")
+    public Object batchDel(String musicGroupPaymentCalenderIds) {
+        musicGroupPaymentCalenderDetailService.batchDel(musicGroupPaymentCalenderIds);
+        return succeed();
+    }
+
     @ApiOperation(value = "开启缴费")
     @PostMapping("/openPayment")
     @PreAuthorize("@pcs.hasPermissions('musicGroupPaymentCalenderDetail/openPayment')")

+ 8 - 0
mec-web/src/main/java/com/ym/mec/web/controller/SporadicChargeInfoController.java

@@ -107,6 +107,14 @@ public class SporadicChargeInfoController extends BaseController {
 		return succeed(sporadicChargeInfoService.update(sporadicChargeInfo));
 	}
 
+	@ApiOperation(value = "开启/关闭缴费")
+	@PostMapping("/updateOpenFlag")
+	@PreAuthorize("@pcs.hasPermissions('sporadicChargeInfo/updateOpenFlag')")
+	public Object updateOpenFlag(Integer sporadicId,Integer openFlag) {
+		sporadicChargeInfoService.updateOpenFlag(sporadicId,openFlag);
+		return succeed();
+	}
+
 	@ApiOperation(value = "删除")
 	@PostMapping("/delete")
 	@PreAuthorize("@pcs.hasPermissions('sporadicChargeInfo/delete')")