yonge 5 years ago
parent
commit
8cb98561d8

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupStudentMapperDao.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.biz.dal.entity.ClassGroupStudentMapper;
+import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum;
 import com.ym.mec.common.dal.BaseDAO;
 
 import org.apache.ibatis.annotations.Param;
@@ -23,4 +24,14 @@ public interface ClassGroupStudentMapperDao extends BaseDAO<Long, ClassGroupStud
 	 * @return
 	 */
 	ClassGroupStudentMapper query(@Param("classGroupId") int classGroupId, @Param("userId") Integer userId);
+
+	/**
+	 * 根据乐团编号修改学生状态
+	 * @param musicGroupId 乐团编号
+	 * @param userId 学生编号
+	 * @param status 状态
+	 * @return
+	 */
+	int updateUserStatusByMusicGroupId(@Param("musicGroupId") String musicGroupId, @Param("userId") Integer userId,
+			@Param("status") ClassGroupStudentStatusEnum status);
 }

+ 24 - 16
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupStudentFeeDao.java

@@ -1,26 +1,34 @@
 package com.ym.mec.biz.dal.dao;
 
+import java.util.Date;
+
+import org.apache.ibatis.annotations.Param;
+
 import com.ym.mec.biz.dal.entity.MusicGroupStudentFee;
 import com.ym.mec.common.dal.BaseDAO;
-import org.apache.ibatis.annotations.Param;
 
 public interface MusicGroupStudentFeeDao extends BaseDAO<Long, MusicGroupStudentFee> {
 
+	/**
+	 * 根据乐团编号和学员编号获取乐团费用信息
+	 * @param userId
+	 * @return
+	 */
+	MusicGroupStudentFee findByUser(@Param("userId") Integer userId, @Param("musicGroupId") String musicGroupId);
 
-    /**
-     * 根据乐团编号和学员编号获取乐团费用信息
-     * @param userId
-     * @return
-     */
-    MusicGroupStudentFee findByUser(@Param("userId") Integer userId,@Param("musicGroupId") String musicGroupId);
+	/**
+	 * @Author: Joburgess
+	 * @Date: 2019/9/29
+	 * 根据学生编号和乐团编号更新旷课次数
+	 * @param operate 0重置,1加1
+	 */
+	int updateStudentAbsenteeismTimes(@Param("userId") Integer userId, @Param("musicGroupId") String musicGroupId, @Param("operate") Integer operate);
 
-    /**
-     * @Author: Joburgess
-     * @Date: 2019/9/29
-     * 根据学生编号和乐团编号更新旷课次数
-     * @param operate 0重置,1加1
-     */
-    int updateStudentAbsenteeismTimes(@Param("userId") Integer userId,
-                                      @Param("musicGroupId") Integer musicGroupId,
-                                      @Param("operate")Integer operate);
+	/**
+	 * 更新乐团下所有学生的下次缴费时间
+	 * @param musicGroupId 乐团编号
+	 * @param nextPaymentDate 下次缴费时间
+	 * @return
+	 */
+	int updateNextPaymentDate(@Param("musicGroupId") String musicGroupId, @Param("nextPaymentDate") Date nextPaymentDate);
 }

+ 39 - 34
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupPaymentCalender.java

@@ -6,80 +6,85 @@ import org.apache.commons.lang3.builder.ToStringBuilder;
 /**
  * 对应数据库表(music_group_payment_calender):
  */
