ソースを参照

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

yonge 5 年 前
コミット
ce475bf851
21 ファイル変更252 行追加87 行削除
  1. 12 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupDao.java
  2. 7 8
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupDao.java
  3. 6 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentAttendanceDao.java
  4. 6 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherAttendanceDao.java
  5. 30 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherDao.java
  6. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherClassGroupDto.java
  7. 6 0
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java
  8. 14 4
      mec-biz/src/main/java/com/ym/mec/biz/service/SysConfigService.java
  9. 27 7
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  10. 15 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  11. 10 12
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  12. 14 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/PracticeGroupServiceImpl.java
  13. 8 5
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherServiceImpl.java
  14. 31 10
      mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml
  15. 6 33
      mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml
  16. 3 0
      mec-biz/src/main/resources/config/mybatis/StudentAttendanceMapper.xml
  17. 5 0
      mec-biz/src/main/resources/config/mybatis/TeacherAttendanceMapper.xml
  18. 30 4
      mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml
  19. 2 0
      mec-common/common-core/src/main/java/com/ym/mec/common/entity/ImUserModel.java
  20. 1 0
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherManageController.java
  21. 8 0
      mec-web/src/main/java/com/ym/mec/web/controller/CourseScheduleController.java

+ 12 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupDao.java

@@ -98,13 +98,22 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
     List<ClassGroupTeachersDto> findClassGroupByMusicGroupId(@Param("musicGroupId") String musicGroupId, @Param("type") String type, @Param("classGroupId") Integer classGroupId);
 
     /**
-     * 获取学员所在群组信息
+     * 获取学员所在乐团群组信息
      *
      * @param userId
      * @param search
      * @return
      */
-    List<ImGroupModel> queryUserGroups(@Param("userId") Integer userId, @Param("search") String search);
+    List<ImGroupModel> queryUserMusicGroups(@Param("userId") Integer userId, @Param("search") String search);
+
+    /**
+     * 获取学员所在VIP群组信息
+     *
+     * @param userId
+     * @param search
+     * @return
+     */
+    List<ImGroupModel> queryUserVipGroups(@Param("userId") Integer userId, @Param("search") String search);
 
     /**
      * 获取vip课的学生名称列表
@@ -428,7 +437,7 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
      * @param groupId
      * @return
      */
-    List<ImUserModel> findGroupTeacher(Integer groupId);
+    Set<Integer> findGroupTeacher(Integer groupId);
 
     /**
      * @param courseScheduleIds: 课程编号列表

+ 7 - 8
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupDao.java

@@ -52,14 +52,6 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
     Integer countCourseByType(@Param("userId") Integer userId, @Param("type") ClassGroupTypeEnum type);
 
     /**
-     * 根绝学员编号获取相关老师列表
-     *
-     * @param studentId
-     * @return
-     */
-    List<BasicUserDto> findTeachersByStuId(Integer studentId);
-
-    /**
      * 获取学员所在乐团
      *
      * @param userId
@@ -211,4 +203,11 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
      * @return
      */
     School findUserSchool(@Param("userId") Integer userId);
+
+    /**
+     * 根据班级群,获取乐团信息
+     * @param groupId
+     * @return
+     */
+    MusicGroup findByClassId(Integer groupId);
 }

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

@@ -248,4 +248,10 @@ public interface StudentAttendanceDao extends BaseDAO<Long, StudentAttendance> {
      */
     int deleteByGroup(@Param("groupId") String groupId,
                       @Param("groupType")GroupType groupType);
+
+    /**
+     * 清空学生考勤
+     * @param courseScheduleIds
+     */
+    void batchCleanCourseStudentSign(String courseScheduleIds);
 }

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

@@ -183,4 +183,10 @@ public interface TeacherAttendanceDao extends BaseDAO<Long, TeacherAttendance> {
 	 */
 	int deleteByGroup(@Param("groupId") String groupId,
 					  @Param("groupType")GroupType groupType);
+
+	/**
+	 * 清楚老师考勤
+	 * @param courseScheduleIds
+	 */
+    void batchCleanCourseTeacherSign(String courseScheduleIds);
 }

+ 30 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherDao.java

@@ -5,8 +5,10 @@ import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.CourseHomework;
 import com.ym.mec.biz.dal.entity.Teacher;
 import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.entity.ImUserModel;
 import org.apache.ibatis.annotations.Param;
 import java.math.BigDecimal;
