Browse Source

Merge remote-tracking branch 'origin/master'

Joburgess 5 years ago
parent
commit
6f8114d37a
48 changed files with 1384 additions and 768 deletions
  1. 0 1
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/web/controller/UserController.java
  2. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupDao.java
  3. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupPaymentEntitiesDao.java
  4. 39 23
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java
  5. 6 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SubjectDao.java
  6. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/SubFeeSettingDto.java
  7. 30 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/SubjectRegisterDto.java
  8. 0 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupSubjectPlan.java
  9. 25 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentRegistration.java
  10. 48 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentWithdraw.java
  11. 9 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysUserCashAccount.java
  12. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java
  13. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupService.java
  14. 14 0
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentRegistrationService.java
  15. 6 0
      mec-biz/src/main/java/com/ym/mec/biz/service/SubjectService.java
  16. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  17. 16 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  18. 11 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java
  19. 560 526
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  20. 46 10
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  21. 29 31
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentWithdrawServiceImpl.java
  22. 5 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SubjectServiceImpl.java
  23. 11 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherServiceImpl.java
  24. 11 2
      mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml
  25. 5 5
      mec-biz/src/main/resources/config/mybatis/CooperationOrganMapper.xml
  26. 13 10
      mec-biz/src/main/resources/config/mybatis/EmployeeMapper.xml
  27. 3 0
      mec-biz/src/main/resources/config/mybatis/MusicGroupPaymentEntitiesMapper.xml
  28. 1 0
      mec-biz/src/main/resources/config/mybatis/StudentManageDao.xml
  29. 2 1
      mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml
  30. 19 1
      mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml
  31. 10 3
      mec-biz/src/main/resources/config/mybatis/StudentWithdrawMapper.xml
  32. 3 5
      mec-biz/src/main/resources/config/mybatis/SubjectMapper.xml
  33. 2 7
      mec-biz/src/main/resources/config/mybatis/SysUserCashAccountMapper.xml
  34. 3 3
      mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml
  35. 156 0
      mec-student/src/main/java/com/ym/mec/student/controller/StudentManageController.java
  36. 34 21
      mec-student/src/main/java/com/ym/mec/student/controller/WithdrawController.java
  37. 0 12
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherController.java
  38. 139 0
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherManageController.java
  39. 6 0
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherSubjectController.java
  40. 1 11
      mec-web/src/main/java/com/ym/mec/web/controller/ClassGroupController.java
  41. 8 17
      mec-web/src/main/java/com/ym/mec/web/controller/EmployeeController.java
  42. 11 0
      mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupController.java
  43. 10 13
      mec-web/src/main/java/com/ym/mec/web/controller/StudentWithdrawController.java
  44. 7 0
      mec-web/src/main/java/com/ym/mec/web/controller/SubjectController.java
  45. 0 45
      mec-web/src/main/java/com/ym/mec/web/controller/SysUserBankCardController.java
  46. 29 4
      mec-web/src/main/java/com/ym/mec/web/controller/TeacherController.java
  47. 1 0
      mec-web/src/main/java/com/ym/mec/web/controller/UploadFileController.java
  48. 8 12
      mec-web/src/main/java/com/ym/mec/web/controller/student/SuggestionController.java

+ 0 - 1
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/web/controller/UserController.java

@@ -111,7 +111,6 @@ public class UserController extends BaseController {
 	}
 
 	@ApiOperation(value = "修改密码")
-    @PreAuthorize("@pcs.hasPermissions('user/updatePassword')")
 	@PostMapping(value = "/updatePassword", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
 	@ApiImplicitParams({ @ApiImplicitParam(name = "mobile", value = "手机号", required = true, dataType = "String"),
 			@ApiImplicitParam(name = "authCode", value = "验证码", required = true, dataType = "String"),

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

@@ -5,6 +5,7 @@ import com.ym.mec.biz.dal.entity.ClassGroup;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.entity.ImGroupModel;
 import com.ym.mec.common.entity.ImUserModel;
+
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -329,4 +330,11 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
      * @return
      */
     List<ConditionDto> queryStudentClassGroup(@Param("musicGroupId") String musicGroupId, @Param("teacherId") Integer teacherId);
+    
+    /**
+     * 批量新增班级上的课次数
+     * @param classGroupList
+     * @return
+     */
+    int batchIncreaseClassTimes(List<Integer> classGroupList);
 }

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupPaymentEntitiesDao.java

@@ -18,4 +18,11 @@ public interface MusicGroupPaymentEntitiesDao extends BaseDAO<Integer, MusicGrou
      * @param musicGroupId
      */
     void delByGroupId(String musicGroupId);
+
+    /**
+     * 根据乐团编号查询
+     * @param musicGroupId
+     * @return
+     */
+    List<MusicGroupPaymentEntities> findByMusicGroupId(String musicGroupId);
 }

+ 39 - 23
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java

@@ -31,22 +31,22 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
      */
     int queryStudentDetailCount(Map<String, Object> params);
 
-	/**
-	 * 根据乐团编号和声部获取缴费学员人数
-	 *
-	 * @param musicGroupId
-	 * @return
-	 */
-	List<Map<Integer, Long>> countPayNum(@Param("musicGroupId") String musicGroupId);
-
-	/**
-	 * 学生报名缴费金额详情
-	 *
-	 * @param studentId
-	 * @param musicGroupId
-	 * @return
-	 */
-	StudentFeeDetailDto queryFeeDetail(@Param("studentId") Integer studentId, @Param("musicGroupId") String musicGroupId);
+    /**
+     * 根据乐团编号和声部获取缴费学员人数
+     *
+     * @param musicGroupId
+     * @return
+     */
+    List<Map<Integer, Long>> countPayNum(@Param("musicGroupId") String musicGroupId);
+
+    /**
+     * 学生报名缴费金额详情
+     *
+     * @param studentId
+     * @param musicGroupId
+     * @return
+     */
+    StudentFeeDetailDto queryFeeDetail(@Param("studentId") Integer studentId, @Param("musicGroupId") String musicGroupId);
 
     /**
      * 获取乐团声部未分配的班级的学生
@@ -126,11 +126,27 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
      */
     List<StudentRegistration> findMusicGroupStudent(@Param("musicGroupId") String musicGroupId, @Param("actualSubjectId") Integer actualSubjectId);
 
-	/**
-	 * 批量调剂学生专业
-	 * @param userIds
-	 * @param subId
-	 * @return
-	 */
-	int batchUpdateSubject(@Param("userIds")String userIds, @Param("subId") Integer subId,@Param("musicGroupId") String musicGroupId);
+    /**
+     * 批量调剂学生专业
+     *
+     * @param userIds
+     * @param subId
+     * @return
+     */
+    int batchUpdateSubject(@Param("userIds") String userIds, @Param("subId") Integer subId, @Param("musicGroupId") String musicGroupId);
+
+    /**
+     * 根据id list 查询报名学生
+     *
+     * @param idList
+     * @return
+     */
+    List<StudentRegistration> findStudentListByIdList(@Param("idList") List<Long> idList);
+
+    /**
+     * 批量插入
+     * @param studentRegistrationList
+     * @return
+     */
+    int batchInsert(@Param("studentRegistrationList") List<StudentRegistration> studentRegistrationList);
 }

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

@@ -86,4 +86,10 @@ public interface SubjectDao extends BaseDAO<Integer, Subject> {
      * @describe 根据科目编号获取部门编号,部门名称
      */
     List<Map<Long,String>> findBySubjecIds(@Param("subjectIds") List<String> subjectIds);
+
+    /**
+     * 获取子级列表
+     * @return
+     */
+    List<Subject> findSubSubjects();
 }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/SubFeeSettingDto.java

