瀏覽代碼

Merge remote-tracking branch 'origin/master'

周箭河 5 年之前
父節點
當前提交
db06a1238a
共有 24 個文件被更改,包括 496 次插入269 次删除
  1. 10 11
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/SysUserServiceImpl.java
  2. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupDao.java
  3. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/GroupDao.java
  4. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseScheduleEndDto.java
  5. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/SuperClassGroupDto.java
  6. 7 9
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/Group.java
  7. 35 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/EndCourseScheduleQueryInfo.java
  8. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/SporadicChargeInfoQueryInfo.java
  9. 10 4
      mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java
  10. 5 0
      mec-biz/src/main/java/com/ym/mec/biz/service/SysConfigService.java
  11. 188 150
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  12. 28 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  13. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  14. 9 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentAttendanceServiceImpl.java
  15. 75 68
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  16. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherServiceImpl.java
  17. 4 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
  18. 11 1
      mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml
  19. 17 1
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  20. 25 2
      mec-biz/src/main/resources/config/mybatis/GroupMapper.xml
  21. 9 2
      mec-biz/src/main/resources/config/mybatis/SporadicChargeInfo.xml
  22. 3 1
      mec-student/src/main/java/com/ym/mec/student/config/ResourceServerConfig.java
  23. 5 5
      mec-student/src/main/java/com/ym/mec/student/controller/SporadicChargeInfoController.java
  24. 2 2
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/eseal/provider/TsignPlugin.java

+ 10 - 11
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/SysUserServiceImpl.java

@@ -1,14 +1,5 @@
 package com.ym.mec.auth.service.impl;
 
-import java.util.Date;
-import java.util.List;
-
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.security.core.userdetails.UsernameNotFoundException;
-import org.springframework.stereotype.Service;
-
 import com.ym.mec.auth.api.dto.SysUserInfo;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.api.enums.SysUserType;
@@ -24,8 +15,16 @@ import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.im.ImFeignService;
 import com.ym.mec.im.UserFeignService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.security.core.userdetails.UsernameNotFoundException;
+import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.Date;
+import java.util.List;
+
 @Service
 public class SysUserServiceImpl extends BaseServiceImpl<Integer, SysUser> implements SysUserService {
 
@@ -149,7 +148,7 @@ public class SysUserServiceImpl extends BaseServiceImpl<Integer, SysUser> implem
 	@Transactional(rollbackFor = Exception.class)
 	public SysUserInfo initUser(String phone, String clientId,String isRegister) {
 		if("register".equals(isRegister)){
-			return null;
+			throw new UsernameNotFoundException("404.9");
 		}
 		if(autoRegister){
 			if(StringUtils.equalsIgnoreCase(clientId,"STUDENT")){
@@ -196,4 +195,4 @@ public class SysUserServiceImpl extends BaseServiceImpl<Integer, SysUser> implem
 		throw new UsernameNotFoundException("404.9");
 	}
 
-}
+}

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

@@ -549,4 +549,14 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
      */
     ClassGroup findByGroupAndType(@Param("groupId") String groupId,
                                   @Param("groupType") String groupType);
+
+    /**
+     * @describe 终极班级查询
+     * @author Joburgess
+     * @date 2019/12/30
+     * @param params: 查询条件
+     * @return java.util.List<com.ym.mec.biz.dal.dto.SuperClassGroupDtio>
+     */
+    List<SuperClassGroupDto> superFindClassGroups(Map<String, Object> params);
+    int superCountClassGroups(Map<String, Object> params);
 }

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/GroupDao.java

@@ -20,4 +20,13 @@ public interface GroupDao {
      */
     List<Group> searchGroups(@Param("search") String search);
 
+    /**
+     * @describe 根据团体编号获取团体
+     * @author Joburgess
+     * @date 2019/12/30
+     * @param groups: 团体列表
+     * @return java.util.List<com.ym.mec.biz.dal.entity.Group>
+     */
+    List<Group> findByGroupIds(@Param("groups") List<Group> groups);
+
 }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseScheduleEndDto.java

@@ -7,4 +7,14 @@ import com.ym.mec.biz.dal.entity.CourseSchedule;
  * @Date 2019/12/27
  */
 public class CourseScheduleEndDto extends CourseSchedule {
+
+    private String groupName;
+
+    public String getGroupName() {
+        return groupName;
+    }
+
+    public void setGroupName(String groupName) {
+        this.groupName = groupName;
+    }
 }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/SuperClassGroupDto.java

@@ -0,0 +1,10 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.entity.ClassGroup;
+
+/**
+ * @Author Joburgess
+ * @Date 2019/12/30
+ */
+public class SuperClassGroupDto extends ClassGroup {
+}

+ 7 - 9
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/Group.java