-public class MusicGroupPaymentCalender {
+public class MusicGroupPaymentCalender implements Comparable<MusicGroupPaymentCalender> {
 
 	/**  */
 	private Long id;
-	
+
 	/**  */
-	@ApiModelProperty(value = "乐团编号",required = false)
+	@ApiModelProperty(value = "乐团编号", required = false)
 	private String musicGroupId;
-	
+
 	/** 缴费月份 */
-	@ApiModelProperty(value = "缴费月份",required = false)
+	@ApiModelProperty(value = "缴费月份", required = false)
 	private Integer paymentMonth;
-	
+
 	/** 开始缴费日期 */
-	@ApiModelProperty(value = "开始缴费日期",required = false)
+	@ApiModelProperty(value = "开始缴费日期", required = false)
 	private java.util.Date startPaymentDate;
-	
+
 	/**  */
 	private java.util.Date createTime;
-	
+
 	/**  */
 	private java.util.Date updateTime;
-	
-	public void setId(Long id){
+
+	public void setId(Long id) {
 		this.id = id;
 	}
-	
-	public Long getId(){
+
+	public Long getId() {
 		return this.id;
 	}
-			
-	public void setMusicGroupId(String musicGroupId){
+
+	public void setMusicGroupId(String musicGroupId) {
 		this.musicGroupId = musicGroupId;
 	}
-	
-	public String getMusicGroupId(){
+
+	public String getMusicGroupId() {
 		return this.musicGroupId;
 	}
-			
-	public void setPaymentMonth(Integer paymentMonth){
+
+	public void setPaymentMonth(Integer paymentMonth) {
 		this.paymentMonth = paymentMonth;
 	}
-	
-	public Integer getPaymentMonth(){
+
+	public Integer getPaymentMonth() {
 		return this.paymentMonth;
 	}
-			
-	public void setStartPaymentDate(java.util.Date startPaymentDate){
+
+	public void setStartPaymentDate(java.util.Date startPaymentDate) {
 		this.startPaymentDate = startPaymentDate;
 	}
-	
-	public java.util.Date getStartPaymentDate(){
+
+	public java.util.Date getStartPaymentDate() {
 		return this.startPaymentDate;
 	}
-			
-	public void setCreateTime(java.util.Date createTime){
+
+	public void setCreateTime(java.util.Date createTime) {
 		this.createTime = createTime;
 	}
-	
-	public java.util.Date getCreateTime(){
+
+	public java.util.Date getCreateTime() {
 		return this.createTime;
 	}
-			
-	public void setUpdateTime(java.util.Date updateTime){
+
+	public void setUpdateTime(java.util.Date updateTime) {
 		this.updateTime = updateTime;
 	}
-	
-	public java.util.Date getUpdateTime(){
+
+	public java.util.Date getUpdateTime() {
 		return this.updateTime;
 	}
-			
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);
 	}
 
+	@Override
+	public int compareTo(MusicGroupPaymentCalender cal) {
+		return this.paymentMonth.compareTo(cal.getPaymentMonth());
+	}
+
 }

+ 3 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentAttendance.java

@@ -16,7 +16,7 @@ public class StudentAttendance {
 	
 	/** 乐团 */
 	@ApiModelProperty(value = "乐团",required = false)
-	private Integer musicGroupId;
+	private String musicGroupId;
 	
 	/** 班级 */
 	@ApiModelProperty(value = "班级",required = false)
@@ -64,11 +64,11 @@ public class StudentAttendance {
 		return this.id;
 	}
 			
-	public void setMusicGroupId(Integer musicGroupId){
+	public void setMusicGroupId(String musicGroupId){
 		this.musicGroupId = musicGroupId;
 	}
 	
-	public Integer getMusicGroupId(){
+	public String getMusicGroupId(){
 		return this.musicGroupId;
 	}
 			

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

@@ -61,6 +61,9 @@ public class SysMessage {
 	@ApiModelProperty(value = "是否已读",required = false)
 	private Integer readStatus;
 	
+	@ApiModelProperty(value = "消息组",required = false)
+	private String group;
+	
 	public void setId(Long id){
 		this.id = id;
 	}
@@ -165,6 +168,14 @@ public class SysMessage {
 		this.readStatus = readStatus;
 	}
 
+	public String getGroup() {
+		return group;
+	}
+
+	public void setGroup(String group) {
+		this.group = group;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

+ 12 - 16
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MusicGroupStatusEnum.java

@@ -2,26 +2,22 @@ package com.ym.mec.biz.dal.enums;
 
 import com.ym.mec.common.enums.BaseEnum;
 
-public enum  MusicGroupStatusEnum implements BaseEnum<String,MusicGroupStatusEnum> {
+public enum MusicGroupStatusEnum implements BaseEnum<String, MusicGroupStatusEnum> {
 
-    APPLY("APPLY","报名中"),
-    PAY("PAY","缴费中"),
-    PREPARE("PREPARE","筹备中"),
-    UNDERWAY("UNDERWAY","进行中"),
-    CANCELED("CANCELED","取消");
+	APPLY("APPLY", "报名中"), PAY("PAY", "缴费中"), PREPARE("PREPARE", "筹备中"), PROGRESS("PROGRESS", "进行中"), CANCELED("CANCELED", "取消"), PAUSE("PAUSE", "暂停");
 
-    private String code;
-    private String msg;
+	private String code;
+	private String msg;
 
-    MusicGroupStatusEnum(String code, String msg) {
-        this.code = code;
-        this.msg = msg;
-    }
+	MusicGroupStatusEnum(String code, String msg) {
+		this.code = code;
+		this.msg = msg;
+	}
 
-    @Override
-    public String getCode() {
-        return this.code;
-    }
+	@Override
+	public String getCode() {
+		return this.code;
+	}
 
 	public String getMsg() {
 		return msg;

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

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.service;
 
+import java.util.Date;
 import java.util.List;
 
 import com.ym.mec.biz.dal.dto.BasicUserDto;
@@ -40,5 +41,42 @@ public interface MusicGroupService extends BaseService<String, MusicGroup> {
 	 * 取消乐团
 	 * @param musicGroupId 乐团编号
 	 */
-	void cancelMusicGroup(String musicGroupId);
+	boolean cancelMusicGroup(String musicGroupId);
+
+	/**
+	 * 暂停乐团
+	 * @param musicGroupId 乐团编号
+	 */
+	boolean pauseMusicGroup(String musicGroupId);
+
+	/**
+	 * 恢复乐团
+	 * @param musicGroupId 乐团编号
+	 */
+	boolean resumeMusicGroup(String musicGroupId);
+
+	/**
+	 * 延长缴费
+	 * @param musicGroupId 乐团编号
+	 * @param expireDate 延长缴费的截止日期
+	 * @return
+	 */
+	boolean extensionPayment(String musicGroupId, Date expireDate);
+
+	/**
+	 * 退团
+	 * @param musicGroupId 乐团编号
+	 * @param userId 用户编号
+	 * @return
+	 */
+	boolean quitMusicGroup(String musicGroupId, Integer userId);
+
+	/**
+	 *  续费
+	 * @param musicGroupId 乐团编号
+	 * @param userId 用户编号
+	 * @param amount 缴费金额
+	 * @return
+	 */
+	boolean renew(String musicGroupId, Integer userId, double amount);
 }

+ 179 - 34
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -1,29 +1,48 @@
 package com.ym.mec.biz.service.impl;
 
-import com.ym.mec.biz.dal.dao.*;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+import java.util.UUID;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.ym.mec.biz.dal.dao.ClassGroupStudentMapperDao;
+import com.ym.mec.biz.dal.dao.MusicGroupBuildLogDao;
+import com.ym.mec.biz.dal.dao.MusicGroupDao;
+import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDao;
+import com.ym.mec.biz.dal.dao.MusicGroupPaymentEntitiesDao;
+import com.ym.mec.biz.dal.dao.MusicGroupStudentFeeDao;
+import com.ym.mec.biz.dal.dao.MusicGroupSubjectGoodsGroupDao;
+import com.ym.mec.biz.dal.dao.MusicGroupSubjectPlanDao;
 import com.ym.mec.biz.dal.dto.BasicUserDto;
 import com.ym.mec.biz.dal.dto.MusicCardDto;
 import com.ym.mec.biz.dal.dto.SubFeeSettingDto;
-import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.entity.MusicGroup;
+import com.ym.mec.biz.dal.entity.MusicGroupBuildLog;
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender;
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentEntities;
+import com.ym.mec.biz.dal.entity.MusicGroupSubjectGoodsGroup;
+import com.ym.mec.biz.dal.entity.MusicGroupSubjectPlan;
+import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum;
 import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
+import com.ym.mec.biz.dal.enums.MusicGroupStatusEnum;
 import com.ym.mec.biz.service.MusicGroupService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.entity.ImGroupMember;
 import com.ym.mec.common.entity.ImGroupModel;
+import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.im.ImFeignService;
 
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.UUID;
-
 @Service
-public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup>  implements MusicGroupService {
-	
+public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> implements MusicGroupService {
+
 	@Autowired
 	private MusicGroupDao musicGroupDao;
 	@Autowired
@@ -39,6 +58,12 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup>
 	@Autowired
 	private MusicGroupBuildLogDao musicGroupBuildLogDao;
 
+	@Autowired
+	private MusicGroupStudentFeeDao musicGroupStudentFeeDao;
+	
+	@Autowired
+	private ClassGroupStudentMapperDao classGroupStudentMapperDao;
+
 	@Override
 	public BaseDAO<String, MusicGroup> getDAO() {
 		return musicGroupDao;
@@ -46,57 +71,57 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup>
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public void createGroup(SubFeeSettingDto subFeeSettingDto,Integer userId) {
+	public void createGroup(SubFeeSettingDto subFeeSettingDto, Integer userId) {
 		MusicGroup musicGroup = subFeeSettingDto.getMusicGroup();
 		List<MusicGroupPaymentEntities> musicGroupPaymentEntities = subFeeSettingDto.getMusicGroupPaymentEntities();
 		List<MusicGroupSubjectGoodsGroup> musicGroupSubjectGoodsGroups = subFeeSettingDto.getMusicGroupSubjectGoodsGroups();
 		List<MusicGroupSubjectPlan> musicGroupSubjectPlans = subFeeSettingDto.getMusicGroupSubjectPlans();
-		if(musicGroup == null || musicGroupPaymentEntities == null || musicGroupSubjectGoodsGroups == null || musicGroupSubjectPlans == null){
+		if (musicGroup == null || musicGroupPaymentEntities == null || musicGroupSubjectGoodsGroups == null || musicGroupSubjectPlans == null) {
 			String musicGroupId = UUID.randomUUID().toString();
 			musicGroup.setId(musicGroupId);
-			//保存乐团基本信息
+			// 保存乐团基本信息
 			musicGroupDao.insert(musicGroup);
-			//保存乐团付费主体列表
-			musicGroupPaymentEntities.forEach(e ->{
+			// 保存乐团付费主体列表
+			musicGroupPaymentEntities.forEach(e -> {
 				e.setMusicGroupId(musicGroupId);
 				musicGroupPaymentEntitiesDao.insert(e);
 			});
-			//保存学员付费周期
+			// 保存学员付费周期
 			List<Integer> months = subFeeSettingDto.getMonths();
-			if(months != null && months.size() > 0){
+			if (months != null && months.size() > 0) {
 				MusicGroupPaymentCalender mg;
-				for (Integer month:months) {
+				for (Integer month : months) {
 					mg = new MusicGroupPaymentCalender();
 					mg.setMusicGroupId(musicGroupId);
 					mg.setPaymentMonth(month);
 					musicGroupPaymentCalenderDao.insert(mg);
 				}
 			}
-			//保存乐团声部规划
+			// 保存乐团声部规划
 			if (musicGroupSubjectPlans == null) {
 				musicGroupSubjectPlans = new ArrayList<MusicGroupSubjectPlan>();
 			}
-			musicGroupSubjectPlans.forEach(e ->{
+			musicGroupSubjectPlans.forEach(e -> {
 				e.setMusicGroupId(musicGroupId);
 				musicGroupSubjectPlanDao.insert(e);
 			});
-			//保存乐团声部商品规划
+			// 保存乐团声部商品规划
 			if (musicGroupSubjectGoodsGroups == null) {
 				musicGroupSubjectGoodsGroups = new ArrayList<MusicGroupSubjectGoodsGroup>();
 			}
-			musicGroupSubjectGoodsGroups.forEach(e->{
+			musicGroupSubjectGoodsGroups.forEach(e -> {
 				e.setMusicGroupId(musicGroupId);
 				musicGroupSubjectGoodsGroupDao.insert(e);
 			});
-			//新增聊天群
+			// 新增聊天群
 			ImGroupModel imGroupModel = new ImGroupModel(musicGroupId, musicGroup.getName());
-			//教务老师和运营主管加入群组
-			ImGroupMember[] imGroupMembers = {new ImGroupMember(musicGroup.getTeamTeacherId().toString()),
-					new ImGroupMember(musicGroup.getEducationalTeacherId().toString())};
-			//创建群组
-			imFeignService.groupCreate(new ImGroupModel(musicGroupId,imGroupMembers,musicGroup.getName()));
-			//记录创建日志
-			musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId,"提交建团申请",userId,""));
+			// 教务老师和运营主管加入群组
+			ImGroupMember[] imGroupMembers = { new ImGroupMember(musicGroup.getTeamTeacherId().toString()),
+					new ImGroupMember(musicGroup.getEducationalTeacherId().toString()) };
+			// 创建群组
+			imFeignService.groupCreate(new ImGroupModel(musicGroupId, imGroupMembers, musicGroup.getName()));
+			// 记录创建日志
+			musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId, "提交建团申请", userId, ""));
 		}
 	}
 
@@ -109,7 +134,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup>
 	public MusicCardDto queryPersonalMusicGroups(Integer id) {
 		MusicCardDto musicCardDto = musicGroupDao.queryPersonalMusicGroups(id);
 		musicCardDto.setMusicGroupNum(musicGroupDao.countUserMusicGroups(id));
-		musicCardDto.setVipClassNum(musicGroupDao.countCourseByType(id,ClassGroupTypeEnum.VIP));
+		musicCardDto.setVipClassNum(musicGroupDao.countCourseByType(id, ClassGroupTypeEnum.VIP));
 		return musicGroupDao.queryPersonalMusicGroups(id);
 	}
 
@@ -119,7 +144,127 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup>
 	}
 
 	@Override
-	public void cancelMusicGroup(String musicGroupId) {
+	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+	public boolean cancelMusicGroup(String musicGroupId) {
+		MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
+		if (musicGroup == null) {
+			throw new BizException("乐团找不到");
+		}
+
+		if (musicGroup.getStatus() == MusicGroupStatusEnum.APPLY || musicGroup.getStatus() == MusicGroupStatusEnum.PAY) {
+			musicGroup.setStatus(MusicGroupStatusEnum.CANCELED);
+			musicGroup.setUpdateTime(new Date());
+			musicGroupDao.update(musicGroup);
+		} else {
+			throw new BizException("乐团当前状态是{},不能取消", musicGroup.getStatus().getMsg());
+		}
+
+		// 退费
+
+		return true;
+	}
+
+	@Override
+	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+	public boolean pauseMusicGroup(String musicGroupId) {
+		MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
+		if (musicGroup == null) {
+			throw new BizException("乐团找不到");
+		}
+
+		if (musicGroup.getStatus() != MusicGroupStatusEnum.PROGRESS) {
+			throw new BizException("乐团当前状态是{},不能暂停", musicGroup.getStatus().getMsg());
+		}
+
+		musicGroup.setStatus(MusicGroupStatusEnum.PAUSE);
+		musicGroup.setUpdateTime(new Date());
+		musicGroupDao.update(musicGroup);
+
+		// 清除下次缴费时间
+		musicGroupStudentFeeDao.updateNextPaymentDate(musicGroupId, null);
+
+		return true;
+	}
+
+	@Override
+	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+	public boolean resumeMusicGroup(String musicGroupId) {
+		MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
+		if (musicGroup == null) {
+			throw new BizException("乐团找不到");
+		}
+
+		if (musicGroup.getStatus() != MusicGroupStatusEnum.PAUSE) {
+			throw new BizException("乐团当前状态是{},不能恢复", musicGroup.getStatus().getMsg());
+		}
+
+		musicGroup.setStatus(MusicGroupStatusEnum.PROGRESS);
+		musicGroup.setUpdateTime(new Date());
+		musicGroupDao.update(musicGroup);
+
+		// 查询下次缴费时间
+		List<MusicGroupPaymentCalender> musicGroupPaymentCalenderList = musicGroupPaymentCalenderDao.findByMusicGroupId(musicGroupId);
+		if (musicGroupPaymentCalenderList != null && musicGroupPaymentCalenderList.size() > 0) {
+
+			Collections.sort(musicGroupPaymentCalenderList);
+
+			Calendar cale = Calendar.getInstance();
+			int month = cale.get(Calendar.MONTH) + 1;
+
+			MusicGroupPaymentCalender calender = null;
+
+			for (MusicGroupPaymentCalender cal : musicGroupPaymentCalenderList) {
+				if (cal.getPaymentMonth() >= month) {
+					calender = cal;
+					break;
+				}
+			}
+
+			// 重新设置下次缴费时间
+			musicGroupStudentFeeDao.updateNextPaymentDate(musicGroupId, calender.getStartPaymentDate());
+		}
+
+		return true;
+	}
+
+	@Override
+	public boolean extensionPayment(String musicGroupId, Date expireDate) {
+		MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
+		if (musicGroup == null) {
+			throw new BizException("乐团找不到");
+		}
+
+		if (musicGroup.getStatus() != MusicGroupStatusEnum.PAY) {
+			throw new BizException("乐团当前状态是{},延长缴费", musicGroup.getStatus().getMsg());
+		}
+
+		Date date = new Date();
+
+		if (date.after(expireDate)) {
+			throw new BizException("日期设置错误");
+		}
+
+		musicGroup.setPaymentExpireDate(expireDate);
+		musicGroup.setUpdateTime(date);
+		musicGroupDao.update(musicGroup);
+
+		return true;
+	}
+
+	@Override
+	public boolean quitMusicGroup(String musicGroupId, Integer userId) {
+		MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
+		if (musicGroup == null) {
+			throw new BizException("乐团找不到");
+		}
 		
+		classGroupStudentMapperDao.updateUserStatusByMusicGroupId(musicGroupId, userId, ClassGroupStudentStatusEnum.QUIT);
+		
+		return true;
+	}
+
+	@Override
+	public boolean renew(String musicGroupId, Integer userId, double amount) {
+		return true;
 	}
 }

+ 4 - 0
mec-biz/src/main/resources/config/mybatis/ClassGroupStudentMapperMapper.xml

@@ -75,4 +75,8 @@
     <select id="query" resultMap="ClassGroupStudentMapper" parameterType="map">
 		SELECT * FROM class_group_student_mapper where class_group_id_ = #{classGroupId} and user_id_ = #{userId}
 	</select>
+	
+	<update id="updateUserStatusByMusicGroupId" parameterType="map">
+		UPDATE class_group_student_mapper set status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler} where class_group_id_ in (select id_ from class_group where music_group_id_ = #{musicGroupId}) and user_id_ = #{userId}
+	</update>
 </mapper>

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

@@ -63,6 +63,7 @@
         </set>
         WHERE id_ = #{id}
     </update>
+    
     <update id="updateStudentAbsenteeismTimes">
         update music_group_student_fee_
         <if test="operate==0">
@@ -93,4 +94,8 @@
     <select id="findByUser" resultMap="MusicGroupStudentFee">
         SELECT * FROM music_group_student_fee_ WHERE music_group_id_ = #{musicGroupId} AND user_id_ = #{userId}
     </select>
+    
+    <update id="updateNextPaymentDate" parameterType="map">
+        update music_group_student_fee_ set next_payment_date_ = #{nextPaymentDate},update_time_ = now() WHERE music_group_id_ = #{musicGroupId}
+    </update>
 </mapper>

+ 11 - 4
mec-biz/src/main/resources/config/mybatis/SysMessageMapper.xml

@@ -20,6 +20,7 @@
         <result column="user_id_" property="userId"/>
         <result column="memo_" property="memo"/>
         <result column="read_status_" property="readStatus"/>
+        <result column="group_" property="group"/>
     </resultMap>
 
 	<sql id="queryCondition">
@@ -42,6 +43,9 @@
 			<if test="type != null">
 				and type_ = #{type}
 			</if>
+			<if test="group != null">
+				and group_ = #{group}
+			</if>
 		</where>
 	</sql>
 
@@ -63,14 +67,14 @@
 		title_, content_,
 		type_, status_, receiver_,
 		send_time_, error_msg_,read_status_,memo_, create_on_,
-		modify_on_)
+		modify_on_,group_)
 		values (#{id,jdbcType=BIGINT},#{userId,jdbcType=BIGINT}, #{title,jdbcType=VARCHAR},
 		#{content,jdbcType=VARCHAR},
 		#{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
 		#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}, #{receiver,jdbcType=VARCHAR},
 		#{sendTime},#{errorMsg,jdbcType=VARCHAR},#{readStatus},#{memo},
 		#{createOn},
-		#{modifyOn})
+		#{modifyOn},#{group})
 	</insert>
 
 	<insert id="batchInsert" parameterType="com.ym.mec.biz.dal.entity.SysMessage">
@@ -78,7 +82,7 @@
 		title_, content_,
 		type_, status_, receiver_,
 		send_time_, error_msg_,read_status_,memo_, create_on_,
-		modify_on_)
+		modify_on_,group_)
 		values
 		<foreach collection="list" item="item" index="index"
 			separator=",">
@@ -89,7 +93,7 @@
 			#{item.status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}, #{item.receiver,jdbcType=VARCHAR},
 			#{item.sendTime},#{item.errorMsg,jdbcType=VARCHAR},#{item.readStatus},#{item.memo},
 			#{item.createOn},
-			#{item.modifyOn}
+			#{item.modifyOn},#{item.group}
 			)
 		</foreach>
 	</insert>
@@ -133,6 +137,9 @@
 			<if test="modifyOn != null">
 				modify_on_ = #{modifyOn},
 			</if>
+			<if test="group != null">
+				group_ = #{group},
+			</if>
 		</set>
 		where id_ = #{id,jdbcType=BIGINT}
 	</update>

+ 2 - 2
mec-web/src/test/java/com/ym/webApplicationTest.java

@@ -74,7 +74,7 @@ public class webApplicationTest
         StudentAttendance sa=new StudentAttendance();
         sa.setClassGroupId(1);
         sa.setCourseScheduleId(1L);
-        sa.setMusicGroupId(1);
+        sa.setMusicGroupId("1");
         sa.setRemark("test");
         sa.setStatus(StudentAttendanceStatusEnum.LEAVE);
         sa.setTeacherId(1);
@@ -140,7 +140,7 @@ public class webApplicationTest
 
     @Test
     public void test7(){
-        int i = studentFeeDao.updateStudentAbsenteeismTimes(1, 1, 0);
+        int i = studentFeeDao.updateStudentAbsenteeismTimes(1, "1", 0);
         System.out.println(i);
     }