Browse Source

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

zouxuan 5 years ago
parent
commit
6f30f48e49
20 changed files with 255 additions and 98 deletions
  1. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleEvaluateDao.java
  2. 3 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/GroupDao.java
  3. 36 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/PracticeGroupsDto.java
  4. 36 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/practiceGroupStatisDto.java
  5. 1 5
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  6. 19 7
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  7. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExtracurricularExercisesMessageServiceImpl.java
  8. 16 11
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExtracurricularExercisesReplyServiceImpl.java
  9. 5 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExtracurricularExercisesServiceImpl.java
  10. 17 12
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentCourseHomeworkServiceImpl.java
  11. 4 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
  12. 10 0
      mec-biz/src/main/resources/config/mybatis/CourseScheduleEvaluateMapper.xml
  13. 1 0
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  14. 3 3
      mec-biz/src/main/resources/config/mybatis/ExtracurricularExercisesMapper.xml
  15. 36 36
      mec-biz/src/main/resources/config/mybatis/GroupMapper.xml
  16. 14 2
      mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml
  17. 32 0
      mec-student/src/main/java/com/ym/mec/student/controller/StudentOrderController.java
  18. 2 2
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherCourseScheduleController.java
  19. 8 7
      mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java
  20. 2 2
      mec-web/src/main/java/com/ym/mec/web/controller/StudentPaymentOrderController.java

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

@@ -2,6 +2,7 @@ package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.biz.dal.dto.PracticeGroupsDto;
 import com.ym.mec.biz.dal.entity.CourseScheduleEvaluate;
+import com.ym.mec.biz.dal.enums.OrderTypeEnum;
 import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
 
@@ -85,9 +86,17 @@ public interface CourseScheduleEvaluateDao extends BaseDAO<Long, CourseScheduleE
 
     /**
      * 查询当天是否已有报告
+     *
      * @param classGroupIds
      * @param nowDate
      * @return
      */
     List<CourseScheduleEvaluate> hasReportList(@Param("classGroupIds") List<Integer> classGroupIds, @Param("nowDate") Date nowDate);
+
+    /**
+     * 获取当月成交金额,人数
+     * @param type
+     * @return
+     */
+    List<PracticeGroupsDto> getMonthOrganMoney(@Param("type") OrderTypeEnum type);
 }

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

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

+ 36 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/PracticeGroupsDto.java