@@ -17,8 +17,13 @@ public class Group {
     @ApiModelProperty(value = "类型")
     private GroupType groupType;
 
-    @ApiModelProperty(value = "班级编号")
-    private Integer classGroupId;
+    public Group() {
+    }
+
+    public Group(String id, GroupType groupType) {
+        this.id = id;
+        this.groupType = groupType;
+    }
 
     public String getId() {
         return id;
@@ -44,11 +49,4 @@ public class Group {
         this.groupType = groupType;
     }
 
-    public Integer getClassGroupId() {
-        return classGroupId;
-    }
-
-    public void setClassGroupId(Integer classGroupId) {
-        this.classGroupId = classGroupId;
-    }
 }

+ 35 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/EndCourseScheduleQueryInfo.java

@@ -1,10 +1,45 @@
 package com.ym.mec.biz.dal.page;
 
+import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.common.page.QueryInfo;
+import io.swagger.annotations.ApiModelProperty;
 
 /**
  * @Author Joburgess
  * @Date 2019/12/27
  */
 public class EndCourseScheduleQueryInfo extends QueryInfo {
+
+    @ApiModelProperty(value = "团体类型")
+    private GroupType groupType;
+
+    @ApiModelProperty(value = "团体编号")
+    private String groupId;
+
+    @ApiModelProperty(value = "班级编号")
+    private Integer classGroupId;
+
+    public GroupType getGroupType() {
+        return groupType;
+    }
+
+    public void setGroupType(GroupType groupType) {
+        this.groupType = groupType;
+    }
+
+    public String getGroupId() {
+        return groupId;
+    }
+
+    public void setGroupId(String groupId) {
+        this.groupId = groupId;
+    }
+
+    public Integer getClassGroupId() {
+        return classGroupId;
+    }
+
+    public void setClassGroupId(Integer classGroupId) {
+        this.classGroupId = classGroupId;
+    }
 }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/SporadicChargeInfoQueryInfo.java

@@ -11,6 +11,17 @@ public class SporadicChargeInfoQueryInfo extends QueryInfo {
     @ApiModelProperty(value = "收费类型",required = false)
     private Integer chargeType;
 
+    @ApiModelProperty(value = "类型",required = false)
+    private String type;
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
     public String getOrganId() {
         return organId;
     }

+ 10 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java

@@ -5,10 +5,7 @@ import com.ym.mec.biz.dal.entity.ClassGroup;
 import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.SalarySettlementTypeEnum;
-import com.ym.mec.biz.dal.page.CourseScheduleQueryInfo;
-import com.ym.mec.biz.dal.page.StudentPayLogQueryInfo;
-import com.ym.mec.biz.dal.page.VipClassQueryInfo;
-import com.ym.mec.biz.dal.page.queryMusicGroupCourseScheduleQueryInfo;
+import com.ym.mec.biz.dal.page.*;
 import com.ym.mec.common.entity.ImGroupModel;
 import com.ym.mec.common.entity.ImUserModel;
 import com.ym.mec.common.page.PageInfo;
@@ -373,4 +370,13 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
      */
     boolean delClassNoStartCourse(Integer classGroupId);
 
+    /**
+     * @describe 终极班级信息获取
+     * @author Joburgess
+     * @date 2019/12/30
+     * @param queryInfo: 查询条件
+     * @return com.ym.mec.common.page.PageInfo
+     */
+    PageInfo endFindClassGroups(EndCourseScheduleQueryInfo queryInfo);
+
 }

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

@@ -80,6 +80,11 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
      * 可更新学生签到状态时间限制,课程结束后{}分钟
      */
     String ENABLE_STUDENT_ATTENDANCE_TIME_RANGE = "enable_student_attendance_time_range";
+
+    /**
+     * vip课程可更新学生签到状态时间限制,课程结束后{}分钟
+     */
+    String ENABLE_STUDENT_ATTENDANCE_TIME_RANGE_VIP = "enable_student_attendance_time_range_vip";
     
     /**
      * 十分钟内最大可发送的短信次数

+ 188 - 150
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -7,10 +7,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.enums.*;
-import com.ym.mec.biz.dal.page.CourseScheduleQueryInfo;
-import com.ym.mec.biz.dal.page.StudentPayLogQueryInfo;
-import com.ym.mec.biz.dal.page.VipClassQueryInfo;
-import com.ym.mec.biz.dal.page.queryMusicGroupCourseScheduleQueryInfo;
+import com.ym.mec.biz.dal.page.*;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.constant.CommonConstants;
 import com.ym.mec.common.dal.BaseDAO;
@@ -106,6 +103,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     private SysConfigDao sysConfigDao;
     @Autowired
     private SubjectDao subjectDao;
+    @Autowired
+    private GroupDao groupDao;
 
     @Override
     public BaseDAO<Integer, ClassGroup> getDAO() {
@@ -267,152 +266,152 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public List<HighClassGroupDto> addHighClassGroup(List<HighClassGroupDto> highClassGroupList) throws Exception {
-        String key = "addHighClassGroup";
-        long value = Thread.currentThread().getId();
-        redisCache.getLocked(key, value, 30);
-        MusicGroup musicGroup = musicGroupDao.get(highClassGroupList.get(0).getMusicGroupId());
-
-        int highClassGroupNum = studentRegistrationDao.findMusicGroupStudentNum(musicGroup.getId()) / 5;
-        if (highClassGroupList.size() > highClassGroupNum) {
-            throw new BizException("班数不能大于" + highClassGroupNum);
-        }
-
-        List<ClassGroup> classGroups = classGroupDao.findClassGroupByMusicGroupIdAndType(musicGroup.getId(), ClassGroupTypeEnum.HIGH);
-        if (classGroups.size() > 0) {
-            List<Integer> classGroupIds = classGroups.stream().map(classGroup -> classGroup.getId()).collect(Collectors.toList());
-
-            //删除基础提高班
-            classGroupDao.batchSoftDelete(classGroupIds);
-            //删除基础提高老师
-            classGroupTeacherMapperDao.delClassGroupTeacherMapper(classGroupIds);
-
-            List<CourseSchedule> classGroupNoStartCourseSchedules = courseScheduleService.findClassGroupNoStartCourseSchedules(classGroupIds, GroupType.MUSIC);
-
-            if (classGroupNoStartCourseSchedules.size() > 0) {
-                List<Long> courseScheduleIds = classGroupNoStartCourseSchedules.stream().map(courseSchedule -> courseSchedule.getId()).collect(Collectors.toList());
-                courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(courseScheduleIds);
-                teacherAttendanceDao.batchDeleteByCourseSchedules(courseScheduleIds);
-                //删除基础提高班课程
-                courseScheduleDao.deleteCourseSchedulesByClassGroupIds(courseScheduleIds);
-            }
-
-            List<ImGroupModel> imGroupModelList = new ArrayList<>();
-            for (ClassGroup classGroup : classGroups) {
-                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) {
-                throw new BizException("上课星期错误,请核查");
-            }
-            //1、插入班级信息
-            Date date;
-            date = new Date();
-            highClassGroup.setId(null);
-            highClassGroup.setGroupType(GroupType.MUSIC);
-            highClassGroup.setCreateTime(date);
-            highClassGroup.setUpdateTime(date);
-            highClassGroup.setType(ClassGroupTypeEnum.HIGH);
-            highClassGroup.setTotalClassTimes(highClassGroup.getCourseTimes());
-            highClassGroup.setCurrentClassTimes(0);
-            insert(highClassGroup);
-
-            //2、插入班级关联老师
-            ClassGroupTeacherMapper classGroupTeacherMapper = new ClassGroupTeacherMapper();
-            classGroupTeacherMapper.setMusicGroupId(highClassGroup.getMusicGroupId());
-            classGroupTeacherMapper.setClassGroupId(highClassGroup.getId());
-            classGroupTeacherMapper.setTeacherRole(TeachTypeEnum.BISHOP);
-            classGroupTeacherMapper.setUserId(highClassGroup.getUserId());
-            classGroupTeacherMapper.setGroupType(GroupType.MUSIC);
-            classGroupTeacherMapper.setCreateTime(date);
-            classGroupTeacherMapper.setUpdateTime(date);
-            classGroupTeacherMapperList.add(classGroupTeacherMapper);
-
-            //3、插入班级排课信息
-            int times = 0;
-            LocalDateTime now = LocalDate.parse(highClassGroup.getStartDate(), DateTimeFormatter.ofPattern("yyyy-MM-dd")).atStartOfDay();
-
-            List<Subject> subjectList = subjectService.findBySubjectByIdList(highClassGroup.getSubjectIdList());
-
-            String courseScheduleName = subjectList.stream().map(subject -> subject.getName()).collect(Collectors.joining("/"));
-
-
-            Map<String, Integer> holidayDays = new HashMap<>();
-            Map<Integer, Map<String, Integer>> holiday = new HashMap<>();
-            if (highClassGroup.getHoliday()) {
-                holiday = jiaRiFeignService.query(now.getYear());
-                holidayDays = holiday.get(now.getYear());
-            }
-
-            WhileNode:
-            while (highClassGroup.getCourseTimes() > times) {
-                if(highClassGroup.getHoliday() && !holiday.containsKey(now.getYear())){
-                    holiday = jiaRiFeignService.query(now.getYear());
-                    holidayDays = holiday.get(now.getYear());
-                }
-                if (highClassGroup.getHoliday() && holidayDays.containsKey(now.format(DateTimeFormatter.ofPattern("MMdd")))) {
-                    now = now.plusDays(1);
-                    continue;
-                }
-
-                int dayOfWeek = now.getDayOfWeek().getValue();
-                if (highClassGroup.getDayOfWeek() == dayOfWeek) {
-                    CourseSchedule courseSchedule = new CourseSchedule();
-                    Instant instant = now.atZone(ZoneId.systemDefault()).toInstant();
-                    Date classDate = Date.from(instant);
-                    String startClassTime = DateUtil.getDate(classDate) + " " + highClassGroup.getStartClassTime() + ":00";
-                    String endClassTime = DateUtil.getDate(classDate) + " " + highClassGroup.getEndClassTime() + ":00";
-
-                    courseSchedule.setSchoolId(schoolId);
-                    courseSchedule.setMusicGroupId(highClassGroup.getMusicGroupId());
-                    courseSchedule.setClassGroupId(highClassGroup.getId());
-                    courseSchedule.setStatus(CourseStatusEnum.NOT_START);
-                    courseSchedule.setClassDate(classDate);
-                    courseSchedule.setStartClassTime(DateUtil.stringToDate(startClassTime));
-                    courseSchedule.setEndClassTime(DateUtil.stringToDate(endClassTime));
-                    courseSchedule.setTeacherId(highClassGroup.getUserId());
-                    courseSchedule.setActualTeacherId(highClassGroup.getUserId());
-                    courseSchedule.setCreateTime(date);
-                    courseSchedule.setUpdateTime(date);
-                    courseSchedule.setTeachMode(TeachModeEnum.OFFLINE);
-                    courseSchedule.setType(CourseSchedule.CourseScheduleType.HIGH);
-                    courseSchedule.setGroupType(GroupType.MUSIC);
-                    courseSchedule.setName(courseScheduleName + "-" + CourseSchedule.CourseScheduleType.HIGH.getMsg());
-                    courseScheduleList.add(courseSchedule);
-                    times++;
-                }
-                now = now.plusDays(1);
-            }
-
-            List<Integer> userIdList = new ArrayList<>();
-            userIdList.add(classGroupTeacherMapper.getUserId());
-
-            ClassGroupImGroupDto classGroupImGroupDto = new ClassGroupImGroupDto();
-            classGroupImGroupDto.setClassGroup(highClassGroup);
-            classGroupImGroupDto.setUserIds(userIdList);
-            classGroupImGroupList.add(classGroupImGroupDto);
-        }
-
-
-        //加入Im群组
-        batchAddImGroup(classGroupImGroupList);
-        classGroupTeacherMapperService.classGroupTeachersInsert(classGroupTeacherMapperList);
-        //检测新排课冲突
-        courseScheduleService.checkNewCourseSchedules(courseScheduleList, false);
-        courseScheduleDao.batchAddCourseSchedules(courseScheduleList);
-
-        redisCache.releaseLocked(key, value);
-        return highClassGroupList;
-    }
+	public List<HighClassGroupDto> addHighClassGroup(List<HighClassGroupDto> highClassGroupList) throws Exception {
+		String key = "addHighClassGroup";
+		long value = Thread.currentThread().getId();
+		redisCache.getLocked(key, value, 30);
+		try {
+			MusicGroup musicGroup = musicGroupDao.get(highClassGroupList.get(0).getMusicGroupId());
+
+			int highClassGroupNum = studentRegistrationDao.findMusicGroupStudentNum(musicGroup.getId()) / 5;
+			if (highClassGroupList.size() > highClassGroupNum) {
+				throw new BizException("班数不能大于" + highClassGroupNum);
+			}
+
+			List<ClassGroup> classGroups = classGroupDao.findClassGroupByMusicGroupIdAndType(musicGroup.getId(), ClassGroupTypeEnum.HIGH);
+			if (classGroups.size() > 0) {
+				List<Integer> classGroupIds = classGroups.stream().map(classGroup -> classGroup.getId()).collect(Collectors.toList());
+
+				// 删除基础提高班
+				classGroupDao.batchSoftDelete(classGroupIds);
+				// 删除基础提高老师
+				classGroupTeacherMapperDao.delClassGroupTeacherMapper(classGroupIds);
+
+				List<CourseSchedule> classGroupNoStartCourseSchedules = courseScheduleService.findClassGroupNoStartCourseSchedules(classGroupIds,
+						GroupType.MUSIC);
+
+				if (classGroupNoStartCourseSchedules.size() > 0) {
+					List<Long> courseScheduleIds = classGroupNoStartCourseSchedules.stream().map(courseSchedule -> courseSchedule.getId())
+							.collect(Collectors.toList());
+					courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(courseScheduleIds);
+					teacherAttendanceDao.batchDeleteByCourseSchedules(courseScheduleIds);
+					// 删除基础提高班课程
+					courseScheduleDao.deleteCourseSchedulesByClassGroupIds(courseScheduleIds);
+				}
+
+				List<ImGroupModel> imGroupModelList = new ArrayList<>();
+				for (ClassGroup classGroup : classGroups) {
+					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) {
+					throw new BizException("上课星期错误,请核查");
+				}
+				// 1、插入班级信息
+				Date date;
+				date = new Date();
+				highClassGroup.setId(null);
+				highClassGroup.setGroupType(GroupType.MUSIC);
+				highClassGroup.setCreateTime(date);
+				highClassGroup.setUpdateTime(date);
+				highClassGroup.setType(ClassGroupTypeEnum.HIGH);
+				highClassGroup.setTotalClassTimes(highClassGroup.getCourseTimes());
+				highClassGroup.setCurrentClassTimes(0);
+				insert(highClassGroup);
+
+				// 2、插入班级关联老师
+				ClassGroupTeacherMapper classGroupTeacherMapper = new ClassGroupTeacherMapper();
+				classGroupTeacherMapper.setMusicGroupId(highClassGroup.getMusicGroupId());
+				classGroupTeacherMapper.setClassGroupId(highClassGroup.getId());
+				classGroupTeacherMapper.setTeacherRole(TeachTypeEnum.BISHOP);
+				classGroupTeacherMapper.setUserId(highClassGroup.getUserId());
+				classGroupTeacherMapper.setGroupType(GroupType.MUSIC);
+				classGroupTeacherMapper.setCreateTime(date);
+				classGroupTeacherMapper.setUpdateTime(date);
+				classGroupTeacherMapperList.add(classGroupTeacherMapper);
+
+				// 3、插入班级排课信息
+				int times = 0;
+				LocalDateTime now = LocalDate.parse(highClassGroup.getStartDate(), DateTimeFormatter.ofPattern("yyyy-MM-dd")).atStartOfDay();
+
+				List<Subject> subjectList = subjectService.findBySubjectByIdList(highClassGroup.getSubjectIdList());
+
+				String courseScheduleName = subjectList.stream().map(subject -> subject.getName()).collect(Collectors.joining("/"));
+
+				Map<String, Integer> holidayDays = new HashMap<>();
+				Map<Integer, Map<String, Integer>> holiday = new HashMap<>();
+				if (highClassGroup.getHoliday()) {
+					holiday = jiaRiFeignService.query(now.getYear());
+					holidayDays = holiday.get(now.getYear());
+				}
+
+				WhileNode: while (highClassGroup.getCourseTimes() > times) {
+					if (highClassGroup.getHoliday() && !holiday.containsKey(now.getYear())) {
+						holiday = jiaRiFeignService.query(now.getYear());
+						holidayDays = holiday.get(now.getYear());
+					}
+					if (highClassGroup.getHoliday() && holidayDays.containsKey(now.format(DateTimeFormatter.ofPattern("MMdd")))) {
+						now = now.plusDays(1);
+						continue;
+					}
+
+					int dayOfWeek = now.getDayOfWeek().getValue();
+					if (highClassGroup.getDayOfWeek() == dayOfWeek) {
+						CourseSchedule courseSchedule = new CourseSchedule();
+						Instant instant = now.atZone(ZoneId.systemDefault()).toInstant();
+						Date classDate = Date.from(instant);
+						String startClassTime = DateUtil.getDate(classDate) + " " + highClassGroup.getStartClassTime() + ":00";
+						String endClassTime = DateUtil.getDate(classDate) + " " + highClassGroup.getEndClassTime() + ":00";
+
+						courseSchedule.setSchoolId(schoolId);
+						courseSchedule.setMusicGroupId(highClassGroup.getMusicGroupId());
+						courseSchedule.setClassGroupId(highClassGroup.getId());
+						courseSchedule.setStatus(CourseStatusEnum.NOT_START);
+						courseSchedule.setClassDate(classDate);
+						courseSchedule.setStartClassTime(DateUtil.stringToDate(startClassTime));
+						courseSchedule.setEndClassTime(DateUtil.stringToDate(endClassTime));
+						courseSchedule.setTeacherId(highClassGroup.getUserId());
+						courseSchedule.setActualTeacherId(highClassGroup.getUserId());
+						courseSchedule.setCreateTime(date);
+						courseSchedule.setUpdateTime(date);
+						courseSchedule.setTeachMode(TeachModeEnum.OFFLINE);
+						courseSchedule.setType(CourseSchedule.CourseScheduleType.HIGH);
+						courseSchedule.setGroupType(GroupType.MUSIC);
+						courseSchedule.setName(courseScheduleName + "-" + CourseSchedule.CourseScheduleType.HIGH.getMsg());
+						courseScheduleList.add(courseSchedule);
+						times++;
+					}
+					now = now.plusDays(1);
+				}
+
+				List<Integer> userIdList = new ArrayList<>();
+				userIdList.add(classGroupTeacherMapper.getUserId());
+
+				ClassGroupImGroupDto classGroupImGroupDto = new ClassGroupImGroupDto();
+				classGroupImGroupDto.setClassGroup(highClassGroup);
+				classGroupImGroupDto.setUserIds(userIdList);
+				classGroupImGroupList.add(classGroupImGroupDto);
+			}
+
+			// 加入Im群组
+			batchAddImGroup(classGroupImGroupList);
+			classGroupTeacherMapperService.classGroupTeachersInsert(classGroupTeacherMapperList);
+			// 检测新排课冲突
+			courseScheduleService.checkNewCourseSchedules(courseScheduleList, false);
+			courseScheduleDao.batchAddCourseSchedules(courseScheduleList);
+		} finally {
+			redisCache.releaseLocked(key, value);
+		}
+		return highClassGroupList;
+	}
 
     @Override
     public PageInfo<TeacherMusicClassInfoDto> getTeacherMusicClass(QueryInfo queryInfo) {
@@ -2201,4 +2200,43 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         courseScheduleStudentPaymentDao.deleteByCourseSchedule(courseScheduleIds);
         return true;
     }
+
+    @Override
+    public PageInfo endFindClassGroups(EndCourseScheduleQueryInfo queryInfo) {
+        PageInfo pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<>();
+        MapUtil.populateMap(params, queryInfo);
+
+        if(StringUtils.isNotBlank(queryInfo.getSearch())){
+            List<Group> groups = groupDao.searchGroups(queryInfo.getSearch());
+            if(!CollectionUtils.isEmpty(groups)){
+                params.put("groups", groups);
+            }
+        }
+
+        List<CourseScheduleEndDto> results = new ArrayList<>();
+        int count = courseScheduleDao.endCountCourseSchedules(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            results = courseScheduleDao.endFindCourseSchedules(params);
+            List<Group> groups=new ArrayList<>();
+            groups.add(null);
+            for (CourseScheduleEndDto courseScheduleEndDto : results) {
+                Group group=new Group(courseScheduleEndDto.getMusicGroupId(),courseScheduleEndDto.getGroupType());
+                groups.add(group);
+            }
+            groups = groupDao.findByGroupIds(groups);
+            Map<String, Map<GroupType, List<Group>>> groupsGroupByGroup = groups.stream().collect(Collectors.groupingBy(Group::getId, Collectors.groupingBy(Group::getGroupType)));
+            results.forEach(result -> {
+                List<Group> groupTemps = groupsGroupByGroup.get(result.getMusicGroupId())
+                        .get(result.getGroupType());
+                if(!CollectionUtils.isEmpty(groupTemps)){
+                    result.setGroupName(groupTemps.get(0).getGroupName());
+                }
+            });
+        }
+        pageInfo.setRows(results);
+        return pageInfo;
+    }
 }

+ 28 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -92,6 +92,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
     private MusicGroupService musicGroupService;
     @Autowired
     private SysConfigService sysConfigService;
+    @Autowired
+    private GroupDao groupDao;
 
     private final Logger LOGGER = LoggerFactory
             .getLogger(this.getClass());
@@ -1278,8 +1280,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         classStartDateAdjust(newCourseSchedules);
     }
 
-    @Transactional(rollbackFor = Exception.class)
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void classStartDateAdjust(List<CourseSchedule> newCourseSchedules) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         List<Long> newCourseScheduleIds = newCourseSchedules.stream().map(CourseSchedule::getId).collect(Collectors.toList());
@@ -2086,14 +2088,36 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         Map<String, Object> params = new HashMap<>();
         MapUtil.populateMap(params, queryInfo);
 
-        List<CourseScheduleEndDto> result = new ArrayList<>();
+        if(StringUtils.isNotBlank(queryInfo.getSearch())){
+            List<Group> groups = groupDao.searchGroups(queryInfo.getSearch());
+            if(!CollectionUtils.isEmpty(groups)){
+                params.put("groups", groups);
+            }
+        }
+
+        List<CourseScheduleEndDto> results = new ArrayList<>();
         int count = courseScheduleDao.endCountCourseSchedules(params);
         if (count > 0) {
             pageInfo.setTotal(count);
             params.put("offset", pageInfo.getOffset());
-            result = courseScheduleDao.endFindCourseSchedules(params);
+            results = courseScheduleDao.endFindCourseSchedules(params);
+            List<Group> groups=new ArrayList<>();
+            groups.add(null);
+            for (CourseScheduleEndDto courseScheduleEndDto : results) {
+                Group group=new Group(courseScheduleEndDto.getMusicGroupId(),courseScheduleEndDto.getGroupType());
+                groups.add(group);
+            }
+            groups = groupDao.findByGroupIds(groups);
+            Map<String, Map<GroupType, List<Group>>> groupsGroupByGroup = groups.stream().collect(Collectors.groupingBy(Group::getId, Collectors.groupingBy(Group::getGroupType)));
+            results.forEach(result -> {
+                List<Group> groupTemps = groupsGroupByGroup.get(result.getMusicGroupId())
+                        .get(result.getGroupType());
+                if(!CollectionUtils.isEmpty(groupTemps)){
+                    result.setGroupName(groupTemps.get(0).getGroupName());
+                }
+            });
         }
-        pageInfo.setRows(result);
+        pageInfo.setRows(results);
         return pageInfo;
     }
 }

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

@@ -1437,10 +1437,10 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             throw new BizException("个人信息不存在");
         }
         //判断是否是续费
-		List<StudentPaymentOrder> orderList = studentPaymentOrderDao.queryByCondition(GroupType.MUSIC, musicGroupId, userId, DealStatusEnum.SUCCESS);
+		/*List<StudentPaymentOrder> orderList = studentPaymentOrderDao.queryByCondition(GroupType.MUSIC, musicGroupId, userId, DealStatusEnum.SUCCESS);
 		if (orderList == null || orderList.size() == 0) {
 			throw new BizException("请走报名缴费流程");
-		}
+		}*/
         
         // 判断当前是否是续费状态
         if (musicGroupStudentFee.getPaymentStatus() != PaymentStatus.NON_PAYMENT) {

+ 9 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentAttendanceServiceImpl.java

@@ -84,10 +84,17 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
 			throw new BizException("请指定课程");
 		}
 		Date date = new Date();
-		SysConfig attendanceTimeRange = sysConfigService.findByParamName(SysConfigService.ENABLE_STUDENT_ATTENDANCE_TIME_RANGE);
+		SysConfig attendanceTimeRange;
+		if(courseSchedule.getGroupType().equals(GroupType.MUSIC)){
+			attendanceTimeRange = sysConfigService.findByParamName(SysConfigService.ENABLE_STUDENT_ATTENDANCE_TIME_RANGE);
+		}else{
+			attendanceTimeRange = sysConfigService.findByParamName(SysConfigService.ENABLE_STUDENT_ATTENDANCE_TIME_RANGE_VIP);
+		}
 		int courseEndTime = DateUtil.minutesBetween(courseSchedule.getEndClassTime(), date);
 		if(date.after(courseSchedule.getEndClassTime())&&courseEndTime>attendanceTimeRange.getParanValue(Integer.class)){
-			throw new BizException("课程结束一小时后禁止点名");
+			throw new BizException("{}课结束{}分钟后禁止点名",
+					courseSchedule.getGroupType().equals(GroupType.MUSIC)?"乐团":"VIP",
+					attendanceTimeRange.getParanValue(Integer.class));
 		}
 		studentAttendanceDao.deleteStudentAttendancesByCourse(courseScheduleId);
 		int classTimes=courseScheduleDao.countClassTimes(courseSchedule.getClassGroupId().longValue(),courseSchedule.getStartClassTime());

+ 75 - 68
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java

@@ -250,74 +250,81 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public StudentRegistration addStudent(StudentRegistration studentRegistration) throws Exception {
-        Date date = new Date();
-        Integer userId = 0;
-        SysUser sysUser = studentRegistrationDao.getSysUserByPhone(studentRegistration.getParentsPhone());
-        if (sysUser == null) {
-            sysUser = new SysUser();
-            sysUser.setPhone(studentRegistration.getParentsPhone());
-            sysUser.setCreateTime(date);
-            sysUser.setUpdateTime(date);
-            sysUser.setLockFlag(0);
-            sysUser.setDelFlag(com.ym.mec.auth.api.enums.YesOrNoEnum.NO);
-            sysUser.setUserType(SysUserType.STUDENT);
-            sysUser.setGender(studentRegistration.getGender());
-            if (studentRegistration.getOrganId() != null) {
-                sysUser.setOrganId(studentRegistration.getOrganId());
-            }
-            sysUser.setRealName(studentRegistration.getParentsName());
-            sysUser.setUsername(studentRegistration.getName());
-            sysUser.setIdCardNo(studentRegistration.getIdCardNo());
-            sysUser.setBirthdate(studentRegistration.getBirthdate());
-            teacherDao.addSysUser(sysUser);
-            userId = sysUser.getId();
-            //添加用户现金账户
-            sysUserCashAccountDao.insert(new SysUserCashAccount(userId, "CNY"));
-            //注册到融云
-            if (StringUtils.isEmpty(sysUser.getAvatar())) {
-                sysUser.setAvatar(sysConfigDao.findConfigValue(SysConfigService.USER_DEFAULT_HEAD_URL));
-            }
-            ImResult register = imFeignService.register(new ImUserModel(userId.toString(), sysUser.getUsername(), sysUser.getAvatar()));
-            sysUser.setImToken(register.getToken());
-        }else{
-            if(!sysUser.getUserType().equals(SysUserType.STUDENT)){
-                throw new BizException("您系统存在非学生的账户,不能注册学生");
-            }
-            sysUser.setUserType(SysUserType.STUDENT);
-            sysUser.setPhone(studentRegistration.getParentsPhone());
-            sysUser.setOrganId(studentRegistration.getOrganId());
-            sysUser.setRealName(studentRegistration.getParentsName());
-            sysUser.setUsername(studentRegistration.getName());
-            sysUser.setGender(studentRegistration.getGender());
-            sysUser.setBirthdate(studentRegistration.getBirthdate());
-            sysUser.setCreateTime(date);
-            sysUser.setUpdateTime(date);
-            teacherDao.updateUser(sysUser);
-        }
-
-        studentRegistration.setActualSubjectId(studentRegistration.getSubjectId());
-        studentRegistration.setCreateTime(date);
-        studentRegistration.setUpdateTime(date);
-        studentRegistration.setUserId(sysUser.getId());
-        studentRegistrationDao.insert(studentRegistration);
-        studentRegistrationDao.updateCurrentClass(studentRegistration);
-        //增加报名学生数
-        musicGroupSubjectPlanService.addApplyStudentNum(studentRegistration.getMusicGroupId(), studentRegistration.getSubjectId(), 1);
-        //报名成功后,发送短信
-//        String studentApplyUrl = sysConfigDao.findConfigValue(SysConfigService.STUDENT_APPLY_URL) + studentRegistration.getMusicGroupId();
-        String serverPhone = sysConfigDao.findConfigValue(SysConfigService.SERVER_PHONE);
-        Subject subject = subjectDao.get(studentRegistration.getActualSubjectId());
-//        MusicGroup musicGroup = musicGroupDao.get(studentRegistration.getMusicGroupId());
-
-        Map<Integer, String> map = new HashMap<>(1);
-        map.put(studentRegistration.getUserId(), studentRegistration.getParentsPhone());
-        sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.YIMEI,
-                MessageTypeEnum.SMS_APPLY_MESSAGE, map, null, 0, "",
-                studentRegistration.getParentsName(), subject.getName(), serverPhone);
-
-        return studentRegistration;
-    }
+	public StudentRegistration addStudent(StudentRegistration studentRegistration) throws Exception {
+		String key = "_student_registration";
+		long threadId = Thread.currentThread().getId();
+		if (!redisCache.getLocked(key, threadId, 10)) {
+			throw new BizException("系统繁忙,请稍后再试");
+		}
+		try {
+			Date date = new Date();
+			Integer userId = 0;
+			SysUser sysUser = studentRegistrationDao.getSysUserByPhone(studentRegistration.getParentsPhone());
+			if (sysUser == null) {
+				sysUser = new SysUser();
+				sysUser.setPhone(studentRegistration.getParentsPhone());
+				sysUser.setCreateTime(date);
+				sysUser.setUpdateTime(date);
+				sysUser.setLockFlag(0);
+				sysUser.setDelFlag(com.ym.mec.auth.api.enums.YesOrNoEnum.NO);
+				sysUser.setUserType(SysUserType.STUDENT);
+				sysUser.setGender(studentRegistration.getGender());
+				if (studentRegistration.getOrganId() != null) {
+					sysUser.setOrganId(studentRegistration.getOrganId());
+				}
+				sysUser.setRealName(studentRegistration.getParentsName());
+				sysUser.setUsername(studentRegistration.getName());
+				sysUser.setIdCardNo(studentRegistration.getIdCardNo());
+				sysUser.setBirthdate(studentRegistration.getBirthdate());
+				teacherDao.addSysUser(sysUser);
+				userId = sysUser.getId();
+				// 添加用户现金账户
+				sysUserCashAccountDao.insert(new SysUserCashAccount(userId, "CNY"));
+				// 注册到融云
+				if (StringUtils.isEmpty(sysUser.getAvatar())) {
+					sysUser.setAvatar(sysConfigDao.findConfigValue(SysConfigService.USER_DEFAULT_HEAD_URL));
+				}
+				ImResult register = imFeignService.register(new ImUserModel(userId.toString(), sysUser.getUsername(), sysUser.getAvatar()));
+				sysUser.setImToken(register.getToken());
+			} else {
+				if (!sysUser.getUserType().equals(SysUserType.STUDENT)) {
+					throw new BizException("您系统存在非学生的账户,不能注册学生");
+				}
+				sysUser.setUserType(SysUserType.STUDENT);
+				sysUser.setPhone(studentRegistration.getParentsPhone());
+				sysUser.setOrganId(studentRegistration.getOrganId());
+				sysUser.setRealName(studentRegistration.getParentsName());
+				sysUser.setUsername(studentRegistration.getName());
+				sysUser.setGender(studentRegistration.getGender());
+				sysUser.setBirthdate(studentRegistration.getBirthdate());
+				sysUser.setCreateTime(date);
+				sysUser.setUpdateTime(date);
+				teacherDao.updateUser(sysUser);
+			}
+
+			studentRegistration.setActualSubjectId(studentRegistration.getSubjectId());
+			studentRegistration.setCreateTime(date);
+			studentRegistration.setUpdateTime(date);
+			studentRegistration.setUserId(sysUser.getId());
+			studentRegistrationDao.insert(studentRegistration);
+			studentRegistrationDao.updateCurrentClass(studentRegistration);
+			// 增加报名学生数
+			musicGroupSubjectPlanService.addApplyStudentNum(studentRegistration.getMusicGroupId(), studentRegistration.getSubjectId(), 1);
+			// 报名成功后,发送短信
+			// String studentApplyUrl = sysConfigDao.findConfigValue(SysConfigService.STUDENT_APPLY_URL) + studentRegistration.getMusicGroupId();
+			String serverPhone = sysConfigDao.findConfigValue(SysConfigService.SERVER_PHONE);
+			Subject subject = subjectDao.get(studentRegistration.getActualSubjectId());
+			// MusicGroup musicGroup = musicGroupDao.get(studentRegistration.getMusicGroupId());
+
+			Map<Integer, String> map = new HashMap<>(1);
+			map.put(studentRegistration.getUserId(), studentRegistration.getParentsPhone());
+			sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.YIMEI, MessageTypeEnum.SMS_APPLY_MESSAGE, map, null, 0, "",
+					studentRegistration.getParentsName(), subject.getName(), serverPhone);
+		} finally {
+			redisCache.releaseLocked(key, threadId);
+		}
+		return studentRegistration;
+	}
 
     @Override
     public StudentInfo queryStudentInfo(Integer userId) {

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

@@ -399,7 +399,7 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 				teacher.setFlowOrganRange(StringUtils.join(organNames,","));
 			}
 			if(StringUtils.isNotEmpty(teacher.getOrganId())){
-				teacher.setOrganName(organizationDao.get(Integer.parseInt(teacher.getOrganId())).getName());
+				teacher.setOrganName(organizationDao.get(teacher.getTeacherOrganId()).getName());
 			}
 			//专业技能
 			if(StringUtils.isNotEmpty(teacher.getSubjectId())){

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

@@ -271,10 +271,10 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		}else{
 			vipGroupApplyBaseInfoDto.setStatus(VipGroupStatusEnum.APPLYING);
 		}
