فهرست منبع

Merge branch 'master' of http://git.dayaedu.com/yonge/mec

周箭河 5 سال پیش
والد
کامیت
101da6515a
58فایلهای تغییر یافته به همراه775 افزوده شده و 409 حذف شده
  1. 19 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java
  2. 12 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleTeacherSalaryDao.java
  3. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupDao.java
  4. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupSubjectGoodsGroupDao.java
  5. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupSubjectPlanDao.java
  6. 47 36
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentOrderDao.java
  7. 66 59
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java
  8. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SubjectDao.java
  9. 7 10
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysUserCashAccountDao.java
  10. 49 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/VipGroupSalaryDto.java
  11. 3 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ClassGroup.java
  12. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupStudentFee.java
  13. 3 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentRegistration.java
  14. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/OrderTypeEnum.java
  15. 57 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/VipGroupSalaryQueryInfo.java
  16. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java
  17. 4 4
      mec-biz/src/main/java/com/ym/mec/biz/service/ContractService.java
  18. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java
  19. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupSubjectGoodsGroupService.java
  20. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupSubjectPlanService.java
  21. 1 3
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentPaymentOrderService.java
  22. 76 70
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentRegistrationService.java
  23. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/service/SubjectService.java
  24. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/service/SysUserCashAccountService.java
  25. 10 4
      mec-biz/src/main/java/com/ym/mec/biz/service/VipGroupService.java
  26. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  27. 27 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ContractServiceImpl.java
  28. 20 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  29. 28 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  30. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupSubjectGoodsGroupServiceImpl.java
  31. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupSubjectPlanServiceImpl.java
  32. 2 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java
  33. 14 14
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRechargeServiceImpl.java
  34. 17 7
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  35. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SubjectServiceImpl.java
  36. 23 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysUserCashAccountServiceImpl.java
  37. 46 10
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
  38. 33 33
      mec-biz/src/main/resources/config/contracts/courses.ftl
  39. 20 0
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  40. 40 0
      mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml
  41. 4 0
      mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml
  42. 6 2
      mec-biz/src/main/resources/config/mybatis/MusicGroupStudentFeeMapper.xml
  43. 4 0
      mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml
  44. 4 0
      mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml
  45. 4 9
      mec-biz/src/main/resources/config/mybatis/SubjectMapper.xml
  46. 4 3
      mec-biz/src/main/resources/config/mybatis/SysUserCashAccountMapper.xml
  47. 2 0
      mec-education/src/main/java/com/ym/mec/education/EducationApplication.java
  48. 27 5
      mec-education/src/main/java/com/ym/mec/education/controller/CourseScheduleController.java
  49. 0 38
      mec-education/src/main/java/com/ym/mec/education/controller/UserController.java
  50. 0 25
      mec-education/src/main/java/com/ym/mec/education/feign/UserFeign.java
  51. 2 0
      mec-education/src/main/java/com/ym/mec/education/resp/MessageResp.java
  52. 5 4
      mec-education/src/main/java/com/ym/mec/education/service/impl/SysMessageServiceImpl.java
  53. 2 2
      mec-im/src/main/java/com/ym/SealClassConfiguration.java
  54. 32 15
      mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupController.java
  55. 0 13
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/App.java
  56. 1 1
      mec-web/src/main/java/com/ym/mec/web/controller/ClassGroupController.java
  57. 2 2
      mec-web/src/main/java/com/ym/mec/web/controller/StudentRegistrationController.java
  58. 4 4
      mec-web/src/main/java/com/ym/mec/web/controller/SubjectController.java

+ 19 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java

@@ -55,6 +55,15 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
 
     /**
      * @Author: Joburgess
+     * @Date: 2019/10/11
+     * @params [params]
+     * @return java.util.List<com.ym.mec.biz.dal.dto.CourseScheduleDto>
+     * @describe 根据
+     */
+    List<CourseScheduleDto> getCourseSchedulesWithDate(Map<String,Object> params);
+
+    /**
+     * @Author: Joburgess
      * @Date: 2019/9/17
      * 根据乐团ID删除排课
      */
@@ -87,6 +96,16 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
 
     /**
      * @Author: Joburgess
+     * @Date: 2019/10/11
+     * @params [month, organId]
+     * @return java.util.List<java.util.Date>
+     * @describe 获取当月有课的日期
+     */
+    List<Date> getCourseScheduleDate(@Param("month") Date month,
+                                     @Param("organId") Long organId);
+
+    /**
+     * @Author: Joburgess
      * @Date: 2019/9/23
      * 统计教师在一天内有时间重复的课数
      */

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleTeacherSalaryDao.java

@@ -1,9 +1,11 @@
 package com.ym.mec.biz.dal.dao;
 
+import com.ym.mec.biz.dal.dto.VipGroupSalaryDto;
 import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
 import com.ym.mec.common.dal.BaseDAO;
 
 import java.util.List;
+import java.util.Map;
 
 public interface CourseScheduleTeacherSalaryDao extends BaseDAO<Long, CourseScheduleTeacherSalary> {
 
@@ -15,5 +17,15 @@ public interface CourseScheduleTeacherSalaryDao extends BaseDAO<Long, CourseSche
      * @describe 批量插入
      */
     int batchInsert(List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/10/11
+     * @params [params]
+     * @return java.util.List<com.ym.mec.biz.dal.dto.VipGroupSalaryDto>
+     * @describe 获取vip课财务记录
+     */
+    List<VipGroupSalaryDto> findVipGroupSalarys(Map<String,Object> params);
+    int countVipGroupSalarys(Map<String,Object> params);
 	
 }

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupDao.java

@@ -12,6 +12,8 @@ import org.apache.ibatis.annotations.Param;
 import java.util.List;
 
 public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
+	
+	MusicGroup getLocked(String id);
 
     /**
      * 获取学员所在乐团详情列表

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

@@ -22,7 +22,7 @@ public interface MusicGroupSubjectGoodsGroupDao extends BaseDAO<Long, MusicGroup
      * @param subId
      * @return
      */
-    List<MusicGroupSubjectGoodsGroup> findGoodsGroup(@Param("musicGroupId") Integer musicGroupId, @Param("subId") Integer subId);
+    List<MusicGroupSubjectGoodsGroup> findGoodsGroup(@Param("musicGroupId") String musicGroupId, @Param("subId") Integer subId);
 
 
     /**

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

@@ -24,5 +24,5 @@ public interface MusicGroupSubjectPlanDao extends BaseDAO<Integer, MusicGroupSub
      * @param subjectId
      * @return
      */
-    MusicGroupSubjectPlan getMusicOneSubjectClassPlan(@Param("musicGroupId") int musicGroupId, @Param("subjectId") int subjectId);
+    MusicGroupSubjectPlan getMusicOneSubjectClassPlan(@Param("musicGroupId") String musicGroupId, @Param("subjectId") int subjectId);
 }

+ 47 - 36
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentOrderDao.java

@@ -1,48 +1,59 @@
 package com.ym.mec.biz.dal.dao;
 
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+
 import com.ym.mec.biz.dal.entity.Goods;
-import com.ym.mec.biz.dal.entity.MusicGroup;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
 import com.ym.mec.biz.dal.enums.DealStatusEnum;
 import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
 import com.ym.mec.biz.dal.enums.OrderTypeEnum;
 import com.ym.mec.common.dal.BaseDAO;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.List;
 
 public interface StudentPaymentOrderDao extends BaseDAO<Long, StudentPaymentOrder> {
 
-    /**
-     * 查询商品列表
-     *
-     * @param musicGroupId
-     * @param type
-     * @return
-     */
-    List<Goods> queryApplyGoodsList(@Param("musicGroupId") Integer musicGroupId, @Param("type") OrderDetailTypeEnum type);
-
-    /**
-     * @Author: Joburgess
-     * @Date: 2019/10/3
-     * 根据学生vip课获取缴费订单
-     */
-    StudentPaymentOrder findByStudentVipGroup(@Param("vipGroupId") Long vipGroupId, @Param("userId") Long userId);
-
-    /**
-     * 查询乐团报名的订单
-     *
-     * @param userId
-     * @param musicGroupId
-     * @param status
-     * @return
-     */
-    StudentPaymentOrder findMusicGroupApplyOrderByStatus(@Param("userId") Integer userId, @Param("musicGroupId") String musicGroupId, @Param("status") DealStatusEnum status);
-
-    /**
-     * 根据订单号查询订单
-     * @param orderNo
-     * @return
-     */
-    StudentPaymentOrder findOrderByOrderNo(@Param("orderNo") String orderNo);
+	/**
+	 * 查询商品列表
+	 *
+	 * @param musicGroupId
+	 * @param type
+	 * @return
+	 */
+	List<Goods> queryApplyGoodsList(@Param("musicGroupId") String musicGroupId, @Param("type") OrderDetailTypeEnum type);
+
+	/**
+	 * @Author: Joburgess
+	 * @Date: 2019/10/3
+	 * 根据学生vip课获取缴费订单
+	 */
+	StudentPaymentOrder findByStudentVipGroup(@Param("vipGroupId") Long vipGroupId, @Param("userId") Long userId);
+
+	/**
+	 * 查询乐团报名的订单
+	 *
+	 * @param userId
+	 * @param musicGroupId
+	 * @param status
+	 * @return
+	 */
+	StudentPaymentOrder findMusicGroupApplyOrderByStatus(@Param("userId") Integer userId, @Param("musicGroupId") String musicGroupId,
+			@Param("status") DealStatusEnum status);
+
+	/**
+	 * 根据订单号查询订单
+	 * @param orderNo
+	 * @return
+	 */
+	StudentPaymentOrder findOrderByOrderNo(@Param("orderNo") String orderNo);
+
+	/**
+	 * 查询指定交易状态的乐团报名的订单信息
+	 * @param musicGroupId 乐团编号
+	 * @param type 订单类型
+	 * @param status 订单状态
+	 * @return
+	 */
+	List<StudentPaymentOrder> queryByDealStatus(@Param("musicGroupId") String musicGroupId, @Param("type") OrderTypeEnum type,
+			@Param("status") DealStatusEnum status);
 }

+ 66 - 59
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java

