Browse Source

Merge remote-tracking branch 'origin/master'

Joburgess 5 năm trước cách đây
mục cha
commit
b8f0b596c5

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

@@ -146,7 +146,7 @@ public interface StudentAttendanceDao extends BaseDAO<Long, StudentAttendance> {
      * @param courseScheduleIds:
      * @return java.util.List<java.util.Map<java.lang.Integer,java.lang.Integer>>
      */
-    List<Map<Integer,Integer>> countStudentAttendancesByCourses(@Param("courseScheduleIds") List<Long> courseScheduleIds);
+    List<Map<Integer,Integer>> countStudentAttendancesByCourses(@Param("courseScheduleIds") List courseScheduleIds);
 
     /**
      * @describe 根据课程获取最后的点名时间

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

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.dto;
 
 import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.util.Date;
@@ -75,6 +76,16 @@ public class MusicGroupCourseScheduleDto {
     @ApiModelProperty(value = "签到备注")
     private String remark;
 
+    private YesOrNoEnum isCallNames;
+
+    public YesOrNoEnum getIsCallNames() {
+        return isCallNames;
+    }
+
+    public void setIsCallNames(YesOrNoEnum isCallNames) {
+        this.isCallNames = isCallNames;
+    }
+
     public Date getSignInTime() {
         return signInTime;
     }

+ 22 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseScheduleEvaluate.java

@@ -37,6 +37,12 @@ public class CourseScheduleEvaluate {
     @ApiModelProperty(value = "老师信息")
     private BasicUserDto teacher;
 
+    @ApiModelProperty(value = "课程次数")
+    private Integer times;
+
+    @ApiModelProperty(value = "总分钟数")
+    private Integer totalMinutes;
+
     public Long getId() {
         return id;
     }
@@ -132,4 +138,20 @@ public class CourseScheduleEvaluate {
     public void setStudent(SysUser student) {
         this.student = student;
     }
+
+    public Integer getTimes() {
+        return times;
+    }
+
+    public void setTimes(Integer times) {
+        this.times = times;
+    }
+
+    public Integer getTotalMinutes() {
+        return totalMinutes;
+    }
+
+    public void setTotalMinutes(Integer totalMinutes) {
+        this.totalMinutes = totalMinutes;
+    }
 }

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

@@ -108,7 +108,8 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
     BACKSTAGE_STUDENT_APPEAL("BACKSTAGE_STUDENT_APPEAL", "学员申述"),
     BACKSTAGE_STUDENT_APPLY_QUIT_GROUP("BACKSTAGE_STUDENT_APPLY_QUIT_GROUP", "学员申请退团"),
     BACKSTAGE_STUDENT_APPLY_QUIT_COURSE("BACKSTAGE_STUDENT_APPLY_QUIT_COURSE", "学员申请退课"),
-    BACKSTAGE_STUDENT_APPLY_WITHDRAW("BACKSTAGE_STUDENT_APPLY_WITHDRAW", "学员申请提现");
+    BACKSTAGE_STUDENT_APPLY_WITHDRAW("BACKSTAGE_STUDENT_APPLY_WITHDRAW", "学员申请提现"),
+    PUSH_STUDY_REPORT("PUSH_STUDY_REPORT", "陪练报告");
 
     MessageTypeEnum(String code, String msg) {
         this.code = code;

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

@@ -80,6 +80,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     @Autowired
     private CourseScheduleTeacherSalaryDao courseScheduleTeacherSalaryDao;
     @Autowired
+    private StudentAttendanceDao studentAttendanceDao;
+    @Autowired
     private CourseScheduleTeacherSalaryService courseScheduleTeacherSalaryService;
     @Autowired
     private StudentRegistrationService studentRegistrationService;
@@ -887,7 +889,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 break;
             case "PRACTICE":
                 teacherMusicClassGroup = classGroupDao.findTeacherPracticeClassGroup(user.getId().longValue());
-                //获取陪练课学生名称
                 break;
             default:
                 throw new BizException("课程类型错误");
@@ -917,8 +918,14 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         //统计班级人数
         List<Map<Integer, Integer>> classGroupStudentNumMaps = classGroupStudentMapperDao.countClassGroupsStudentNum(classGroupIds,null);
         Map<Integer, Long> classGroupStudentNumMap = MapUtil.convertIntegerMap(classGroupStudentNumMaps);
-        Map<Integer, Long> currentClassTimes = MapUtil.convertIntegerMap(courseScheduleDao.countCurrentNumByClassGroupId(classGroupIds,user.getId()));
+        Map<Integer, Long> currentClassTimes;
         Map<Integer, Long> noStartClassTimes = MapUtil.convertIntegerMap(courseScheduleDao.countCurrentNumByClassGroupId(classGroupIds,null));
+        if(!type.equals(GroupType.MUSIC)){
+            currentClassTimes = noStartClassTimes;
+        }else {
+            currentClassTimes = MapUtil.convertIntegerMap(courseScheduleDao.countCurrentNumByClassGroupId(classGroupIds,user.getId()));
+        }
+
 
         teacherMusicClassGroup.forEach(teacherClassGroupDto -> {
             if(teacherClassGroupDto.getType() == ClassGroupTypeEnum.PRACTICE){
@@ -2034,25 +2041,28 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 //            Set<Integer> mixClassGroupIds = dataList.stream().map(e -> e.getMixClassGroupId()).collect(Collectors.toSet());
 //            String mixClassGroupIdsStr = StringUtils.join(mixClassGroupIds, ",");
             //所有课程编号的列表
-            List<Integer> couseScheduleIds = dataList.stream().map(MusicGroupCourseScheduleDto::getCourseScheduleId).distinct().collect(Collectors.toList());
+            List<Integer> courseScheduleIds = dataList.stream().map(MusicGroupCourseScheduleDto::getCourseScheduleId).distinct().collect(Collectors.toList());
             //获取合奏班名称
 //            Map<Integer, String> classGroupNames = MapUtil.convertMybatisMap(classGroupDao.findNameById(mixClassGroupIdsStr));
 
             //主教老师
             Map<Long, List<CourseScheduleTeacherSalary>> courseScheduleBishopTeacherMaps=new HashMap<>();
 
+            //是否点名
+            Map<Integer, Long> studentNumCourseMap = MapUtil.convertIntegerMap(studentAttendanceDao.countStudentAttendancesByCourses(courseScheduleIds));
             //助教老师
             Map<Long, List<CourseScheduleTeacherSalary>> courseScheduleTeachingTeacherMaps=new HashMap<>();
-            if(!CollectionUtils.isEmpty(couseScheduleIds)){
-                List<CourseScheduleTeacherSalary> bishopTeachers = courseScheduleTeacherSalaryDao.findByCourseScheduleIdsAndTeacherRole(couseScheduleIds, "BISHOP");
+            if(!CollectionUtils.isEmpty(courseScheduleIds)){
+                List<CourseScheduleTeacherSalary> bishopTeachers = courseScheduleTeacherSalaryDao.findByCourseScheduleIdsAndTeacherRole(courseScheduleIds, "BISHOP");
                 courseScheduleBishopTeacherMaps = bishopTeachers.stream().collect(Collectors.groupingBy(CourseScheduleTeacherSalary::getCourseScheduleId));
 
                 //助教老师
-                List<CourseScheduleTeacherSalary> teachingTeachers = courseScheduleTeacherSalaryDao.findByCourseScheduleIdsAndTeacherRole(couseScheduleIds, "TEACHING");
+                List<CourseScheduleTeacherSalary> teachingTeachers = courseScheduleTeacherSalaryDao.findByCourseScheduleIdsAndTeacherRole(courseScheduleIds, "TEACHING");
                 courseScheduleTeachingTeacherMaps = teachingTeachers.stream().collect(Collectors.groupingBy(CourseScheduleTeacherSalary::getCourseScheduleId));
             }
-
+            MusicGroupCourseScheduleDto scheduleDto = null;
             for(int i=0;i<dataList.size();i++){
+                scheduleDto = dataList.get(i);
 //                e.setMixClassGroupName(classGroupNames.get(e.getMixClassGroupId()));
                 List<CourseScheduleTeacherSalary> currentBishopTeacher = courseScheduleBishopTeacherMaps.get(dataList.get(i).getCourseScheduleId().longValue());
                 List<CourseScheduleTeacherSalary> TeachingTeachers = new ArrayList<>();
@@ -2070,6 +2080,12 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 TeachingTeachers.addAll(currentCourseTeachingTeachers);
                 dataList.get(i).setTeachingTeachers(TeachingTeachers);
                 dataList.get(i).setTeacherNum(TeachingTeachers.size());
+                Long studentNum = studentNumCourseMap.get(scheduleDto.getCourseScheduleId());
+                if (Objects.nonNull(studentNum)) {
+                    scheduleDto.setIsCallNames(studentNum > 0 ? YesOrNoEnum.YES : YesOrNoEnum.NO);
+                } else {
+                    scheduleDto.setIsCallNames(YesOrNoEnum.NO);
+                }
                 /*if (CollectionUtils.isEmpty(currentCourseTeachingTeachers) && !CollectionUtils.isEmpty(currentBishopTeacher)) {
                     currentCourseTeachingTeachers = new ArrayList<>();
                     if (currentBishopTeacher != null) {

+ 32 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleEvaluateServiceImpl.java

@@ -2,22 +2,27 @@ package com.ym.mec.biz.service.impl;
 
 
 import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.dao.ClassGroupDao;
-import com.ym.mec.biz.dal.dao.CourseScheduleEvaluateDao;
-import com.ym.mec.biz.dal.dao.TeacherDao;
+import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.BasicUserDto;
 import com.ym.mec.biz.dal.entity.ClassGroup;
 import com.ym.mec.biz.dal.entity.CourseScheduleEvaluate;
+import com.ym.mec.biz.dal.entity.PracticeGroup;
+import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.service.CourseScheduleEvaluateService;
+import com.ym.mec.biz.service.SysConfigService;
+import com.ym.mec.biz.service.SysMessageService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender;
+import com.ym.mec.util.http.HttpUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.Date;
-import java.util.HashSet;
-import java.util.List;
+import java.util.HashMap;
+import java.util.Map;
+
 
 @Service
 public class CourseScheduleEvaluateServiceImpl extends BaseServiceImpl<Long, CourseScheduleEvaluate> implements CourseScheduleEvaluateService {
@@ -28,6 +33,12 @@ public class CourseScheduleEvaluateServiceImpl extends BaseServiceImpl<Long, Cou
     private ClassGroupDao classGroupDao;
     @Autowired
     private TeacherDao teacherDao;
+    @Autowired
+    private PracticeGroupDao practiceGroupDao;
+    @Autowired
+    private SysConfigDao sysConfigDao;
+    @Autowired
+    private SysMessageService sysMessageService;
 
     @Override
     public BaseDAO<Long, CourseScheduleEvaluate> getDAO() {
@@ -51,6 +62,17 @@ public class CourseScheduleEvaluateServiceImpl extends BaseServiceImpl<Long, Cou
         if (num <= 0) {
             throw new BizException("报告添加失败,请重试");
         }
+        long practiceGroupId = Long.parseLong(classGroup.getMusicGroupId());
+        PracticeGroup practiceGroup = practiceGroupDao.get(practiceGroupId);
+
+        Map<Integer, String> push = new HashMap<>(1);
+        push.put(practiceGroup.getStudentId(), practiceGroup.getStudentId().toString());
+        String baseUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL);
+        String memo = baseUrl + "/#/study?classGroupId=" + classGroup.getId();
+        BasicUserDto teacherInfo = teacherDao.findTeacherInfo(courseScheduleEvaluate.getTeacherId());
+
+        sysMessageService.batchSendMessage(MessageSender.JIGUANG, MessageTypeEnum.PUSH_STUDY_REPORT, push, null, 0, memo, "STUDENT",
+                teacherInfo.getName(),HttpUtil.getSortUrl(memo));
         return true;
     }
 
@@ -62,9 +84,13 @@ public class CourseScheduleEvaluateServiceImpl extends BaseServiceImpl<Long, Cou
         }
         SysUser user = teacherDao.getUser(studyReport.getStudentId());
         BasicUserDto teacherInfo = teacherDao.findTeacherInfo(studyReport.getTeacherId());
-
         studyReport.setStudent(user);
         studyReport.setTeacher(teacherInfo);
+        long practiceGroupId = Long.parseLong(studyReport.getMusicGroupId());
+        PracticeGroup practiceGroup = practiceGroupDao.get(practiceGroupId);
+        ClassGroup classGroup = classGroupDao.get(studyReport.getClassGroupId());
+        studyReport.setTimes(classGroup.getTotalClassTimes());
+        studyReport.setTotalMinutes(classGroup.getTotalClassTimes() * practiceGroup.getSingleClassMinutes());
         return studyReport;
 
     }

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

@@ -1650,7 +1650,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
                 newCourseSchedule.setSchoolId(oldCourseSchedule.getSchoolId());
             }
 			if (newCourseSchedule.getTeachMode() != oldCourseSchedule.getTeachMode() && newCourseSchedule.getTeachMode() == TeachModeEnum.ONLINE) {
-				newCourseSchedule.setSchoolId(-1);
+				newCourseSchedule.setSchoolId(null);
 			}
 			
             if (Objects.isNull(newCourseSchedule.getActualTeacherId())) {
@@ -2889,8 +2889,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
             List<Long> courseScheduleIds = results.stream().map(CourseScheduleEndDto::getId).collect(Collectors.toList());
             List<TeacherAttendance> teacherAttendances = teacherAttendanceDao.findTeacherIdByCourseSchedule(courseScheduleIds);
             Map<Long, List<TeacherAttendance>> courseTeacherAttendanceMap = teacherAttendances.stream().collect(Collectors.groupingBy(TeacherAttendance::getCourseScheduleId));
-            List<Map<Integer, Integer>> studentNumCourseMaps = studentAttendanceDao.countStudentAttendancesByCourses(courseScheduleIds);
-            Map<Integer, Long> studentNumCourseMap = MapUtil.convertIntegerMap(studentNumCourseMaps);
+            Map<Integer, Long> studentNumCourseMap = MapUtil.convertIntegerMap(studentAttendanceDao.countStudentAttendancesByCourses(courseScheduleIds));
             List<Group> groups=new ArrayList<>();
             groups.add(null);
             List<Integer> teacherIds=new ArrayList<>();

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

@@ -4,12 +4,8 @@ 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;
@@ -129,20 +125,8 @@ public class StudentManageServiceImpl implements StudentManageService {
                 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()+" ");
-                    }
-                }
+                e.setMusicGroupStatus(musicGroupStatus.get(e.getUserId()));
+                e.setVipGroupStatus(vipGroupStatus.get(e.getUserId()));
                 if(hasCourse == null){
                     Integer course = studentManageDao.getHasCourse(e.getUserId());
                     e.setHasCourse(course==null?YesOrNoEnum.NO:course==0?YesOrNoEnum.NO:YesOrNoEnum.YES);

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

@@ -151,7 +151,7 @@
 		LEFT JOIN course_schedule cs ON vg.id_ = cs.music_group_id_
 		LEFT JOIN class_group cg ON cg.id_ = cs.class_group_id_
 		LEFT JOIN course_schedule_teacher_salary csts ON csts.course_schedule_id_ = cs.id_
-		WHERE cs.group_type_ = 'VIP' AND csts.settlement_time_ IS NOT NULL
+		WHERE cs.group_type_ = 'VIP' AND csts.settlement_time_ IS NOT NULL AND cs.teach_mode_ = 'OFFLINE'
 		AND cs.class_date_ &gt;= #{firstDayOfMonth} AND cs.class_date_ &lt;= #{lastDayOfMonth}
 		AND FIND_IN_SET(cs.actual_teacher_id_,csrr.teacher_id_)
 		AND FIND_IN_SET(cg.subject_id_list_,csrr.subject_id_)

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

@@ -401,7 +401,10 @@
 		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'
+		SELECT sr.user_id_ 'key',GROUP_CONCAT(CASE WHEN sr.music_group_status_ = 'NORMAL' THEN '在读'
+		WHEN sr.music_group_status_ = 'LEAVE' THEN '请假'
+		WHEN sr.music_group_status_ = 'QUIT' THEN '退班'
+		WHEN sr.music_group_status_ = 'QUIT_SCHOOL' THEN '休学' END) '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

+ 5 - 1
mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml

@@ -900,7 +900,11 @@
         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
+        SELECT cgsm.user_id_ 'key',GROUP_CONCAT(CASE WHEN cgsm.status_ = 'NORMAL' THEN '在读'
+        WHEN cgsm.status_ = 'LEAVE' THEN '请假'
+        WHEN cgsm.status_ = 'QUIT' THEN '退班'
+        WHEN cgsm.status_ = 'QUIT_SCHOOL' THEN '休学' END) '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=",">

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

@@ -10,6 +10,6 @@ import org.springframework.security.oauth2.config.annotation.web.configuration.R
 public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
     @Override
     public void configure(HttpSecurity http) throws Exception {
-        http.authorizeRequests().antMatchers("/v2/api-docs","/user/register","/group/join","/group/create","/room/leave","/room/statusSync").permitAll().anyRequest().authenticated().and().csrf().disable();
+        http.authorizeRequests().antMatchers("/v2/api-docs","/user/register","/group/join","/group/create","/room/leave","/room/statusSync","/group/batchDismiss").permitAll().anyRequest().authenticated().and().csrf().disable();
     }
 }