@@ -12,6 +12,10 @@ public class PracticeGroupsDto {
     private Integer renewNums = 0;
     private BigDecimal totalMoney = BigDecimal.ZERO;
     private Double buyScale =  0.00;
+    private Integer monthBuyNums = 0;
+    private Integer monthRenewNums = 0;
+    private BigDecimal monthBuyMoney = BigDecimal.ZERO;
+    private BigDecimal monthRenewMoney= BigDecimal.ZERO;
 
     public String getOrganName() {
         return organName;
@@ -84,4 +88,36 @@ public class PracticeGroupsDto {
     public void setRenewNums(Integer renewNums) {
         this.renewNums = renewNums;
     }
+
+    public Integer getMonthBuyNums() {
+        return monthBuyNums;
+    }
+
+    public void setMonthBuyNums(Integer monthBuyNums) {
+        this.monthBuyNums = monthBuyNums;
+    }
+
+    public Integer getMonthRenewNums() {
+        return monthRenewNums;
+    }
+
+    public void setMonthRenewNums(Integer monthRenewNums) {
+        this.monthRenewNums = monthRenewNums;
+    }
+
+    public BigDecimal getMonthBuyMoney() {
+        return monthBuyMoney;
+    }
+
+    public void setMonthBuyMoney(BigDecimal monthBuyMoney) {
+        this.monthBuyMoney = monthBuyMoney;
+    }
+
+    public BigDecimal getMonthRenewMoney() {
+        return monthRenewMoney;
+    }
+
+    public void setMonthRenewMoney(BigDecimal monthRenewMoney) {
+        this.monthRenewMoney = monthRenewMoney;
+    }
 }

+ 36 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/practiceGroupStatisDto.java

@@ -12,6 +12,10 @@ public class practiceGroupStatisDto {
     private Integer overNum = 0;
     private Integer reportNum = 0;
     private BigDecimal buyScale;
+    private Integer monthBuyNums = 0;
+    private Integer monthRenewNums = 0;
+    private BigDecimal monthBuyMoney = BigDecimal.ZERO;
+    private BigDecimal monthRenewMoney= BigDecimal.ZERO;
 
     public practiceGroupStatisDto() {
     }
@@ -79,4 +83,36 @@ public class practiceGroupStatisDto {
     public void setRenewNum(Integer renewNum) {
         this.renewNum = renewNum;
     }
+
+    public Integer getMonthBuyNums() {
+        return monthBuyNums;
+    }
+
+    public void setMonthBuyNums(Integer monthBuyNums) {
+        this.monthBuyNums = monthBuyNums;
+    }
+
+    public Integer getMonthRenewNums() {
+        return monthRenewNums;
+    }
+
+    public void setMonthRenewNums(Integer monthRenewNums) {
+        this.monthRenewNums = monthRenewNums;
+    }
+
+    public BigDecimal getMonthBuyMoney() {
+        return monthBuyMoney;
+    }
+
+    public void setMonthBuyMoney(BigDecimal monthBuyMoney) {
+        this.monthBuyMoney = monthBuyMoney;
+    }
+
+    public BigDecimal getMonthRenewMoney() {
+        return monthRenewMoney;
+    }
+
+    public void setMonthRenewMoney(BigDecimal monthRenewMoney) {
+        this.monthRenewMoney = monthRenewMoney;
+    }
 }

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

@@ -2533,18 +2533,14 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             pageInfo.setTotal(count);
             params.put("offset", pageInfo.getOffset());
             results = classGroupDao.superFindClassGroups(params);
-            List<Group> groups=new ArrayList<>();
             List<Integer> classGroupIds=new ArrayList<>();
-            groups.add(null);
             for (SuperClassGroupDto result : results) {
-                Group group=new Group(result.getMusicGroupId(),result.getGroupType());
-                groups.add(group);
                 classGroupIds.add(result.getId());
             }
             List<ClassGroupTeacherMapDto> classGroupTeacherMaps = classGroupTeacherMapperDao.findByClassGroupIds(classGroupIds);
             Map<Integer, Map<TeachTypeEnum, List<ClassGroupTeacherMapDto>>> classTeacherTypeMaps = classGroupTeacherMaps.stream()
                     .collect(Collectors.groupingBy(ClassGroupTeacherMapDto::getClassGroupId, Collectors.groupingBy(ClassGroupTeacherMapDto::getTeacherRole)));
-            groups = groupDao.findByGroupIds(groups);
+            List<Group> groups = groupDao.findByClassGroupIds(classGroupIds);
             Map<String, Map<GroupType, List<Group>>> groupsGroupByGroup = groups.stream().collect(Collectors.groupingBy(Group::getId, Collectors.groupingBy(Group::getGroupType)));
             results.forEach(result -> {
                 Map<GroupType, List<Group>> groupsTypeMap = groupsGroupByGroup.get(result.getMusicGroupId());

+ 19 - 7
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 feign.codec.DecodeException;
+import io.swagger.models.auth.In;
 import org.apache.commons.collections.ListUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -444,6 +445,10 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 						}
 					}
 
+					if (!DateUtil.isSameDay(courseSchedule.getStartClassTime(), courseSchedule.getEndClassTime())) {
+						throw new BizException("上课时间不允许跨天,请重新调整上课时间");
+					}
+
 					courseSchedule.setTeacherId(teacherId);
 					courseSchedule.setActualTeacherId(teacherId);
 					courseSchedule.setCreateTime(now);
@@ -839,21 +844,19 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
             List<Map<Integer, Integer>> courseStudentNumMaps = courseScheduleStudentPaymentDao.countCourseStudentNum(allCourseScheduleIds);
             Map<Long, Long> courseStudentNumMap = MapUtil.convertIntegerMap(courseStudentNumMaps);
 
-            List<Group> groupsT=new ArrayList<>();
-            groupsT.add(null);
             List<Integer> teacherIds=new ArrayList<>();
             for (CourseScheduleDto courseScheduleEndDto : dataList) {
-                Group group=new Group(courseScheduleEndDto.getMusicGroupId(),courseScheduleEndDto.getGroupType());
-                groupsT.add(group);
                 teacherIds.add(courseScheduleEndDto.getActualTeacherId());
             }
-            groupsT = groupDao.findByGroupIds(groupsT);
-            Map<String, Group> idGroupMap = groupsT.stream().collect(Collectors.toMap(Group::getId, group -> group));
+
+			List<Integer> classGroupIds = dataList.stream().map(CourseScheduleDto::getClassGroupId).collect(Collectors.toList());
+			List<Group> groupsT = groupDao.findByClassGroupIds(classGroupIds);
+            Map<Integer, Group> idGroupMap = groupsT.stream().collect(Collectors.toMap(Group::getClassGroupId, group -> group));
 
             for (int i=0;i<dataList.size();i++) {
                 Long studentNum=courseStudentNumMap.get(dataList.get(i).getId());
                 dataList.get(i).setTotalStudentNum(Objects.isNull(studentNum)?0:studentNum.intValue());
-                Group group = idGroupMap.get(dataList.get(i).getMusicGroupId());
+                Group group = idGroupMap.get(dataList.get(i).getClassGroupId());
                 if(Objects.nonNull(group)){
                     dataList.get(i).setGroupName(group.getGroupName());
                 }
@@ -2215,6 +2218,11 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
                     courseSchedule.setClassDate(courseStartTime);
                     courseSchedule.setStartClassTime(courseStartTime);
                     courseSchedule.setEndClassTime(courseEndTime);
+
+					if (!DateUtil.isSameDay(courseSchedule.getStartClassTime(), courseSchedule.getEndClassTime())) {
+						throw new BizException("上课时间不允许跨天,请重新调整上课时间");
+					}
+					
                     if(vipGroupCourseAdjustInfo.getTeachMode().equals(TeachModeEnum.OFFLINE)){
 						courseSchedule.setSchoolId(vipGroup.getTeacherSchoolId());
 					}
@@ -2349,6 +2357,10 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
             	int minutes = DateUtil.minutesBetween(oldCourseSchedule.getStartClassTime(), oldCourseSchedule.getEndClassTime());
             	newCourseSchedule.setEndClassTime(DateUtil.addMinutes(newCourseSchedule.getStartClassTime(), minutes));
             }
+            //判断上课时间是否跨天
+			if (!DateUtil.isSameDay(newCourseSchedule.getStartClassTime(), newCourseSchedule.getEndClassTime())) {
+				throw new BizException("上课时间不允许跨天,请重新调整上课时间");
+			}
             if(Objects.isNull(newCourseSchedule.getClassGroupId())){
                 newCourseSchedule.setClassGroupId(oldCourseSchedule.getClassGroupId());
             }

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

@@ -73,7 +73,7 @@ public class ExtracurricularExercisesMessageServiceImpl extends BaseServiceImpl<
 					null, extracurricularExercises.getTitle(), extracurricularExercisesMessage.getContent());
 			sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.EXTRA_TEACHER_REPLY_PUSH,
 					userMap, null, 0, notifyUrl, "STUDENT", extracurricularExercises.getTitle());
-		}else{
+		}else if("STUDENT".equals(extracurricularExercisesMessage.getRole())&&Objects.nonNull(extracurricularExercisesReply.getAttachments())){
 			Map<Integer, String> userMap = new HashMap<>();
 			userMap.put(extracurricularExercises.getTeacherId(), extracurricularExercises.getTeacherId().toString());
 			SysUser user = teacherDao.getUser(extracurricularExercisesReply.getUserId());

+ 16 - 11
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExtracurricularExercisesReplyServiceImpl.java

@@ -9,6 +9,7 @@ import com.ym.mec.biz.dal.dto.ExtraExerciseStudentsDto;
 import com.ym.mec.biz.dal.entity.ExtracurricularExercises;
 import com.ym.mec.biz.dal.entity.ExtracurricularExercisesReply;
 import com.ym.mec.biz.dal.entity.StudentCourseHomework;
+import com.ym.mec.biz.dal.entity.Teacher;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.page.ExtraExercilseQueryInfo;
@@ -75,7 +76,8 @@ public class ExtracurricularExercisesReplyServiceImpl extends BaseServiceImpl<Lo
 		detail.setStatus(extraExerciseReply.getStatus()==0?YesOrNoEnum.NO:YesOrNoEnum.YES);
 		detail.setIsReplied(extraExerciseReply.getIsReplied()==0?YesOrNoEnum.NO:YesOrNoEnum.YES);
 		detail.setTeacherId(extraExerciseReply.getTeacherId());
-		detail.setTeacherName(extraExerciseReply.getTeacherName());
+		Teacher teacher = teacherDao.get(extraExerciseReply.getTeacherId());
+		detail.setTeacherName(teacher.getRealName());
 		detail.setStudentId(extraExerciseReply.getUserId());
 		detail.setStudentName(extraExerciseReply.getStudentName());
 		detail.setExpiryDate(extraExerciseReply.getExpireDate());
@@ -115,6 +117,7 @@ public class ExtracurricularExercisesReplyServiceImpl extends BaseServiceImpl<Lo
 		if(Objects.isNull(existExtra)){
 			throw new BizException("作业不存在");
 		}
+		boolean push=Objects.isNull(existExtra.getAttachments());
 		ExtracurricularExercises extracurricularExercises = extracurricularExercisesDao.get(existExtra.getExtracurricularExercisesId());
 		if(Objects.isNull(extracurricularExercises)){
 			throw new BizException("作业不存在");
@@ -127,15 +130,17 @@ public class ExtracurricularExercisesReplyServiceImpl extends BaseServiceImpl<Lo
 		extracurricularExercises.setCompletedNum(submitStudentNum);
 		extracurricularExercisesDao.update(extracurricularExercises);
 
-		Map<Integer, String> userMap = new HashMap<>();
-		userMap.put(extracurricularExercises.getTeacherId(), extracurricularExercises.getTeacherId().toString());
-		SysUser user = teacherDao.getUser(existExtra.getUserId());
-		String notifyUrl = "9?courseScheduleID=" + existExtra.getId() + "&userId=" + existExtra.getUserId() + "&studentCourseHomeworkId=" + existExtra.getId()+ "&extra=1";
-		sysMessageService.batchSendImMessage(MessageTypeEnum.EXTRA_SUBMIT_IM,existExtra.getUserId().toString(),
-				new String[]{extracurricularExercises.getTeacherId().toString()},
-				null,extracurricularExercises.getTitle());
-		sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.EXTRA_SUBMIT_PUSH,
-				userMap, null, 0, notifyUrl, "TEACHER",
-				extracurricularExercises.getTitle(), user.getUsername());
+		if(push){
+			Map<Integer, String> userMap = new HashMap<>();
+			userMap.put(extracurricularExercises.getTeacherId(), extracurricularExercises.getTeacherId().toString());
+			SysUser user = teacherDao.getUser(existExtra.getUserId());
+			String notifyUrl = "9?courseScheduleID=" + existExtra.getId() + "&userId=" + existExtra.getUserId() + "&studentCourseHomeworkId=" + existExtra.getId()+ "&extra=1";
+			sysMessageService.batchSendImMessage(MessageTypeEnum.EXTRA_SUBMIT_IM,existExtra.getUserId().toString(),
+					new String[]{extracurricularExercises.getTeacherId().toString()},
+					null,extracurricularExercises.getTitle());
+			sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.EXTRA_SUBMIT_PUSH,
+					userMap, null, 0, notifyUrl, "TEACHER",
+					extracurricularExercises.getTitle(), user.getUsername());
+		}
 	}
 }

