Explorar o código

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

yonge %!s(int64=5) %!d(string=hai) anos
pai
achega
dddf014cb8
Modificáronse 19 ficheiros con 442 adicións e 168 borrados
  1. 25 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupDao.java
  2. 3 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupTeacherMapperDao.java
  3. 14 5
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupStudentFeeDao.java
  4. 9 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SubjectDao.java
  5. 33 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseListDto.java
  6. 46 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherClassGroupDto.java
  7. 66 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherClassHeadInfo.java
  8. 11 2
      mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java
  9. 10 4
      mec-biz/src/main/java/com/ym/mec/biz/service/SubjectService.java
  10. 57 6
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  11. 1 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/DemoGroupServiceImpl.java
  12. 17 6
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SubjectServiceImpl.java
  13. 24 85
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
  14. 55 10
      mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml
  15. 2 1
      mec-biz/src/main/resources/config/mybatis/DemoGroupMapper.xml
  16. 16 1
      mec-biz/src/main/resources/config/mybatis/MusicGroupStudentFeeMapper.xml
  17. 6 0
      mec-biz/src/main/resources/config/mybatis/SubjectMapper.xml
  18. 17 40
      mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupController.java
  19. 30 0
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/ClassGroupController.java

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

@@ -2,9 +2,7 @@ package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.ClassGroup;
-import com.ym.mec.biz.dal.entity.VipGroup;
 import com.ym.mec.common.dal.BaseDAO;
-
 import com.ym.mec.common.entity.ImGroupModel;
 import com.ym.mec.common.entity.ImUserModel;
 import org.apache.ibatis.annotations.Param;
@@ -81,6 +79,22 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
     List<TeacherMusicClassInfoDto> queryGroupCourses(Integer userId);
 
     /**
+     * 获取老师VIP课程信息列表
+     *
+     * @param params
+     * @return
+     */
+    List<TeacherVipClassInfoDto> getTeacherVipClass(Map<String, Object> params);
+
+    /**
+     * count老师VIP课程信息列表
+     *
+     * @param params
+     * @return
+     */
+    int countTeacherVipClass(Map<String, Object> params);
+
+    /**
      * 获取乐团所有班级列表
      *
      * @param musicGroupId
@@ -236,4 +250,13 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
      */
     List<Map<Integer, Long>> countTeacherVipNum(String teacherIds);
 
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/10/17
+     * @params [teacherId]
+     * @return java.util.List<com.ym.mec.biz.dal.dto.TeacherClassGroupDto>
+     * @describe 获取老师vip课班级
+     */
+    List<TeacherClassGroupDto> findTeacherVipClassGroup(@Param("teacherId") Long teacherId);
+
 }

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

@@ -2,7 +2,6 @@ package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.biz.dal.entity.ClassGroupTeacherMapper;
 import com.ym.mec.common.dal.BaseDAO;
-
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -32,4 +31,7 @@ public interface ClassGroupTeacherMapperDao extends BaseDAO<Long, ClassGroupTeac
      * @return
      */
     int delMusicGroupTeacherMapper(@Param("classGroupTeacherMapperList") List<ClassGroupTeacherMapper> classGroupTeacherMapperList);
+
+
+
 }

+ 14 - 5
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupStudentFeeDao.java

@@ -1,12 +1,12 @@
 package com.ym.mec.biz.dal.dao;
 
-import java.util.Date;
-import java.util.List;
-
-import org.apache.ibatis.annotations.Param;
-
 import com.ym.mec.biz.dal.entity.MusicGroupStudentFee;
 import com.ym.mec.common.dal.BaseDAO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
 
 public interface MusicGroupStudentFeeDao extends BaseDAO<Long, MusicGroupStudentFee> {
 
@@ -46,4 +46,13 @@ public interface MusicGroupStudentFeeDao extends BaseDAO<Long, MusicGroupStudent
 	 * @return
 	 */
 	int batchUpdate(List<MusicGroupStudentFee> updateList);
+
+	/**
+	 * @Author: Joburgess
+	 * @Date: 2019/10/17
+	 * @params [musicGroupIds]
+	 * @return java.util.List<java.util.Map<java.lang.Long,java.lang.Integer>>
+	 * @describe 统计乐团下连续旷课超过次数的学生人数
+	 */
+	List<Map<Long,Integer>> countContinuosAbsenteeismStudentNum(@Param("musicGroupIds") List<Long> musicGroupIds);
 }

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

