Browse Source

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java
#	mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
Joburgess 5 years ago
parent
commit
b1bc57b1de
71 changed files with 1417 additions and 655 deletions
  1. 4 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupDao.java
  2. 6 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupRelationDao.java
  3. 6 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupStudentMapperDao.java
  4. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupTeacherMapperDao.java
  5. 15 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupStudentFeeDao.java
  6. 15 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SubjectGoodsMapperDao.java
  7. 13 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherDao.java
  8. 26 38
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentManageListDto.java
  9. 13 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ApprovalStatus.java
  10. 3 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ClassGroupTeacherMapper.java
  11. 79 45
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CooperationOrgan.java
  12. 25 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/Goods.java
  13. 19 6
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/GoodsCategory.java
  14. 46 36
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupQuit.java
  15. 3 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentRegistration.java
  16. 6 28
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SubjectGoodsMapper.java
  17. 4 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/GoodsType.java
  18. 5 5
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/GoodsCategoryQueryInfo.java
  19. 13 24
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentManageQueryInfo.java
  20. 22 2
      mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java
  21. 0 8
      mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupStudentMapperService.java
  22. 0 16
      mec-biz/src/main/java/com/ym/mec/biz/service/GoodsCategoryService.java
  23. 19 6
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupService.java
  24. 6 0
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupStudentFeeService.java
  25. 61 0
      mec-biz/src/main/java/com/ym/mec/biz/service/SysConfigService.java
  26. 21 1
      mec-biz/src/main/java/com/ym/mec/biz/service/SysUserCashAccountDetailService.java
  27. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/service/TeacherService.java
  28. 66 23
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  29. 0 5
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupStudentMapperServiceImpl.java
  30. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupTeacherMapperServiceImpl.java
  31. 2 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CooperationOrganServiceImpl.java
  32. 8 53
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/GoodsCategoryServiceImpl.java
  33. 175 50
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  34. 50 5
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupStudentFeeServiceImpl.java
  35. 1 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentManageServiceImpl.java
  36. 5 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysConfigServiceImpl.java
  37. 53 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysUserCashAccountDetailServiceImpl.java
  38. 18 9
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysUserCashAccountServiceImpl.java
  39. 6 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherServiceImpl.java
  40. 51 41
      mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml
  41. 5 2
      mec-biz/src/main/resources/config/mybatis/ClassGroupRelationMapper.xml
  42. 6 2
      mec-biz/src/main/resources/config/mybatis/ClassGroupStudentMapperMapper.xml
  43. 9 0
      mec-biz/src/main/resources/config/mybatis/ClassGroupTeacherMapperMapper.xml
  44. 6 2
      mec-biz/src/main/resources/config/mybatis/CooperationOrganMapper.xml
  45. 15 6
      mec-biz/src/main/resources/config/mybatis/GoodsCategoryMapper.xml
  46. 12 5
      mec-biz/src/main/resources/config/mybatis/GoodsMapper.xml
  47. 60 50
      mec-biz/src/main/resources/config/mybatis/MusicGroupQuitMapper.xml
  48. 43 0
      mec-biz/src/main/resources/config/mybatis/MusicGroupStudentFeeMapper.xml
  49. 31 28
      mec-biz/src/main/resources/config/mybatis/StudentManageDao.xml
  50. 5 2
      mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml
  51. 22 24
      mec-biz/src/main/resources/config/mybatis/SubjectGoodsMapperMapper.xml
  52. 24 11
      mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml
  53. 15 0
      mec-client-api/src/main/java/com/ym/mec/task/TaskRemoteService.java
  54. 19 0
      mec-client-api/src/main/java/com/ym/mec/task/fallback/TaskRemoteServiceFallback.java
  55. 1 1
      mec-common/common-core/src/main/java/com/ym/mec/common/service/impl/RedisIdGeneratorService.java
  56. 1 1
      mec-education/src/main/resources/mapper/StudentAttendanceMapper.xml
  57. 2 0
      mec-eureka/src/main/resources/application.yml
  58. 66 2
      mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupController.java
  59. 1 1
      mec-task/pom.xml
  60. 0 27
      mec-task/src/main/java/com/ym/mec/task/config/WebMvcConfig.java
  61. 6 7
      mec-task/src/main/java/com/ym/mec/task/jobs/RefreshPaymentFeeStatusTask.java
  62. 17 0
      mec-task/src/main/resources/application.yml
  63. 1 1
      mec-web/src/main/java/com/ym/mec/web/config/ResourceServerConfig.java
  64. 46 20
      mec-web/src/main/java/com/ym/mec/web/controller/ClassGroupController.java
  65. 5 33
      mec-web/src/main/java/com/ym/mec/web/controller/GoodsCategoryController.java
  66. 1 0
      mec-web/src/main/java/com/ym/mec/web/controller/GoodsController.java
  67. 56 0
      mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupQuitController.java
  68. 9 0
      mec-web/src/main/java/com/ym/mec/web/controller/SysConfigController.java
  69. 24 0
      mec-web/src/main/java/com/ym/mec/web/controller/TaskController.java
  70. 17 8
      mec-web/src/main/java/com/ym/mec/web/controller/TeacherController.java
  71. 1 1
      mec-web/src/main/java/com/ym/mec/web/controller/student/StudentCashAccountDetailController.java

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

@@ -101,7 +101,7 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
      * @param musicGroupId
      * @return
      */
-    List<ClassGroupTeachersDto> findClassGroupByMusicGroupId(@Param("musicGroupId") String musicGroupId);
+    List<ClassGroupTeachersDto> findClassGroupByMusicGroupId(@Param("musicGroupId") String musicGroupId, @Param("type") String type);
 
     /**
      * 获取学生所购买课程列表
@@ -179,6 +179,7 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
 
     /**
      * 获取当前班级老师id列表
+     *
      * @param id
      * @return
      */
@@ -186,6 +187,7 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
 
     /**
      * 获取老师所在班级群组列表
+     *
      * @param userId
      * @param search
      * @return
@@ -194,6 +196,7 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
 
     /**
      * 获取未分配合奏的单技班列表
+     *
      * @param musicGroupId
      * @return
      */

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

@@ -16,4 +16,10 @@ public interface ClassGroupRelationDao extends BaseDAO<Integer, ClassGroupRelati
      * @return
      */
     int classGroupRelationsInsert(@Param("classGroupRelationList") List<ClassGroupRelation> classGroupRelationList);
+
+    /**
+     * 删除班级关系
+     * @param classGroupId
+     */
+    void deleteByClassId(Integer classGroupId);
 }

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

@@ -34,4 +34,10 @@ public interface ClassGroupStudentMapperDao extends BaseDAO<Long, ClassGroupStud
 	 */
 	int updateUserStatusByMusicGroupId(@Param("musicGroupId") String musicGroupId, @Param("userId") Integer userId,
 			@Param("status") ClassGroupStudentStatusEnum status);
+
+	/**
+	 * 根据班级编号删除关联
+	 * @param classGroupId
+	 */
+	void deleteByClassId(Integer classGroupId);
 }

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

@@ -25,4 +25,11 @@ public interface ClassGroupTeacherMapperDao extends BaseDAO<Long, ClassGroupTeac
      * @return
      */
     List<ClassGroupTeacherMapper> findClassGroupTeachers(@Param("classGroupList") List classGroupList);
+
+    /**
+     * 批量删除班级的老师关联关系
+     * @param classGroupTeacherMapperList
+     * @return
+     */
+    int delMusicGroupTeacherMapper(@Param("classGroupTeacherMapperList") List<ClassGroupTeacherMapper> classGroupTeacherMapperList);
 }

+ 15 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupStudentFeeDao.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.dao;
 
 import java.util.Date;
+import java.util.List;
 
 import org.apache.ibatis.annotations.Param;
 
@@ -31,4 +32,18 @@ public interface MusicGroupStudentFeeDao extends BaseDAO<Long, MusicGroupStudent
 	 * @return
 	 */
 	int updateNextPaymentDate(@Param("musicGroupId") String musicGroupId, @Param("nextPaymentDate") Date nextPaymentDate);
+
+	/**
+	 * 根据可提前缴费的天数查询即将续费的列表
+	 * @param days 可提前缴费天数
+	 * @return
+	 */
+	List<MusicGroupStudentFee> queryWillRenewList(int days);
+
+	/**
+	 * 批量更新对象
+	 * @param updateList
+	 * @return
+	 */
+	int batchUpdate(List<MusicGroupStudentFee> updateList);
 }

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

@@ -2,8 +2,22 @@ package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.biz.dal.entity.SubjectGoodsMapper;
 import com.ym.mec.common.dal.BaseDAO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 public interface SubjectGoodsMapperDao extends BaseDAO<Long, SubjectGoodsMapper> {
 
-	
+    /**
+     * 批量新增
+     * @param goodsCategoryId
+     * @param subjectIds
+     */
+    void batchAdd(@Param("goodsCategoryId") Integer goodsCategoryId, @Param("subjectIds") List<Integer> subjectIds);
+
+    /**
+     * 删除科目与商品类型关联
+     * @param goodsCategoryId
+     */
+    void delByGoodsCategoryId(Integer goodsCategoryId);
 }

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

@@ -17,25 +17,29 @@ public interface TeacherDao extends BaseDAO<Integer, Teacher> {
 
     /**
      * 根据证件号查询老师
-     * @param certificateNum  证件号
+     *
+     * @param certificateNum 证件号
      * @return Teacher 老师信息
      */
     Teacher findByCertificateNum(@Param("certificateNum") String certificateNum);
 
     /**
      * 修改用户信息
+     *
      * @param user
      */
     void updateUser(SysUser user);
 
     /**
      * 新增sysUser
+     *
      * @param user
      */
     void addSysUser(SysUser user);
 
     /**
      * 获取和当前教师相关的学员列表
+     *
      * @param teacherId
      * @param search
      * @return
@@ -44,8 +48,16 @@ public interface TeacherDao extends BaseDAO<Integer, Teacher> {
 
     /**
      * 根据用户编号列表获取用户名称
+     *
      * @param userIds
      * @return
      */
     List<Map<Integer, String>> queryNameByIds(@Param("userIds") Set<Integer> userIds);
+
+    /**
+     * 查询分部所有老师
+     * @param organId
+     * @return
+     */
+    List<Teacher> findTeachers(@Param("organId") Integer organId);
 }

+ 26 - 38
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentManageListDto.java