+ 5 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExtracurricularExercisesServiceImpl.java

@@ -54,12 +54,14 @@ public class ExtracurricularExercisesServiceImpl extends BaseServiceImpl<Long, E
 		if(StringUtils.isBlank(exercises.getContent())){
 			throw new BizException("请填写内容");
 		}
-		if(Objects.isNull(exercises.getExpireDate())){
-			throw new BizException("请指定截至日期");
-		}
 		if(StringUtils.isBlank(exercises.getStudentIdList())){
 			throw new BizException("请指定学生");
 		}
+		if(Objects.isNull(exercises.getExpireDate())){
+			LocalDateTime localDateTime=LocalDateTime.now();
+			localDateTime=localDateTime.plusDays(2).withHour(21).withMinute(0).withSecond(0);
+			exercises.setExpireDate(Date.from(localDateTime.atZone(DateUtil.zoneId).toInstant()));
+		}
 		List<Integer> studentIds = Arrays.asList(exercises.getStudentIdList().split(",")).stream().mapToInt(Integer::valueOf).boxed().collect(Collectors.toList());
 		exercises.setBatchNo(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
 		exercises.setExpectNum(studentIds.size());

+ 17 - 12
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentCourseHomeworkServiceImpl.java

@@ -83,9 +83,11 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void submitHomework(StudentCourseHomework bean) {
-        if (Objects.isNull(bean) || Objects.isNull(bean.getId())) {
+        StudentCourseHomework existHomework = studentCourseHomeworkDao.get(bean.getId());
+        if (Objects.isNull(bean) || Objects.isNull(bean.getId()) || Objects.isNull(existHomework)) {
             throw new BizException("作业不存在");
         }
+        boolean push = Objects.isNull(bean.getAttachments());
         super.update(bean);
         bean = studentCourseHomeworkDao.get(bean.getId());
         CourseSchedule courseSchedule = courseScheduleDao.get(bean.getCourseScheduleId());
@@ -103,17 +105,20 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
                 courseScheduleReviewDao.update(review);
             }
         }
-        Map<Integer, String> userMap = new HashMap<>();
-        userMap.put(courseSchedule.getActualTeacherId(), courseSchedule.getActualTeacherId().toString());
-        SysUser user = teacherDao.getUser(bean.getUserId());
-        String notifyUrl = "9?courseScheduleID=" + bean.getId() + "&userId=" + bean.getUserId() + "&studentCourseHomeworkId=" + bean.getId() + "&extra=0";
-        String courseDate = DateUtil.dateToString(courseSchedule.getClassDate(), "yyyy年MM月dd日");
-        sysMessageService.batchSendImMessage(MessageTypeEnum.IM_HOMEWORK_SUBMIT_PUSH,bean.getUserId().toString(),
-                new String[]{courseSchedule.getActualTeacherId().toString()},
-                null,courseDate,courseSchedule.getName());
-        sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.HOMEWORK_SUBMIT_PUSH,
-                userMap, null, 0, notifyUrl, "TEACHER", courseSchedule.getName(), courseDate, user.getUsername());
-        courseHomeworkService.update(courseHomework);
+
+        if(push){
+            Map<Integer, String> userMap = new HashMap<>();
+            userMap.put(courseSchedule.getActualTeacherId(), courseSchedule.getActualTeacherId().toString());
+            SysUser user = teacherDao.getUser(bean.getUserId());
+            String notifyUrl = "9?courseScheduleID=" + bean.getId() + "&userId=" + bean.getUserId() + "&studentCourseHomeworkId=" + bean.getId() + "&extra=0";
+            String courseDate = DateUtil.dateToString(courseSchedule.getClassDate(), "yyyy年MM月dd日");
+            sysMessageService.batchSendImMessage(MessageTypeEnum.IM_HOMEWORK_SUBMIT_PUSH,bean.getUserId().toString(),
+                    new String[]{courseSchedule.getActualTeacherId().toString()},
+                    null,courseDate,courseSchedule.getName());
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.HOMEWORK_SUBMIT_PUSH,
+                    userMap, null, 0, notifyUrl, "TEACHER", courseSchedule.getName(), courseDate, user.getUsername());
+            courseHomeworkService.update(courseHomework);
+        }
     }
 
     @Override

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