@@ -1,18 +1,15 @@
 package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.biz.dal.dto.ConditionDto;
-import com.ym.mec.biz.dal.dto.QueryConditionDto;
 import com.ym.mec.biz.dal.dto.SubjectApplyDetailDto;
 import com.ym.mec.biz.dal.dto.UserGoodsDto;
 import com.ym.mec.biz.dal.entity.Subject;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.common.dal.BaseDAO;
-
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 
 public interface SubjectDao extends BaseDAO<Integer, Subject> {
 
@@ -80,4 +77,13 @@ public interface SubjectDao extends BaseDAO<Integer, Subject> {
      * @return
      */
     List<Map<Integer, String>> queryNameByIds(@Param("subjectIds") String subjectIds);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/10/17
+     * @params [subjectIds]
+     * @return java.util.List<java.util.Map<java.lang.Integer,java.lang.String>>
+     * @describe 根据科目编号获取部门编号,部门名称
+     */
+    List<Map<Long,String>> findBySubjecIds(@Param("subjectIds") List<String> subjectIds);
 }

+ 33 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseListDto.java

@@ -4,8 +4,6 @@ import com.ym.mec.biz.dal.entity.MusicGroupStudentFee;
 import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
 import io.swagger.annotations.ApiModelProperty;
 
-import java.util.List;
-
 public class CourseListDto {
 
     @ApiModelProperty(value = "班级类型", required = true)
@@ -35,6 +33,15 @@ public class CourseListDto {
     @ApiModelProperty(value = "上课模式",required = true)
     private String teachMode;
 
+    @ApiModelProperty(value = "课程形式")
+    private int classMode;
+
+    @ApiModelProperty(value = "线上课数")
+    private Integer onlineClassesNum;
+
+    @ApiModelProperty(value = "线下课数")
+    private Integer offLineClassesNum;
+
     @ApiModelProperty(value = "单节课时",required = true)
     private Integer singleClassMinutes;
 
@@ -44,6 +51,30 @@ public class CourseListDto {
     //续费状态
     private MusicGroupStudentFee.PaymentStatus paymentStatus;
 
+    public Integer getOnlineClassesNum() {
+        return onlineClassesNum;
+    }
+
+    public void setOnlineClassesNum(Integer onlineClassesNum) {
+        this.onlineClassesNum = onlineClassesNum;
+    }
+
+    public Integer getOffLineClassesNum() {
+        return offLineClassesNum;
+    }
+
+    public void setOffLineClassesNum(Integer offLineClassesNum) {
+        this.offLineClassesNum = offLineClassesNum;
+    }
+
+    public int getClassMode() {
+        return classMode;
+    }
+
+    public void setClassMode(int classMode) {
+        this.classMode = classMode;
+    }
+
     public MusicGroupStudentFee.PaymentStatus getPaymentStatus() {
         return paymentStatus;
     }

+ 46 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherClassGroupDto.java

@@ -2,6 +2,8 @@ package com.ym.mec.biz.dal.dto;
 
 import io.swagger.annotations.ApiModelProperty;
 
+import java.util.Date;
+
 /**
  * @Author Joburgess
  * @Date 2019/10/17
@@ -44,6 +46,50 @@ public class TeacherClassGroupDto {
     @ApiModelProperty(value = "连续3节课未签到人数")
     private Integer threeClassNoAttendanceStudentNum;
 
+    @ApiModelProperty(value = "剩余课时数")
+    private Integer surplusClassTimes;
+
+    @ApiModelProperty(value = "预计缴费截止时间,课程开始时间")
+    private Date paymentExpireDate;
+
+    @ApiModelProperty(value = "课程结束时间")
+    private Date coursesExpireDate;
+
+    @ApiModelProperty(value = "单节课时")
+    private Integer singleClassTimes;
+
+    public Date getPaymentExpireDate() {
+        return paymentExpireDate;
+    }
+
+    public void setPaymentExpireDate(Date paymentExpireDate) {
+        this.paymentExpireDate = paymentExpireDate;
+    }
+
+    public Date getCoursesExpireDate() {
+        return coursesExpireDate;
+    }
+
+    public void setCoursesExpireDate(Date coursesExpireDate) {
+        this.coursesExpireDate = coursesExpireDate;
+    }
+
+    public Integer getSingleClassTimes() {
+        return singleClassTimes;
+    }
+
+    public void setSingleClassTimes(Integer singleClassTimes) {
+        this.singleClassTimes = singleClassTimes;
+    }
+
+    public Integer getSurplusClassTimes() {
+        return surplusClassTimes;
+    }
+
+    public void setSurplusClassTimes(Integer surplusClassTimes) {
+        this.surplusClassTimes = surplusClassTimes;
+    }
+
     public String getSubjectIdList() {
         return subjectIdList;
     }

+ 66 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherClassHeadInfo.java

@@ -0,0 +1,66 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.entity.ClassGroup;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Author Joburgess
+ * @Date 2019/10/17
+ */
+public class TeacherClassHeadInfo extends ClassGroup {
+
+    @ApiModelProperty(value = "主教编号")
+    private Long bishopTeacherId;
+
+    @ApiModelProperty(value = "主教名称")
+    private String bishopTeacher;
+
+    @ApiModelProperty(value = "助教编号")
+    private Long teachingTeacherId;
+
+    @ApiModelProperty(value = "助教名称")
+    private String teachingTeacher;
+
+    @ApiModelProperty(value = "班级全部学生名称,vip课用")
+    private String studentNames;
+
+    public String getStudentNames() {
+        return studentNames;
+    }
+
+    public void setStudentNames(String studentNames) {
+        this.studentNames = studentNames;
+    }
+
+    public Long getBishopTeacherId() {
+        return bishopTeacherId;
+    }
+
+    public void setBishopTeacherId(Long bishopTeacherId) {
+        this.bishopTeacherId = bishopTeacherId;
+    }
+
+    public String getBishopTeacher() {
+        return bishopTeacher;
+    }
+
+    public void setBishopTeacher(String bishopTeacher) {
+        this.bishopTeacher = bishopTeacher;
+    }
+
+    public Long getTeachingTeacherId() {
+        return teachingTeacherId;
+    }
+
+    public void setTeachingTeacherId(Long teachingTeacherId) {
+        this.teachingTeacherId = teachingTeacherId;
+    }
+
+    public String getTeachingTeacher() {
+        return teachingTeacher;
+    }
+
+    public void setTeachingTeacher(String teachingTeacher) {
+        this.teachingTeacher = teachingTeacher;
+    }
+}

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

@@ -205,9 +205,18 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
     /**
      * @Author: Joburgess
      * @Date: 2019/10/17
-     * @params []
+     * @params [type]
      * @return java.util.List<com.ym.mec.biz.dal.dto.TeacherClassGroupDto>
      * @describe 获取老师所在班级列表
      */
-    List<TeacherClassGroupDto> findTeacherClassGroups();
+    List<TeacherClassGroupDto> findTeacherClassGroups(String type);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/10/17
+     * @params [classGroupId]
+     * @return com.ym.mec.biz.dal.dto.TeacherClassHeadInfo
+     * @describe 获取班级信息
+     */
+    TeacherClassHeadInfo findTeaherClassGroupInfo(Long classGroupId);
 }

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

@@ -1,18 +1,15 @@
 package com.ym.mec.biz.service;
 
 import com.ym.mec.biz.dal.dto.ConditionDto;
-import com.ym.mec.biz.dal.dto.QueryConditionDto;
 import com.ym.mec.biz.dal.dto.SubjectApplyDetailDto;
-import com.ym.mec.biz.dal.entity.MusicGroupSubjectGoodsGroup;
 import com.ym.mec.biz.dal.entity.Subject;
 import com.ym.mec.biz.dal.entity.SubjectGoodsMapper;
 import com.ym.mec.biz.dal.page.SubjectQueryInfo;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 
-import org.apache.ibatis.annotations.Param;
-
 import java.util.List;
+import java.util.Map;
 
 public interface SubjectService extends BaseService<Integer, Subject> {
 
@@ -70,4 +67,13 @@ public interface SubjectService extends BaseService<Integer, Subject> {
     List<Subject> findTeacherSubjects();
 
     List<ConditionDto> findSubjectConditions();
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/10/17
+     * @params [subjectIdsList]
+     * @return java.util.Map<java.lang.Long,java.lang.String>
+     * @describe 根据部门编号列表获取部门编号,名称map
+     */
+    Map<Long,String> findSubjectMapBySubjectIdsList(List<String> subjectIdsList);
 }

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

@@ -23,6 +23,7 @@ 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 org.springframework.util.CollectionUtils;
 
 import java.math.BigDecimal;
 import java.time.Instant;
@@ -62,6 +63,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     private MusicGroupStudentFeeDao musicGroupStudentFeeDao;
     @Autowired
     private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private SubjectService subjectService;
 
     @Override
     public BaseDAO<Integer, ClassGroup> getDAO() {
@@ -338,12 +341,20 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             params.put("offset", pageInfo.getOffset());
             courseListDtos = classGroupDao.queryCoursePage(params);
             courseListDtos.forEach(e -> {
-                if ("VIP".equals(e.getTeachMode())) {
+                if (ClassGroupTypeEnum.VIP==e.getType()) {
                     //获取vip课的学生名称列表
                     List<String> vipStuNames = classGroupDao.findVipStuNames(e.getMusicGroupId());
                     if (vipStuNames != null && vipStuNames.size() > 0) {
-                        StringUtils.join(vipStuNames, ",");
-                        e.setStudentNames(StringUtils.join());
+                        e.setStudentNames(StringUtils.join(vipStuNames, ","));
+                    }
+                    if(e.getOffLineClassesNum()>0&&e.getOffLineClassesNum()<=0){
+                        e.setClassMode(1);
+                    }else if(e.getOffLineClassesNum()>0&&e.getOffLineClassesNum()>0){
+                        e.setClassMode(3);
+                    }else if(e.getOnlineClassesNum()<0&&e.getOffLineClassesNum()>=0){
+                        e.setClassMode(2);
+                    }else{
+                        e.setClassMode(0);
                     }
                 } else {
                     //获取学员乐团课的续费状态
@@ -495,16 +506,50 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     }
 
     @Override
-    public List<TeacherClassGroupDto> findTeacherClassGroups() {
+    public List<TeacherClassGroupDto> findTeacherClassGroups(String type) {
         SysUser user = sysUserFeignService.queryUserInfo();
         if(Objects.isNull(user)){
             throw new BizException("请登录");
         }
 
-        List<TeacherClassGroupDto> teacherMusicClassGroup = classGroupDao.findTeacherMusicClassGroup(user.getId().longValue());
+        List<TeacherClassGroupDto> teacherMusicClassGroup;
+        switch (type){
+            case "VIP":
+                teacherMusicClassGroup = classGroupDao.findTeacherVipClassGroup(user.getId().longValue());
+                break;
+            case "MUSIC_GROUP":
+                teacherMusicClassGroup = classGroupDao.findTeacherMusicClassGroup(user.getId().longValue());
+                break;
+            default:
+                throw new BizException("请指定课程类型");
+        }
+        if(CollectionUtils.isEmpty(teacherMusicClassGroup)){
+            return teacherMusicClassGroup;
+        }
+
+        List<String> subjectIdsList = teacherMusicClassGroup.stream().map(teacherClassGroupDto -> teacherClassGroupDto.getSubjectIdList()).collect(Collectors.toList());
+        Map<Long, String> subjectMapBySubjectIdsList = subjectService.findSubjectMapBySubjectIdsList(subjectIdsList);
 
+        List<Long> musicGroupIds = teacherMusicClassGroup.stream().map(teacherClassGroupDto -> teacherClassGroupDto.getMusicGroupId()).collect(Collectors.toList());
+        List<Map<Long, Integer>> musicGroupIdAndNumList = musicGroupStudentFeeDao.countContinuosAbsenteeismStudentNum(musicGroupIds);
+        Map<Long, Integer> musicGroupIdAndNum = MapUtil.convertMybatisMap(musicGroupIdAndNumList);
 
-        return null;
+        teacherMusicClassGroup.forEach(teacherClassGroupDto -> {
+            String subjectIdList=teacherClassGroupDto.getSubjectIdList();
+            if(StringUtils.isNotEmpty(subjectIdList)){
+                if(Objects.nonNull(musicGroupIdAndNum)&&Objects.nonNull(musicGroupIdAndNum.get(teacherClassGroupDto.getMusicGroupId()))){
+                    teacherClassGroupDto.setThreeClassNoAttendanceStudentNum(musicGroupIdAndNum.get(teacherClassGroupDto.getMusicGroupId()));
+                }
+                String[] subjectIds = subjectIdList.split(",");
+                List<String> subjectNameList=new ArrayList<>();
+                for (String subjectId : subjectIds) {
+                    subjectNameList.add(subjectMapBySubjectIdsList.get(Integer.parseInt(subjectId)));
+                }
+                teacherClassGroupDto.setSubjectNames(StringUtils.join(subjectNameList,","));
+            }
+        });
+
+        return teacherMusicClassGroup;
     }
 
     @Override
@@ -521,4 +566,10 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
         return true;
     }
+
+    @Override
+    public TeacherClassHeadInfo findTeaherClassGroupInfo(Long classGroupId) {
+
+        return null;
+    }
 }

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

@@ -63,6 +63,7 @@ public class DemoGroupServiceImpl extends BaseServiceImpl<Long, DemoGroup>  impl
 		}
 
 		demoGroupApplyDto.setUserId(user.getId());
+		demoGroupApplyDto.setOrganIdList(user.getOrganId().toString());
 		demoGroupDao.insert(demoGroupApplyDto);
 		demoGroupCoursesPlanDao.batchInsertByDates(demoGroupApplyDto.getCourseDates(),
 				demoGroupApplyDto.getId(),

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

@@ -1,12 +1,10 @@
 package com.ym.mec.biz.service.impl;
 
 import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.StudentRegistrationDao;
 import com.ym.mec.biz.dal.dao.SubjectDao;
 import com.ym.mec.biz.dal.dao.SubjectGoodsMapperDao;
 import com.ym.mec.biz.dal.dto.ConditionDto;
-import com.ym.mec.biz.dal.dto.QueryConditionDto;
 import com.ym.mec.biz.dal.dto.SubjectApplyDetailDto;
 import com.ym.mec.biz.dal.entity.Subject;
 import com.ym.mec.biz.dal.entity.SubjectGoodsMapper;
@@ -16,14 +14,13 @@ import com.ym.mec.biz.service.SubjectService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
-
 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;
+import org.springframework.util.CollectionUtils;
 
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 @Service
@@ -143,4 +140,18 @@ public class SubjectServiceImpl extends BaseServiceImpl<Integer, Subject>  imple
     public List<ConditionDto> findSubjectConditions() {
         return subjectDao.findSubjectConditions();
     }
+
+    @Override
+    public Map<Long, String> findSubjectMapBySubjectIdsList(List<String> subjectIdsList) {
+        if(CollectionUtils.isEmpty(subjectIdsList)){
+            return new HashMap<>();
+        }
+        String subjectIdsString = StringUtils.join(subjectIdsList, ",");
+        String[] split = subjectIdsString.split(",");
+        List<String> subjectIds=new ArrayList<>(Arrays.asList(split));
+        subjectIds = subjectIds.stream().distinct().collect(Collectors.toList());
+        List<Map<Long, String>> bySubjecIds = subjectDao.findBySubjecIds(subjectIds);
+        Map<Long,String> subjectIdAndName = MapUtil.convertMybatisMap(bySubjecIds);
+        return subjectIdAndName;
+    }
 }

+ 24 - 85
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -1,93 +1,15 @@
 package com.ym.mec.biz.service.impl;
 
-import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.stream.Collectors;
-
-import org.apache.commons.lang.StringUtils;
-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 org.springframework.util.CollectionUtils;
-
 import com.alibaba.fastjson.JSON;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.dao.ClassGroupDao;
-import com.ym.mec.biz.dal.dao.ClassGroupStudentMapperDao;
-import com.ym.mec.biz.dal.dao.ClassGroupTeacherMapperDao;
-import com.ym.mec.biz.dal.dao.ClassGroupTeacherSalaryDao;
-import com.ym.mec.biz.dal.dao.CourseScheduleDao;
-import com.ym.mec.biz.dal.dao.CourseScheduleTeacherSalaryDao;
-import com.ym.mec.biz.dal.dao.StudentApplyRefundsDao;
-import com.ym.mec.biz.dal.dao.StudentPaymentOrderDao;
-import com.ym.mec.biz.dal.dao.StudentVipGroupPaymentDao;
-import com.ym.mec.biz.dal.dao.SubjectDao;
-import com.ym.mec.biz.dal.dao.SysUserCashAccountDetailDao;
-import com.ym.mec.biz.dal.dao.TeacherDefaultVipGroupSalaryDao;
-import com.ym.mec.biz.dal.dao.VipGroupActivityDao;
-import com.ym.mec.biz.dal.dao.VipGroupCategoryDao;
-import com.ym.mec.biz.dal.dao.VipGroupClassGroupMapperDao;
-import com.ym.mec.biz.dal.dao.VipGroupDao;
-import com.ym.mec.biz.dal.dao.VipGroupDefaultClassesUnitPriceDao;
-import com.ym.mec.biz.dal.dto.StudentVipGroupDetailDto;
-import com.ym.mec.biz.dal.dto.TeachingRecordBaseInfo;
-import com.ym.mec.biz.dal.dto.VipGroupApplyBaseInfoDto;
-import com.ym.mec.biz.dal.dto.VipGroupApplyDto;
-import com.ym.mec.biz.dal.dto.VipGroupBuyParamsDto;
-import com.ym.mec.biz.dal.dto.VipGroupCostCountDto;
-import com.ym.mec.biz.dal.dto.VipGroupCostCountParamsDto;
-import com.ym.mec.biz.dal.dto.VipGroupManageDetailDto;
-import com.ym.mec.biz.dal.dto.VipGroupSalaryBaseInfo;
-import com.ym.mec.biz.dal.dto.VipGroupSalaryDto;
-import com.ym.mec.biz.dal.dto.VipGroupSalarySettlementDto;
-import com.ym.mec.biz.dal.entity.ClassGroup;
-import com.ym.mec.biz.dal.entity.ClassGroupTeacherMapper;
-import com.ym.mec.biz.dal.entity.ClassGroupTeacherSalary;
-import com.ym.mec.biz.dal.entity.CourseSchedule;
+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.entity.CourseSchedule.CourseScheduleType;
-import com.ym.mec.biz.dal.entity.StudentApplyRefunds;
-import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
-import com.ym.mec.biz.dal.entity.StudentVipGroupPayment;
-import com.ym.mec.biz.dal.entity.SysUserCashAccount;
-import com.ym.mec.biz.dal.entity.SysUserCashAccountDetail;
-import com.ym.mec.biz.dal.entity.TeacherDefaultVipGroupSalary;
-import com.ym.mec.biz.dal.entity.VipGroup;
-import com.ym.mec.biz.dal.entity.VipGroupActivity;
-import com.ym.mec.biz.dal.entity.VipGroupCategory;
-import com.ym.mec.biz.dal.entity.VipGroupClassGroupMapper;
-import com.ym.mec.biz.dal.entity.VipGroupDefaultClassesUnitPrice;
-import com.ym.mec.biz.dal.enums.AuditStatusEnum;
-import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
-import com.ym.mec.biz.dal.enums.CourseStatusEnum;
-import com.ym.mec.biz.dal.enums.DealStatusEnum;
-import com.ym.mec.biz.dal.enums.OrderTypeEnum;
-import com.ym.mec.biz.dal.enums.PlatformCashAccountDetailTypeEnum;
-import com.ym.mec.biz.dal.enums.TeachModeEnum;
-import com.ym.mec.biz.dal.enums.TeachTypeEnum;
-import com.ym.mec.biz.dal.enums.VipGroupActivityTypeEnum;
-import com.ym.mec.biz.dal.enums.VipGroupStatusEnum;
-import com.ym.mec.biz.dal.enums.YesOrNoEnum;
-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.VipGroupSalaryQueryInfo;
-import com.ym.mec.biz.dal.page.VipGroupTeachingRecordQueryInfo;
-import com.ym.mec.biz.service.ClassGroupService;
-import com.ym.mec.biz.service.CourseScheduleRewardsRulesService;
-import com.ym.mec.biz.service.CourseScheduleService;
-import com.ym.mec.biz.service.CourseScheduleStudentPaymentService;
-import com.ym.mec.biz.service.CourseScheduleTeacherSalaryService;
-import com.ym.mec.biz.service.PayService;
-import com.ym.mec.biz.service.SysUserCashAccountDetailService;
-import com.ym.mec.biz.service.SysUserCashAccountService;
-import com.ym.mec.biz.service.VipGroupService;
+import com.ym.mec.biz.dal.enums.*;
+import com.ym.mec.biz.dal.page.*;
+import com.ym.mec.biz.service.*;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.entity.ImGroupMember;
 import com.ym.mec.common.entity.ImGroupModel;
@@ -96,6 +18,16 @@ 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;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.stream.Collectors;
 
 @Service
 public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> implements VipGroupService {
@@ -187,7 +119,13 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
             throw new BizException("线上课课时数量安排有误!");
         }
 
-        //获取活动信息
+		SysUser sysUser = sysUserFeignService.queryUserById(vipGroup.getVipGroupApplyBaseInfo().getUserId());
+
+        if(Objects.isNull(sysUser)){
+        	throw new BizException("该用户不存在");
+		}
+
+		//获取活动信息
         VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupApplyBaseInfo().getVipGroupActivityId().intValue());
 
 		//生成vip课信息
@@ -201,6 +139,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 				vipGroupApplyBaseInfoDto.getOnlineClassesUnitPrice(),
 				vipGroupApplyBaseInfoDto.getOfflineClassesUnitPrice()).get("totalPrice"));
 		vipGroupApplyBaseInfoDto.setStatus(VipGroupStatusEnum.APPLYING);
+		vipGroupApplyBaseInfoDto.setOrganId(sysUser.getOrganId());
 		vipGroupDao.insert(vipGroupApplyBaseInfoDto);
 
 		//获取vip课类型信息

+ 55 - 10
mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml

@@ -237,25 +237,31 @@
         <result column="current_class_times_" property="currentClassTimes"/>
         <result column="address_" property="address"/>
         <result column="single_class_minutes_" property="singleClassMinutes"/>
+        <result column="online_classes_num_" property="onlineClassesNum"/>
+        <result column="offline_classes_num_" property="offLineClassesNum"/>
     </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_
+        music_group_id_,
+        0 online_classes_num_,
+        0 offline_classes_num_,
+        cg.create_time_
         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_
+        music_group_id_,
+        IF(vg.online_classes_num_ IS NULL,0,vg.online_classes_num_) online_classes_num_,
+        IF(vg.offline_classes_num_ IS NULL,0,vg.offline_classes_num_) offline_classes_num_,
+        cg.create_time_
         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_
@@ -433,9 +439,13 @@
         <result property="schoolId" column="school_id_"/>
         <result property="schoolName" column="school_name_"/>
         <result property="subjectIdList" column="subject_id_list_"/>
+        <result property="surplusClassTimes" column="surplus_class_times_"/>
+        <result property="paymentExpireDate" column="payment_expire_date_"/>
+        <result property="coursesExpireDate" column="courses_expire_date_"/>
+        <result property="singleClassTimes" column="single_class_minutes_"/>
     </resultMap>
 
-    <select id="findTeacherMusicClassGroup" resultType="com.ym.mec.biz.dal.dto.TeacherClassGroupDto">
+    <select id="findTeacherMusicClassGroup" resultMap="TeacherClassGroupDto">
         SELECT
             cg.id_ class_group_id_,
             cg.name_ class_group_name_,
@@ -443,16 +453,51 @@
             cg.current_class_times_,
             cg.total_class_times_,
             cg.subject_id_list_,
+            COUNT(cg.id_) surplus_class_times_,
             mg.id_ music_group_id_,
             mg.name_ music_group_name_,
             s.id_ school_id_,
             s.name_ school_name_
         FROM
-            class_group_teacher_mapper cgtm
-            LEFT JOIN class_group cg ON cgtm.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 cgtm.user_id_=#{teacherId} AND cg.type_!="VIP" AND cg.type_!="DEMO"
+            course_schedule_teacher_salary csts
+            LEFT JOIN course_schedule cs ON cs.id_ = csts.course_schedule_id_
+            LEFT JOIN class_group cg 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
+            csts.user_id_ = #{teacherId}
+            AND cs.status_ != 'OVER'
+            AND cs.type_ != 'VIP'
+            AND cs.type_ != 'DEMO'
+            AND csts.expect_salary_!=0
+        GROUP BY cg.id_
+    </select>
+    <select id="findTeacherVipClassGroup" resultMap="TeacherClassGroupDto">
+        SELECT
+            cg.id_ class_group_id_,
+            cg.name_ class_group_name_,
+            vg.payment_expire_date_,
+            vg.courses_expire_date_,
+            vg.single_class_minutes_,
+            cg.total_class_times_,
+            COUNT(vg.id_) surplus_class_times_,
+            mg.id_ music_group_id_,
+            mg.name_ music_group_name_,
+            s.id_ school_id_,
+            s.name_ school_name_
+        FROM
+            vip_group vg
+            LEFT JOIN vip_group_class_group_mapper vgcgm ON vg.id_ = vgcgm.vip_group_id_
+            LEFT JOIN class_group cg ON vgcgm.class_group_id_=cg.id_
+            LEFT JOIN course_schedule cs ON cg.id_=cs.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
+            cs.actual_teacher_id_ = #{teacherId}
+            AND cs.status_ != 'OVER'
+            AND cs.type_ = 'VIP'
+        GROUP BY
+            vg.id_,cg.id_
     </select>
 
     <!-- 增加实际学生人数 -->

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

@@ -131,8 +131,9 @@ create_time_ = #{createTime},
 			CONCAT(dgcp.course_date_,' ',dgcp.start_time_) start_class_time_,
 			DATE_ADD( CONCAT(dgcp.course_date_,' ',dgcp.start_time_),INTERVAL #{demoGroup.singleClassMinutes} MINUTE) end_class_time_,
 			#{demoGroup.userId} teacher_id_,
+			#{demoGroup.userId} actual_teacher_id_,
 			'ONLINE' teach_mode_,
-			'demo' type_
+			'DEMO' type_
 		FROM
 			demo_group_courses_plan dgcp
 			WHERE dgcp.id_=#{coursePlanId}

+ 16 - 1
mec-biz/src/main/resources/config/mybatis/MusicGroupStudentFeeMapper.xml

@@ -114,7 +114,22 @@
     <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>
-    
+
+    <select id="countContinuosAbsenteeismStudentNum" resultType="java.util.Map">
+        SELECT
+            music_group_id_ AS 'key',
+            COUNT( id_ ) AS 'value'
+        FROM
+            music_group_student_fee_
+        WHERE
+            continuous_absenteeism_times_ &gt;=3
+            AND music_group_id_ IN
+            <foreach collection="musicGroupIds" item="musicGroupId" open="(" close=")" separator=",">
+                #{musicGroupId}
+            </foreach>
+        GROUP BY music_group_id_
+    </select>
+
     <update id="batchUpdate" parameterType="java.util.List">
     	<foreach collection="list" item="item" index="index" open="" close="" separator=";">
         UPDATE music_group_student_fee_

+ 6 - 0
mec-biz/src/main/resources/config/mybatis/SubjectMapper.xml

@@ -132,6 +132,12 @@
     <select id="queryNameByIds" resultType="java.util.Map">
         select id_ `key`,name_ `value` FROM `subject` s WHERE FIND_IN_SET(s.id_,#{subjectIds})
     </select>
+    <select id="findBySubjecIds" resultType="java.util.Map">
+        select id_ `key`,name_ `value` FROM `subject` s WHERE s.id_ IN
+        <foreach collection="subjectIds" item="subjectId" open="(" close=")" separator=",">
+            #{subjectId}
+        </foreach>
+    </select>
 
     <sql id="querySubPageSql">
         <where>

+ 17 - 40
mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupController.java

@@ -1,54 +1,31 @@
 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.ui.ModelMap;
-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.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.*;
 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;
-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.biz.dal.enums.*;
+import com.ym.mec.biz.service.*;
 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;
+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.ui.ModelMap;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
 
 @RequestMapping("musicGroup")
 @Api(tags = "乐团服务")
@@ -176,7 +153,7 @@ public class MusicGroupController extends BaseController {
 	}
 
     @ApiOperation(value = "退团")
-    @GetMapping("/quitMusicGroup")
+    @PostMapping("/quitMusicGroup")
     @ApiImplicitParams({@ApiImplicitParam(name = "musicGroupId", value = "乐团id", required = true, dataType = "String")})
 	public HttpResponseResult quitMusicGroup(String musicGroupId) throws Exception {
 		SysUser sysUser = sysUserFeignService.queryUserInfo();

+ 30 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/controller/ClassGroupController.java

@@ -0,0 +1,30 @@
+package com.ym.mec.teacher.controller;
+
+import com.ym.mec.biz.service.ClassGroupService;
+import com.ym.mec.common.controller.BaseController;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @Author Joburgess
+ * @Date 2019/10/17
+ */
+@Api(tags = "班级服务")
+@RequestMapping("classGroup")
+@RestController
+public class ClassGroupController extends BaseController {
+
+    @Autowired
+    private ClassGroupService classGroupService;
+
+    @ApiOperation(value = "教师课程获取")
+    @GetMapping("/findTeacherClassGroups")
+    public Object findTeacherClassGroups(String type){
+        return succeed(classGroupService.findTeacherClassGroups(type));
+    }
+
+}