@@ -13,70 +13,77 @@ import java.util.Map;
 
 public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistration> {
 
-    /**
-     * 获取乐团学员报名详情
-     *
-     * @param params
-     * @return
-     */
-    List<StudentApplyDetailDto> queryStudentDetailPage(Map<String, Object> params);
+	/**
+	 * 获取乐团学员报名详情
+	 *
+	 * @param params
+	 * @return
+	 */
+	List<StudentApplyDetailDto> queryStudentDetailPage(Map<String, Object> params);
 
-    /**
-     * 获取乐团学员报名详情条数
-     *
-     * @param params
-     * @return
-     */
-    int queryStudentDetailCount(Map<String, Object> params);
+	/**
+	 * 获取乐团学员报名详情条数
+	 *
+	 * @param params
+	 * @return
+	 */
+	int queryStudentDetailCount(Map<String, Object> params);
 
-    /**
-     * 根据乐团编号和声部获取缴费学员人数
-     *
-     * @param musicGroupId
-     * @param subjectId
-     * @return
-     */
-    Integer countPayNum(@Param("musicGroupId") Integer musicGroupId, @Param("subjectId") Integer subjectId);
+	/**
+	 * 根据乐团编号和声部获取缴费学员人数
+	 *
+	 * @param musicGroupId
+	 * @param subjectId
+	 * @return
+	 */
+	Integer countPayNum(@Param("musicGroupId") Integer musicGroupId, @Param("subjectId") Integer subjectId);
 
-    /**
-     * 学生报名缴费金额详情
-     *
-     * @param studentId
-     * @param musicGroupId
-     * @return
-     */
-    StudentFeeDto queryFeeDetail(Integer studentId, String musicGroupId);
+	/**
+	 * 学生报名缴费金额详情
+	 *
+	 * @param studentId
+	 * @param musicGroupId
+	 * @return
+	 */
+	StudentFeeDto queryFeeDetail(Integer studentId, String musicGroupId);
 
+	/**
+	 * 获取乐团声部未分配的班级的学生
+	 *
+	 * @param musicGroupId    乐团id
+	 * @param actualSubjectId 科目id
+	 * @return
+	 */
+	List<StudentRegistration> getNoClassStuBySubjectId(@Param("musicGroupId") Integer musicGroupId, @Param("actualSubjectId") Integer actualSubjectId);
 
-    /**
-     * 获取乐团声部未分配的班级的学生
-     *
-     * @param musicGroupId    乐团id
-     * @param actualSubjectId 科目id
-     * @return
-     */
-    List<StudentRegistration> getNoClassStuBySubjectId(@Param("musicGroupId") Integer musicGroupId, @Param("actualSubjectId") Integer actualSubjectId);
+	/**
+	 * 获取乐团声部未分配学生数
+	 *
+	 * @param musicGroupId
+	 * @param actualSubjectId
+	 * @return
+	 */
+	Integer getNoClassStuCountBySubjectId(@Param("musicGroupId") Integer musicGroupId, @Param("actualSubjectId") Integer actualSubjectId);
 
-    /**
-     * 获取乐团声部未分配学生数
-     *
-     * @param musicGroupId
-     * @param actualSubjectId
-     * @return
-     */
-    Integer getNoClassStuCountBySubjectId(@Param("musicGroupId") Integer musicGroupId, @Param("actualSubjectId") Integer actualSubjectId);
+	/**
+	 * 根据乐团id和user_id 更新
+	 * @param studentRegistration
+	 * @return
+	 */
+	Integer updateByUserIdAndMusicGroupId(@Param("studentRegistration") StudentRegistration studentRegistration);
 
-    /**
-     * 根据乐团id和user_id 更新
-     * @param studentRegistration
-     * @return
-     */
-    Integer updateByUserIdAndMusicGroupId(@Param("studentRegistration") StudentRegistration studentRegistration);
-    
-    /**
-     * 查询学生信息
-     * @param userId
-     * @return
-     */
-    StudentInfo queryStudentInfo(Integer userId);
+	/**
+	 * 查询学生信息
+	 * @param userId
+	 * @return
+	 */
+	StudentInfo queryStudentInfo(Integer userId);
+
+	/**
+	 * 查询用户指定乐团的报名信息
+	 * @param userId 用户编号
+	 * @param musicGroupId 乐团编号
+	 * @return
+	 */
+	StudentRegistration queryByUserIdAndMusicGroupId(@Param("userId") Integer userId, @Param("musicGroupId") String musicGroupId);
 }

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

@@ -43,10 +43,10 @@ public interface SubjectDao extends BaseDAO<Integer, Subject> {
 
     /**
      * 通过乐团收费类型,获取默认的声部列表
-     * @param musicGroupId
+     * @param chargeTypeId
      * @return
      */
-    List<Subject> findDefaultSubByGroupId(Integer musicGroupId);
+    List<Subject> findDefaultSubByChargeTypeId(Integer chargeTypeId);
 
     /**
      * 通过乐团编号获取声部列表以及声部报名、缴费、计划人数

+ 7 - 10
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysUserCashAccountDao.java

@@ -2,17 +2,14 @@ package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.biz.dal.entity.SysUserCashAccount;
 import com.ym.mec.common.dal.BaseDAO;
-import org.apache.ibatis.annotations.Param;
-
-import java.math.BigDecimal;
 
 public interface SysUserCashAccountDao extends BaseDAO<Integer, SysUserCashAccount> {
+	
+	/**
+	 * 获取行级锁
+	 * @param userId
+	 * @return
+	 */
+	SysUserCashAccount getLocked(Integer userId);
 
-    /**
-     * 账户余额加
-     * @param userId
-     * @param amount
-     * @return
-     */
-    int incrAccount(@Param("userId") Integer userId, @Param("amount") BigDecimal amount);
 }

+ 49 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/VipGroupSalaryDto.java

@@ -0,0 +1,49 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
+import com.ym.mec.biz.dal.enums.TeachModeEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+
+/**
+ * @Author Joburgess
+ * @Date 2019/10/11
+ */
+public class VipGroupSalaryDto extends CourseScheduleTeacherSalary {
+
+    @ApiModelProperty(value = "课程编号")
+    private Long courseScheduleId;
+
+    @ApiModelProperty(value = "上课日期")
+    private java.util.Date classDate;
+
+    @ApiModelProperty(value = "教学形式")
+    private TeachModeEnum teachMode;
+
+    @Override
+    public Long getCourseScheduleId() {
+        return courseScheduleId;
+    }
+
+    @Override
+    public void setCourseScheduleId(Long courseScheduleId) {
+        this.courseScheduleId = courseScheduleId;
+    }
+
+    public Date getClassDate() {
+        return classDate;
+    }
+
+    public void setClassDate(Date classDate) {
+        this.classDate = classDate;
+    }
+
+    public TeachModeEnum getTeachMode() {
+        return teachMode;
+    }
+
+    public void setTeachMode(TeachModeEnum teachMode) {
+        this.teachMode = teachMode;
+    }
+}

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