@@ -1102,7 +1102,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 	}
 
 	@Override
-	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
 	public Map buyVipGroup(VipGroupBuyParamsDto vipGroupBuyParams) {
 		SysUser user = sysUserFeignService.queryUserInfo();
 		if(user == null){
@@ -1117,9 +1117,11 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			throw new BizException("课程信息错误");
 		}
 
+		Date date=new Date();
+
         VipGroup vipGroup = vipGroupDao.get(vipGroupBuyParams.getVipGroupId());
 
-		if(vipGroup.getStatus()!=VipGroupStatusEnum.APPLYING){
+		if(vipGroup.getPaymentExpireDate().before(date)){
 			throw new BizException("该课程已结束报名!");
 		}
 
@@ -1157,8 +1159,6 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			}
 		}
 
-		Date date=new Date();
-
 		List<CourseSchedule> courseSchedules = JSON.parseArray(vipGroup.getCourseSchedulesJson(),CourseSchedule.class);
 		courseScheduleService.checkNewCourseSchedules(courseSchedules,false);
 

+ 10 - 0
mec-biz/src/main/resources/config/mybatis/CourseScheduleEvaluateMapper.xml

@@ -271,4 +271,14 @@
           AND be_renew_group_id_ >= 1
         GROUP BY organ_id_
     </select>
