Selaa lähdekoodia

Merge branch 'master' into review-zjh

周箭河 5 vuotta sitten
vanhempi
commit
5e27aa96c0

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

@@ -288,4 +288,11 @@ public interface StudentManageDao {
      * @return
      */
     List<BasicUserDto> queryCanAddStudent(@Param("musicGroupId") String musicGroupId, @Param("musicGroupPaymentCalenderId") Long musicGroupPaymentCalenderId);
+
+    /**
+     * 学员是否有课
+     * @param userIds
+     * @return
+     */
+    List<Map<Integer,Integer>> queryHasCourseMap(@Param("userIds") Set<Integer> userIds);
 }

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

@@ -56,7 +56,7 @@ public class StudentManageListDto {
 
     private Integer organId;
 
-    private Integer serviceTag;
+    private YesOrNoEnum serviceTag;
 
     private YesOrNoEnum operatingTag;
 
@@ -74,11 +74,11 @@ public class StudentManageListDto {
     
     private Integer teacherId;
 
-    public Integer getServiceTag() {
+    public YesOrNoEnum getServiceTag() {
         return serviceTag;
     }
 
-    public void setServiceTag(Integer serviceTag) {
+    public void setServiceTag(YesOrNoEnum serviceTag) {
         this.serviceTag = serviceTag;
     }
 

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

@@ -30,6 +30,7 @@ import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.json.JsonUtil;
 import org.apache.commons.collections.ListUtils;
+import org.apache.commons.lang3.ArrayUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -3607,6 +3608,10 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         Calendar calendar = Calendar.getInstance();
         calendar.setTime(courseGenerateInfo.getCourseCreateStartTime());
 
+        if(Objects.isNull(courseGenerateInfo.getCourseCount())||courseGenerateInfo.getCourseCount()<=0){
+        	throw new BizException("可排课次数不足");
+		}
+
         Set<String> holidayDays = new HashSet<>();
 
 		if (courseGenerateInfo.isSkipHoliday()) {

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

@@ -3730,10 +3730,11 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
             for (Map.Entry<Integer, String> integerStringEntry : userNeedRemindPracticeIdMap.entrySet()) {
                 Map<Integer, String> userMap = new HashMap<>();
                 userMap.put(integerStringEntry.getKey(), integerStringEntry.getKey().toString());
+                String[] params = integerStringEntry.getValue().split("-");
                 sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.PRACTICE_RENEW_REMIND_PUSH,
-                        userMap, null, 0, "5?" + pushUrl + integerStringEntry.getValue(), "STUDENT");
+                        userMap, null, 0, "5?" + pushUrl + (params[0].equals("CHARGE")?params[1]:""), "STUDENT");
             }
-            List<Integer> practiceIds = userNeedRemindPracticeIdMap.values().stream().map(e->Integer.valueOf(e)).collect(Collectors.toList());
+            List<Integer> practiceIds = userNeedRemindPracticeIdMap.values().stream().map(e->Integer.valueOf(e.split("-")[1])).collect(Collectors.toList());
             practiceGroupDao.batchUpdatePracticeRemindStatus(practiceIds, YesOrNoEnum.YES.getCode());
         }
     }

+ 15 - 24
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentManageServiceImpl.java

@@ -1,33 +1,14 @@
 package com.ym.mec.biz.service.impl;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.stream.Collectors;
-
-import com.ym.mec.biz.dal.dao.*;
-import com.ym.mec.biz.dal.dto.*;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
 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.Student;
 import com.ym.mec.biz.dal.entity.StudentRegistration;
 import com.ym.mec.biz.dal.entity.SysUserCashAccount;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
-import com.ym.mec.biz.dal.page.MusicGroupStudentQueryInfo;
-import com.ym.mec.biz.dal.page.StudentManageAttendanceQueryInfo;
-import com.ym.mec.biz.dal.page.StudentManageCourseQueryInfo;
-import com.ym.mec.biz.dal.page.StudentManageQueryInfo;
-import com.ym.mec.biz.dal.page.StudentManageVipClassQueryInfo;
-import com.ym.mec.biz.dal.page.StudentOperatingQueryInfo;
-import com.ym.mec.biz.dal.page.StudentSignQueryInfo;
-import com.ym.mec.biz.dal.page.TeacherPaymentRecordInfo;
+import com.ym.mec.biz.dal.page.*;
 import com.ym.mec.biz.service.StudentManageService;
 import com.ym.mec.biz.service.StudentService;
 import com.ym.mec.common.entity.ImResult;
@@ -36,6 +17,13 @@ import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.im.ImFeignService;
 import com.ym.mec.util.collection.MapUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @Author Joburgess
@@ -140,6 +128,8 @@ public class StudentManageServiceImpl implements StudentManageService {
             Map<Integer,String> vipGroupStatus = MapUtil.convertMybatisMap(vipGroupDao.queryUserVipStatus(userIds));
             //获取所在声部
             Map<Integer,String> subjectNames = MapUtil.convertMybatisMap(studentManageDao.querySubjectNames(userIds));
+            //学员是否有课
+            Map<Integer,Integer> hasCourseMap = MapUtil.convertMybatisMap(studentManageDao.queryHasCourseMap(userIds));
             dataList.forEach(e -> {
                 e.setOrganName(organNames.get(e.getOrganId()));
                 e.setMusicGroupName(musicGroupNames.get(e.getUserId().longValue()));
@@ -147,7 +137,8 @@ public class StudentManageServiceImpl implements StudentManageService {
                 e.setSubjectName(subjectNames.get(e.getUserId().longValue()));
                 e.setMusicGroupStatus(musicGroupStatus.get(e.getUserId().longValue()));
                 e.setVipGroupStatus(vipGroupStatus.get(e.getUserId()));
-                if(hasCourse == null){
+                e.setHasCourse(hasCourseMap.get(e.getUserId())==null?YesOrNoEnum.NO:YesOrNoEnum.YES);
+                /*if(hasCourse == null){
                     Integer course = studentManageDao.getHasCourse(e.getUserId());
                     e.setHasCourse(course==null?YesOrNoEnum.NO:course==0?YesOrNoEnum.NO:YesOrNoEnum.YES);
                 }else {
@@ -156,7 +147,7 @@ public class StudentManageServiceImpl implements StudentManageService {
                     }else {
                         e.setHasCourse(YesOrNoEnum.NO);
                     }
-                }
+                }*/
                 e.setHasPracticeCourse(hasPracticeCourseMap.get(e.getUserId()) == null?YesOrNoEnum.NO:YesOrNoEnum.YES);
                 if(collect.get(e.getUserId()) != null){
                     e.setCourseBalance(collect.get(e.getUserId()).getCourseBalance());

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

@@ -140,7 +140,8 @@ public class StudentServeServiceImpl implements StudentServeService {
                     studentExtracurricularExercisesSituation.setActualExercisesNum(1);
                     long replyNum = studentHomeworks.stream().filter(e -> YesOrNoEnum.YES.equals(e.getStatus())).count();
                     studentExtracurricularExercisesSituation.setExercisesReplyNum(replyNum>0?1:0);
-                    if(replyNum>0){
+                    long haveSubmitTimes = studentHomeworks.stream().filter(e -> Objects.nonNull(e.getSubmitTime())).count();
+                    if(replyNum>0&&haveSubmitTimes>0){
                         Date lastSubmitTime = studentHomeworks.stream().filter(e->Objects.nonNull(e.getSubmitTime())).max(Comparator.comparing(StudentServeCourseHomeworkDto::getSubmitTime)).get().getSubmitTime();
                         studentExtracurricularExercisesSituation.setLastSubmitTime(lastSubmitTime);
                     }
@@ -178,7 +179,8 @@ public class StudentServeServiceImpl implements StudentServeService {
                 studentExtracurricularExercisesSituation.setActualExercisesNum(1);
                 long replyNum = studentExercises.stream().filter(e -> e.getStatus()==1).count();
                 studentExtracurricularExercisesSituation.setExercisesReplyNum(replyNum>0?1:0);
-                if(replyNum>0){
+                long haveSubmitTimes = studentExercises.stream().filter(e->Objects.nonNull(e.getSubmitTime())).count();
+                if(replyNum>0&&haveSubmitTimes>0){
                     Date lastSubmitTime = studentExercises.stream().filter(e->Objects.nonNull(e.getSubmitTime())).max(Comparator.comparing(ExtracurricularExercisesReply::getSubmitTime)).get().getSubmitTime();
                     studentExtracurricularExercisesSituation.setLastSubmitTime(lastSubmitTime);
                 }

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

@@ -1737,6 +1737,9 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			StudentPauseInfo studentPauseInfo1 = studentPauseInfos.stream().min(Comparator.comparing(StudentPauseInfo::getSurplusCourseNum)).get();
 			Map<String, Object> courseInfo1 = JSON.parseObject(studentPauseInfo1.getCoursesJson(), Map.class);
 			Integer[] teachModeSequence1=JSON.parseArray(courseInfo1.get("teaChModeSequence").toString(), Integer.class).stream().toArray(Integer[]::new);
+			if(teachModeSequence1.length<=0){
+				throw new BizException("此学员无剩余课时");
+			}
 			studentRecoverInfo.setCourseCount(teachModeSequence1.length);
 			List<CourseSchedule> newCourseSchedules = courseScheduleService.createCourses(studentRecoverInfo,false);
 			for(int i=0;i<newCourseSchedules.size();i++){

+ 13 - 9
mec-biz/src/main/resources/config/mybatis/PracticeGroupMapper.xml

@@ -170,9 +170,8 @@
         SELECT COUNT(*)
         FROM practice_group
         WHERE student_id_ = #{userId}
-          AND group_status_ = 'NORMAL'
+          AND group_status_ IN ('NORMAL', 'FINISH')
           AND type_='FREE'
-          AND create_time_ > '2020-03-25'
     </select>
     <select id="countPracticeGroupByOrgan" resultType="java.lang.Integer">
         SELECT count(*) FROM practice_group pg
@@ -683,27 +682,32 @@
             AND cs.actual_teacher_id_ = #{teacherId}
             AND pg.student_id_ = #{studentId}
     </select>
+
     <select id="checkStudentExitChargePractice" resultType="int">
         SELECT COUNT(id_) FROM practice_group WHERE type_='CHARGE' AND student_id_=#{studentId} AND group_status_ IN ('NORMAL', 'FINISH')
     </select>
+
     <select id="countStudentIngTrialPractices" resultType="int">
       SELECT COUNT(pg.id_) FROM practice_group pg LEFT JOIN course_schedule cs ON cs.music_group_id_=pg.id_
       WHERE pg.student_id_=#{studentId} AND pg.type_='TRIAL' AND cs.group_type_='PRACTICE' AND CONCAT(cs.class_date_, ' ', cs.end_class_time_)>NOW()
     </select>
+
     <select id="getNeedRemindPracticeUsers" resultType="int">
         SELECT pg.student_id_ FROM practice_group pg
         LEFT JOIN course_schedule cs ON cs.music_group_id_=pg.id_
         WHERE pg.group_status_='NORMAL' AND cs.group_type_='PRACTICE' AND CONCAT(class_date_, ' ', end_class_time_)>NOW()
         GROUP BY pg.student_id_ HAVING COUNT(cs.id_)=1;
     </select>
+
     <select id="getUserNeedRemindPracticeIdMap" resultType="map">
-        SELECT cssp.user_id_ AS 'key', cssp.music_group_id_ AS 'value' FROM course_schedule_student_payment cssp
-        LEFT JOIN course_schedule cs ON cs.id_=cssp.course_schedule_id_
-        LEFT JOIN practice_group pg ON pg.id_=cssp.music_group_id_
+        SELECT cssp.user_id_ AS 'key', CONCAT(pg.type_, '-', cssp.music_group_id_) AS 'value'
+        FROM course_schedule_student_payment cssp
+            LEFT JOIN course_schedule cs ON cs.id_=cssp.course_schedule_id_
+            LEFT JOIN practice_group pg ON pg.id_=cssp.music_group_id_
         WHERE pg.reminded=0 AND cs.group_type_='PRACTICE' AND CONCAT(class_date_, ' ', end_class_time_)>NOW()
-        AND cssp.user_id_ IN
-        <foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
-            #{studentId}
-        </foreach>
+            AND cssp.user_id_ IN
+            <foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
+                #{studentId}
+            </foreach>
     </select>
 </mapper>

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

@@ -746,7 +746,7 @@
         <result property="organId" column="organ_id_"/>
         <result property="subjectName" column="music_group_subject_"/>
         <result property="courseBalance" column="course_balance_"/>
-        <result property="serviceTag" column="service_tag_" />
+        <result property="serviceTag" column="service_tag_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result property="operatingTag" column="operating_tag_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result property="teacherName" column="teacher_name_"/>
         <result property="teacherId" column="teacher_id_"/>
@@ -901,5 +901,15 @@
         WHERE mgpc.id_ = #{musicGroupPaymentCalenderId}
         ) AND mgsf.music_group_id_ = #{musicGroupId}
     </select>
+    <select id="queryHasCourseMap" resultType="java.util.Map">
+        SELECT su.id_ 'key',COUNT(DISTINCT su.id_) 'value' 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_
+        WHERE cs.status_ != 'OVER' AND su.id_ IN
+        <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
+            #{userId}
+        </foreach>
+        GROUP BY su.id_
+    </select>
 
 </mapper>