Browse Source

Merge remote-tracking branch 'origin/master'

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

+ 1 - 0
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/SysUserServiceImpl.java

@@ -145,6 +145,7 @@ public class SysUserServiceImpl extends BaseServiceImpl<Integer, SysUser> implem
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public SysUserInfo initUser(String phone, String clientId) {
 		if(autoRegister){
 			Date date = new Date();

+ 26 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ClassGroupImGroupDto.java

@@ -0,0 +1,26 @@
+package com.ym.mec.biz.dal.dto;
+
+
+import com.ym.mec.biz.dal.entity.ClassGroup;
+
+import java.util.List;
+
+public class ClassGroupImGroupDto {
+    private ClassGroup classGroup;
+    private List<Integer> userIds;
+
+    public ClassGroup getClassGroup() {
+        return classGroup;
+    }
+
+    public void setClassGroup(ClassGroup classGroup) {
+        this.classGroup = classGroup;
+    }
+    public List<Integer> getUserIds() {
+        return userIds;
+    }
+
+    public void setUserIds(List<Integer> userIds) {
+        this.userIds = userIds;
+    }
+}

+ 20 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentManageVipGroupClassDto.java

@@ -16,10 +16,30 @@ public class StudentManageVipGroupClassDto {
 
     private Integer studentNum;
 
+    private Integer currentClassTimes;
+
+    private Integer totalClassTimes;
+
     private String activeName;
 
     private Date courseStartDate;
 
+    public Integer getCurrentClassTimes() {
+        return currentClassTimes;
+    }
+
+    public void setCurrentClassTimes(Integer currentClassTimes) {
+        this.currentClassTimes = currentClassTimes;
+    }
+
+    public Integer getTotalClassTimes() {
+        return totalClassTimes;
+    }
+
+    public void setTotalClassTimes(Integer totalClassTimes) {
+        this.totalClassTimes = totalClassTimes;
+    }
+
     public Long getVipGroupId() {
         return vipGroupId;
     }

+ 41 - 8
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -296,13 +296,16 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 courseScheduleDao.deleteCourseSchedulesByClassGroupIds(courseScheduleIds);
             }
 
+            List<ImGroupModel> imGroupModelList = new ArrayList<>();
             for (ClassGroup classGroup : classGroups) {
-                imFeignService.groupDismiss(new ImGroupModel(classGroup.getId().toString(), null, classGroup.getName()));
+                imGroupModelList.add(new ImGroupModel(classGroup.getId().toString(), null, classGroup.getName()));
             }
+            imFeignService.groupBatchDismiss(imGroupModelList);
         }
 
         List<CourseSchedule> courseScheduleList = new ArrayList<>();
         List<ClassGroupTeacherMapper> classGroupTeacherMapperList = new ArrayList<>();
+        List<ClassGroupImGroupDto> classGroupImGroupList = new ArrayList<>();
         Integer schoolId = musicGroup.getSchoolId();
         for (HighClassGroupDto highClassGroup : highClassGroupList) {
             if (highClassGroup.getDayOfWeek() < 1 || highClassGroup.getDayOfWeek() > 7) {
@@ -374,9 +377,13 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             List<Integer> userIdList = new ArrayList<>();
             userIdList.add(classGroupTeacherMapper.getUserId());
 
-            //加入Im群组
-            addImGroup(highClassGroup, userIdList);
+            ClassGroupImGroupDto classGroupImGroupDto = new ClassGroupImGroupDto();
+            classGroupImGroupDto.setClassGroup(highClassGroup);
+            classGroupImGroupDto.setUserIds(userIdList);
+            classGroupImGroupList.add(classGroupImGroupDto);
         }
+        //加入Im群组
+        batchAddImGroup(classGroupImGroupList);
         classGroupTeacherMapperService.classGroupTeachersInsert(classGroupTeacherMapperList);
         //检测新排课冲突
         courseScheduleService.checkNewCourseSchedules(courseScheduleList, false);
@@ -1196,15 +1203,12 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     @Transactional(rollbackFor = Exception.class)
     public ClassGroup classGroupUpdate(ClassGroup4MixDto classGroup4MixDto) throws Exception {
         Date date = new Date();
-        String musicGroupId = classGroup4MixDto.getMusicGroupId();
-        MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
-        if (musicGroup == null) {
-            throw new Exception("乐团不存在");
-        }
         ClassGroup classGroup = classGroupDao.get(classGroup4MixDto.getClassGroupId());
         if (classGroup == null) {
             throw new Exception("班级不存在");
         }
+        MusicGroup musicGroup = musicGroupDao.get(classGroup.getMusicGroupId());
+
         Integer schoolId = musicGroup.getSchoolId();
 
         List<Subject> subjectList = subjectService.findBySubjectByIdList(classGroup.getSubjectIdList());
@@ -1768,4 +1772,33 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     public List<ClassGroup> findByClassGroupIds(List<Integer> classGroupIds) {
         return classGroupDao.findByClassGroupIds(classGroupIds);
     }
+
+    public Boolean batchAddImGroup(List<ClassGroupImGroupDto> classGroupImGroupList) {
+
+        MusicGroup musicGroup = musicGroupDao.get(classGroupImGroupList.get(0).getClassGroup().getMusicGroupId());
+
+        List<ImGroupModel> imGroupModelList = new ArrayList<>();
+        for (ClassGroupImGroupDto classGroupImGroupDto : classGroupImGroupList) {
+            List<Integer> userIdList = new ArrayList<>();
+            userIdList.add(musicGroup.getEducationalTeacherId());
+            userIdList.add(musicGroup.getTeamTeacherId());
+            userIdList.add(musicGroup.getOperatorUserId());
+            userIdList.add(musicGroup.getDirectorUserId());
+            if (classGroupImGroupDto.getUserIds() != null && classGroupImGroupDto.getUserIds().size()>0) {
+                userIdList.addAll(classGroupImGroupDto.getUserIds());
+            }
+
+            List<ImGroupMember> imGroupMemberList = new ArrayList<>();
+            for (Integer userId : userIdList) {
+                if (userId == null) continue;
+                imGroupMemberList.add(new ImGroupMember(userId.toString()));
+            }
+            //创建IM群组
+            ImGroupMember[] imGroupMembers = imGroupMemberList.toArray(new ImGroupMember[imGroupMemberList.size()]);
+            ImGroupModel imGroupModel = new ImGroupModel(classGroupImGroupDto.getClassGroup().getId().toString(), imGroupMembers, classGroupImGroupDto.getClassGroup().getName());
+            imGroupModelList.add(imGroupModel);
+        }
+        imFeignService.groupBatchCreate(imGroupModelList);
+        return true;
+    }
 }

+ 24 - 21
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -333,18 +333,8 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         		// 更新订单信息
         		studentPaymentOrder.setBalancePaymentAmount(amount);
                 studentPaymentOrder.setUpdateTime(date);
-                studentPaymentOrderService.update(studentPaymentOrder);
-                studentPaymentOrder.setVersion(studentPaymentOrder.getVersion()+1);
-
         		sysUserCashAccountService.updateBalance(userId, amount.negate(),PlatformCashAccountDetailTypeEnum.PAY_FEE,"乐团续费");
 
-                Map<String,String> notifyMap=new HashMap<>();
-                notifyMap.put("tradeState", "1");
-                notifyMap.put("merOrderNo", studentPaymentOrder.getOrderNo());
-                notifyMap.put("channelType", channelType);
-                notifyMap.put("orderNo", "");
-                studentPaymentOrderService.updateOrder(notifyMap);
-                return notifyMap;
         	}else{
 				if (userCashAccount.getBalance().doubleValue() > 0) {
 					sysUserCashAccountService.updateBalance(userId, userCashAccount.getBalance().negate(), PlatformCashAccountDetailTypeEnum.PAY_FEE, "乐团续费");
@@ -356,6 +346,18 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         	}
         }
 
+        studentPaymentOrderService.update(studentPaymentOrder);
+        if(amount.compareTo(BigDecimal.ZERO)==0) {
+            Map<String, String> notifyMap = new HashMap<>();
+            notifyMap.put("tradeState", "1");
+            notifyMap.put("merOrderNo", studentPaymentOrder.getOrderNo());
+            notifyMap.put("channelType", channelType);
+            notifyMap.put("orderNo", "");
+            studentPaymentOrderService.updateOrder(notifyMap);
+            return notifyMap;
+        }
+
+        studentPaymentOrder.setVersion(studentPaymentOrder.getVersion()+1);
 
         String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
         Map payMap = payService.getPayMap(
@@ -370,7 +372,6 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         studentPaymentOrder.setPaymentChannel((String) payMap.get("type"));
         studentPaymentOrder.setUpdateTime(date);
         studentPaymentOrderService.update(studentPaymentOrder);
-        
 		return payMap;
 	}
 
@@ -477,17 +478,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         		// 更新订单信息
         		studentPaymentOrder.setBalancePaymentAmount(amount);
                 studentPaymentOrder.setUpdateTime(date);
-                studentPaymentOrderService.update(studentPaymentOrder);
-                
         		sysUserCashAccountService.updateBalance(userId, amount.negate(),PlatformCashAccountDetailTypeEnum.PAY_FEE,"乐团续费");
-
-                Map<String,String> notifyMap=new HashMap<>();
-                notifyMap.put("tradeState", "1");
-                notifyMap.put("merOrderNo", studentPaymentOrder.getOrderNo());
-                notifyMap.put("channelType", channelType);
-                notifyMap.put("orderNo", "");
-                studentPaymentOrderService.updateOrder(notifyMap);
-                return notifyMap;
         	}else{
 				if (userCashAccount.getBalance().doubleValue() > 0) {
 					sysUserCashAccountService.updateBalance(userId, userCashAccount.getBalance().negate(), PlatformCashAccountDetailTypeEnum.PAY_FEE, "乐团续费");
@@ -499,6 +490,18 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         	}
         }
 