@@ -22,6 +22,9 @@ public class SubFeeSettingDto {
     @ApiModelProperty(value = "学员的付费方式月份列表",required = false)
     private List<Integer> months;
 
+    @ApiModelProperty(value = "科目关联注册学员",required = false)
+    private List<SubjectRegisterDto> subjectRegisters;
+
     public MusicGroup getMusicGroup() {
         return musicGroup;
     }
@@ -61,4 +64,12 @@ public class SubFeeSettingDto {
     public void setMonths(List<Integer> months) {
         this.months = months;
     }
+
+    public List<SubjectRegisterDto> getSubjectRegisters() {
+        return subjectRegisters;
+    }
+
+    public void setSubjectRegisters(List<SubjectRegisterDto> subjectRegisters) {
+        this.subjectRegisters = subjectRegisters;
+    }
 }

+ 30 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/SubjectRegisterDto.java

@@ -0,0 +1,30 @@
+package com.ym.mec.biz.dal.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.List;
+
+public class SubjectRegisterDto {
+
+    @ApiModelProperty(value = "科目编号",required = true)
+    private Integer subjectId;
+
+    @ApiModelProperty(value = "注册ids",required = true)
+    private List<Long> registerIdList;
+
+    public Integer getSubjectId() {
+        return subjectId;
+    }
+
+    public void setSubjectId(Integer subjectId) {
+        this.subjectId = subjectId;
+    }
+
+    public List<Long> getRegisterIdList() {
+        return registerIdList;
+    }
+
+    public void setRegisterIdList(List<Long> registerIdList) {
+        this.registerIdList = registerIdList;
+    }
+}

+ 0 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupSubjectPlan.java

@@ -55,7 +55,6 @@ public class MusicGroupSubjectPlan {
 	/** 保证金(只有租赁才有) */
 	@ApiModelProperty(value = "保证金(只有租赁才有)",required = false)
 	private BigDecimal depositFee = new BigDecimal(0);
-	
 	/**  */
 	private java.util.Date createTime;
 	

+ 25 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentRegistration.java

@@ -7,6 +7,8 @@ import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
 import java.math.BigDecimal;
+import java.sql.DatabaseMetaData;
+import java.sql.Date;
 
 /**
  * 对应数据库表(student_registration):
@@ -46,6 +48,9 @@ public class StudentRegistration {
     @ApiModelProperty(value = "实际科目", required = false)
     private Integer actualSubjectId;
 
+    @ApiModelProperty(value = "实际科目名称", required = false)
+    private String subjectName;
+
     @ApiModelProperty(value = "是否允许调剂", required = false)
     private YesOrNoEnum isAllowAdjust;
 
@@ -70,6 +75,9 @@ public class StudentRegistration {
     @ApiModelProperty(value = "家长单位", required = false)
     private String parentsCompany;
 
+    @ApiModelProperty(value = "生日", required = false)
+    private Date birthdate;
+
     @ApiModelProperty(value = "缴费状态(1-已缴费 0-未交费)", required = false)
     private YesOrNoEnum paymentStatus;
 
@@ -86,6 +94,15 @@ public class StudentRegistration {
         return musicGroupStatus;
     }
 
+
+    public Date getBirthdate() {
+        return birthdate;
+    }
+
+    public void setBirthdate(Date birthdate) {
+        this.birthdate = birthdate;
+    }
+
     public void setMusicGroupStatus(ClassGroupStudentStatusEnum musicGroupStatus) {
         this.musicGroupStatus = musicGroupStatus;
     }
@@ -267,6 +284,14 @@ public class StudentRegistration {
         this.organId = organId;
     }
 
+    public String getSubjectName() {
+        return subjectName;
+    }
+
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
+    }
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

+ 48 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentWithdraw.java

@@ -22,6 +22,10 @@ public class StudentWithdraw {
 	/** 用户编号 */
 	@ApiModelProperty(value = "用户编号",required = false)
 	private Integer userId;
+
+	/** 用户编号 */
+	@ApiModelProperty(value = "用户名",required = false)
+	private String realName;
 	
 	/** 银行卡号 */
 	@ApiModelProperty(value = "银行卡号",required = false)
@@ -38,6 +42,10 @@ public class StudentWithdraw {
 	/** 提现金额 */
 	@ApiModelProperty(value = "提现金额",required = false)
 	private BigDecimal amount;
+
+	/** 提现金额 */
+	@ApiModelProperty(value = "可用余额",required = false)
+	private BigDecimal balance;
 	
 	/** 用户承担的费用(单位:分) */
 	@ApiModelProperty(value = "用户承担的费用",required = false)
@@ -54,6 +62,14 @@ public class StudentWithdraw {
 	/** 备注 */
 	@ApiModelProperty(value = "备注",required = false)
 	private String comment;
+
+	/** 描述 */
+	@ApiModelProperty(value = "支付渠道",required = false)
+	private String channel;
+
+	/** 备注 */
+	@ApiModelProperty(value = "平台账户号",required = false)
+	private String platformAccountNo;
 	
 	/** 创建时间 */
 	private java.util.Date createTime;
@@ -61,6 +77,38 @@ public class StudentWithdraw {
 	/** 修改时间 */
 	private java.util.Date modifyTime;
 
+	public String getRealName() {
+		return realName;
+	}
+
+	public void setRealName(String realName) {
+		this.realName = realName;
+	}
+
+	public BigDecimal getBalance() {
+		return balance;
+	}
+
+	public void setBalance(BigDecimal balance) {
+		this.balance = balance;
+	}
+
+	public String getChannel() {
+		return channel;
+	}
+
+	public void setChannel(String channel) {
+		this.channel = channel;
+	}
+
+	public String getPlatformAccountNo() {
+		return platformAccountNo;
+	}
+
+	public void setPlatformAccountNo(String platformAccountNo) {
+		this.platformAccountNo = platformAccountNo;
+	}
+
 	public String getWithdrawNo() {
 		return withdrawNo;
 	}

+ 9 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysUserCashAccount.java

@@ -42,7 +42,15 @@ public class SysUserCashAccount {
 	
 	/** 修改时间 */
 	private java.util.Date updateTime;
-	
+
+	public SysUserCashAccount(Integer userId, String currency) {
+		this.userId = userId;
+		this.currency = currency;
+	}
+
+	public SysUserCashAccount() {
+	}
+
 	public void setUserId(Integer userId){
 		this.userId = userId;
 	}

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

@@ -260,4 +260,11 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
      * @return
      */
     PageInfo<MusicGroupCourseScheduleDto> queryMusicGroupCourseSchedule(queryMusicGroupCourseScheduleQueryInfo queryInfo);
+    
+    /**
+     * 批量新增班级上的课次数
+     * @param classGroupList
+     * @return
+     */
+    boolean batchIncreaseClassTimes(List<Integer> classGroupList);
 }

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

@@ -134,4 +134,11 @@ public interface MusicGroupService extends BaseService<String, MusicGroup> {
 	 * @param subFeeSettingDto
 	 */
 	void updateBaseInfo(SubFeeSettingDto subFeeSettingDto);
+
+	/**
+	 * 获取修改乐团时的基本信息数据
+	 * @param musicGroupId
+	 * @return
+	 */
+	SubFeeSettingDto findMusicGroupBasicInfo(String musicGroupId);
 }

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

@@ -158,4 +158,18 @@ public interface StudentRegistrationService extends BaseService<Long, StudentReg
 	 */
 	List<StudentRegistration> getMusicGroupStu(String musicGroupId, Integer actualSubjectId);
 
+	/**
+	 * 根据id list 查询报名学生
+	 * @param idList
+	 * @return
+	 */
+	List<StudentRegistration> findStudentListByIdList(List<Long> idList);
+
+	/**
+	 * 批量插入
+	 * @param studentRegistrationList
+	 * @return
+	 */
+	int batchInsert(List<StudentRegistration> studentRegistrationList);
+
 }

+ 6 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SubjectService.java

@@ -76,4 +76,10 @@ public interface SubjectService extends BaseService<Integer, Subject> {
      * @describe 根据部门编号列表获取部门编号,名称map
      */
     Map<Long,String> findSubjectMapBySubjectIdsList(List<String> subjectIdsList);
+
+    /**
+     * 获取子级科目列表
+     * @return
+     */
+    List<Subject> findSubSubjects();
 }

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

@@ -20,6 +20,7 @@ import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
+
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -930,4 +931,10 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         pageInfo.setRows(dataList);
         return pageInfo;
     }
+
+	@Override
+	public boolean batchIncreaseClassTimes(List<Integer> classGroupList) {
+		classGroupDao.batchIncreaseClassTimes(classGroupList);
+		return true;
+	}
 }

+ 16 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -10,6 +10,7 @@ import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.page.CourseScheduleQueryInfo;
 import com.ym.mec.biz.dal.page.StudentCourseScheduleRecordQueryInfo;
+import com.ym.mec.biz.service.ClassGroupService;
 import com.ym.mec.biz.service.CourseScheduleService;
 import com.ym.mec.biz.service.CourseScheduleTeacherSalaryService;
 import com.ym.mec.biz.service.SysConfigService;
@@ -21,6 +22,7 @@ import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
+
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -60,6 +62,9 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 	private TeacherDefaultVipGroupSalaryDao teacherDefaultVipGroupSalaryDao;
 	@Autowired
 	private CourseScheduleTeacherSalaryDao courseScheduleTeacherSalaryDao;
+	
+	@Autowired
+	private ClassGroupService classGroupService;
 
 	@Override
 	public BaseDAO<Long, CourseSchedule> getDAO() {
@@ -548,15 +553,26 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
 		List<CourseSchedule> updateList = new ArrayList<CourseSchedule>();
 		Date date = new Date();
+		List<Integer> classGroups = new ArrayList<Integer>();
 		for (CourseSchedule courseSchedule : list) {
 			courseSchedule.setStatus(CourseStatusEnum.OVER);
 			courseSchedule.setUpdateTime(date);
 			updateList.add(courseSchedule);
+			
+			if(!classGroups.contains(courseSchedule.getClassGroupId())){
+				classGroups.add(courseSchedule.getClassGroupId());
+			}
 		}
 
 		if (updateList.size() > 0) {
 			courseScheduleDao.batchUpdate(updateList);
 		}
+		
+		//更新班级课次
+		if(classGroups.size()>0){
+			classGroupService.batchIncreaseClassTimes(classGroups);
+		}
+		
 		return true;
 	}
 

+ 11 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java

@@ -5,12 +5,15 @@ import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.api.enums.SysUserType;
 import com.ym.mec.auth.api.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.dao.EmployeeDao;
+import com.ym.mec.biz.dal.dao.SysUserCashAccountDao;
 import com.ym.mec.biz.dal.dao.TeacherDao;
 import com.ym.mec.biz.dal.dto.EmployeeDto;
 import com.ym.mec.biz.dal.entity.Employee;
+import com.ym.mec.biz.dal.entity.SysUserCashAccount;
 import com.ym.mec.biz.dal.enums.EmployeeOperateEnum;
 import com.ym.mec.biz.dal.enums.ParamEnum;
 import com.ym.mec.biz.dal.page.EmployeeQueryInfo;
+import com.ym.mec.biz.service.ContractService;
 import com.ym.mec.biz.service.EmployeeService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.entity.ImResult;
@@ -24,7 +27,6 @@ import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -42,6 +44,10 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 	private SysUserFeignService sysUserFeignService;
 	@Autowired
 	private TeacherDao teacherDao;
+	@Autowired
+	private SysUserCashAccountDao sysUserCashAccountDao;
+	@Autowired
+	private ContractService contractService;
 
 	@Override
 	public BaseDAO<Integer, Employee> getDAO() {
@@ -75,6 +81,10 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 		employeeDao.delEmployeeRole(employee.getId());
 		//新增用户角色
 		employeeDao.batchAddEmployeeRole(employee.getId(),employee.getRoleIds());
+		//添加用户现金账户
+		sysUserCashAccountDao.insert(new SysUserCashAccount(employee.getId(),"CNY"));
+		//添加用户电子签章账户
+		contractService.register(employee.getId());
 		ImResult imResult = imFeignService.register(new ImUserModel(employee.getId().toString(), employee.getUsername(), employee.getAvatar()));
 		employee.setImToken(imResult.getToken());
 		employeeDao.update(employee);

+ 560 - 526
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -6,6 +6,7 @@ import com.ym.mec.biz.dal.dao.*;
 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.dto.SubjectRegisterDto;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus;
 import com.ym.mec.biz.dal.enums.*;
@@ -21,6 +22,7 @@ import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.im.ImFeignService;
 import com.ym.mec.util.collection.MapUtil;
 
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
@@ -33,539 +35,571 @@ import java.util.stream.Collectors;
 @Service
 public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> implements MusicGroupService {
 
-	@Autowired
-	private MusicGroupDao musicGroupDao;
-	@Autowired
-	private ChargeTypeDao chargeTypeDao;
-	@Autowired
-	private TeacherDao teacherDao;
-	@Autowired
-	private IdGeneratorService idGeneratorService;
-	@Autowired
-	private SchoolDao schoolDao;
-	@Autowired
-	private MusicGroupPaymentCalenderDao musicGroupPaymentCalenderDao;
-	@Autowired
-	private MusicGroupPaymentCalenderService musicGroupPaymentCalenderService;
-	@Autowired
-	private MusicGroupPaymentEntitiesDao musicGroupPaymentEntitiesDao;
-	@Autowired
-	private MusicGroupSubjectGoodsGroupDao musicGroupSubjectGoodsGroupDao;
-	@Autowired
-	private MusicGroupSubjectPlanDao musicGroupSubjectPlanDao;
-	@Autowired
-	private ImFeignService imFeignService;
-	@Autowired
-	private MusicGroupBuildLogDao musicGroupBuildLogDao;
-
-	@Autowired
-	private MusicGroupStudentFeeDao musicGroupStudentFeeDao;
-
-	@Autowired
-	private ClassGroupStudentMapperDao classGroupStudentMapperDao;
-
-	@Autowired
-	private StudentPaymentOrderDao studentPaymentOrderDao;
-
-	@Autowired
-	private SysUserCashAccountService sysUserCashAccountService;
-
-	@Autowired
-	private SysUserCashAccountDetailService sysUserCashAccountDetailService;
-
-	@Autowired
-	private MusicGroupQuitDao musicGroupQuitDao;
-
-	@Autowired
-	private StudentRegistrationService studentRegistrationService;
-	
-	@Autowired
-	private CourseScheduleDao courseScheduleDao;
-	
-	@Autowired
-	private CourseScheduleTeacherSalaryDao courseScheduleTeacherSalaryDao;
-	
+    @Autowired
+    private MusicGroupDao musicGroupDao;
+    @Autowired
+    private ChargeTypeDao chargeTypeDao;
+    @Autowired
+    private TeacherDao teacherDao;
+    @Autowired
+    private IdGeneratorService idGeneratorService;
+    @Autowired
+    private SchoolDao schoolDao;
+    @Autowired
+    private MusicGroupPaymentCalenderDao musicGroupPaymentCalenderDao;
+    @Autowired
+    private MusicGroupPaymentCalenderService musicGroupPaymentCalenderService;
+    @Autowired
+    private MusicGroupPaymentEntitiesDao musicGroupPaymentEntitiesDao;
+    @Autowired
+    private MusicGroupSubjectGoodsGroupDao musicGroupSubjectGoodsGroupDao;
+    @Autowired
+    private MusicGroupSubjectPlanDao musicGroupSubjectPlanDao;
+    @Autowired
+    private ImFeignService imFeignService;
+    @Autowired
+    private MusicGroupBuildLogDao musicGroupBuildLogDao;
+
+    @Autowired
+    private MusicGroupStudentFeeDao musicGroupStudentFeeDao;
+
+    @Autowired
+    private ClassGroupStudentMapperDao classGroupStudentMapperDao;
+
+    @Autowired
+    private StudentPaymentOrderDao studentPaymentOrderDao;
+
+    @Autowired
+    private SysUserCashAccountService sysUserCashAccountService;
+
+    @Autowired
+    private SysUserCashAccountDetailService sysUserCashAccountDetailService;
+
+    @Autowired
+    private MusicGroupQuitDao musicGroupQuitDao;
+
+    @Autowired
+    private StudentRegistrationService studentRegistrationService;
+
+    @Autowired
+    private CourseScheduleDao courseScheduleDao;
+
+    @Autowired
+    private CourseScheduleTeacherSalaryDao courseScheduleTeacherSalaryDao;
+
     @Autowired
     private StudentPaymentOrderService studentPaymentOrderService;
-    
+
     @Autowired
     private StudentPaymentOrderDetailService studentPaymentOrderDetailService;
 
-	@Autowired
-	private PayService payService;
+    @Autowired
+    private PayService payService;
 
     @Autowired
     private SysUserFeignService sysUserFeignService;
 
-	@Override
-	public BaseDAO<String, MusicGroup> getDAO() {
-		return musicGroupDao;
-	}
-
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public String createGroup(SubFeeSettingDto subFeeSettingDto, Integer userId) {
-		MusicGroup musicGroup = subFeeSettingDto.getMusicGroup();
-		List<MusicGroupSubjectGoodsGroup> musicGroupSubjectGoodsGroups = subFeeSettingDto.getMusicGroupSubjectGoodsGroups();
-		List<MusicGroupSubjectPlan> musicGroupSubjectPlans = subFeeSettingDto.getMusicGroupSubjectPlans();
-		String musicGroupId = idGeneratorService.generatorId() + "";
-		musicGroup.setId(musicGroupId);
-		// 保存乐团基本信息
-		musicGroupDao.insert(musicGroup);
-		// 保存乐团付费主体列表
-		//批量新增
-		musicGroupPaymentEntitiesDao.batchAdd(subFeeSettingDto.getMusicGroupPaymentEntities(),musicGroupId);
-		// 保存学员付费周期
-		List<Integer> months = subFeeSettingDto.getMonths();
-		if (months != null && months.size() > 0) {
-			musicGroupPaymentCalenderDao.batchAdd(months,musicGroupId);
-		}
-		// 保存乐团声部规划
-		if (musicGroupSubjectPlans == null) {
-			musicGroupSubjectPlans = new ArrayList<>();
-		}
-		musicGroupSubjectPlans.forEach(e -> {
-			e.setMusicGroupId(musicGroupId);
-			musicGroupSubjectPlanDao.insert(e);
-		});
-		// 保存乐团声部商品规划
-		if (musicGroupSubjectGoodsGroups == null) {
-			musicGroupSubjectGoodsGroups = new ArrayList<>();
-		}
-		musicGroupSubjectGoodsGroupDao.batchInsert(musicGroupSubjectGoodsGroups,musicGroupId);
-		// 新增聊天群
-		// 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, ""));
-		return musicGroupId;
-	}
-
-	@Override
-	public List<MusicCardDto> queryUserMusicGroups(Integer userId) {
-		List<MusicCardDto> musicCardDtos = musicGroupDao.queryUserMusicGroups(userId);
-		// 获取学员在该乐团续费状态
-		musicCardDtos.forEach(e -> {
-			MusicGroupStudentFee groupStudentFee = musicGroupStudentFeeDao.findByUser(userId, e.getMusicGroupId());
-			if(groupStudentFee != null){
-				e.setPaymentStatus(musicGroupStudentFeeDao.findByUser(userId, e.getMusicGroupId()).getPaymentStatus());
-			}
-		});
-		return musicCardDtos;
-	}
-
-	@Override
-	public MusicCardDto queryPersonalMusicGroups(Integer id) {
-		MusicCardDto musicCardDto = musicGroupDao.queryPersonalMusicGroups(id);
-		musicCardDto.setMusicGroupNum(musicGroupDao.countUserMusicGroups(id));
-		musicCardDto.setVipClassNum(musicGroupDao.countCourseByType(id, ClassGroupTypeEnum.VIP));
-		return musicGroupDao.queryPersonalMusicGroups(id);
-	}
-
-	@Override
-	public List<BasicUserDto> findTeachersByStuId(Integer studentId) {
-		return musicGroupDao.findTeachersByStuId(studentId);
-	}
-
-	@Override
-	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
-	public boolean cancelMusicGroup(String musicGroupId) {
-		MusicGroup musicGroup = musicGroupDao.getLocked(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());
-		}
-
-		// 查询是否有中间状态的缴费信息
-		List<StudentPaymentOrder> studentPaymentOrders = studentPaymentOrderDao.queryByDealStatus(musicGroupId, OrderTypeEnum.APPLY, DealStatusEnum.ING);
-
-		if (studentPaymentOrders != null && studentPaymentOrders.size() > 0) {
-			throw new BizException("缴费存在交易中的数据,不能取消乐团");
-		}
-
-		// 查询已缴费信息
-		studentPaymentOrders = studentPaymentOrderDao.queryByDealStatus(musicGroupId, OrderTypeEnum.APPLY, DealStatusEnum.SUCCESS);
-
-		// 退费
-		for (StudentPaymentOrder order : studentPaymentOrders) {
-			sysUserCashAccountService.updateBalance(order.getUserId(), order.getActualAmount());
-			// 增加交易流水
-			sysUserCashAccountDetailService.addCashAccountDetail(order.getUserId(), order.getActualAmount(), SysUserCashAccountDetailService.MUSIC_GROUP
-					+ musicGroupId, "", PlatformCashAccountDetailTypeEnum.REFUNDS, null, DealStatusEnum.SUCCESS, "取消乐团");
-		}
-
-		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);
-
-		// 重新设置下次缴费时间
-		musicGroupStudentFeeDao.updateNextPaymentDate(musicGroupId, musicGroupPaymentCalenderService.getNextPaymentDate(musicGroupId));
-
-		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
-	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
-	public boolean applyQuitMusicGroup(String musicGroupId, SysUser sysUser) {
-		MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
-		if (musicGroup == null) {
-			throw new BizException("乐团不存在");
-		}
-
-		MusicGroupQuit musicGroupQuit = new MusicGroupQuit();
-		musicGroupQuit.setCreateTime(new Date());
-		musicGroupQuit.setJoinDate(sysUser.getCreateTime());
-		musicGroupQuit.setMusicGroupId(musicGroupId);
-		musicGroupQuit.setUserId(sysUser.getId());
-		musicGroupQuit.setStatus(ApprovalStatus.PROCESSING);
-
-		musicGroupQuitDao.insert(musicGroupQuit);
-		return true;
-	}
-
-	@Override
-	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
-	public boolean approveQuitMusicGroup(Long id, ApprovalStatus status, String reason) {
-		MusicGroupQuit musicGroupQuit = musicGroupQuitDao.get(id);
-		if (musicGroupQuit != null) {
-
-			Date date = new Date();
-
-			String musicGroupId = musicGroupQuit.getMusicGroupId();
-			Integer userId = musicGroupQuit.getUserId();
-
-			musicGroupQuit.setStatus(status);
-			musicGroupQuit.setReason(reason);
-			musicGroupQuit.setQuitDate(date);
-			musicGroupQuitDao.update(musicGroupQuit);
-
-			if (status == ApprovalStatus.APPROVED) {
-				classGroupStudentMapperDao.deleteStudentByMusicGroupId(musicGroupId, userId);
-
-				// 判断乐器是否是租赁
-				StudentRegistration studentRegistration = studentRegistrationService.queryByUserIdAndMusicGroupId(userId, musicGroupId);
-				if (studentRegistration == null) {
-					throw new BizException("用户注册信息不存在");
-				}
-				// 退团
-				studentRegistration.setMusicGroupStatus(ClassGroupStudentStatusEnum.QUIT);
-				studentRegistration.setUpdateTime(date);
-
-				Integer subjectId = studentRegistration.getActualSubjectId();
-				MusicGroupSubjectPlan musicGroupSubjectPlan = musicGroupSubjectPlanDao.getMusicOneSubjectClassPlan(musicGroupId, subjectId);
-				if (musicGroupSubjectPlan == null) {
-					throw new BizException("乐团声部费用设置不存在");
-				}
-				if (musicGroupSubjectPlan.getDepositFee().doubleValue() > 0) {
-					// 增加交易流水
-					sysUserCashAccountDetailService.addCashAccountDetail(userId, musicGroupSubjectPlan.getDepositFee(),
-							SysUserCashAccountDetailService.MUSIC_GROUP + musicGroupId, "", PlatformCashAccountDetailTypeEnum.REFUNDS, null,
-							DealStatusEnum.SUCCESS, "退出乐团");
-				}
-			}
-		}
-		return true;
-	}
-
-	@Override
-	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
-	public boolean directQuitMusicGroup(String musicGroupId, Integer userId, String reason) {
-
-		SysUser sysUser = sysUserFeignService.queryUserById(userId);
-		if (sysUser == null) {
-			throw new BizException("获取用户信息失败");
-		}
-
-		Date date = new Date();
-
-		MusicGroupQuit musicGroupQuit = new MusicGroupQuit();
-		musicGroupQuit.setCreateTime(date);
-		musicGroupQuit.setJoinDate(sysUser.getCreateTime());
-		musicGroupQuit.setMusicGroupId(musicGroupId);
-		musicGroupQuit.setUserId(sysUser.getId());
-		musicGroupQuit.setStatus(ApprovalStatus.APPROVED);
-		musicGroupQuit.setReason(reason);
-		musicGroupQuit.setQuitDate(date);
-
-		musicGroupQuitDao.insert(musicGroupQuit);
-
-		classGroupStudentMapperDao.deleteStudentByMusicGroupId(musicGroupId, userId);
-
-		// 判断乐器是否是租赁
-		StudentRegistration studentRegistration = studentRegistrationService.queryByUserIdAndMusicGroupId(userId, musicGroupId);
-		if (studentRegistration == null) {
-			throw new BizException("用户注册信息不存在");
-		}
-		// 退团
-		studentRegistration.setMusicGroupStatus(ClassGroupStudentStatusEnum.QUIT);
-		studentRegistration.setUpdateTime(date);
-
-		Integer subjectId = studentRegistration.getActualSubjectId();
-		MusicGroupSubjectPlan musicGroupSubjectPlan = musicGroupSubjectPlanDao.getMusicOneSubjectClassPlan(musicGroupId, subjectId);
-		if (musicGroupSubjectPlan == null) {
-			throw new BizException("乐团声部费用设置不存在");
-		}
-		if (musicGroupSubjectPlan.getDepositFee().doubleValue() > 0) {
-			// 增加交易流水
-			sysUserCashAccountDetailService.addCashAccountDetail(userId, musicGroupSubjectPlan.getDepositFee(), SysUserCashAccountDetailService.MUSIC_GROUP
-					+ musicGroupId, "", PlatformCashAccountDetailTypeEnum.REFUNDS, null, DealStatusEnum.SUCCESS, "退出乐团");
-		}
-
-		return true;
-	}
-
-	@Override
-	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
-	public Map renew(String musicGroupId, Integer userId) {
-
-		MusicGroup musicGroup = this.get(musicGroupId);
-		if (musicGroup == null) {
-			throw new BizException("乐团不存在");
-		}
-
-		MusicGroupStudentFee musicGroupStudentFee = musicGroupStudentFeeDao.findByUser(userId, musicGroupId);
-
-		if (musicGroupStudentFee == null) {
-			throw new BizException("个人信息不存在");
-		}
-		// 判断当前是否是续费状态
-		if (musicGroupStudentFee.getPaymentStatus() != PaymentStatus.NON_PAYMENT) {
-			throw new BizException("已缴费");
-		}
-
-		BigDecimal amount = musicGroupStudentFee.getTemporaryCourseFee();
-		if (amount == null || amount.doubleValue() == 0) {
-			amount = musicGroupStudentFee.getCourseFee();
-		}
-
-		Date date = new Date();
-		StudentPaymentOrder studentPaymentOrder = new StudentPaymentOrder();
-		studentPaymentOrder.setUserId(userId);
-		studentPaymentOrder.setOrderNo(idGeneratorService.generatorId("RENEW") + "");
-		studentPaymentOrder.setType(OrderTypeEnum.RENEW);
-		studentPaymentOrder.setExpectAmount(amount);
-		studentPaymentOrder.setActualAmount(amount);
-		studentPaymentOrder.setStatus(DealStatusEnum.ING);
-		studentPaymentOrder.setPaymentChannel("银联");
-		studentPaymentOrder.setMusicGroupId(musicGroupId);
-		studentPaymentOrderService.insert(studentPaymentOrder);
-
-		ArrayList<StudentPaymentOrderDetail> studentPaymentOrderDetailList = new ArrayList<>();
-		StudentPaymentOrderDetail studentPaymentOrderDetail = new StudentPaymentOrderDetail();
-		studentPaymentOrderDetail.setType(OrderDetailTypeEnum.COURSE);
-		studentPaymentOrderDetail.setPrice(amount);
-		studentPaymentOrderDetail.setCreateTime(date);
-		studentPaymentOrderDetail.setUpdateTime(date);
-		studentPaymentOrderDetail.setPaymentOrderId(studentPaymentOrder.getId());
-		studentPaymentOrderDetailList.add(studentPaymentOrderDetail);
-
-		studentPaymentOrderDetailService.batchAdd(studentPaymentOrderDetailList);
-
-		try {
-			return payService.getPayMap(amount, idGeneratorService.generatorId("payment") + "", "https://pay.dayaedu.com/api/yqpay/notify",
-					"http://dev.dayaedu.com", "测试订单", "测试订单");
-		} catch (Exception e) {
-			throw new BizException("调用支付接口出错", e);
-		}
-	}
-
-	@Override
-	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
-	public boolean renewForCallback(StudentPaymentOrder studentPaymentOrder) {
-		
-		studentPaymentOrderDao.update(studentPaymentOrder);
-		
-		Integer userId = studentPaymentOrder.getUserId();
-		String musicGroupId = studentPaymentOrder.getMusicGroupId();
-		
-		//更新下次续费时间
-		MusicGroupStudentFee musicGroupStudentFee = musicGroupStudentFeeDao.findByUser(userId, musicGroupId);
-		
-		if(musicGroupStudentFee == null){
-			throw new BizException("系统数据异常,找不到学员预缴费信息");
-		}
-		
-		Date date = new Date();
-		
-		musicGroupStudentFee.setUpdateTime(date);
-		musicGroupStudentFee.setLatestPaidTime(date);
-		musicGroupStudentFee.setPaymentStatus(PaymentStatus.PAID_COMPLETED);
-		musicGroupStudentFee.setTemporaryCourseFee(new BigDecimal(0));
-		musicGroupStudentFee.setNextPaymentDate(musicGroupPaymentCalenderService.getNextPaymentDate(musicGroupId));
-		
-		musicGroupStudentFeeDao.update(musicGroupStudentFee);
-		
-		return true;
-	}
-
-	@Override
-	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
-	public boolean updateTeacherCoursesSalary(Long courseScheduleId, Integer teacherId, BigDecimal salary, BigDecimal subsidy, String scope) {
-
-		CourseSchedule courseSchedule = courseScheduleDao.get(courseScheduleId);
-		if (courseSchedule == null) {
-			throw new BizException("课程信息不存在");
-		}
-
-		if ("all".equals(scope)) {
-			Integer classGrpupId = courseSchedule.getClassGroupId();
-			// 未结算的课酬都修改
-			courseScheduleTeacherSalaryDao.batchUpdateWages(classGrpupId, teacherId, salary, subsidy);
-		} else {
-			CourseScheduleTeacherSalary courseScheduleTeacherSalary = courseScheduleTeacherSalaryDao.queryByCourseScheduleIdAndUserId(courseScheduleId,
-					teacherId);
-			if (courseScheduleTeacherSalary == null) {
-				throw new BizException("课程结算信息不存在");
-			}
-			// 判断当前课程是否结算
-			if (courseScheduleTeacherSalary.getSettlementTime() != null) {
-				throw new BizException("课程已结算");
-			}
-			courseScheduleTeacherSalary.setExpectSalary(salary);
-			courseScheduleTeacherSalary.setSubsidy(subsidy);
-			courseScheduleTeacherSalary.setUpdateTime(new Date());
-			courseScheduleTeacherSalaryDao.update(courseScheduleTeacherSalary);
-		}
-		return true;
-	}
-
-	@Override
-	public PageInfo<MusicGroup> queryMusicGroupPage(QueryInfo queryInfo) {
-		PageInfo<MusicGroup> musicGroupPageInfo = queryPage(queryInfo);
-		List<MusicGroup> musicGroupList = musicGroupPageInfo.getRows();
-		// 获取学校编号列表
-		Set<Integer> schoolIds = musicGroupList.stream().map(e -> e.getSchoolId()).collect(Collectors.toSet());
-		List<Map<Integer, String>> schoolNames = schoolDao.queryNameByIds(schoolIds);
-		// 获取相关学校名称map
-		Map<Integer, String> schoolNameMap = MapUtil.convertMybatisMap(schoolNames);
-
-		// 获取教务老师编号列表
-		Set<Integer> educationalTeacherIds = musicGroupList.stream().map(e -> e.getEducationalTeacherId()).collect(Collectors.toSet());
-		// 获取相关老师的名字
-		List<Map<Integer, String>> educationalTeacherNames = teacherDao.queryNameByIds(educationalTeacherIds);
-		Map<Integer, String> educationalTeacherNameMap = MapUtil.convertMybatisMap(educationalTeacherNames);
-
-		// 获取运营主管编号列表
-		Set<Integer> teamTeacherIds = musicGroupList.stream().map(e -> e.getTeamTeacherId()).collect(Collectors.toSet());
-		List<Map<Integer, String>> teamTeacherNames = teacherDao.queryNameByIds(teamTeacherIds);
-		Map<Integer, String> teamTeacherNameMap = MapUtil.convertMybatisMap(teamTeacherNames);
-
-		// 获取乐团编号列表
-		Set<String> musicGroupIds = musicGroupList.stream().map(e -> e.getId()).collect(Collectors.toSet());
-		// 统计乐团在读人数
-		List<Map<String, Long>> payNums = musicGroupDao.countPayNum(musicGroupIds);
-		Map<String, Long> payNumMap = MapUtil.convertMybatisMap(payNums);
-
-		// 获取收费类型编号列表
-		Set<Integer> chargeTypeIds = musicGroupList.stream().map(e -> e.getChargeTypeId()).collect(Collectors.toSet());
-		List<Map<Integer, String>> chargeTypeNames = chargeTypeDao.queryNameByIds(chargeTypeIds);
-		Map<Integer, String> chargeTypeNameMap = MapUtil.convertMybatisMap(chargeTypeNames);
-
-		musicGroupList.forEach(e -> {
-			e.setSchoolName(schoolNameMap.get(e.getSchoolId()));
-			e.setEducationalTeacherName(educationalTeacherNameMap.get(e.getEducationalTeacherId()));
-			e.setTeamTeacherName(teamTeacherNameMap.get(e.getTeamTeacherId()));
-			e.setPayNum(payNumMap.get(e.getId()) == null ? 0 : payNumMap.get(e.getId()).intValue());
-			e.setChargeTypeName(chargeTypeNameMap.get(e.getChargeTypeId()));
-		});
-		return musicGroupPageInfo;
-	}
-
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public void updateBaseInfo(SubFeeSettingDto subFeeSettingDto) {
-		MusicGroup musicGroup = subFeeSettingDto.getMusicGroup();
-		String musicGroupId = musicGroup.getId();
-		MusicGroup group = musicGroupDao.get(musicGroupId);
-		if(group != null){
-			musicGroupDao.update(musicGroup);
-			//修改课程里面的教学点
-			if(!group.getSchoolId().equals(musicGroup.getSchoolId())){
-				courseScheduleDao.updateByMusicGroupId(musicGroupId,musicGroup.getSchoolId());
-			}
-			// 删除乐团付费主体列表
-			musicGroupPaymentEntitiesDao.delByGroupId(musicGroupId);
-			//批量新增
-			musicGroupPaymentEntitiesDao.batchAdd(subFeeSettingDto.getMusicGroupPaymentEntities(),musicGroupId);
-
-			// 修改学员付费周期
-			List<Integer> calender = subFeeSettingDto.getMonths();
-			//删除乐团相关付费周期
-			musicGroupPaymentCalenderDao.delByGroupId(musicGroupId);
-			//批量插入
-			musicGroupPaymentCalenderDao.batchAdd(calender,musicGroupId);
-		}
-	}
+    @Override
+    public BaseDAO<String, MusicGroup> getDAO() {
+        return musicGroupDao;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public String createGroup(SubFeeSettingDto subFeeSettingDto, Integer userId) {
+        MusicGroup musicGroup = subFeeSettingDto.getMusicGroup();
+        List<MusicGroupSubjectGoodsGroup> musicGroupSubjectGoodsGroups = subFeeSettingDto.getMusicGroupSubjectGoodsGroups();
+        List<MusicGroupSubjectPlan> musicGroupSubjectPlans = subFeeSettingDto.getMusicGroupSubjectPlans();
+        List<SubjectRegisterDto> subjectRegisters = subFeeSettingDto.getSubjectRegisters();
+        String musicGroupId = idGeneratorService.generatorId() + "";
+        musicGroup.setId(musicGroupId);
+        // 保存乐团基本信息
+        musicGroupDao.insert(musicGroup);
+        // 保存乐团付费主体列表
+        //批量新增
+        musicGroupPaymentEntitiesDao.batchAdd(subFeeSettingDto.getMusicGroupPaymentEntities(),musicGroupId);
+        // 保存学员付费周期
+        List<Integer> months = subFeeSettingDto.getMonths();
+        if (months != null && months.size() > 0) {
+            musicGroupPaymentCalenderDao.batchAdd(months,musicGroupId);
+        }
+        // 保存乐团声部规划
+        if (musicGroupSubjectPlans == null) {
+            musicGroupSubjectPlans = new ArrayList<>();
+        }
+        musicGroupSubjectPlans.forEach(e -> {
+            e.setMusicGroupId(musicGroupId);
+            musicGroupSubjectPlanDao.insert(e);
+        });
+        //乐团科目学生
+        if (subjectRegisters != null) {
+            List<StudentRegistration> studentRegistrationList = new ArrayList<>();
+            subjectRegisters.forEach(e -> {
+                        //原来乐团的注册学生
+                        List<StudentRegistration> musicGroupStudentRegistrationList = studentRegistrationService.findStudentListByIdList(e.getRegisterIdList());
+                        for (StudentRegistration studentRegistration : musicGroupStudentRegistrationList) {
+                            studentRegistration.setMusicGroupStatus(ClassGroupStudentStatusEnum.NORMAL);
+                            studentRegistration.setPaymentStatus(YesOrNoEnum.NO);
+                            studentRegistration.setMusicGroupId(musicGroupId);
+                            studentRegistration.setSubjectId(e.getSubjectId());
+                            studentRegistration.setActualSubjectId(e.getSubjectId());
+                        }
+                        studentRegistrationList.addAll(musicGroupStudentRegistrationList);
+                    }
+            );
+            studentRegistrationService.batchInsert(studentRegistrationList);
+        }
+        // 保存乐团声部商品规划
+        if (musicGroupSubjectGoodsGroups == null) {
+            musicGroupSubjectGoodsGroups = new ArrayList<>();
+        }
+        musicGroupSubjectGoodsGroupDao.batchInsert(musicGroupSubjectGoodsGroups,musicGroupId);
+        // 新增聊天群
+        // 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, ""));
+        return musicGroupId;
+    }
+
+    @Override
+    public List<MusicCardDto> queryUserMusicGroups(Integer userId) {
+        List<MusicCardDto> musicCardDtos = musicGroupDao.queryUserMusicGroups(userId);
+        // 获取学员在该乐团续费状态
+        musicCardDtos.forEach(e -> {
+            MusicGroupStudentFee groupStudentFee = musicGroupStudentFeeDao.findByUser(userId, e.getMusicGroupId());
+            if(groupStudentFee != null){
+                e.setPaymentStatus(musicGroupStudentFeeDao.findByUser(userId, e.getMusicGroupId()).getPaymentStatus());
+            }
+        });
+        return musicCardDtos;
+    }
+
+    @Override
+    public MusicCardDto queryPersonalMusicGroups(Integer id) {
+        MusicCardDto musicCardDto = musicGroupDao.queryPersonalMusicGroups(id);
+        musicCardDto.setMusicGroupNum(musicGroupDao.countUserMusicGroups(id));
+        musicCardDto.setVipClassNum(musicGroupDao.countCourseByType(id, ClassGroupTypeEnum.VIP));
+        return musicGroupDao.queryPersonalMusicGroups(id);
+    }
+
+    @Override
+    public List<BasicUserDto> findTeachersByStuId(Integer studentId) {
+        return musicGroupDao.findTeachersByStuId(studentId);
+    }
+
+    @Override
+    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+    public boolean cancelMusicGroup(String musicGroupId) {
+        MusicGroup musicGroup = musicGroupDao.getLocked(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());
+        }
+
+        // 查询是否有中间状态的缴费信息
+        List<StudentPaymentOrder> studentPaymentOrders = studentPaymentOrderDao.queryByDealStatus(musicGroupId, OrderTypeEnum.APPLY, DealStatusEnum.ING);
+
+        if (studentPaymentOrders != null && studentPaymentOrders.size() > 0) {
+            throw new BizException("缴费存在交易中的数据,不能取消乐团");
+        }
+
+        // 查询已缴费信息
+        studentPaymentOrders = studentPaymentOrderDao.queryByDealStatus(musicGroupId, OrderTypeEnum.APPLY, DealStatusEnum.SUCCESS);
+
+        // 退费
+        for (StudentPaymentOrder order : studentPaymentOrders) {
+            sysUserCashAccountService.updateBalance(order.getUserId(), order.getActualAmount());
+            // 增加交易流水
+            sysUserCashAccountDetailService.addCashAccountDetail(order.getUserId(), order.getActualAmount(), SysUserCashAccountDetailService.MUSIC_GROUP
+                    + musicGroupId, "", PlatformCashAccountDetailTypeEnum.REFUNDS, null, DealStatusEnum.SUCCESS, "取消乐团");
+        }
+
+        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);
+
+        // 重新设置下次缴费时间
+        musicGroupStudentFeeDao.updateNextPaymentDate(musicGroupId, musicGroupPaymentCalenderService.getNextPaymentDate(musicGroupId));
+
+        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
+    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+    public boolean applyQuitMusicGroup(String musicGroupId, SysUser sysUser) {
+        MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
+        if (musicGroup == null) {
+            throw new BizException("乐团不存在");
+        }
+
+        MusicGroupQuit musicGroupQuit = new MusicGroupQuit();
+        musicGroupQuit.setCreateTime(new Date());
+        musicGroupQuit.setJoinDate(sysUser.getCreateTime());
+        musicGroupQuit.setMusicGroupId(musicGroupId);
+        musicGroupQuit.setUserId(sysUser.getId());
+        musicGroupQuit.setStatus(ApprovalStatus.PROCESSING);
+
+        musicGroupQuitDao.insert(musicGroupQuit);
+        return true;
+    }
+
+    @Override
+    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+    public boolean approveQuitMusicGroup(Long id, ApprovalStatus status, String reason) {
+        MusicGroupQuit musicGroupQuit = musicGroupQuitDao.get(id);
+        if (musicGroupQuit != null) {
+
+            Date date = new Date();
+
+            String musicGroupId = musicGroupQuit.getMusicGroupId();
+            Integer userId = musicGroupQuit.getUserId();
+
+            musicGroupQuit.setStatus(status);
+            musicGroupQuit.setReason(reason);
+            musicGroupQuit.setQuitDate(date);
+            musicGroupQuitDao.update(musicGroupQuit);
+
+            if (status == ApprovalStatus.APPROVED) {
+                classGroupStudentMapperDao.deleteStudentByMusicGroupId(musicGroupId, userId);
+
+                // 判断乐器是否是租赁
+                StudentRegistration studentRegistration = studentRegistrationService.queryByUserIdAndMusicGroupId(userId, musicGroupId);
+                if (studentRegistration == null) {
+                    throw new BizException("用户注册信息不存在");
+                }
+                // 退团
+                studentRegistration.setMusicGroupStatus(ClassGroupStudentStatusEnum.QUIT);
+                studentRegistration.setUpdateTime(date);
+
+                Integer subjectId = studentRegistration.getActualSubjectId();
+                MusicGroupSubjectPlan musicGroupSubjectPlan = musicGroupSubjectPlanDao.getMusicOneSubjectClassPlan(musicGroupId, subjectId);
+                if (musicGroupSubjectPlan == null) {
+                    throw new BizException("乐团声部费用设置不存在");
+                }
+                if (musicGroupSubjectPlan.getDepositFee().doubleValue() > 0) {
+                    // 增加交易流水
+                    sysUserCashAccountDetailService.addCashAccountDetail(userId, musicGroupSubjectPlan.getDepositFee(),
+                            SysUserCashAccountDetailService.MUSIC_GROUP + musicGroupId, "", PlatformCashAccountDetailTypeEnum.REFUNDS, null,
+                            DealStatusEnum.SUCCESS, "退出乐团");
+                }
+            }
+        }
+        return true;
+    }
+
+    @Override
+    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+    public boolean directQuitMusicGroup(String musicGroupId, Integer userId, String reason) {
+
+        SysUser sysUser = sysUserFeignService.queryUserById(userId);
+        if (sysUser == null) {
+            throw new BizException("获取用户信息失败");
+        }
+
+        Date date = new Date();
+
+        MusicGroupQuit musicGroupQuit = new MusicGroupQuit();
+        musicGroupQuit.setCreateTime(date);
+        musicGroupQuit.setJoinDate(sysUser.getCreateTime());
+        musicGroupQuit.setMusicGroupId(musicGroupId);
+        musicGroupQuit.setUserId(sysUser.getId());
+        musicGroupQuit.setStatus(ApprovalStatus.APPROVED);
+        musicGroupQuit.setReason(reason);
+        musicGroupQuit.setQuitDate(date);
+
+        musicGroupQuitDao.insert(musicGroupQuit);
+
+        classGroupStudentMapperDao.deleteStudentByMusicGroupId(musicGroupId, userId);
+
+        // 判断乐器是否是租赁
+        StudentRegistration studentRegistration = studentRegistrationService.queryByUserIdAndMusicGroupId(userId, musicGroupId);
+        if (studentRegistration == null) {
+            throw new BizException("用户注册信息不存在");
+        }
+        // 退团
+        studentRegistration.setMusicGroupStatus(ClassGroupStudentStatusEnum.QUIT);
+        studentRegistration.setUpdateTime(date);
+
+        Integer subjectId = studentRegistration.getActualSubjectId();
+        MusicGroupSubjectPlan musicGroupSubjectPlan = musicGroupSubjectPlanDao.getMusicOneSubjectClassPlan(musicGroupId, subjectId);
+        if (musicGroupSubjectPlan == null) {
+            throw new BizException("乐团声部费用设置不存在");
+        }
+        if (musicGroupSubjectPlan.getDepositFee().doubleValue() > 0) {
+            // 增加交易流水
+            sysUserCashAccountDetailService.addCashAccountDetail(userId, musicGroupSubjectPlan.getDepositFee(), SysUserCashAccountDetailService.MUSIC_GROUP
+                    + musicGroupId, "", PlatformCashAccountDetailTypeEnum.REFUNDS, null, DealStatusEnum.SUCCESS, "退出乐团");
+        }
+
+        return true;
+    }
+
+    @Override
+    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+    public Map renew(String musicGroupId, Integer userId) {
+
+        MusicGroup musicGroup = this.get(musicGroupId);
+        if (musicGroup == null) {
+            throw new BizException("乐团不存在");
+        }
+
+        MusicGroupStudentFee musicGroupStudentFee = musicGroupStudentFeeDao.findByUser(userId, musicGroupId);
+
+        if (musicGroupStudentFee == null) {
+            throw new BizException("个人信息不存在");
+        }
+        // 判断当前是否是续费状态
+        if (musicGroupStudentFee.getPaymentStatus() != PaymentStatus.NON_PAYMENT) {
+            throw new BizException("已缴费");
+        }
+
+        BigDecimal amount = musicGroupStudentFee.getTemporaryCourseFee();
+        if (amount == null || amount.doubleValue() == 0) {
+            amount = musicGroupStudentFee.getCourseFee();
+        }
+
+        Date date = new Date();
+        StudentPaymentOrder studentPaymentOrder = new StudentPaymentOrder();
+        studentPaymentOrder.setUserId(userId);
+        studentPaymentOrder.setOrderNo(idGeneratorService.generatorId("RENEW") + "");
+        studentPaymentOrder.setType(OrderTypeEnum.RENEW);
+        studentPaymentOrder.setExpectAmount(amount);
+        studentPaymentOrder.setActualAmount(amount);
+        studentPaymentOrder.setStatus(DealStatusEnum.ING);
+        studentPaymentOrder.setPaymentChannel("银联");
+        studentPaymentOrder.setMusicGroupId(musicGroupId);
+        studentPaymentOrderService.insert(studentPaymentOrder);
+
+        ArrayList<StudentPaymentOrderDetail> studentPaymentOrderDetailList = new ArrayList<>();
+        StudentPaymentOrderDetail studentPaymentOrderDetail = new StudentPaymentOrderDetail();
+        studentPaymentOrderDetail.setType(OrderDetailTypeEnum.COURSE);
+        studentPaymentOrderDetail.setPrice(amount);
+        studentPaymentOrderDetail.setCreateTime(date);
+        studentPaymentOrderDetail.setUpdateTime(date);
+        studentPaymentOrderDetail.setPaymentOrderId(studentPaymentOrder.getId());
+        studentPaymentOrderDetailList.add(studentPaymentOrderDetail);
+
+        studentPaymentOrderDetailService.batchAdd(studentPaymentOrderDetailList);
+
+        try {
+            return payService.getPayMap(amount, idGeneratorService.generatorId("payment") + "", "https://pay.dayaedu.com/api/yqpay/notify",
+                    "http://dev.dayaedu.com", "测试订单", "测试订单");
+        } catch (Exception e) {
+            throw new BizException("调用支付接口出错", e);
+        }
+    }
+
+    @Override
+    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+    public boolean renewForCallback(StudentPaymentOrder studentPaymentOrder) {
+
+        studentPaymentOrderDao.update(studentPaymentOrder);
+
+        Integer userId = studentPaymentOrder.getUserId();
+        String musicGroupId = studentPaymentOrder.getMusicGroupId();
+
+        //更新下次续费时间
+        MusicGroupStudentFee musicGroupStudentFee = musicGroupStudentFeeDao.findByUser(userId, musicGroupId);
+
+        if(musicGroupStudentFee == null){
+            throw new BizException("系统数据异常,找不到学员预缴费信息");
+        }
+
+        Date date = new Date();
+
+        musicGroupStudentFee.setUpdateTime(date);
+        musicGroupStudentFee.setLatestPaidTime(date);
+        musicGroupStudentFee.setPaymentStatus(PaymentStatus.PAID_COMPLETED);
+        musicGroupStudentFee.setTemporaryCourseFee(new BigDecimal(0));
+        musicGroupStudentFee.setNextPaymentDate(musicGroupPaymentCalenderService.getNextPaymentDate(musicGroupId));
+
+        musicGroupStudentFeeDao.update(musicGroupStudentFee);
+
+        return true;
+    }
+
+    @Override
+    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+    public boolean updateTeacherCoursesSalary(Long courseScheduleId, Integer teacherId, BigDecimal salary, BigDecimal subsidy, String scope) {
+
+        CourseSchedule courseSchedule = courseScheduleDao.get(courseScheduleId);
+        if (courseSchedule == null) {
+            throw new BizException("课程信息不存在");
+        }
+
+        if ("all".equals(scope)) {
+            Integer classGrpupId = courseSchedule.getClassGroupId();
+            // 未结算的课酬都修改
+            courseScheduleTeacherSalaryDao.batchUpdateWages(classGrpupId, teacherId, salary, subsidy);
+        } else {
+            CourseScheduleTeacherSalary courseScheduleTeacherSalary = courseScheduleTeacherSalaryDao.queryByCourseScheduleIdAndUserId(courseScheduleId,
+                    teacherId);
+            if (courseScheduleTeacherSalary == null) {
+                throw new BizException("课程结算信息不存在");
+            }
+            // 判断当前课程是否结算
+            if (courseScheduleTeacherSalary.getSettlementTime() != null) {
+                throw new BizException("课程已结算");
+            }
+            courseScheduleTeacherSalary.setExpectSalary(salary);
+            courseScheduleTeacherSalary.setSubsidy(subsidy);
+            courseScheduleTeacherSalary.setUpdateTime(new Date());
+            courseScheduleTeacherSalaryDao.update(courseScheduleTeacherSalary);
+        }
+        return true;
+    }
+
+    @Override
+    public PageInfo<MusicGroup> queryMusicGroupPage(QueryInfo queryInfo) {
+        PageInfo<MusicGroup> musicGroupPageInfo = queryPage(queryInfo);
+        List<MusicGroup> musicGroupList = musicGroupPageInfo.getRows();
+        // 获取学校编号列表
+        Set<Integer> schoolIds = musicGroupList.stream().map(e -> e.getSchoolId()).collect(Collectors.toSet());
+        List<Map<Integer, String>> schoolNames = schoolDao.queryNameByIds(schoolIds);
+        // 获取相关学校名称map
+        Map<Integer, String> schoolNameMap = MapUtil.convertMybatisMap(schoolNames);
+
+        // 获取教务老师编号列表
+        Set<Integer> educationalTeacherIds = musicGroupList.stream().map(e -> e.getEducationalTeacherId()).collect(Collectors.toSet());
+        // 获取相关老师的名字
+        List<Map<Integer, String>> educationalTeacherNames = teacherDao.queryNameByIds(educationalTeacherIds);
+        Map<Integer, String> educationalTeacherNameMap = MapUtil.convertMybatisMap(educationalTeacherNames);
+
+        // 获取运营主管编号列表
+        Set<Integer> teamTeacherIds = musicGroupList.stream().map(e -> e.getTeamTeacherId()).collect(Collectors.toSet());
+        List<Map<Integer, String>> teamTeacherNames = teacherDao.queryNameByIds(teamTeacherIds);
+        Map<Integer, String> teamTeacherNameMap = MapUtil.convertMybatisMap(teamTeacherNames);
+
+        // 获取乐团编号列表
+        Set<String> musicGroupIds = musicGroupList.stream().map(e -> e.getId()).collect(Collectors.toSet());
+        // 统计乐团在读人数
+        List<Map<String, Long>> payNums = musicGroupDao.countPayNum(musicGroupIds);
+        Map<String, Long> payNumMap = MapUtil.convertMybatisMap(payNums);
+
+        // 获取收费类型编号列表
+        Set<Integer> chargeTypeIds = musicGroupList.stream().map(e -> e.getChargeTypeId()).collect(Collectors.toSet());
+        List<Map<Integer, String>> chargeTypeNames = chargeTypeDao.queryNameByIds(chargeTypeIds);
+        Map<Integer, String> chargeTypeNameMap = MapUtil.convertMybatisMap(chargeTypeNames);
+
+        musicGroupList.forEach(e -> {
+            e.setSchoolName(schoolNameMap.get(e.getSchoolId()));
+            e.setEducationalTeacherName(educationalTeacherNameMap.get(e.getEducationalTeacherId()));
+            e.setTeamTeacherName(teamTeacherNameMap.get(e.getTeamTeacherId()));
+            e.setPayNum(payNumMap.get(e.getId()) == null ? 0 : payNumMap.get(e.getId()).intValue());
+            e.setChargeTypeName(chargeTypeNameMap.get(e.getChargeTypeId()));
+        });
+        return musicGroupPageInfo;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateBaseInfo(SubFeeSettingDto subFeeSettingDto) {
+        MusicGroup musicGroup = subFeeSettingDto.getMusicGroup();
+        String musicGroupId = musicGroup.getId();
+        MusicGroup group = musicGroupDao.get(musicGroupId);
+        if(group != null){
+            musicGroupDao.update(musicGroup);
+            //修改课程里面的教学点
+            if(!group.getSchoolId().equals(musicGroup.getSchoolId())){
+                courseScheduleDao.updateByMusicGroupId(musicGroupId,musicGroup.getSchoolId());
+            }
+            // 删除乐团付费主体列表
+            musicGroupPaymentEntitiesDao.delByGroupId(musicGroupId);
+            //批量新增
+            musicGroupPaymentEntitiesDao.batchAdd(subFeeSettingDto.getMusicGroupPaymentEntities(),musicGroupId);
+
+            // 修改学员付费周期
+            List<Integer> calender = subFeeSettingDto.getMonths();
+            //删除乐团相关付费周期
+            musicGroupPaymentCalenderDao.delByGroupId(musicGroupId);
+            //批量插入
+            musicGroupPaymentCalenderDao.batchAdd(calender,musicGroupId);
+        }
+    }
+
+    @Override
+    public SubFeeSettingDto findMusicGroupBasicInfo(String musicGroupId) {
+        SubFeeSettingDto subFeeSettingDto = new SubFeeSettingDto();
+        //获取乐团信息
+        subFeeSettingDto.setMusicGroup(musicGroupDao.get(musicGroupId));
+        //获取付费主体
+        subFeeSettingDto.setMusicGroupPaymentEntities(musicGroupPaymentEntitiesDao.findByMusicGroupId(musicGroupId));
+        //获取缴费周期
+        List<Integer> paymentMonth = musicGroupPaymentCalenderDao.findByMusicGroupId(musicGroupId).stream().map(e -> e.getPaymentMonth()).collect(Collectors.toList());
+        subFeeSettingDto.setMonths(paymentMonth);
+        return subFeeSettingDto;
+    }
 }

+ 46 - 10
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java

@@ -11,7 +11,7 @@ import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.StudentFeeDetailDto;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.*;
-import com.ym.mec.biz.service.MusicGroupSubjectPlanService;
+import com.ym.mec.biz.service.*;
 import com.ym.mec.common.entity.ImResult;
 import com.ym.mec.common.entity.ImUserModel;
 import com.ym.mec.im.ImFeignService;
@@ -28,9 +28,6 @@ import com.ym.mec.biz.dal.dto.StudentApplyDetailDto;
 import com.ym.mec.biz.dal.dto.StudentFeeDto;
 import com.ym.mec.biz.dal.dto.StudentInfo;
 import com.ym.mec.biz.dal.page.StudentRegistrationQueryInfo;
-import com.ym.mec.biz.service.StudentPaymentOrderDetailService;
-import com.ym.mec.biz.service.StudentPaymentOrderService;
-import com.ym.mec.biz.service.StudentRegistrationService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
@@ -60,9 +57,15 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     @Autowired
     private SubjectDao subjectDao;
     @Autowired
+    private SysUserCashAccountDao sysUserCashAccountDao;
+    @Autowired
+    private ContractService contractService;
+    @Autowired
     private ImFeignService imFeignService;
     @Autowired
     private MusicGroupSubjectPlanService musicGroupSubjectPlanService;
+    @Autowired
+    private SubjectService subjectService;
 
     @Override
     public BaseDAO<Long, StudentRegistration> getDAO() {
@@ -90,14 +93,14 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     }
 
     @Override
-    public Integer batchUpdateSubject(String userIds, Integer subId,String musicGroupId) {
+    public Integer batchUpdateSubject(String userIds, Integer subId, String musicGroupId) {
         //批量调剂(未缴费学员)
-        return studentRegistrationDao.batchUpdateSubject(userIds,subId,musicGroupId);
+        return studentRegistrationDao.batchUpdateSubject(userIds, subId, musicGroupId);
     }
 
     @Override
     public StudentFeeDetailDto queryFeeDetail(Integer studentId, String musicGroupId) {
-		return studentRegistrationDao.queryFeeDetail(studentId,musicGroupId);
+        return studentRegistrationDao.queryFeeDetail(studentId, musicGroupId);
     }
 
     @Override
@@ -137,7 +140,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     @Transactional(rollbackFor = Exception.class)
     public StudentRegistration addStudent(StudentRegistration studentRegistration) {
         Date date = new Date();
-        int userId = 0;
+        Integer userId = 0;
         SysUser sysUser = studentRegistrationDao.getSysUserByPhone(studentRegistration.getParentsPhone());
         if (sysUser == null) {
             sysUser = new SysUser();
@@ -153,6 +156,14 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             sysUser.setIdCardNo(studentRegistration.getIdCardNo());
             teacherDao.addSysUser(sysUser);
             userId = sysUser.getId();
+            //添加用户现金账户
+            sysUserCashAccountDao.insert(new SysUserCashAccount(userId,"CNY"));
+            //添加用户电子签章账户
+            contractService.register(userId);
+            //注册到融云
+            ImResult register = imFeignService.register(new ImUserModel(userId.toString(), sysUser.getUsername(), sysUser.getAvatar()));
+            sysUser.setImToken(register.getToken());
+            teacherDao.updateUser(sysUser);
         }
         studentRegistration.setUserId(sysUser.getId());
         studentRegistrationDao.insert(studentRegistration);
@@ -358,6 +369,10 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
                 sysUser.setUserType(SysUserType.STUDENT);
                 teacherDao.addSysUser(sysUser);
                 userId = sysUser.getId();
+                //添加用户现金账户
+                sysUserCashAccountDao.insert(new SysUserCashAccount(userId,"CNY"));
+                //添加用户电子签章账户
+                contractService.register(userId);
                 //注册到融云
                 ImResult register = imFeignService.register(new ImUserModel(userId.toString(), sysUser.getUsername(), sysUser.getAvatar()));
                 sysUser.setImToken(register.getToken());
@@ -410,7 +425,18 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 
     @Override
     public List<StudentRegistration> findClassGroupStu(String musicGroupId, Integer classGroupId) {
-        return studentRegistrationDao.findClassGroupStu(musicGroupId, classGroupId);
+        //获取所有声部
+        List<Subject> subjectList = subjectService.findAll(new HashMap<>());
+        List<StudentRegistration> classGroupStuList = studentRegistrationDao.findClassGroupStu(musicGroupId, classGroupId);
+        for (StudentRegistration studentRegistration : classGroupStuList) {
+            for (Subject subject : subjectList) {
+                if (studentRegistration.getActualSubjectId().equals(subject.getId())) {
+                    studentRegistration.setSubjectName(subject.getName());
+                    break;
+                }
+            }
+        }
+        return classGroupStuList;
     }
 
     @Override
@@ -440,6 +466,16 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 
     @Override
     public List<StudentRegistration> getMusicGroupStu(String musicGroupId, Integer actualSubjectId) {
-        return studentRegistrationDao.findMusicGroupStudent(musicGroupId,actualSubjectId);
+        return studentRegistrationDao.findMusicGroupStudent(musicGroupId, actualSubjectId);
+    }
+
+    @Override
+    public List<StudentRegistration> findStudentListByIdList(List<Long> idList) {
+        return studentRegistrationDao.findStudentListByIdList(idList);
+    }
+
+    @Override
+    public int batchInsert(List<StudentRegistration> studentRegistrationList) {
+        return studentRegistrationDao.batchInsert(studentRegistrationList);
     }
 }

+ 29 - 31
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentWithdrawServiceImpl.java

@@ -9,6 +9,7 @@ import com.ym.mec.biz.dal.dto.WithdrawInfoDto;
 import com.ym.mec.biz.dal.entity.StudentWithdraw;
 import com.ym.mec.biz.dal.entity.SysUserCashAccount;
 import com.ym.mec.biz.dal.entity.SysUserCashAccountDetail;
+import com.ym.mec.biz.dal.enums.DealStatusEnum;
 import com.ym.mec.biz.dal.enums.PlatformCashAccountDetailTypeEnum;
 import com.ym.mec.biz.dal.enums.PlatformCashAccountStatusEnum;
 import com.ym.mec.biz.dal.enums.TransTypeEnum;
@@ -51,9 +52,6 @@ public class StudentWithdrawServiceImpl extends BaseServiceImpl<String, StudentW
 
 	private static final Logger log = LoggerFactory.getLogger(StudentWithdrawServiceImpl.class);
 
-//	@Qualifier("auth-server")
-//	@Autowired
-//	private SysUserFeignService sysUserFeignService;
 	@Autowired
 	private SysUserCashAccountService cashAccountService;
 	@Autowired
@@ -61,13 +59,10 @@ public class StudentWithdrawServiceImpl extends BaseServiceImpl<String, StudentW
 	@Autowired
 	private SysUserCashAccountDetailService accountDetailService;
 
-	private Lock lock = new ReentrantLock();
-
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public boolean confirmWithdraw(WithdrawDto withdrawDto) {
 		try {
-			lock.lock();
 			SysUserCashAccount sysUserCashAccount = cashAccountService.get(withdrawDto.getUserId().intValue());
 			if (Objects.isNull(sysUserCashAccount)){
 				throw new BizException("账户不存在!");
@@ -78,17 +73,38 @@ public class StudentWithdrawServiceImpl extends BaseServiceImpl<String, StudentW
 			}
 			//第三方提现到用户银行卡
 			//用户个人虚拟账户金额减少
-			updateCashAccount(sysUserCashAccount, withdrawDto);
+
 			//生成提现记录(缺少银行流水号,交易状态,用户承担的费用,平台承担的费用)
-			saveStudentWithdraw(withdrawDto);
+			Integer withdrawId = saveStudentWithdraw(withdrawDto);
+
+			accountDetailService.addCashAccountDetail(withdrawDto.getUserId(),withdrawDto.getAmount(),withdrawId +"","",
+					PlatformCashAccountDetailTypeEnum.WITHDRAW,TransTypeEnum.FAST_PAYMENT, DealStatusEnum.ING,"");
 		} catch (Exception e) {
 			log.error("用户提现出现异常 {}", e.getMessage(), e);
 			throw new BizException(e.getMessage());
-		} finally {
-			lock.unlock();
 		}
 		return true;
 	}
+	/**
+	 * 修改用户账户余额,保存账户明细
+	 *
+	 * @param withdrawDto
+	 */
+	private void updateCashAccount(SysUserCashAccount sysUserCashAccount, WithdrawDto withdrawDto) {
+		BigDecimal balance = sysUserCashAccount.getBalance().subtract(withdrawDto.getAmount());
+		SysUserCashAccount account = new SysUserCashAccount();
+		account.setUserId(sysUserCashAccount.getUserId());
+		account.setBalance(balance);
+		account.setUpdateTime(new Date());
+		cashAccountService.update(account);
+		SysUserCashAccountDetail cashAccountDetail = new SysUserCashAccountDetail();
+		cashAccountDetail.setUserId(withdrawDto.getUserId());
+		cashAccountDetail.setType(PlatformCashAccountDetailTypeEnum.WITHDRAW);
+		cashAccountDetail.setAmount(withdrawDto.getAmount());
+		cashAccountDetail.setBalance(balance);
+		cashAccountDetail.setCreateTime(new Date());
+		cashAccountDetailService.insert(cashAccountDetail);
+	}
 
 	@Override
 	public PageInfo<WithdrawInfoDto> queryWithdrawPage(CashAccountDetail cashAccountDetail) {
@@ -146,33 +162,14 @@ public class StudentWithdrawServiceImpl extends BaseServiceImpl<String, StudentW
 		}
 	}
 
-	/**
-	 * 修改用户账户余额,保存账户明细
-	 *
-	 * @param withdrawDto
-	 */
-	private void updateCashAccount(SysUserCashAccount sysUserCashAccount, WithdrawDto withdrawDto) {
-		BigDecimal balance = sysUserCashAccount.getBalance().subtract(withdrawDto.getAmount());
-		SysUserCashAccount account = new SysUserCashAccount();
-		account.setUserId(sysUserCashAccount.getUserId());
-		account.setBalance(balance);
-		account.setUpdateTime(new Date());
-		cashAccountService.update(account);
-		SysUserCashAccountDetail cashAccountDetail = new SysUserCashAccountDetail();
-		cashAccountDetail.setUserId(withdrawDto.getUserId());
-		cashAccountDetail.setType(PlatformCashAccountDetailTypeEnum.WITHDRAW);
-		cashAccountDetail.setAmount(withdrawDto.getAmount());
-		cashAccountDetail.setBalance(balance);
-		cashAccountDetail.setCreateTime(new Date());
-		cashAccountDetailService.insert(cashAccountDetail);
-	}
+
 
 	/**
 	 * 保存提现记录
 	 *
 	 * @param withdrawDto
 	 */
-	private void saveStudentWithdraw(WithdrawDto withdrawDto) {
+	private Integer saveStudentWithdraw(WithdrawDto withdrawDto) {
 		IdWorker idWorker = new IdWorker(0, 0);
 		StudentWithdraw studentWithdraw = new StudentWithdraw();
 		studentWithdraw.setWithdrawNo(idWorker.nextId());
@@ -181,6 +178,7 @@ public class StudentWithdrawServiceImpl extends BaseServiceImpl<String, StudentW
 		studentWithdraw.setAmount(withdrawDto.getAmount());
 		studentWithdraw.setCreateTime(new Date());
 		insert(studentWithdraw);
+		return studentWithdraw.getId();
 	}
 
 }

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SubjectServiceImpl.java

@@ -155,4 +155,9 @@ public class SubjectServiceImpl extends BaseServiceImpl<Integer, Subject>  imple
         Map<Long,String> subjectIdAndName = MapUtil.convertMybatisMap(bySubjecIds);
         return subjectIdAndName;
     }
+
+    @Override
+    public List<Subject> findSubSubjects() {
+        return subjectDao.findSubSubjects();
+    }
 }

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

@@ -11,12 +11,13 @@ import com.ym.mec.biz.dal.dto.MusicGroupTeachersDto;
 import com.ym.mec.biz.dal.dto.TeacherCloseDto;
 import com.ym.mec.biz.dal.entity.MusicGroup;
 import com.ym.mec.biz.dal.entity.School;
+import com.ym.mec.biz.dal.entity.SysUserCashAccount;
 import com.ym.mec.biz.dal.entity.Teacher;
-import com.ym.mec.biz.dal.entity.TeacherAttendance;
 import com.ym.mec.biz.dal.page.MusicGroupTeacherAttendanceQueryInfo;
-import com.ym.mec.biz.dal.page.MusicGroupTeachersQueryInfo;
 import com.ym.mec.biz.dal.page.TeacherCloseQueryInfo;
 import com.ym.mec.biz.dal.page.TeacherQueryInfo;
+import com.ym.mec.biz.service.ContractService;
+import com.ym.mec.biz.service.SysUserTsignService;
 import com.ym.mec.biz.service.TeacherService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.entity.ImGroupModel;
@@ -55,9 +56,13 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 	@Autowired
 	private SchoolDao schoolDao;
 	@Autowired
+	private SysUserCashAccountDao sysUserCashAccountDao;
+	@Autowired
 	private SysUserFeignService sysUserFeignService;
 	@Autowired
 	private ImFeignService imFeignService;
+	@Autowired
+	private ContractService contractService;
 
 
 	@Override
@@ -85,6 +90,10 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 		}
 		teacher.setUserType(SysUserType.TEACHER);
 		teacherDao.addSysUser(teacher);