-        Teacher teacher = teacherService.get(sysUser.getId());
-		if(teacher.getOrganId().indexOf(",")!=-1){
-		    throw new BizException("教师部门异常");
-        }
+//        Teacher teacher = teacherService.get(sysUser.getId());
+//		if(teacher.getOrganId().indexOf(",")!=-1){
+//		    throw new BizException("教师部门异常");
+//        }
 //        vipGroupApplyBaseInfoDto.setOrganId(Integer.parseInt(teacher.getOrganId()));
 		//开课时间为排课的第一节课的开始时间
 		vipGroupApplyBaseInfoDto.setCourseStartDate(firstCourseSchedule.getStartClassTime());

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

@@ -470,7 +470,7 @@
             LEFT JOIN course_schedule cs ON cg.id_=cs.class_group_id_
             LEFT JOIN school s ON vg.teacher_school_id_ = s.id_
         WHERE
-            vg.user_id_ = #{teacherId} AND vg.status_ = 2
+            vg.user_id_ = #{teacherId} AND (vg.status_ = 2 OR vg.status_ = 5)
         GROUP BY
         vg.id_,cg.id_
     </select>
@@ -920,4 +920,14 @@
       where id_=1
     </update>
 
+    <resultMap id="SuperClassGroupInfo" type="com.ym.mec.biz.dal.dto.SuperClassGroupDto">
+
+    </resultMap>
+    <select id="superFindClassGroups" resultMap="SuperClassGroupInfo">
+
+    </select>
+    <select id="superCountClassGroups" resultType="int">
+
+    </select>
+
 </mapper>

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

