Explorar o código

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

yonge %!s(int64=5) %!d(string=hai) anos
pai
achega
3c3b94033f
Modificáronse 23 ficheiros con 341 adicións e 45 borrados
  1. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupDao.java
  2. 14 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupDao.java
  3. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/OrganizationDao.java
  4. 11 4
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentManageDao.java
  5. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysUserCashAccountDao.java
  6. 17 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherDefaultPracticeGroupSalaryDao.java
  7. 14 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/VipGroupDao.java
  8. 79 9
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentManageListDto.java
  9. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentManageService.java
  10. 13 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/PracticeGroupServiceImpl.java
  11. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SchoolServiceImpl.java
  12. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SporadicChargeInfoImpl.java
  13. 47 9
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentManageServiceImpl.java
  14. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherServiceImpl.java
  15. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
  16. 8 3
      mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml
  17. 1 0
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  18. 19 0
      mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml
  19. 8 0
      mec-biz/src/main/resources/config/mybatis/OrganizationMapper.xml
  20. 17 6
      mec-biz/src/main/resources/config/mybatis/StudentManageDao.xml
  21. 4 1
      mec-biz/src/main/resources/config/mybatis/TeacherDefaultPracticeGroupSalaryMapper.xml
  22. 18 0
      mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml
  23. 41 1
      mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

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

@@ -637,4 +637,11 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
      */
     int deleteByGroup(@Param("groupId") String groupId,
                       @Param("groupType")GroupType groupType);
+
+    /**
+     * 获取vip所有班级列表
+     * @param vipGroupIds
+     * @return
+     */
+    Set<Integer> queryClassGroupIds(@Param("vipGroupIds") Set<Long> vipGroupIds);
 }

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

@@ -210,4 +210,18 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
      * @return
      */
     MusicGroup findByClassId(Integer groupId);
+
+    /**
+     * 获取用户所在乐团名
+     * @param userIds
+     * @return
+     */
+    List<Map<Integer,String>> queryUserMusicNames(@Param("userIds") Set<Integer> userIds);
+
+    /**
+     * 获取用户再乐团的状态
+     * @param userIds
+     * @return
+     */
+    List<Map<Integer,String>> queryUserMusicStatus(@Param("userIds") Set<Integer> userIds);
 }

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

@@ -6,6 +6,7 @@ import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 public interface OrganizationDao extends BaseDAO<Integer, Organization> {
 
@@ -38,6 +39,13 @@ public interface OrganizationDao extends BaseDAO<Integer, Organization> {
     List<Map<Integer,String>> findOrganNameMap(String organIds);
 
     /**
+     * 根据分部编号获取分部名称map
+     * @param organIds
+     * @return
+     */
+    List<Map<Integer,String>> findOrganNameMapList(@Param("organIds") Set<Integer> organIds);
+
+    /**
      * 获取分部名称
      * @param organId
      * @return

+ 11 - 4
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentManageDao.java

@@ -213,7 +213,7 @@ public interface StudentManageDao {
      * @param userId
      * @return
      */
-    Long getHasCourse(Integer userId);
+    Integer getHasCourse(Integer userId);
 
     /**
      * 获取签到学员数
@@ -258,19 +258,26 @@ public interface StudentManageDao {
      * @param userIds
      * @return
      */
-    List<Map<Integer,Integer>> getHasPracticeCourse(@Param("userIds") List<Integer> userIds);
+    List<Map<Integer,Integer>> getHasPracticeCourse(@Param("userIds") Set<Integer> userIds);
 
     /**
      * 是否激活
      * @param userIds
      * @return
      */
-    List<Map<Integer,Integer>> getIsActive(@Param("userIds") List<Integer> userIds);
+    List<Map<Integer,Integer>> getIsActive(@Param("userIds") Set<Integer> userIds);
 
     /**
      * 是否预约陪练课
      * @param userIds
      * @return
      */
-    List<Map<Integer,Integer>> getIsMake(@Param("userIds") List<Integer> userIds);
+    List<Map<Integer,Integer>> getIsMake(@Param("userIds") Set<Integer> userIds);
+
+    /**
+     * 获取用户所属声部
+     * @param userIds
+     * @return
+     */
+    List<Map<Integer,Integer>> querySubjectNames(@Param("userIds") Set<Integer> userIds);
 }

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

@@ -5,6 +5,7 @@ import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Set;
 
 public interface SysUserCashAccountDao extends BaseDAO<Integer, SysUserCashAccount> {
 	
@@ -22,6 +23,6 @@ public interface SysUserCashAccountDao extends BaseDAO<Integer, SysUserCashAccou
 	 * @param userIds: 用户编号列表
 	 * @return java.util.List<com.ym.mec.biz.dal.entity.SysUserCashAccount>
 	 */
-	List<SysUserCashAccount> findByUserIds(@Param("userIds") List<Integer> userIds);
+	List<SysUserCashAccount> findByUserIds(@Param("userIds") Set<Integer> userIds);
 
 }

+ 17 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherDefaultPracticeGroupSalaryDao.java

@@ -1,9 +1,10 @@
 package com.ym.mec.biz.dal.dao;
 
-import java.util.List;
-
 import com.ym.mec.biz.dal.entity.TeacherDefaultPracticeGroupSalary;
 import com.ym.mec.common.dal.BaseDAO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 public interface TeacherDefaultPracticeGroupSalaryDao extends BaseDAO<Long, TeacherDefaultPracticeGroupSalary> {
 
@@ -17,4 +18,17 @@ public interface TeacherDefaultPracticeGroupSalaryDao extends BaseDAO<Long, Teac
     int deleteByUserId(Integer userId);
     
     int batchInsert(List<TeacherDefaultPracticeGroupSalary> teacherDefaultPracticeGroupSalaryList);
-}
+
+    /**
+     * @describe 根据用户和课程时长获取教师课酬
+     * @author Joburgess
+     * @date 2020/2/19
+     * @param userId: 教师编号
+     * @param minutes: 课程时长
+     * @return com.ym.mec.biz.dal.entity.TeacherDefaultPracticeGroupSalary
+     */
+    TeacherDefaultPracticeGroupSalary findByTeacherAndCourseMinutes(@Param("userId")Integer userId,
+																	@Param("minutes") Integer minutes);
+
+
+}