@@ -10,39 +10,19 @@ import io.swagger.annotations.ApiModelProperty;
 public class StudentManageListDto {
 
     @ApiModelProperty(value = "用户ID",required = false)
-    private Long userId;
-
+    private Integer userId;
 
     @ApiModelProperty(value = "用户名",required = false)
-    private String userName;
+    private String realName;
 
     @ApiModelProperty(value = "性别",required = false)
     private UserGenderEnum gender;
 
-    @ApiModelProperty(value = "电话号码",required = false)
-    private String phone;
-
-    @ApiModelProperty(value = "学校ID",required = false)
-    private Long schoolId;
-
-    @ApiModelProperty(value = "学校名称",required = false)
-    private String schoolName;
-
-    public Long getUserId() {
-        return userId;
-    }
-
-    public void setUserId(Long userId) {
-        this.userId = userId;
-    }
-
-    public String getUserName() {
-        return userName;
-    }
+    @ApiModelProperty(value = "家长电话号码",required = false)
+    private String parentsPhone;
 
-    public void setUserName(String userName) {
-        this.userName = userName;
-    }
+    @ApiModelProperty(value = "家长名字",required = false)
+    private String parentsName;
 
     public UserGenderEnum getGender() {
         return gender;
@@ -52,27 +32,35 @@ public class StudentManageListDto {
         this.gender = gender;
     }
 
-    public String getPhone() {
-        return phone;
+    public Integer getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+
+    public String getRealName() {
+        return realName;
     }
 
-    public void setPhone(String phone) {
-        this.phone = phone;
+    public void setRealName(String realName) {
+        this.realName = realName;
     }
 
-    public Long getSchoolId() {
-        return schoolId;
+    public String getParentsPhone() {
+        return parentsPhone;
     }
 
-    public void setSchoolId(Long schoolId) {
-        this.schoolId = schoolId;
+    public void setParentsPhone(String parentsPhone) {
+        this.parentsPhone = parentsPhone;
     }
 
-    public String getSchoolName() {
-        return schoolName;
+    public String getParentsName() {
+        return parentsName;
     }
 
-    public void setSchoolName(String schoolName) {
-        this.schoolName = schoolName;
+    public void setParentsName(String parentsName) {
+        this.parentsName = parentsName;
     }
 }

+ 13 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ApprovalStatus.java

@@ -0,0 +1,13 @@
+package com.ym.mec.biz.dal.entity;
+
+import com.ym.mec.common.enums.BaseEnum;
+
+public enum ApprovalStatus implements BaseEnum<String, ApprovalStatus> {
+	APPROVED, DENIED, PROCESSING;
+
+	@Override
+	public String getCode() {
+		return name();
+	}
+
+}

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

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

+ 79 - 45
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CooperationOrgan.java

@@ -1,43 +1,69 @@
 package com.ym.mec.biz.dal.entity;
 
 import io.swagger.annotations.ApiModelProperty;
+
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
+import com.ym.mec.common.enums.BaseEnum;
+
 /**
  * 对应数据库表(cooperation_organ):
  */
 public class CooperationOrgan {
 
+	public enum OwnershipType implements BaseEnum<String, OwnershipType> {
+
+		OWN("自有"), COOPERATION("合作"), LEASE("租赁"), ;
+
+		private String desc;
+
+		private OwnershipType(String desc) {
+			this.desc = desc;
+		}
+
+		@Override
+		public String getCode() {
+			return name();
+		}
+
+		public String getDesc() {
+			return desc;
+		}
+	}
+
 	/**  */
 	private Integer id;
-	
+
 	/** 单位名称 */
-	@ApiModelProperty(value = "班级编号",required = false)
+	@ApiModelProperty(value = "班级编号", required = false)
 	private String name;
 
 	/** 分部编号 */
-	@ApiModelProperty(value = "分部编号",required = false)
+	@ApiModelProperty(value = "分部编号", required = false)
 	private Integer organId;
-	
+
 	/** 联系人 */
-	@ApiModelProperty(value = "班级编号",required = false)
+	@ApiModelProperty(value = "联系人", required = false)
 	private String linkman;
-	
+
 	/**  */
-	@ApiModelProperty(value = "班级编号",required = false)
+	@ApiModelProperty(value = "职位", required = false)
 	private String job;
-	
+
 	/**  */
-	@ApiModelProperty(value = "班级编号",required = false)
+	@ApiModelProperty(value = "手机号码", required = false)
 	private String mobileNo;
-	
+
 	/**  */
-	@ApiModelProperty(value = "班级编号",required = false)
+	@ApiModelProperty(value = "地址", required = false)
 	private String address;
-	
+
+	@ApiModelProperty(value = "权属类型(OWN('自有'),COOPERATION('合作'),LEASE('租赁'))", required = false)
+	private OwnershipType ownershipType;
+
 	/**  */
 	private java.util.Date createTime;
-	
+
 	/**  */
 	private java.util.Date updateTime;
 
@@ -49,70 +75,78 @@ public class CooperationOrgan {
 		this.organId = organId;
 	}
 
-	public void setId(Integer id){
+	public void setId(Integer id) {
 		this.id = id;
 	}
-	
-	public Integer getId(){
+
+	public Integer getId() {
 		return this.id;
 	}
-			
-	public void setName(String name){
+
+	public void setName(String name) {
 		this.name = name;
 	}
-	
-	public String getName(){
+
+	public String getName() {
 		return this.name;
 	}
-			
-	public void setLinkman(String linkman){
+
+	public void setLinkman(String linkman) {
 		this.linkman = linkman;
 	}
-	
-	public String getLinkman(){
+
+	public String getLinkman() {
 		return this.linkman;
 	}
-			
-	public void setJob(String job){
+
+	public void setJob(String job) {
 		this.job = job;
 	}
-	
-	public String getJob(){
+
+	public String getJob() {
 		return this.job;
 	}
-			
-	public void setMobileNo(String mobileNo){
+
+	public void setMobileNo(String mobileNo) {
 		this.mobileNo = mobileNo;
 	}
-	
-	public String getMobileNo(){
+
+	public String getMobileNo() {
 		return this.mobileNo;
 	}
-			
-	public void setAddress(String address){
+
+	public void setAddress(String address) {
 		this.address = address;
 	}
-	
-	public String getAddress(){
+
+	public String getAddress() {
 		return this.address;
 	}
-			
-	public void setCreateTime(java.util.Date createTime){
+
+	public void setCreateTime(java.util.Date createTime) {
 		this.createTime = createTime;
 	}
-	
-	public java.util.Date getCreateTime(){
+
+	public java.util.Date getCreateTime() {
 		return this.createTime;
 	}
-			
-	public void setUpdateTime(java.util.Date updateTime){
+
+	public void setUpdateTime(java.util.Date updateTime) {
 		this.updateTime = updateTime;
 	}
-	
-	public java.util.Date getUpdateTime(){
+
+	public java.util.Date getUpdateTime() {
 		return this.updateTime;
 	}
-			
+
+	public OwnershipType getOwnershipType() {
+		return ownershipType;
+	}
+
+	public void setOwnershipType(OwnershipType ownershipType) {
+		this.ownershipType = ownershipType;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

+ 25 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/Goods.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.entity;
 
+import com.ym.mec.biz.dal.enums.GoodsType;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 
 import io.swagger.annotations.ApiModelProperty;
@@ -19,8 +20,12 @@ public class Goods {
 	private Integer id;
 	
 	/** 产品分类 */
-	@ApiModelProperty(value = "产品分类1乐器,2教材,3辅件",required = false)
+	@ApiModelProperty(value = "产品分类",required = false)
 	private Integer goodsCategoryId;
+
+	/** 产品分类 */
+	@ApiModelProperty(value = "产品分类名称",required = false)
+	private String goodsCategoryName;
 	
 	/** 商品货号 */
 	@ApiModelProperty(value = "商品货号",required = false)
@@ -103,6 +108,25 @@ public class Goods {
 	/** 修改时间 */
 	private java.util.Date updateTime;
 
+	@ApiModelProperty(value = "商品类型", required = false)
+	private GoodsType type;
+
+	public String getGoodsCategoryName() {
+		return goodsCategoryName;
+	}
+
+	public void setGoodsCategoryName(String goodsCategoryName) {
+		this.goodsCategoryName = goodsCategoryName;
+	}
+
+	public GoodsType getType() {
+		return type;
+	}
+
+	public void setType(GoodsType type) {
+		this.type = type;
+	}
+
 	public String getComplementGoodsIdList() {
 		return complementGoodsIdList;
 	}

+ 19 - 6
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/GoodsCategory.java

@@ -46,15 +46,28 @@ public class GoodsCategory {
 	/** 创建时间 */
 	private java.util.Date createTime;
 
-	@ApiModelProperty(value = "子级商品类型列表",required = false)
-	private List<GoodsCategory> goodsCategories;
+	/**
+	 * 声部编号
+	 */
+	private List<Integer> subjectIds;
 
-	public List<GoodsCategory> getGoodsCategories() {
-		return goodsCategories;
+	@ApiModelProperty(value = "关联的声部列表",required = false)
+	private List<Subject> subjects;
+
+	public List<Subject> getSubjects() {
+		return subjects;
+	}
+
+	public void setSubjects(List<Subject> subjects) {
+		this.subjects = subjects;
+	}
+
+	public List<Integer> getSubjectIds() {
+		return subjectIds;
 	}
 
-	public void setGoodsCategories(List<GoodsCategory> goodsCategories) {
-		this.goodsCategories = goodsCategories;
+	public void setSubjectIds(List<Integer> subjectIds) {
+		this.subjectIds = subjectIds;
 	}
 
 	public void setId(Integer id){

+ 46 - 36
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupQuit.java

@@ -9,81 +9,91 @@ public class MusicGroupQuit {
 
 	/**  */
 	private Long id;
-	
+
 	/** 用户编号 */
 	private Integer userId;
-	
+
 	/** 乐团编号 */
-	private Integer musicGroupId;
-	
+	private String musicGroupId;
+
 	/** 加入时间 */
 	private java.util.Date joinDate;
-	
+
 	/** 退出时间 */
 	private java.util.Date quitDate;
-	
+
 	/**  */
 	private java.util.Date createTime;
-	
+
 	/** 原因 */
 	private String reason;
-	
-	public void setId(Long id){
+
+	private ApprovalStatus status;
+
+	public void setId(Long id) {
 		this.id = id;
 	}
-	
-	public Long getId(){
+
+	public Long getId() {
 		return this.id;
 	}
-			
-	public void setUserId(Integer userId){
+
+	public void setUserId(Integer userId) {
 		this.userId = userId;
 	}
-	
-	public Integer getUserId(){
+
+	public Integer getUserId() {
 		return this.userId;
 	}
-			
-	public void setMusicGroupId(Integer musicGroupId){
+
+	public void setMusicGroupId(String musicGroupId) {
 		this.musicGroupId = musicGroupId;
 	}
-	
-	public Integer getMusicGroupId(){
+
+	public String getMusicGroupId() {
 		return this.musicGroupId;
 	}
-			
-	public void setJoinDate(java.util.Date joinDate){
+
+	public void setJoinDate(java.util.Date joinDate) {
 		this.joinDate = joinDate;
 	}
-	
-	public java.util.Date getJoinDate(){
+
+	public java.util.Date getJoinDate() {
 		return this.joinDate;
 	}
-			
-	public void setQuitDate(java.util.Date quitDate){
+
+	public void setQuitDate(java.util.Date quitDate) {
 		this.quitDate = quitDate;
 	}
-	
-	public java.util.Date getQuitDate(){
+
+	public java.util.Date getQuitDate() {
 		return this.quitDate;
 	}
-			
-	public void setCreateTime(java.util.Date createTime){
+
+	public void setCreateTime(java.util.Date createTime) {
 		this.createTime = createTime;
 	}
-	
-	public java.util.Date getCreateTime(){
+
+	public java.util.Date getCreateTime() {
 		return this.createTime;
 	}
-			
-	public void setReason(String reason){
+
+	public void setReason(String reason) {
 		this.reason = reason;
 	}
-	
-	public String getReason(){
+
+	public String getReason() {
 		return this.reason;
 	}
-			
+
+	public ApprovalStatus getStatus() {
+		return status;
+	}
+
+	public void setStatus(ApprovalStatus status) {
+		this.status = status;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

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

@@ -75,7 +75,7 @@ public class StudentRegistration {
     private YesOrNoEnum paymentStatus;
 
     @ApiModelProperty(value = "班级id", hidden = true)
-    private Integer ClassGroupId;
+    private Integer classGroupId;
 
     @ApiModelProperty(value = "零时课程费用", hidden = true)
     private BigDecimal temporaryCourseFee;
@@ -217,11 +217,11 @@ public class StudentRegistration {
     }
 
     public Integer getClassGroupId() {
-        return ClassGroupId;
+        return classGroupId;
     }
 
     public void setClassGroupId(Integer classGroupId) {
-        ClassGroupId = classGroupId;
+        this.classGroupId = classGroupId;
     }
 
     public String getName() {

+ 6 - 28
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SubjectGoodsMapper.java

@@ -14,19 +14,13 @@ public class SubjectGoodsMapper {
 	/**  */
 	private Long id;
 
-	@ApiModelProperty(value = "组织编号", required = false)
-	private Integer organId;
-
 	/**  */
 	@ApiModelProperty(value = "科目编号", required = false)
 	private String subjectId;
 
 	/**  */
-	@ApiModelProperty(value = "商品编号", required = false)
-	private Integer goodsId;
-
-	@ApiModelProperty(value = "商品类型", required = false)
-	private GoodsType type;
+	@ApiModelProperty(value = "商品分类编号", required = false)
+	private Integer goodsCategoryId;
 
 	@ApiModelProperty(value = "删除标记,删除时传true,其他传null", required = false)
 	private boolean delFlag = false;
@@ -53,14 +47,6 @@ public class SubjectGoodsMapper {
 		return this.id;
 	}
 
-	public Integer getOrganId() {
-		return organId;
-	}
-
-	public void setOrganId(Integer organId) {
-		this.organId = organId;
-	}
-
 	public void setSubjectId(String subjectId) {
 		this.subjectId = subjectId;
 	}
@@ -69,20 +55,12 @@ public class SubjectGoodsMapper {
 		return this.subjectId;
 	}
 
-	public void setGoodsId(Integer goodsId) {
-		this.goodsId = goodsId;
-	}
-
-	public Integer getGoodsId() {
-		return this.goodsId;
-	}
-
-	public GoodsType getType() {
-		return type;
+	public Integer getGoodsCategoryId() {
+		return goodsCategoryId;
 	}
 
-	public void setType(GoodsType type) {
-		this.type = type;
+	public void setGoodsCategoryId(Integer goodsCategoryId) {
+		this.goodsCategoryId = goodsCategoryId;
 	}
 
 	public void setCreateTime(java.util.Date createTime) {

+ 4 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/GoodsType.java

@@ -4,7 +4,10 @@ import com.ym.mec.common.enums.BaseEnum;
 
 public enum GoodsType implements BaseEnum<String, GoodsType> {
 
-	INSTRUMENT("INSTRUMENT", "乐器"), ACCESSORIES("ACCESSORIES", "辅件"),OTHER("OTHER", "其他");
+	INSTRUMENT("INSTRUMENT", "乐器"), ACCESSORIES("ACCESSORIES", "辅件"),
+	TEACHING("TEACHING", "教材"),
+	STAFF("STAFF", "曲谱"),
+	OTHER("OTHER", "其他");
 
 	private String code;
 

+ 5 - 5
mec-biz/src/main/java/com/ym/mec/biz/dal/page/GoodsCategoryQueryInfo.java

@@ -11,7 +11,7 @@ public class GoodsCategoryQueryInfo extends QueryInfo {
     private Integer parentId = 0;
 
     @ApiModelProperty(value = "状态")
-    private YesOrNoEnum status = YesOrNoEnum.YES;
+    private YesOrNoEnum delFlag = YesOrNoEnum.NO;
 
     public Integer getParentId() {
         return parentId;
@@ -21,11 +21,11 @@ public class GoodsCategoryQueryInfo extends QueryInfo {
         this.parentId = parentId;
     }
 
-    public YesOrNoEnum getStatus() {
-        return status;
+    public YesOrNoEnum getDelFlag() {
+        return delFlag;
     }
 
-    public void setStatus(YesOrNoEnum status) {
-        this.status = status;
+    public void setDelFlag(YesOrNoEnum delFlag) {
+        this.delFlag = delFlag;
     }
 }

+ 13 - 24
mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentManageQueryInfo.java

@@ -12,46 +12,35 @@ import com.ym.mec.common.page.QueryInfo;
 public class StudentManageQueryInfo extends QueryInfo {
 
     @ApiModelProperty(value = "部门ID")
-    private Long organId;
+    private Integer organId;
 
     @ApiModelProperty(value = "乐团ID")
-    private Long musicGroupId;
+    private String musicGroupId;
 
     @ApiModelProperty(value = "状态(在读、请假、退学)",required = false)
     private ClassGroupStudentStatusEnum studentStatus;
 
-    @ApiModelProperty(value = "模糊查询字符串-用户名/电话")
-    private String queryString;
+    public ClassGroupStudentStatusEnum getStudentStatus() {
+        return studentStatus;
+    }
+
+    public void setStudentStatus(ClassGroupStudentStatusEnum studentStatus) {
+        this.studentStatus = studentStatus;
+    }
 
-    public Long getOrganId() {
+    public Integer getOrganId() {
         return organId;
     }
 
-    public void setOrganId(Long organId) {
+    public void setOrganId(Integer organId) {
         this.organId = organId;
     }
 
-    public Long getMusicGroupId() {
+    public String getMusicGroupId() {
         return musicGroupId;
     }
 
-    public void setMusicGroupId(Long musicGroupId) {
+    public void setMusicGroupId(String musicGroupId) {
         this.musicGroupId = musicGroupId;
     }
-
-    public ClassGroupStudentStatusEnum getStudentStatus() {
-        return studentStatus;
-    }
-
-    public void setStudentStatus(ClassGroupStudentStatusEnum studentStatus) {
-        this.studentStatus = studentStatus;
-    }
-
-    public String getQueryString() {
-        return queryString;
-    }
-
-    public void setQueryString(String queryString) {
-        this.queryString = queryString;
-    }
 }

+ 22 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java

@@ -113,9 +113,10 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
      * 获取乐团班级老师课酬
      *
      * @param musicGroupId
+     * @param type 班级类型(多种类型)
      * @return
      */
-    List<ClassGroupTeachersDto> getClassGroupAndTeachers(String musicGroupId);
+    List<ClassGroupTeachersDto> getClassGroupAndTeachers(String musicGroupId,String type);
 
     /**
      * 获取乐团班级老师课酬
@@ -123,7 +124,7 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
      * @param musicGroupId
      * @return
      */
-    List<ClassGroupTeachersDto> getClassGroupAndTeacherSalary(String musicGroupId, SalarySettlementTypeEnum type);
+    List<ClassGroupTeachersDto> getClassGroupAndTeacherSalary(String musicGroupId, SalarySettlementTypeEnum type) throws Exception;
 
 
     /**
@@ -180,4 +181,23 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
      * @describe 跟新班级人数
      */
     boolean updateClassStudentNum(Long classGroupId,Integer num);
+
+    /**
+     * 删除单技班级
+     * @param classGroupId
+     */
+    void delSingle(Integer classGroupId);
+
+    /**
+     * 删除合奏班级
+     * @param classGroupId
+     */
+    void delMix(Integer classGroupId);
+
+    /**
+     * 成团确认,校验参数,并设置团长
+     * @param teacherId
+     * @param musicGroupId
+     */
+    void addMusicGroupTeam(Integer teacherId, String musicGroupId) throws Exception;
 }

+ 0 - 8
mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupStudentMapperService.java

@@ -8,12 +8,4 @@ import org.apache.ibatis.annotations.Param;
 import java.util.List;
 
 public interface ClassGroupStudentMapperService extends BaseService<Long, ClassGroupStudentMapper> {
-
-    /**
-     * 批量插入班级关联的学生
-     * @param classGroupStudentMapperList
-     * @return
-     */
-    int classGroupStudentsInsert(@Param("classGroupStudentMapperList") List<ClassGroupStudentMapper> classGroupStudentMapperList);
-
 }

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

@@ -1,28 +1,12 @@
 package com.ym.mec.biz.service;
 
 import com.ym.mec.biz.dal.entity.GoodsCategory;
-import com.ym.mec.biz.dal.page.GoodsCategoryQueryInfo;
-import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 
 public interface GoodsCategoryService extends BaseService<Integer, GoodsCategory> {
-
-    /**
-     * 新政商品类型
-     * @param goodsCategory
-     */
-    void add(GoodsCategory goodsCategory);
-
     /**
      * 新增、修改商品类型
      * @param goodsCategory
      */
     void upsetGoodsCategory(GoodsCategory goodsCategory);
-
-    /**
-     * 获取商品分类树状列表
-     * @param queryInfo
-     * @return
-     */
-    PageInfo<GoodsCategory> queryTreePage(GoodsCategoryQueryInfo queryInfo);
 }

+ 19 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupService.java

@@ -2,8 +2,13 @@ package com.ym.mec.biz.service;
 
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
-import com.ym.mec.biz.dal.dto.*;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dto.BasicUserDto;
+import com.ym.mec.biz.dal.dto.MusicCardDto;
+import com.ym.mec.biz.dal.dto.SubFeeSettingDto;
+import com.ym.mec.biz.dal.entity.ApprovalStatus;
 import com.ym.mec.biz.dal.entity.MusicGroup;
 import com.ym.mec.biz.dal.page.MusicGroupQueryInfo;
 import com.ym.mec.common.page.PageInfo;
@@ -64,21 +69,29 @@ public interface MusicGroupService extends BaseService<String, MusicGroup> {
 	boolean extensionPayment(String musicGroupId, Date expireDate);
 
 	/**
-	 * 退团
+	 * 申请退团
 	 * @param musicGroupId 乐团编号
-	 * @param userId 用户编号
+	 * @param sysUser 用户
+	 * @return
+	 */
+	boolean applyQuitMusicGroup(String musicGroupId, SysUser sysUser);
+
+	/**
+	 * 审批退团
+	 * @param id
+	 * @param status
+	 * @param reason
 	 * @return
 	 */
-	boolean quitMusicGroup(String musicGroupId, Integer userId);
+	boolean approveQuitMusicGroup(Long id, ApprovalStatus status, String reason);
 
 	/**
 	 *  续费
 	 * @param musicGroupId 乐团编号
 	 * @param userId 用户编号
-	 * @param amount 缴费金额
 	 * @return
 	 */
-	boolean renew(String musicGroupId, Integer userId, double amount);
+	Map renew(String musicGroupId, Integer userId);
 
 	/**
 	 * 获取乐团列表

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

@@ -5,4 +5,10 @@ import com.ym.mec.common.service.BaseService;
 
 public interface MusicGroupStudentFeeService extends BaseService<Long, MusicGroupStudentFee> {
 
+	/**
+	 * 刷新续费状态
+	 * @return
+	 */
+	boolean refreshPaymentFeeStatus();
+
 }

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

@@ -5,4 +5,65 @@ import com.ym.mec.common.service.BaseService;
 
 public interface SysConfigService extends BaseService<Long, SysConfig> {
 
+	/**
+	 * 缴费状态提前{}天刷新
+	 */
+	public static final String REFRESH_PAYMENT_STATUS_EARLY_DAYS = "refresh_payment_status_early_days";
+
+	/**
+	 * VIP课结束后,用户可申诉时间,为课程结束后的{}天
+	 */
+	public static final String VIP_APPEAL_DAYS_RANGE = "vip_appeal_days_range";
+
+	/**
+	 * VIP课的结算周期,为课程完成后{}天
+	 */
+	public static final String VIP_SETTLEMENT_CYCLE = "vip_settlement_cycle";
+
+	/**
+	 * 课酬结算周期,为每个月的{}日
+	 */
+	public static final String COURSES_SETTLEMENT_CYCLE = "courses_settlement_cycle";
+
+	/**
+	 * 老师正常打卡时间,为课程当天,距离开课时间前{}分钟
+	 */
+	public static final String ADVANCE_SIGN_IN_MINUTES = "advance_sign_in_minutes";
+
+	/**
+	 * 乐团课,签退时间,为课程结束后开始,至结束后的{}小时
+	 */
+	public static final String SIGN_OUT_DELAY_HOURS = "sign_out_delay_hours";
+
+	/**
+	 * 老师可以打卡范围,为教学定位方圆{}米
+	 */
+	public static final String ATTENDANCE_RANGE = "attendance_range";
+
+	/**
+	 * 学生VIP课,允许请假的时间,为开课前{}小时
+	 */
+	public static final String ADVANCE_LEAVE_HOURS = "advance_leave_hours";
+
+	/**
+	 * 移动端「课程调整」调整的课程时间,为开课前{}天
+	 */
+	public static final String ADVANCE_UPDATE_COURSES_DAYS = "advance_update_courses_days";
+
+	/**
+	 * 密码重置后的默认密码为{}
+	 */
+	public static final String DEFAULT_PASSWORD = "default_password";
+
+	/**
+	 * 梯度结算规则设置
+	 */
+	public static final String MUSIC_GRADIENT_SETTLEMENT_RULE = "music_gradient_settlement_rule";
+
+	/**
+	 * @params paramName
+	 * @return com.ym.mec.biz.dal.entity.SysConfig
+	 * @describe 根据配置名称获取配置信息
+	 */
+	SysConfig findByParamName(String paramName);
 }

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

@@ -1,10 +1,30 @@
 package com.ym.mec.biz.service;
 
+import java.math.BigDecimal;
+
 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.TransTypeEnum;
 import com.ym.mec.common.service.BaseService;
 
 public interface SysUserCashAccountDetailService extends BaseService<Long, SysUserCashAccountDetail> {
 
-    SysUserCashAccountDetail selectDetailByTransNo(String transNo);
+	SysUserCashAccountDetail queryDetailByTransNo(String transNo);
+
+	/**
+	 * 添加流水信息(若成功会更新账户余额)
+	 * @param userId 用户编号
+	 * @param amount 金额
+	 * @param origOrderId 原始订单号
+	 * @param transNo 交易流水号
+	 * @param type 交易类型
+	 * @param transType 交易渠道
+	 * @param status 交易状态
+	 * @param comment 备注
+	 * @return
+	 */
+	boolean addCashAccountDetail(Integer userId, BigDecimal amount, String origOrderId, String transNo, PlatformCashAccountDetailTypeEnum type,
+			TransTypeEnum transType, DealStatusEnum status, String comment);
 
 }

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

@@ -8,6 +8,7 @@ import com.ym.mec.common.entity.ImGroupModel;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.BaseService;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -68,4 +69,12 @@ public interface TeacherService extends BaseService<Integer, Teacher> {
      * @return
      */
     List<BasicUserDto> queryGroupStudents(Integer id, String search);
+
+    /**
+     * 查询分部所有老师
+     * @param organId
+     * @return
+     */
+    List<Teacher> findTeachers(@Param("organId") Integer organId);
+
 }

+ 66 - 23
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -1,9 +1,6 @@
 package com.ym.mec.biz.service.impl;
 
-import com.ym.mec.biz.dal.dao.ClassGroupDao;
-import com.ym.mec.biz.dal.dao.MusicGroupDao;
-import com.ym.mec.biz.dal.dao.MusicGroupStudentFeeDao;
-import com.ym.mec.biz.dal.dao.TeacherDao;
+import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.*;
@@ -41,6 +38,9 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     private MusicGroupDao musicGroupDao;
     @Autowired
     private ClassGroupRelationService classGroupRelationService;
+    private ClassGroupStudentMapperDao classGroupStudentMapperDao;
+    @Autowired
+    private ClassGroupRelationDao classGroupRelationDao;
     @Autowired
     private ClassGroupStudentMapperService classGroupStudentMapperService;
     @Autowired
@@ -50,6 +50,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     @Autowired
     private CourseScheduleService courseScheduleService;
     @Autowired
+    private StudentRegistrationDao studentRegistrationDao;
+    @Autowired
     private StudentRegistrationService studentRegistrationService;
     @Autowired
     private ClassGroupTeacherSalaryService classGroupTeacherSalaryService;
@@ -98,8 +100,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     @Override
     @Transactional(rollbackFor = Exception.class)
     public ClassGroup addClassGroup(ClassGroup classGroup) throws Exception {
-        Date date;
-        date = new Date();
+        Date date = new Date();
         classGroup.setCreateTime(date);
         classGroup.setUpdateTime(date);
         classGroup.setType(ClassGroupTypeEnum.NORMAL);
@@ -107,25 +108,25 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         String[] userIdArr = userIds.split(",");
 
         classGroup.setStudentNum(userIdArr.length);
-        Long classGroupId = this.insert(classGroup);
+        insert(classGroup);
 
         //2、插入班级学生关联关系
         List<ClassGroupStudentMapper> classGroupStudentList = new ArrayList<>();
         for (String userId : userIdArr) {
             ClassGroupStudentMapper classGroupStudentMapper = new ClassGroupStudentMapper();
-            classGroupStudentMapper.setClassGroupId(classGroupId.intValue());
-            classGroupStudentMapper.setUserId(Integer.getInteger(userId));
+            classGroupStudentMapper.setClassGroupId(classGroup.getId());
+            classGroupStudentMapper.setUserId(Integer.parseInt(userId));
             classGroupStudentMapper.setCreateTime(date);
             classGroupStudentMapper.setStatus(ClassGroupStudentStatusEnum.NORMAL);
             classGroupStudentList.add(classGroupStudentMapper);
             StudentRegistration studentRegistration = new StudentRegistration();
-            studentRegistration.setClassGroupId(classGroupId.intValue());
+            studentRegistration.setClassGroupId(classGroup.getId());
             studentRegistration.setUserId(Integer.getInteger(userId));
             studentRegistration.setMusicGroupId(classGroup.getMusicGroupId());
-            studentRegistrationService.updateByUserIdAndMusicGroupId(studentRegistration);
+            studentRegistrationDao.updateByUserIdAndMusicGroupId(studentRegistration);
         }
 
-        classGroupStudentMapperService.classGroupStudentsInsert(classGroupStudentList);
+        classGroupStudentMapperDao.classGroupStudentsInsert(classGroupStudentList);
 
         return classGroup;
     }
@@ -152,13 +153,13 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         classGroup.setType(ClassGroupTypeEnum.MIX);
         classGroup.setCreateTime(date);
         classGroup.setUpdateTime(date);
-        Long classGroupId = this.insert(classGroup);
+        insert(classGroup);
 
         //2、插入班级关联关系
         List<ClassGroupRelation> classGroupRelationList = new ArrayList<>();
         for (ClassGroup cGroup : classGroups) {
             ClassGroupRelation classGroupRelation = new ClassGroupRelation();
-            classGroupRelation.setClassGroupId(classGroupId.intValue());
+            classGroupRelation.setClassGroupId(classGroup.getId());
             classGroupRelation.setSubClassGroupId(cGroup.getId());
             classGroupRelation.setCreateTime(date);
             classGroupRelationList.add(classGroupRelation);
@@ -182,12 +183,12 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             highClassGroup.setCreateTime(date);
             highClassGroup.setUpdateTime(date);
             highClassGroup.setType(ClassGroupTypeEnum.HIGH);
-            Long classGroupId = this.insert(highClassGroup);
+            insert(highClassGroup);
 
             //2、插入班级关联老师
             ClassGroupTeacherMapper classGroupTeacherMapper = new ClassGroupTeacherMapper();
-            classGroupTeacherMapper.setMusicGroupId(highClassGroup.getUserId());
-            classGroupTeacherMapper.setClassGroupId(classGroupId.intValue());
+            classGroupTeacherMapper.setMusicGroupId(highClassGroup.getMusicGroupId());
+            classGroupTeacherMapper.setClassGroupId(highClassGroup.getId());
             classGroupTeacherMapper.setTeacherRole(TeachTypeEnum.BISHOP);
             classGroupTeacherMapper.setUserId(highClassGroup.getUserId());
             classGroupTeacherMapper.setCreateTime(date);
@@ -207,7 +208,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                     Instant instant = now.atZone(ZoneId.systemDefault()).toInstant();
                     Date classDate = Date.from(instant);
 
-                    courseSchedule.setClassGroupId(classGroupId.intValue());
+                    courseSchedule.setClassGroupId(highClassGroup.getUserId());
                     courseSchedule.setStatus(CourseStatusEnum.NOT_START);
                     courseSchedule.setClassDate(classDate);
                     courseSchedule.setStartClassTime(highClassGroup.getStartClassTime());
@@ -262,8 +263,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     }
 
     @Override
-    public List<ClassGroupTeachersDto> getClassGroupAndTeachers(String musicGroupId) {
-        List<ClassGroupTeachersDto> classGroupAndTeachersList = classGroupDao.findClassGroupByMusicGroupId(musicGroupId);
+    public List<ClassGroupTeachersDto> getClassGroupAndTeachers(String musicGroupId,String type) {
+        List<ClassGroupTeachersDto> classGroupAndTeachersList = classGroupDao.findClassGroupByMusicGroupId(musicGroupId,type);
 
         List<ClassGroupTeacherMapper> classGroupTeacherMapperList = classGroupTeacherMapperService.findClassGroupTeachers(classGroupAndTeachersList);
 
@@ -280,9 +281,9 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     }
 
     @Override
-    public List<ClassGroupTeachersDto> getClassGroupAndTeacherSalary(String musicGroupId, SalarySettlementTypeEnum type) {
+    public List<ClassGroupTeachersDto> getClassGroupAndTeacherSalary(String musicGroupId, SalarySettlementTypeEnum type) throws Exception {
         //乐团班级及班级老师
-        List<ClassGroupTeachersDto> classGroupAndTeachers = getClassGroupAndTeachers(musicGroupId);
+        List<ClassGroupTeachersDto> classGroupAndTeachers = getClassGroupAndTeachers(musicGroupId,"NORMAL,MIX,HIGH");
 
         for (ClassGroupTeachersDto classGroupAndTeacher : classGroupAndTeachers) {
             //班级的教师列表
@@ -291,6 +292,9 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 //获取老师的默认课酬
                 String courseType = classGroupAndTeacher.getType().equals(ClassGroupTypeEnum.NORMAL) ? "SINGLE" : classGroupAndTeacher.getType().getCode();
                 List<TeacherDefaultMusicGroupSalary> teacherSalaryByUserIdAndType = teacherDefaultMusicGroupSalaryService.getTeacherSalaryByUserIdAndType(classGroupTeacherMapper.getUserId(), courseType, type);
+                if (teacherSalaryByUserIdAndType == null) {
+                    throw new Exception("userId:"+classGroupTeacherMapper.getUserId()+"名字:"+classGroupTeacherMapper.getUserName()+" 老师没有设置课酬");
+                }
                 classGroupTeacherMapper.setTeacherDefaultMusicGroupSalaryList(teacherSalaryByUserIdAndType);
             }
 
@@ -416,7 +420,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         classGroupStudentMapper.setUserId(userId);
         classGroupStudentMapper.setStatus(ClassGroupStudentStatusEnum.NORMAL);
         classGroupStudentMapper.setCreateTime(date);
-        classGroupStudentMapperService.insert(classGroupStudentMapper);
+        classGroupStudentMapperDao.insert(classGroupStudentMapper);
         return classGroup;
     }
 
@@ -426,6 +430,45 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void delSingle(Integer classGroupId) {
+        //删除学员班级关联关系
+        classGroupStudentMapperDao.deleteByClassId(classGroupId);
+        //删除班级
+        classGroupDao.delete(classGroupId);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void delMix(Integer classGroupId) {
+        //删除班级关系
+        classGroupRelationDao.deleteByClassId(classGroupId);
+        //删除合奏班
+        classGroupDao.delete(classGroupId);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void addMusicGroupTeam(Integer teacherId, String musicGroupId) throws Exception {
+        //所有学员都已经分配
+        List<StudentRegistration> students = studentRegistrationDao.getNoClassStuBySubjectId(musicGroupId, null);
+        if(students != null && students.size() > 0){
+            throw new Exception("还有学员未分配班级");
+        }
+        //所有单技班都有合奏班
+        List<ClassGroup> classGroupList = classGroupDao.findNoClassSubjects(musicGroupId);
+        if(classGroupList != null && classGroupList.size() > 0){
+            throw new Exception("还有单技班未分配合奏");
+        }
+        //设置教学主管
+        MusicGroup musicGroup = new MusicGroup();
+        musicGroup.setId(musicGroupId);
+        musicGroup.setDirectorUserId(teacherId);
+        musicGroup.setUpdateTime(new Date());
+        musicGroupDao.update(musicGroup);
+    }
+
+    @Override
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
     public boolean updateClassStudentNum(Long classGroupId, Integer num) {
         ClassGroup classGroup=classGroupDao.lockClassGroup(classGroupId);

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

@@ -21,9 +21,4 @@ public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, Cl
 	public BaseDAO<Long, ClassGroupStudentMapper> getDAO() {
 		return classGroupStudentMapperDao;
 	}
-
-    @Override
-    public int classGroupStudentsInsert(List<ClassGroupStudentMapper> classGroupStudentMapperList) {
-		return classGroupStudentMapperDao.classGroupStudentsInsert(classGroupStudentMapperList);
-    }
 }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupTeacherMapperServiceImpl.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.service.impl;
 
+import com.ym.mec.biz.dal.entity.TeacherDefaultMusicGroupSalary;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -8,6 +9,7 @@ import com.ym.mec.biz.dal.entity.ClassGroupTeacherMapper;
 import com.ym.mec.biz.service.ClassGroupTeacherMapperService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 
@@ -23,7 +25,10 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public int classGroupTeachersInsert(List<ClassGroupTeacherMapper> classGroupTeacherMapperList) {
+        //删除班级已经设置的老师
+        classGroupTeacherMapperDao.delMusicGroupTeacherMapper(classGroupTeacherMapperList);
         return classGroupTeacherMapperDao.classGroupTeachersInsert(classGroupTeacherMapperList);
     }
 
@@ -35,6 +40,11 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
 
     public boolean classGroupTeacherMapperUpdate(List<ClassGroupTeacherMapper> classGroupTeacherMapperList) throws Exception {
         for (ClassGroupTeacherMapper classGroupTeacherMapper : classGroupTeacherMapperList) {
+            List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalaryList = classGroupTeacherMapper.getTeacherDefaultMusicGroupSalaryList();
+            for (TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalary : teacherDefaultMusicGroupSalaryList) {
+                
+            }
+
             classGroupTeacherMapperDao.update(classGroupTeacherMapper);
         }
         return true;

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

@@ -1,17 +1,16 @@
 package com.ym.mec.biz.service.impl;
 
+import java.util.List;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import com.ym.mec.biz.dal.dao.CooperationOrganDao;
 import com.ym.mec.biz.dal.entity.CooperationOrgan;
-import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.service.CooperationOrganService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 
-import java.util.List;
-
 @Service
 public class CooperationOrganServiceImpl extends BaseServiceImpl<Integer, CooperationOrgan>  implements CooperationOrganService {
 	

+ 8 - 53
mec-biz/src/main/java/com/ym/mec/biz/service/impl/GoodsCategoryServiceImpl.java

@@ -1,15 +1,11 @@
 package com.ym.mec.biz.service.impl;
 
 import com.ym.mec.biz.dal.dao.GoodsCategoryDao;
+import com.ym.mec.biz.dal.dao.SubjectGoodsMapperDao;
 import com.ym.mec.biz.dal.entity.GoodsCategory;
-import com.ym.mec.biz.dal.entity.Subject;
-import com.ym.mec.biz.dal.enums.YesOrNoEnum;
-import com.ym.mec.biz.dal.page.GoodsCategoryQueryInfo;
 import com.ym.mec.biz.service.GoodsCategoryService;
 import com.ym.mec.common.dal.BaseDAO;
-import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
-
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -22,6 +18,8 @@ public class GoodsCategoryServiceImpl extends BaseServiceImpl<Integer, GoodsCate
 	
 	@Autowired
 	private GoodsCategoryDao goodsCategoryDao;
+	@Autowired
+	private SubjectGoodsMapperDao subjectGoodsMapperDao;
 
 	@Override
 	public BaseDAO<Integer, GoodsCategory> getDAO() {
@@ -30,60 +28,17 @@ public class GoodsCategoryServiceImpl extends BaseServiceImpl<Integer, GoodsCate
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public void add(GoodsCategory goodsCategory) {
-		goodsCategoryDao.insert(goodsCategory);
-		List<GoodsCategory> goodsCategories = goodsCategory.getGoodsCategories();
-		goodsCategories.forEach(e->{
-			e.setParentId(goodsCategory.getId());
-			goodsCategoryDao.insert(e);
-		});
-	}
-
-	@Override
 	public void upsetGoodsCategory(GoodsCategory goodsCategory) {
-		Integer parentId = upset(goodsCategory, null);
-		List<GoodsCategory> goodsCategories = goodsCategory.getGoodsCategories();
-		goodsCategories.forEach(e->{
-			upset(e, parentId);
-		});
-	}
-
-	@Override
-	public PageInfo<GoodsCategory> queryTreePage(GoodsCategoryQueryInfo queryInfo) {
-		PageInfo<GoodsCategory> pageInfo = queryPage(queryInfo);
-		for (GoodsCategory goodsCategory:pageInfo.getRows()) {
-			goodsCategory = getTree(goodsCategory,queryInfo.getStatus());
-		}
-		return pageInfo;
-	}
-
-
-	private GoodsCategory getTree(GoodsCategory goodsCategory, YesOrNoEnum yesOrNoEnum){
-		//得到根节点对象
-		//获取子节点list
-		List<GoodsCategory> goodsCategories = goodsCategoryDao.findByParentId(goodsCategory.getId(),yesOrNoEnum);
-		//如果存在子节点
-		if(goodsCategories != null && goodsCategories.size() > 0) {
-			//将子节点list放入父节点对象
-			goodsCategory.setGoodsCategories(goodsCategories);
-			//遍历子节点....
-			for (GoodsCategory subject : goodsCategories) {
-				getTree(subject,yesOrNoEnum);
-			}
-		}
-		return goodsCategory;
-	}
-
-	private Integer upset(GoodsCategory goodsCategory, Integer parentId){
-		if(parentId != null){
-			goodsCategory.setParentId(parentId);
-		}
+		goodsCategory.setParentId(0);
 		if(goodsCategory.getId() != null){
 			goodsCategory.setUpdateTime(new Date());
 			goodsCategoryDao.update(goodsCategory);
+			//删除关联
+			subjectGoodsMapperDao.delByGoodsCategoryId(goodsCategory.getId());
 		}else {
 			goodsCategoryDao.insert(goodsCategory);
 		}
-		return goodsCategory.getId();
+		List<Integer> subjectIds = goodsCategory.getSubjectIds();
+		subjectGoodsMapperDao.batchAdd(goodsCategory.getId(),subjectIds);
 	}
 }

+ 175 - 50
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -1,14 +1,60 @@
 package com.ym.mec.biz.service.impl;
 
-import com.ym.mec.biz.dal.dao.*;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.ChargeTypeDao;
+import com.ym.mec.biz.dal.dao.ClassGroupStudentMapperDao;
+import com.ym.mec.biz.dal.dao.MusicGroupBuildLogDao;
+import com.ym.mec.biz.dal.dao.MusicGroupDao;
+import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDao;
+import com.ym.mec.biz.dal.dao.MusicGroupPaymentEntitiesDao;
+import com.ym.mec.biz.dal.dao.MusicGroupQuitDao;
+import com.ym.mec.biz.dal.dao.MusicGroupStudentFeeDao;
+import com.ym.mec.biz.dal.dao.MusicGroupSubjectGoodsGroupDao;
+import com.ym.mec.biz.dal.dao.MusicGroupSubjectPlanDao;
+import com.ym.mec.biz.dal.dao.SchoolDao;
+import com.ym.mec.biz.dal.dao.StudentPaymentOrderDao;
+import com.ym.mec.biz.dal.dao.TeacherDao;
 import com.ym.mec.biz.dal.dto.BasicUserDto;
 import com.ym.mec.biz.dal.dto.MusicCardDto;
-import com.ym.mec.biz.dal.dto.MusicGroupsDto;
 import com.ym.mec.biz.dal.dto.SubFeeSettingDto;
-import com.ym.mec.biz.dal.entity.*;
-import com.ym.mec.biz.dal.enums.*;
+import com.ym.mec.biz.dal.entity.ApprovalStatus;
+import com.ym.mec.biz.dal.entity.MusicGroup;
+import com.ym.mec.biz.dal.entity.MusicGroupBuildLog;
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender;
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentEntities;
+import com.ym.mec.biz.dal.entity.MusicGroupQuit;
+import com.ym.mec.biz.dal.entity.MusicGroupStudentFee;
+import com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus;
+import com.ym.mec.biz.dal.entity.MusicGroupSubjectGoodsGroup;
+import com.ym.mec.biz.dal.entity.MusicGroupSubjectPlan;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
+import com.ym.mec.biz.dal.entity.StudentRegistration;
+import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum;
+import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
+import com.ym.mec.biz.dal.enums.DealStatusEnum;
+import com.ym.mec.biz.dal.enums.MusicGroupStatusEnum;
+import com.ym.mec.biz.dal.enums.OrderTypeEnum;
+import com.ym.mec.biz.dal.enums.PlatformCashAccountDetailTypeEnum;
 import com.ym.mec.biz.dal.page.MusicGroupQueryInfo;
 import com.ym.mec.biz.service.MusicGroupService;
+import com.ym.mec.biz.service.PayService;
+import com.ym.mec.biz.service.StudentRegistrationService;
+import com.ym.mec.biz.service.SysUserCashAccountDetailService;
 import com.ym.mec.biz.service.SysUserCashAccountService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.entity.ImGroupMember;
@@ -19,13 +65,6 @@ import com.ym.mec.common.service.IdGeneratorService;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.im.ImFeignService;
 import com.ym.mec.util.collection.MapUtil;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Propagation;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.*;
-import java.util.stream.Collectors;
 
 @Service
 public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> implements MusicGroupService {
@@ -55,16 +94,28 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 
 	@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 PayService payService;
+
 	@Override
 	public BaseDAO<String, MusicGroup> getDAO() {
 		return musicGroupDao;
@@ -77,7 +128,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 		List<MusicGroupPaymentEntities> musicGroupPaymentEntities = subFeeSettingDto.getMusicGroupPaymentEntities();
 		List<MusicGroupSubjectGoodsGroup> musicGroupSubjectGoodsGroups = subFeeSettingDto.getMusicGroupSubjectGoodsGroups();
 		List<MusicGroupSubjectPlan> musicGroupSubjectPlans = subFeeSettingDto.getMusicGroupSubjectPlans();
-		String musicGroupId = idGeneratorService.generatorId()+"";
+		String musicGroupId = idGeneratorService.generatorId() + "";
 		musicGroup.setId(musicGroupId);
 		// 保存乐团基本信息
 		musicGroupDao.insert(musicGroup);
@@ -114,7 +165,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 			musicGroupSubjectGoodsGroupDao.insert(e);
 		});
 		// 新增聊天群
-//			ImGroupModel imGroupModel = new ImGroupModel(musicGroupId, musicGroup.getName());
+		// ImGroupModel imGroupModel = new ImGroupModel(musicGroupId, musicGroup.getName());
 		// 教务老师和运营主管加入群组
 		ImGroupMember[] imGroupMembers = { new ImGroupMember(musicGroup.getTeamTeacherId().toString()),
 				new ImGroupMember(musicGroup.getEducationalTeacherId().toString()) };
@@ -158,22 +209,25 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 		} else {
 			throw new BizException("乐团当前状态是{},不能取消", musicGroup.getStatus().getMsg());
 		}
-		
-		//查询是否有中间状态的缴费信息
+
+		// 查询是否有中间状态的缴费信息
 		List<StudentPaymentOrder> studentPaymentOrders = studentPaymentOrderDao.queryByDealStatus(musicGroupId, OrderTypeEnum.APPLY, DealStatusEnum.ING);
-		
-		if(studentPaymentOrders != null && studentPaymentOrders.size()>0){
+
+		if (studentPaymentOrders != null && studentPaymentOrders.size() > 0) {
 			throw new BizException("缴费存在交易中的数据,不能取消乐团");
 		}
-		
-		//查询已缴费信息
+
+		// 查询已缴费信息
 		studentPaymentOrders = studentPaymentOrderDao.queryByDealStatus(musicGroupId, OrderTypeEnum.APPLY, DealStatusEnum.SUCCESS);
 
 		// 退费
-		for(StudentPaymentOrder order : studentPaymentOrders){
+		for (StudentPaymentOrder order : studentPaymentOrders) {
 			sysUserCashAccountService.updateBalance(order.getUserId(), order.getActualAmount());
+			// 增加交易流水
+			sysUserCashAccountDetailService.addCashAccountDetail(order.getUserId(), order.getActualAmount(), "", "", PlatformCashAccountDetailTypeEnum.REFUNDS,
+					null, DealStatusEnum.SUCCESS, "取消乐团");
 		}
-		
+
 		return true;
 	}
 
@@ -265,59 +319,130 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 	}
 
 	@Override
-	public boolean quitMusicGroup(String musicGroupId, Integer userId) {
+	@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("乐团不存在");
 		}
-		
-		classGroupStudentMapperDao.updateUserStatusByMusicGroupId(musicGroupId, userId, ClassGroupStudentStatusEnum.QUIT);
-		
+
+		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
-	public boolean renew(String musicGroupId, Integer userId, double amount) {
+	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+	public boolean approveQuitMusicGroup(Long id, ApprovalStatus status, String reason) {
+		MusicGroupQuit musicGroupQuit = musicGroupQuitDao.get(id);
+		if (musicGroupQuit != null) {
+
+			String musicGroupId = musicGroupQuit.getMusicGroupId();
+			Integer userId = musicGroupQuit.getUserId();
+
+			musicGroupQuit.setStatus(status);
+			musicGroupQuit.setReason(reason);
+			musicGroupQuit.setQuitDate(new Date());
+			musicGroupQuitDao.update(musicGroupQuit);
+
+			if (status == ApprovalStatus.APPROVED) {
+				classGroupStudentMapperDao.updateUserStatusByMusicGroupId(musicGroupId, userId, ClassGroupStudentStatusEnum.QUIT);
+
+				// 判断乐器是否是租赁
+				StudentRegistration studentRegistration = studentRegistrationService.queryByUserIdAndMusicGroupId(userId, musicGroupId);
+				if (studentRegistration == null) {
+					throw new BizException("用户注册信息不存在");
+				}
+				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(), "", "",
+							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();
+		}
+
+		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
 	public PageInfo<MusicGroup> queryMusicGroupPage(MusicGroupQueryInfo 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);
+		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);
+		// 获取相关老师的名字
+		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);
+		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);
+		// 统计乐团在读人数
+		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);
+		List<Map<Integer, String>> chargeTypeNames = chargeTypeDao.queryNameByIds(chargeTypeIds);
+		Map<Integer, String> chargeTypeNameMap = MapUtil.convertMybatisMap(chargeTypeNames);
 
-		musicGroupList.forEach(e->{
+		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.setPayNum(payNumMap.get(e.getId()) == null ? 0 : payNumMap.get(e.getId()).intValue());
 			e.setChargeTypeName(chargeTypeNameMap.get(e.getChargeTypeId()));
 		});
 		return musicGroupPageInfo;

+ 50 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupStudentFeeServiceImpl.java

@@ -1,23 +1,68 @@
 package com.ym.mec.biz.service.impl;
 
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
 import com.ym.mec.biz.dal.dao.MusicGroupStudentFeeDao;
+import com.ym.mec.biz.dal.dao.SysConfigDao;
 import com.ym.mec.biz.dal.entity.MusicGroupStudentFee;
+import com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus;
+import com.ym.mec.biz.dal.entity.SysConfig;
 import com.ym.mec.biz.service.MusicGroupStudentFeeService;
+import com.ym.mec.biz.service.SysConfigService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
 @Service
 public class MusicGroupStudentFeeServiceImpl extends BaseServiceImpl<Long, MusicGroupStudentFee> implements MusicGroupStudentFeeService {
-	
+
 	@Autowired
 	private MusicGroupStudentFeeDao musicGroupStudentFeeDao;
 
+	@Autowired
+	private SysConfigDao sysConfigDao;
+
 	@Override
 	public BaseDAO<Long, MusicGroupStudentFee> getDAO() {
 		return musicGroupStudentFeeDao;
 	}
-	
+
+	@Override
+	public boolean refreshPaymentFeeStatus() {
+
+		int days = 7;
+
+		SysConfig sysConfig = sysConfigDao.findByParamName(SysConfigService.REFRESH_PAYMENT_STATUS_EARLY_DAYS);
+		if (sysConfig != null) {
+			days = Integer.parseInt(sysConfig.getParanValue());
+		}
+
+		Date date = new Date();
+
+		List<MusicGroupStudentFee> updateList = new ArrayList<MusicGroupStudentFee>();
+
+		List<MusicGroupStudentFee> musicGroupStudentFeeList = musicGroupStudentFeeDao.queryWillRenewList(days);
+
+		for (MusicGroupStudentFee musicGroupStudentFee : musicGroupStudentFeeList) {
+			if (musicGroupStudentFee.getPaymentStatus() == PaymentStatus.PAID_COMPLETED) {
+				musicGroupStudentFee.setPaymentStatus(PaymentStatus.NON_PAYMENT);
+				musicGroupStudentFee.setUpdateTime(date);
+				updateList.add(musicGroupStudentFee);
+			}
+		}
+
+		if (updateList.size() > 0) {
+			musicGroupStudentFeeDao.batchUpdate(updateList);
+		}
+
+		// int i = DateUtil.daysBetween(new Date(), musicGroupStudentFee.getNextPaymentDate());
+		// e.setRenewStatus(i < 8 ? 0 : 1);
+
+		return true;
+	}
+
 }

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

@@ -11,7 +11,6 @@ import com.ym.mec.biz.dal.page.StudentManageQueryInfo;
 import com.ym.mec.biz.service.StudentManageService;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.util.collection.MapUtil;
-
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -38,7 +37,7 @@ public class StudentManageServiceImpl implements StudentManageService {
     public PageInfo findStudentsByOrganId(StudentManageQueryInfo queryInfo) {
         SysUser user = sysUserFeignService.queryUserInfo();
         PageInfo<StudentManageListDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
-        queryInfo.setOrganId(Long.valueOf(user.getOrganId()));
+        queryInfo.setOrganId(user.getOrganId());
         Map<String, Object> params = new HashMap<String, Object>();
         MapUtil.populateMap(params, queryInfo);
 

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

@@ -19,5 +19,10 @@ public class SysConfigServiceImpl extends BaseServiceImpl<Long, SysConfig>  impl
 	public BaseDAO<Long, SysConfig> getDAO() {
 		return sysConfigDao;
 	}
+
+	@Override
+	public SysConfig findByParamName(String paramName) {
+		return sysConfigDao.findByParamName(paramName);
+	}
 	
 }

+ 53 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysUserCashAccountDetailServiceImpl.java

@@ -1,27 +1,77 @@
 package com.ym.mec.biz.service.impl;
 
+import java.math.BigDecimal;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
 
+import com.ym.mec.biz.dal.dao.SysUserCashAccountDao;
 import com.ym.mec.biz.dal.dao.SysUserCashAccountDetailDao;
+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.TransTypeEnum;
 import com.ym.mec.biz.service.SysUserCashAccountDetailService;
+import com.ym.mec.biz.service.SysUserCashAccountService;
 import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 
 @Service
-public class SysUserCashAccountDetailServiceImpl extends BaseServiceImpl<Long, SysUserCashAccountDetail>  implements SysUserCashAccountDetailService {
-	
+public class SysUserCashAccountDetailServiceImpl extends BaseServiceImpl<Long, SysUserCashAccountDetail> implements SysUserCashAccountDetailService {
+
 	@Autowired
 	private SysUserCashAccountDetailDao sysUserCashAccountDetailDao;
 
+	@Autowired
+	private SysUserCashAccountDao sysUserCashAccountDao;
+
+	@Autowired
+	private SysUserCashAccountService sysUserCashAccountService;
+
 	@Override
 	public BaseDAO<Long, SysUserCashAccountDetail> getDAO() {
 		return sysUserCashAccountDetailDao;
 	}
 
 	@Override
-	public SysUserCashAccountDetail selectDetailByTransNo(String transNo) {
+	public SysUserCashAccountDetail queryDetailByTransNo(String transNo) {
 		return sysUserCashAccountDetailDao.selectDetailByTransNo(transNo);
 	}
+
+	@Override
+	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+	public boolean addCashAccountDetail(Integer userId, BigDecimal amount, String origOrderId, String transNo, PlatformCashAccountDetailTypeEnum type,
+			TransTypeEnum transType, DealStatusEnum status, String comment) {
+
+		SysUserCashAccountDetail sysUserCashAccountDetail = new SysUserCashAccountDetail();
+		sysUserCashAccountDetail.setUserId(userId);
+		sysUserCashAccountDetail.setType(type);
+		sysUserCashAccountDetail.setStatus(status);
+		sysUserCashAccountDetail.setAmount(amount);
+		sysUserCashAccountDetail.setAttribute(origOrderId);
+		sysUserCashAccountDetail.setComment(comment);
+		sysUserCashAccountDetail.setTransNo(transNo);
+		sysUserCashAccountDetail.setTransType(transType);
+
+		SysUserCashAccount cashAccount = sysUserCashAccountDao.getLocked(userId);
+		if (cashAccount == null) {
+			throw new BizException("用户[{}]现金账户不存在", userId);
+		}
+
+		if (DealStatusEnum.SUCCESS == status) {
+			sysUserCashAccountService.updateBalance(userId, amount);
+			sysUserCashAccountDetail.setBalance(cashAccount.getBalance().add(amount).doubleValue() > 0 ? cashAccount.getBalance().add(amount) : new BigDecimal(
+					0));
+		} else {
+			sysUserCashAccountDetail.setBalance(cashAccount.getBalance());
+		}
+
+		sysUserCashAccountDetailDao.insert(sysUserCashAccountDetail);
+
+		return true;
+	}
 }

+ 18 - 9
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysUserCashAccountServiceImpl.java

@@ -10,14 +10,15 @@ import org.springframework.transaction.annotation.Transactional;
 
 import com.ym.mec.biz.dal.dao.SysUserCashAccountDao;
 import com.ym.mec.biz.dal.entity.SysUserCashAccount;
+import com.ym.mec.biz.dal.enums.PlatformCashAccountStatusEnum;
 import com.ym.mec.biz.service.SysUserCashAccountService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 
 @Service
-public class SysUserCashAccountServiceImpl extends BaseServiceImpl<Integer, SysUserCashAccount>  implements SysUserCashAccountService {
-	
+public class SysUserCashAccountServiceImpl extends BaseServiceImpl<Integer, SysUserCashAccount> implements SysUserCashAccountService {
+
 	@Autowired
 	private SysUserCashAccountDao sysUserCashAccountDao;
 
@@ -29,17 +30,25 @@ public class SysUserCashAccountServiceImpl extends BaseServiceImpl<Integer, SysU
 	@Override
 	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
 	public boolean updateBalance(Integer userId, BigDecimal decimal) {
-		
+
 		SysUserCashAccount cashAccount = sysUserCashAccountDao.getLocked(userId);
-		if(cashAccount == null){
-			throw new BizException("用户[{}]现金账户不存在",userId);
+		if (cashAccount == null) {
+			throw new BizException("用户[{}]现金账户不存在", userId);
+		}
+
+		if (cashAccount.getStatus() != PlatformCashAccountStatusEnum.NORMAL) {
+			throw new BizException("账户不可用");
 		}
-		
-		cashAccount.setBalance(cashAccount.getBalance().add(decimal));
+		BigDecimal balance = cashAccount.getBalance().add(decimal);
+		if (balance.doubleValue() < 0) {
+			throw new BizException("现金账户[{}]余额不足,可用余额剩{}元", userId, cashAccount.getBalance().doubleValue());
+		}
+
+		cashAccount.setBalance(balance);
 		cashAccount.setUpdateTime(new Date());
-		
+
 		sysUserCashAccountDao.update(cashAccount);
-		
+
 		return true;
 	}
 

+ 6 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherServiceImpl.java

@@ -152,7 +152,12 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 		return teacherDao.queryGroupStudents(teacherId,search);
 	}
 
-	@Override
+    @Override
+    public List<Teacher> findTeachers(Integer organId) {
+		return teacherDao.findTeachers(organId);
+    }
+
+    @Override
 	public PageInfo<Teacher> queryPageDetail(TeacherQueryInfo queryInfo) {
 		return queryPage(queryInfo);
 	}

+ 51 - 41
mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml

@@ -9,6 +9,7 @@
         <result column="id_" property="id"/>
         <result column="music_group_id_" property="musicGroupId"/>
         <result column="subject_id_list_" property="subjectIdList"/>
+        <result column="subject_name_" property="subjectName"/>
         <result column="name_" property="name"/>
         <result column="student_num_" property="studentNum"/>
         <result column="create_time_" property="createTime"/>
@@ -171,8 +172,8 @@
     <!-- 根据乐团id获取单技班信息 -->
     <select id="findAllNormalClassGroupByMusicGroupId" resultMap="ClassGroup">
         SELECT
-        cg.*,
-        (SELECT group_concat(sb.name_) FROM subject sb WHERE FIND_IN_SET(sb.id_,cg.subject_id_list_)) AS subject_name
+        cg.*, (SELECT group_concat(sb.name_) FROM subject sb WHERE FIND_IN_SET(sb.id_,cg.subject_id_list_)) AS
+        subject_name_
         FROM
         class_group cg
         WHERE cg.music_group_id_=#{musicGroupId} AND cg.type_='NORMAL' AND cg.del_flag_='0'
@@ -259,7 +260,11 @@
     </resultMap>
     <!-- 根据乐团id获取乐团下所有班级 -->
     <select id="findClassGroupByMusicGroupId" resultMap="ClassGroupTeachers">
-        SELECT * FROM class_group WHERE music_group_id_ = #{musicGroupId} AND del_flag_ = 0;
+        SELECT * FROM class_group WHERE music_group_id_ = #{musicGroupId}
+        <if test="type !=null and type !=''">
+        AND FIND_IN_SET(type_,#{type})
+        </if>
+        AND del_flag_ = 0;
     </select>
 
     <resultMap type="com.ym.mec.biz.dal.dto.CourseListDto" id="CourseListDto">
@@ -274,26 +279,28 @@
     </resultMap>
     <select id="queryCoursePage" resultMap="CourseListDto">
         SELECT * FROM (
-            SELECT cg.type_,s.address_,mg.name_ music_group_name_,
-            cg.total_class_times_,cg.current_class_times_,'' single_class_minutes_,mg.id_ music_group_id_,cg.create_time_,cs.teach_mode_
-            FROM student_registration sr
-            LEFT JOIN class_group cg ON cg.id_ = sr.class_group_id_
-            LEFT JOIN course_schedule cs ON cs.class_group_id_ = cg.id_
-            LEFT JOIN music_group mg ON cg.music_group_id_ = mg.id_
-            LEFT JOIN school s ON mg.school_id_ = s.id_
-            WHERE sr.user_id_ = #{search} AND cg.type_ != 'VIP'
-            UNION ALL
-            SELECT cg.type_,ts.address_,vg.name_ music_group_name_,
-            cg.total_class_times_,cg.current_class_times_,vg.single_class_minutes_,vg.id_ music_group_id_,cg.create_time_,cs.teach_mode_
-            FROM class_group_student_mapper cgsm
-            LEFT JOIN class_group cg ON cgsm.class_group_id_ = cg.id_
-            LEFT JOIN course_schedule cs ON cs.class_group_id_ = cg.id_
-            LEFT JOIN vip_group_class_group_mapper vgcgm ON vgcgm.class_group_id_ = cgsm.class_group_id_
-            LEFT JOIN vip_group vg ON vg.id_ = vgcgm.vip_group_id_
-            LEFT JOIN teacher_school ts ON vg.teacher_school_id_ = ts.id_
-            WHERE cgsm.user_id_ = #{search} AND cg.type_ = 'VIP') a
-            ORDER BY a.create_time_ DESC
-            <include refid="global.limit"/>
+        SELECT cg.type_,s.address_,mg.name_ music_group_name_,
+        cg.total_class_times_,cg.current_class_times_,'' single_class_minutes_,mg.id_
+        music_group_id_,cg.create_time_,cs.teach_mode_
+        FROM student_registration sr
+        LEFT JOIN class_group cg ON cg.id_ = sr.class_group_id_
+        LEFT JOIN course_schedule cs ON cs.class_group_id_ = cg.id_
+        LEFT JOIN music_group mg ON cg.music_group_id_ = mg.id_
+        LEFT JOIN school s ON mg.school_id_ = s.id_
+        WHERE sr.user_id_ = #{search} AND cg.type_ != 'VIP'
+        UNION ALL
+        SELECT cg.type_,ts.address_,vg.name_ music_group_name_,
+        cg.total_class_times_,cg.current_class_times_,vg.single_class_minutes_,vg.id_
+        music_group_id_,cg.create_time_,cs.teach_mode_
+        FROM class_group_student_mapper cgsm
+        LEFT JOIN class_group cg ON cgsm.class_group_id_ = cg.id_
+        LEFT JOIN course_schedule cs ON cs.class_group_id_ = cg.id_
+        LEFT JOIN vip_group_class_group_mapper vgcgm ON vgcgm.class_group_id_ = cgsm.class_group_id_
+        LEFT JOIN vip_group vg ON vg.id_ = vgcgm.vip_group_id_
+        LEFT JOIN teacher_school ts ON vg.teacher_school_id_ = ts.id_
+        WHERE cgsm.user_id_ = #{search} AND cg.type_ = 'VIP') a
+        ORDER BY a.create_time_ DESC
+        <include refid="global.limit"/>
     </select>
 
     <resultMap id="imGroupModel" type="com.ym.mec.common.entity.ImGroupModel">
@@ -372,22 +379,24 @@
     </select>
     <select id="countCoursePage" resultType="java.lang.Integer">
         SELECT COUNT(id_) FROM (
-            SELECT cg.type_,s.address_,mg.name_ music_group_name_,
-            cg.total_class_times_,cg.current_class_times_,'' single_class_minutes_,mg.id_ music_group_id_,cg.create_time_,cg.id_
-            FROM student_registration sr
-            LEFT JOIN class_group cg ON cg.id_ = sr.class_group_id_
-            LEFT JOIN music_group mg ON cg.music_group_id_ = mg.id_
-            LEFT JOIN school s ON mg.school_id_ = s.id_
-            WHERE sr.user_id_ = #{search} AND cg.type_ != 'VIP'
-            UNION ALL
-            SELECT cg.type_,ts.address_,vg.name_ music_group_name_,
-            cg.total_class_times_,cg.current_class_times_,vg.single_class_minutes_,vg.id_ music_group_id_,cg.create_time_,cg.id_
-            FROM class_group_student_mapper cgsm
-            LEFT JOIN class_group cg ON cgsm.class_group_id_ = cg.id_
-            LEFT JOIN vip_group_class_group_mapper vgcgm ON vgcgm.class_group_id_ = cgsm.class_group_id_
-            LEFT JOIN vip_group vg ON vg.id_ = vgcgm.vip_group_id_
-            LEFT JOIN teacher_school ts ON vg.teacher_school_id_ = ts.id_
-            WHERE cgsm.user_id_ = #{search} AND cg.type_ = 'VIP') a
+        SELECT cg.type_,s.address_,mg.name_ music_group_name_,
+        cg.total_class_times_,cg.current_class_times_,'' single_class_minutes_,mg.id_
+        music_group_id_,cg.create_time_,cg.id_
+        FROM student_registration sr
+        LEFT JOIN class_group cg ON cg.id_ = sr.class_group_id_
+        LEFT JOIN music_group mg ON cg.music_group_id_ = mg.id_
+        LEFT JOIN school s ON mg.school_id_ = s.id_
+        WHERE sr.user_id_ = #{search} AND cg.type_ != 'VIP'
+        UNION ALL
+        SELECT cg.type_,ts.address_,vg.name_ music_group_name_,
+        cg.total_class_times_,cg.current_class_times_,vg.single_class_minutes_,vg.id_
+        music_group_id_,cg.create_time_,cg.id_
+        FROM class_group_student_mapper cgsm
+        LEFT JOIN class_group cg ON cgsm.class_group_id_ = cg.id_
+        LEFT JOIN vip_group_class_group_mapper vgcgm ON vgcgm.class_group_id_ = cgsm.class_group_id_
+        LEFT JOIN vip_group vg ON vg.id_ = vgcgm.vip_group_id_
+        LEFT JOIN teacher_school ts ON vg.teacher_school_id_ = ts.id_
+        WHERE cgsm.user_id_ = #{search} AND cg.type_ = 'VIP') a
     </select>
 
     <select id="countClassStudent" resultType="int">
@@ -417,7 +426,7 @@
         (SELECT cgr.sub_class_group_id_ FROM class_group_relation cgr
         LEFT JOIN class_group cg ON cg.id_ = cgr.class_group_id_
         WHERE cg.music_group_id_ = #{musicGroupId})
-        AND cg.music_group_id_ = #{musicGroupId}
+        AND cg.music_group_id_ = #{musicGroupId} AND type_ = 'NORMAL'
     </select>
     <select id="findByVipGroup" resultMap="ClassGroup">
         SELECT
@@ -438,6 +447,7 @@
 
     <!-- 增加实际学生人数 -->
     <update id="addStudentNum" parameterType="com.ym.mec.biz.dal.entity.ClassGroup">
-        UPDATE class_group SET student_num_ = student_num_+1,update_time_=#{updateTime} WHERE id_ = #{id} AND student_num_=#{studentNum}
+        UPDATE class_group SET student_num_ = student_num_+1,update_time_=#{updateTime} WHERE id_ = #{id} AND
+        student_num_=#{studentNum}
     </update>
 </mapper>

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

@@ -55,6 +55,9 @@
     <delete id="delete">
         DELETE FROM class_group_relation WHERE id_ = #{id}
     </delete>
+    <delete id="deleteByClassId">
+        DELETE FROM class_group_relation WHERE class_group_id_ = #{classGroupId}
+    </delete>
 
     <!-- 分页查询 -->
     <select id="queryPage" resultMap="ClassGroupRelation" parameterType="map">
@@ -70,9 +73,9 @@
 
     <!-- 班级关系批量插入 -->
     <insert id="classGroupRelationsInsert" parameterType="java.util.List">
-        INSERT INTO class_group_relation (id_,class_group_id_,sub_class_group_id_,create_time_)
+        INSERT INTO class_group_relation (class_group_id_,sub_class_group_id_,create_time_) VALUES
         <foreach collection="classGroupRelationList" item="item" index="index" separator=",">
-            (#{item.id},#{item.classGroupId},#{item.subClassGroupId},#{item.createTime})
+            (#{item.classGroupId},#{item.subClassGroupId},now())
         </foreach>
     </insert>
 </mapper>

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

@@ -52,6 +52,9 @@
     <delete id="delete">
 		DELETE FROM class_group_student_mapper WHERE id_ = #{id} 
 	</delete>
+    <delete id="deleteByClassId">
+        DELETE FROM class_group_student_mapper WHERE class_group_id_ = #{classGroupId}
+    </delete>
 
     <!-- 分页查询 -->
     <select id="queryPage" resultMap="ClassGroupStudentMapper" parameterType="map">
@@ -66,9 +69,10 @@
 
     <!-- 班级学生批量插入 -->
     <insert id="classGroupStudentsInsert" parameterType="java.util.List">
-        INSERT INTO class_group_student_mapper (id_,class_group_id_,user_id_,status_,create_time_)
+        INSERT INTO class_group_student_mapper (class_group_id_,user_id_,status_,create_time_)
+        VALUES
         <foreach collection="classGroupStudentMapperList" item="item" index="index" separator=",">
-            (#{item.id},#{item.classGroupId},#{item.userId},#{item.status},#{item.createTime})
+            (#{item.classGroupId},#{item.userId},#{item.status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},now())
         </foreach>
     </insert>
     

+ 9 - 0
mec-biz/src/main/resources/config/mybatis/ClassGroupTeacherMapperMapper.xml

@@ -94,6 +94,7 @@
     <insert id="classGroupTeachersInsert" parameterType="java.util.List">
         INSERT INTO class_group_teacher_mapper
         (id_,music_group_id_,class_group_id_,teacher_role_,user_id_,salary_,create_time_,update_time_)
+        VALUES
         <foreach collection="classGroupTeacherMapperList" item="item" index="index" separator=",">
             (#{item.id},#{item.musicGroupId},#{item.classGroupId},#{item.teacherRole},#{item.userId},#{item.salary},#{item.createTime},#{item.updateTime})
         </foreach>
@@ -109,4 +110,12 @@
             #{item.id}
         </foreach>
     </select>
+
+    <!-- 删除对应乐团老师关联关系 -->
+    <delete id="delMusicGroupTeacherMapper">
+        DELETE FROM class_group_teacher_mapper WHERE class_group_id_ IN
+        <foreach collection="classGroupTeacherMapperList" item="item" index="index" open="(" close=")" separator=",">
+            #{item.classGroupId}
+        </foreach>
+    </delete>
 </mapper>

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

@@ -12,6 +12,7 @@
         <result column="job_" property="job"/>
         <result column="mobile_no_" property="mobileNo"/>
         <result column="address_" property="address"/>
+        <result column="ownership_type_" property="ownershipType" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="create_time_" property="createTime"/>
         <result column="update_time_" property="updateTime"/>
     </resultMap>
@@ -34,8 +35,8 @@
         <!-- <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_)
-        VALUES(#{id},#{name},#{linkman},#{job},#{mobileNo},#{address},#{organId},now(),now())
+        (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})
     </insert>
 
     <!-- 根据主键查询一条记录 -->
@@ -60,6 +61,9 @@
             <if test="name != null">
                 name_ = #{name},
             </if>
+            <if test="ownershipType != null">
+                ownership_type_ = #{ownershipType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+            </if>
             <if test="organId != null">
                 organ_id_ = #{organId},
             </if>

+ 15 - 6
mec-biz/src/main/resources/config/mybatis/GoodsCategoryMapper.xml

@@ -16,6 +16,10 @@
         <result column="desc_" property="desc"/>
         <result column="update_time_" property="updateTime"/>
         <result column="create_time_" property="createTime"/>
+        <collection property="subjects" ofType="com.ym.mec.biz.dal.entity.Subject">
+            <result property="id" column="subject_id_"/>
+            <result property="name" column="subject_name_"/>
+        </collection>
     </resultMap>
 
     <!-- 根据主键查询一条记录 -->
@@ -66,30 +70,35 @@
 
     <!-- 根据主键删除一条记录 -->
     <delete id="delete">
-		DELETE FROM goods_category WHERE id_ = #{id} 
+		UPDATE goods_category SET del_flag_ = 1 WHERE id_ = #{id}
 	</delete>
 
     <!-- 分页查询 -->
     <select id="queryPage" resultMap="GoodsCategory" parameterType="map">
-        SELECT gc.* FROM goods_category gc
+        SELECT gc.*,s.id_ subject_id_,s.name_ subject_name_
+        FROM (
+        SELECT * FROM goods_category
         <include refid="queryPageSql"/>
-        ORDER BY id_
         <include refid="global.limit"/>
+        ) gc
+        LEFT JOIN subject_goods_mapper sgm ON sgm.goods_category_id_ = gc.id_
+        LEFT JOIN `subject` s ON s.id_ = sgm.subject_id_
     </select>
+
     <sql id="queryPageSql">
         <where>
             <if test="parentId != null">
-                gc.parent_id_ = #{parentId}
+                parent_id_ = #{parentId}
             </if>
             <if test="delFlag != null">
-                AND gc.del_flag_ = #{delFlag,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+                AND del_flag_ = #{delFlag,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
             </if>
         </where>
     </sql>
 
     <!-- 查询当前表的总记录数 -->
     <select id="queryCount" resultType="int">
-		SELECT COUNT(*) FROM goods_category gc
+		SELECT COUNT(id_) FROM goods_category
         <include refid="queryPageSql"/>
 	</select>
 

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

@@ -9,6 +9,7 @@
     <resultMap type="com.ym.mec.biz.dal.entity.Goods" id="Goods">
         <result column="id_" property="id"/>
         <result column="goods_category_id_" property="goodsCategoryId"/>
+        <result column="goods_category_name_" property="goodsCategoryName"/>
         <result column="sn_" property="sn"/>
         <result column="name_" property="name"/>
         <result column="brand_" property="brand"/>
@@ -29,6 +30,7 @@
         <result column="create_time_" property="createTime"/>
         <result column="update_time_" property="updateTime"/>
         <result column="complement_goods_id_list_" property="complementGoodsIdList"/>
+        <result column="type_" property="type" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
     </resultMap>
 
     <!-- 根据主键查询一条记录 -->
@@ -45,9 +47,10 @@
     <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.Goods" useGeneratedKeys="true" keyColumn="id"
             keyProperty="id">
         INSERT INTO goods
-        (id_,goods_category_id_,sn_,name_,brand_,specification_,image_,stock_count_,sell_count_,market_price_,discount_price_,group_purchase_price_,brief_,desc_,is_new_,is_top_,status_,memo_,publish_time_,complement_goods_id_list_,update_time_,create_time_)
-        VALUES(#{id},#{goodsCategoryId},#{sn},#{name},#{brand},#{specification},#{image},#{stockCount},#{sellCount},#{marketPrice},#{discountPrice},#{groupPurchasePrice},#{brief},#{desc},
-        #{isNew,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{isTop,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{memo},#{publishTime},#{complementGoodsIdList},now(),now())
+        (goods_category_id_,sn_,name_,brand_,specification_,image_,stock_count_,sell_count_,market_price_,discount_price_,group_purchase_price_,brief_,desc_,is_new_,is_top_,status_,memo_,publish_time_,complement_goods_id_list_,update_time_,create_time_,type_)
+        VALUES(#{goodsCategoryId},#{sn},#{name},#{brand},#{specification},#{image},#{stockCount},#{sellCount},#{marketPrice},#{discountPrice},#{groupPurchasePrice},#{brief},#{desc},
+        #{isNew,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{isTop,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+        #{memo},#{publishTime},#{complementGoodsIdList},now(),now(),#{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler})
     </insert>
 
     <!-- 根据主键查询一条记录 -->
@@ -63,6 +66,9 @@
             <if test="isTop != null">
                 is_top_ = #{isTop,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
             </if>
+            <if test="type != null">
+                type_ = #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+            </if>
             <if test="sn != null">
                 sn_ = #{sn},
             </if>
@@ -125,7 +131,8 @@
 
     <!-- 分页查询 -->
     <select id="queryPage" resultMap="Goods" parameterType="map">
-        SELECT * FROM goods ORDER BY id_
+        SELECT g.*,gc.name_ goods_category_name_ FROM goods g
+        LEFT JOIN goods_category gc ON g.goods_category_id_ = gc.id_ ORDER BY g.id_
         <include refid="global.limit"/>
     </select>
 
@@ -137,7 +144,7 @@
     <select id="findGoodsBySubId" resultMap="Goods">
         SELECT g.* FROM subject_goods_mapper sgm
         LEFT JOIN goods g ON sgm.goods_category_id_ = g.goods_category_id_
-        WHERE sgm.subject_id_ = #{subjectId} AND sgm.type_ = #{type}
+        WHERE sgm.subject_id_ = #{subjectId} AND g.type_ = #{type}
     </select>
 
     <!-- 根据 -->

+ 60 - 50
mec-biz/src/main/resources/config/mybatis/MusicGroupQuitMapper.xml

@@ -1,12 +1,10 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<!--
-这个文件是自动生成的。
-不要修改此文件。所有改动将在下次重新自动生成时丢失。
--->
+<!-- 这个文件是自动生成的。 不要修改此文件。所有改动将在下次重新自动生成时丢失。 -->
 <mapper namespace="com.ym.mec.biz.dal.dao.MusicGroupQuitDao">
-	
-	<resultMap type="com.ym.mec.biz.dal.entity.MusicGroupQuit" id="MusicGroupQuit">
+
+	<resultMap type="com.ym.mec.biz.dal.entity.MusicGroupQuit"
+		id="MusicGroupQuit">
 		<result column="id_" property="id" />
 		<result column="user_id_" property="userId" />
 		<result column="music_group_id_" property="musicGroupId" />
@@ -14,67 +12,79 @@
 		<result column="quit_date_" property="quitDate" />
 		<result column="create_time_" property="createTime" />
 		<result column="reason_" property="reason" />
+		<result column="status_" property="status"
+			typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler" />
 	</resultMap>
-	
+
 	<!-- 根据主键查询一条记录 -->
-	<select id="get" resultMap="MusicGroupQuit" >
-		SELECT * FROM music_group_quit WHERE id_ = #{id} 
+	<select id="get" resultMap="MusicGroupQuit">
+		SELECT * FROM
+		music_group_quit WHERE id_ = #{id}
 	</select>
-	
+
 	<!-- 全查询 -->
 	<select id="findAll" resultMap="MusicGroupQuit">
-		SELECT * FROM music_group_quit ORDER BY id_
+		SELECT * FROM music_group_quit
+		ORDER BY id_
 	</select>
-	
+
 	<!-- 向数据库增加一条记录 -->
-	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.MusicGroupQuit" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-		<!--
-		<selectKey resultClass="int" keyProperty="id" > 
-		SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL 
-		</selectKey>
-		-->
-		INSERT INTO music_group_quit (id_,user_id_,music_group_id_,join_date_,quit_date_,create_time_,reason_) VALUES(#{id},#{userId},#{musicGroupId},#{joinDate},#{quitDate},#{createTime},#{reason})
+	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.MusicGroupQuit"
+		useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+		<!-- <selectKey resultClass="int" keyProperty="id" > SELECT SEQ_WSDEFINITION_ID.nextval 
+			AS ID FROM DUAL </selectKey> -->
+		INSERT INTO music_group_quit
+		(id_,user_id_,music_group_id_,join_date_,quit_date_,create_time_,reason_,status_)
+		VALUES(#{id},#{userId},#{musicGroupId},#{joinDate},#{quitDate},#{createTime},#{reason},#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler})
 	</insert>
-	
+
 	<!-- 根据主键查询一条记录 -->
 	<update id="update" parameterType="com.ym.mec.biz.dal.entity.MusicGroupQuit">
-		UPDATE music_group_quit <set>
-<if test="userId != null">
-user_id_ = #{userId},
-</if>
-<if test="id != null">
-id_ = #{id},
-</if>
-<if test="joinDate != null">
-join_date_ = #{joinDate},
-</if>
-<if test="reason != null">
-reason_ = #{reason},
-</if>
-<if test="quitDate != null">
-quit_date_ = #{quitDate},
-</if>
-<if test="musicGroupId != null">
-music_group_id_ = #{musicGroupId},
-</if>
-<if test="createTime != null">
-create_time_ = #{createTime},
-</if>
-</set> WHERE id_ = #{id} 
+		UPDATE music_group_quit
+		<set>
+			<if test="userId != null">
+				user_id_ = #{userId},
+			</if>
+			<if test="id != null">
+				id_ = #{id},
+			</if>
+			<if test="joinDate != null">
+				join_date_ = #{joinDate},
+			</if>
+			<if test="reason != null">
+				reason_ = #{reason},
+			</if>
+			<if test="quitDate != null">
+				quit_date_ = #{quitDate},
+			</if>
+			<if test="musicGroupId != null">
+				music_group_id_ = #{musicGroupId},
+			</if>
+			<if test="createTime != null">
+				create_time_ = #{createTime},
+			</if>
+			<if test="status != null">
+				status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+			</if>
+		</set>
+		WHERE id_ = #{id}
 	</update>
-	
+
 	<!-- 根据主键删除一条记录 -->
-	<delete id="delete" >
-		DELETE FROM music_group_quit WHERE id_ = #{id} 
+	<delete id="delete">
+		DELETE FROM music_group_quit WHERE id_ =
+		#{id}
 	</delete>
-	
+
 	<!-- 分页查询 -->
 	<select id="queryPage" resultMap="MusicGroupQuit" parameterType="map">
-		SELECT * FROM music_group_quit ORDER BY id_ <include refid="global.limit"/>
+		SELECT * FROM music_group_quit ORDER BY id_
+		<include refid="global.limit" />
 	</select>
-	
+
 	<!-- 查询当前表的总记录数 -->
 	<select id="queryCount" resultType="int">
-		SELECT COUNT(*) FROM music_group_quit
+		SELECT COUNT(*) FROM
+		music_group_quit
 	</select>
 </mapper>

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

@@ -110,4 +110,47 @@
     <update id="updateNextPaymentDate" parameterType="map">
         update music_group_student_fee_ set next_payment_date_ = #{nextPaymentDate},update_time_ = now() WHERE music_group_id_ = #{musicGroupId}
     </update>
+
+    <select id="queryWillRenewList" resultMap="MusicGroupStudentFee">
+        SELECT * FROM music_group_student_fee_ WHERE payment_status_ = 'PAID_COMPLETED' and date_add(now(), interval #{days} day) >= next_payment_date_
+    </select>
+    
+    <update id="batchUpdate" parameterType="java.util.List">
+    	<foreach collection="list" item="item" index="index" open="" close="" separator=";">
+        UPDATE music_group_student_fee_
+        <set>
+            <if test="item.userId != null">
+                user_id_ = #{item.userId},
+            </if>
+            <if test="item.subjectId != null">
+                subject_id_ = #{item.subjectId},
+            </if>
+            <if test="item.updateTime != null">
+                update_time_ = #{item.updateTime},
+            </if>
+            <if test="item.courseFee != null">
+                course_fee_ = #{item.courseFee},
+            </if>
+            <if test="item.musicGroupId != null">
+                music_group_id_ = #{item.musicGroupId},
+            </if>
+            <if test="item.nextPaymentDate != null">
+                next_payment_date_ = #{item.nextPaymentDate},
+            </if>
+            <if test="item.latestPaidTime != null">
+                latest_paid_time_ = #{item.latestPaidTime},
+            </if>
+            <if test="item.continuousAbsenteeismTimes != null">
+                continuous_absenteeism_times_ = #{item.continuousAbsenteeismTimes},
+            </if>
+            <if test="item.paymentStatus != null">
+                payment_status_ = #{item.paymentStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+            </if>
+            <if test="item.temporaryCourseFee != null">
+                temporary_course_fee_ = #{item.temporaryCourseFee},
+            </if>
+        </set>
+        WHERE id_ = #{id}
+        </foreach>
+    </update>
 </mapper>

+ 31 - 28
mec-biz/src/main/resources/config/mybatis/StudentManageDao.xml

@@ -4,11 +4,10 @@
 
     <resultMap id="studentManageListDto" type="com.ym.mec.biz.dal.dto.StudentManageListDto">
         <result property="userId" column="user_id_"/>
-        <result property="userName" column="username_"/>
-        <result property="phone" column="phone_"/>
+        <result property="realName" column="real_name_"/>
+        <result property="parentsPhone" column="parents_phone_"/>
         <result property="gender" column="gender_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
-        <result property="schoolId" column="school_id_"/>
-        <result property="schoolName" column="school_name_"/>
+        <result property="parentsName" column="school_id_"/>
     </resultMap>
 
     <resultMap id="musicGroup" type="com.ym.mec.biz.dal.dto.StudentManageBaseInfoOfMusicGroupDto">
@@ -68,34 +67,38 @@
     </sql>
 
     <select id="findStudentsByOrganId" resultMap="studentManageListDto">
-        SELECT
-            DISTINCT su.id_ user_id_,
-            su.username_,
-            su.gender_,
-            su.phone_,
-            s.id_ school_id_,
-            s.name_ school_name_
-        FROM
-            school s
-        LEFT JOIN music_group mg ON s.id_=mg.school_id_
-        LEFT JOIN class_group cg ON mg.id_=cg.music_group_id_
-        LEFT JOIN class_group_student_mapper cgsm ON cg.id_=cgsm.class_group_id_
-        LEFT JOIN sys_user su ON cgsm.user_id_=su.id_
-        <include refid="queryCondition"/>
-        ORDER BY su.id_
+        SELECT sr.user_id_,su.real_name_,su.gender_,sr.parents_name_,sr.parents_phone_
+        FROM student_registration sr
+        LEFT JOIN sys_user su ON sr.user_id_ = su.id_
+        WHERE sr.user_id_ IN (
+          (SELECT MAX(user_id_) user_id_ FROM student_registration
+            <where>
+                <if test="search != null and search != ''">
+                    parents_name_ LIKE CONCAT('%',#{search},'%') OR parents_phone_ LIKE CONCAT('%',#{search},'%')
+                </if>
+            </where>
+           GROUP BY parents_phone_))
+        <if test="organId != null">
+            AND su.organ_id_=#{organId}
+        </if>
         <include refid="global.limit"/>
     </select>
 
     <select id="countStudentByOrganId" resultType="java.lang.Integer">
-        SELECT
-            COUNT(DISTINCT su.id_)
-        FROM
-            school s
-        LEFT JOIN music_group mg ON s.id_=mg.school_id_
-        LEFT JOIN class_group cg ON mg.id_=cg.music_group_id_
-        LEFT JOIN class_group_student_mapper cgsm ON cg.id_=cgsm.class_group_id_
-        LEFT JOIN sys_user su ON cgsm.user_id_=su.id_
-        <include refid="queryCondition"/>
+        SELECT COUNT(DISTINCT sr.user_id_)
+        FROM student_registration sr
+        LEFT JOIN sys_user su ON sr.user_id_ = su.id_
+        WHERE sr.user_id_ IN (
+        (SELECT MAX(user_id_) user_id_ FROM student_registration
+        <where>
+            <if test="search != null and search != ''">
+                parents_name_ LIKE CONCAT('%',#{search},'%') OR parents_phone_ LIKE CONCAT('%',#{search},'%')
+            </if>
+        </where>
+        GROUP BY parents_phone_))
+        <if test="organId != null">
+            AND su.organ_id_=#{organId}
+        </if>
     </select>
     <select id="findStudentBaseInfoByUserID" resultMap="studentManageBaseInfo">
       SELECT

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

@@ -231,7 +231,10 @@
         SELECT DISTINCT cgsm.user_id_ FROM class_group_student_mapper cgsm
         LEFT JOIN class_group cg ON cg.id_ =  cgsm.class_group_id_
         WHERE cg.music_group_id_ = #{musicGroupId})
-        AND sr.music_group_id_ = #{musicGroupId} AND FIND_IN_SET(sr.actual_subject_id_,#{actualSubjectId})
+        AND sr.music_group_id_ = #{musicGroupId}
+        <if test="actualSubjectId != null">
+            AND FIND_IN_SET(sr.actual_subject_id_,#{actualSubjectId})
+        </if>
     </select>
 
     <!-- 根据乐团和声部获取未分班人数 -->
@@ -245,7 +248,7 @@
     </select>
 
     <update id="updateByUserIdAndMusicGroupId" parameterType="com.ym.mec.biz.dal.entity.StudentRegistration">
-        UPDATE student_registration SET class_group_id_ = #{classGroupId} WHERE user_id_ = #{userId} AND music_group_id_ = #{musicGroupId}
+        UPDATE student_registration SET class_group_id_ = #{studentRegistration.classGroupId} WHERE user_id_ = #{studentRegistration.userId} AND music_group_id_ = #{studentRegistration.musicGroupId}
     </update>
     
     <select id="queryStudentInfo" resultMap="StudentInfo">

+ 22 - 24
mec-biz/src/main/resources/config/mybatis/SubjectGoodsMapperMapper.xml

@@ -8,54 +8,48 @@
 
     <resultMap type="com.ym.mec.biz.dal.entity.SubjectGoodsMapper" id="SubjectGoodsMapper">
         <result column="id_" property="id"/>
-        <result column="organ_id_" property="organId"/>
         <result column="subject_id_" property="subjectId"/>
-        <result column="type_" property="type" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler" />
-        <result column="goods_id_" property="goodsId"/>
+        <result column="goods_category_id_" property="goodsCategoryId"/>
         <result column="create_time_" property="createTime"/>
         <result column="update_time_" property="updateTime"/>
     </resultMap>
 
     <!-- 根据主键查询一条记录 -->
     <select id="get" resultMap="SubjectGoodsMapper">
-		SELECT * FROM subject_plan_goods_mapper WHERE id_ = #{id} 
+		SELECT * FROM subject_goods_mapper WHERE id_ = #{id}
 	</select>
 
     <!-- 全查询 -->
     <select id="findAll" resultMap="SubjectGoodsMapper">
-		SELECT * FROM subject_plan_goods_mapper ORDER BY id_
+		SELECT * FROM subject_goods_mapper ORDER BY id_
 	</select>
 
     <!-- 向数据库增加一条记录 -->
     <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.SubjectGoodsMapper" useGeneratedKeys="true"
             keyColumn="id" keyProperty="id">
-        <!--
-        <selectKey resultClass="int" keyProperty="id" >
-        SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL
-        </selectKey>
-        -->
-        INSERT INTO subject_plan_goods_mapper (id_,organ_id_,subject_id_,goods_id_,type_,create_time_,update_time_)
-        VALUES(#{id},#{organId},#{subjectId},#{goodsId},#{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},now(),now())
+        INSERT INTO subject_goods_mapper (subject_id_,goods_category_id_,create_time_,update_time_)
+        VALUES(#{subjectId},#{goodsCategoryId},now(),now())
+    </insert>
+    <insert id="batchAdd">
+        INSERT INTO subject_goods_mapper (subject_id_,goods_category_id_,create_time_,update_time_)
+        VALUES
+        <foreach collection="subjectIds" item="item" index="index" separator=",">
+            (#{item},#{goodsCategoryId},now(),now())
+        </foreach>
     </insert>
 
     <!-- 根据主键查询一条记录 -->
     <update id="update" parameterType="com.ym.mec.biz.dal.entity.SubjectGoodsMapper">
-        UPDATE subject_plan_goods_mapper
+        UPDATE subject_goods_mapper
         <set>
             <if test="subjectId != null">
                 subject_id_ = #{subjectId},
             </if>
-            <if test="organId != null">
-                organ_id_ = #{organId},
-            </if>
-            <if test="type != null">
-                type_ = #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
-            </if>
             <if test="updateTime != null">
                 update_time_ = #{updateTime},
             </if>
-            <if test="goodsId != null">
-                goods_id_ = #{goodsId},
+            <if test="goodsCategoryId != null">
+                goods_category_id_ = #{goodsCategoryId},
             </if>
         </set>
         WHERE id_ = #{id}
@@ -63,17 +57,21 @@
 
     <!-- 根据主键删除一条记录 -->
     <delete id="delete">
-		DELETE FROM subject_plan_goods_mapper WHERE id_ = #{id} 
+		DELETE FROM subject_goods_mapper WHERE id_ = #{id}
 	</delete>
 
+    <delete id="delByGoodsCategoryId">
+        DELETE FROM subject_goods_mapper WHERE goods_category_id_ = #{goodsCategoryId}
+    </delete>
+
     <!-- 分页查询 -->
     <select id="queryPage" resultMap="SubjectGoodsMapper" parameterType="map">
-        SELECT * FROM subject_plan_goods_mapper ORDER BY id_
+        SELECT * FROM subject_goods_mapper ORDER BY id_
         <include refid="global.limit"/>
     </select>
 
     <!-- 查询当前表的总记录数 -->
     <select id="queryCount" resultType="int">
-		SELECT COUNT(*) FROM subject_plan_goods_mapper
+		SELECT COUNT(*) FROM subject_goods_mapper
 	</select>
 </mapper>

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

@@ -12,7 +12,8 @@
         <result column="organ_name_" property="organName"/>
         <result column="job_type_" property="jobType"/>
         <result column="job_nature_" property="jobNature"/>
-        <result column="is_probation_period_" property="isProbationPeriod" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="is_probation_period_" property="isProbationPeriod"
+                typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="education_background_" property="educationBackground"/>
         <result column="graduate_school_" property="graduateSchool"/>
         <result column="technical_titles_" property="technicalTitles"/>
@@ -29,6 +30,7 @@
 
         <result column="username_" property="username"/>
         <result column="password_" property="password"/>
+        <result column="real_name_" property="realName"/>
         <result column="salt_" property="salt"/>
         <result column="phone_" property="phone"/>
         <result column="avatar_" property="avatar"/>
@@ -47,19 +49,21 @@
 
     <!-- 根据主键查询一条记录 -->
     <select id="get" resultMap="Teacher">
-		SELECT t.*,su.username_,su.password_,su.salt_,su.phone_,su.avatar_,
+        SELECT t.*,su.username_,su.password_,su.salt_,su.phone_,su.avatar_,
         su.lock_flag_,su.del_flag_,su.wx_openid_,su.qq_openid_,su.user_type_,
         su.gender_,su.nation_,su.birthdate_,su.email_,su.im_token_,t.subject_id_,t.organ_id_,o.name_ organ_name_
         FROM teacher t
         LEFT JOIN sys_user su ON t.id_ = su.id_
         LEFT JOIN organization o ON t.organ_id_ = o.id_
         WHERE t.id_ = #{userId} AND o.del_flag_ = 0
-	</select>
+    </select>
 
     <!-- 全查询 -->
     <select id="findAll" resultMap="Teacher">
-		SELECT * FROM teacher ORDER BY user_id_
-	</select>
+        SELECT *
+        FROM teacher
+        ORDER BY user_id_
+    </select>
 
     <!-- 向数据库增加一条记录 -->
     <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.Teacher" useGeneratedKeys="true" keyColumn="id"
@@ -135,8 +139,8 @@
 
     <!-- 根据主键删除一条记录 -->
     <update id="delete">
-		DELETE FROM teacher WHERE user_id_ = #{userId}
-	</update>
+        DELETE FROM teacher WHERE user_id_ = #{userId}
+    </update>
 
     <update id="updateUser" parameterType="com.ym.mec.auth.api.entity.SysUser">
         UPDATE sys_user
@@ -197,7 +201,8 @@
     <select id="queryPage" resultMap="Teacher" parameterType="map">
         SELECT t.*,su.username_,su.password_,su.salt_,su.phone_,su.avatar_,
         su.lock_flag_,su.del_flag_,su.wx_openid_,su.qq_openid_,su.user_type_,
-        su.gender_,su.nation_,su.birthdate_,su.email_,su.im_token_,t.subject_id_,t.organ_id_,o.name_ organ_name_,s.name_ subject_name_
+        su.gender_,su.nation_,su.birthdate_,su.email_,su.im_token_,t.subject_id_,t.organ_id_,o.name_ organ_name_,s.name_
+        subject_name_
         FROM teacher t
         LEFT JOIN sys_user su ON t.id_ = su.id_
         LEFT JOIN organization o ON t.organ_id_ = o.id_
@@ -233,12 +238,12 @@
         LEFT JOIN `subject` s ON t.subject_id_ = s.id_
         LEFT JOIN organization o ON t.organ_id_ = o.id_
         <include refid="queryPageMap"/>
-	</select>
+    </select>
 
     <!-- 根据证件号查询老师 -->
     <select id="findByCertificateNum" resultMap="Teacher">
-		SELECT * FROM teacher WHERE certificate_num_ = #{certificateNum}
-	</select>
+        SELECT * FROM teacher WHERE certificate_num_ = #{certificateNum}
+    </select>
     <select id="queryGroupStudents" resultMap="com.ym.mec.biz.dal.dao.MusicGroupDao.BasicUserDto">
         SELECT su.username_,su.id_ user_id_,su.avatar_ head_url_,su.gender_,s.name_ FROM class_group_teacher_mapper cgtm
         LEFT JOIN class_group_student_mapper cgsm ON cgtm.class_group_id_ = cgsm.class_group_id_
@@ -256,4 +261,12 @@
             #{item}
         </foreach>
     </select>
+
+    <select id="findTeachers" resultMap="Teacher">
+        SELECT su.* FROM teacher t
+        LEFT JOIN sys_user su on t.id_ = su.id_ WHERE 1=1
+        <if test="organId != null and organId !=0">
+            AND t.organ_id_ = #{organId}
+        </if>
+    </select>
 </mapper>

+ 15 - 0
mec-client-api/src/main/java/com/ym/mec/task/TaskRemoteService.java

@@ -0,0 +1,15 @@
+package com.ym.mec.task;
+
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+
+import com.ym.mec.common.config.FeignConfiguration;
+import com.ym.mec.task.fallback.TaskRemoteServiceFallback;
+
+@FeignClient(name = "web-server", configuration = { FeignConfiguration.class }, fallback = TaskRemoteServiceFallback.class)
+public interface TaskRemoteService {
+
+	@GetMapping(value = "task/refreshPaymentFeeStatus")
+	public void refreshPaymentFeeStatus();
+
+}

+ 19 - 0
mec-client-api/src/main/java/com/ym/mec/task/fallback/TaskRemoteServiceFallback.java

@@ -0,0 +1,19 @@
+package com.ym.mec.task.fallback;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+
+import com.ym.mec.task.TaskRemoteService;
+
+@Component
+public class TaskRemoteServiceFallback implements TaskRemoteService {
+
+	private final static Logger logger = LoggerFactory.getLogger(TaskRemoteServiceFallback.class);
+
+	@Override
+	public void refreshPaymentFeeStatus() {
+		logger.info("更新学生缴费状态的服务调用失败");
+	}
+
+}

+ 1 - 1
mec-common/common-core/src/main/java/com/ym/mec/common/service/impl/RedisIdGeneratorService.java

@@ -60,7 +60,7 @@ public class RedisIdGeneratorService implements IdGeneratorService {
 		try {
 			ValueOperations<String, Object> valueOper = redisTemplate.opsForValue();
 			Long index = valueOper.increment(key, 1);
-			orderId = prefix.concat(String.format("%1$03d", index)); // 补位操作 保证满足3位
+			orderId = prefix.concat(String.format("%1$05d", index)); // 补位操作 保证满足3位
 		} catch (Exception ex) {
 			log.error("分布式订单号生成失败异常。。。。。", ex);
 		} finally {

+ 1 - 1
mec-education/src/main/resources/mapper/StudentAttendanceMapper.xml

@@ -23,7 +23,7 @@
             resultType="com.ym.mec.education.resp.AttendClassResp">
 
      SELECT
-	s.music_group_id_,s.class_group_id_,s.user_id_,s.teacher_id_,s.current_class_times_,s.status_,g.name_,g.total_class_times_,g.type_,g.teach_mode_,u.real_name_,c.name_ as courseName,c.class_date_,c.start_class_time_,c.end_class_time_
+	s.music_group_id_,s.class_group_id_,s.user_id_,s.teacher_id_,s.current_class_times_,s.status_,g.name_,g.total_class_times_,g.type_,c.teach_mode_,u.real_name_,c.name_ as courseName,c.class_date_,c.start_class_time_,c.end_class_time_
     FROM
 	student_attendance s
     LEFT JOIN course_schedule c

+ 2 - 0
mec-eureka/src/main/resources/application.yml

@@ -4,6 +4,8 @@ server:
     contextPath: /eureka
 
 eureka:
+  server:
+    peer-eureka-status-refresh-time-interval-ms: 5000
   client:
     registerWithEureka: false
     fetchRegistry: false

+ 66 - 2
mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupController.java

@@ -1,7 +1,5 @@
 package com.ym.mec.student.controller;
 
-import com.ym.mec.biz.dal.entity.*;
-import com.ym.mec.biz.dal.enums.*;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
@@ -15,6 +13,7 @@ import javax.annotation.Resource;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
+import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -23,8 +22,22 @@ 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.dao.MusicGroupStudentFeeDao;
 import com.ym.mec.biz.dal.dto.MusicGroupSubjectGoodsAndInfoDto;
 import com.ym.mec.biz.dal.dto.RegisterPayDto;
+import com.ym.mec.biz.dal.entity.Goods;
+import com.ym.mec.biz.dal.entity.MusicGroup;
+import com.ym.mec.biz.dal.entity.MusicGroupStudentFee;
+import com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus;
+import com.ym.mec.biz.dal.entity.MusicGroupSubjectGoodsGroup;
+import com.ym.mec.biz.dal.entity.MusicGroupSubjectPlan;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
+import com.ym.mec.biz.dal.entity.StudentRegistration;
+import com.ym.mec.biz.dal.enums.DealStatusEnum;
+import com.ym.mec.biz.dal.enums.GoodsType;
+import com.ym.mec.biz.dal.enums.KitGroupPurchaseTypeEnum;
+import com.ym.mec.biz.dal.enums.MusicGroupStatusEnum;
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.service.GoodsService;
 import com.ym.mec.biz.service.MusicGroupService;
 import com.ym.mec.biz.service.MusicGroupSubjectGoodsGroupService;
@@ -34,6 +47,7 @@ import com.ym.mec.biz.service.StudentPaymentOrderService;
 import com.ym.mec.biz.service.StudentRegistrationService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.exception.BizException;
 import com.ym.mec.util.string.IdWorker;
 
 @RequestMapping("musicGroup")
@@ -57,6 +71,9 @@ public class MusicGroupController extends BaseController {
     private StudentPaymentOrderService studentPaymentOrderService;
     @Autowired
     private PayService payService;
+    
+    @Autowired
+    private MusicGroupStudentFeeDao musicGroupStudentFeeDao;
 
     @ApiOperation("获取学生所在乐团列表")
     @GetMapping(value = "/queryUserMusicGroups")
@@ -119,6 +136,53 @@ public class MusicGroupController extends BaseController {
         return succeed(studentRegistration);
     }
 
+    @ApiOperation(value = "查询续费信息")
+    @GetMapping("/queryRenewInfo")
+    @ApiImplicitParams({@ApiImplicitParam(name = "musicGroupId", value = "乐团id", required = true, dataType = "String")})
+	public HttpResponseResult queryRenewInfo(String musicGroupId) throws Exception {
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		Integer userId = sysUser.getId();
+		MusicGroup musicGroup = musicGroupService.get(musicGroupId);
+		if (musicGroup == null) {
+			return failed("乐团不存在");
+		}
+		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();
+		}
+		ModelMap model = new ModelMap();
+		model.put("musicGroup", musicGroup);
+		model.put("amount", amount);
+
+		return succeed(model);
+	}
+
+    @ApiOperation(value = "续费")
+    @GetMapping("/renew")
+    @ApiImplicitParams({@ApiImplicitParam(name = "musicGroupId", value = "乐团id", required = true, dataType = "String")})
+	public HttpResponseResult renew(String musicGroupId) throws Exception {
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		Integer userId = sysUser.getId();
+		return succeed(musicGroupService.renew(musicGroupId, userId));
+	}
+
+    @ApiOperation(value = "退团")
+    @GetMapping("/quitMusicGroup")
+    @ApiImplicitParams({@ApiImplicitParam(name = "musicGroupId", value = "乐团id", required = true, dataType = "String")})
+	public HttpResponseResult quitMusicGroup(String musicGroupId) throws Exception {
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		return succeed(musicGroupService.applyQuitMusicGroup(musicGroupId, sysUser));
+	}
+
 
     @ApiOperation(value = "乐团报名支付")
     @PostMapping("/pay")

+ 1 - 1
mec-task/pom.xml

@@ -62,7 +62,7 @@
         
         <dependency>
         	<groupId>com.ym</groupId>
-        	<artifactId>mec-auth-api</artifactId>
+        	<artifactId>mec-client-api</artifactId>
         </dependency>
 		
 	</dependencies>

+ 0 - 27
mec-task/src/main/java/com/ym/mec/task/config/WebMvcConfig.java

@@ -1,44 +1,17 @@
 package com.ym.mec.task.config;
 
-import java.io.IOException;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.time.LocalTime;
-import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
-import java.util.Date;
 import java.util.List;
 
 import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Primary;
 import org.springframework.format.FormatterRegistry;
 import org.springframework.http.MediaType;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 
-import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.DeserializationContext;
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.JsonDeserializer;
-import com.fasterxml.jackson.databind.JsonSerializer;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.SerializationFeature;
-import com.fasterxml.jackson.databind.SerializerProvider;
-import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
-import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
-import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
-import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer;
-import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
-import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
-import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;
 import com.ym.mec.common.config.EnumConverterFactory;
 import com.ym.mec.common.config.LocalFastJsonHttpMessageConverter;
-import com.ym.mec.common.enums.BaseEnum;
 
 @Configuration
 public class WebMvcConfig implements WebMvcConfigurer {

+ 6 - 7
mec-task/src/main/java/com/ym/mec/task/jobs/TestTask.java → mec-task/src/main/java/com/ym/mec/task/jobs/RefreshPaymentFeeStatusTask.java

@@ -3,23 +3,22 @@ package com.ym.mec.task.jobs;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.task.TaskRemoteService;
 import com.ym.mec.task.core.BaseTask;
 import com.ym.mec.task.core.TaskException;
 
 /**
- * 手动查询订单支付状态
+ * 刷新缴费状态
  */
 @Service
-public class TestTask extends BaseTask {
-	
+public class RefreshPaymentFeeStatusTask extends BaseTask {
+
 	@Autowired
-	private SysUserFeignService sysUserFeignService;
+	private TaskRemoteService taskRemoteService;
 
 	@Override
 	public void execute() throws TaskException {
-		System.out.println("**************** Test  Task ****************");
-		sysUserFeignService.test();
+		taskRemoteService.refreshPaymentFeeStatus();
 	}
 
 }

+ 17 - 0
mec-task/src/main/resources/application.yml

@@ -33,6 +33,23 @@ spring:
     testOnReturn: false
     poolPreparedStatements: true
     maxOpenPreparedStatements: 20
+    
+  redis:
+    host: 47.99.212.176
+    port: 6379
+    password: 
+    database: 0
+    #连接超时时间(毫秒)
+    timeout: 10000
+    pool:
+      #连接池最大连接数(使用负值表示没有限制)
+      max-active: 10
+      #连接池最大阻塞等待时间(使用负值表示没有限制)
+      max-wait: -1
+      #连接池中的最大空闲连接
+      max-idle: 10
+      #连接池中的最小空闲连接
+      min-idle: 0
 
 mybatis:
     mapperLocations: classpath:config/mybatis/*.xml

+ 1 - 1
mec-web/src/main/java/com/ym/mec/web/config/ResourceServerConfig.java

@@ -22,7 +22,7 @@ public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
 
 	@Override
 	public void configure(HttpSecurity http) throws Exception {
-		http.csrf().disable().authorizeRequests().antMatchers("/v2/api-docs","/classGroup/findMusicGroupClassTeacherSalary").permitAll().anyRequest().authenticated().and().httpBasic();
+		http.csrf().disable().authorizeRequests().antMatchers("/v2/api-docs","/classGroup/findMusicGroupClassTeacherSalary","/classGroup/findMusicGroupClassTeacher","/teacher/findTeachers").permitAll().anyRequest().authenticated().and().httpBasic();
 	}
 
 	@Override

+ 46 - 20
mec-web/src/main/java/com/ym/mec/web/controller/ClassGroupController.java

@@ -7,6 +7,7 @@ import com.ym.mec.biz.dal.enums.SalarySettlementTypeEnum;
 import com.ym.mec.biz.service.ClassGroupService;
 import com.ym.mec.biz.service.ClassGroupTeacherMapperService;
 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.*;
 import org.apache.commons.lang3.StringUtils;
@@ -49,10 +50,17 @@ public class ClassGroupController extends BaseController {
         return succeed(classGroupService.addHighClassGroup(highClassGroupDtoList));
     }
 
-    @ApiOperation(value = "删除班级")
-    @PostMapping("/del/{id}")
-    public Object del(@ApiParam(value = "班级编号", required = true) @PathVariable("id") Integer id) {
-        classGroupService.delete(id);
+    @ApiOperation(value = "删除单技班")
+    @PostMapping("/delSingle")
+    public Object delSingle(Integer classGroupId) {
+        classGroupService.delSingle(classGroupId);
+        return succeed();
+    }
+
+    @ApiOperation(value = "删除合奏班")
+    @PostMapping("/delMix")
+    public Object delMix(Integer classGroupId) {
+        classGroupService.delMix(classGroupId);
         return succeed();
     }
 
@@ -72,38 +80,39 @@ public class ClassGroupController extends BaseController {
 
     @ApiOperation(value = "合奏班相关班级获取")
     @GetMapping("/findClassGroupAboutMix")
-    public Object findClassGroupAboutMix(@ApiParam(value = "乐团编号", required = true) @RequestParam String musicGroupId,
+    public HttpResponseResult findClassGroupAboutMix(@ApiParam(value = "乐团编号", required = true) @RequestParam String musicGroupId,
                                          @ApiParam(value = "班级编号", required = false) Integer mixClassGroupId) {
         return succeed(classGroupService.findClassGroup(musicGroupId, mixClassGroupId));
     }
 
     @ApiOperation(value = "乐团单技班列表")
     @GetMapping("/findMusicGroupClass")
-    public Object findMusicGroupClass(@ApiParam(value = "乐团编号", required = true) @RequestParam String musicGroupId) {
+    public HttpResponseResult findMusicGroupClass(@ApiParam(value = "乐团编号", required = true) @RequestParam String musicGroupId) {
         return succeed(classGroupService.findAllNormalClassGroupByMusicGroupId(musicGroupId));
     }
 
     @ApiOperation(value = "获取未分班的单技班列表")
     @GetMapping("/findNoClassSubjects")
-    public Object findNoClassSubjects(@ApiParam(value = "乐团编号", required = true) @RequestParam String musicGroupId) {
+    public HttpResponseResult findNoClassSubjects(@ApiParam(value = "乐团编号", required = true) @RequestParam String musicGroupId) {
         return succeed(classGroupService.findNoClassSubjects(musicGroupId));
     }
 
     @ApiOperation(value = "乐团合奏班列表")
     @GetMapping("/findMixMusicGroupClass")
-    public Object findMixMusicGroupClass(@ApiParam(value = "乐团编号", required = true) @RequestParam String musicGroupId) {
+    public HttpResponseResult findMixMusicGroupClass(@ApiParam(value = "乐团编号", required = true) @RequestParam String musicGroupId) {
         return succeed(classGroupService.findAllMixClassGroupByMusicGroupId(musicGroupId));
     }
 
     @ApiOperation(value = "乐团所有班列表")
     @GetMapping("/findAllClassGroupByMusicGroup")
-    public Object findAllClassGroupByMusicGroup(@ApiParam(value = "乐团编号", required = true) @RequestParam String musicGroupId) {
+    public HttpResponseResult findAllClassGroupByMusicGroup(@ApiParam(value = "乐团编号", required = true) @RequestParam String musicGroupId) {
         return succeed(classGroupService.findAllClassGroupByMusicGroup(musicGroupId));
     }
 
     @ApiOperation(value = "乐团班级老师设置")
-    @GetMapping("/addClassGroupTeacher")
-    public Object addClassGroupTeacher(@ApiParam(value = "乐团班级老师json", required = true) @RequestParam List<ClassGroupTeacherMapper> classGroupTeacherMapperList) {
+    @PostMapping("/addClassGroupTeacher")
+    @ApiParam(value = "乐团班级老师json", required = true)
+    public HttpResponseResult addClassGroupTeacher(@RequestBody List<ClassGroupTeacherMapper> classGroupTeacherMapperList) {
         if (classGroupTeacherMapperList.size() <= 0) {
             return failed("参数不合法");
         }
@@ -112,21 +121,26 @@ public class ClassGroupController extends BaseController {
 
     @ApiOperation(value = "获取乐团班级老师")
     @GetMapping("/findMusicGroupClassTeacher")
-    public Object findMusicGroupClassTeacher(@ApiParam(value = "乐团编号", required = true) @RequestParam String musicGroupId) {
-        return succeed(classGroupService.getClassGroupAndTeachers(musicGroupId));
+    public HttpResponseResult findMusicGroupClassTeacher(@ApiParam(value = "乐团编号", required = true) @RequestParam String musicGroupId) {
+        return succeed(classGroupService.getClassGroupAndTeachers(musicGroupId,"NORMAL,MIX"));
     }
 
     @ApiOperation(value = "获取乐团班级老师课酬")
     @GetMapping("/findMusicGroupClassTeacherSalary")
     @ApiImplicitParams({@ApiImplicitParam(name = "musicGroupId", value = "乐团编号", required = true, dataType = "String"),
             @ApiImplicitParam(name = "type", value = "结算类型(1-基准课酬,4-梯度课酬)", required = true, dataType = "Integer")})
-    public Object findMusicGroupClassTeacherSalary(String musicGroupId, SalarySettlementTypeEnum type) {
-        return succeed(classGroupService.getClassGroupAndTeacherSalary(musicGroupId,type));
+    public HttpResponseResult findMusicGroupClassTeacherSalary(String musicGroupId, SalarySettlementTypeEnum type) {
+        try {
+            return succeed(classGroupService.getClassGroupAndTeacherSalary(musicGroupId, type));
+        } catch (Exception e) {
+            return failed(e.getMessage());
+        }
     }
 
     @ApiOperation(value = "乐团班级老师课酬确认")
-    @GetMapping("/setClassGroupTeacherSalary")
-    public Object setClassGroupTeacherSalary(@ApiParam(value = "乐团班级老师json", required = true) @RequestParam List<ClassGroupTeacherMapper> classGroupTeacherMapperList) throws Exception {
+    @PostMapping("/setClassGroupTeacherSalary")
+    @ApiParam(value = "乐团班级老师<包含相应课酬>json", required = true)
+    public Object setClassGroupTeacherSalary(@RequestBody List<ClassGroupTeacherMapper> classGroupTeacherMapperList) throws Exception {
         if (classGroupTeacherMapperList.size() <= 0) {
             return failed("参数不合法");
         }
@@ -135,11 +149,23 @@ public class ClassGroupController extends BaseController {
 
     @ApiOperation(value = "根据群编号,获取群组所有成员基本信息")
     @GetMapping("/findGroupUsers")
-    public Object findGroupUsers(String groupId){
-        if(StringUtils.isEmpty(groupId)){
+    public Object findGroupUsers(String groupId) {
+        if (StringUtils.isEmpty(groupId)) {
             return failed("参数校验错误");
         }
         return succeed(classGroupService.findGroupUsers(groupId));
     }
 
-}
+    @ApiOperation(value = "乐团班级设置,成团确认")
+    @PostMapping("/addMusicGroupTeam")
+    @ApiImplicitParams({@ApiImplicitParam(name = "musicGroupId", value = "乐团编号", required = true, dataType = "String"),
+            @ApiImplicitParam(name = "teacherId", value = "老师编号", required = true, dataType = "Integer")})
+    public Object addMusicGroupTeam(Integer teacherId,String musicGroupId) throws Exception {
+        if(teacherId == null || StringUtils.isEmpty(musicGroupId)){
+            return failed("参数校验错误");
+        }
+        classGroupService.addMusicGroupTeam(teacherId,musicGroupId);
+        return succeed();
+    }
+
+}

+ 5 - 33
mec-web/src/main/java/com/ym/mec/web/controller/GoodsCategoryController.java

@@ -3,11 +3,9 @@ package com.ym.mec.web.controller;
 import com.ym.mec.biz.dal.entity.GoodsCategory;
 import com.ym.mec.biz.dal.page.GoodsCategoryQueryInfo;
 import com.ym.mec.biz.service.GoodsCategoryService;
-import com.ym.mec.biz.service.GoodsService;
 import com.ym.mec.common.controller.BaseController;
 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.web.bind.annotation.*;
 
@@ -19,18 +17,10 @@ public class GoodsCategoryController extends BaseController {
     @Autowired
     private GoodsCategoryService goodsCategoryService;
 
-    @Autowired
-    private GoodsService goodsService;
-
     @ApiOperation(value = "删除商品分类")
-    @PostMapping("/del/{id}")
-    public Object del(@ApiParam(value = "商品分类编号", required = true) @PathVariable("id") Integer id) {
-        int num = goodsService.findGoodsNumByCategoryId(id);
-        if (num > 0) {
-            return failed("商品分类下有商品,不能删除");
-        }
-        goodsCategoryService.delete(id);
-        return succeed();
+    @PostMapping("/del")
+    public Object del(Integer id) {
+        return succeed(goodsCategoryService.delete(id));
     }
 
     @ApiOperation(value = "新增、修改商品类型")
@@ -40,27 +30,9 @@ public class GoodsCategoryController extends BaseController {
         return succeed();
     }
 
-    @ApiOperation(value = "新增")
-    @PostMapping("/add")
-    public Object add(GoodsCategory goodsCategory){
-        return succeed(goodsCategoryService.insert(goodsCategory));
-    }
-
-    @ApiOperation(value = "修改")
-    @PostMapping("/update")
-    public Object update(GoodsCategory goodsCategory){
-        return succeed(goodsCategoryService.update(goodsCategory));
-    }
-
-    @ApiOperation(value = "分页查询商品分类树状列表")
+    @ApiOperation(value = "分页查询商品分类列表")
     @GetMapping("/queryPage")
     public Object queryPage(GoodsCategoryQueryInfo queryInfo) {
-        return succeed(goodsCategoryService.queryTreePage(queryInfo));
-    }
-
-    @ApiOperation(value = "根据商品分类编号查询商品分类")
-    @GetMapping("/get/{id}")
-    public Object get(@ApiParam(value = "商品分类编号", required = true) @PathVariable("id") Integer id) {
-        return succeed(goodsCategoryService.get(id));
+        return succeed(goodsCategoryService.queryPage(queryInfo));
     }
 }

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

@@ -1,5 +1,6 @@
 package com.ym.mec.web.controller;
 
+import com.ym.mec.biz.dal.entity.SubjectGoodsMapper;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;

+ 56 - 0
mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupQuitController.java

@@ -0,0 +1,56 @@
+package com.ym.mec.web.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+
+import org.springframework.beans.factory.annotation.Autowired;
+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;
+
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.biz.dal.entity.ApprovalStatus;
+import com.ym.mec.biz.service.MusicGroupQuitService;
+import com.ym.mec.biz.service.MusicGroupService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.page.QueryInfo;
+
+@RequestMapping("musicGroupQuit")
+@Api(tags = "退团服务")
+@RestController
+public class MusicGroupQuitController extends BaseController {
+
+	@Autowired
+	private MusicGroupService musicGroupService;
+	
+	@Autowired
+	private MusicGroupQuitService musicGroupQuitService;
+	
+	@Autowired
+	private SysUserFeignService sysUserFeignService;
+
+	@ApiOperation(value = "分页查询")
+	@GetMapping("/queryPage")
+	public HttpResponseResult queryPage(QueryInfo queryInfo) throws Exception {
+		return succeed(musicGroupQuitService.queryPage(queryInfo));
+	}
+	
+	@ApiOperation(value = "单查询")
+	@GetMapping("/query")
+	public HttpResponseResult query(Long id) throws Exception {
+		return succeed(musicGroupQuitService.get(id));
+	}
+
+	@ApiOperation(value = "退团")
+	@PostMapping("/quitMusicGroup")
+	@ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "退团申请id", required = true, dataType = "Long"),
+			@ApiImplicitParam(name = "status", value = "审批状态(APPROVED, DENIED, PROCESSING)", required = true, dataType = "String"),
+			@ApiImplicitParam(name = "reason", value = "原因", required = true, dataType = "String") })
+	public HttpResponseResult quitMusicGroup(Long id, ApprovalStatus status, String reason) throws Exception {
+		return succeed(musicGroupService.approveQuitMusicGroup(id, status, reason));
+	}
+}

+ 9 - 0
mec-web/src/main/java/com/ym/mec/web/controller/SysConfigController.java

@@ -66,4 +66,13 @@ public class SysConfigController extends BaseController {
 			return failed("请检查输入的ID");
 		return succeed(sysConfigService.get(id));
 	}
+
+	@ApiOperation(value = "查询参数")
+	@GetMapping(value = "queryByParamName")
+	public Object queryByParamName(String paramName) {
+		if(StringUtils.isBlank(paramName)){
+			return failed("参数不能为空");
+		}
+		return succeed(sysConfigService.findByParamName(paramName));
+	}
 }

+ 24 - 0
mec-web/src/main/java/com/ym/mec/web/controller/TaskController.java

@@ -0,0 +1,24 @@
+package com.ym.mec.web.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.ym.mec.biz.service.MusicGroupStudentFeeService;
+import com.ym.mec.common.controller.BaseController;
+
+@RequestMapping("task")
+@RestController
+public class TaskController extends BaseController {
+	
+	@Autowired
+	private MusicGroupStudentFeeService musicGroupStudentFeeService;
+
+    @GetMapping("/refreshPaymentFeeStatus")
+    //刷新付费状态
+    public void refreshPaymentFeeStatus() {
+    	musicGroupStudentFeeService.refreshPaymentFeeStatus();
+    }
+
+}

+ 17 - 8
mec-web/src/main/java/com/ym/mec/web/controller/TeacherController.java

@@ -9,6 +9,7 @@ import com.ym.mec.biz.dal.page.VipClassQueryInfo;
 import com.ym.mec.biz.service.ClassGroupService;
 import com.ym.mec.biz.service.TeacherService;
 import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -83,34 +84,42 @@ public class TeacherController extends BaseController {
     @ApiOperation(value = "获取老师乐团课程信息列表")
     @GetMapping("/getTeacherMusicClass")
     @ApiParam(value = "教师编号", required = true)
-    public Object getTeacherMusicClass(Integer teacherId){
+    public Object getTeacherMusicClass(Integer teacherId) {
         return succeed(classGroupService.getTeacherMusicClass(teacherId));
     }
 
     @ApiOperation(value = "获取老师VIP课程信息列表")
     @GetMapping("/getTeacherVipClass")
-    public Object getTeacherVipClass(VipClassQueryInfo queryInfo){
+    public Object getTeacherVipClass(VipClassQueryInfo queryInfo) {
         return succeed(classGroupService.getTeacherVipClass(queryInfo));
     }
 
     @ApiOperation(value = "获取教师所有聊天群组")
     @GetMapping("/queryTeacherGroups")
-    public Object queryTeacherGroups(String search){
+    public Object queryTeacherGroups(String search) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(sysUser == null){
+        if (sysUser == null) {
             return failed("获取用户信息失败");
         }
-        return succeed(teacherService.queryTeacherGroups(sysUser.getId(),search));
+        return succeed(teacherService.queryTeacherGroups(sysUser.getId(), search));
     }
 
     @ApiOperation(value = "获取和当前教师相关的所有学员聊天列表")
     @GetMapping("/queryGroupStudents")
-    public Object queryGroupStudents(String search){
+    public Object queryGroupStudents(String search) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(sysUser == null){
+        if (sysUser == null) {
             return failed("获取用户信息失败");
         }
-        return succeed(teacherService.queryGroupStudents(sysUser.getId(),search));
+        return succeed(teacherService.queryGroupStudents(sysUser.getId(), search));
+    }
+
+
+    @ApiOperation(value = "获取分部所有老师")
+    @GetMapping("/findTeachers")
+    public HttpResponseResult findTeachers() {
+        Integer organId = sysUserFeignService.queryUserInfo().getOrganId();
+        return succeed(teacherService.findTeachers(organId));
     }
 
 }

+ 1 - 1
mec-web/src/main/java/com/ym/mec/web/controller/student/StudentCashAccountDetailController.java

@@ -60,7 +60,7 @@ public class StudentCashAccountDetailController extends BaseController {
         if(studentRecharge == null){
             return failed("交易不存在");
         }
-        SysUserCashAccountDetail sysUserCashAccountDetail = sysUserCashAccountDetailService.selectDetailByTransNo(transNo);
+        SysUserCashAccountDetail sysUserCashAccountDetail = sysUserCashAccountDetailService.queryDetailByTransNo(transNo);
         if(sysUserCashAccountDetail == null){
             return failed("交易不存在");
         }