@@ -18,7 +18,7 @@ public class ClassGroup {
 
 	/**  */
 	@ApiModelProperty(value = "乐团编号", required = true)
-	private Integer musicGroupId;
+	private String musicGroupId;
 
 	/**  */
 	@ApiModelProperty(value = "上课模式", required = true)
@@ -113,11 +113,11 @@ public class ClassGroup {
 		return this.id;
 	}
 
-	public void setMusicGroupId(Integer musicGroupId) {
+	public void setMusicGroupId(String musicGroupId) {
 		this.musicGroupId = musicGroupId;
 	}
 
-	public Integer getMusicGroupId() {
+	public String getMusicGroupId() {
 		return this.musicGroupId;
 	}
 

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

@@ -21,6 +21,9 @@ public class MusicGroupStudentFee {
 	/**  */
 	@ApiModelProperty(value = "用户编号", required = false)
 	private Integer userId;
+	
+	@ApiModelProperty(value = "声部编号", required = false)
+	private Integer subjectId;
 
 	/** 课程费用 */
 	@ApiModelProperty(value = "课程费用", required = false)
@@ -83,6 +86,14 @@ public class MusicGroupStudentFee {
 		return this.userId;
 	}
 
+	public Integer getSubjectId() {
+		return subjectId;
+	}
+
+	public void setSubjectId(Integer subjectId) {
+		this.subjectId = subjectId;
+	}
+
 	public BigDecimal getCourseFee() {
 		return courseFee;
 	}

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

@@ -42,7 +42,7 @@ public class StudentRegistration {
      * 所属乐团(对应 music_group 表id)
      */
     @ApiModelProperty(value = "所属乐团(对应 music_group 表id)", required = true)
-    private Integer musicGroupId;
+    private String musicGroupId;
 
     /**
      * 当前所在年级
@@ -169,11 +169,11 @@ public class StudentRegistration {
         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;
     }
 

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

@@ -8,7 +8,7 @@ import com.ym.mec.common.enums.BaseEnum;
 public enum OrderTypeEnum implements BaseEnum<String, OrderTypeEnum> {
 	APPLY("APPLY", "报名"),
 	RENEW("RENEW", "续费"),
-	ELSE("ELSE", "其他"),
+	OTHER("OTHER", "其他"),
 	SMALL_CLASS_TO_BUY("SMALL_CLASS_TO_BUY", "小课购买");
 
 	private String code;

+ 57 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/VipGroupSalaryQueryInfo.java

@@ -0,0 +1,57 @@
+package com.ym.mec.biz.dal.page;
+
+import com.ym.mec.common.page.QueryInfo;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+
+/**
+ * @Author Joburgess
+ * @Date 2019/10/11
+ */
+public class VipGroupSalaryQueryInfo extends QueryInfo {
+
+    @ApiModelProperty(value = "vip课编号")
+    private Long vipGroupId;
+
+    @ApiModelProperty(value = "部门编号")
+    private Long organId;
+
+    @ApiModelProperty(value = "开始时间")
+    private Date startTime;
+
+    @ApiModelProperty(value = "结束时间")
+    private Date endTime;
+
+    public Long getVipGroupId() {
+        return vipGroupId;
+    }
+
+    public void setVipGroupId(Long vipGroupId) {
+        this.vipGroupId = vipGroupId;
+    }
+
+    public Long getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(Long organId) {
+        this.organId = organId;
+    }
+
+    public Date getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(Date startTime) {
+        this.startTime = startTime;
+    }
+
+    public Date getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(Date endTime) {
+        this.endTime = endTime;
+    }
+}

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

@@ -71,7 +71,7 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
      * @return
      * @throws Exception
      */
-    ClassGroup addMixClassGroup(int musicGroupId, String name, String classGroupIds) throws Exception;
+    ClassGroup addMixClassGroup(String musicGroupId, String name, String classGroupIds) throws Exception;
 
     /**
      * 跟班级ids查询班级信息

+ 4 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/ContractService.java

@@ -29,7 +29,7 @@ public interface ContractService {
 	 * @param musicGroupId
 	 * @return
 	 */
-	boolean transferMusicGroupCoursesContract(Integer userId, Integer musicGroupId);
+	boolean transferMusicGroupCoursesContract(Integer userId, String musicGroupId);
 
 	/**
 	 * 查询课程协议
@@ -37,7 +37,7 @@ public interface ContractService {
 	 * @param musicGroupId
 	 * @return
 	 */
-	String queryMusicGroupCoursesContract(Integer userId, Integer musicGroupId);
+	String queryMusicGroupCoursesContract(Integer userId, String musicGroupId);
 
 	/**
 	 * 传递商品协议
@@ -45,7 +45,7 @@ public interface ContractService {
 	 * @param musicGroupId
 	 * @return
 	 */
-	boolean transferGoodsContract(Integer userId, Integer musicGroupId);
+	boolean transferGoodsContract(Integer userId, String musicGroupId);
 
 	/**
 	 * 查询商品协议
@@ -53,5 +53,5 @@ public interface ContractService {
 	 * @param musicGroupId
 	 * @return
 	 */
-	String queryGoodsContract(Integer userId, Integer musicGroupId);
+	String queryGoodsContract(Integer userId, String musicGroupId);
 }

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

@@ -79,6 +79,15 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
 
     /**
      * @Author: Joburgess
+     * @Date: 2019/10/11
+     * @params [month]
+     * @return java.util.List<java.util.Date>
+     * @describe 获取
+     */
+    List<Date> getCourseScheduleDates(Date month);
+
+    /**
+     * @Author: Joburgess
      * @Date: 2019/9/23
      * 课时调整
      */

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

@@ -13,7 +13,7 @@ public interface MusicGroupSubjectGoodsGroupService extends BaseService<Long, Mu
      * @param subId
      * @return
      */
-    List<MusicGroupSubjectGoodsGroup> findGoodsGroup(Integer musicGroupId, Integer subId);
+    List<MusicGroupSubjectGoodsGroup> findGoodsGroup(String musicGroupId, Integer subId);
 
 
     /**

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

@@ -24,7 +24,7 @@ public interface MusicGroupSubjectPlanService extends BaseService<Integer, Music
      * @param musicGroupId
      * @return
      */
-    MusicGroupSubjectPlan getMusicOneSubjectClassPlan(int musicGroupId, int subjectId);
+    MusicGroupSubjectPlan getMusicOneSubjectClassPlan(String musicGroupId, int subjectId);
 
     /**
      * 获取乐团声部报名缴费商品信息
@@ -33,7 +33,7 @@ public interface MusicGroupSubjectPlanService extends BaseService<Integer, Music
      * @param subjectId
      * @return
      */
-    MusicGroupSubjectGoodsAndInfoDto getSubjectGoodsAndInfo(Integer musicGroupId, Integer subjectId);
+    MusicGroupSubjectGoodsAndInfoDto getSubjectGoodsAndInfo(String musicGroupId, Integer subjectId);
 
     /**
      * 乐团报名基本信息

+ 1 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/StudentPaymentOrderService.java

@@ -6,9 +6,7 @@ import com.ym.mec.biz.dal.entity.Goods;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
 import com.ym.mec.biz.dal.enums.DealStatusEnum;
 import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
-import com.ym.mec.biz.dal.enums.OrderTypeEnum;
 import com.ym.mec.common.service.BaseService;
-import org.apache.ibatis.annotations.Param;
 
 public interface StudentPaymentOrderService extends BaseService<Long, StudentPaymentOrder> {
 
@@ -18,7 +16,7 @@ public interface StudentPaymentOrderService extends BaseService<Long, StudentPay
 	 * @param type
 	 * @return
 	 */
-	List<Goods> queryApplyGoodsList(Integer musicGroupId, OrderDetailTypeEnum type);
+	List<Goods> queryApplyGoodsList(String musicGroupId, OrderDetailTypeEnum type);
 
 	/**
 	 * 查询报名缴费订单

+ 76 - 70
mec-biz/src/main/java/com/ym/mec/biz/service/StudentRegistrationService.java

@@ -16,83 +16,89 @@ import com.ym.mec.common.service.BaseService;
 
 public interface StudentRegistrationService extends BaseService<Long, StudentRegistration> {
 
-    /**
-     * 获取乐团学员报名详情
-     *
-     * @param queryInfo
-     * @return
-     */
-    PageInfo<StudentApplyDetailDto> queryStudentDetailPage(StudentRegistrationQueryInfo queryInfo);
+	/**
+	 * 获取乐团学员报名详情
+	 *
+	 * @param queryInfo
+	 * @return
+	 */
+	PageInfo<StudentApplyDetailDto> queryStudentDetailPage(StudentRegistrationQueryInfo queryInfo);
 
-    /**
-     * 批量调剂
-     *
-     * @param userId
-     * @param subId
-     * @return
-     */
-    boolean batchUpdateSubject(String userId, Integer subId);
+	/**
+	 * 批量调剂
+	 *
+	 * @param userId
+	 * @param subId
+	 * @return
+	 */
+	boolean batchUpdateSubject(String userId, Integer subId);
 
-    /**
-     * 学生报名缴费金额详情
-     *
-     * @param studentId
-     * @param musicGroupId
-     * @return
-     */
-    StudentFeeDto queryFeeDetail(Integer studentId, String musicGroupId);
+	/**
+	 * 学生报名缴费金额详情
+	 *
+	 * @param studentId
+	 * @param musicGroupId
+	 * @return
+	 */
+	StudentFeeDto queryFeeDetail(Integer studentId, String musicGroupId);
 
-    /**
-     * 获取未分配的班级的学生
-     *
-     * @param musicGroupId    乐团id
-     * @param actualSubjectId 科目id
-     * @return
-     */
-    List<StudentRegistration> getNoClassStuBySubjectId(Integer musicGroupId, Integer actualSubjectId);
+	/**
+	 * 获取未分配的班级的学生
+	 *
+	 * @param musicGroupId    乐团id
+	 * @param actualSubjectId 科目id
+	 * @return
+	 */
+	List<StudentRegistration> getNoClassStuBySubjectId(Integer musicGroupId, Integer actualSubjectId);
 
-    /**
-     * 获取乐团声部未分配学生统计
-     *
-     * @param musicGroupId
-     * @param actualSubjectId
-     * @return
-     */
-    Integer getNoClassStuCountBySubjectId(Integer musicGroupId, Integer actualSubjectId);
+	/**
+	 * 获取乐团声部未分配学生统计
+	 *
+	 * @param musicGroupId
+	 * @param actualSubjectId
+	 * @return
+	 */
+	Integer getNoClassStuCountBySubjectId(Integer musicGroupId, Integer actualSubjectId);
 
+	/**
+	 * 根据user_id 和 乐团id更新
+	 *
+	 * @param studentRegistration
+	 * @return
+	 */
+	Integer updateByUserIdAndMusicGroupId(StudentRegistration studentRegistration);
 
-    /**
-     * 根据user_id 和 乐团id更新
-     *
-     * @param studentRegistration
-     * @return
-     */
-    Integer updateByUserIdAndMusicGroupId(StudentRegistration studentRegistration);
+	/**
+	 * 添加学生报名信息
+	 * @param studentRegistration
+	 * @return
+	 */
+	StudentRegistration addStudent(StudentRegistration studentRegistration);
 
-    /**
-     * 添加学生报名信息
-     * @param studentRegistration
-     * @return
-     */
-    StudentRegistration addStudent(StudentRegistration studentRegistration);
-    
-    /**
-     * 查询学生信息
-     * @param userId
-     * @return
-     */
-    StudentInfo queryStudentInfo(Integer userId);
+	/**
+	 * 查询学生信息
+	 * @param userId
+	 * @return
+	 */
+	StudentInfo queryStudentInfo(Integer userId);
 
+	/**
+	 * 学生注册缴费订单
+	 * @param userId
+	 * @param amount
+	 * @param courseFee
+	 * @param goodsGroups
+	 * @param goodsList
+	 * @return
+	 */
+	StudentPaymentOrder addOrder(Integer userId, BigDecimal amount, String orderNo, String paymentChannel, BigDecimal courseFee,
+			List<MusicGroupSubjectGoodsGroup> goodsGroups, List<Goods> goodsList, List<Goods> otherGoodsList, String musicGroupId);
 
-    /**
-     * 学生注册缴费订单
-     * @param userId
-     * @param amount
-     * @param courseFee
-     * @param goodsGroups
-     * @param goodsList
-     * @return
-     */
-    StudentPaymentOrder addOrder(Integer userId,BigDecimal amount,String orderNo,String paymentChannel,BigDecimal courseFee, List<MusicGroupSubjectGoodsGroup> goodsGroups, List<Goods> goodsList, List<Goods> otherGoodsList,String musicGroupId);
-
+	/**
+	 * 查询用户指定乐团的报名信息
+	 * @param userId 用户编号
+	 * @param musicGroupId 乐团编号
+	 * @return
+	 */
+	StudentRegistration queryByUserIdAndMusicGroupId(Integer userId, String musicGroupId);
 }

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

@@ -35,10 +35,10 @@ public interface SubjectService extends BaseService<Integer, Subject> {
     /**
      * 通过乐团收费类型,获取默认的声部列表
      *
-     * @param musicGroupId
+     * @param chargeTypeId
      * @return
      */
-    List<Subject> findDefaultSubByGroupId(Integer musicGroupId);
+    List<Subject> findDefaultSubByChargeTypeId(Integer chargeTypeId);
 
     /**
      * 通过乐团编号获取声部列表以及声部报名、缴费、计划人数

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

@@ -1,8 +1,17 @@
 package com.ym.mec.biz.service;
 
+import java.math.BigDecimal;
+
 import com.ym.mec.biz.dal.entity.SysUserCashAccount;
 import com.ym.mec.common.service.BaseService;
 
 public interface SysUserCashAccountService extends BaseService<Integer, SysUserCashAccount> {
 
+	/**
+	 * 更新指定用户的账户余额
+	 * @param userId 用户编号
+	 * @param decimal 交易金额(支持负数)
+	 * @return
+	 */
+	boolean updateBalance(Integer userId, BigDecimal decimal);
 }

+ 10 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/VipGroupService.java

@@ -3,10 +3,7 @@ package com.ym.mec.biz.service;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.StudentApplyRefunds;
 import com.ym.mec.biz.dal.entity.VipGroup;
-import com.ym.mec.biz.dal.page.StudentVipGroupQueryInfo;
-import com.ym.mec.biz.dal.page.VipGroupAttendanceQueryInfo;
-import com.ym.mec.biz.dal.page.VipGroupQueryInfo;
-import com.ym.mec.biz.dal.page.VipGroupTeachingRecordQueryInfo;
+import com.ym.mec.biz.dal.page.*;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 
@@ -149,4 +146,13 @@ public interface VipGroupService extends BaseService<Long, VipGroup> {
      */
     void applyRefundAudit(StudentApplyRefunds studentApplyRefunds);
 
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/10/11
+     * @params [queryInfo]
+     * @return com.ym.mec.common.page.PageInfo
+     * @describe vip财务记录
+     */
+    PageInfo findVipGroupSalarys(VipGroupSalaryQueryInfo queryInfo);
+
 }

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

@@ -131,7 +131,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public ClassGroup addMixClassGroup(int musicGroupId, String name, String classGroupIds) throws Exception {
+    public ClassGroup addMixClassGroup(String musicGroupId, String name, String classGroupIds) throws Exception {
         Date date;
         date = new Date();
 

+ 27 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ContractServiceImpl.java

@@ -19,12 +19,15 @@ import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dto.StudentInfo;
 import com.ym.mec.biz.dal.entity.Goods;
+import com.ym.mec.biz.dal.entity.MusicGroupSubjectPlan;
+import com.ym.mec.biz.dal.entity.StudentRegistration;
 import com.ym.mec.biz.dal.entity.Subject;
 import com.ym.mec.biz.dal.entity.SysUserContracts;
 import com.ym.mec.biz.dal.entity.SysUserContracts.ContractType;
 import com.ym.mec.biz.dal.entity.SysUserTsign;
 import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
 import com.ym.mec.biz.service.ContractService;
+import com.ym.mec.biz.service.MusicGroupSubjectPlanService;
 import com.ym.mec.biz.service.StudentPaymentOrderService;
 import com.ym.mec.biz.service.StudentRegistrationService;
 import com.ym.mec.biz.service.SubjectService;
@@ -54,6 +57,10 @@ public class ContractServiceImpl implements ContractService {
 	@Autowired
 	private StudentPaymentOrderService studentPaymentOrderService;
 	
+    @Autowired
+    private MusicGroupSubjectPlanService musicGroupSubjectPlanService;
+    
+	
 	@Autowired
 	private SubjectService subjectService;
 
@@ -179,7 +186,7 @@ public class ContractServiceImpl implements ContractService {
 	}
 
 	@Override
-	public boolean transferMusicGroupCoursesContract(Integer userId, Integer musicGroupId) {
+	public boolean transferMusicGroupCoursesContract(Integer userId, String musicGroupId) {
 		SysUserTsign sysUserTsign = sysUserTsignService.get(userId);
 
 		if (sysUserTsign == null) {
@@ -201,6 +208,22 @@ public class ContractServiceImpl implements ContractService {
 		//查询参数信息
 		StudentInfo studentInfo = studentRegistrationService.queryStudentInfo(userId);
 		params.put("studentInfo", studentInfo);
+		
+		//课程类型
+		params.put("classesType", "乐团团课");
+		
+		//课程费用
+		StudentRegistration studentRegistration = studentRegistrationService.queryByUserIdAndMusicGroupId(userId, musicGroupId);
+		if(studentRegistration == null){
+			throw new BizException("用户 报名信息不存在");
+		}
+		MusicGroupSubjectPlan musicGroupSubjectPlan = musicGroupSubjectPlanService.getMusicOneSubjectClassPlan(musicGroupId, studentRegistration.getActualSubjectId());
+		if(musicGroupSubjectPlan == null){
+			throw new BizException("声部课程费用设置找不到");
+		}
+		params.put("courseFee", musicGroupSubjectPlan.getFee().doubleValue());
+		
+		//收费形式
 
 		templateEngine.render(params, "courses.ftl", new File(srcPdfPath));
 
@@ -233,7 +256,7 @@ public class ContractServiceImpl implements ContractService {
 	}
 
 	@Override
-	public String queryMusicGroupCoursesContract(Integer userId, Integer musicGroupId) {
+	public String queryMusicGroupCoursesContract(Integer userId, String musicGroupId) {
 
 		// 合成freemarker
 		String srcPdfPath = contractBaseDir + "/courses/" + userId + ".pdf";
@@ -264,7 +287,7 @@ public class ContractServiceImpl implements ContractService {
 	}
 
 	@Override
-	public boolean transferGoodsContract(Integer userId, Integer musicGroupId) {
+	public boolean transferGoodsContract(Integer userId, String musicGroupId) {
 		SysUserTsign sysUserTsign = sysUserTsignService.get(userId);
 
 		if (sysUserTsign == null) {
@@ -325,7 +348,7 @@ public class ContractServiceImpl implements ContractService {
 	}
 
 	@Override
-	public String queryGoodsContract(Integer userId, Integer musicGroupId) {
+	public String queryGoodsContract(Integer userId, String musicGroupId) {
 
 		// 合成freemarker
 		String srcPdfPath = contractBaseDir + "/goods/" + userId + ".pdf";

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

@@ -104,7 +104,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 	public List<Date> getCourseScheduleDateByStudent(Date month, Integer isAttend) {
 		SysUser user = sysUserFeignService.queryUserInfo();
 		if(null==user){
-			throw new BizException("请登录");
+			throw new BizException("获取用户信息失败");
 		}
 		return courseScheduleDao.getStudentCourseScheduleDate(user.getId().longValue(),month,isAttend);
 	}
@@ -113,18 +113,30 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 	public List<Date> getCourseScheduleDateByTeacher(Date month) {
 		SysUser user = sysUserFeignService.queryUserInfo();
 		if(null==user){
-			throw new BizException("请登录");
+			throw new BizException("获取用户信息失败");
 		}
 		return courseScheduleDao.getTeacherCourseScheduleDate(user.getId().longValue(),month);
 	}
 
 	@Override
+	public List<Date> getCourseScheduleDates(Date month) {
+		SysUser user = sysUserFeignService.queryUserInfo();
+		if(null==user){
+			throw new BizException("请登录");
+		}
+		return courseScheduleDao.getCourseScheduleDate(month,user.getOrganId().longValue());
+	}
+
+	@Override
 	public Map getStudentCourseSchedulesWithDate(Date classDate) {
 		if(Objects.isNull(classDate)){
 			throw new BizException("请选择上课日期!");
 		}
 
 		SysUser user = sysUserFeignService.queryUserInfo();
+		if(null==user){
+			throw new BizException("请登录");
+		}
 		SysConfig vip_appeal_days_range = sysConfigDao.findByParamName("vip_appeal_days_range");
 		Map<String,Object> result=new HashMap<>();
 		result.put("vipAppealDaysRange",vip_appeal_days_range.getParanValue());
@@ -134,7 +146,13 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
 	@Override
 	public List<CourseScheduleDto> getTeacherCourseSchedulesWithDate(Date classDate) {
+		if(Objects.isNull(classDate)){
+			throw new BizException("请选择上课日期!");
+		}
 		SysUser user = sysUserFeignService.queryUserInfo();
+		if(null==user){
+			throw new BizException("请登录");
+		}
 		return courseScheduleDao.getTeacherCourseSchedulesWithDate(classDate,user.getId().longValue());
 	}
 

+ 28 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -20,6 +20,7 @@ import com.ym.mec.biz.dal.dao.MusicGroupPaymentEntitiesDao;
 import com.ym.mec.biz.dal.dao.MusicGroupStudentFeeDao;
 import com.ym.mec.biz.dal.dao.MusicGroupSubjectGoodsGroupDao;
 import com.ym.mec.biz.dal.dao.MusicGroupSubjectPlanDao;
+import com.ym.mec.biz.dal.dao.StudentPaymentOrderDao;
 import com.ym.mec.biz.dal.dto.BasicUserDto;
 import com.ym.mec.biz.dal.dto.MusicCardDto;
 import com.ym.mec.biz.dal.dto.SubFeeSettingDto;
@@ -29,10 +30,14 @@ import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentEntities;
 import com.ym.mec.biz.dal.entity.MusicGroupSubjectGoodsGroup;
 import com.ym.mec.biz.dal.entity.MusicGroupSubjectPlan;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
 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.service.MusicGroupService;
+import com.ym.mec.biz.service.SysUserCashAccountService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.entity.ImGroupMember;
 import com.ym.mec.common.entity.ImGroupModel;
@@ -63,7 +68,13 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 	
 	@Autowired
 	private ClassGroupStudentMapperDao classGroupStudentMapperDao;
-
+	
+	@Autowired
+	private StudentPaymentOrderDao studentPaymentOrderDao;
+	
+	@Autowired
+	private SysUserCashAccountService sysUserCashAccountService;
+	
 	@Override
 	public BaseDAO<String, MusicGroup> getDAO() {
 		return musicGroupDao;
@@ -114,7 +125,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()) };
@@ -146,7 +157,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 	@Override
 	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
 	public boolean cancelMusicGroup(String musicGroupId) {
-		MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
+		MusicGroup musicGroup = musicGroupDao.getLocked(musicGroupId);
 		if (musicGroup == null) {
 			throw new BizException("乐团找不到");
 		}
@@ -158,9 +169,22 @@ 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){
+			throw new BizException("缴费存在交易中的数据,不能取消乐团");
+		}
+		
+		//查询已缴费信息
+		studentPaymentOrders = studentPaymentOrderDao.queryByDealStatus(musicGroupId, OrderTypeEnum.APPLY, DealStatusEnum.SUCCESS);
 
 		// 退费
-
+		for(StudentPaymentOrder order : studentPaymentOrders){
+			sysUserCashAccountService.updateBalance(order.getUserId(), order.getActualAmount());
+		}
+		
 		return true;
 	}
 

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

@@ -23,7 +23,7 @@ public class MusicGroupSubjectGoodsGroupServiceImpl extends BaseServiceImpl<Long
 	}
 
 	@Override
-    public List<MusicGroupSubjectGoodsGroup> findGoodsGroup(Integer musicGroupId, Integer subId) {
+    public List<MusicGroupSubjectGoodsGroup> findGoodsGroup(String musicGroupId, Integer subId) {
         return musicGroupSubjectGoodsGroupDao.findGoodsGroup(musicGroupId, subId);
     }
 

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

@@ -53,12 +53,12 @@ public class MusicGroupSubjectPlanServiceImpl extends BaseServiceImpl<Integer, M
     }
 
     @Override
-    public MusicGroupSubjectPlan getMusicOneSubjectClassPlan(int musicGroupId, int subjectId) {
+    public MusicGroupSubjectPlan getMusicOneSubjectClassPlan(String musicGroupId, int subjectId) {
         return musicGroupSubjectPlanDao.getMusicOneSubjectClassPlan(musicGroupId, subjectId);
     }
 
     @Override
-    public MusicGroupSubjectGoodsAndInfoDto getSubjectGoodsAndInfo(Integer musicGroupId, Integer subjectId) {
+    public MusicGroupSubjectGoodsAndInfoDto getSubjectGoodsAndInfo(String musicGroupId, Integer subjectId) {
         MusicGroup musicGroup = musicGroupService.get(musicGroupId.toString());
 
         //课程形态

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

@@ -2,14 +2,13 @@ package com.ym.mec.biz.service.impl;
 
 import java.util.List;
 
-import com.ym.mec.biz.dal.enums.DealStatusEnum;
-import com.ym.mec.biz.dal.enums.OrderTypeEnum;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import com.ym.mec.biz.dal.dao.StudentPaymentOrderDao;
 import com.ym.mec.biz.dal.entity.Goods;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
+import com.ym.mec.biz.dal.enums.DealStatusEnum;
 import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
 import com.ym.mec.biz.service.StudentPaymentOrderService;
 import com.ym.mec.common.dal.BaseDAO;
@@ -27,7 +26,7 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
     }
 
     @Override
-    public List<Goods> queryApplyGoodsList(Integer musicGroupId, OrderDetailTypeEnum type) {
+    public List<Goods> queryApplyGoodsList(String musicGroupId, OrderDetailTypeEnum type) {
         return studentPaymentOrderDao.queryApplyGoodsList(musicGroupId, type);
     }
 

+ 14 - 14
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRechargeServiceImpl.java

@@ -1,24 +1,24 @@
 package com.ym.mec.biz.service.impl;
 
-import com.ym.mec.biz.dal.dao.StudentRegistrationDao;
-import com.ym.mec.biz.dal.entity.StudentRegistration;
+import java.util.Date;
+
+import javax.annotation.Resource;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import com.ym.mec.biz.dal.dao.StudentRechargeDao;
-import com.ym.mec.biz.dal.dao.SysUserCashAccountDao;
+import com.ym.mec.biz.dal.dao.StudentRegistrationDao;
 import com.ym.mec.biz.dal.dao.SysUserCashAccountDetailDao;
 import com.ym.mec.biz.dal.dto.RechargeDto;
 import com.ym.mec.biz.dal.entity.StudentRecharge;
 import com.ym.mec.biz.dal.entity.SysUserCashAccountDetail;
 import com.ym.mec.biz.dal.enums.PlatformCashAccountDetailTypeEnum;
 import com.ym.mec.biz.service.StudentRechargeService;
+import com.ym.mec.biz.service.SysUserCashAccountService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 
-import javax.annotation.Resource;
-import java.util.Date;
-
 @Service
 public class StudentRechargeServiceImpl extends BaseServiceImpl<String, StudentRecharge>  implements StudentRechargeService {
 	
@@ -26,9 +26,9 @@ public class StudentRechargeServiceImpl extends BaseServiceImpl<String, StudentR
 	private StudentRechargeDao studentRechargeDao;
     @Autowired
     private StudentRegistrationDao studentRegistrationDao;
-
-	@Resource
-	private SysUserCashAccountDao sysUserCashAccountDao;
+	
+	@Autowired
+	private SysUserCashAccountService sysUserCashAccountService;
 
 	@Resource
 	private SysUserCashAccountDetailDao sysUserCashAccountDetailDao;
@@ -40,17 +40,17 @@ public class StudentRechargeServiceImpl extends BaseServiceImpl<String, StudentR
 	@Override
 	public Boolean recharge(RechargeDto rechargeDto) {
 
-		//TODO 调用第三方支付
+		//TODO 锟斤拷锟矫碉拷锟斤拷锟斤拷支锟斤拷
 		Date now  = new Date();
 
-		//充值记
+		//锟斤拷值锟斤拷
         StudentRecharge studentRecharge = new StudentRecharge();
         studentRecharge.setAmount(rechargeDto.getRechargeAmount());
 		studentRecharge.setCreateTime(now);
 		studentRecharge.setUserId(rechargeDto.getUserId().longValue());
 		studentRecharge.setTransNo(null);
 		studentRechargeDao.insert(studentRecharge);
-		//账户资金流
+		//锟剿伙拷锟绞斤拷锟斤拷
 		SysUserCashAccountDetail cashAccount = new SysUserCashAccountDetail();
 		cashAccount.setAmount(rechargeDto.getRechargeAmount());
 		cashAccount.setBalance(null);
@@ -60,8 +60,8 @@ public class StudentRechargeServiceImpl extends BaseServiceImpl<String, StudentR
 		cashAccount.setCreateTime(now);
 		sysUserCashAccountDetailDao.insert(cashAccount);
 
-		//扣减账户
-		sysUserCashAccountDao.incrAccount(rechargeDto.getUserId(),rechargeDto.getRechargeAmount());
+		//锟桔硷拷锟剿伙拷
+		sysUserCashAccountService.updateBalance(rechargeDto.getUserId(),rechargeDto.getRechargeAmount());
 
 		return true;
 	}

+ 17 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java

@@ -9,13 +9,6 @@ import java.util.Map;
 
 import javax.annotation.Resource;
 
-import com.ym.mec.biz.dal.dto.VipGroupBuyParamsDto;
-import com.ym.mec.biz.dal.entity.*;
-import com.ym.mec.biz.dal.enums.*;
-import com.ym.mec.biz.service.StudentPaymentOrderDetailService;
-import com.ym.mec.biz.service.StudentPaymentOrderService;
-import com.ym.mec.common.exception.BizException;
-import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -28,7 +21,19 @@ import com.ym.mec.biz.dal.dao.StudentRegistrationDao;
 import com.ym.mec.biz.dal.dto.StudentApplyDetailDto;
 import com.ym.mec.biz.dal.dto.StudentFeeDto;
 import com.ym.mec.biz.dal.dto.StudentInfo;
+import com.ym.mec.biz.dal.entity.Goods;
+import com.ym.mec.biz.dal.entity.MusicGroupSubjectGoodsGroup;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail;
+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.OrderDetailTypeEnum;
+import com.ym.mec.biz.dal.enums.OrderTypeEnum;
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.page.StudentRegistrationQueryInfo;
+import com.ym.mec.biz.service.StudentPaymentOrderDetailService;
+import com.ym.mec.biz.service.StudentPaymentOrderService;
 import com.ym.mec.biz.service.StudentRegistrationService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.page.PageInfo;
@@ -217,4 +222,9 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         return studentPaymentOrder;
     }
 
+	@Override
+	public StudentRegistration queryByUserIdAndMusicGroupId(Integer userId, String musicGroupId) {
+		return studentRegistrationDao.queryByUserIdAndMusicGroupId(userId, musicGroupId);
+	}
+
 }

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

@@ -55,8 +55,8 @@ public class SubjectServiceImpl extends BaseServiceImpl<Integer, Subject>  imple
     }
 
     @Override
-    public List<Subject> findDefaultSubByGroupId(Integer musicGroupId) {
-        return subjectDao.findDefaultSubByGroupId(musicGroupId);
+    public List<Subject> findDefaultSubByChargeTypeId(Integer chargeTypeId) {
+        return subjectDao.findDefaultSubByChargeTypeId(chargeTypeId);
     }
 
     @Override

+ 23 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysUserCashAccountServiceImpl.java

@@ -1,12 +1,18 @@
 package com.ym.mec.biz.service.impl;
 
+import java.math.BigDecimal;
+import java.util.Date;
+
 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.entity.SysUserCashAccount;
 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
@@ -20,4 +26,21 @@ public class SysUserCashAccountServiceImpl extends BaseServiceImpl<Integer, SysU
 		return sysUserCashAccountDao;
 	}
 
+	@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);
+		}
+		
+		cashAccount.setBalance(cashAccount.getBalance().add(decimal));
+		cashAccount.setUpdateTime(new Date());
+		
+		sysUserCashAccountDao.update(cashAccount);
+		
+		return true;
+	}
+
 }

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

@@ -7,17 +7,19 @@ 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.*;
-import com.ym.mec.biz.dal.page.StudentVipGroupQueryInfo;
-import com.ym.mec.biz.dal.page.VipGroupAttendanceQueryInfo;
-import com.ym.mec.biz.dal.page.VipGroupQueryInfo;
-import com.ym.mec.biz.dal.page.VipGroupTeachingRecordQueryInfo;
+import com.ym.mec.biz.dal.page.*;
 import com.ym.mec.biz.service.CourseScheduleService;
+import com.ym.mec.biz.service.SysUserCashAccountService;
 import com.ym.mec.biz.service.VipGroupService;
 import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.entity.ImGroupMember;
+import com.ym.mec.common.entity.ImGroupModel;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.im.ImFeignService;
 import com.ym.mec.util.collection.MapUtil;
+
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -56,8 +58,10 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
     private StudentVipGroupPaymentDao studentVipGroupPaymentDao;
     @Autowired
 	private StudentApplyRefundsDao studentApplyRefundsDao;
-    @Autowired
-	private SysUserCashAccountDao sysUserCashAccountDao;
+	
+	@Autowired
+	private SysUserCashAccountService sysUserCashAccountService;
+
     @Autowired
 	private SysUserCashAccountDetailDao sysUserCashAccountDetailDao;
     @Autowired
@@ -66,6 +70,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 	private CourseScheduleStudentPaymentDao courseScheduleStudentPaymentDao;
     @Autowired
 	private CourseScheduleTeacherSalaryDao courseScheduleTeacherSalaryDao;
+    @Autowired
+	private ImFeignService imFeignService;
 
 	@Override
 	public BaseDAO<Long, VipGroup> getDAO() {
@@ -95,8 +101,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
         //获取活动信息
         VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupApplyBaseInfo().getVipGroupActivityId().intValue());
 		VipGroupSalarySettlementDto vipGroupSalarySettlementDto = JSON.parseObject(vipGroupActivity.getSalarySettlementJson(), VipGroupSalarySettlementDto.class);
-
-
+		
 		//生成vip课信息
 		VipGroupApplyBaseInfoDto vipGroupApplyBaseInfoDto=vipGroup.getVipGroupApplyBaseInfo();
 		vipGroupApplyBaseInfoDto.setTotalPrice(countVipGroupPredictFee(vipGroupApplyBaseInfoDto,
@@ -122,6 +127,12 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		vipGroupClassGroupMapper.setClassGroupId(classGroup.getId());
 		vipGroupClassGroupMapperDao.insert(vipGroupClassGroupMapper);
 
+		//创建融云班级群
+		// 指导老师加入群组
+		ImGroupMember[] imGroupMembers = { new ImGroupMember(vipGroup.getVipGroupApplyBaseInfo().getUserId().toString())};
+		// 创建群组
+		imFeignService.groupCreate(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
+
 		//创建班级老师关联记录
 		ClassGroupTeacherMapper classGroupTeacherMapper=new ClassGroupTeacherMapper();
 		classGroupTeacherMapper.setTeacherRole(TeachTypeEnum.BISHOP);
@@ -567,8 +578,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		studentApplyRefundsDao.update(oldStudentApplyRefunds);
 		switch (studentApplyRefunds.getStatus()){
 			case PASS:
-				sysUserCashAccountDao.incrAccount(oldStudentApplyRefunds.getUserId(),oldStudentApplyRefunds.getActualAmount());
-				SysUserCashAccount sysUserCashAccount = sysUserCashAccountDao.get(studentApplyRefunds.getId().intValue());
+				sysUserCashAccountService.updateBalance(oldStudentApplyRefunds.getUserId(),oldStudentApplyRefunds.getActualAmount());
+				SysUserCashAccount sysUserCashAccount = sysUserCashAccountService.get(studentApplyRefunds.getId().intValue());
 				SysUserCashAccountDetail sysUserCashAccountDetail=new SysUserCashAccountDetail();
 				sysUserCashAccountDetail.setUserId(studentApplyRefunds.getUserId());
 				sysUserCashAccountDetail.setType(PlatformCashAccountDetailTypeEnum.REFUNDS);
@@ -585,4 +596,29 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 				throw new BizException("审核状态错误!");
 		}
 	}
+
+	@Override
+	public PageInfo findVipGroupSalarys(VipGroupSalaryQueryInfo queryInfo) {
+
+    	if(Objects.isNull(queryInfo.getVipGroupId())){
+    		throw new BizException("请指定vip课程!");
+		}
+
+		PageInfo pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+		Map<String, Object> params = new HashMap<String, Object>();
+		MapUtil.populateMap(params, queryInfo);
+
+		List dataList = null;
+		int count = courseScheduleTeacherSalaryDao.countVipGroupSalarys(params);
+		if (count > 0) {
+			pageInfo.setTotal(count);
+			params.put("offset", pageInfo.getOffset());
+			dataList = courseScheduleTeacherSalaryDao.findVipGroupSalarys(params);
+		}
+		if (count == 0) {
+			dataList = new ArrayList<>();
+		}
+		pageInfo.setRows(dataList);
+		return pageInfo;
+	}
 }

+ 33 - 33
mec-biz/src/main/resources/config/contracts/courses.ftl

@@ -8,7 +8,7 @@
     <meta http-equiv="Cache-Control" content="no-cache" />
     <meta http-equiv="Expires" content="0" />
     <title>课程服务协议</title>
-    <style type="text/css">
+    <style>
         body { margin: 0; }
         header {
             height: .40rem;
@@ -74,9 +74,9 @@
 </head>
 <body style="font-family:'SimSun'">
     <div class="container">
-        <h1>课程服务协议</h1>
+        <h1>课程服务协议</h1>
         <!-- 甲方:深圳大雅乐盟网络教育股份有限公司 <br/> -->
-        甲方:深圳大雅乐盟网络教育股份有限公司 <br/>
+       甲方:深圳大雅乐盟网络教育股份有限公司 <br/>
         <div style="display: flex;">乙方:
             <div style="flex: 1 auto;">
                 <div class="iInfo">
@@ -94,69 +94,69 @@
                     <span>所在声部:${studentInfo.subject.name}</span>
                 </div>
             </div>
-        </div>  
+        </div> 
+            (本协议中“乙方“指学员及家长;”乙方学员“仅指参加甲方课程的学员;”乙方家长“仅指乙方学员的法定监护人。)
+        </div>
         为进一步提升器乐教学质量和服务品质,保证学员学习进度,明确培训各方的权责,经甲、乙双方协商一致,特订立本协议,以便共同遵守。
 
         <h2>一、课程信息</h2>
         
         <div class="iInfoContent">
-            <span>授课内容:{{proto}}</span>
-            <span>授课形式:{{proto}}</span>
-            <span>课次数量:{{proto}}</span>
-            <span>缴费金额:{{proto}}</span>
+            <span>授课类别:{{proto}}</span>
+            <span>课程费用:{{proto}}</span>
+            <span>收费形式:{{proto}}</span>
         </div>
 
         <h2>二、行为规范</h2>
-        乙方在选择甲方各类提高课程并签署本协议时视为乙方已经仔细阅读并同意遵守如下事项:
+        乙方学员在应服从甲方的管理,遵守甲方的制度。
         <h3>1.报名</h3>
         1.1无论是否源自指导老师或教务老师的建议,乙方选择参加甲方的课程,包括对授课形式、授课内容的选择,均为乙方自主意愿的表达及独立自主的选择。<br/>
-        1.2乙方应在所选课程开始前完成相应课程缴费,并完成报名手续。
+        1.2乙方应在所选课程开始前完成相应课程缴费,并完成报名手续。<br />
+        1.3甲方所有收费,均向乙方开具加盖公司印章的收款凭据,乙方务必妥善保管。
         <h3>2.上课</h3>
-        2.1乙方应按时到达甲方指定上课地点,作好课前准备;如发生迟到、或因自身原因早退等情况的,为避免影响老师后续课程的正常进行,授课老师除完成原定时间安排的授课外,将不再提供额外延长课时。<br/>
-        2.2乙方(含学员,下同)不得携带任何食品进入教室,所有进食应在课前完成;进入教室后,不得大声喧哗、追逐嬉戏,应当听从授课老师的安排;乙方应爱护公共财产和教学设施,严禁在桌椅上刻、划、涂、写等不文明行为;乙方未经授课老师同意,不得擅自使用教室内的乐器、音响、电视、空调等器材、设施,如造成此类器材、设施损坏的,乙方应照价赔偿。<br/>
-        2.3未经授课老师同意,乙方家长不得进入课堂,以免影响老师和学员上课;为保证训练质量及进度,学员应保证按照指导老师或教务老师所提出的要求在家练习,遇到专业问题应及时向指导老师请教,非专业问题可随时向教务老师反映。<br/>
-        2.4乙方家长应教育及监督学员务必注意个人安全,妥善保管个人财物,对于非甲方原因造成的人身安全事故或财物损失,由责任人自行承担
-        <h3>3.请假、休会及扣费</h3>
-        3.1基于教学进度和质量保证,本课程对于课程的延续性有严格要求,因此乙方应尽量避免请假。<br/>
-        3.2一对一课程有特殊情况需要请假的,应提前24小时以上以书面形式告知对应的授课老师,以便及时调整时间安排;一对多课程,不接受任何个人单独请假,如果集体请假,应提前24小时以上以书面形式告知对应的授课老师,未按本协议约定请假则当次课程视同已经教授,系统将自动结算课时并扣除相应费用。乙方请假后,应尽快预约补课时间完成补课。<br/>
-        3.3一对一课程以及一对二课程,乙方如遇特殊情况时,可向甲方或授课老师】申请办理临时休课。乙方可在6个月内申请复学,超过6个月未申请复课的,甲方有权按自动退会处理。一对二课程申请临时休课的,还需征得同组学员同意后方可申请休课。<br/>
+        2.1乙方学员应按时到达甲方指定上课地点,作好课前准备;如发生迟到、早退或因其他乙方原因未能按时上课的,视为乙方学员放弃该次课程,为避免影响老师后续课程的正常进行,授课老师除完成原定时间安排的授课外,将不再提供额外延长课时,也不会因乙方学员缺席而暂停教学课程。<br/>
+        2.2乙方学员不得携带任何食品进入教室,所有进食应在课前完成;进入教室后,不得大声喧哗、追逐嬉戏,应当听从授课老师的安排;乙方学员应爱护公共财产和教学设施,严禁在桌椅上刻、划、涂、写等不文明行为;乙方学员未经授课老师同意,不得擅自使用教室内的乐器、音响、电视、空调等器材、设施,如造成此类器材、设施损坏的,乙方应照价赔偿。<br/>
+        2.3乙方家长应教育及监督乙方学员务必注意个人安全,妥善保管个人财物,对于非甲方原因造成的人身安全事故或财物损失,由乙方自行承担。<br/>
+        2.4乙方违反上述规定给乐团或乐团其他成员造成任何不良影响的,乙方应尽力弥补并消除该不良影响
+        <h3>3.请假及其处理</h3>
+        3.1基于教学进度和质量保证,本课程对于课程的延续性有严格要求,因此乙方学员应尽量参加课程,无特殊情况则应避免请假。<br/>
+        3.2 VIP课程学员如有特殊情况需要请假的,应提前24小时以上以书面形式告知对应的授课老师,以便及时调整时间安排;VIP学员如遇特殊情况需要长期请假时,还可向□甲方/□授课老师申请办理临时休会。学员可在6个月内申请复学,超过6个月未申请复学的,甲方有权按自动退会处理。VIP课程为一对二课程的,其中一位学员申请临时休会的,还需征得同组另一位学员的同意后方可申请休会。<br/>
+        3.3鉴于团课的特殊性,甲方/乐团不接受团课学员个人单独请假,但如果因学校特殊安排等情形需要团课学员们集体请假的,乙方应提前24小时以上以书面形式告知对应的授课老师并同时提供学校的通知文件,否则当次课程视同已经教授完毕,系统将自动记录并结算课时并扣除相应课程费用。<br/>
         3.4每期课程相对应的有效期,乙方应在有效期内完成课程,10次课一期的,自交费之日起4个月内有效;20次课一期的,自交费之日起8个月内有效;40次课一期的,自交费之日起16个月内有效。如果由于指导老师请假等原因造成课程不能如期完成的,课程有效期将顺延;如课程超出有效期限,乙方所缴纳的课程费用将自动扣除逾期未完成的课时后自动清零。
-
         <h2>三、退费</h2>
-        1、一对一课程开课后,乙方要求退费的,乙方应在课程有效期内提出申请,甲方扣除报名费及未授课部分对应学费的20%后,将余款(不计息,下同)退还给乙方;如果乙方报名时享受打折优惠的,甲方先按照原价计算当期已上课时学费,再扣除报名费及未授课部分学费的20%后,将余款退还给乙方。<br/>
-        2、一对二课程开课后,乙方要求退费的,乙方应在课程有效期内提出申请,甲方扣除报名费及未授课部分的学费30%后,将余款退还给乙方;如果乙方报名时享受了打折优惠的,甲方先按照原价计算当期已上课时学费,再扣除报名费及未授课部分学费的30%后,将余款退还给乙方。<br/>
-        3、除一对一课程以及一对二课程之外的其他课程,课程开课后,甲方不接受任何原因的退款申请。<br/>
-        4、甲方所有收费,均向乙方开具加盖公司印章的收款凭据,乙方务必妥善保管,乙方按照本协议约定退费时,应向甲方出具该收费凭据原件方可办理。
-
+        1、VIP课程项下的一对一课程开课后,乙方要求退费的,乙方应在课程有效期内提出申请,甲方扣除报名费及未授课部分对应学费的20%后,将余款(不计息,下同)退还给乙方;如果乙方报名时享受打折优惠的,甲方先按照原价计算当期已上课时学费,再扣除报名费及未授课部分学费的20%后,将余款退还给乙方。<br/>
+        2、VIP课程项下的一对二课程开课后,乙方要求退费的,乙方应在课程有效期内提出申请,甲方扣除报名费及未授课部分的学费30%后,将余款退还给乙方;如果乙方报名时享受了打折优惠的,甲方先按照原价计算当期已上课时学费,再扣除报名费及未授课部分学费的30%后,将余款退还给乙方。<br/>
+        3、由于团课的特殊性,一旦课程开课后,除本协议另有约定外,甲方不接受任何原因的退费申请,如有特殊情况,请联系分部协商解决。
         <h2>四、违约责任</h2>
         1、当事人一方不履行合同义务或者履行合同义务不符合约定的,均构成违约,守约方有权以书面通知的方式要求违约方纠正其违约行为并采取及时、有效的补救措施消除违约后果,并赔偿守约方因违约方之违约行为而遭致的损失。若违约方在收到守约方的上述通知后5日内未纠正其违约行为的,守约方有权在做出书面通知的情况下,单方解除本协议,违约方应赔偿守约方因此遭致的全部损失。<br/>
         2、乙方应始终维护甲方的知识产权以及品牌形象,本协议期间以及本协议因任何原因失效、被撤销、解除或终止后,均不得直接或间接通过任何公众媒体(包括但不限于传统大众媒体,以及微信、微博、博客、直播平台等社交平台)发表损害甲方(包括但不限于其产品、服务及甲方授课老师)声誉的言论或实施任何类似行为,否则乙方应赔偿甲方因此遭受的全部损失。
+
         <h2>五、保密条款</h2>
         1、双方对本协议的条款、本协议的签订及履行情况以及通过签订和履行本协议而获知的对方及对方关联公司的任何信息均负有保密义务。任何一方不得以任何形式透露给第三方(有关法律法规要求和甲乙双方的法律、会计顾问、授权雇员除外),也不得擅自使用。<br/>
-        2、本保密义务期限不受本协议期限的限制。本协议失效、被撤销、解除或终止等任何情况下,双方均应遵守本保密义务。<br/>
+        2、本保密义务期限不受本协议期限的限制。本协议失效、被撤销、解除或终止等任何情况下,双方均应遵守本保密义务。
 
         <h2>六、不可抗力</h2>
         1、一方遇到不可抗力事件(指甲乙双方无法控制、无法预见或即使预见也无法避免的事件,该事件妨碍、影响或延误任何一方履行本协议的全部或部分义务,该事件包括但不限于自然灾害(如水灾、地震等)、火灾、政府行为、法律或政策变化(含学校合作变化)、战争或其他任何类似事件)时,受影响方应当立即书面通知对方,并告知该不可抗力事件对本协议可能产生的影响,并在该不可抗力事件发生后5日内向对方提供该事件的详细信息及由有关机构出具的解释受影响方因此无法履行本协议项下全部或部分义务的相关证明。<br/>
         2、由于上述不可抗力事件致使受影响方无法履行或无法按时履行本协议项下全部或部分义务的,双方于彼此间均不承担违约责任,但双方应在相互信任的基础上协商解决,尽力减少不可抗力事件对本协议的影响,并采取合理方式进行调整(包括但不限于另行签订补充协议等),尽量避免损失的扩大。<br/>
-        3、不可抗力事件消失或结束后,除双方另行协商一致外,受到不可抗力影响的一方应当立即采取措施继续履行本协议,如不可抗力事件持续30日以上的,则任何一方有权以书面通知对方的方式单方解除本协议。<br/>
-
+        3、不可抗力事件消失或结束后,除双方另行协商一致外,受到不可抗力影响的一方应当立即采取措施继续履行本协议,如不可抗力事件持续30日以上的,则任何一方有权以书面通知对方的方式单方解除本协议。
+        
         <h2>七、适用法律及争议解决方式</h2>
         1、本协议的订立、效力、履行、解释及争议解决均适用中华人民共和国法律。<br/>
-        2、因履行本协议发生的一切争议,甲乙双方应友好协商解决;如双方在发生争议后30日内无法通过协商解决时,任何一方有权向甲方所在地有管辖权的人民法院提起诉讼解决。<br/>
-
+        2、因履行本协议发生的一切争议,甲乙双方应友好协商解决;如双方在发生争议后30日内无法通过协商解决时,任何一方有权向甲方所在地有管辖权的人民法院提起诉讼解决。
+        
         <h2>八、其他</h2>
-        1、乙方同意,甲方有权在乙方学习和活动期间对其拍摄照片、视频,甲方对所拍摄的照片、视频有永久免费使用权。<br/>
+        1、乙方同意,甲方有权在乙方学习、上课、排练和活动期间对其拍摄照片、视频,甲方对所拍摄的照片、视频享有著作权,乙方同意甲方可合理使用该等照片、视频。<br/>
         2、未经甲方事先书面同意,乙方不得将本课程转让给乙方以外的任何第三方。<br/>
         3、双方确认并同意,本协议的电子版本与纸质版本具有同等法律效力。双方发生争议时,电子合同打印件可作为证据提交。双方通过网络以在线方式签订本协议的 ,则以乙方点击“确认”或“同意”等相关按钮或以电子签名的方式作为对合同内容的同意、确认以及本协议的签署;如双方签订纸质版本协议的,则本协议壹式贰份,甲方盖公章或合同专用章并且乙方签字作为有效签署方式,并且双方各执壹份,每份具有同等法律效力。<br/>
         4、本协议自双方按照本协议约定方式签署之日起生效,有效期至双方履行完本协议约定的全部义务时止。<br/>
         5、本协议未尽事宜或对本协议的任何修改、补充,有双方另行协商后以签订补充协议的方式解决,补充协议与本协议具有同等法律效力;双方没有约定也没有协商一致的,遵照相关法律法规规定执行。<br/>
-        6、双方因履行本协议而相互发出或者提供的所有通知、文件、资料,均以本协议中所列明的电话、APP推送消息送达,乙方如果变更电话号码的,应当自变更后1日内通知甲方且获得甲方确认,甲方通过电话、APP方式无法联系乙方或者甲方认为必要时,甲方也可以通过特快专递至乙方住址的方式向乙方发出上述任何通知、文件、资料等,并在甲方寄出特快专递后第5日视为送达成功。<br/>
-
+        6、双方因履行本协议而相互发出或者提供的所有通知、文件、资料,均以本协议中所列明的电话、APP推送消息送达,乙方如果变更电话号码的,应当自变更后1日内通知甲方且获得甲方确认,甲方通过电话、APP方式无法联系乙方或者甲方认为必要时,甲方也可以通过特快专递至乙方住址的方式向乙方发出上述任何通知、文件、资料等,并在甲方寄出特快专递后第5日视为送达成功。
+        
         <div class="signature">
             <div class="sign">甲方签章:深圳大雅乐盟网络教育股份有限公司
                 <span>日期:${.now?string("yyyy年MM月dd日")}</span>
             </div>
-            <div class="sign">乙方签字:{{proto}}
+            <div class="sign">乙方签字:${studentInfo.realName}
                 <span>日期:${.now?string("yyyy年MM月dd日")} </span>
             </div>
         </div>

+ 20 - 0
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -417,6 +417,26 @@
         GROUP BY
         cs.class_date_
     </select>
+
+    <select id="getCourseScheduleDate" resultType="java.util.Date">
+        SELECT
+            cs.class_date_
+        FROM
+            music_group mg
+            LEFT JOIN class_group cg ON mg.id_ = cg.music_group_id_
+            LEFT JOIN course_schedule cs ON cg.id_ = cs.class_group_id_
+        WHERE
+            mg.organ_id_ = 1 AND cs.id_ IS NOT NULL
+            <if test="month==null">
+                AND DATE_FORMAT( NOW(), '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
+            </if>
+            <if test="month!=null">
+                AND DATE_FORMAT( #{month}, '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
+            </if>
+        GROUP BY
+            cs.class_date_
+    </select>
+
     <select id="findClassSubjects" resultType="string">
         SELECT
             CONCAT(cg.id_,'-',IF(GROUP_CONCAT(s.name_) IS NULL,'',GROUP_CONCAT(s.name_)))

+ 40 - 0
mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml

@@ -96,4 +96,44 @@ create_time_ = #{createTime},
 	<select id="queryCount" resultType="int">
 		SELECT COUNT(*) FROM course_schedule_teacher_salary
 	</select>
+
+	<resultMap id="VipGroupSalaryDto" type="com.ym.mec.biz.dal.dto.VipGroupSalaryDto" extends="CourseScheduleTeacherSalary">
+		<result column="course_schedule_id_" property="courseScheduleId" />
+		<result column="class_date_" property="classDate" />
+		<result column="teach_mode_" property="teachMode" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler" />
+	</resultMap>
+
+	<sql id="vipGroupSalaryQueryCondition">
+		<where>
+			vg.id=#{vipGroupId} AND FIND_IN_SET(#{organId},vg.organ_id_list_)
+			<if test="startTime!=null and endTime!=null">
+				AND (cs.class_date BETWEEN #{startTime} AND #{endTime})
+			</if>
+		</where>
+	</sql>
+
+	<select id="findVipGroupSalarys" resultMap="VipGroupSalaryDto">
+		SELECT
+			cs.id_ course_schedule_id_,
+			CONCAT(cs.class_date_," ",cs.start_class_time_) class_date_,
+			cs.teach_mode_,
+			csts.*
+		FROM
+			vip_group vg
+			LEFT JOIN vip_group_class_group_mapper vgcgm ON vg.id_ = vgcgm.vip_group_id_
+			LEFT JOIN course_schedule cs ON vgcgm.class_group_id_ = cs.class_group_id_
+			LEFT JOIN course_schedule_teacher_salary csts ON cs.id_ = csts.course_schedule_id_
+			<include refid="vipGroupSalaryQueryCondition"/>
+		ORDER BY id_
+		<include refid="global.limit"/>
+	</select>
+	<select id="countVipGroupSalarys" resultType="int">
+		SELECT
+			COUNT(*)
+		FROM
+			vip_group vg
+			LEFT JOIN vip_group_class_group_mapper vgcgm ON vg.id_ = vgcgm.vip_group_id_
+			LEFT JOIN course_schedule cs ON vgcgm.class_group_id_ = cs.class_group_id_
+		<include refid="vipGroupSalaryQueryCondition"/>
+	</select>
 </mapper>

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

@@ -33,6 +33,10 @@
 		SELECT * FROM
 		music_group WHERE id_ = #{id}
 	</select>
+	
+	<select id="getLocked" resultMap="MusicGroup">
+		SELECT * FROM music_group WHERE id_ = #{id} for update
+	</select>
 
 	<!-- 全查询 -->
 	<select id="findAll" resultMap="MusicGroup">

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

@@ -10,6 +10,7 @@
         <result column="id_" property="id"/>
         <result column="music_group_id_" property="musicGroupId"/>
         <result column="user_id_" property="userId"/>
+        <result column="subject_id_" property="subjectId"/>
         <result column="course_fee_" property="courseFee"/>
         <result column="next_payment_date_" property="nextPaymentDate"/>
         <result column="latest_paid_time_" property="latestPaidTime"/>
@@ -31,8 +32,8 @@
     <!-- 向数据库增加一条记录 -->
     <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.MusicGroupStudentFee" useGeneratedKeys="true"
             keyColumn="id" keyProperty="id">
-		INSERT INTO music_group_student_fee_ (id_,music_group_id_,user_id_,course_fee_,create_time_,update_time_,next_payment_date_,latest_paid_time_,continuous_absenteeism_times_)
-		VALUES(#{id},#{musicGroupId},#{userId},#{courseFee},now(),now(),#{nextPaymentDate},#{latestPaidTime},#{continuousAbsenteeismTimes})
+		INSERT INTO music_group_student_fee_ (id_,music_group_id_,user_id_,course_fee_,create_time_,update_time_,next_payment_date_,latest_paid_time_,continuous_absenteeism_times_,subject_id_)
+		VALUES(#{id},#{musicGroupId},#{userId},#{courseFee},now(),now(),#{nextPaymentDate},#{latestPaidTime},#{continuousAbsenteeismTimes},#{subjectId})
 	</insert>
 
     <!-- 根据主键查询一条记录 -->
@@ -42,6 +43,9 @@
             <if test="userId != null">
                 user_id_ = #{userId},
             </if>
+            <if test="subjectId != null">
+                subject_id_ = #{subjectId},
+            </if>
             <if test="updateTime != null">
                 update_time_ = #{updateTime},
             </if>

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

@@ -159,4 +159,8 @@
     <select id="findOrderByOrderNo" resultMap="StudentPaymentOrder">
         SELECT * FROM student_payment_order WHERE order_no_ = #{orderNo}
     </select>
+    
+    <select id="queryByDealStatus" resultMap="StudentPaymentOrder" parameterType="map">
+        SELECT * FROM student_payment_order WHERE music_group_id_= #{musicGroupId} AND user_id_=#{userId} AND type_ = #{type} AND status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+    </select>
 </mapper>

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

@@ -252,4 +252,8 @@
     <select id="queryStudentInfo" resultMap="StudentInfo">
         SELECT u.*,sr.name_,sr.current_class_,sr.current_grade_,sr.actual_subject_id_ FROM sys_user u left join student_registration  sr on u.id_ = sr.user_id_ where u.id_ = #{userId} order by sr.create_time_ desc limit 0,1
     </select>
+    
+    <select id="queryByUserIdAndMusicGroupId" resultMap="StudentRegistration" parameterType="map">
+    	select * from student_registration where music_group_id_ = #{musicGroupId} and user_id_ = #{userId}
+    </select>
 </mapper>

+ 4 - 9
mec-biz/src/main/resources/config/mybatis/SubjectMapper.xml

@@ -95,15 +95,10 @@
         SELECT * FROM subject <include refid="querySubPageSql"/>
     </select>
 
-    <select id="findDefaultSubByGroupId" resultMap="Subject">
-        SELECT s.id_,s.name_,g.name_ goods_name_,g.id_ goods_id_,ctsm.kit_group_purchase_type_,ctsm.deposit_fee_,ctsm.fee_
-        FROM music_group mg
-        LEFT JOIN charge_type_subject_mapper ctsm ON ctsm.charge_type_id_ = mg.charge_type_id_
-        LEFT JOIN `subject` s ON ctsm.subject_id_ = s.id_
-        LEFT JOIN subject_goods_mapper sgm ON s.id_ = sgm.subject_id_
-        LEFT JOIN goods_category gc ON gc.id_ = sgm.goods_category_id_
-        LEFT JOIN goods g ON gc.id_ = g.goods_category_id_
-        WHERE mg.id_ = #{musicGroupId}
+    <select id="findDefaultSubByChargeTypeId" resultMap="Subject">
+        SELECT s.* FROM charge_type_subject_mapper ctsm
+        LEFT JOIN `subject` s ON subject_id_ = s.id_
+        WHERE ctsm.charge_type_id_ = #{chargeTypeId}
     </select>
 
     <resultMap id="subApplyDetail" type="com.ym.mec.biz.dal.dto.SubjectApplyDetailDto">

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

@@ -21,6 +21,10 @@
     <select id="get" resultMap="SysUserCashAccount">
 		SELECT * FROM sys_user_cash_account WHERE user_id_ = #{userId} 
 	</select>
+	
+    <select id="getLocked" resultMap="SysUserCashAccount">
+		SELECT * FROM sys_user_cash_account WHERE user_id_ = #{userId} for update
+	</select>
 
     <!-- 全查询 -->
     <select id="findAll" resultMap="SysUserCashAccount">
@@ -85,7 +89,4 @@
 		SELECT COUNT(*) FROM sys_user_cash_account
 	</select>
 
-    <update id="incrAccount">
-        update sys_user_cash_account set balance_ = balance_ + #{amount} where  user_id_ = #{userId}
-    </update>
 </mapper>

+ 2 - 0
mec-education/src/main/java/com/ym/mec/education/EducationApplication.java

@@ -5,6 +5,7 @@ import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
 import org.springframework.cloud.client.loadbalancer.LoadBalanced;
+import org.springframework.cloud.openfeign.EnableFeignClients;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;
@@ -15,6 +16,7 @@ import com.spring4all.swagger.EnableSwagger2Doc;
 @MapperScan({"com.ym.mec.education.mapper", "com.ym.mec.biz.dal.dao"})
 @SpringBootApplication
 @EnableDiscoveryClient
+@EnableFeignClients("com.ym.mec")
 @ComponentScan(basePackages = {"com.ym.mec", "org.snaker"})
 @Configuration
 @EnableSwagger2Doc

+ 27 - 5
mec-education/src/main/java/com/ym/mec/education/controller/CourseScheduleController.java

@@ -1,8 +1,9 @@
 package com.ym.mec.education.controller;
 
+import com.ym.mec.biz.dal.dto.ClassDateAdjustDto;
+import com.ym.mec.biz.service.CourseScheduleService;
 import com.ym.mec.education.base.BaseResponse;
 import com.ym.mec.education.base.PageResponse;
-import com.ym.mec.education.entity.CourseSchedule;
 import com.ym.mec.education.req.ClassGroupReq;
 import com.ym.mec.education.req.CourseScheduleReq;
 import com.ym.mec.education.resp.CourseScheduleResp;
@@ -12,10 +13,9 @@ import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Objects;
 
 /**
  * @program: mec
@@ -31,6 +31,8 @@ public class CourseScheduleController {
 
     @Autowired
     private ICourseScheduleService courseScheduleService;
+    @Autowired
+    private CourseScheduleService scheduleService;
 
     @PostMapping("/list")
     @ApiOperation("课表列表")
@@ -57,4 +59,24 @@ public class CourseScheduleController {
         return courseScheduleService.courseInfo(courseScheduleReq);
     }
 
+    @ApiOperation(value = "课时调整")
+    @PostMapping(value = "/classStartDateAdjust")
+    public Object classStartDateAdjust(ClassDateAdjustDto classDateAdjustDto){
+        if(Objects.isNull(classDateAdjustDto.getId())){
+            return BaseResponse.errorParam();
+        }
+        scheduleService.classStartDateAdjust(classDateAdjustDto);
+        return BaseResponse.success(null);
+    }
+
+    @ApiOperation(value = "课时交换")
+    @GetMapping(value = "/courseSwap")
+    public Object courseSwap(Long courseScheduleId1,Long courseScheduleId2){
+        if(Objects.isNull(courseScheduleId1)||Objects.isNull(courseScheduleId2)){
+            return BaseResponse.errorParam();
+        }
+        scheduleService.courseSwap(courseScheduleId1,courseScheduleId2);
+        return BaseResponse.success(null);
+    }
+
 }

+ 0 - 38
mec-education/src/main/java/com/ym/mec/education/controller/UserController.java

@@ -1,38 +0,0 @@
-package com.ym.mec.education.controller;
-
-import javax.annotation.Resource;
-
-import com.alibaba.fastjson.JSONObject;
-import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.education.base.BaseResponse;
-import com.ym.mec.education.service.ISubjectService;
-
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * @program: mec
- * @description: 声部
- * @author: xw
- * @create: 2019-10-01 11:25
- */
-@RestController
-@RequestMapping("api/user")
-@Api(tags = "用户")
-public class UserController {
-
-    @Autowired
-    private SysUserFeignService sysUserFeignService;
-
-    @PostMapping("/detail")
-    @ApiOperation("个人明细")
-    public BaseResponse list() {
-        return BaseResponse.success(sysUserFeignService.queryUserInfo());
-    }
-}

+ 0 - 25
mec-education/src/main/java/com/ym/mec/education/feign/UserFeign.java

@@ -1,25 +0,0 @@
-package com.ym.mec.education.feign;
-
-import com.ym.mec.auth.api.entity.SysUser;
-import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.stereotype.Component;
-import org.springframework.web.bind.annotation.GetMapping;
-
-/**
- * @program: mec
- * @description: 用户信息rpc
- * @author: xw
- * @create: 2019-10-10 18:53
- */
-@FeignClient(value = "auth-server", fallback = Exception.class)
-@Component
-public interface UserFeign {
-
-    /**
-     * 获取当前登录人信息
-     *
-     * @return
-     */
-    @GetMapping(value = "user/queryUserInfo")
-    SysUser getCurrentUser();
-}

+ 2 - 0
mec-education/src/main/java/com/ym/mec/education/resp/MessageResp.java

@@ -23,6 +23,8 @@ public class MessageResp implements Serializable {
     private Integer attendanceCount;
     @ApiModelProperty(value = "其他类型消息数量")
     private Integer otherStatusCount;
+    @ApiModelProperty(value = "首页总消息数量")
+    private Integer totalCount;
     @ApiModelProperty(value = "当前登录人姓名")
     private String userName;
     @ApiModelProperty(value = "当前登录人id")

+ 5 - 4
mec-education/src/main/java/com/ym/mec/education/service/impl/SysMessageServiceImpl.java

@@ -2,6 +2,7 @@ package com.ym.mec.education.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.enums.MessageSendMode;
 import com.ym.mec.education.base.BaseResponse;
@@ -10,7 +11,6 @@ import com.ym.mec.education.entity.Teacher;
 import com.ym.mec.education.entity.TeacherAttendance;
 import com.ym.mec.education.enums.JobTypeEnum;
 import com.ym.mec.education.enums.SignStatusEnum;
-import com.ym.mec.education.feign.UserFeign;
 import com.ym.mec.education.mapper.SysMessageMapper;
 import com.ym.mec.education.resp.MessageResp;
 import com.ym.mec.education.service.ISysMessageService;
@@ -21,6 +21,7 @@ import org.snaker.engine.access.QueryFilter;
 import org.snaker.engine.entity.Task;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
 import java.util.List;
 import java.util.Objects;
 import java.util.Optional;
@@ -36,8 +37,8 @@ import java.util.Optional;
 @Service("ISysMessageService")
 public class SysMessageServiceImpl extends ServiceImpl<SysMessageMapper, SysMessage> implements ISysMessageService {
 
-    @Autowired
-    private UserFeign userFeign;
+    @Resource
+    private SysUserFeignService userFeign;
     @Autowired
     private IQueryService taskQueryService;
     @Autowired
@@ -47,7 +48,7 @@ public class SysMessageServiceImpl extends ServiceImpl<SysMessageMapper, SysMess
 
     @Override
     public BaseResponse getInfo() {
-        SysUser currentUser = userFeign.getCurrentUser();
+        SysUser currentUser = userFeign.queryUserInfo();
         if (Objects.isNull(currentUser)) {
             return BaseResponse.noDataExists();
         }

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

@@ -29,12 +29,12 @@ import java.util.List;
 @Configuration
 public class SealClassConfiguration {
 
-    @Bean
+    /*@Bean
     public <K, V> RedisTemplate<K, V> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
         RedisTemplate<K, V> redisTemplate = new RedisTemplate<>();
         redisTemplate.setConnectionFactory(redisConnectionFactory);
         return redisTemplate;
-    }
+    }*/
 
     @Bean
     public GlobalExceptionHandlerAdvice globalExceptionAdvice() {

+ 32 - 15
mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupController.java

@@ -1,29 +1,46 @@
 package com.ym.mec.student.controller;
 
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+
+import javax.annotation.Resource;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dto.MusicGroupSubjectGoodsAndInfoDto;
 import com.ym.mec.biz.dal.dto.RegisterPayDto;
-import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.entity.Goods;
+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.OrderTypeEnum;
-import com.ym.mec.biz.service.*;
+import com.ym.mec.biz.service.GoodsService;
+import com.ym.mec.biz.service.MusicGroupService;
+import com.ym.mec.biz.service.MusicGroupSubjectGoodsGroupService;
+import com.ym.mec.biz.service.MusicGroupSubjectPlanService;
+import com.ym.mec.biz.service.PayService;
+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.util.string.IdWorker;
-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.http.HttpStatus;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-import java.math.BigDecimal;
-import java.util.*;
 
 @RequestMapping("musicGroup")
 @Api(tags = "乐团服务")
@@ -82,7 +99,7 @@ public class MusicGroupController extends BaseController {
     @GetMapping("/getSubjectGoodsAndInfo")
     @ApiImplicitParams({@ApiImplicitParam(name = "musicGroupId", value = "乐团编号", required = true, dataType = "Integer"),
             @ApiImplicitParam(name = "subjectId", value = "声部编号", required = true, dataType = "Integer")})
-    public HttpResponseResult getSubjectGoodsAndInfo(Integer musicGroupId, Integer subjectId) {
+    public HttpResponseResult getSubjectGoodsAndInfo(String musicGroupId, Integer subjectId) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         MusicGroupSubjectGoodsAndInfoDto subjectGoodsAndInfo = musicGroupSubjectPlanService.getSubjectGoodsAndInfo(musicGroupId, subjectId);
         return succeed(subjectGoodsAndInfo);

+ 0 - 13
mec-teacher/src/main/java/com/ym/mec/teacher/controller/App.java

@@ -1,13 +0,0 @@
-package com.ym.mec.teacher.controller;
-
-/**
- * Hello world!
- *
- */
-public class App 
-{
-    public static void main( String[] args )
-    {
-        System.out.println( "Hello World!" );
-    }
-}

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

@@ -35,7 +35,7 @@ public class ClassGroupController extends BaseController {
 
     @ApiOperation(value = "新增合奏班")
     @PostMapping("/addMixClass")
-    public Object addMixClass(@ApiParam(value = "乐团编号", required = true) @RequestParam Integer musicGroupId,
+    public Object addMixClass(@ApiParam(value = "乐团编号", required = true) @RequestParam String musicGroupId,
                               @ApiParam(value = "班级名称", required = true) String name,
                               @ApiParam(value = "班级编号,号分割", required = true) String classGroupIds) throws Exception {
         return succeed(classGroupService.addMixClassGroup(musicGroupId, name, classGroupIds));

+ 2 - 2
mec-web/src/main/java/com/ym/mec/web/controller/StudentRegistrationController.java

@@ -72,9 +72,9 @@ public class StudentRegistrationController extends BaseController {
             @ApiImplicitParam(name = "musicGroupId", value = "乐团编号", required = true, dataType = "String")})
     public Object queryFeeDetail(String studentId,String musicGroupId) {
         if (StringUtils.isEmpty(studentId) || StringUtils.isEmpty(musicGroupId)) {
-            return succeed(studentRegistrationService.queryFeeDetail(Integer.parseInt(studentId), musicGroupId));
+            return failed("参数校验异常");
         }
-        return failed();
+        return succeed(studentRegistrationService.queryFeeDetail(Integer.parseInt(studentId), musicGroupId));
     }
 
     @ApiOperation(value = "获取未分班的学生")

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

@@ -63,10 +63,10 @@ public class SubjectController extends BaseController {
     }
 
     @ApiOperation(value = "通过乐团收费类型,获取默认的声部列表")
-    @GetMapping("/findDefaultSubByGroupId")
-    @ApiImplicitParams({ @ApiImplicitParam(name = "musicGroupId", value = "乐团编号", required = true, dataType = "Integer")})
-    public Object findDefaultSubByGroupId(Integer musicGroupId){
-        return succeed(subjectService.findDefaultSubByGroupId(musicGroupId));
+    @GetMapping("/findDefaultSubByChargeTypeId")
+    @ApiImplicitParams({ @ApiImplicitParam(name = "chargeTypeId", value = "收费类型编号", required = true, dataType = "Integer")})
+    public Object findDefaultSubByChargeTypeId(Integer chargeTypeId){
+        return succeed(subjectService.findDefaultSubByChargeTypeId(chargeTypeId));
     }
 
     @ApiOperation(value = "修改、新增声部关联的商品列表")