+
+    <!-- 获取当月成交金额,续费人数(新增人数) -->
+    <select id="getMonthOrganMoney" resultMap="PracticeGroupsOrgan">
+        SELECT SUM(actual_amount_) total_money_, count(distinct user_id_) buy_nums_, organ_id_
+        FROM student_payment_order
+        WHERE type_ = #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+          AND status_ = 'SUCCESS'
+          AND DATE_FORMAT(create_time_, '%Y%m') = DATE_FORMAT(now(), '%Y%m')
+        GROUP BY organ_id_
+    </select>
 </mapper>

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

@@ -496,6 +496,7 @@
         cs.teach_mode_,
         cs.music_group_id_,
         cs.group_type_,
+        cs.class_group_id_,
         cg.student_num_ total_student_num_,
         su.real_name_ teacher_name_,
         IF(ta.sign_in_status_ IS NULL,3,ta.sign_in_status_) sign_in_status_,

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

@@ -25,13 +25,13 @@
 	<sql id="queryPageCondition">
 		<where>
 			<if test="teacherId != null">
-				teacher_id_ = #{teacherId}
+				and teacher_id_ = #{teacherId}
 			</if>
 			<if test="title != null">
-				title_ = #{title}
+				and title_ = #{title}
 			</if>
 			<if test="batchNo != null">
-				batch_no_ = #{batchNo}
+				and batch_no_ = #{batchNo}
 			</if>
 			<if test="assignStartTime != null">
 				AND ee.create_time_ &gt;= #{assignStartTime}

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