@@ -1854,7 +1854,23 @@
     <sql id="endFindCourseSchedulesCondition">
         <where>
             <if test="search != null">
-                AND (cs.name_ LIKE CONCAT('%',#{search},'%') OR cs.id_ = #{search})
+                AND (cs.name_ LIKE CONCAT('%',#{search},'%') OR cs.id_ = #{search}
+                  <if test="groups != null">
+                      OR cs.music_group_id_ IN
+                      <foreach collection="groups" item="group" open="(" close=")" separator=",">
+                          #{group.id}
+                      </foreach>
+                  </if>
+                )
+            </if>
+            <if test="groupType != null">
+                AND cs.group_type_=#{groupType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+            </if>
+            <if test="groupId != null">
+                AND cs.music_group_id_=#{groupId}
+            </if>
+            <if test="classGroupId != null">
+                AND cs.class_group_id_=#{classGroupId}
             </if>
         </where>
     </sql>

+ 25 - 2
mec-biz/src/main/resources/config/mybatis/GroupMapper.xml

@@ -10,11 +10,34 @@
         <result column="id_" property="id"/>
         <result column="group_name_" property="groupName"/>
         <result column="group_type_" property="groupType" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
-        <result column="class_group_id_" property="classGroupId"/>
     </resultMap>
 
     <select id="searchGroups" resultMap="Group">
-
+        ( SELECT id_, name_ group_name_, 'MUSIC' group_type_ FROM music_group WHERE id_ = #{search} OR name_ LIKE CONCAT( '%', #{search}, '%' ) ) UNION
+        ( SELECT id_, name_ group_name_, 'VIP' group_type_ FROM vip_group WHERE id_ = #{search} OR name_ LIKE CONCAT( '%', #{search}, '%' ) );
+    </select>
+    <select id="findByGroupIds" resultMap="Group">
+      ( SELECT id_, name_ group_name_, 'MUSIC' group_type_ FROM music_group WHERE id_ IN
+        <foreach collection="groups" item="group" open="(" close=")" separator=",">
+            <if test="group != null and group.groupType == @com.ym.mec.biz.dal.enums.GroupType@MUSIC">
+                #{group.id}
+            </if>
+            <if test="group == null">
+                #{group}
+            </if>
+        </foreach>
+      )
+      UNION
+      ( SELECT id_, name_ group_name_, 'VIP' group_type_ FROM vip_group WHERE id_ IN
+        <foreach collection="groups" item="group" open="(" close=")" separator=",">
+            <if test="group != null and group.groupType == @com.ym.mec.biz.dal.enums.GroupType@VIP">
+                #{group.id}
+            </if>
+            <if test="group == null">
+                #{group}
+            </if>
+        </foreach>
+      );
     </select>
 
 </mapper>

+ 9 - 2
mec-biz/src/main/resources/config/mybatis/SporadicChargeInfo.xml

@@ -91,15 +91,22 @@
 			<if test="chargeType != null">
 				AND sci.charge_type_ = #{chargeType}
 			</if>
+			<if test="type == 'personal'">
+				AND sci.user_id_ IS NOT NULL
+			</if>
+			<if test="type == 'common'">
+				AND sci.user_id_ IS NULL
+			</if>
 			<if test="search != null">
-				AND (sci.title_ LIKE CONCAT('%',#{search},'%') OR su.username LIKE CONCAT('%',#{search},'%'))
+				AND (sci.title_ LIKE CONCAT('%',#{search},'%') OR su.username_ LIKE CONCAT('%',#{search},'%'))
 			</if>
 		</where>
 	</sql>
 
 	<!-- 查询当前表的总记录数 -->
 	<select id="queryCount" resultType="int">
-		SELECT COUNT(id_) FROM sporadic_charge_info sci
+		SELECT COUNT(sci.id_) FROM sporadic_charge_info sci
+		LEFT JOIN sys_user su ON su.id_ = sci.user_id_
 		<include refid="queryPageSql"/>
 	</select>
 	<select id="findInfoById" resultMap="SporadicChargeInfo">

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

@@ -25,7 +25,9 @@ public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
 	@Override
 	public void configure(HttpSecurity http) throws Exception {
 		http.csrf().disable().exceptionHandling().accessDeniedHandler(baseAccessDeniedHandler).authenticationEntryPoint(baseAuthenticationEntryPoint).and()
-				.authorizeRequests().antMatchers("/v2/api-docs","/code/*","/register/*","/studentOrder/*","/musicGroup/getSubjectGoodsAndInfo","/musicGroup/getMusicGroupStatus","/musicGroup/getOrderStatus","/musicGroup/pay","/musicGroup/rePay","/studentManage/queryStudentPer").permitAll().anyRequest().authenticated().and().httpBasic();
+				.authorizeRequests().antMatchers("/v2/api-docs","/code/*","/register/*","/studentOrder/*","/musicGroup/getSubjectGoodsAndInfo",
+				"/musicGroup/getMusicGroupStatus","/musicGroup/getOrderStatus",
+				"/musicGroup/pay","/musicGroup/rePay","/studentManage/queryStudentPer","/sporadicChargeInfo/get").permitAll().anyRequest().authenticated().and().httpBasic();
 	}
 
 	@Override

+ 5 - 5
mec-student/src/main/java/com/ym/mec/student/controller/SporadicChargeInfoController.java

@@ -40,13 +40,13 @@ public class SporadicChargeInfoController extends BaseController {
 	@ApiOperation(value = "单查询")
 	@GetMapping("/get")
 	public Object get(Integer id) {
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
-		if (sysUser == null) {
-			return failed("用户不存在");
-		}
+//		SysUser sysUser = sysUserFeignService.queryUserInfo();
+//		if (sysUser == null) {
+//			return failed("用户不存在");
+//		}
 		SporadicChargeInfo chargeInfo = sporadicChargeInfoService.get(id);
 		if(chargeInfo != null){
-			SysUserCashAccount locked = sysUserCashAccountDao.getLocked(sysUser.getId());
+			SysUserCashAccount locked = sysUserCashAccountDao.getLocked(chargeInfo.getUserId());
 			chargeInfo.setBalance(locked.getBalance());
 		}else {
 			throw new BizException("信息不存在");

+ 2 - 2
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/eseal/provider/TsignPlugin.java

@@ -58,12 +58,12 @@ public class TsignPlugin implements ESealPlugin, InitializingBean, DisposableBea
 		projectconfig.setItsmApiUrl(apisUrl);
 		Result result = ServiceClientManager.registClient(projectconfig, null, null);
 		if (result.getErrCode() != 0) {
-			throw new ThirdpartyException("e签宝客户端注册失败:{}", result.getMsg());
+			//throw new ThirdpartyException("e签宝客户端注册失败:{}", result.getMsg());
 		}
 
 		serviceClient = ServiceClientManager.get(projectId);
 		if (serviceClient == null) {
-			throw new ThirdpartyException("获取e签宝客户端失败");
+			//throw new ThirdpartyException("获取e签宝客户端失败");
 		}
 	}