+		//添加用户现金账户
+		sysUserCashAccountDao.insert(new SysUserCashAccount(teacher.getId(),"CNY"));
+		//添加用户电子签章账户
+		contractService.register(teacher.getId());
 		teacherDao.insert(teacher);
 		ImResult imResult = imFeignService.register(new ImUserModel(teacher.getId().toString(), teacher.getUsername(), teacher.getAvatar()));
 		if(imResult != null){

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

@@ -577,7 +577,7 @@
             <if test="classScheduleType != null and classScheduleType != ''">
                 AND cs.type_ = #{classScheduleType}
             </if>
-            <if test="classScheduleType = null or classScheduleType = ''">
+            <if test="classScheduleType == null or classScheduleType == ''">
                 AND (cs.type_ = 'NORMAL' OR cs.type_ = 'MIX' OR cs.type_ = 'HIGH')
             </if>
             <if test="classScheduleStatus != null and classScheduleStatus != ''">
@@ -618,8 +618,10 @@
         <include refid="queryMusicGroupCourseScheduleSql"/>
         <include refid="global.limit"/>
     </select>
+
     <select id="countMusicGroupCourseSchedule" resultType="java.lang.Integer">
-        SELECT COUNT(cs.id_) FROM course_schedule cs
+        SELECT COUNT(cs.id_)
+        FROM course_schedule cs
         LEFT JOIN class_group cg ON cg.id_ = cs.class_group_id_
         <include refid="queryMusicGroupCourseScheduleSql"/>
     </select>
@@ -644,4 +646,11 @@
         UPDATE class_group SET student_num_ = student_num_+1,update_time_=#{updateTime} WHERE id_ = #{id} AND
         student_num_=#{studentNum}
     </update>
+
+    <update id="batchIncreaseClassTimes" parameterType="java.util.List">
+        UPDATE class_group SET current_class_times_ = current_class_times_+1,update_time_ = now() WHERE id_ in
+        <foreach collection="list" item="item" index="index" open="(" close=")" separator=",">
+        #{item}
+        </foreach>
+    </update>
 </mapper>

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

@@ -32,8 +32,6 @@
     <!-- 向数据库增加一条记录 -->
     <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.CooperationOrgan"
             useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-        <!-- <selectKey resultClass="int" keyProperty="id" > SELECT SEQ_WSDEFINITION_ID.nextval
-            AS ID FROM DUAL </selectKey> -->
         INSERT INTO cooperation_organ
         (id_,name_,linkman_,job_,mobile_no_,address_,organ_id_,create_time_,update_time_,ownership_type_)
         VALUES(#{id},#{name},#{linkman},#{job},#{mobileNo},#{address},#{organId},now(),now(),#{ownershipType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler})
@@ -81,11 +79,12 @@
             parameterType="map">
         SELECT * FROM cooperation_organ
         <where>
+                del_flag_ = 0
             <if test="search != null">
-                organ_id_ = #{search}
+                AND organ_id_ = #{search}
             </if>
         </where>
-        ORDER BY id_
+        ORDER BY update_time_ DESC
         <include refid="global.limit"/>
     </select>
 
@@ -93,8 +92,9 @@
     <select id="queryCount" resultType="int">
 		SELECT COUNT(*) FROM cooperation_organ
         <where>
+            del_flag_ = 0
             <if test="search != null">
-                organ_id_ = #{search}
+                AND organ_id_ = #{search}
             </if>
         </where>
 	</select>

+ 13 - 10
mec-biz/src/main/resources/config/mybatis/EmployeeMapper.xml

@@ -156,7 +156,7 @@
 
 
     <resultMap type="com.ym.mec.biz.dal.dto.EmployeeDto" id="EmployeeDto">
-        <result property="id" column="id_"/>
+        <result property="id" column="user_id_"/>
         <result property="realName" column="real_name_"/>
         <result property="gender" column="gender_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result property="phone" column="phone_"/>
@@ -178,27 +178,30 @@
         </collection>
     </resultMap>
     <select id="queryEmployByOrganId" resultMap="EmployeeDto">
-        SELECT su.id_,su.real_name_,su.gender_,su.phone_,su.user_type_,e.job_nature_,su.lock_flag_,
+        SELECT e.user_id_,su.real_name_,su.gender_,su.phone_,su.user_type_,e.job_nature_,su.lock_flag_,
         e.entry_date_,e.demission_date_,o.name_ organ_name_list_,o.id_ organ_id_list_,sr.role_name_,sr.id_ role_id_
-        FROM sys_user su
-        LEFT JOIN employee e ON su.id_ = e.user_id_
+        FROM (SELECT * FROM employee WHERE FIND_IN_SET(#{organId},organ_id_list_) <include refid="global.limit"/>) e
+        LEFT JOIN sys_user su ON su.id_ = e.user_id_
         LEFT JOIN sys_user_role sur ON sur.user_id_ = e.user_id_
         LEFT JOIN sys_role sr ON sr.id_ = sur.role_id_
         LEFT JOIN organization o ON FIND_IN_SET(o.id_,e.organ_id_list_)
-        WHERE su.user_type_ LIKE '%SYSTEM%' AND FIND_IN_SET(su.organ_id_,e.organ_id_list_)
+        WHERE su.user_type_ LIKE '%SYSTEM%'
         <if test="search != null">
             AND (su.real_name_ LIKE CONCAT('%',#{search},'%') OR su.phone_ LIKE CONCAT('%',#{search},'%'))
         </if>
-        <include refid="global.limit"/>
+        ORDER BY e.create_time_ DESC
     </select>
 
     <select id="queryEmployByOrganIdCount" resultType="int">
-        SELECT COUNT(su.id_)
-        FROM sys_user su
-        LEFT JOIN employee e ON su.id_ = e.user_id_
-        WHERE su.user_type_ LIKE '%SYSTEM%' AND FIND_IN_SET(su.organ_id_,e.organ_id_list_)
+        SELECT COUNT(e.user_id_)
+        FROM employee e
+        LEFT JOIN sys_user su ON su.id_ = e.user_id_
+        WHERE su.user_type_ LIKE '%SYSTEM%'
         <if test="search != null">
             AND (su.real_name_ LIKE CONCAT('%',#{search},'%') OR su.phone_ LIKE CONCAT('%',#{search},'%'))
         </if>
+        <if test="organId != null">
+            AND FIND_IN_SET(#{organId},e.organ_id_list_)
+        </if>
     </select>
 </mapper>

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

@@ -83,4 +83,7 @@
 	<select id="queryCount" resultType="int">
 		SELECT COUNT(*) FROM music_group_payment_entities
 	</select>
+    <select id="findByMusicGroupId" resultMap="MusicGroupPaymentEntities">
+		SELECT * FROM music_group_payment_entities WHERE music_group_id_ = #{musicGroupId}
+	</select>
 </mapper>

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

@@ -328,6 +328,7 @@
         LEFT JOIN `subject` s ON s.id_ = sr.actual_subject_id_
         LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
         <include refid="queryMusicGroupStudentSql"/>
+        ORDER BY sr.create_time_ DESC
         <include refid="global.limit"/>
     </select>
     <select id="countMusicGroupStudent" resultType="java.lang.Integer">

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

@@ -144,7 +144,8 @@
 
     <!-- 分页查询 -->
     <select id="queryPage" resultMap="PaymentOrderAndStudentInfo" parameterType="map">
-        SELECT spo.*,u.username_ FROM student_payment_order spo left join sys_user u on spo.user_id_ = u.id_
+        SELECT spo.*,u.username_ FROM student_payment_order spo
+        left join sys_user u on spo.user_id_ = u.id_
         <include refid="queryPaymentOrder"/>
         ORDER BY spo.id_
         <include refid="global.limit"/>

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

@@ -317,10 +317,28 @@
 
     <!-- 获取乐团的学生 -->
     <select id="findMusicGroupStudent" resultMap="StudentRegistration">
-        SELECT * FROM student_registration WHERE music_group_id_ = #{musicGroup}
+        SELECT * FROM student_registration WHERE music_group_id_ = #{musicGroupId}
         <if test="actualSubjectId != null and actualSubjectId !=''">
             AND actual_subject_id_ = #{actualSubjectId}
         </if>
         AND payment_status_ = 1
     </select>
+
+    <!-- 根据注册id list查询报名学生的信息 -->
+    <select id="findStudentListByIdList" resultMap="StudentRegistration">
+        SELECT * FROM student_registration WHERE id_ IN
+        <foreach collection="idList" item="id" index="index" open="(" close=")" separator=",">
+            #{id}
+        </foreach>
+    </select>
+
+    <insert id="batchInsert">
+        INSERT INTO student_registration
+        (parents_phone_,id_,user_id_,name_,music_group_id_,current_grade_,current_class_,subject_id_,is_allow_adjust_,kit_purchase_method_,remark_,create_time_,update_time_,parents_name_,parents_company_,payment_status_,actual_subject_id_,music_group_status_)
+        VALUES
+        <foreach collection="studentRegistrationList" item="item" index="index" separator=",">
+            (#{item.parentsPhone},#{item.id},#{item.userId},#{item.name},#{item.musicGroupId},#{item.currentGrade},#{item.currentClass},#{item.subjectId},#{item.isAllowAdjust,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{item.kitPurchaseMethod,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+            #{item.remark},now(),now(),#{item.parentsName},#{item.parentsCompany},#{item.paymentStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{item.subjectId},#{item.musicGroupStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler})
+        </foreach>
+    </insert>
 </mapper>

+ 10 - 3
mec-biz/src/main/resources/config/mybatis/StudentWithdrawMapper.xml

@@ -20,6 +20,10 @@
         <result column="withdraw_no_" property="withdrawNo"/>
         <result column="create_time_" property="createTime"/>
         <result column="modify_time_" property="modifyTime"/>
+        <result column="channel_" property="channel"/>
+        <result column="platform_account_no_" property="platformAccountNo"/>
+        <result column="balance_" property="balance"/>
+        <result column="real_name_" property="realName"/>
     </resultMap>
 
     <!-- 根据主键查询一条记录 -->
@@ -89,13 +93,16 @@
 
     <!-- 分页查询 -->
     <select id="queryPage" resultMap="StudentWithdraw" parameterType="map">
-        SELECT * FROM student_withdraw
+        SELECT sw.*,cad.platform_account_no_,cad.channel_,su.real_name_,cad.balance_
+        FROM student_withdraw sw
+        LEFT JOIN sys_user_cash_account_detail cad ON sw.id_ = cad.attribute1_
+        LEFT JOIN sys_user su ON sw.id_ = cad.attribute1_
         <where>
             <if test="userId != null">
-                user_id_ = #{userId}
+                sw.user_id_ = #{userId}
             </if>
         </where>
-        ORDER BY id_
+        ORDER BY sw.create_time_ DESC
         <include refid="global.limit"/>
     </select>
 

+ 3 - 5
mec-biz/src/main/resources/config/mybatis/SubjectMapper.xml

@@ -29,11 +29,6 @@
     <!-- 向数据库增加一条记录 -->
     <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.Subject" useGeneratedKeys="true" keyColumn="id"
             keyProperty="id">
-        <!--
-        <selectKey resultClass="int" keyProperty="id" >
-        SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL
-        </selectKey>
-        -->
         INSERT INTO subject (id_,name_,code_,parent_subject_id_,create_time_,update_time_)
         VALUES(#{id},#{name},#{code},#{parentSubjectId},now(),now())
     </insert>
@@ -138,6 +133,9 @@
             #{subjectId}
         </foreach>
     </select>
+    <select id="findSubSubjects" resultMap="Subject">
+        SELECT * FROM `subject` WHERE parent_subject_id_ != 0
+    </select>
 
     <sql id="querySubPageSql">
         <where>

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

@@ -34,14 +34,9 @@
     <!-- 向数据库增加一条记录 -->
     <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.SysUserCashAccount" useGeneratedKeys="true"
             keyColumn="id" keyProperty="id">
-        <!--
-        <selectKey resultClass="int" keyProperty="id" >
-        SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL
-        </selectKey>
-        -->
         INSERT INTO sys_user_cash_account
-        (user_id_,currency_,balance_,frozen_amount_,margin_balance_,status_,create_time_,update_time)
-        VALUES(#{userId},#{currency},#{balance},#{frozenAmount},#{marginBalance},#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},now(),now())
+        (user_id_,currency_,balance_,create_time_,update_time)
+        VALUES(#{userId},#{currency},now(),now())
     </insert>
 
     <!-- 根据主键查询一条记录 -->

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

@@ -54,7 +54,7 @@
         su.gender_,su.nation_,su.birthdate_,su.email_,su.im_token_
         FROM teacher t
         LEFT JOIN sys_user su ON t.id_ = su.id_
-        WHERE t.id_ = #{userId} AND su.del_flag_ = 0
+        WHERE t.id_ = #{id} AND su.del_flag_ = 0
     </select>
 
     <!-- 全查询 -->
@@ -133,12 +133,12 @@
                 introduction_ = #{introduction},
             </if>
         </set>
-        WHERE id_ = #{userId}
+        WHERE id_ = #{id}
     </update>
 
     <!-- 根据主键删除一条记录 -->
     <update id="delete">
-        DELETE FROM teacher WHERE id_ = #{userId}
+        DELETE FROM teacher WHERE id_ = #{id}
     </update>
 
     <update id="updateUser" parameterType="com.ym.mec.auth.api.entity.SysUser">

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

@@ -0,0 +1,156 @@
+package com.ym.mec.student.controller;
+
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dto.CashAccountDetail;
+import com.ym.mec.biz.dal.entity.StudentWithdraw;
+import com.ym.mec.biz.dal.entity.SysSuggestion;
+import com.ym.mec.biz.dal.entity.SysUserBankCard;
+import com.ym.mec.biz.service.*;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.UploadReturnBean;
+import com.ym.mec.util.upload.UploadUtil;
+import io.swagger.annotations.*;
+import org.apache.commons.lang.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+@Api(tags = "教师管理")
+@RestController
+public class StudentManageController extends BaseController {
+
+    @Autowired
+    private SysSuggestionService suggestionService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private SysUserCashAccountService sysUserCashAccountService;
+    @Autowired
+    private SysUserCashAccountDetailService sysUserCashAccountDetailService;
+    @Autowired
+    private ClassGroupService classGroupService;
+    @Autowired
+    private StudentWithdrawService studentWithdrawService;
+    @Autowired
+    private SysUserBankCardService sysUserBankCardService;
+
+    private final static Logger LOGGER = LoggerFactory.getLogger(StudentManageController.class);
+
+    @Autowired
+    private UploadFileService uploadFileService;
+
+    @PostMapping(value = "uploadFile")
+    public Object uploadFile(@ApiParam(value = "上传的文件", required = true) @RequestParam("file") MultipartFile file) {
+        try {
+            if (file != null && StringUtils.isNotBlank(file.getOriginalFilename())) {
+                UploadReturnBean bean = uploadFileService.uploadFile(file.getInputStream(), UploadUtil.getExtension(file.getOriginalFilename()));
+                if (bean.isStatus()) {
+                    return succeed(bean);
+                }
+                return failed(bean.getMessage());
+            }
+        } catch (Exception e) {
+            LOGGER.error("上传失败", e);
+        }
+        return failed("上传失败");
+    }
+
+    @ApiOperation(value = "新增建议")
+    @PostMapping("suggestion/add")
+    public Object add(SysSuggestion SysSuggestion) {
+        suggestionService.insert(SysSuggestion);
+        return succeed();
+    }
+
+
+    @ApiOperation(value = "根据群编号,获取群组所有成员基本信息")
+    @GetMapping("classGroup/findGroupUsers")
+    @PreAuthorize("@pcs.hasPermissions('classGroup/findGroupUsers')")
+    public Object findGroupUsers(String groupId) {
+        if (org.apache.commons.lang3.StringUtils.isEmpty(groupId)) {
+            return failed("参数校验错误");
+        }
+        return succeed(classGroupService.findGroupUsers(groupId));
+    }
+
+    @ApiOperation(value = "获取用户账户信息")
+    @GetMapping("userCashAccount/get")
+    public Object add() {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if(sysUser == null){
+            return failed("请重新登录");
+        }
+        return succeed(sysUserCashAccountService.get(sysUser.getId()));
+    }
+
+    @ApiOperation(value = "分页查询用户交易明细")
+    @GetMapping("userCashAccountDetail/queryPage")
+    public Object queryPage(CashAccountDetail queryInfo) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if(user == null && user.getId() != null){
+            return failed("请重新登录");
+        }
+        queryInfo.setUserId(user.getId());
+        return succeed(sysUserCashAccountDetailService.queryPage(queryInfo));
+    }
+
+    @ApiOperation(value = "新增提现申请")
+    @PostMapping("/add")
+    @PreAuthorize("@pcs.hasPermissions('studentWithdraw/add')")
+    public Object add(StudentWithdraw studentWithdraw) throws Exception {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if(sysUser == null && sysUser.getId() == null){
+            return failed("获取用户信息失败");
+        }
+        studentWithdraw.setUserId(sysUser.getId());
+        studentWithdrawService.add(studentWithdraw);
+        return succeed();
+    }
+
+    @ApiOperation(value = "新增银行卡信息")
+    @PostMapping("userBankCard/add")
+    public Object add(SysUserBankCard sysUserBankCard) {
+        if(sysUserBankCard == null){
+            return failed("参数校验异常");
+        }
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if(sysUser == null || sysUser.getId() == null){
+            return failed("获取用户失败");
+        }
+        sysUserBankCard.setUserId(sysUser.getId());
+        return succeed(sysUserBankCardService.add(sysUserBankCard));
+    }
+
+    @ApiOperation(value = "删除银行卡信息")
+    @PostMapping("userBankCard/del")
+    public Object del(Long id) {
+        if(id == null){
+            return failed("参数校验失败");
+        }
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if(sysUser == null || sysUser.getId() == null){
+            return failed("获取用户信息失败");
+        }
+        sysUserBankCardService.del(id,sysUser.getId());
+        return succeed();
+    }
+
+    @ApiOperation(value = "分页查询银行卡信息列表")
+    @GetMapping("userBankCard/queryPage")
+    public Object queryPage() {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if(sysUser == null || sysUser.getId() == null){
+            return failed("获取用户失败");
+        }
+        return succeed(sysUserBankCardService.findByUser(sysUser.getId()));
+    }
+}

+ 34 - 21
mec-student/src/main/java/com/ym/mec/student/controller/WithdrawController.java

@@ -1,18 +1,24 @@
 package com.ym.mec.student.controller;
 
-import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.entity.StudentWithdraw;
-import com.ym.mec.biz.service.StudentWithdrawService;
-import com.ym.mec.common.controller.BaseController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.entity.StudentWithdraw;
+import com.ym.mec.biz.dal.enums.DealStatusEnum;
+import com.ym.mec.biz.service.StudentWithdrawService;
+import com.ym.mec.common.controller.BaseController;
+
 /**
  * @program: mec
  * @description: 提现
@@ -24,21 +30,28 @@ import org.springframework.web.bind.annotation.RestController;
 @Api(tags = "提现服务")
 public class WithdrawController extends BaseController {
 
-    @Autowired
-    private StudentWithdrawService studentWithdrawService;
-    @Autowired
-    private SysUserFeignService sysUserFeignService;
+	@Autowired
+	private StudentWithdrawService studentWithdrawService;
+	@Autowired
+	private SysUserFeignService sysUserFeignService;
 
-    @ApiOperation(value = "新增提现申请")
-    @PostMapping("/add")
-    @PreAuthorize("@pcs.hasPermissions('studentWithdraw/add')")
-    public Object add(StudentWithdraw studentWithdraw) throws Exception {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(sysUser == null && sysUser.getId() == null){
-            return failed("获取用户信息失败");
-        }
-        studentWithdraw.setUserId(sysUser.getId());
-        studentWithdrawService.add(studentWithdraw);
-        return succeed();
-    }
+	@ApiOperation(value = "新增提现申请")
+	@PostMapping("/add")
+	@PreAuthorize("@pcs.hasPermissions('studentWithdraw/add')")
+	public Object add(String bankCardNo, BigDecimal amount) throws Exception {
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		if (sysUser == null || sysUser.getId() == null) {
+			return failed("获取用户信息失败");
+		}
+		Date date = new Date();
+		StudentWithdraw studentWithdraw = new StudentWithdraw();
+		studentWithdraw.setUserId(sysUser.getId());
+		studentWithdraw.setAmount(amount);
+		studentWithdraw.setBankCardNo(bankCardNo);
+		studentWithdraw.setModifyTime(date);
+		studentWithdraw.setCreateTime(date);
+		studentWithdraw.setStatus(DealStatusEnum.ING);
+		studentWithdrawService.add(studentWithdraw);
+		return succeed();
+	}
 }

+ 0 - 12
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherController.java

@@ -34,18 +34,6 @@ public class TeacherController extends BaseController {
     @Autowired
     private SysUserFeignService sysUserFeignService;
 
-    @ApiOperation(value = "新增教师")
-    @PostMapping("/add")
-    public Object add(Teacher teacher) {
-        try {
-            teacherService.add(teacher);
-        } catch (Exception e) {
-            e.printStackTrace();
-            return failed(e.getMessage());
-        }
-        return succeed();
-    }
-
     @ApiOperation(value = "修改教师个人中心信息")
     @PostMapping("/update")
     public Object update(Teacher teacher) {

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

@@ -0,0 +1,139 @@
+package com.ym.mec.teacher.controller;
+
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dto.CashAccountDetail;
+import com.ym.mec.biz.dal.entity.SysSuggestion;
+import com.ym.mec.biz.dal.entity.SysUserBankCard;
+import com.ym.mec.biz.service.*;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.UploadReturnBean;
+import com.ym.mec.util.upload.UploadUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.apache.commons.lang.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import static com.ym.mec.common.controller.BaseController.succeed;
+
+@Api(tags = "教师管理")
+@RestController
+public class TeacherManageController extends BaseController {
+
+    @Autowired
+    private SysSuggestionService suggestionService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private SysUserCashAccountService sysUserCashAccountService;
+    @Autowired
+    private SysUserCashAccountDetailService sysUserCashAccountDetailService;
+    @Autowired
+    private ClassGroupService classGroupService;
+    @Autowired
+    private SysUserBankCardService sysUserBankCardService;
+
+    private final static Logger LOGGER = LoggerFactory.getLogger(TeacherManageController.class);
+
+    @Autowired
+    private UploadFileService uploadFileService;
+
+    @PostMapping(value = "uploadFile")
+    public Object uploadFile(@ApiParam(value = "上传的文件", required = true) @RequestParam("file") MultipartFile file) {
+        try {
+            if (file != null && StringUtils.isNotBlank(file.getOriginalFilename())) {
+                UploadReturnBean bean = uploadFileService.uploadFile(file.getInputStream(), UploadUtil.getExtension(file.getOriginalFilename()));
+                if (bean.isStatus()) {
+                    return succeed(bean);
+                }
+                return failed(bean.getMessage());
+            }
+        } catch (Exception e) {
+            LOGGER.error("上传失败", e);
+        }
+        return failed("上传失败");
+    }
+
+    @ApiOperation(value = "新增建议")
+    @PostMapping("suggestion/add")
+    public Object add(SysSuggestion SysSuggestion) {
+        suggestionService.insert(SysSuggestion);
+        return succeed();
+    }
+
+
+    @ApiOperation(value = "根据群编号,获取群组所有成员基本信息")
+    @GetMapping("classGroup/findGroupUsers")
+    @PreAuthorize("@pcs.hasPermissions('classGroup/findGroupUsers')")
+    public Object findGroupUsers(String groupId) {
+        if (org.apache.commons.lang3.StringUtils.isEmpty(groupId)) {
+            return failed("参数校验错误");
+        }
+        return succeed(classGroupService.findGroupUsers(groupId));
+    }
+
+    @ApiOperation(value = "获取用户账户信息")
+    @GetMapping("userCashAccount/get")
+    public Object add() {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if(sysUser == null){
+            return failed("请重新登录");
+        }
+        return succeed(sysUserCashAccountService.get(sysUser.getId()));
+    }
+
+    @ApiOperation(value = "分页查询用户交易明细")
+    @GetMapping("userCashAccountDetail/queryPage")
+    public Object queryPage(CashAccountDetail queryInfo) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if(user == null && user.getId() != null){
+            return failed("请重新登录");
+        }
+        queryInfo.setUserId(user.getId());
+        return succeed(sysUserCashAccountDetailService.queryPage(queryInfo));
+    }
+
+    @ApiOperation(value = "新增银行卡信息")
+    @PostMapping("userBankCard/add")
+    public Object add(SysUserBankCard sysUserBankCard) {
+        if(sysUserBankCard == null){
+            return failed("参数校验异常");
+        }
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if(sysUser == null || sysUser.getId() == null){
+            return failed("获取用户失败");
+        }
+        sysUserBankCard.setUserId(sysUser.getId());
+        return succeed(sysUserBankCardService.add(sysUserBankCard));
+    }
+
+    @ApiOperation(value = "删除银行卡信息")
+    @PostMapping("userBankCard/del")
+    public Object del(Long id) {
+        if(id == null){
+            return failed("参数校验失败");
+        }
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if(sysUser == null || sysUser.getId() == null){
+            return failed("获取用户信息失败");
+        }
+        sysUserBankCardService.del(id,sysUser.getId());
+        return succeed();
+    }
+
+    @ApiOperation(value = "分页查询银行卡信息列表")
+    @GetMapping("userBankCard/queryPage")
+    public Object queryPage() {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if(sysUser == null || sysUser.getId() == null){
+            return failed("获取用户失败");
+        }
+        return succeed(sysUserBankCardService.findByUser(sysUser.getId()));
+    }
+}

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

@@ -27,4 +27,10 @@ public class TeacherSubjectController extends BaseController {
         return succeed(subjectService.findTeacherSubjects());
     }
 
+    @ApiOperation(value = "获取子集科目列表")
+    @GetMapping("/findSubSubjects")
+    public Object findSubSubjects(){
+        return succeed(subjectService.findSubSubjects());
+    }
+
 }

+ 1 - 11
mec-web/src/main/java/com/ym/mec/web/controller/ClassGroupController.java

@@ -183,16 +183,6 @@ public class ClassGroupController extends BaseController {
         return succeed(classGroupTeacherMapperService.classGroupTeacherMapperUpdate(classGroupTeacherMapperList));
     }
 
-    @ApiOperation(value = "根据群编号,获取群组所有成员基本信息")
-    @GetMapping("/findGroupUsers")
-    @PreAuthorize("@pcs.hasPermissions('classGroup/findGroupUsers')")
-    public Object findGroupUsers(String groupId) {
-        if (StringUtils.isEmpty(groupId)) {
-            return failed("参数校验错误");
-        }
-        return succeed(classGroupService.findGroupUsers(groupId));
-    }
-
     @ApiOperation(value = "乐团班级设置,成团确认")
     @PostMapping("/addMusicGroupTeam")
     @PreAuthorize("@pcs.hasPermissions('classGroup/addMusicGroupTeam')")
@@ -207,7 +197,7 @@ public class ClassGroupController extends BaseController {
     }
 
 
-    @ApiOperation(value = "调整班级")
+    @ApiOperation(value = "调整班级(添加班级)")
     @PostMapping("/revisionClassGroup")
     @PreAuthorize("@pcs.hasPermissions('classGroup/revisionClassGroup')")
     @ApiImplicitParams({@ApiImplicitParam(name = "classGroupIds", value = "班级编号,号分割", required = true, dataType = "String")})

+ 8 - 17
mec-web/src/main/java/com/ym/mec/web/controller/education/EmployeeController.java → mec-web/src/main/java/com/ym/mec/web/controller/EmployeeController.java

@@ -1,20 +1,16 @@
-package com.ym.mec.web.controller.education;
+package com.ym.mec.web.controller;
 
 import com.ym.mec.biz.dal.entity.Employee;
-import com.ym.mec.biz.dal.entity.Teacher;
+import com.ym.mec.biz.dal.enums.EmployeeOperateEnum;
+import com.ym.mec.biz.dal.page.EmployeeQueryInfo;
+import com.ym.mec.biz.service.EmployeeService;
+import com.ym.mec.common.controller.BaseController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-
-import java.io.IOException;
-import java.util.Date;
-
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import com.ym.mec.biz.dal.enums.EmployeeOperateEnum;
-import com.ym.mec.biz.dal.page.EmployeeQueryInfo;
-import com.ym.mec.biz.service.EmployeeService;
-import com.ym.mec.common.controller.BaseController;
+import java.util.Date;
 
 /**
  * @Author Joburgess
@@ -43,13 +39,8 @@ public class EmployeeController extends BaseController {
 
     @ApiOperation(value = "新增员工")
     @PostMapping("/add")
-    public Object add(@RequestBody Employee employee) {
-        try {
-            employeeService.add(employee);
-        } catch (Exception e) {
-            e.printStackTrace();
-            return failed(e.getMessage());
-        }
+    public Object add(@RequestBody Employee employee) throws Exception {
+        employeeService.add(employee);
         return succeed();
     }
 

+ 11 - 0
mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupController.java

@@ -8,6 +8,7 @@ import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.page.QueryInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
@@ -30,6 +31,16 @@ public class MusicGroupController extends BaseController {
         return succeed();
     }
 
+    @ApiOperation(value = "获取乐团调整--基本信息数据")
+    @PostMapping("/findMusicGroupBasicInfo")
+    @PreAuthorize("@pcs.hasPermissions('musicGroup/findMusicGroupBasicInfo')")
+    public Object findMusicGroupBasicInfo(String musicGroupId){
+        if(StringUtils.isEmpty(musicGroupId)){
+            return failed("参数校验失败");
+        }
+        return succeed(musicGroupService.findMusicGroupBasicInfo(musicGroupId));
+    }
+
     @ApiOperation(value = "根据乐团编号查询乐团详情")
     @GetMapping("/get")
     @PreAuthorize("@pcs.hasPermissions('musicGroup/get')")

+ 10 - 13
mec-web/src/main/java/com/ym/mec/web/controller/StudentWithdrawController.java

@@ -1,14 +1,19 @@
 package com.ym.mec.web.controller;
 
-import com.ym.mec.biz.dal.dto.CashAccountDetail;
-import com.ym.mec.biz.dal.dto.WithdrawDto;
-import com.ym.mec.biz.service.StudentWithdrawService;
-import com.ym.mec.common.controller.BaseController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.ym.mec.biz.dal.dto.WithdrawDto;
+import com.ym.mec.biz.service.StudentWithdrawService;
+import com.ym.mec.common.controller.BaseController;
 
 @RequestMapping("studentWithdraw")
 @Api(tags = "提现服务")
@@ -27,14 +32,6 @@ public class StudentWithdrawController extends BaseController {
         return succeed();
     }
 
-    @PostMapping("page")
-    @ApiOperation(value = "学员提现详情")
-    @PreAuthorize("@pcs.hasPermissions('studentWithdraw/page')")
-    public Object getInfo(@RequestBody CashAccountDetail cashAccountDetail) {
-        return succeed(studentWithdrawService.queryWithdrawPage(cashAccountDetail));
-    }
-
-
     @ApiOperation(value = "分页查询")
     @GetMapping("/queryPage")
     @PreAuthorize("@pcs.hasPermissions('studentWithdraw/queryPage')")

+ 7 - 0
mec-web/src/main/java/com/ym/mec/web/controller/SubjectController.java

@@ -91,4 +91,11 @@ public class SubjectController extends BaseController {
     public Object findSubApplyDetail(String musicGroupId){
         return succeed(subjectService.findSubApplyDetail(musicGroupId));
     }
+
+    @ApiOperation(value = "获取子集科目列表")
+    @GetMapping("/findSubSubjects")
+    @PreAuthorize("@pcs.hasPermissions('subject/findSubSubjects')")
+    public Object findSubSubjects(){
+        return succeed(subjectService.findSubSubjects());
+    }
 }

+ 0 - 45
mec-web/src/main/java/com/ym/mec/web/controller/SysUserBankCardController.java

@@ -21,49 +21,4 @@ import org.springframework.web.bind.annotation.RestController;
 @RestController
 public class SysUserBankCardController extends BaseController {
 
-    @Autowired
-    private SysUserBankCardService sysUserBankCardService;
-    @Autowired
-    private SysUserFeignService sysUserFeignService;
-
-    @ApiOperation(value = "新增银行卡信息")
-    @PostMapping("/add")
-    @PreAuthorize("@pcs.hasPermissions('userBankCard/add')")
-    public Object add(SysUserBankCard sysUserBankCard) {
-        if(sysUserBankCard == null){
-            return failed("参数校验异常");
-        }
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(sysUser == null || sysUser.getId() == null){
-            return failed("获取用户失败");
-        }
-        sysUserBankCard.setUserId(sysUser.getId());
-        return succeed(sysUserBankCardService.add(sysUserBankCard));
-    }
-
-    @ApiOperation(value = "删除银行卡信息")
-    @PostMapping("/del")
-    @PreAuthorize("@pcs.hasPermissions('userBankCard/del')")
-    public Object del(Long id) {
-        if(id == null){
-            return failed("参数校验失败");
-        }
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(sysUser == null || sysUser.getId() == null){
-            return failed("获取用户信息失败");
-        }
-        sysUserBankCardService.del(id,sysUser.getId());
-        return succeed();
-    }
-
-    @ApiOperation(value = "分页查询银行卡信息列表")
-    @GetMapping("/queryPage")
-    @PreAuthorize("@pcs.hasPermissions('userBankCard/queryPage')")
-    public Object queryPage() {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(sysUser == null || sysUser.getId() == null){
-            return failed("获取用户失败");
-        }
-        return succeed(sysUserBankCardService.findByUser(sysUser.getId()));
-    }
 }

+ 29 - 4
mec-web/src/main/java/com/ym/mec/web/controller/TeacherController.java

@@ -1,18 +1,17 @@
 package com.ym.mec.web.controller;
 
 import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.biz.dal.entity.CourseSchedule;
+import com.ym.mec.biz.dal.entity.Teacher;
 import com.ym.mec.biz.dal.page.MusicGroupTeacherAttendanceQueryInfo;
 import com.ym.mec.biz.dal.page.MusicGroupTeachersQueryInfo;
 import com.ym.mec.biz.service.TeacherService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
-import com.ym.mec.common.page.QueryInfo;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -26,6 +25,31 @@ public class TeacherController extends BaseController {
     @Autowired
     private SysUserFeignService sysUserFeignService;
 
+    @ApiOperation(value = "新增教师")
+    @PostMapping("/add")
+    @PreAuthorize("@pcs.hasPermissions('teacher/add')")
+    public HttpResponseResult add(Teacher teacher) throws Exception {
+        teacherService.add(teacher);
+        return succeed();
+    }
+
+    @ApiOperation(value = "修改教师信息")
+    @PostMapping("/update")
+    @PreAuthorize("@pcs.hasPermissions('teacher/update')")
+    public Object update(Teacher teacher) {
+        teacherService.updateTea(teacher);
+        return succeed();
+    }
+
+    @ApiOperation(value = "根据教师编号查询教师基本信息")
+    @GetMapping("/get")
+    @ApiParam(value = "教师编号", required = true)
+    @PreAuthorize("@pcs.hasPermissions('teacher/get')")
+    @ApiImplicitParams({@ApiImplicitParam(name = "teacherId", value = "教师编号", required = true, dataType = "Integer")})
+    public Object get(Integer teacherId) {
+        return succeed(teacherService.getDetail(teacherId));
+    }
+
     @ApiOperation(value = "获取分部所有老师")
     @GetMapping("/findTeachers")
     @PreAuthorize("@pcs.hasPermissions('teacher/findTeachers')")
@@ -37,6 +61,7 @@ public class TeacherController extends BaseController {
     @ApiOperation(value = "获取乐团所有老师")
     @GetMapping("/findMusicGroupTeachers")
     @PreAuthorize("@pcs.hasPermissions('teacher/findMusicGroupTeachers')")
+    @ApiImplicitParams({@ApiImplicitParam(name = "musicGroupId", value = "乐团编号", required = true, dataType = "String")})
     public HttpResponseResult findMusicGroupTeachers(String musicGroupId){
         return succeed(teacherService.queryMusicGroupTeacher(musicGroupId));
     }

+ 1 - 0
mec-web/src/main/java/com/ym/mec/web/controller/UploadFileController.java

@@ -32,6 +32,7 @@ public class UploadFileController extends BaseController {
 	private UploadFileService uploadFileService;
 
 	@PostMapping(value = "uploadFile")
+	@PreAuthorize("@pcs.hasPermissions('uploadFile')")
 	public Object uploadFile(@ApiParam(value = "上传的文件", required = true) @RequestParam("file") MultipartFile file) {
 		try {
 			if (file != null && StringUtils.isNotBlank(file.getOriginalFilename())) {

+ 8 - 12
mec-web/src/main/java/com/ym/mec/web/controller/student/SuggestionController.java

@@ -1,19 +1,19 @@
 package com.ym.mec.web.controller.student;
 
-import static com.ym.mec.common.controller.BaseController.succeed;
+import com.ym.mec.biz.dal.entity.SysSuggestion;
+import com.ym.mec.biz.service.SysSuggestionService;
+import com.ym.mec.common.page.QueryInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
-
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import com.ym.mec.biz.dal.entity.SysSuggestion;
-import com.ym.mec.biz.service.SysSuggestionService;
-import com.ym.mec.common.page.QueryInfo;
+import static com.ym.mec.common.controller.BaseController.succeed;
 
 /**
  * @Author Joburgess
@@ -27,15 +27,9 @@ public class SuggestionController {
     @Autowired
     private SysSuggestionService suggestionService;
 
-    @ApiOperation(value = "新增建议")
-    @PostMapping("/add")
-    public Object add(SysSuggestion SysSuggestion) {
-        suggestionService.insert(SysSuggestion);
-        return succeed();
-    }
-
     @ApiOperation(value = "删除建议")
     @PostMapping("/del/{id}")
+    @PreAuthorize("@pcs.hasPermissions('suggestion/del')")
     public Object del(@ApiParam(value = "建议编号", required = true) @PathVariable("id") Integer id) {
         suggestionService.delete(Long.valueOf(id));
         return succeed();
@@ -43,6 +37,7 @@ public class SuggestionController {
 
     @ApiOperation(value = "修改建议")
     @PostMapping("/update")
+    @PreAuthorize("@pcs.hasPermissions('suggestion/update')")
     public Object update(SysSuggestion SysSuggestion) {
         suggestionService.update(SysSuggestion);
         return succeed();
@@ -51,6 +46,7 @@ public class SuggestionController {
 
     @ApiOperation("分页查询建议列表")
     @PostMapping("/queryPage")
+    @PreAuthorize("@pcs.hasPermissions('suggestion/queryPage')")
     public Object queryPage(QueryInfo queryInfo){
         return succeed(suggestionService.queryPage(queryInfo));
     }