@@ -118,46 +118,46 @@
             AND FIND_IN_SET(g.organ_id_,#{organIdList})
         </if>
     </select>
-    <select id="findByGroupIds" resultMap="Group">
-      ( SELECT o.id_ organ_id_,o.name_ organ_name_,g.id_, g.name_ group_name_, 'MUSIC' group_type_
+    <select id="findByClassGroupIds" resultMap="Group">
+        SELECT cg.music_group_id_ group_id_,cg.group_type_,cg.id_ class_group_id_,g.name_ group_name_,g.organ_id_,o.name_ organ_name_,cg.name_ class_group_name_
         FROM music_group g
-        LEFT JOIN organization o ON g.organ_id_ = o.id_
-        WHERE g.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>
+        LEFT JOIN class_group cg ON cg.music_group_id_=g.id_
+        LEFT JOIN organization o ON o.id_=g.organ_id_
+        WHERE cg.group_type_='MUSIC'
+        AND cg.id_ IN
+        <foreach collection="classGroupIds" item="classGroupId" separator="," open="(" close=")">
+            #{classGroupId}
         </foreach>
-      )
-      UNION
-      ( SELECT o.id_ organ_id_,o.name_ organ_name_,g.id_, g.name_ group_name_, 'VIP' group_type_
-      FROM vip_group g LEFT JOIN organization o ON g.organ_id_ = o.id_
-      WHERE g.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>
+        UNION ALL
+        SELECT cg.music_group_id_ group_id_,cg.group_type_,cg.id_ class_group_id_,cg.name_ group_name_,g.organ_id_,o.name_ organ_name_,cg.name_ class_group_name_
+        FROM vip_group g
+        LEFT JOIN class_group cg ON cg.music_group_id_=g.id_
+        LEFT JOIN organization o ON o.id_=g.organ_id_
+        WHERE cg.group_type_='VIP'
+        AND cg.id_ IN
+        <foreach collection="classGroupIds" item="classGroupId" separator="," open="(" close=")">
+            #{classGroupId}
         </foreach>
-      )
-        UNION
-        ( SELECT o.id_ organ_id_,o.name_ organ_name_,g.id_, g.name_ group_name_, 'PRACTICE' group_type_
-        FROM practice_group g LEFT JOIN organization o ON g.organ_id_ = o.id_
-        WHERE g.id_ IN
-        <foreach collection="groups" item="group" open="(" close=")" separator=",">
-            <if test="group != null and group.groupType == @com.ym.mec.biz.dal.enums.GroupType@PRACTICE">
-                #{group.id}
-            </if>
-            <if test="group == null">
-                #{group}
-            </if>
+        UNION ALL
+        SELECT cg.music_group_id_ group_id_,cg.group_type_,cg.id_ class_group_id_,cg.name_ group_name_,g.organ_id_,o.name_ organ_name_,cg.name_ class_group_name_
+        FROM	practice_group g
+        LEFT JOIN class_group cg ON cg.music_group_id_=g.id_
+        LEFT JOIN organization o ON o.id_=g.organ_id_
+        WHERE cg.group_type_='PRACTICE'
+        AND cg.id_ IN
+        <foreach collection="classGroupIds" item="classGroupId" separator="," open="(" close=")">
+            #{classGroupId}
+        </foreach>
+        UNION ALL
+        SELECT cg.music_group_id_ group_id_,cg.group_type_,cg.id_ class_group_id_,cg.name_ group_name_,g.organ_id_,o.name_ organ_name_,cg.name_ class_group_name_
+        FROM courses_group g
+        LEFT JOIN class_group cg ON cg.music_group_id_=g.id_
+        LEFT JOIN organization o ON o.id_=g.organ_id_
+        WHERE cg.group_type_='COMM'
+        AND cg.id_ IN
+        <foreach collection="classGroupIds" item="classGroupId" separator="," open="(" close=")">
+            #{classGroupId}
         </foreach>
-        )
     </select>
 
 </mapper>

+ 14 - 2
mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml

@@ -450,10 +450,22 @@
     <select id="ExportQueryPage" resultMap="orderAndDetail" parameterType="map">
         SELECT spo.*,u.username_,spod.id_ detail_id_,spod.type_ detail_type_,spod.price_
         detail_price_,spod.kit_group_purchase_type_ detail_kit_group_purchase_type_,
-        o.name_ organ_name,sci.charge_type_,g.id_ goods_id, g.name_ goods_name FROM student_payment_order spo
+        sci.charge_type_,g.id_ goods_id, g.name_ goods_name,o.name_ organ_name
+        FROM student_payment_order spo
         LEFT JOIN sys_user u on spo.user_id_ = u.id_
         LEFT JOIN student_payment_order_detail spod on spo.id_ = spod.payment_order_id_
-        LEFT JOIN organization o on spo.organ_id_ = o.id_
+        <if test='orderType != null and orderType.toString()=="0".toString()'>
+            LEFT JOIN organization o on spo.organ_id_ = o.id_
+        </if>
+        <if test='orderType != null and orderType.toString()=="1".toString()'>
+            LEFT JOIN organization o on spo.organ_id_ = o.id_
+        </if>
+        <if test='orderType != null and orderType.toString()=="2".toString()'>
+            LEFT JOIN organization o on spo.organ_id_ = o.id_
+        </if>
+        <if test='orderType != null and orderType.toString()=="3".toString()'>
+            LEFT JOIN organization o on spo.routing_organ_id_ = o.id_
+        </if>
         LEFT JOIN sporadic_charge_info sci on spo.music_group_id_ = sci.id_
         LEFT JOIN goods g on FIND_IN_SET(g.id_,spod.goods_id_list_)
         <include refid="queryPaymentOrder"/>

+ 32 - 0
mec-student/src/main/java/com/ym/mec/student/controller/StudentOrderController.java

@@ -1,5 +1,6 @@
 package com.ym.mec.student.controller;
 
+import com.ym.mec.biz.dal.enums.OrderTypeEnum;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
@@ -370,6 +371,8 @@ public class StudentOrderController extends BaseController {
         List<PracticeGroupsDto> practiceGroupsFrees = courseScheduleEvaluateDao.getPracticeGroupsFree();
         List<PracticeGroupsDto> practiceGroupsBuys = courseScheduleEvaluateDao.getPracticeGroupsBuy();
         List<PracticeGroupsDto> practiceGroupsRenews = courseScheduleEvaluateDao.getPracticeGroupsRenew();
+        List<PracticeGroupsDto> monthOrganBuyMoneys = courseScheduleEvaluateDao.getMonthOrganMoney(OrderTypeEnum.PRACTICE_GROUP_BUY);
+        List<PracticeGroupsDto> monthOrganRenewMoneys = courseScheduleEvaluateDao.getMonthOrganMoney(OrderTypeEnum.PRACTICE_GROUP_RENEW);
 
         List<PracticeGroupsDto> practiceGroups = new ArrayList<>();
         for (Organization organ : organs) {
@@ -418,6 +421,23 @@ public class StudentOrderController extends BaseController {
                     break;
                 }
             }
+            //当月新增金额和人数
+            for (PracticeGroupsDto monthOrganBuyMoney : monthOrganBuyMoneys) {
+                if (organ.getId().equals(monthOrganBuyMoney.getOrganId())) {
+                    practiceGroupsDto.setMonthBuyMoney(monthOrganBuyMoney.getTotalMoney());
+                    practiceGroupsDto.setMonthBuyNums(monthOrganBuyMoney.getBuyNums());
+                    break;
+                }
+            }
+
+            //当月续费金额和人数
+            for (PracticeGroupsDto monthOrganRenewMoney : monthOrganRenewMoneys) {
+                if (organ.getId().equals(monthOrganRenewMoney.getOrganId())) {
+                    practiceGroupsDto.setMonthRenewNums(monthOrganRenewMoney.getBuyNums());
+                    practiceGroupsDto.setMonthRenewMoney(monthOrganRenewMoney.getTotalMoney());
+                    break;
+                }
+            }
 
             if(practiceGroupsDto.getTotalNums() >0 ){
                 double scale = new BigDecimal(practiceGroupsDto.getBuyNums()).multiply(new BigDecimal(100)).divide(new BigDecimal(practiceGroupsDto.getTotalNums()),2, BigDecimal.ROUND_HALF_UP).doubleValue();
@@ -433,6 +453,10 @@ public class StudentOrderController extends BaseController {
         Integer renewNum = 0;
         Integer overNum = 0;
         Integer reportNum = 0;
+        Integer monthBuyNums = 0;
+        Integer monthRenewNums = 0;
+        BigDecimal monthBuyMoney = BigDecimal.ZERO;
+        BigDecimal monthRenewMoney= BigDecimal.ZERO;
 
         Iterator<PracticeGroupsDto> iterator = practiceGroups.iterator();
         while (iterator.hasNext()) {
@@ -447,6 +471,10 @@ public class StudentOrderController extends BaseController {
             buyNum += next.getBuyNums();
             reportNum += next.getReportNums();
             renewNum += next.getRenewNums();
+            monthBuyNums += next.getMonthBuyNums();
+            monthRenewNums += next.getMonthRenewNums();
+            monthBuyMoney  = monthBuyMoney.add(next.getMonthBuyMoney());
+            monthRenewMoney = monthRenewMoney.add(next.getMonthRenewMoney());
         }
         practiceGroups = practiceGroups.stream().sorted(Comparator.comparingDouble(PracticeGroupsDto::getBuyScale).reversed()).collect(Collectors.toList());
 
@@ -458,6 +486,10 @@ public class StudentOrderController extends BaseController {
         practiceGroupStatisDto.setRenewNum(renewNum);
         practiceGroupStatisDto.setOverNum(overNum);
         practiceGroupStatisDto.setReportNum(reportNum);
+        practiceGroupStatisDto.setMonthBuyNums(monthBuyNums);
+        practiceGroupStatisDto.setMonthBuyMoney(monthBuyMoney);
+        practiceGroupStatisDto.setMonthRenewNums(monthRenewNums);
+        practiceGroupStatisDto.setMonthRenewMoney(monthRenewMoney);
 
         if(totalNum >0 ){
             BigDecimal scale = new BigDecimal(buyNum).multiply(new BigDecimal(100)).divide(new BigDecimal(totalNum), 2, BigDecimal.ROUND_HALF_UP);

+ 2 - 2
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherCourseScheduleController.java

@@ -208,9 +208,9 @@ public class TeacherCourseScheduleController extends BaseController {
             }
         }
         
-        if (oldCourseSchedule.getGroupType().equals(GroupType.VIP)) {
+        /*if (oldCourseSchedule.getGroupType().equals(GroupType.VIP)) {
             vipGroupService.checkVipCourseIsInScore(Long.valueOf(oldCourseSchedule.getMusicGroupId()));
-        }
+        }*/
         
         if(Objects.isNull(classDateAdjustDto.getClassGroupId())){
             classDateAdjustDto.setClassGroupId(oldCourseSchedule.getClassGroupId());

+ 8 - 7
mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

@@ -16,8 +16,10 @@ import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.excel.POIUtil;
+
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+
 import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -28,7 +30,9 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletResponse;
-import java.io.*;
+
+import java.io.IOException;
+import java.io.OutputStream;
 import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -333,11 +337,8 @@ public class ExportController extends BaseController {
                     "signOutTime","signInStatusEnum.msg","signOutStatusEnum.msg", "remark"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
-
             ouputStream = response.getOutputStream();
-
-            byte[] bytes = workbook.getBytes();
-            ouputStream.write(bytes);
+			workbook.write(ouputStream);
 			ouputStream.flush();
         } catch (Exception e) {
             e.printStackTrace();
@@ -481,7 +482,7 @@ public class ExportController extends BaseController {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (!sysUser.getIsSuperAdmin()) {
             Employee employee = employeeDao.get(sysUser.getId());
-            if (StringUtils.isEmpty(queryInfo.getOrganId()) && queryInfo.getOrderType().equals("3")) {
+            if (StringUtils.isEmpty(queryInfo.getRoutingOrganId()) && queryInfo.getOrderType().equals("3")) {
                 queryInfo.setRoutingOrganId(employee.getOrganIdList());
             } else if (StringUtils.isEmpty(queryInfo.getOrganId())) {
                 queryInfo.setOrganId(employee.getOrganIdList());
@@ -685,7 +686,7 @@ public class ExportController extends BaseController {
     @ApiOperation(value = "评论列表导出")
     @RequestMapping("export/courseReviews")
     @PreAuthorize("@pcs.hasPermissions('export/courseReviews')")
-    public void export(CourseReviewQueryInfo queryInfo, HttpServletResponse response) throws IOException {
+    public void courseReviews(CourseReviewQueryInfo queryInfo, HttpServletResponse response) throws IOException {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (!sysUser.getIsSuperAdmin()) {
             Employee employee = employeeDao.get(sysUser.getId());

+ 2 - 2
mec-web/src/main/java/com/ym/mec/web/controller/StudentPaymentOrderController.java

@@ -204,13 +204,13 @@ public class StudentPaymentOrderController extends BaseController {
         }
         if (!sysUser.getIsSuperAdmin()) {
             Employee employee = employeeDao.get(sysUser.getId());
-            if (StringUtils.isEmpty(queryInfo.getOrganId())) {
+            if (StringUtils.isEmpty(queryInfo.getRoutingOrganId())) {
                 queryInfo.setRoutingOrganId(employee.getOrganIdList());
             } else if (StringUtils.isEmpty(employee.getOrganIdList())) {
                 return failed("用户所在分部异常");
             } else {
                 List<String> list = Arrays.asList(employee.getOrganIdList().split(","));
-                if (!list.containsAll(Arrays.asList(queryInfo.getOrganId().split(",")))) {
+                if (!list.containsAll(Arrays.asList(queryInfo.getRoutingOrganId().split(",")))) {
                     return failed("非法请求");
                 }
             }