+import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -308,4 +310,32 @@ public interface TeacherDao extends BaseDAO<Integer, Teacher> {
      * @return
      */
     List<BasicUserDto> queryTeacherBaseInfo(@Param("teacherId")Set<Integer> teacherId);
+
+    /**
+     * 获取教师immodel
+     * @param teacherIds
+     * @return
+     */
+    List<ImUserModel> queryTeacherImModel(@Param("teacherIds") Set<Integer> teacherIds);
+
+    /**
+     * 获取和学员相关的乐团老师列表
+     * @param studentId
+     * @return
+     */
+    Set<Integer> findMusicTeacherIds(Integer studentId);
+
+    /**
+     * 获取和学员相关的VIP老师列表
+     * @param studentId
+     * @return
+     */
+    Set<Integer> findVipTeacherIds(Integer studentId);
+
+    /**
+     * 获取和学员相关的陪练课老师列表
+     * @param studentId
+     * @return
+     */
+    Set<Integer> findPracticeTeacherIds(Integer studentId);
 }

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

@@ -80,6 +80,9 @@ public class TeacherClassGroupDto {
     @ApiModelProperty(value = "开课时间")
     private Date courseStartDate;
 
+    @ApiModelProperty(value = "陪练报告URL")
+    private String studyReportUrl;
+
     public Date getCourseStartDate() {
         return courseStartDate;
     }
@@ -263,4 +266,12 @@ public class TeacherClassGroupDto {
     public void setThreeClassNoAttendanceStudentNum(Integer threeClassNoAttendanceStudentNum) {
         this.threeClassNoAttendanceStudentNum = threeClassNoAttendanceStudentNum;
     }
+
+    public String getStudyReportUrl() {
+        return studyReportUrl;
+    }
+
+    public void setStudyReportUrl(String studyReportUrl) {
+        this.studyReportUrl = studyReportUrl;
+    }
 }

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

@@ -413,4 +413,10 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
 	 * @param teacherId
 	 */
 	void practiceGroupTeacherAdjust(String practiceGroupId, Integer teacherId);
+
+	/**
+	 * 清空老师和学生考勤
+	 * @param courseScheduleIds
+	 */
+    void cleanAttendance(String courseScheduleIds);
 }

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