+ 14 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/VipGroupDao.java

@@ -10,6 +10,7 @@ import org.apache.ibatis.annotations.Param;
 import java.math.BigDecimal;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 public interface VipGroupDao extends BaseDAO<Long, VipGroup> {
 
@@ -321,4 +322,17 @@ public interface VipGroupDao extends BaseDAO<Long, VipGroup> {
 
     VipGroup findVipGroupInfo(@Param("id") Integer id, @Param("classGroupId") Integer classGroupId);
 
+    /**
+     * 获取用户所在vip名
+     * @param userIds
+     * @return
+     */
+    List<Map<Integer,String>> queryUserVipNames(@Param("userIds") Set<Integer> userIds);
+
+    /**
+     * 获取用户所在vip状态
+     * @param userIds
+     * @return
+     */
+    List<Map<Integer,String>> queryUserVipStatus(@Param("userIds") Set<Integer> userIds);
 }

+ 79 - 9
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentManageListDto.java

@@ -45,15 +45,85 @@ public class StudentManageListDto {
     @ApiModelProperty(value = "课程余额")
     private BigDecimal courseBalance;
     
-    private Boolean isActive;
+    private YesOrNoEnum isActive;
 
-    private Boolean isMake;
+    private YesOrNoEnum isMake;
 
-    private Long hasCourse;
+    private YesOrNoEnum hasCourse;
 
     @ApiModelProperty(value = "是否有陪练课")
     private YesOrNoEnum hasPracticeCourse;
 
+    private String musicGroupName;
+
+    private Integer organId;
+
+    private String organName;
+
+    private String subjectName;
+
+    private String musicGroupStatus;
+
+    private String vipGroupName;
+
+    private String vipGroupStatus;
+
+    public Integer getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(Integer organId) {
+        this.organId = organId;
+    }
+
+    public String getMusicGroupName() {
+        return musicGroupName;
+    }
+
+    public void setMusicGroupName(String musicGroupName) {
+        this.musicGroupName = musicGroupName;
+    }
+
+    public String getOrganName() {
+        return organName;
+    }
+
+    public void setOrganName(String organName) {
+        this.organName = organName;
+    }
+
+    public String getSubjectName() {
+        return subjectName;
+    }
+
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
+    }
+
+    public String getMusicGroupStatus() {
+        return musicGroupStatus;
+    }
+
+    public void setMusicGroupStatus(String musicGroupStatus) {
+        this.musicGroupStatus = musicGroupStatus;
+    }
+
+    public String getVipGroupName() {
+        return vipGroupName;
+    }
+
+    public void setVipGroupName(String vipGroupName) {
+        this.vipGroupName = vipGroupName;
+    }
+
+    public String getVipGroupStatus() {
+        return vipGroupStatus;
+    }
+
+    public void setVipGroupStatus(String vipGroupStatus) {
+        this.vipGroupStatus = vipGroupStatus;
+    }
+
     public YesOrNoEnum getHasPracticeCourse() {
         return hasPracticeCourse;
     }
@@ -62,19 +132,19 @@ public class StudentManageListDto {
         this.hasPracticeCourse = hasPracticeCourse;
     }
 
-    public Boolean getIsMake() {
+    public YesOrNoEnum getIsMake() {
         return isMake;
     }
 
-    public void setIsMake(Boolean make) {
+    public void setIsMake(YesOrNoEnum make) {
         isMake = make;
     }
 
-    public Long getHasCourse() {
+    public YesOrNoEnum getHasCourse() {
         return hasCourse;
     }
 
-    public void setHasCourse(Long hasCourse) {
+    public void setHasCourse(YesOrNoEnum hasCourse) {
         this.hasCourse = hasCourse;
     }
 
@@ -166,11 +236,11 @@ public class StudentManageListDto {
         this.parentsName = parentsName;
     }
 
-	public Boolean getIsActive() {
+	public YesOrNoEnum getIsActive() {
 		return isActive;
 	}
 
-	public void setIsActive(Boolean isActive) {
+	public void setIsActive(YesOrNoEnum isActive) {
 		this.isActive = isActive;
 	}
 }

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

@@ -20,7 +20,7 @@ public interface StudentManageService {
      * @Date: 2019/9/19
      * 根据员工分页获取该员工所属部门下所有学生
      */
-    PageInfo findStudentsByOrganId(StudentManageQueryInfo queryInfo);
+    PageInfo<StudentManageListDto> findStudentsByOrganId(StudentManageQueryInfo queryInfo);
 
     /**
      * @Author: Joburgess

+ 13 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/PracticeGroupServiceImpl.java

@@ -11,6 +11,7 @@ import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.page.PracticeGroupQueryInfo;
 import com.ym.mec.biz.service.*;
+import com.ym.mec.common.constant.CommonConstants;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.entity.HttpResponseResult;
@@ -105,6 +106,8 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
     private GroupClassService groupService;
     @Autowired
     private PracticeGroupSellPriceDao practiceGroupSellPriceDao;
+    @Autowired
+    private TeacherDefaultPracticeGroupSalaryDao teacherDefaultPracticeGroupSalaryDao;
 
     private static Map<Integer, Map<Integer, List<Integer>>> schoolSubjectTeachersMap;
 
@@ -2004,7 +2007,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
             dataList = practiceGroupDao.findAllByOrgan(params);
             if (dataList != null && dataList.size() > 0) {
                 List<Integer> subjectIds = dataList.stream().map(practiceGroup -> practiceGroup.getSubjectId()).distinct().collect(Collectors.toList());
-                List<Integer> organIds = dataList.stream().map(practiceGroup -> practiceGroup.getOrganId()).distinct().collect(Collectors.toList());
+                Set<Integer> organIds = dataList.stream().map(practiceGroup -> practiceGroup.getOrganId()).collect(Collectors.toSet());
                 List<String> practiceGroupIds = dataList.stream().map(e -> String.valueOf(e.getId())).distinct().collect(Collectors.toList());
 
                 List<ClassGroup> classGroupsByVipGroups = classGroupDao
@@ -2017,7 +2020,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
                 Map<String, Long> currentClassTimeMap = MapUtil.convertIntegerMap(courseScheduleDao.countCourseScheduleNum(practiceGroupIds, GroupType.PRACTICE.getCode()));
                 //声部名称列表
                 Map<Long, String> subjectNames = MapUtil.convertMybatisMap(subjectDao.findBySubjecIds(StringUtils.join(subjectIds, ",")));
-                Map<Integer, String> organNames = MapUtil.convertMybatisMap(organizationDao.findOrganNameMap(StringUtils.join(organIds, ",")));
+                Map<Integer, String> organNames = MapUtil.convertMybatisMap(organizationDao.findOrganNameMapList(organIds));
                 dataList.forEach(e -> {
                     e.setSubjectName(subjectNames.get(e.getSubjectId().intValue()));
                     e.setOrganName(organNames.get(e.getOrganId()));
@@ -2686,6 +2689,12 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
             courseSchedule.setIsLock(1);
         }
         courseScheduleDao.batchAddCourseSchedules(practiceCourses);
+        TeacherDefaultPracticeGroupSalary teacherDefaultPracticeGroupSalary = teacherDefaultPracticeGroupSalaryDao.findByTeacherAndCourseMinutes(practiceGroupBuyParams.getUserId(),practiceCourseMinutes);
+        BigDecimal teacherDefaultSalary=new BigDecimal(practiceCourseSalaryConfig.getParanValue());
+        if(Objects.nonNull(teacherDefaultPracticeGroupSalary)){
+            teacherDefaultSalary=teacherDefaultPracticeGroupSalary.getMainTeacherSalary();
+        }
+        BigDecimal studentSingleCourseCost=amount.divide(new BigDecimal(practiceCourses.size()),CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
         for (CourseSchedule courseSchedule : practiceCourses) {
             //课程与老师薪水表
             CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
@@ -2694,7 +2703,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
             courseScheduleTeacherSalary.setMusicGroupId(practiceGroupBuyParams.getId().toString());
             courseScheduleTeacherSalary.setTeacherRole(classGroupTeacherMapper.getTeacherRole());
             courseScheduleTeacherSalary.setUserId(practiceGroupBuyParams.getUserId());
-            courseScheduleTeacherSalary.setExpectSalary(new BigDecimal(practiceCourseSalaryConfig.getParanValue()));
+            courseScheduleTeacherSalary.setExpectSalary(teacherDefaultSalary);
             courseScheduleTeacherSalary.setCreateTime(now);
             courseScheduleTeacherSalary.setUpdateTime(now);
             courseScheduleTeacherSalary.setClassGroupId(classGroup.getId());
@@ -2706,7 +2715,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
             courseScheduleStudentPayment.setMusicGroupId(practiceGroupBuyParams.getId().toString());
             courseScheduleStudentPayment.setCourseScheduleId(courseSchedule.getId());
             courseScheduleStudentPayment.setUserId(practiceGroupBuyParams.getStudentId());
-            courseScheduleStudentPayment.setExpectPrice(BigDecimal.ZERO);
+            courseScheduleStudentPayment.setExpectPrice(studentSingleCourseCost);
             courseScheduleStudentPayment.setClassGroupId(classGroup.getId());
             courseScheduleStudentPayment.setCreateTime(now);
             courseScheduleStudentPayment.setUpdateTime(now);

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

@@ -64,7 +64,7 @@ public class SchoolServiceImpl extends BaseServiceImpl<Integer, School>  impleme
 		PageInfo<School> schoolPageInfo = queryPage(queryInfo);
 		List<School> rows = schoolPageInfo.getRows();
 		Set<Integer> organIds = rows.stream().map(e -> e.getOrganId()).collect(Collectors.toSet());
-		Map<Integer,String> organNames = MapUtil.convertMybatisMap(organizationDao.findOrganNameMap(StringUtils.join(organIds,",")));
+		Map<Integer,String> organNames = MapUtil.convertMybatisMap(organizationDao.findOrganNameMapList(organIds));
 		rows.forEach(e->{
 			e.setOrganName(organNames.get(e.getOrganId()));
 		});

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

@@ -144,7 +144,7 @@ public class SporadicChargeInfoImpl extends BaseServiceImpl<Integer, SporadicCha
                 userIds = new ArrayList<>();
             }
             Set<Integer> operatorIds = rows.stream().map(e -> e.getOperatorId()).collect(Collectors.toSet());
-            Map<Integer, String> organNames = MapUtil.convertMybatisMap(organizationDao.findOrganNameMap(StringUtils.join(organIds, ",")));
+            Map<Integer, String> organNames = MapUtil.convertMybatisMap(organizationDao.findOrganNameMapList(organIds));
             Map<Integer, String> operatorNames = MapUtil.convertMybatisMap(teacherDao.queryNameByIds(StringUtils.join(operatorIds, ",")));
             Map<Integer, String> userNames = MapUtil.convertMybatisMap(teacherDao.queryUsernameByIds(userIds));
             rows.forEach(e -> {

+ 47 - 9
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentManageServiceImpl.java

@@ -4,8 +4,12 @@ import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.*;
+import com.ym.mec.biz.dal.entity.ClassGroupStudentMapper;
+import com.ym.mec.biz.dal.entity.MusicGroup;
 import com.ym.mec.biz.dal.entity.StudentRegistration;
 import com.ym.mec.biz.dal.entity.SysUserCashAccount;
+import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum;
+import com.ym.mec.biz.dal.enums.MusicGroupStatusEnum;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.page.*;
 import com.ym.mec.biz.service.StudentManageService;
@@ -33,12 +37,16 @@ public class StudentManageServiceImpl implements StudentManageService {
     @Autowired
     private StudentManageDao studentManageDao;
     @Autowired
+    private OrganizationDao organizationDao;
+    @Autowired
     private MusicGroupStudentFeeDao musicGroupStudentFeeDao;
     @Autowired
     private CourseScheduleStudentPaymentDao scheduleStudentPaymentDao;
     @Autowired
     private TeacherDao teacherDao;
     @Autowired
+    private MusicGroupDao musicGroupDao;
+    @Autowired
     private StudentRegistrationDao studentRegistrationDao;
     @Autowired
     private ImFeignService imFeignService;
@@ -54,7 +62,7 @@ public class StudentManageServiceImpl implements StudentManageService {
     private SysUserCashAccountDao sysUserCashAccountDao;
 
     @Override
-    public PageInfo findStudentsByOrganId(StudentManageQueryInfo queryInfo) {
+    public PageInfo<StudentManageListDto> findStudentsByOrganId(StudentManageQueryInfo queryInfo) {
         PageInfo<StudentManageListDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
         Boolean hasCourse = queryInfo.getHasCourse();
         Boolean hasPracticeCourse = queryInfo.getHasPracticeCourse();
@@ -95,24 +103,54 @@ public class StudentManageServiceImpl implements StudentManageService {
         if (count > 0) {
             pageInfo.setTotal(count);
             dataList = studentManageDao.findStudentsByOrganId(params);
-            List<Integer> userIds = dataList.stream()
-                    .map(StudentManageListDto::getUserId).collect(Collectors.toList());
+            Set<Integer> userIds = dataList.stream().map(StudentManageListDto::getUserId).collect(Collectors.toSet());
+            Set<Integer> organIds = dataList.stream().map(StudentManageListDto::getOrganId).collect(Collectors.toSet());
             List<SysUserCashAccount> byUserIds = sysUserCashAccountDao.findByUserIds(userIds);
-//            Map<Integer,Long> hasCourseMap = MapUtil.convertIntegerMap(studentManageDao.queryStudentHasCourse(userIds));
             Map<Integer, SysUserCashAccount> collect = byUserIds.stream()
                     .collect(Collectors.toMap(SysUserCashAccount::getUserId, sysUserCashAccount -> sysUserCashAccount));
             Map<Integer,Integer> hasPracticeCourseMap = MapUtil.convertIntegerMap(studentManageDao.getHasPracticeCourse(userIds));
+            //获取用户分部
+            Map<Integer,String> organNames = MapUtil.convertMybatisMap(organizationDao.findOrganNameMapList(organIds));
+            //获取所在乐团
+            Map<Integer,String> musicGroupNames = MapUtil.convertMybatisMap(musicGroupDao.queryUserMusicNames(userIds));
+            //获取所在vip
+            Map<Integer,String> vipGroupNames = MapUtil.convertMybatisMap(vipGroupDao.queryUserVipNames(userIds));
+            //获取所在乐团状态
+            Map<Integer,String> musicGroupStatus = MapUtil.convertMybatisMap(musicGroupDao.queryUserMusicStatus(userIds));
+            //获取所在vip状态
+            Map<Integer,String> vipGroupStatus = MapUtil.convertMybatisMap(vipGroupDao.queryUserVipStatus(userIds));
+            //获取所在声部
+            Map<Integer,String> subjectNames = MapUtil.convertMybatisMap(studentManageDao.querySubjectNames(userIds));
             dataList.forEach(e -> {
+                e.setOrganName(organNames.get(e.getOrganId()));
+                e.setMusicGroupName(musicGroupNames.get(e.getUserId()));
+                e.setVipGroupName(vipGroupNames.get(e.getUserId()));
+                e.setSubjectName(subjectNames.get(e.getUserId()));
+                String musicStatus = musicGroupStatus.get(e.getUserId());
+                if(StringUtils.isNotEmpty(musicStatus)){
+                    String[] split = musicStatus.split(",");
+                    for (int i = 0;i < split.length;i++){
+                        e.setMusicGroupStatus(ClassGroupStudentStatusEnum.valueOf(split[i]).getMsg()+" ");
+                    }
+                }
+                String vipStatus = vipGroupStatus.get(e.getUserId());
+                if(StringUtils.isNotEmpty(vipStatus)){
+                    String[] split = vipStatus.split(",");
+                    for (int i = 0;i < split.length;i++){
+                        e.setVipGroupStatus(ClassGroupStudentStatusEnum.valueOf(split[i]).getMsg()+" ");
+                    }
+                }
                 if(hasCourse == null){
-                    e.setHasCourse(studentManageDao.getHasCourse(e.getUserId()));
+                    Integer course = studentManageDao.getHasCourse(e.getUserId());
+                    e.setHasCourse(course==null?YesOrNoEnum.NO:course==0?YesOrNoEnum.NO:YesOrNoEnum.YES);
                 }else {
                     if(hasCourse){
-                        e.setHasCourse(1L);
+                        e.setHasCourse(YesOrNoEnum.YES);
                     }else {
-                        e.setHasCourse(0L);
+                        e.setHasCourse(YesOrNoEnum.NO);
                     }
                 }
-                e.setHasPracticeCourse(hasPracticeCourseMap.get(e.getUserId()) == null? YesOrNoEnum.NO:YesOrNoEnum.YES);
+                e.setHasPracticeCourse(hasPracticeCourseMap.get(e.getUserId()) == null?YesOrNoEnum.NO:YesOrNoEnum.YES);
                 if(collect.get(e.getUserId()) != null){
                     e.setCourseBalance(collect.get(e.getUserId()).getCourseBalance());
                 }
@@ -378,7 +416,7 @@ public class StudentManageServiceImpl implements StudentManageService {
     @Override
     public List<StudentHasCourseDto> queryHasCourseStudent(String organId) {
         List<StudentHasCourseDto> studentHasCourseDtos = studentManageDao.queryHasCourseStudent(organId);
-        List<Integer> userIds = studentHasCourseDtos.stream().map(e -> e.getUserId()).collect(Collectors.toList());
+        Set<Integer> userIds = studentHasCourseDtos.stream().map(e -> e.getUserId()).collect(Collectors.toSet());
         Map<Integer,Integer> hasPracticeCourseMap = MapUtil.convertIntegerMap(studentManageDao.getHasPracticeCourse(userIds));
         Map<Integer,Integer> isActiveMap = MapUtil.convertIntegerMap(studentManageDao.getIsActive(userIds));
         Map<Integer,Integer> isMakeMap = MapUtil.convertIntegerMap(studentManageDao.getIsMake(userIds));

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

@@ -392,7 +392,7 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 			Map<Integer,Integer> demoNumMap = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertIntegerMap(demoGroupDao.countTeacherDemoGroupNum(teacherIds))),HashMap.class);
 
 			Set<Integer> organIds = rows.stream().map(e -> e.getTeacherOrganId()).collect(Collectors.toSet());
-			Map<Integer,String> organNames = MapUtil.convertMybatisMap(organizationDao.findOrganNameMap(StringUtils.join(organIds,",")));
+			Map<Integer,String> organNames = MapUtil.convertMybatisMap(organizationDao.findOrganNameMapList(organIds));
 			rows.forEach(e->{
 //				e.setSubjectName(subjectDao.findBySubIds(e.getSubjectId()));
 				e.setOrganName(organNames.get(e.getTeacherOrganId()));

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

@@ -2638,6 +2638,15 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 				vipGroup.setUpdateTime(date);
 			}
 			vipGroupDao.batchUpdate(vipGroupList);
+			Set<Long> collect = vipGroupList.stream().map(e -> e.getId()).collect(Collectors.toSet());
+			Set<Integer> classGroupIds = classGroupDao.queryClassGroupIds(collect);
+			//解散群
+			List<ImGroupModel> imGroupModels = new ArrayList<>();
+			ImGroupMember[] imGroupMember = {new ImGroupMember("")};
+			for (Integer classGroupId : classGroupIds) {
+				imGroupModels.add(new ImGroupModel(classGroupId + "", imGroupMember, ""));
+			}
+			imFeignService.groupBatchDismiss(imGroupModels);
 		}
 		List<VipGroup> normalVipGroupList = vipGroupDao.queryNormalStatusList();
 		if (!CollectionUtils.isEmpty(normalVipGroupList)){

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

@@ -1107,7 +1107,12 @@
         </foreach>
         GROUP BY cs.id_
     </select>
-
-
-
+    <select id="queryClassGroupIds" resultType="java.lang.Integer">
+        SELECT cg.id_ FROM class_group cg
+        WHERE cg.music_group_id_ IN
+        <foreach collection="vipGroupIds" item="groupId" open="(" close=")" separator=",">
+            #{groupId}
+        </foreach>
+        AND cg.group_type_ = 'VIP'
+    </select>
 </mapper>

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

@@ -2222,6 +2222,7 @@
           LEFT JOIN sys_user su ON cs.actual_teacher_id_=su.id_
         WHERE cs.group_type_='PRACTICE'
           AND cssp.user_id_=#{userId}
+          AND cssp.expect_price_=0
     </select>
     <select id="findTeacherCoursesWithIncludeDateRange" resultMap="CourseSchedule" useCache="false" flushCache="true">
         SELECT

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

@@ -391,4 +391,23 @@
 		WHERE cg.id_ = #{groupId} AND cg.group_type_ = 'MUSIC'
 		AND mg.status_ = 'PROGRESS' AND cg.del_flag_ = 0
 	</select>
+    <select id="queryUserMusicNames" resultType="java.util.Map">
+		SELECT sr.user_id_ 'key',GROUP_CONCAT(mg.name_) 'value' FROM student_registration sr
+		LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
+		WHERE mg.status_ = 'PROGRESS' AND sr.user_id_ IN
+		<foreach collection="userIds" item="userId" open="(" close=")" separator=",">
+			#{userId}
+		</foreach>
+		GROUP BY sr.user_id_
+	</select>
+	<select id="queryUserMusicStatus" resultType="java.util.Map">
+		SELECT sr.user_id_ 'key',GROUP_CONCAT(sr.music_group_status_) 'value'
+		FROM student_registration sr
+		LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
+		WHERE mg.status_ = 'PROGRESS' AND sr.user_id_ IN
+		<foreach collection="userIds" item="userId" open="(" close=")" separator=",">
+			#{userId}
+		</foreach>
+		GROUP BY sr.user_id_
+	</select>
 </mapper>

+ 8 - 0
mec-biz/src/main/resources/config/mybatis/OrganizationMapper.xml

@@ -121,6 +121,14 @@
         SELECT o.id_ 'key',o.name_ 'value' FROM organization o WHERE FIND_IN_SET(o.id_,#{organIds})
     </select>
 
+    <select id="findOrganNameMapList" resultType="java.util.Map">
+        SELECT o.id_ 'key',o.name_ 'value' FROM organization o
+        WHERE o.id_ IN
+        <foreach collection="organIds" item="organId" open="(" close=")" separator=",">
+            #{organId}
+        </foreach>
+    </select>
+
     <select id="getOrganName" resultType="java.lang.String">
         SELECT GROUP_CONCAT(name_) FROM organization WHERE FIND_IN_SET(id_,#{organId})
     </select>

+ 17 - 6
mec-biz/src/main/resources/config/mybatis/StudentManageDao.xml

@@ -6,6 +6,7 @@
         <result property="userId" column="user_id_"/>
         <result property="realName" column="real_name_"/>
         <result property="nation" column="nation_"/>
+        <result property="organId" column="organ_id_"/>
         <result property="parentsPhone" column="parents_phone_"/>
         <result property="parentsName" column="real_name_"/>
         <result property="gender" column="gender_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
@@ -13,8 +14,8 @@
         <result property="birthdate" column="birthdate_"/>
         <result property="currentGrade" column="current_grade_"/>
         <result property="currentClass" column="current_class_"/>
-        <result property="isActive" column="isActive_"/>
-        <result property="isMake" column="isMake_"/>
+        <result property="isActive" column="isActive_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result property="isMake" column="isMake_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <!--<collection property="musicGroups" resultMap="musicGroup" javaType="list"/>-->
     </resultMap>
 
@@ -123,7 +124,7 @@
 
     <select id="findStudentsByOrganId" resultMap="studentManageListDto">
         SELECT su.id_ user_id_,su.username_,su.gender_,su.phone_ parents_phone_,su.real_name_,
-        su.birthdate_,su.nation_,
+        su.birthdate_,su.nation_,su.organ_id_,
         CASE WHEN su.password_ IS NULL THEN 0 ELSE 1 END isActive_,
         CASE WHEN pla.id_ IS NULL THEN 0 ELSE 1 END isMake_
         FROM sys_user su
@@ -135,7 +136,7 @@
     <sql id="findStudentsByOrganIdSql">
         <where>
                 su.user_type_ LIKE '%STUDENT%' AND su.del_flag_ = 0
-            <if test="organId != null">
+            <if test="organId != null and organId != ''">
                 AND FIND_IN_SET(su.organ_id_,#{organId})
             </if>
             <if test="search != null and search != ''">
@@ -578,7 +579,7 @@
                 #{item}
             </foreach>
         </if>
-        <if test="organId != null">
+        <if test="organId != null and organId != ''">
             AND FIND_IN_SET(su.organ_id_,#{organId})
         </if>
         <if test="search != null and search != ''">
@@ -719,7 +720,7 @@
         </if>
         GROUP BY su.id_
     </select>
-    <select id="getHasCourse" resultType="java.lang.Long">
+    <select id="getHasCourse" resultType="java.lang.Integer">
         SELECT COUNT(DISTINCT su.id_) FROM sys_user su
         LEFT JOIN course_schedule_student_payment cssp ON cssp.user_id_ = su.id_
         LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_
@@ -785,5 +786,15 @@
             #{item}
         </foreach>
     </select>
+    <select id="querySubjectNames" resultType="java.util.Map">
+        SELECT sr.user_id_ 'key',GROUP_CONCAT(s.name_) 'value' FROM student_registration sr
+		LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
+		LEFT JOIN `subject` s ON sr.actual_subject_id_ = s.id_
+		WHERE mg.status_ = 'PROGRESS' AND sr.user_id_ IN
+        <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
+            #{userId}
+        </foreach>
+		GROUP BY sr.user_id_
+    </select>
 
 </mapper>

+ 4 - 1
mec-biz/src/main/resources/config/mybatis/TeacherDefaultPracticeGroupSalaryMapper.xml

@@ -97,7 +97,10 @@
 		teacher_default_practice_group_salary
 	</select>
 
-	<select id="queryByTeacherId" resultMap="TeacherDefaultPracticeGroupSalary">
+	<select id="queryByUserId" resultMap="TeacherDefaultPracticeGroupSalary">
 		SELECT * FROM teacher_default_practice_group_salary where user_id_ = #{userId} ORDER BY id_
 	</select>
+	<select id="findByTeacherAndCourseMinutes" resultMap="TeacherDefaultPracticeGroupSalary">
+		SELECT * FROM teacher_default_practice_group_salary where user_id_ = #{userId} AND minutes_=#{minutes}
+	</select>
 </mapper>

+ 18 - 0
mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml

@@ -890,4 +890,22 @@
         LEFT JOIN school s2 on vg.teacher_school_id_ = s2.id_
         WHERE vg.id_ = #{id} AND cg.id_=#{classGroupId} AND cg.group_type_='VIP'
     </select>
+    <select id="queryUserVipNames" resultType="java.util.Map">
+        SELECT cgsm.user_id_ 'key',GROUP_CONCAT(vg.name_)'value' FROM class_group_student_mapper cgsm
+        LEFT JOIN vip_group vg ON cgsm.music_group_id_ = vg.id_
+        WHERE vg.group_status_ IN (2,4) AND cgsm.user_id_ IN
+        <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
+            #{userId}
+        </foreach>
+        GROUP BY cgsm.user_id_
+    </select>
+    <select id="queryUserVipStatus" resultType="java.util.Map">
+        SELECT cgsm.user_id_ 'key',GROUP_CONCAT(cgsm.status_)'value' FROM class_group_student_mapper cgsm
+        LEFT JOIN vip_group vg ON cgsm.music_group_id_ = vg.id_
+        WHERE vg.group_status_ IN (2,4) AND cgsm.user_id_ IN
+        <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
+            #{userId}
+        </foreach>
+        GROUP BY cgsm.user_id_
+    </select>
 </mapper>

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

@@ -232,6 +232,46 @@ public class ExportController extends BaseController {
     @ApiOperation(value = "导出学员是否有课")
     @PostMapping("export/studentHasCourse")
     @PreAuthorize("@pcs.hasPermissions('export/studentHasCourse')")
+    public void studentHasCourse(HttpServletResponse response,StudentManageQueryInfo queryInfo) {
+        queryInfo.setRows(999999999);
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            throw new BizException("用户信息获取失败");
+        }
+        if(!sysUser.getIsSuperAdmin()){
+            Employee employee = employeeDao.get(sysUser.getId());
+            if (StringUtils.isEmpty(queryInfo.getOrganId())) {
+                queryInfo.setOrganId(employee.getOrganIdList());
+            }else if(StringUtils.isEmpty(employee.getOrganIdList())){
+                throw new BizException("用户所在分部异常");
+            }else {
+                List<String> list = Arrays.asList(employee.getOrganIdList().split(","));
+                if(!list.containsAll(Arrays.asList(queryInfo.getOrganId().split(",")))){
+                    throw new BizException("非法请求");
+                }
+            }
+        }
+        List<StudentManageListDto> rows = studentManageService.findStudentsByOrganId(queryInfo).getRows();
+        try {
+            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "学员编号", "学员姓名", "性别", "家长姓名",
+                    "家长联系电话", "是否激活", "是否有课", "是否预约陪练课","是否有陪练课", "课程余额(元)",
+                    "所在乐团", "乐团所属声部", "所在乐团状态", "所在vip课", "所在VIP状态"}, new String[]{
+                    "organName", "userId", "username", "gender.description", "parentsName", "parentsPhone",
+                    "isActive.msg","hasCourse.msg","isMake.msg","hasPracticeCourse.msg","courseBalance","musicGroupName",
+                    "subjectName","musicGroupStatus","vipGroupName","vipGroupStatus"}, rows);
+            response.setContentType("application/octet-stream");
+            response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
+            response.flushBuffer();
+            workbook.write(response.getOutputStream());
+            workbook.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }/*
+
+    @ApiOperation(value = "导出学员是否有课")
+    @PostMapping("export/studentHasCourse")
+    @PreAuthorize("@pcs.hasPermissions('export/studentHasCourse')")
     public void studentHasCourse(HttpServletResponse response,String organId) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null) {
@@ -253,7 +293,7 @@ public class ExportController extends BaseController {
         } catch (Exception e) {
             e.printStackTrace();
         }
-    }
+    }*/
 
 
     @ApiOperation(value = "导出乐器采购清单")