+        studentPaymentOrderService.update(studentPaymentOrder);
+        if(amount.compareTo(BigDecimal.ZERO)==0) {
+            Map<String, String> notifyMap = new HashMap<>();
+            notifyMap.put("tradeState", "1");
+            notifyMap.put("merOrderNo", studentPaymentOrder.getOrderNo());
+            notifyMap.put("channelType", channelType);
+            notifyMap.put("orderNo", "");
+            studentPaymentOrderService.updateOrder(notifyMap);
+            return notifyMap;
+        }
+        studentPaymentOrder.setVersion(studentPaymentOrder.getVersion()+1);
+
         String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
         Map payMap = payService.getPayMap(
                 amount,

+ 9 - 8
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java

@@ -256,7 +256,7 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 		teacherAttendance.setTeacherId(userId);
 		teacherAttendance.setClassGroupId(classGroup.getId());
 		teacherAttendance.setMusicGroupId(classGroup.getMusicGroupId());
-		int advanceSignMinutes = Integer.parseInt(sysConfigDao.findConfigValue(SysConfigService.ADVANCE_SIGN_IN_MINUTES));
+//		int advanceSignMinutes = Integer.parseInt(sysConfigDao.findConfigValue(SysConfigService.ADVANCE_SIGN_IN_MINUTES));
 		Date date = new Date();
 		String classDate = DateUtil.format(courseSchedule.getClassDate(), DateUtil.DEFAULT_PATTERN);
 		String startClassTime = DateUtil.format(courseSchedule.getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
@@ -265,7 +265,8 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 		Date classStartDateTime = DateUtil.stringToDate(classDate + " " + startClassTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
 		Date classEndDateTime = DateUtil.stringToDate(classDate + " " + endClassTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
 		Date classEndDateAdd60Minutes = DateUtil.addMinutes(classEndDateTime, 60);
-		Date add20Minutes = DateUtil.addMinutes(classStartDateTime, advanceSignMinutes * -1);
+		Date classEndDateCut10Minutes = DateUtil.addMinutes(classEndDateTime, -10);
+//		Date add20Minutes = DateUtil.addMinutes(classStartDateTime, advanceSignMinutes * -1);
 		Date add60Minutes = DateUtil.addMinutes(classStartDateTime, -60);
 		//签到
 		if(teacherAttendance.getSignInTime() == null && SignStatusEnum.SIGN_IN.equals(signStatus)){
@@ -280,11 +281,11 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 			boolean isSign = false;
 			if(yesOrNoEnum == YesOrNoEnum.YES){
 				isSign = true;
-			}else if(DateUtil.minutesBetween(add60Minutes,date) > 0 && DateUtil.minutesBetween(date,add20Minutes) > 0){
-				//正常签到范围(开始前60分钟  ~  开始之前20分钟)
+			}else if(DateUtil.minutesBetween(add60Minutes,date) > 0 && DateUtil.minutesBetween(date,classStartDateTime) > 0){
+				//正常签到范围(开始前60分钟  ~  开始之前)
 				isSign = true;
-			}else if(DateUtil.minutesBetween(add20Minutes,date) > 0){
-				//异常签到范围(开始之前20分钟)
+			}else if(DateUtil.minutesBetween(classStartDateTime,date) > 0){
+				//异常签到范围(开始之)
 				isSign = true;
 				teacherAttendance.setSignInStatus(YesOrNoEnum.NO);
 			}
@@ -303,8 +304,8 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 		}
 		//签退
 		if(teacherAttendance.getSignOutTime() == null && SignStatusEnum.SIGN_OUT.equals(signStatus)){
-			//正常签退范围(课程结束,1小时内)
-			if(DateUtil.minutesBetween(classEndDateTime,date) > 0 && DateUtil.minutesBetween(date,classEndDateAdd60Minutes) > 0){
+			//正常签退范围(课程结束前10分钟,1小时内)
+			if(DateUtil.minutesBetween(classEndDateCut10Minutes,date) > 0 && DateUtil.minutesBetween(date,classEndDateAdd60Minutes) > 0){
 				teacherAttendance.setSignOutStatus(YesOrNoEnum.YES);
 			}else if(DateUtil.minutesBetween(classEndDateAdd60Minutes,date) > 0){
 				teacherAttendance.setSignOutStatus(YesOrNoEnum.NO);

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

@@ -1224,7 +1224,7 @@
             cs.leave_student_num_,
             cs.schoole_id_
         FROM
-            course_schedule cs
+            course_schedule cs left join class_group cg on cs.class_group_id_ = cg.id_
         WHERE (cs.class_date_ BETWEEN DATE_FORMAT(#{startTime},'%Y%m%d') AND DATE_FORMAT(#{endTime},'%Y%m%d'))
             AND cs.del_flag_!=1 AND cg.del_flag_!=1
     </select>

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

@@ -478,15 +478,18 @@
         <result property="studentNum" column="student_num_"/>
         <result property="activeName" column="name_"/>
         <result property="courseStartDate" column="courses_start_date"/>
+        <result property="currentClassTimes" column="current_class_times_"/>
+        <result property="totalClassTimes" column="total_class_times_"/>
     </resultMap>
     <select id="findStudentVipGroupClass" resultMap="StudentManageVipGroupClassDto">
-        SELECT vg.id_,vg.name_ vip_group_name_,vg.status_,cgtm.user_id_,cg.student_num_,vgc.name_,vg.courses_start_date
+        SELECT vg.id_,vg.name_ vip_group_name_,vg.status_,cgtm.user_id_,cg.student_num_,
+        vgc.name_,vg.courses_start_date,cg.current_class_times_,cg.total_class_times_
         FROM class_group_student_mapper cgsm
         LEFT JOIN class_group cg ON cgsm.class_group_id_ = cg.id_
         LEFT JOIN vip_group vg ON cg.music_group_id_ = vg.id_
         LEFT JOIN class_group_teacher_mapper cgtm ON cgtm.class_group_id_ = cg.id_
         LEFT JOIN vip_group_activity vgc ON vgc.id_ = vg.vip_group_activity_id_
-        WHERE cg.group_type_ = 'VIP' AND cgtm.teacher_role_ = 'BISHOP' AND cgsm.user_id_ = #{studentId}
+        WHERE cg.group_type_ = 'VIP' AND cgtm.teacher_role_ = 'BISHOP' AND cgsm.status != 'QUIT' AND cgsm.user_id_ = #{studentId}
         <if test="vipGroupName != null">
             AND vg.name_ LIKE CONCAT('%',#{vipGroupName},'%')
         </if>
@@ -500,7 +503,7 @@
         LEFT JOIN class_group cg ON cgsm.class_group_id_ = cg.id_
         LEFT JOIN vip_group vg ON cg.music_group_id_ = vg.id_
         LEFT JOIN class_group_teacher_mapper cgtm ON cgtm.class_group_id_ = cg.id_
-        WHERE cg.group_type_ = 'VIP' AND cgtm.teacher_role_ = 'BISHOP' AND cgsm.user_id_ = #{studentId}
+        WHERE cg.group_type_ = 'VIP' AND cgtm.teacher_role_ = 'BISHOP' AND cgsm.status != 'QUIT' AND cgsm.user_id_ = #{studentId}
         <if test="vipGroupName != null">
             AND vg.name_ LIKE CONCAT('%',#{vipGroupName},'%')
         </if>

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

@@ -110,41 +110,29 @@
 	</select>
 
     <select id="findStudentVipGroups" resultMap="studentManageVipGroup">
-        SELECT cs.teach_mode_,su.real_name_,cg.student_num_,cg.total_class_times_,cg.current_class_times_,
-        CONCAT(cs.class_date_," ",cs.start_class_time_) course_date_,cg.id_ class_group_id_,cg.name_ class_group_name_,cs.status_ course_status_
-        FROM vip_group vg
-        LEFT JOIN class_group cg ON cg.music_group_id_ = vg.id_
-        LEFT JOIN course_schedule cs ON cs.music_group_id_ = vg.id_
-        LEFT JOIN sys_user su ON su.id_ = cs.actual_teacher_id_
-        LEFT JOIN class_group_student_mapper cgsm ON cgsm.music_group_id_ = vg.id_
-        <where>
-            vg.audit_status_ = 'PASS' AND cs.id_ IS NOT NULL AND cgsm.status_ != 'QUIT' AND cg.group_type_ = 'VIP'
-            <if test="studentId != null">
-                AND cgsm.user_id_ = #{studentId}
-            </if>
-            <if test="classGroupName != null">
-                AND cg.name_ LIKE CONCAT('%',#{classGroupName},'%')
-            </if>
-        </where>
-        ORDER BY cs.class_date_,cs.start_class_time_
+        SELECT CONCAT(cs.class_date_," ",cs.start_class_time_) course_date_,cs.teach_mode_,cs.status_ course_status_,cs.name_ class_group_name_
+        FROM course_schedule cs
+        WHERE cs.group_type_ = 'VIP'
+        <if test="vipGroupId != null">
+            AND cs.music_group_id_ = #{vipGroupId}
+        </if>
+        <if test="classGroupName != null">
+            AND cs.name_ LIKE CONCAT('%',#{classGroupName},'%')
+        </if>
+        ORDER BY course_date_
         <include refid="global.limit"/>
     </select>
 
     <select id="countStudentVipGroups" resultType="java.lang.Integer">
         SELECT COUNT(cs.id_)
-        FROM vip_group vg
-        LEFT JOIN class_group cg ON cg.music_group_id_ = vg.id_
-        LEFT JOIN course_schedule cs ON cs.music_group_id_ = vg.id_
-        LEFT JOIN class_group_student_mapper cgsm ON cgsm.music_group_id_ = vg.id_
-        <where>
-            vg.audit_status_ = 'PASS' AND cs.id_ IS NOT NULL AND cgsm.status_ != 'QUIT' AND cg.group_type_ = 'VIP'
-            <if test="studentId != null">
-                AND cgsm.user_id_ = #{studentId}
-            </if>
-            <if test="classGroupName != null">
-                AND cg.name_ LIKE CONCAT('%',#{classGroupName},'%')
-            </if>
-        </where>
+        FROM course_schedule cs
+        WHERE cs.group_type_ = 'VIP'
+        <if test="vipGroupId != null">
+            AND cs.music_group_id_ = #{vipGroupId}
+        </if>
+        <if test="classGroupName != null">
+            AND cs.name_ LIKE CONCAT('%',#{classGroupName},'%')
+        </if>
     </select>
 
     <!-- 全查询 -->