@@ -4,8 +4,8 @@ import com.ym.mec.biz.dal.entity.SysConfig;
 import com.ym.mec.common.service.BaseService;
 
 public interface SysConfigService extends BaseService<Long, SysConfig> {
-	
-	public static final String BASE_API_URL = "base_api_url";
+
+    public static final String BASE_API_URL = "base_api_url";
 
     /**
      * 缴费状态提前{}天刷新
@@ -32,7 +32,7 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
      */
     public static final String ADVANCE_LEAVE_HOURS = "advance_leave_hours";
 
-   String ENABLE_TEACHER_COURSE_ADJUST_DEFAULT_HOURS = "enable_teacher_course_adjust_default_hours";
+    String ENABLE_TEACHER_COURSE_ADJUST_DEFAULT_HOURS = "enable_teacher_course_adjust_default_hours";
 
     /**
      * 单技课梯度结算规则设置
@@ -126,7 +126,7 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
      * @describe 教师请假数据
      */
     String TEACHER_LEAVE_DATA = "teacher_leave_data";
-    
+
     /**
      * 十分钟内最大可发送的短信次数
      */
@@ -153,6 +153,16 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
     String PRACTICE_BUY_ACTIVITY_EXPIRE_DATE = "practice_buy_activity_expire_date";
 
     /**
+     * 陪练老师端入口地址
+     */
+    String TEACHER_STUDY_REPORT_URL = "teacher_study_report_url";
+
+    /**
+     * 陪练课学生地址
+     */
+    String STUDENT_STUDY_REPORT_URL = "student_study_report_url";
+
+    /**
      * @return com.ym.mec.biz.dal.entity.SysConfig
      * @params paramName
      * @describe 根据配置名称获取配置信息

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

@@ -674,14 +674,17 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
     @Override
     public List<ImGroupModel> queryUserGroups(Integer userId, String search) {
-        List<ImGroupModel> imGroupModels = classGroupDao.queryUserGroups(userId, search);
+        //获取乐团群,vip群(进行中)
+        //获取学员乐团群
+        List<ImGroupModel> imGroupModels = classGroupDao.queryUserMusicGroups(userId, search);
+        imGroupModels.addAll(classGroupDao.queryUserVipGroups(userId, search));
         if (imGroupModels != null && imGroupModels.size() > 0) {
-            Set<String> classGroupIds = imGroupModels.stream().map(e -> e.getId()).collect(Collectors.toSet());
+//            Set<String> classGroupIds = imGroupModels.stream().map(e -> e.getId()).collect(Collectors.toSet());
             //获取班级老师总数map
-            Map<Integer, Integer> numsMap = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertIntegerMap(classGroupDao.countTeacherNums(StringUtils.join(classGroupIds, ",")))), HashMap.class);
+//            Map<Integer, Integer> numsMap = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertIntegerMap(classGroupDao.countTeacherNums(StringUtils.join(classGroupIds, ",")))), HashMap.class);
             imGroupModels.forEach(e -> {
-                Integer num = numsMap.get(Integer.parseInt(e.getId()));
-                e.setCount((num == null ? 0 : num) + e.getCount());
+//                Integer num = numsMap.get(Integer.parseInt(e.getId()));
+                e.setCount(classGroupService.findGroupUsers(Integer.parseInt(e.getId())).size());
             });
         }
         return imGroupModels;
@@ -689,12 +692,22 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
     @Override
     public List<ImUserModel> findGroupUsers(Integer groupId) {
+        //获取相关学员
         List<ImUserModel> students = classGroupDao.findGroupUsers(groupId);
         if (students == null) {
             students = new ArrayList<>();
         }
-        List<ImUserModel> teachers = classGroupDao.findGroupTeacher(groupId);
-        students.addAll(teachers);
+        //获取当前群关联的乐团
+        MusicGroup musicGroup = musicGroupDao.findByClassId(groupId);
+        Set<Integer> teacherIds = new HashSet<>();
+        if(musicGroup != null){
+            teacherIds.add(musicGroup.getTeamTeacherId());
+            teacherIds.add(musicGroup.getEducationalTeacherId());
+            teacherIds.add(musicGroup.getDirectorUserId());
+        }
+        //获取相关老师
+        teacherIds.addAll(classGroupDao.findGroupTeacher(groupId));
+        students.addAll(teacherDao.queryTeacherImModel(teacherIds));
         return students;
     }
 
@@ -957,6 +970,13 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 }
                 teacherClassGroupDto.setSubjectNames(StringUtils.join(subjectNameList, ","));
             }
+            //剩余课程为显示陪练报告入口rul
+            if(teacherClassGroupDto.getType() == ClassGroupTypeEnum.PRACTICE){
+               if(teacherClassGroupDto.getSurplusClassTimes().equals(0)){
+                   String studyReportUrl = sysConfigDao.findConfigValue(SysConfigService.TEACHER_STUDY_REPORT_URL);
+                   teacherClassGroupDto.setStudyReportUrl(studyReportUrl+teacherClassGroupDto.getClassGroupId());
+               }
+            }
         });
 
         return teacherMusicClassGroup;

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

@@ -3140,4 +3140,19 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
                     teacherIdMap, null, 0, "7","TEACHER");
         }
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void cleanAttendance(String courseScheduleIds) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (null == user) {
+            throw new BizException("获取用户信息失败");
+        }
+        if(StringUtils.isEmpty(courseScheduleIds)){
+            throw new BizException("参数校验失败");
+        }
+        LOGGER.info("清空老师和学生考勤,user:{},参数:{}",user.getId(),courseScheduleIds);
+        teacherAttendanceDao.batchCleanCourseTeacherSign(courseScheduleIds);
+        studentAttendanceDao.batchCleanCourseStudentSign(courseScheduleIds);
+    }
 }

+ 10 - 12
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -1083,25 +1083,23 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 
     @Override
     public List<BasicUserDto> findTeachersByStuId(Integer studentId) {
-        List<BasicUserDto> teachersByStuId = musicGroupDao.findTeachersByStuId(studentId);
+        //获取相关乐团老师列表
+        Set<Integer> teacherIds = teacherDao.findMusicTeacherIds(studentId);
         //获取学员所在乐团列表
         List<String> musicGroupIds = studentRegistrationDao.queryStudentMusicGroup(studentId);
-        Set<Integer> teacherId = new HashSet<>();
         if(musicGroupIds != null && musicGroupIds.size() > 0){
             List<MusicGroup> musicGroups = musicGroupDao.queryListByIds(StringUtils.join(musicGroupIds, ","));
             musicGroups.forEach(e->{
-                teacherId.add(e.getDirectorUserId());
-                teacherId.add(e.getOperatorUserId());
-                teacherId.add(e.getEducationalTeacherId());
-                teacherId.add(e.getTeamTeacherId());
+                teacherIds.add(e.getDirectorUserId());
+                teacherIds.add(e.getEducationalTeacherId());
+                teacherIds.add(e.getTeamTeacherId());
             });
         }
-        Set<Integer> collect = teachersByStuId.stream().map(e -> e.getUserId()).collect(Collectors.toSet());
-        if(collect == null){
-            collect = new HashSet<>();
-        }
-        collect.addAll(teacherId);
-        return teacherDao.queryTeacherBaseInfo(collect);
+        //获取相关vip课老师列表
+        teacherIds.addAll(teacherDao.findVipTeacherIds(studentId));
+        //获取陪练课老师列表
+        teacherIds.addAll(teacherDao.findPracticeTeacherIds(studentId));
+        return teacherDao.queryTeacherBaseInfo(teacherIds);
     }
 
     @Override

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

@@ -2096,6 +2096,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         SysConfig practiceCourseMinutesConfig = sysConfigService.findByParamName(SysConfigService.PRACTICE_COURSE_MINUTES);
         SysConfig practicePayMaxMonthConfig = sysConfigService.findByParamName(SysConfigService.PRACTICE_PAY_MAX_MONTH);
         SysConfig practicePayDrillTimesOnOneWeekConfig = sysConfigService.findByParamName(SysConfigService.PRACTICE_PAY_DRILL_TIMES_ON_ONE_WEEK);
+        SysUserCashAccount userCashAccount = sysUserCashAccountService.getLocked(userId);
         Student student = studentDao.get(userId);
         List<Subject> subjects = subjectDao.findBySubjectByIdList(practiceSubjectIdListConfig.getParanValue());
         List<Integer> subjectIds = Arrays.asList(practiceSubjectIdListConfig.getParanValue().split(",")).stream().mapToInt(idStr -> Integer.valueOf(idStr)).boxed().collect(Collectors.toList());
@@ -2115,6 +2116,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         result.put("practicePayMaxMonth", practicePayMaxMonthConfig.getParanValue(Integer.class));
         result.put("practicePayDrillTimesOnOneWeek", practicePayDrillTimesOnOneWeekConfig.getParanValue(Integer.class));
         result.put("practiceGroupSellPrice", practiceGroupSellPrice);
+        result.put("balance", userCashAccount.getBalance());
         return result;
     }
 
@@ -2748,7 +2750,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
                 Map<String,Object> result=new HashMap<>();
                 result.put("orderNo",studentPaymentOrder.getOrderNo());
 
-                return BaseController.succeed();
+                return BaseController.succeed(result);
             }else{
                 if (userCashAccount.getBalance().doubleValue() > 0) {
                     sysUserCashAccountService.updateBalance(practiceGroupBuyParams.getStudentId(), userCashAccount.getBalance().negate(), PlatformCashAccountDetailTypeEnum.PAY_FEE, "陪练课购买");
@@ -2822,6 +2824,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
             }
             courseStartDay=courseStartDay.plusDays(1);
         }
+
         return courseSchedules;
     }
 
@@ -2871,6 +2874,16 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
 
         sysUserCashAccountDetailService.insert(sysUserIncomeCashAccountDetail);
         sysUserCashAccountDetailService.insert(sysUserExpendCashAccountDetail);
+
+        PracticeGroup practiceGroup = practiceGroupDao.get(Long.valueOf(order.getMusicGroupId()));
+        ClassGroup classGroup = classGroupDao.findByMusicGroupAndType(order.getMusicGroupId(), GroupType.PRACTICE.getCode());
+
+//        List<ImGroupMember> imGroupMemberList = new ArrayList<>();
+//        imGroupMemberList.add(new ImGroupMember(practiceGroup.getUserId().toString()));
+//        imGroupMemberList.add(new ImGroupMember(practiceGroup.getStudentId().toString()));
+//        ImGroupMember[] imGroupMembers = imGroupMemberList.toArray(new ImGroupMember[imGroupMemberList.size()]);
+//        // 创建群组
+//        imFeignService.groupCreate(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
     }
 
     @Override

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

@@ -8,6 +8,7 @@ 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.page.*;
+import com.ym.mec.biz.service.ClassGroupService;
 import com.ym.mec.biz.service.TeacherService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.entity.ImGroupModel;
@@ -37,6 +38,8 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 	@Autowired
 	private ClassGroupDao classGroupDao;
 	@Autowired
+	private ClassGroupService classGroupService;
+	@Autowired
 	private MusicGroupDao musicGroupDao;
 	@Autowired
 	private DemoGroupDao demoGroupDao;
@@ -138,12 +141,13 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 		//获取教师所在班级列表
 		List<ImGroupModel> imGroupModels =  classGroupDao.queryTeacherGroups(userId,search);
 		if(imGroupModels != null && imGroupModels.size() > 0){
-			Set<String> classGroupIds = imGroupModels.stream().map(e -> e.getId()).collect(Collectors.toSet());
+//			Set<String> classGroupIds = imGroupModels.stream().map(e -> e.getId()).collect(Collectors.toSet());
 			//获取班级老师总数map
-			Map<Integer, Integer> numsMap = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertIntegerMap(classGroupDao.countTeacherNums(StringUtils.join(classGroupIds, ",")))),HashMap.class);
+//			Map<Integer, Integer> numsMap = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertIntegerMap(classGroupDao.countTeacherNums(StringUtils.join(classGroupIds, ",")))),HashMap.class);
+
 			imGroupModels.forEach(e -> {
-				Integer num = numsMap.get(Integer.parseInt(e.getId()));
-				e.setCount((num == null ? 0 : num) + e.getCount());
+//				Integer num = numsMap.get(Integer.parseInt(e.getId()));
+				e.setCount(classGroupService.findGroupUsers(Integer.parseInt(e.getId())).size());
 			});
 		}
 		return imGroupModels;
@@ -161,7 +165,6 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 				musicGroupList.forEach(e->{
 					teacherIds.add(e.getTeamTeacherId());
 					teacherIds.add(e.getEducationalTeacherId());
-					teacherIds.add(e.getOperatorUserId());
 					teacherIds.add(e.getDirectorUserId());
 				});
 			}

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

@@ -263,12 +263,13 @@
         <result column="teacher_ids_" property="teacherIds"/>
         <result column="group_name_" property="groupName"/>
     </resultMap>
-    <select id="queryUserGroups" resultMap="imGroupModel">
-        SELECT cg.id_,cg.name_,cg.student_num_,cg.img_,mg.name_ group_name_ FROM class_group_student_mapper cgsm
+    <select id="queryUserMusicGroups" resultMap="imGroupModel">
+        SELECT cg.id_,cg.name_,cg.student_num_,cg.img_,mg.name_ group_name_
+        FROM class_group_student_mapper cgsm
         LEFT JOIN class_group cg ON cgsm.class_group_id_ = cg.id_
         LEFT JOIN music_group mg ON mg.id_ = cg.music_group_id_
         <where>
-            cg.del_flag_ = 0 AND cgsm.status_ != 'QUIT' AND (mg.status_ = 'PROGRESS' OR mg.id_ IS NULL)
+            cg.del_flag_ = 0 AND cgsm.status_ != 'QUIT' AND mg.status_ = 'PROGRESS'
             <if test="userId != null">
                 AND cgsm.user_id_ = #{userId}
             </if>
@@ -276,6 +277,24 @@
                 AND cg.name_ LIKE CONCAT('%',#{search},'%')
             </if>
         </where>
+        GROUP BY cg.id_
+    </select>
+
+    <select id="queryUserVipGroups" resultMap="imGroupModel">
+        SELECT cg.id_,cg.name_,cg.student_num_,cg.img_
+        FROM class_group_student_mapper cgsm
+        LEFT JOIN class_group cg ON cgsm.class_group_id_ = cg.id_
+        LEFT JOIN vip_group vg ON vg.id_ = cg.music_group_id_
+        <where>
+            cg.del_flag_ = 0 AND cgsm.status_ != 'QUIT' AND vg.group_status_ = 4
+            <if test="userId != null">
+                AND cgsm.user_id_ = #{userId}
+            </if>
+            <if test="search != null and search != ''">
+                AND cg.name_ LIKE CONCAT('%',#{search},'%')
+            </if>
+        </where>
+        GROUP BY cg.id_
     </select>
     <select id="findVipStuNames" resultType="map">
         SELECT cg.music_group_id_ 'key',GROUP_CONCAT(su.username_) 'value'
@@ -290,10 +309,10 @@
         LEFT JOIN sys_user su ON cgsm.user_id_ = su.id_
         WHERE cgsm.class_group_id_ = #{classGroupId} AND cgsm.status_ != 'QUIT' GROUP BY su.id_
     </select>
-    <select id="findGroupTeacher" resultMap="com.ym.mec.biz.dal.dao.MusicGroupDao.ImUserModel">
-        SELECT su.id_,su.avatar_,su.username_ FROM class_group_teacher_mapper cgtm
-        LEFT JOIN sys_user su ON cgtm.user_id_ = su.id_
-        WHERE cgtm.class_group_id_ = #{classGroupId} GROUP BY su.id_
+    <select id="findGroupTeacher" resultType="java.lang.Integer">
+        SELECT cgtm.user_id_ FROM class_group_teacher_mapper cgtm
+        WHERE cgtm.class_group_id_ = #{classGroupId}
+        GROUP BY cgtm.user_id_
     </select>
     <select id="countStudentPayLog" resultType="java.lang.Integer">
         SELECT COUNT(spo.id_)
@@ -356,11 +375,13 @@
     </select>
 
     <select id="queryTeacherGroups" resultMap="imGroupModel">
-        SELECT cg.id_,cg.name_,cg.student_num_,cg.img_,mg.name_ group_name_ FROM class_group_teacher_mapper cgtm
+        SELECT cg.id_,cg.name_,cg.student_num_,cg.img_,mg.name_ group_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 mg.id_ = cg.music_group_id_
+        LEFT JOIN music_group mg ON mg.id_ = cg.music_group_id_ AND cg.group_type_ = 'MUSIC'
+        LEFT JOIN vip_group vg ON vg.id_ = cg.music_group_id_ AND cg.group_type_ = 'VIP'
         WHERE (cgtm.user_id_ = #{userId} OR mg.team_teacher_id_ = #{userId} OR mg.educational_teacher_id_ = #{userId} OR mg.director_user_id_ = #{userId})
-         AND cg.del_flag_ = 0 AND (mg.status_ = 'PROGRESS' OR mg.id_ IS NULL)
+        AND cg.del_flag_ = 0 AND (mg.status_ = 'PROGRESS' OR vg.group_status_ IN (2,4))
         <if test="search != null">
             AND cg.name_ LIKE CONCAT('%',#{search},'%')
         </if>

+ 6 - 33
mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml

@@ -243,26 +243,6 @@
 		<result column="user_type_" property="userType"/>
 	</resultMap>
 
-	<select id="findTeachersByStuId" resultMap="BasicUserDto">
-		SELECT DISTINCT
-			su.real_name_ username_,
-			su.id_ user_id_,
-			su.avatar_ head_url_,
-			gender_,
-			GROUP_CONCAT(s.name_) subject_name_
-		  FROM
-			class_group_student_mapper cgsp
-			LEFT JOIN class_group cg ON cgsp.class_group_id_ = cg.id_
-			LEFT JOIN class_group_teacher_mapper cgtm ON cg.id_ = cgtm.class_group_id_
-			LEFT JOIN sys_user su ON cgtm.user_id_ = su.id_
-			LEFT JOIN teacher t ON su.id_ = t.id_
-			LEFT JOIN `subject` s ON FIND_IN_SET(s.id_,t.subject_id_)
-			LEFT JOIN music_group mg ON cgsp.music_group_id_ = mg.id_
-		  WHERE
-			cgsp.user_id_ = #{studentId} AND cgsp.status_ != 'QUIT' AND cg.del_flag_ = 0 AND ((cgsp.group_type_ = 'MUSIC' AND mg.status_ = 'PROGRESS') OR cgsp.group_type_ != 'MUSIC')
-		  GROUP BY su.id_
-	</select>
-
     <select id="queryUserGroups" resultMap="com.ym.mec.biz.dal.dao.ClassGroupDao.imGroupModel">
         SELECT mg.id_,mg.name_,mg.img_
 		FROM student_registration sr
@@ -289,12 +269,6 @@
 		<result property="name" column="username_"/>
 		<result property="portrait" column="avatar_"/>
 	</resultMap>
-	<!--<select id="findGroupUsers" resultMap="ImUserModel">
-		SELECT su.id_,su.avatar_,su.username_ FROM class_group cg
-		LEFT JOIN class_group_student_mapper cgsm ON cg.id_ = cgsm.class_group_id_
-		LEFT JOIN sys_user su ON cgsm.user_id_ = su.id_
-		WHERE cg.music_group_id_ = #{musicGroupId}  AND cgsm.status_ != 'QUIT' GROUP BY su.id_
-	</select>-->
 	<select id="queryTeacherGroups" resultMap="com.ym.mec.biz.dal.dao.ClassGroupDao.imGroupModel">
 		SELECT mg.id_,mg.name_,mg.img_,GROUP_CONCAT(DISTINCT cgtm.user_id_) teacher_ids_
 		FROM music_group mg
@@ -307,13 +281,6 @@
 		</if>
 		GROUP BY mg.id_
 	</select>
-
-	<!--<select id="queryTeacherIds" resultType="java.lang.Integer">
-		SELECT DISTINCT cgtm.user_id_ FROM class_group cg
-		LEFT JOIN class_group_teacher_mapper cgtm ON cg.id_ = cgtm.class_group_id_
-		WHERE cg.music_group_id_ = #{musicGroupId}
-	</select>-->
-
     <select id="countPayNum" resultType="java.util.Map" parameterType="list">
 		SELECT cg.music_group_id_ `key`,COUNT(cgsm.id_) `value` FROM class_group cg
 		LEFT JOIN class_group_student_mapper cgsm ON cg.id_ = cgsm.class_group_id_
@@ -418,4 +385,10 @@
 		LEFT JOIN school s on mg.school_id_ = s.id_
 		WHERE sr.user_id_ = #{userId} ORDER BY sr.id_ DESC LIMIT 1
 	</select>
+	<select id="findByClassId" resultMap="MusicGroup">
+		SELECT mg.* FROM class_group cg
+		LEFT JOIN music_group mg ON cg.music_group_id_ = mg.id_
+		WHERE cg.id_ = #{groupId} AND cg.group_type_ = 'MUSIC'
+		AND mg.status_ = 'PROGRESS' AND cg.del_flag_ = 0
+	</select>
 </mapper>

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

@@ -172,6 +172,9 @@
     <delete id="deleteByGroup">
         DELETE FROM student_attendance WHERE music_group_id_=#{groupId} AND group_type_=#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
     </delete>
+    <delete id="batchCleanCourseStudentSign">
+        DELETE FROM student_attendance WHERE course_schedule_id_ FIND_IN_SET(#{courseScheduleIds})
+    </delete>
 
     <resultMap id="studentAttendanceViewUtilEntity" type="com.ym.mec.biz.dal.dto.StudentAttendanceViewDto">
         <result property="classGroupId" column="class_group_id_"/>

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

@@ -376,6 +376,11 @@
             #{courseScheduleId}
         </foreach>
     </update>
+    <update id="batchCleanCourseTeacherSign">
+        UPDATE teacher_attendance
+        SET sign_in_time_ = NULL,sign_in_status_=NULL,sign_out_status_ = NULL,sign_out_time_= NULL
+        WHERE course_schedule_id_ FIND_IN_SET(#{courseScheduleIds})
+    </update>
 
     <delete id="deleteByMusicGroupId" parameterType="map" >
 		DELETE ta FROM teacher_attendance ta LEFT JOIN course_schedule cs ON ta.course_schedule_id_ = cs.id_

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

@@ -261,12 +261,13 @@
         FROM class_group_teacher_mapper cgtm
         LEFT JOIN class_group_student_mapper cgsm ON cgtm.class_group_id_ = cgsm.class_group_id_
         LEFT JOIN sys_user su ON cgsm.user_id_ = su.id_
-        LEFT JOIN student_registration sr ON sr.user_id_ = su.id_
+        LEFT JOIN student_registration sr ON sr.user_id_ = cgsm.id_ AND cgsm.music_group_id_ = sr.music_group_id_
         LEFT JOIN `subject` s ON s.id_ = sr.actual_subject_id_
-        LEFT JOIN music_group mg ON mg.id_ = cgtm.music_group_id_
+        LEFT JOIN music_group mg ON mg.id_ = cgsm.music_group_id_ AND cgsm.group_type_ = 'MUSIC'
+        LEFT JOIN vip_group vg ON vg.id_ = cgsm.music_group_id_ AND cgsm.group_type_ = 'VIP'
         WHERE (cgtm.user_id_ = #{teacherId} OR mg.team_teacher_id_ = #{teacherId} OR mg.educational_teacher_id_ = #{teacherId}
-        OR director_user_id_ = #{teacherId}) AND su.id_ IS NOT NULL AND cgtm.music_group_id_ = sr.music_group_id_
-        AND (mg.status_ = 'PROGRESS' OR mg.status_ IS NULL)
+        OR director_user_id_ = #{teacherId}) AND su.id_ IS NOT NULL
+        AND (mg.status_ = 'PROGRESS' OR vg.group_status_ IN (2,4) OR cgsm.group_type_ = 'PRACTICE')
         <if test="search != null">
             AND su.username_ LIKE CONCAT('%',#{search},'%')
         </if>
@@ -796,4 +797,29 @@
         </foreach>
         GROUP BY su.id_
     </select>
+    <select id="queryTeacherImModel" resultMap="com.ym.mec.biz.dal.dao.MusicGroupDao.ImUserModel">
+        SELECT su.id_,su.avatar_,su.username_ FROM sys_user su
+        WHERE su.id_ IN
+        <foreach collection="teacherIds" item="userId" open="(" close=")" separator=",">
+            #{userId}
+        </foreach>
+    </select>
+    <select id="findMusicTeacherIds" resultType="java.lang.Integer">
+        SELECT DISTINCT cgtm.user_id_ FROM class_group_student_mapper cgsm
+        LEFT JOIN class_group_teacher_mapper cgtm ON cgsm.class_group_id_ = cgtm.class_group_id_
+        LEFT JOIN music_group mg ON cgsm.music_group_id_ = mg.id_
+        WHERE mg.status_ = 'PROGRESS' AND cgsm.user_id_ = #{studentId}
+    </select>
+    <select id="findVipTeacherIds" resultType="java.lang.Integer">
+        SELECT DISTINCT cgtm.user_id_ FROM class_group_student_mapper cgsm
+        LEFT JOIN class_group_teacher_mapper cgtm ON cgsm.class_group_id_ = cgtm.class_group_id_
+        LEFT JOIN vip_group vg ON vg.id_ = cgsm.music_group_id_
+        WHERE vg.group_status_ IN (2,4) AND cgsm.user_id_ = #{studentId}
+    </select>
+    <select id="findPracticeTeacherIds" resultType="java.lang.Integer">
+        SELECT DISTINCT cgtm.user_id_ FROM class_group_student_mapper cgsm
+        LEFT JOIN class_group_teacher_mapper cgtm ON cgsm.class_group_id_ = cgtm.class_group_id_
+        LEFT JOIN practice_group pg ON pg.id_ = cgsm.music_group_id_
+        WHERE cgsm.group_type_ = 'PRACTICE' AND cgsm.user_id_ = #{studentId}
+    </select>
 </mapper>

+ 2 - 0
mec-common/common-core/src/main/java/com/ym/mec/common/entity/ImUserModel.java

@@ -65,4 +65,6 @@ public class ImUserModel {
     public void setBlacklist(ImUserModel[] blacklist) {
         this.blacklist = blacklist;
     }
+
+
 }

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

@@ -5,6 +5,7 @@ import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dto.CashAccountDetail;
 import com.ym.mec.biz.dal.entity.SysSuggestion;
 import com.ym.mec.biz.dal.entity.SysUserBankCard;
+import com.ym.mec.biz.dal.entity.VipGroup;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.UploadReturnBean;

+ 8 - 0
mec-web/src/main/java/com/ym/mec/web/controller/CourseScheduleController.java

@@ -321,5 +321,13 @@ public class CourseScheduleController extends BaseController {
         scheduleService.practiceGroupTeacherAdjust(practiceGroupId,teacherId);
         return succeed();
     }
+
+    @ApiOperation(value = "清空老师和学生考勤记录")
+    @PostMapping("/cleanAttendance")
+    @PreAuthorize("@pcs.hasPermissions('courseSchedule/cleanAttendance')")
+    public Object cleanAttendance(String courseScheduleIds){
+        scheduleService.cleanAttendance(courseScheduleIds);
+        return succeed();
+    }
 }