Procházet zdrojové kódy

Merge branch 'master' into feature-goods-river

# Conflicts:
#	mec-biz/src/main/java/com/ym/mec/biz/dal/dto/RegisterPayDto.java
周箭河 před 5 roky
rodič
revize
bbc1ab8516
39 změnil soubory, kde provedl 520 přidání a 363 odebrání
  1. 4 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java
  2. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleStudentPaymentDao.java
  3. 11 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupDao.java
  4. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysUserCashAccountDetailDao.java
  5. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherAttendanceDao.java
  6. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherDao.java
  7. 1 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/RegisterPayDto.java
  8. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherAttendanceDto.java
  9. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/service/SysUserCashAccountDetailService.java
  10. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/TeacherService.java
  11. 11 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupTeacherMapperServiceImpl.java
  12. 39 28
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  13. 23 11
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleStudentPaymentServiceImpl.java
  14. 19 17
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  15. 134 91
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SporadicChargeInfoImpl.java
  16. 7 16
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentAttendanceServiceImpl.java
  17. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRechargeServiceImpl.java
  18. 138 138
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  19. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysUserCashAccountDetailServiceImpl.java
  20. 5 6
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java
  21. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherServiceImpl.java
  22. 12 5
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
  23. 1 1
      mec-biz/src/main/resources/config/mybatis/ClassGroupStudentMapperMapper.xml
  24. 21 11
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  25. 6 2
      mec-biz/src/main/resources/config/mybatis/CourseScheduleRewardsMapper.xml
  26. 3 0
      mec-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml
  27. 1 1
      mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml
  28. 8 1
      mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml
  29. 1 0
      mec-biz/src/main/resources/config/mybatis/StudentAttendanceMapper.xml
  30. 5 7
      mec-biz/src/main/resources/config/mybatis/SysUserCashAccountDetailMapper.xml
  31. 7 2
      mec-biz/src/main/resources/config/mybatis/TeacherAttendanceMapper.xml
  32. 3 0
      mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml
  33. 1 1
      mec-common/common-core/src/main/java/com/ym/mec/common/controller/BaseController.java
  34. 5 4
      mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupController.java
  35. 2 0
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherCourseScheduleController.java
  36. 0 1
      mec-web/src/main/java/com/ym/mec/web/controller/EmployeeController.java
  37. 7 1
      mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java
  38. 3 1
      mec-web/src/main/java/com/ym/mec/web/controller/SysMessageController.java
  39. 2 2
      mec-web/src/main/java/com/ym/mec/web/controller/TeacherController.java

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

@@ -37,7 +37,10 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      * @author Joburgess
      * @date 2019/10/18
      */
-    TeacherAttendanceDto getTeacherCourseByDateSpeed(@Param("startTime") Date startTime, @Param("endTime") Date endTime, @Param("teacherId") Long teacherId);
+    List<TeacherAttendanceDto> getTeacherCourseByDateSpeed(@Param("startTime") Date startTime,
+                                                     @Param("endTime") Date endTime,
+                                                     @Param("teacherId") Long teacherId,
+                                                     @Param("schoolId") Integer schoolId);
 
     int batchAddCourseSchedules(List<CourseSchedule> courseSchedules);
 

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleStudentPaymentDao.java

@@ -165,4 +165,15 @@ public interface CourseScheduleStudentPaymentDao extends BaseDAO<Long, CourseSch
      * @return java.util.List<java.util.Map<java.lang.Integer,java.lang.Integer>>
      */
     List<Map<Integer, Integer>> countCourseStudentNum(@Param("courseIds") List<Long> courseIds);
+
+    /**
+     * @describe 检测学生是否存在指定课程的缴费记录
+     * @author Joburgess
+     * @date 2020/1/10
+     * @param courseScheduleId:
+     * @param userId:
+     * @return int
+     */
+    int checkStudentHaveCourse(@Param("courseScheduleId") Long courseScheduleId,
+                               @Param("userId") Integer userId);
 }

+ 11 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupDao.java

@@ -3,6 +3,7 @@ package com.ym.mec.biz.dal.dao;
 import com.ym.mec.biz.dal.dto.BasicUserDto;
 import com.ym.mec.biz.dal.dto.MusicCardDto;
 import com.ym.mec.biz.dal.entity.MusicGroup;
+import com.ym.mec.biz.dal.entity.School;
 import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.entity.ImGroupModel;
@@ -175,13 +176,14 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
     /**
      * 查询用户的乐团信息
      *
-     * @param UserId
+     * @param userId
      * @return
      */
-    MusicGroup findUserMusicGroup(@Param("UserId") Integer UserId);
+    MusicGroup findUserMusicGroup(@Param("userId") Integer userId);
 
     /**
      * 获取乐团信息
+     *
      * @param list
      * @return
      */
@@ -189,9 +191,16 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
 
     /**
      * 获取乐团名称
+     *
      * @param musicGroupIds
      * @return
      */
     List<Map<String, String>> queryMusicGroupNameMap(@Param("musicGroupIds") Set<String> musicGroupIds);
 
+    /**
+     * 查询用户的学校
+     * @param userId
+     * @return
+     */
+    School findUserSchool(@Param("userId") Integer userId);
 }

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

@@ -28,5 +28,5 @@ public interface SysUserCashAccountDetailDao extends BaseDAO<Long, SysUserCashAc
      * @param currentMonth
      * @return
      */
-    Integer countByTypeAndTime(@Param("currentMonth") String currentMonth,@Param("teacherId")Integer teacherId);
+    Integer countByTypeAndTime(@Param("currentMonth") String currentMonth,@Param("teacherId")Integer teacherId,@Param("activeId")Integer activeId);
 }

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

@@ -137,4 +137,13 @@ public interface TeacherAttendanceDao extends BaseDAO<Long, TeacherAttendance> {
 	 * @return
 	 */
 	int deleteByMusicGroupId(@Param("musicGroupId")String musicGroupId, @Param("groupType")GroupType groupType);
+
+	/**
+	 * @describe 清空指定课程教师签到信息
+	 * @author Joburgess
+	 * @date 2020/1/9
+	 * @param courseScheduleId: 课程编号
+	 * @return int
+	 */
+	int cleanCourseTeacherSignInfo(@Param("courseScheduleId") Long courseScheduleId);
 }

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

@@ -215,7 +215,7 @@ public interface TeacherDao extends BaseDAO<Integer, Teacher> {
      * @param subjectIds
      * @return
      */
-    List<Teacher> findTeacherByOrganId(@Param("organId")String organId,@Param("subjectIds")String subjectIds);
+    List<Teacher> findTeacherByOrganId(@Param("organId")String organId,@Param("subjectIds")String subjectIds,@Param("jobNature")String jobNature);
 
     /**
      * 获取用户username

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

@@ -1,9 +1,7 @@
 package com.ym.mec.biz.dal.dto;
 
 import java.math.BigDecimal;
-import java.util.List;
 import java.util.Map;
-import java.util.Set;
 
 /**
  * 学团注册支付
@@ -20,7 +18,7 @@ public class RegisterPayDto {
     //教谱ids
     private String otherGoodsIds;
     //乐器id->type
-    private Map<Long,String> goodsGroups;
+    private Map<Long, String> goodsGroups;
 
     //是否余额支付
     private Boolean isUseBalancePayment = false;

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

@@ -88,6 +88,16 @@ public class TeacherAttendanceDto {
 
     private Integer enableStudentAttendanceTimeRange;
 
+    private Integer enableStudentAttendanceTimeRangeVip;
+
+    public Integer getEnableStudentAttendanceTimeRangeVip() {
+        return enableStudentAttendanceTimeRangeVip;
+    }
+
+    public void setEnableStudentAttendanceTimeRangeVip(Integer enableStudentAttendanceTimeRangeVip) {
+        this.enableStudentAttendanceTimeRangeVip = enableStudentAttendanceTimeRangeVip;
+    }
+
     public int getStudentAttendanceIsFirstTime() {
         return studentAttendanceIsFirstTime;
     }

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/SysUserCashAccountDetailService.java

@@ -28,9 +28,10 @@ public interface SysUserCashAccountDetailService extends BaseService<Long, SysUs
 	 * @param transType 交易渠道
 	 * @param status 交易状态
 	 * @param comment 备注
+	 * @param comment 描述
 	 * @return
 	 */
 	boolean addCashAccountDetail(Integer userId, BigDecimal amount, String origOrderId, String transNo, PlatformCashAccountDetailTypeEnum type,
-			TransTypeEnum transType, DealStatusEnum status, String comment);
+			TransTypeEnum transType, DealStatusEnum status, String comment,String description);
 
 }

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

@@ -135,5 +135,5 @@ public interface TeacherService extends BaseService<Integer, Teacher> {
      * @param organId
      * @return
      */
-    List<Teacher> findTeacherByOrganId(String organId,String subjectIds);
+    List<Teacher> findTeacherByOrganId(String organId,String subjectIds,String jobNature);
 }

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

@@ -377,7 +377,11 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
         List<Integer> allTeacherIds = courseSchedules.stream().map(courseSchedule -> courseSchedule.getActualTeacherId().intValue()).collect(Collectors.toList());
         //助教老师列表
         List<Integer> teachingTeacherIds = new ArrayList<>();
-        courseSchedules.forEach(courseSchedule -> teachingTeacherIds.addAll(courseSchedule.getTeachingTeacherIdList()));
+        courseSchedules.forEach(courseSchedule -> {
+            if(Objects.nonNull(courseSchedule.getTeachingTeacherIdList())){
+                teachingTeacherIds.addAll(courseSchedule.getTeachingTeacherIdList());
+            }
+        });
         allTeacherIds.addAll(teachingTeacherIds);
         //所有老师列表
         allTeacherIds = allTeacherIds.stream().distinct().collect(Collectors.toList());
@@ -443,6 +447,9 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
                 return;
             }
             for (Integer teacherId : teachingTeacherIdList) {
+                if(Objects.isNull(teacherId)){
+                    return;
+                }
                 Teacher teacher = teacherMap.get(teacherId);
                 if(teacher.getEntryDate().after(entryDate)||teacher.getEntryDate().getTime()==entryDate.getTime()){
                     settlementType = SalarySettlementTypeEnum.GRADIENT_SALARY.getCode();
@@ -457,7 +464,9 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
                         teacherDefaultMusicGroupSalaryWithTeacherId));
             }
         });
-        courseScheduleTeacherSalaryService.batchInsert(courseScheduleTeacherSalaryList);
+        if(!CollectionUtils.isEmpty(courseScheduleTeacherSalaryList)){
+            courseScheduleTeacherSalaryService.batchInsert(courseScheduleTeacherSalaryList);
+        }
     }
 
     /**

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

@@ -129,7 +129,9 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
         currentCourseDetail.setCurrentClassTimes(courseScheduleDao.countClassGroupOverCourseNum(currentCourseDetail.getClassId()));
         SysConfig sysConfig = sysConfigService.findByParamName(SysConfigService.ENABLE_STUDENT_ATTENDANCE_TIME_RANGE);
+        SysConfig sysConfigVip = sysConfigService.findByParamName(SysConfigService.ENABLE_STUDENT_ATTENDANCE_TIME_RANGE_VIP);
         currentCourseDetail.setEnableStudentAttendanceTimeRange(sysConfig.getParanValue(Integer.class));
+        currentCourseDetail.setEnableStudentAttendanceTimeRange(sysConfigVip.getParanValue(Integer.class));
         int studentNum = studentAttendanceDao.countByCourseSchedule(courseID);
         if (Objects.nonNull(studentNum)) {
             currentCourseDetail.setStudentAttendanceIsFirstTime(studentNum > 0 ? 0 : 1);
@@ -200,15 +202,12 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
     public YesOrNoEnum enableOnlyNormalAttendance(Date startClassTime, Long userId, boolean checkSchool, Integer schoolId) {
         Date endTime = startClassTime;
         Date startTime = DateUtil.addHours(endTime, -1);
-        TeacherAttendanceDto teacherCourseByDateSpeed = courseScheduleDao.getTeacherCourseByDateSpeed(startTime, endTime, userId);
-        if (Objects.isNull(teacherCourseByDateSpeed)) {
+        List<TeacherAttendanceDto> teacherCourseByDateSpeeds = courseScheduleDao.getTeacherCourseByDateSpeed(startTime, endTime, userId, schoolId);
+        if (CollectionUtils.isEmpty(teacherCourseByDateSpeeds)) {
             return YesOrNoEnum.NO;
         } else {
             if (checkSchool
-                    && Objects.nonNull(teacherCourseByDateSpeed.getSignInTime())
-                    && Objects.nonNull(schoolId)
-                    && Objects.nonNull(teacherCourseByDateSpeed.getSchoolId())
-                    && schoolId.equals(teacherCourseByDateSpeed.getSchoolId().intValue())) {
+                    && Objects.nonNull(schoolId)) {
                 return YesOrNoEnum.YES;
             } else {
                 return YesOrNoEnum.NO;
@@ -359,6 +358,11 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         Map<String, Object> params = new HashMap<>();
         MapUtil.populateMap(params, queryInfo);
 
+        List<Group> groups = groupDao.searchGroups(params);
+        if(!CollectionUtils.isEmpty(groups)){
+            params.put("groups", groups);
+        }
+
         List<CourseScheduleDto> dataList = null;
         int count = courseScheduleDao.countCourseSchedulesWithDate(params);
         if (count > 0) {
@@ -1300,27 +1304,27 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
             if (Objects.isNull(newCourseSchedule.getSchoolId())) {
                 newCourseSchedule.setSchoolId(oldCourseSchedule.getSchoolId());
             }
+            int settlementNum = courseScheduleTeacherSalaryDao.checkCourseIsSettlement(oldCourseSchedule.getId().intValue());
+            if (settlementNum > 0) {
+                throw new BizException("{}[{}]{}-{}课程已结算的",
+                        oldCourseSchedule.getName(),
+                        oldCourseSchedule.getId(),
+                        DateUtil.dateToString(oldCourseSchedule.getStartClassTime(),
+                                DateUtil.EXPANDED_DATE_TIME_FORMAT),
+                        DateUtil.dateToString(oldCourseSchedule.getEndClassTime(),
+                                DateUtil.EXPANDED_DATE_TIME_FORMAT));
+            }
+            int num = studentAttendanceDao.countStudentAttendenceNum(oldCourseSchedule.getId().intValue());
+            if (num > 0) {
+                throw new BizException("{}[{}]{}-{}课程已点名",
+                        oldCourseSchedule.getName(),
+                        oldCourseSchedule.getId(),
+                        DateUtil.dateToString(oldCourseSchedule.getStartClassTime(),
+                                DateUtil.EXPANDED_DATE_TIME_FORMAT),
+                        DateUtil.dateToString(oldCourseSchedule.getEndClassTime(),
+                                DateUtil.EXPANDED_DATE_TIME_FORMAT));
+            }
             if (oldCourseSchedule.getType().equals(CourseSchedule.CourseScheduleType.VIP)) {
-                int settlementNum = courseScheduleTeacherSalaryDao.checkCourseIsSettlement(oldCourseSchedule.getId().intValue());
-                if (settlementNum > 0) {
-                    throw new BizException("{}[{}]{}-{}课程已结算的",
-                            oldCourseSchedule.getName(),
-                            oldCourseSchedule.getId(),
-                            DateUtil.dateToString(oldCourseSchedule.getStartClassTime(),
-                                    DateUtil.EXPANDED_DATE_TIME_FORMAT),
-                            DateUtil.dateToString(oldCourseSchedule.getEndClassTime(),
-                                    DateUtil.EXPANDED_DATE_TIME_FORMAT));
-                }
-                int num = studentAttendanceDao.countStudentAttendenceNum(oldCourseSchedule.getId().intValue());
-                if (num > 0) {
-                    throw new BizException("{}[{}]{}-{}课程已点名",
-                            oldCourseSchedule.getName(),
-                            oldCourseSchedule.getId(),
-                            DateUtil.dateToString(oldCourseSchedule.getStartClassTime(),
-                                    DateUtil.EXPANDED_DATE_TIME_FORMAT),
-                            DateUtil.dateToString(oldCourseSchedule.getEndClassTime(),
-                                    DateUtil.EXPANDED_DATE_TIME_FORMAT));
-                }
                 VipGroup vipGroup = vipGroupDao.get(Long.valueOf(oldCourseSchedule.getMusicGroupId()));
                 if(Objects.isNull(vipGroup)){
                     throw new BizException("课程不存在");
@@ -1368,6 +1372,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
         //需要生成课程课酬的课程计划
         List<CourseSchedule> needCreateCourseScheduleTeacherSalaryCourse = new ArrayList<>();
+        //需要重新学生缴费记录的课
+        List<CourseSchedule> needCreateStudentPaymentCourses = new ArrayList<>();
 
         //课程对应助教集合
         List<CourseScheduleTeacherSalary> teachingTeacherSalarys = courseScheduleDao.findTeachingTeachers(newCourseScheduleIds);
@@ -1386,8 +1392,12 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
             oldCourseSchedules.put(newCourseSchedule.getId(), oldCourseSchedule);
 
-            if (oldCourseSchedule.getStartClassTime().before(now) && sysUser.getUserType().contains("TEACHER")) {
-                throw new BizException("不能调整今天及以前的课程");
+            if (newCourseSchedule.getStartClassTime().after(now)){
+                teacherAttendanceDao.cleanCourseTeacherSignInfo(newCourseSchedule.getId());
+            }
+
+            if (oldCourseSchedule.getEndClassTime().before(now)&&newCourseSchedule.getStartClassTime().after(now)){
+                needCreateStudentPaymentCourses.add(oldCourseSchedule);
             }
 
             boolean courseTimeIsChange = false;
@@ -1529,6 +1539,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         if (!CollectionUtils.isEmpty(needCreateCourseScheduleTeacherSalaryCourse)) {
             classGroupTeacherMapperService.createCourseScheduleTeacherSalary(needCreateCourseScheduleTeacherSalaryCourse, oldCourseSchedules);
         }
+        courseScheduleStudentPaymentService.createCourseScheduleStudentPaymentByCourseSchedules(needCreateStudentPaymentCourses);
 
         try {
             //推送课时调整

+ 23 - 11
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleStudentPaymentServiceImpl.java

@@ -12,6 +12,7 @@ import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
 import java.math.BigDecimal;
@@ -140,6 +141,7 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
     }
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public void createCourseScheduleStudentPaymentByCourseSchedules(List<CourseSchedule> courseSchedules) {
 		if(CollectionUtils.isEmpty(courseSchedules)){
 			return;
@@ -163,19 +165,29 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
 				return;
 			}
 			studentsWithClassGroup.forEach(classGroupStudent->{
-				courseSchedulesByClassGroup.forEach(courseSchedule -> {
-					CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment(
-							courseSchedule.getId(),
-							classGroupStudent.getUserId(),
-							zeroPrice,
-							courseSchedule.getClassGroupId());
-					courseScheduleStudentPayment.setGroupType(classGroupStudent.getGroupType());
-					courseScheduleStudentPayment.setMusicGroupId(classGroupStudent.getMusicGroupId());
-					courseScheduleStudentPayments.add(courseScheduleStudentPayment);
-				});
+				for (CourseSchedule courseSchedule : courseSchedulesByClassGroup) {
+					int i = courseScheduleStudentPaymentDao.checkStudentHaveCourse(courseSchedule.getId(), classGroupStudent.getUserId());
+					if(i>0){
+						continue;
+					}
+					if(courseSchedule.getType().equals(CourseSchedule.CourseScheduleType.VIP)){
+
+					}else{
+						CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment(
+								courseSchedule.getId(),
+								classGroupStudent.getUserId(),
+								zeroPrice,
+								courseSchedule.getClassGroupId());
+						courseScheduleStudentPayment.setGroupType(classGroupStudent.getGroupType());
+						courseScheduleStudentPayment.setMusicGroupId(classGroupStudent.getMusicGroupId());
+						courseScheduleStudentPayments.add(courseScheduleStudentPayment);
+					}
+				}
 			});
 		});
-		courseScheduleStudentPaymentDao.batchInsert(courseScheduleStudentPayments);
+		if(!CollectionUtils.isEmpty(courseScheduleStudentPayments)){
+			courseScheduleStudentPaymentDao.batchInsert(courseScheduleStudentPayments);
+		}
 	}
 
 	@Override

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

@@ -307,14 +307,15 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                 studentPaymentOrder.setPaymentChannel("BALANCE");
                 studentPaymentOrder.setActualAmount(amount);
                 studentPaymentOrder.setBalancePaymentAmount(balance);
-                studentPaymentOrder.setOrganId(chargeInfo.getOrganId());
-                studentPaymentOrder.setUpdateTime(date);
                 sysUserCashAccountService.updateBalance(userId, balance.negate(), PlatformCashAccountDetailTypeEnum.SPORADIC, chargeInfo.getTitle());
-                studentPaymentOrderService.update(studentPaymentOrder);
-                studentPaymentOrder.setVersion(studentPaymentOrder.getVersion() + 1);
             }
         }
 
+        studentPaymentOrder.setOrganId(chargeInfo.getOrganId());
+        studentPaymentOrder.setUpdateTime(date);
+        studentPaymentOrderService.update(studentPaymentOrder);
+        studentPaymentOrder.setVersion(studentPaymentOrder.getVersion() + 1);
+
         if (amount.compareTo(BigDecimal.ZERO) == 0) {
             Map<String, String> notifyMap = new HashMap<>();
             notifyMap.put("tradeState", "1");
@@ -432,11 +433,11 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                 //团购乐器减免课程费用
                 if (goodsGroup.getType().equals(GoodsType.INSTRUMENT) && goodsGroup.getRemissionCourseFee() != null && musicOneSubjectClassPlan.getKitGroupPurchaseType().equals(KitGroupPurchaseTypeEnum.GROUP)) {//团购
                     orderAmount = orderAmount.subtract(goodsGroup.getRemissionCourseFee());
-                    courseFee.subtract(goodsGroup.getRemissionCourseFee());
+                    courseFee = courseFee.subtract(goodsGroup.getRemissionCourseFee());
                 }
             }
         } else if (registerPayDto.getGoodsGroups() != null && registerPayDto.getGoodsGroups().size() > 0) {
-            String goodsGroupIds = registerPayDto.getGoodsGroups().keySet().stream().map(key -> key.toString()).collect(Collectors.joining(","));
+            String goodsGroupIds = registerPayDto.getGoodsGroups().keySet().stream().map(Object::toString).collect(Collectors.joining(","));
             goodsGroups = musicGroupSubjectGoodsGroupService.findGoodsGroupByIds(goodsGroupIds);
             for (MusicGroupSubjectGoodsGroup goodsGroup : goodsGroups) {
                 Map groupType = JSONObject.parseObject(goodsGroup.getKitGroupPurchaseTypeJson(), HashMap.class);
@@ -515,13 +516,13 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                 studentPaymentOrder.setPaymentChannel("BALANCE");
                 studentPaymentOrder.setActualAmount(amount);
                 studentPaymentOrder.setBalancePaymentAmount(balance);
-                studentPaymentOrder.setOrganId(musicGroup.getOrganId());
-                studentPaymentOrder.setUpdateTime(date);
                 sysUserCashAccountService.updateBalance(userId, balance.negate(), PlatformCashAccountDetailTypeEnum.PAY_FEE, "乐团报名");
-                studentPaymentOrderService.update(studentPaymentOrder);
-                studentPaymentOrder.setVersion(studentPaymentOrder.getVersion() + 1);
             }
         }
+        studentPaymentOrder.setOrganId(musicGroup.getOrganId());
+        studentPaymentOrder.setUpdateTime(date);
+        studentPaymentOrderService.update(studentPaymentOrder);
+        studentPaymentOrder.setVersion(studentPaymentOrder.getVersion() + 1);
 
         if (amount.compareTo(BigDecimal.ZERO) == 0) {
             Map<String, String> notifyMap = new HashMap<>();
@@ -709,13 +710,14 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                 studentPaymentOrder.setPaymentChannel("BALANCE");
                 studentPaymentOrder.setActualAmount(amount);
                 studentPaymentOrder.setBalancePaymentAmount(balance);
-                studentPaymentOrder.setOrganId(musicGroup.getOrganId());
-                studentPaymentOrder.setUpdateTime(date);
                 sysUserCashAccountService.updateBalance(userId, balance.negate(), PlatformCashAccountDetailTypeEnum.PAY_FEE, "乐团报名");
-                studentPaymentOrderService.update(studentPaymentOrder);
-                studentPaymentOrder.setVersion(studentPaymentOrder.getVersion() + 1);
             }
         }
+        studentPaymentOrder.setOrganId(musicGroup.getOrganId());
+        studentPaymentOrder.setUpdateTime(date);
+        studentPaymentOrderService.update(studentPaymentOrder);
+        studentPaymentOrder.setVersion(studentPaymentOrder.getVersion() + 1);
+
         if (amount.compareTo(BigDecimal.ZERO) == 0) {
             Map<String, String> notifyMap = new HashMap<>();
             notifyMap.put("tradeState", "1");
@@ -1064,7 +1066,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             sysUserCashAccountService.updateBalance(order.getUserId(), order.getActualAmount());
             // 增加交易流水
             sysUserCashAccountDetailService.addCashAccountDetail(order.getUserId(), order.getActualAmount(), SysUserCashAccountDetailService.MUSIC_GROUP
-                    + musicGroupId, "", PlatformCashAccountDetailTypeEnum.REFUNDS, null, DealStatusEnum.SUCCESS, "取消乐团");
+                    + musicGroupId, "", PlatformCashAccountDetailTypeEnum.REFUNDS, null, DealStatusEnum.SUCCESS, "取消乐团",null);
         }
         //获取当前乐团所有已报名学员
         if(musicGroup.getOwnershipType() != null && musicGroup.getOwnershipType() == CooperationOrgan.OwnershipType.OWN){
@@ -1319,7 +1321,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             if (amount.doubleValue() > 0) {
                 // 增加交易流水
                 sysUserCashAccountDetailService.addCashAccountDetail(userId, amount, SysUserCashAccountDetailService.MUSIC_GROUP + musicGroupId, "",
-                        PlatformCashAccountDetailTypeEnum.REFUNDS, null, DealStatusEnum.SUCCESS, "退出乐团");
+                        PlatformCashAccountDetailTypeEnum.REFUNDS, null, DealStatusEnum.SUCCESS, "退出乐团",null);
             }
         }
         return true;
@@ -1427,7 +1429,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         if (amount.doubleValue() > 0) {
             // 增加交易流水
             sysUserCashAccountDetailService.addCashAccountDetail(userId, amount, SysUserCashAccountDetailService.MUSIC_GROUP + musicGroupId, "",
-                    PlatformCashAccountDetailTypeEnum.REFUNDS, null, DealStatusEnum.SUCCESS, "退出乐团");
+                    PlatformCashAccountDetailTypeEnum.REFUNDS, null, DealStatusEnum.SUCCESS, "退出乐团",null);
         }
 
         return true;

+ 134 - 91
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SporadicChargeInfoImpl.java

@@ -10,6 +10,7 @@ import com.ym.mec.biz.dal.enums.PlatformCashAccountDetailTypeEnum;
 import com.ym.mec.biz.dal.page.SporadicChargeInfoQueryInfo;
 import com.ym.mec.biz.service.SporadicChargeInfoService;
 import com.ym.mec.biz.service.SysMessageService;
+import com.ym.mec.biz.service.SysUserCashAccountDetailService;
 import com.ym.mec.biz.service.SysUserCashAccountService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
@@ -29,101 +30,143 @@ import java.util.*;
 import java.util.stream.Collectors;
 
 @Service
-public class SporadicChargeInfoImpl extends BaseServiceImpl<Integer, SporadicChargeInfo>  implements SporadicChargeInfoService {
-	
-	@Autowired
-	private SporadicChargeInfoDao sporadicChargeInfoDao;
-	@Autowired
-	private StudentPaymentOrderDao studentPaymentOrderDao;
-	@Autowired
-	private SysUserFeignService sysUserFeignService;
-	@Autowired
-	private SysMessageService sysMessageService;
-	@Autowired
-	private OrganizationDao organizationDao;
-	@Autowired
-	private TeacherDao teacherDao;
-	@Autowired
-	private SysUserCashAccountService sysUserCashAccountService;
+public class SporadicChargeInfoImpl extends BaseServiceImpl<Integer, SporadicChargeInfo> implements SporadicChargeInfoService {
 
-	@Override
-	public BaseDAO<Integer, SporadicChargeInfo> getDAO() {
-		return sporadicChargeInfoDao;
-	}
+    @Autowired
+    private SporadicChargeInfoDao sporadicChargeInfoDao;
+    @Autowired
+    private StudentPaymentOrderDao studentPaymentOrderDao;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private SysMessageService sysMessageService;
+    @Autowired
+    private OrganizationDao organizationDao;
+    @Autowired
+    private TeacherDao teacherDao;
+    @Autowired
+    private SysUserCashAccountService sysUserCashAccountService;
+    @Autowired
+    private SysUserCashAccountDetailService sysUserCashAccountDetailService;
 
-	@Override
-	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
-	public Boolean renewForCallback(StudentPaymentOrder studentPaymentOrder) {
-		int updateCount = studentPaymentOrderDao.update(studentPaymentOrder);
-		if(updateCount <= 0){
-			throw new BizException("订单更新失败");
-		}
-		Integer userId = studentPaymentOrder.getUserId();
-		SysUser sysUser = sysUserFeignService.queryUserById(userId);
-		SporadicChargeInfo info = sporadicChargeInfoDao.get(Integer.parseInt(studentPaymentOrder.getMusicGroupId()));
-		Map<Integer,String> map = new HashMap();
-		map.put(userId,sysUser.getPhone());
-		Map<Integer,String> yimei = new HashMap();
-		map.put(userId,userId.toString());
-		if(studentPaymentOrder.getStatus() == DealStatusEnum.SUCCESS){
-			//活动,增加课程余额
-			if(info.getChargeType().equals("6")){
-				sysUserCashAccountService.appendCourseBalance(userId,studentPaymentOrder.getActualAmount());
-			}
-			sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.SMS_SPORADIC_PAYMENT_SUCCESS, map, null, 0, "1",
-					studentPaymentOrder.getActualAmount(),info.getTitle());
-			sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.YIMEI, MessageTypeEnum.SMS_SPORADIC_PAYMENT_SUCCESS, yimei, null, 0, "1",
-					studentPaymentOrder.getActualAmount(),info.getTitle());
-			return true;
-		}
-		if(studentPaymentOrder.getStatus() == DealStatusEnum.CLOSE || studentPaymentOrder.getStatus() == DealStatusEnum.FAILED){
-			if(studentPaymentOrder.getBalancePaymentAmount() != null && studentPaymentOrder.getBalancePaymentAmount().compareTo(BigDecimal.ZERO) >0 ){
-				sysUserCashAccountService.updateBalance(studentPaymentOrder.getUserId(), studentPaymentOrder.getBalancePaymentAmount(),PlatformCashAccountDetailTypeEnum.REFUNDS,info.getTitle()+"支付失败");
-			}
+    @Override
+    public BaseDAO<Integer, SporadicChargeInfo> getDAO() {
+        return sporadicChargeInfoDao;
+    }
 
-			sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.SMS_SPORADIC_PAYMENT_FAILED, map, null, 0,"",
-					studentPaymentOrder.getActualAmount(),info.getTitle());
-			sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.YIMEI, MessageTypeEnum.SMS_SPORADIC_PAYMENT_FAILED, yimei, null, 0, "",
-					studentPaymentOrder.getActualAmount(),info.getTitle());
-			return false;
-		}
-		return false;
-	}
+    @Override
+    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+    public Boolean renewForCallback(StudentPaymentOrder studentPaymentOrder) {
+        int updateCount = studentPaymentOrderDao.update(studentPaymentOrder);
+        if (updateCount <= 0) {
+            throw new BizException("订单更新失败");
+        }
+        Integer userId = studentPaymentOrder.getUserId();
+        SysUser sysUser = sysUserFeignService.queryUserById(userId);
+        SporadicChargeInfo info = sporadicChargeInfoDao.get(Integer.parseInt(studentPaymentOrder.getMusicGroupId()));
+        Map<Integer, String> map = new HashMap();
+        map.put(userId, sysUser.getPhone());
+        Map<Integer, String> yimei = new HashMap();
+        map.put(userId, userId.toString());
+        if (studentPaymentOrder.getStatus() == DealStatusEnum.SUCCESS) {
+            //活动,增加课程余额
+            if (info.getChargeType().equals("6")) {
+                sysUserCashAccountService.appendCourseBalance(userId, studentPaymentOrder.getActualAmount());
+            }
 
-	@Override
-	public PageInfo queryDetailPage(SporadicChargeInfoQueryInfo queryInfo) {
-		PageInfo<SporadicChargeInfo> pageInfo = queryPage(queryInfo);
-		List<SporadicChargeInfo> rows = pageInfo.getRows();
-		if(rows != null && rows.size() > 0){
-			Set<Integer> organIds = rows.stream().map(e -> e.getOrganId()).collect(Collectors.toSet());
-			List<Integer> userIds = rows.stream().map(e -> e.getUserId()).collect(Collectors.toList());
-			Set<Integer> operatorIds = rows.stream().map(e -> e.getOperatorId()).collect(Collectors.toSet());
-			Map<Integer,String> organNames = MapUtil.convertMybatisMap(organizationDao.findOrganNameMap(StringUtils.join(organIds,",")));
-			Map<Integer,String> operatorNames = MapUtil.convertMybatisMap(teacherDao.queryNameByIds(StringUtils.join(operatorIds,",")));
-			Map<Integer,String> userNames = MapUtil.convertMybatisMap(teacherDao.queryUsernameByIds(userIds));
-			rows.forEach(e->{
-				e.setOrganName(organNames.get(e.getOrganId()));
-				if(e.getUserId() != null){
-					e.setUserName(userNames.get(e.getUserId()));
-				}
-				e.setOperatorName(operatorNames.get(e.getOperatorId()));
-			});
-		}
-		return pageInfo;
-	}
+            //插入交易明细
+            BigDecimal amount = studentPaymentOrder.getActualAmount();
+            Date nowDate = new Date();
+            SysUserCashAccount cashAccount = sysUserCashAccountService.get(userId);
+            //充值
+            SysUserCashAccountDetail rechargeDetail = new SysUserCashAccountDetail();
+            rechargeDetail.setAmount(amount);
+            rechargeDetail.setBalance(cashAccount.getBalance().add(amount));
+            rechargeDetail.setComment("缴费前充值");
+            rechargeDetail.setCreateTime(nowDate);
+            rechargeDetail.setStatus(DealStatusEnum.SUCCESS);
+            rechargeDetail.setTransNo(studentPaymentOrder.getTransNo());
+            rechargeDetail.setType(PlatformCashAccountDetailTypeEnum.RECHARGE);
+            rechargeDetail.setUpdateTime(nowDate);
+            rechargeDetail.setUserId(userId);
+            rechargeDetail.setChannel(studentPaymentOrder.getPaymentChannel());
+            rechargeDetail.setComAmount(studentPaymentOrder.getComAmount());
+            rechargeDetail.setPerAmount(studentPaymentOrder.getPerAmount());
+            sysUserCashAccountDetailService.insert(rechargeDetail);
 
-	@Override
-	public SporadicChargeInfo getDetail(Integer id) {
-		SporadicChargeInfo sporadicChargeInfo = sporadicChargeInfoDao.get(id);
-		if(sporadicChargeInfo.getUserId() != null){
-			SysUser sysUser = sysUserFeignService.queryUserById(sporadicChargeInfo.getUserId());
-			sporadicChargeInfo.setUserName(sysUser.getUsername());
-		}
-		return sporadicChargeInfo;
-	}
+            //缴费
+            SysUserCashAccountDetail paymentDetail = new SysUserCashAccountDetail();
+            paymentDetail.setAmount(amount.negate());
+            paymentDetail.setBalance(cashAccount.getBalance());
+            paymentDetail.setComment(info.getTitle());
+            paymentDetail.setCreateTime(nowDate);
+            paymentDetail.setStatus(DealStatusEnum.SUCCESS);
+            paymentDetail.setTransNo(studentPaymentOrder.getTransNo());
+            paymentDetail.setType(PlatformCashAccountDetailTypeEnum.PAY_FEE);
+            paymentDetail.setUpdateTime(nowDate);
+            paymentDetail.setUserId(userId);
+            rechargeDetail.setChannel(studentPaymentOrder.getPaymentChannel());
+            if (studentPaymentOrder.getComAmount() != null) {
+                rechargeDetail.setComAmount(studentPaymentOrder.getComAmount().negate());
+                rechargeDetail.setPerAmount(studentPaymentOrder.getPerAmount().negate());
+            }
 
-	@Override
-	public SporadicChargeInfo findByOrganIdAndType(Integer organId, Integer type) {
-		return sporadicChargeInfoDao.findByOrganIdAndType(organId,type);
-	}
+            sysUserCashAccountDetailService.insert(paymentDetail);
+
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.SMS_SPORADIC_PAYMENT_SUCCESS, map, null, 0, "1",
+                    studentPaymentOrder.getActualAmount(), info.getTitle());
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.YIMEI, MessageTypeEnum.SMS_SPORADIC_PAYMENT_SUCCESS, yimei, null, 0, "1",
+                    studentPaymentOrder.getActualAmount(), info.getTitle());
+            return true;
+        }
+        if (studentPaymentOrder.getStatus() == DealStatusEnum.CLOSE || studentPaymentOrder.getStatus() == DealStatusEnum.FAILED) {
+            if (studentPaymentOrder.getBalancePaymentAmount() != null && studentPaymentOrder.getBalancePaymentAmount().compareTo(BigDecimal.ZERO) > 0) {
+                sysUserCashAccountService.updateBalance(studentPaymentOrder.getUserId(), studentPaymentOrder.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, info.getTitle() + "支付失败");
+            }
+
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.SMS_SPORADIC_PAYMENT_FAILED, map, null, 0, "",
+                    studentPaymentOrder.getActualAmount(), info.getTitle());
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.YIMEI, MessageTypeEnum.SMS_SPORADIC_PAYMENT_FAILED, yimei, null, 0, "",
+                    studentPaymentOrder.getActualAmount(), info.getTitle());
+            return false;
+        }
+        return false;
+    }
+
+    @Override
+    public PageInfo queryDetailPage(SporadicChargeInfoQueryInfo queryInfo) {
+        PageInfo<SporadicChargeInfo> pageInfo = queryPage(queryInfo);
+        List<SporadicChargeInfo> rows = pageInfo.getRows();
+        if (rows != null && rows.size() > 0) {
+            Set<Integer> organIds = rows.stream().map(e -> e.getOrganId()).collect(Collectors.toSet());
+            List<Integer> userIds = rows.stream().map(e -> e.getUserId()).collect(Collectors.toList());
+            Set<Integer> operatorIds = rows.stream().map(e -> e.getOperatorId()).collect(Collectors.toSet());
+            Map<Integer, String> organNames = MapUtil.convertMybatisMap(organizationDao.findOrganNameMap(StringUtils.join(organIds, ",")));
+            Map<Integer, String> operatorNames = MapUtil.convertMybatisMap(teacherDao.queryNameByIds(StringUtils.join(operatorIds, ",")));
+            Map<Integer, String> userNames = MapUtil.convertMybatisMap(teacherDao.queryUsernameByIds(userIds));
+            rows.forEach(e -> {
+                e.setOrganName(organNames.get(e.getOrganId()));
+                if (e.getUserId() != null) {
+                    e.setUserName(userNames.get(e.getUserId()));
+                }
+                e.setOperatorName(operatorNames.get(e.getOperatorId()));
+            });
+        }
+        return pageInfo;
+    }
+
+    @Override
+    public SporadicChargeInfo getDetail(Integer id) {
+        SporadicChargeInfo sporadicChargeInfo = sporadicChargeInfoDao.get(id);
+        if (sporadicChargeInfo.getUserId() != null) {
+            SysUser sysUser = sysUserFeignService.queryUserById(sporadicChargeInfo.getUserId());
+            sporadicChargeInfo.setUserName(sysUser.getUsername());
+        }
+        return sporadicChargeInfo;
+    }
+
+    @Override
+    public SporadicChargeInfo findByOrganIdAndType(Integer organId, Integer type) {
+        return sporadicChargeInfoDao.findByOrganIdAndType(organId, type);
+    }
 }

+ 7 - 16
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentAttendanceServiceImpl.java

@@ -181,6 +181,8 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
 
 		TeacherAttendance teacherAttendance=teacherAttendanceDao.findByTeacherAttendanceInfo(sysUser.getId().longValue(),courseSchedule.getId());
 
+		teacherAttendance.setSignInLongitudeLatitude(studentAttendanceInfos.getSignInLongitudeLatitude());
+
 		if(Objects.isNull(teacherAttendance)){
 			teacherAttendance= new TeacherAttendance();
 			teacherAttendance.setTeacherId(sysUser.getId());
@@ -189,25 +191,14 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
 			return;
 		}
 
-		YesOrNoEnum yesOrNoEnum = YesOrNoEnum.NO;
-		if(Objects.nonNull(courseSchedule.getSchoolId())){
-			yesOrNoEnum = courseScheduleService.enableOnlyNormalAttendance(courseSchedule.getStartClassTime(),
-					sysUser.getId().longValue(),
-					true,
-					courseSchedule.getSchoolId().intValue());
-		}
+		teacherAttendance.setSignInTime(date);
+		teacherAttendance.setSignInStatus(YesOrNoEnum.YES);
+		teacherAttendance.setSignOutTime(date);
+		teacherAttendance.setSignOutStatus(YesOrNoEnum.YES);
+		teacherAttendance.setCurrentClassTimes(classTimes + 1);
 		if(Objects.nonNull(teacherAttendance.getId())){
 			teacherAttendanceDao.update(teacherAttendance);
 		}else{
-			teacherAttendance.setSignInTime(date);
-			teacherAttendance.setSignInStatus(YesOrNoEnum.YES);
-			teacherAttendance.setSignOutTime(date);
-			teacherAttendance.setSignOutStatus(YesOrNoEnum.YES);
-			teacherAttendance.setCurrentClassTimes(classTimes + 1);
-			if(yesOrNoEnum != YesOrNoEnum.YES && courseSchedule.getStartClassTime().before(date)){
-				teacherAttendance.setSignInStatus(YesOrNoEnum.NO);
-				teacherAttendance.setSignOutStatus(YesOrNoEnum.NO);
-			}
 			teacherAttendanceDao.insert(teacherAttendance);
 		}
 	}

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

@@ -124,7 +124,7 @@ public class StudentRechargeServiceImpl extends BaseServiceImpl<String, StudentR
 				// 更新账户余额
 				// 新增交易流水
 				sysUserCashAccountDetailService.addCashAccountDetail(studentRecharge.getUserId(), studentRecharge.getAmount(), orderNo, transNo,
-						PlatformCashAccountDetailTypeEnum.RECHARGE, transType, status, "");
+						PlatformCashAccountDetailTypeEnum.RECHARGE, transType, status, "",null);
 			}
 
 		}

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

@@ -83,8 +83,8 @@ import com.ym.mec.util.http.HttpUtil;
 @Service
 public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, StudentRegistration> implements StudentRegistrationService {
 
-	private static final Logger LOGGER = LoggerFactory.getLogger(StudentRegistrationServiceImpl.class);
-	
+    private static final Logger LOGGER = LoggerFactory.getLogger(StudentRegistrationServiceImpl.class);
+
     @Resource
     private StudentRegistrationDao studentRegistrationDao;
     @Autowired
@@ -152,11 +152,11 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             params.put("offset", pageInfo.getOffset());
             dataList = studentRegistrationDao.queryStudentDetailPage(params);
             Set<Integer> subjectIds = dataList.stream().map(e -> e.getActualSubjectId()).collect(Collectors.toSet());
-            Map<Integer,String> subjectMap = MapUtil.convertIntegerMap(musicGroupSubjectPlanDao.findSubjectMap(subjectIds,queryInfo.getMusicGroupId()));
-            dataList.forEach(e->{
-            	if(StringUtils.isNotBlank(subjectMap.get(e.getActualSubjectId()))){
-            		e.setKitGroupPurchaseTypeEnum(KitGroupPurchaseTypeEnum.valueOf(subjectMap.get(e.getActualSubjectId())));
-            	}
+            Map<Integer, String> subjectMap = MapUtil.convertIntegerMap(musicGroupSubjectPlanDao.findSubjectMap(subjectIds, queryInfo.getMusicGroupId()));
+            dataList.forEach(e -> {
+                if (StringUtils.isNotBlank(subjectMap.get(e.getActualSubjectId()))) {
+                    e.setKitGroupPurchaseTypeEnum(KitGroupPurchaseTypeEnum.valueOf(subjectMap.get(e.getActualSubjectId())));
+                }
             });
         }
         if (count == 0) {
@@ -235,78 +235,78 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-	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("STUDENT");
-				sysUser.setGender(studentRegistration.getGender());
+    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("STUDENT");
+                sysUser.setGender(studentRegistration.getGender());
                 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().contains("STUDENT")) {
+                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().contains("STUDENT")) {
                     sysUser.setUserType(sysUser.getUserType() + ",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;
-	}
+                }
+                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) {
@@ -392,7 +392,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         //增加缴费学生数
         boolean updateFlag = false;
         for (int i = 0; i < 10; i++) {
-            if(amount.compareTo(BigDecimal.ZERO)==0){ //0元订单不增加报名人数
+            if (amount.compareTo(BigDecimal.ZERO) == 0) { //0元订单不增加报名人数
                 updateFlag = true;
                 break;
             }
@@ -421,8 +421,8 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         //关闭老订单
         oldOrder.setStatus(DealStatusEnum.CLOSE);
         studentPaymentOrderService.update(oldOrder);
-        if(oldOrder.getBalancePaymentAmount() != null && oldOrder.getBalancePaymentAmount().compareTo(BigDecimal.ZERO) >0 ){
-            sysUserCashAccountService.updateBalance(oldOrder.getUserId(), oldOrder.getBalancePaymentAmount(),PlatformCashAccountDetailTypeEnum.REFUNDS,"关闭订单");
+        if (oldOrder.getBalancePaymentAmount() != null && oldOrder.getBalancePaymentAmount().compareTo(BigDecimal.ZERO) > 0) {
+            sysUserCashAccountService.updateBalance(oldOrder.getUserId(), oldOrder.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "关闭订单");
         }
         Date date = new Date();
         StudentPaymentOrder studentPaymentOrder = new StudentPaymentOrder();
@@ -505,7 +505,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     @Transactional(rollbackFor = Exception.class)
     public StudentRegistration queryByUserIdAndMusicGroupId(Integer userId, String musicGroupId) {
         StudentRegistration registration = studentRegistrationDao.queryByUserIdAndMusicGroupId(userId, musicGroupId);
-        if(registration == null){
+        if (registration == null) {
             return null;
         }
         SysUserCashAccount account = sysUserCashAccountDao.getLocked(userId);
@@ -559,7 +559,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
                 sysUser.setImToken(register.getToken());
                 teacherDao.updateUser(sysUser);
             } else {
-                if(!sysUser.getUserType().contains("STUDENT")){
+                if (!sysUser.getUserType().contains("STUDENT")) {
                     sysUser.setUserType(sysUser.getUserType() + ",STUDENT");
                 }
                 sysUser.setPhone(studentRegistration.getParentsPhone());
@@ -591,11 +591,11 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
                 MusicGroupSubjectPlan musicOneSubjectClassPlan = musicGroupSubjectPlanDao.getMusicOneSubjectClassPlan(musicGroupId, studentRegistration.getActualSubjectId());
                 studentAddDto.setCourseFee(musicOneSubjectClassPlan.getFee());
             }
-            Date nextPaymentDate = musicGroupPaymentCalenderService.getNextPaymentDate(musicGroupId, null,null);
+            Date nextPaymentDate = musicGroupPaymentCalenderService.getNextPaymentDate(musicGroupId, null, null);
 
             StudentPaymentOrder waitPayOrder = studentPaymentOrderService.findMusicGroupApplyOrderByStatus(userId, studentRegistration.getMusicGroupId(), DealStatusEnum.WAIT_PAY);
 
-            if(waitPayOrder != null){
+            if (waitPayOrder != null) {
                 waitPayOrder.setStatus(DealStatusEnum.CLOSE);
                 studentPaymentOrderService.update(waitPayOrder);
             }
@@ -612,9 +612,9 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             List<StudentPaymentOrderDetail> studentPaymentOrderDetails = studentAddDto.getStudentPaymentOrderDetails();
             if (studentPaymentOrderDetails == null) {
                 studentPaymentOrderDetails = new ArrayList<>();
-            }else {
-                studentPaymentOrderDetails.forEach(e->{
-                    if(e.getPrice() == null){
+            } else {
+                studentPaymentOrderDetails.forEach(e -> {
+                    if (e.getPrice() == null) {
                         throw new BizException("请补全订单信息");
                     }
                 });
@@ -636,14 +636,14 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             }
             musicGroupStudentFeeDao.insert(new MusicGroupStudentFee(musicGroupId,
                     userId, studentRegistration.getSubjectId(), studentAddDto.getCourseFee(),
-                    nextPaymentDate, studentAddDto.getTemporaryCourseFee(),paymentStatus));
-            musicGroupStudentFeeDao.updateCalender(userId,musicGroupId);
+                    nextPaymentDate, studentAddDto.getTemporaryCourseFee(), paymentStatus));
+            musicGroupStudentFeeDao.updateCalender(userId, musicGroupId);
             studentPaymentOrder.setExpectAmount(reduce);
             //当前学员是否以前存在过当前乐团
-            if(phoneAndMusicGroupId != null){
+            if (phoneAndMusicGroupId != null) {
                 studentRegistration.setId(phoneAndMusicGroupId.getId());
                 studentRegistrationDao.update(studentRegistration);
-            }else {
+            } else {
                 studentRegistrationDao.insertBasic(studentRegistration);
             }
             studentRegistrationDao.updateCurrentClass(studentRegistration);
@@ -652,29 +652,29 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
                 e.setPaymentOrderId(studentPaymentOrder.getId());
             });
             studentPaymentOrderDetailService.batchAdd(studentPaymentOrderDetails);
-            if(musicGroup.getOwnershipType() != null && musicGroup.getOwnershipType() == CooperationOrgan.OwnershipType.OWN){
+            if (musicGroup.getOwnershipType() != null && musicGroup.getOwnershipType() == CooperationOrgan.OwnershipType.OWN) {
                 Map<Integer, String> receivers = new HashMap<>(1);
                 receivers.put(studentRegistration.getUserId(), studentRegistration.getParentsPhone());
                 if (reduce == BigDecimal.ZERO) {
                     sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.YIMEI, MessageTypeEnum.SMS_MUSIC_GROUP_ADD_STUDENT_FREE,
                             receivers, null, 0, null, studentRegistration.getParentsName(), studentRegistration.getName(), musicGroup.getName());
-                }else {
+                } else {
                     String studentApplyUrl = sysConfigDao.findConfigValue(SysConfigService.STUDENT_APPLY_URL) + musicGroupId;
-                    sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.YIMEI, MessageTypeEnum.SMS_MUSIC_GROUP_ADD_STUDENT,receivers, null, 0, null, studentRegistration.getParentsName(), studentRegistration.getName(), musicGroup.getName(),HttpUtil.getSortUrl(studentApplyUrl));
+                    sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.YIMEI, MessageTypeEnum.SMS_MUSIC_GROUP_ADD_STUDENT, receivers, null, 0, null, studentRegistration.getParentsName(), studentRegistration.getName(), musicGroup.getName(), HttpUtil.getSortUrl(studentApplyUrl));
                 }
             }
             return userId;
         }
     }
 
-    private List<CourseSchedule> addStudent(Integer classGroupId,Integer userId,Date date,List<CourseSchedule> courseScheduleList){
+    private List<CourseSchedule> addStudent(Integer classGroupId, Integer userId, Date date, List<CourseSchedule> courseScheduleList) {
         ClassGroup classGroup = classGroupDao.get(classGroupId);
-        ClassGroupStudentMapper classGroupStudentMapper = classGroupStudentMapperDao.findClassStudentMapperByUserIdAndClassGroupId(userId, classGroupId,null);
-        if(classGroupStudentMapper != null){
+        ClassGroupStudentMapper classGroupStudentMapper = classGroupStudentMapperDao.findClassStudentMapperByUserIdAndClassGroupId(userId, classGroupId, null);
+        if (classGroupStudentMapper != null) {
             classGroupStudentMapper.setStatus(ClassGroupStudentStatusEnum.NORMAL);
             classGroupStudentMapper.setClassGroupId(classGroup.getId());
             classGroupStudentMapperDao.update(classGroupStudentMapper);
-        }else {
+        } else {
             classGroupStudentMapper = new ClassGroupStudentMapper();
             classGroupStudentMapper.setMusicGroupId(classGroup.getMusicGroupId());
             classGroupStudentMapper.setClassGroupId(classGroupId);
@@ -690,7 +690,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 //        classGroupDao.updateClassStudentNum(classGroupId.longValue(), 1);
         //3、学生加入新班级未开始课程
         List<CourseSchedule> noStartCoursesByClassGroupId = courseScheduleService.findNoStartCoursesByClassGroupId(classGroupId);
-        if(noStartCoursesByClassGroupId != null && noStartCoursesByClassGroupId.size() > 0){
+        if (noStartCoursesByClassGroupId != null && noStartCoursesByClassGroupId.size() > 0) {
             courseScheduleList.addAll(noStartCoursesByClassGroupId);
         }
         return courseScheduleList;
@@ -702,22 +702,22 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         String musicGroupId = studentAddDto.getStudentRegistration().getMusicGroupId();
         Integer signClassId = studentAddDto.getSignClassId();
         List<CourseSchedule> courseScheduleList = new ArrayList<>();
-        if(signClassId != null){
-            addStudent(signClassId,userId,nowDate,courseScheduleList);
+        if (signClassId != null) {
+            addStudent(signClassId, userId, nowDate, courseScheduleList);
         }
         Integer mixClassId = studentAddDto.getMixClassId();
-        if(mixClassId != null){
-            addStudent(mixClassId,userId,nowDate,courseScheduleList);
+        if (mixClassId != null) {
+            addStudent(mixClassId, userId, nowDate, courseScheduleList);
         }
         Integer highClassId = studentAddDto.getHighClassId();
-        if(highClassId != null){
-            addStudent(highClassId,userId,nowDate,courseScheduleList);
+        if (highClassId != null) {
+            addStudent(highClassId, userId, nowDate, courseScheduleList);
         }
         String snapClassIds = studentAddDto.getSnapClassIds();
-        if(StringUtils.isNotEmpty(snapClassIds)){
+        if (StringUtils.isNotEmpty(snapClassIds)) {
             String[] split = snapClassIds.split(",");
-            for (int i = 0;i < split.length;i++){
-                addStudent(Integer.parseInt(split[i]),userId,nowDate,courseScheduleList);
+            for (int i = 0; i < split.length; i++) {
+                addStudent(Integer.parseInt(split[i]), userId, nowDate, courseScheduleList);
             }
         }
         List<CourseScheduleStudentPayment> courseScheduleStudentPayments = new ArrayList<>();
@@ -761,7 +761,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     public StudentPaymentOrder updateApplyOrder(StudentPaymentOrder studentPaymentOrder) throws Exception {
         //更新订单状态
         int updateCount = studentPaymentOrderService.update(studentPaymentOrder);
-        if(updateCount <=0 ){
+        if (updateCount <= 0) {
             throw new BizException("订单更新失败");
         }
         Date nowDate = new Date();
@@ -771,7 +771,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         MusicGroupSubjectPlan musicOneSubjectClassPlan = musicGroupSubjectPlanService.getMusicOneSubjectClassPlan(studentRegistration.getMusicGroupId(), studentRegistration.getActualSubjectId());
 
         if (studentPaymentOrder.getStatus().equals(DealStatusEnum.SUCCESS)) {
-            if(studentRegistration.getTemporaryCourseFee() != null){
+            if (studentRegistration.getTemporaryCourseFee() != null) {
                 studentRegistration.setTemporaryCourseFee(new BigDecimal(0));
             }
             studentRegistration.setPaymentStatus(PaymentStatusEnum.YES);
@@ -795,8 +795,8 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             }
 
             //插入交易明细
-            SysUserCashAccount cashAccount = sysUserCashAccountService.get(studentRegistration.getUserId());
             BigDecimal amount = studentPaymentOrder.getActualAmount();
+            SysUserCashAccount cashAccount = sysUserCashAccountService.get(studentRegistration.getUserId());
             //充值
             SysUserCashAccountDetail rechargeDetail = new SysUserCashAccountDetail();
             rechargeDetail.setAmount(amount);
@@ -825,7 +825,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             paymentDetail.setUpdateTime(nowDate);
             paymentDetail.setUserId(studentRegistration.getUserId());
             rechargeDetail.setChannel(studentPaymentOrder.getPaymentChannel());
-            if(studentPaymentOrder.getComAmount() != null){
+            if (studentPaymentOrder.getComAmount() != null) {
                 rechargeDetail.setComAmount(studentPaymentOrder.getComAmount().negate());
                 rechargeDetail.setPerAmount(studentPaymentOrder.getPerAmount().negate());
             }
@@ -834,7 +834,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 
             MusicGroup musicGroup = musicGroupDao.get(studentRegistration.getMusicGroupId());
             //三方乐团不发送缴费通知
-            if(musicGroup.getOwnershipType() != null && musicGroup.getOwnershipType() == CooperationOrgan.OwnershipType.OWN){
+            if (musicGroup.getOwnershipType() != null && musicGroup.getOwnershipType() == CooperationOrgan.OwnershipType.OWN) {
                 //发送缴费成功通知(短信 + push)
                 Map<Integer, String> map = new HashMap<>(1);
                 map.put(studentPaymentOrder.getUserId(), studentRegistration.getParentsPhone());
@@ -849,37 +849,37 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
                         studentRegistration.getParentsName(), studentPaymentOrder.getActualAmount());
             }
 //            //生成课程协议
-			try {
-				contractService.transferMusicGroupCoursesContract(studentRegistration.getUserId(), studentRegistration.getMusicGroupId());
-				// 商品协议(租赁时候有)
-				if (musicOneSubjectClassPlan.getKitGroupPurchaseType()!= null && musicOneSubjectClassPlan.getKitGroupPurchaseType().equals(KitGroupPurchaseTypeEnum.LEASE)) {
-					StudentPaymentOrderDetail applyOrderMusical = studentPaymentOrderDetailService.findApplyOrderMusical(studentPaymentOrder.getId());
-					if (applyOrderMusical != null && applyOrderMusical.getGoodsIdList() != null && !applyOrderMusical.getGoodsIdList().equals("")) {
-						contractService.transferGoodsContract(studentPaymentOrder.getUserId(), studentPaymentOrder.getMusicGroupId(),
-								applyOrderMusical.getGoodsIdList(), musicOneSubjectClassPlan.getKitGroupPurchaseType());
-					}
-				}
-			} catch (Exception e) {
-				LOGGER.error("协议生成失败",e);
-			}
+            try {
+                contractService.transferMusicGroupCoursesContract(studentRegistration.getUserId(), studentRegistration.getMusicGroupId());
+                // 商品协议(租赁时候有)
+                if (musicOneSubjectClassPlan.getKitGroupPurchaseType() != null && musicOneSubjectClassPlan.getKitGroupPurchaseType().equals(KitGroupPurchaseTypeEnum.LEASE)) {
+                    StudentPaymentOrderDetail applyOrderMusical = studentPaymentOrderDetailService.findApplyOrderMusical(studentPaymentOrder.getId());
+                    if (applyOrderMusical != null && applyOrderMusical.getGoodsIdList() != null && !applyOrderMusical.getGoodsIdList().equals("")) {
+                        contractService.transferGoodsContract(studentPaymentOrder.getUserId(), studentPaymentOrder.getMusicGroupId(),
+                                applyOrderMusical.getGoodsIdList(), musicOneSubjectClassPlan.getKitGroupPurchaseType());
+                    }
+                }
+            } catch (Exception e) {
+                LOGGER.error("协议生成失败", e);
+            }
         }
 
 
         //减去缴费人数
         if (studentPaymentOrder.getStatus().equals(DealStatusEnum.FAILED)) {
-            if(studentPaymentOrder.getActualAmount().compareTo(BigDecimal.ZERO) > 0) {
+            if (studentPaymentOrder.getActualAmount().compareTo(BigDecimal.ZERO) > 0) {
                 musicOneSubjectClassPlan.setPaidStudentNum(musicOneSubjectClassPlan.getPaidStudentNum() - 1);
                 updateCount = musicGroupSubjectPlanService.update(musicOneSubjectClassPlan);
                 if (updateCount <= 0) {
                     throw new BizException("减去缴费人数失败");
                 }
             }
-            if(studentPaymentOrder.getBalancePaymentAmount() != null && studentPaymentOrder.getBalancePaymentAmount().compareTo(BigDecimal.ZERO) >0 ){
-                sysUserCashAccountService.updateBalance(studentPaymentOrder.getUserId(), studentPaymentOrder.getBalancePaymentAmount(),PlatformCashAccountDetailTypeEnum.REFUNDS,"报名缴费失败");
+            if (studentPaymentOrder.getBalancePaymentAmount() != null && studentPaymentOrder.getBalancePaymentAmount().compareTo(BigDecimal.ZERO) > 0) {
+                sysUserCashAccountService.updateBalance(studentPaymentOrder.getUserId(), studentPaymentOrder.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "报名缴费失败");
             }
             MusicGroup musicGroup = musicGroupDao.get(studentRegistration.getMusicGroupId());
             //三方乐团不发送缴费通知
-            if(musicGroup.getOwnershipType() != null && musicGroup.getOwnershipType() == CooperationOrgan.OwnershipType.OWN){
+            if (musicGroup.getOwnershipType() != null && musicGroup.getOwnershipType() == CooperationOrgan.OwnershipType.OWN) {
                 String studentApplyUrl = sysConfigDao.findConfigValue(SysConfigService.STUDENT_APPLY_URL) + studentRegistration.getMusicGroupId();
                 Map<Integer, String> map = new HashMap<>(1);
                 map.put(studentPaymentOrder.getUserId(), studentRegistration.getParentsPhone());
@@ -947,21 +947,21 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 
     @Override
     public int openPayment(String ids) throws IOException {
-        if(StringUtils.isNotEmpty(ids)){
+        if (StringUtils.isNotEmpty(ids)) {
             //发送短信通知
-            List<Long> list = JSONObject.parseArray(JSONObject.toJSONString(Arrays.asList(ids.split(","))),Long.class);
+            List<Long> list = JSONObject.parseArray(JSONObject.toJSONString(Arrays.asList(ids.split(","))), Long.class);
             MusicGroup musicGroup = musicGroupDao.findMusicGroup(list);
             //三方乐团不发送缴费通知
-            if(musicGroup.getOwnershipType() != null && musicGroup.getOwnershipType() == CooperationOrgan.OwnershipType.OWN){
+            if (musicGroup.getOwnershipType() != null && musicGroup.getOwnershipType() == CooperationOrgan.OwnershipType.OWN) {
                 List<StudentRegistration> registrations = studentRegistrationDao.findStudentListByIdList(list);
                 String configValue = sysConfigDao.findConfigValue(SysConfigService.STUDENT_APPLY_URL);
-                HashMap<Integer,String> receivers = new HashMap<>(registrations.size());
-                registrations.forEach(e->{
-                    receivers.put(e.getUserId(),e.getParentsPhone());
+                HashMap<Integer, String> receivers = new HashMap<>(registrations.size());
+                registrations.forEach(e -> {
+                    receivers.put(e.getUserId(), e.getParentsPhone());
                 });
                 sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.YIMEI,
-                        MessageTypeEnum.SMS_STUDENT_OPEN_PAYMENT,receivers,null,0,null,
-                        musicGroup.getName(),HttpUtil.getSortUrl(configValue + musicGroup.getId()));
+                        MessageTypeEnum.SMS_STUDENT_OPEN_PAYMENT, receivers, null, 0, null,
+                        musicGroup.getName(), HttpUtil.getSortUrl(configValue + musicGroup.getId()));
             }
         }
         return studentRegistrationDao.batchOpenPay(ids, PaymentStatusEnum.OPEN);

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

@@ -46,7 +46,7 @@ public class SysUserCashAccountDetailServiceImpl extends BaseServiceImpl<Long, S
 	@Override
 	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
 	public boolean addCashAccountDetail(Integer userId, BigDecimal amount, String origOrderId, String transNo, PlatformCashAccountDetailTypeEnum type,
-			TransTypeEnum transType, DealStatusEnum status, String comment) {
+			TransTypeEnum transType, DealStatusEnum status, String comment,String description) {
 
 		SysUserCashAccountDetail sysUserCashAccountDetail = new SysUserCashAccountDetail();
 		sysUserCashAccountDetail.setUserId(userId);
@@ -55,6 +55,7 @@ public class SysUserCashAccountDetailServiceImpl extends BaseServiceImpl<Long, S
 		sysUserCashAccountDetail.setAmount(amount);
 		sysUserCashAccountDetail.setAttribute(origOrderId);
 		sysUserCashAccountDetail.setComment(comment);
+		sysUserCashAccountDetail.setDescription(description);
 		sysUserCashAccountDetail.setTransNo(transNo);
 		sysUserCashAccountDetail.setTransType(transType);
 		sysUserCashAccountDetail.setCreateTime(new Date());

+ 5 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java

@@ -252,8 +252,6 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 			teacherAttendance.setClassGroupId(courseScheduleId);
 			teacherAttendance.setTeacherId(userId);
 			teacherAttendanceDao.insert(teacherAttendance);
-		}else if(teacherAttendance.getSignInTime() != null && teacherAttendance.getSignOutTime() != null){
-			return;
 		}
 		teacherAttendance.setGroupType(courseSchedule.getGroupType());
 		teacherAttendance.setTeacherId(userId);
@@ -284,7 +282,7 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 			boolean isSign = false;
 			if(yesOrNoEnum == YesOrNoEnum.YES){
 				isSign = true;
-			}else if(DateUtil.minutesBetween(date,classStartDateTime) > 0){
+			}else if(DateUtil.minutesBetween(date,classStartDateTime) >= 0){
 				//正常签到范围(开始之前)
 				isSign = true;
 			}else if(DateUtil.minutesBetween(classStartDateTime,date) > 0){
@@ -306,11 +304,12 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 			}
 		}
 		//签退
-		if(teacherAttendance.getSignOutTime() == null && SignStatusEnum.SIGN_OUT.equals(signStatus)){
+		if(SignStatusEnum.SIGN_OUT.equals(signStatus)){
 			//正常签退范围(课程结束前10分钟,1小时内)
-			if(DateUtil.minutesBetween(classEndDateCut10Minutes,date) > 0 && DateUtil.minutesBetween(date,classEndDateAdd60Minutes) > 0){
+			if(DateUtil.minutesBetween(classEndDateCut10Minutes,date) >= 0){
 				teacherAttendance.setSignOutStatus(YesOrNoEnum.YES);
-			}else if(DateUtil.minutesBetween(classEndDateAdd60Minutes,date) > 0){
+				//异常签退时间段,并且没有签退状态
+			}else if(DateUtil.minutesBetween(classStartDateTime,date) > 0 && DateUtil.minutesBetween(date,classEndDateCut10Minutes) > 0){
 				teacherAttendance.setSignOutStatus(YesOrNoEnum.NO);
 			}else {
 				return;

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

@@ -327,8 +327,8 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 	}
 
 	@Override
-	public List<Teacher> findTeacherByOrganId(String organId,String subjectIds) {
-		return teacherDao.findTeacherByOrganId(organId,subjectIds);
+	public List<Teacher> findTeacherByOrganId(String organId,String subjectIds,String jobNature) {
+		return teacherDao.findTeacherByOrganId(organId,subjectIds,jobNature);
 	}
 
 	@Override

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

@@ -1383,6 +1383,10 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
         BigDecimal surplusCourseFee = courseScheduleStudentPaymentDao.countSurplusCourseFee(classGroup.getId(), studentId);
 
+		if(Objects.isNull(surplusCourseFee)){
+			surplusCourseFee=new BigDecimal(0);
+		}
+
 		Map<String, Object> pauseInfos = new HashMap<>();
 		//学生剩余课时
         List<StudentCourseInfoDto> userSurplusCourseInfoByGroup = courseScheduleDao.findUserSurplusCourseInfoByGroup(GroupType.VIP, vipGroupId.toString(), studentId);
@@ -1417,11 +1421,12 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		}
 
 		int studentCourseNum = classGroupStudentMapperDao.countClassGroupNormalStudentNum(classGroup.getId());
-		if(studentCourseNum<=0){
+		if(studentCourseNum<=0&&classGroup.getStudentNum().equals(classGroup.getExpectStudentNum())){
 			vipGroup.setStatus(VipGroupStatusEnum.PAUSE);
 			if(!CollectionUtils.isEmpty(courseScheduleIds)){
 				courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(courseScheduleIds);
 				courseScheduleDao.batchDeleteCourseSchedules(courseScheduleIds);
+				teacherAttendanceDao.batchDeleteByCourseSchedules(courseScheduleIds);
 			}
 			vipGroupDao.update(vipGroup);
 		}
@@ -1435,6 +1440,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		if(Objects.isNull(studentRecoverInfo.getVipGroupId())||Objects.isNull(studentRecoverInfo.getUserId())){
 			throw new BizException("请指定小课与学生");
 		}
+		Date now=new Date();
 		VipGroup vipGroup=vipGroupDao.get(studentRecoverInfo.getVipGroupId().longValue());
 		if(Objects.isNull(vipGroup)){
 			throw new BizException("指定的课程不存在");
@@ -1492,6 +1498,9 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			studentRecoverInfo.setCourseCount(teachModeSequence1.length);
 			List<CourseSchedule> newCourseSchedules = courseScheduleService.createCourses(studentRecoverInfo);
 			for(int i=0;i<newCourseSchedules.size();i++){
+				if(newCourseSchedules.get(i).getStartClassTime().before(now)){
+					throw new BizException("排课起始时间不得小于当前时间");
+				}
 				newCourseSchedules.get(i).setGroupType(GroupType.VIP);
 				newCourseSchedules.get(i).setMusicGroupId(vipGroup.getId().toString());
 				newCourseSchedules.get(i).setClassGroupId(classGroup.getId());
@@ -1519,8 +1528,6 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
 		BigDecimal surplusCourseFee = new BigDecimal(0);
 
-		Date now=new Date();
-
 		List<CourseSchedule> surplusCourseWithGroup = courseScheduleDao.findSurplusCourseWithGroup(GroupType.VIP, studentRecoverInfo.getVipGroupId().toString());
 		surplusCourseWithGroup.sort(Comparator.comparing(CourseSchedule::getStartClassTime));
 
@@ -1918,7 +1925,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			String currentMonth = DateUtil.format(new Date(),DateUtil.ISO_YEAR_MONTH_FORMAT);
 			rewardsRulesDtos.forEach(e->{
 				//当前用户是否已经发放过上月奖励
-				Integer num = sysUserCashAccountDetailDao.countByTypeAndTime(currentMonth,e.getTeacherId());
+				Integer num = sysUserCashAccountDetailDao.countByTypeAndTime(currentMonth,e.getTeacherId(),e.getActiveId());
 				if(num == null || num == 0) {
 					CourseScheduleRewardsRules rewardsRule = integerListMap.get(e.getActiveId()).get(0);
 					List<RewardsRulesJsonDto> rulesJsonDtos = JSONObject.parseArray(rewardsRule.getRewardsRulesJson(), RewardsRulesJsonDto.class);
@@ -1956,7 +1963,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 					}
 					if (money.doubleValue() > 0) {
 						sysUserCashAccountDetailService.addCashAccountDetail(e.getTeacherId(), money, "", SysUserCashAccountDetailService.ORGAN,
-								PlatformCashAccountDetailTypeEnum.REWARDS, null, DealStatusEnum.SUCCESS, "分部奖励");
+								PlatformCashAccountDetailTypeEnum.REWARDS, null, DealStatusEnum.SUCCESS, "分部奖励", e.getActiveId().toString());
 					}
 				}
 			});

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

@@ -302,7 +302,7 @@
     <select id="findMusicGroupClassGroupByType" resultMap="ClassGroupStudentMapper">
         SELECT  cgsm.* FROM  class_group_student_mapper cgsm
         LEFT JOIN class_group cg on cgsm.class_group_id_ = cg.id_
-        WHERE cgsm.music_group_id_ = #{musicGroupId} AND cg.group_type_ ='MUSIC' AND cg.type_=#{classGroupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler} AND cg.del_flag_='0' AND cgsm.status_='NORMAL'
+        WHERE cgsm.music_group_id_ = #{musicGroupId} AND cg.group_type_ ='MUSIC' AND cg.type_=#{classGroupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler} AND cg.del_flag_='0' AND FIND_IN_SET(cgsm.status_,'NORMAL,LEAVE')
     </select>
     <select id="queryStudentIdMap" resultType="java.util.Map">
         SELECT cgsm.user_id_ 'key',cgsm.user_id_ 'value' FROM class_group_student_mapper cgsm

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

@@ -343,8 +343,10 @@
             LEFT JOIN sys_user su ON cs.actual_teacher_id_=su.id_
             LEFT JOIN teacher_attendance ta ON cs.id_=ta.course_schedule_id_
         WHERE cs.actual_teacher_id_= #{teacherId}
-            AND (cs.end_class_time_ BETWEEN #{startTime} AND #{endTime})
-        ORDER BY cs.id_ DESC LIMIT 1
+            AND (CONCAT(cs.class_date_,' ',cs.end_class_time_) BETWEEN #{startTime} AND #{endTime})
+            AND cs.schoole_id_=#{schoolId}
+            AND ta.sign_in_time_ IS NOT NULL
+        ORDER BY cs.id_
     </select>
 
     <resultMap id="studentAttendanceViewUtilEntity" type="com.ym.mec.biz.dal.dto.StudentAttendanceViewDto">
@@ -448,15 +450,19 @@
             ta.sign_in_status_ attendance_status_,
             s.name_ school_name_
         FROM
-            music_group mg
-            LEFT JOIN class_group cg ON mg.id_ = cg.music_group_id_
-            LEFT JOIN course_schedule cs ON cg.id_ = cs.class_group_id_
+            course_schedule cs
+            LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
             LEFT JOIN sys_user su ON cs.teacher_id_=su.id_
             LEFT JOIN teacher_attendance ta ON cs.id_=ta.class_group_id_ AND ta.teacher_id_=cs.teacher_id_
             LEFT JOIN school s ON mg.school_id_=s.id_
         WHERE
         (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
-        AND FIND_IN_SET(mg.organ_id_,#{organIdList})
+        <if test="groups != null and organIdList!=null">
+            AND cs.music_group_id_ IN
+            <foreach collection="groups" item="group" open="(" close=")" separator=",">
+                #{group.id}
+            </foreach>
+        </if>
         AND cs.id_ IS NOT NULL
         <if test="type!=null">
             AND cg.group_type_ = #{type}
@@ -467,18 +473,22 @@
 
     <select id="countCourseSchedulesWithDate" resultType="int">
         SELECT
-        count(*)
+          count(*)
         FROM
-        music_group mg
-        LEFT JOIN class_group cg ON mg.id_ = cg.music_group_id_
-        LEFT JOIN course_schedule cs ON cg.id_ = cs.class_group_id_
+        course_schedule cs
+        LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
         WHERE
         (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
-        AND FIND_IN_SET(mg.organ_id_,#{organIdList})
         AND cs.id_ IS NOT NULL
         <if test="type!=null">
             AND cg.group_type_ = #{type}
         </if>
+        <if test="groups != null and organIdList!=null">
+            AND cs.music_group_id_ IN
+            <foreach collection="groups" item="group" open="(" close=")" separator=",">
+                #{group.id}
+            </foreach>
+        </if>
         AND cs.class_date_ = DATE_FORMAT(#{date},'%Y-%m-%d')
     </select>
 

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

@@ -148,10 +148,14 @@
     <select id="queryVipGroupTeacherClassTimesByMonth" resultMap="TaskRewardsRulesDtoMap">
 		SELECT COUNT(cs.id_) times_,cs.actual_teacher_id_,csrr.id_ active_id_ FROM course_schedule_rewards_rules csrr
 		LEFT JOIN vip_group vg ON FIND_IN_SET(vg.vip_group_category_id_,csrr.vip_group_category_id_list_)
-		LEFT JOIN course_schedule cs ON vg.id_ = cs.music_group_id_ AND FIND_IN_SET(cs.actual_teacher_id_,csrr.teacher_id_)
-		LEFT JOIN course_schedule_teacher_salary csts ON csts.course_schedule_id_ = cs.id_ AND csts.user_id_ = cs.actual_teacher_id_
+		LEFT JOIN course_schedule cs ON vg.id_ = cs.music_group_id_
+		LEFT JOIN class_group cg ON cg.id_ = cs.class_group_id_
+		LEFT JOIN course_schedule_teacher_salary csts ON csts.course_schedule_id_ = cs.id_
 		WHERE cs.group_type_ = 'VIP' AND csts.settlement_time_ IS NOT NULL
 		AND cs.class_date_ &gt;= #{firstDayOfMonth} AND cs.class_date_ &lt;= #{lastDayOfMonth}
+		AND FIND_IN_SET(cs.actual_teacher_id_,csrr.teacher_id_)
+		AND FIND_IN_SET(cg.subject_id_list_,csrr.subject_id_)
+		AND csts.user_id_ = cs.actual_teacher_id_
 		GROUP BY cs.actual_teacher_id_,csrr.id_
 	</select>
 	<select id="findByIds" resultMap="CourseScheduleRewardsRules">

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

@@ -226,6 +226,9 @@
 		GROUP BY
 			course_schedule_id_
 	</select>
+    <select id="checkStudentHaveCourse" resultType="int">
+		SELECT COUNT(id_) FROM course_schedule_student_payment WHERE course_schedule_id_=#{courseScheduleId} AND user_id_=#{userId}
+	</select>
 
     <delete id="deleteStudentCourseSchedule">
 		DELETE FROM course_schedule_student_payment WHERE user_id_ = #{userId} AND course_schedule_id_ IN

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

@@ -236,7 +236,7 @@
 	<select id="findByCourseScheduleIdsAndTeacherRole" resultMap="CourseScheduleTeacherSalary">
 		SELECT
 			csts.*,
-			su.username_
+			su.real_name_ username_
 		FROM
 			course_schedule_teacher_salary csts
 			LEFT JOIN sys_user su ON csts.user_id_=su.id_

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

@@ -384,7 +384,7 @@
 	<select id="findUserMusicGroup" resultMap="MusicGroup">
 		SELECT mg.* FROM music_group mg
 		LEFT JOIN student_registration sr on sr.music_group_id_ = mg.id_
-		WHERE sr.user_id_ = #{UserId} ORDER BY sr.id_ ASC LIMIT 1
+		WHERE sr.user_id_ = #{userId} ORDER BY sr.id_ ASC LIMIT 1
 	</select>
 
     <select id="findMusicGroup" resultMap="MusicGroup">
@@ -403,4 +403,11 @@
 		</foreach>
 		AND name_ IS NOT NULL
 	</select>
+
+	<select id="findUserSchool" resultMap="com.ym.mec.biz.dal.dao.SchoolDao.School">
+		SELECT s.* FROM music_group mg
+		LEFT JOIN student_registration sr on sr.music_group_id_ = mg.id_
+		LEFT JOIN school s on mg.school_id_ = s.id_
+		WHERE sr.user_id_ = #{userId} ORDER BY sr.id_ DESC LIMIT 1
+	</select>
 </mapper>

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

@@ -373,6 +373,7 @@
             <foreach collection="courseScheduleIds" item="courseScheduleId" open="(" close=")" separator=",">
                 #{courseScheduleId}
             </foreach>
+            AND update_time_!='1970-01-01 00:00:00'
         GROUP BY
             course_schedule_id_
     </select>

+ 5 - 7
mec-biz/src/main/resources/config/mybatis/SysUserCashAccountDetailMapper.xml

@@ -55,8 +55,8 @@
             <if test="balance!=null">balance_,</if>
             <if test="description!=null">description_,</if>
             <if test="comment!=null">comment_,</if>
-            <if test="createTime!=null">create_time_,</if>
-            <if test="updateTime!=null">update_time_,</if>
+            create_time_,
+            update_time_,
             <if test="attribute!=null">attribute1_,</if>
             <if test="channel!=null">channel_,</if>
             <if test="platformAccountNo!=null">platform_account_no_,</if>
@@ -75,8 +75,8 @@
             <if test="balance!=null">#{balance},</if>
             <if test="description!=null">#{description},</if>
             <if test="comment!=null">#{comment},</if>
-            <if test="createTime!=null">NOW(),</if>
-            <if test="updateTime!=null">NOW(),</if>
+            NOW(),
+            NOW(),
             <if test="attribute!=null">#{attribute},</if>
             <if test="channel!=null">#{channel},</if>
             <if test="platformAccountNo!=null">#{platformAccountNo},</if>
@@ -109,9 +109,7 @@
             <if test="comment != null">
                 comment_ = #{comment},
             </if>
-            <if test="updateTime != null">
                 update_time_ = NOW(),
-            </if>
             <if test="amount != null">
                 amount_ = #{amount},
             </if>
@@ -204,6 +202,6 @@
     <select id="countByTypeAndTime" resultType="java.lang.Integer">
       SELECT COUNT(s.id_) FROM sys_user_cash_account_detail s
       WHERE s.type_ = 'REWARDS' AND DATE_FORMAT(s.create_time_,'%Y-%m') = #{currentMonth}
-      AND s.user_id_ = #{teacherId}
+      AND s.user_id_ = #{teacherId} AND s.description_ = #{activeId}
     </select>
 </mapper>

+ 7 - 2
mec-biz/src/main/resources/config/mybatis/TeacherAttendanceMapper.xml

@@ -340,8 +340,13 @@
     	update teacher_attendance set sign_out_status_ = 1,sign_out_time_= now()
     	where FIND_IN_SET(course_schedule_id_,#{courseScheduleIdList}) and sign_in_status_ = 1
     </update>
-	
-	<delete id="deleteByMusicGroupId" parameterType="map" >
+    <update id="cleanCourseTeacherSignInfo">
+        update teacher_attendance
+        set sign_in_time_=null,sign_in_status_=null,sign_out_status_ = null,sign_out_time_= null
+    	where course_schedule_id_=#{courseScheduleId}
+    </update>
+
+    <delete id="deleteByMusicGroupId" parameterType="map" >
 		DELETE ta FROM teacher_attendance ta left join course_schedule cs on ta.course_schedule_id_ = cs.id_ WHERE ta.music_group_id_=#{musicGroupId} AND ta.group_type_=#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler} and cs.status_ = 'NOT_START'
 	</delete>
 </mapper>

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

@@ -596,6 +596,9 @@
         <if test="subjectIds != null">
             AND INTE_ARRAY(t.subject_id_,#{subjectIds})
         </if>
+        <if test="jobNature != null">
+            AND t.job_nature_ = #{jobNature}
+        </if>
     </select>
     <select id="queryUsernameByIds" resultType="java.util.Map" parameterType="list">
         select id_ `key`,username_ `value` FROM sys_user s

+ 1 - 1
mec-common/common-core/src/main/java/com/ym/mec/common/controller/BaseController.java

@@ -69,7 +69,7 @@ public class BaseController {
 		if (e == null) {
 			e = ex;
 		}
-		logger.error("System Error", e);
+		logger.error("System Error", ex);
 //		return failed(e.getMessage());
 		if(e instanceof BizException || e instanceof ThirdpartyException){
 			return failed(e.getMessage());

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

@@ -6,10 +6,7 @@ import com.ym.mec.biz.dal.dao.MusicGroupStudentFeeDao;
 import com.ym.mec.biz.dal.dto.RegisterPayDto;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus;
-import com.ym.mec.biz.dal.enums.DealStatusEnum;
-import com.ym.mec.biz.dal.enums.GroupType;
-import com.ym.mec.biz.dal.enums.OrderTypeEnum;
-import com.ym.mec.biz.dal.enums.PaymentStatusEnum;
+import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
@@ -129,6 +126,10 @@ public class MusicGroupController extends BaseController {
         if (!studentRegistration.getPaymentStatus().equals(PaymentStatusEnum.OPEN)) {
             return failed("乐团还未开启缴费,请等待通知");
         }
+        if(studentRegistration.getTemporaryCourseFee() == null &&
+                (!musicGroup.getStatus().equals(MusicGroupStatusEnum.APPLY) && !musicGroup.getStatus().equals(MusicGroupStatusEnum.PAY))){
+            return failed("乐团在"+musicGroup.getStatus().getMsg()+",不能缴费");
+        }
         studentRegistration.setOwnershipType(musicGroup.getOwnershipType());
 
         return succeed(studentRegistration);

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

@@ -67,11 +67,13 @@ public class TeacherCourseScheduleController extends BaseController {
             return failed(HttpStatus.FORBIDDEN, "请登录");
         }
         SysConfig sysConfig = sysConfigService.findByParamName(SysConfigService.ENABLE_STUDENT_ATTENDANCE_TIME_RANGE);
+        SysConfig sysConfigVip = sysConfigService.findByParamName(SysConfigService.ENABLE_STUDENT_ATTENDANCE_TIME_RANGE_VIP);
         List<CourseScheduleDto> teacherCourseSchedulesWithDate = scheduleService.getTeacherCourseSchedulesWithDate(user.getId(),date,type);
         Map<String,Object> result = new HashMap<>();
         result.put("rows",teacherCourseSchedulesWithDate);
         result.put("appealDaysRange",1);
         result.put("enableStudentAttendanceTimeRange",sysConfig.getParanValue(Integer.class));
+        result.put("enableStudentAttendanceTimeRangeVip",sysConfigVip.getParanValue(Integer.class));
         return succeed(result);
     }
 

+ 0 - 1
mec-web/src/main/java/com/ym/mec/web/controller/EmployeeController.java

@@ -13,7 +13,6 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.MediaType;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 import java.util.Arrays;

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

@@ -3,6 +3,7 @@ package com.ym.mec.web.controller;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.EmployeeDao;
+import com.ym.mec.biz.dal.dao.MusicGroupDao;
 import com.ym.mec.biz.dal.dao.StudentRegistrationDao;
 import com.ym.mec.biz.dal.dao.VipGroupDao;
 import com.ym.mec.biz.dal.dto.*;
@@ -62,6 +63,8 @@ public class ExportController extends BaseController {
     private StudentRegistrationDao studentRegistrationDao;
     @Autowired
     private VipGroupDao vipGroupDao;
+    @Autowired
+    private MusicGroupDao musicGroupDao;
 
     @ApiOperation(value = "导出学员是否有课")
     @PostMapping("export/studentHasCourse")
@@ -235,7 +238,6 @@ public class ExportController extends BaseController {
                 row.setSporadicAmount(row.getActualAmount());
                 row.setMusicalFee(BigDecimal.ZERO);
                 row.setTeachingFee(BigDecimal.ZERO);
-                row.setTeachingFee(BigDecimal.ZERO);
                 if (row.getChargeType() != null) {
                     if (row.getChargeType().equals(1)) {
                         row.setSporadicType("考级");
@@ -251,6 +253,10 @@ public class ExportController extends BaseController {
                         row.setSporadicType("福袋活动");
                     }
                 }
+                School userSchool = musicGroupDao.findUserSchool(row.getUserId());
+                if(userSchool!= null){
+                    row.setSchoolName(userSchool.getName());
+                }
             }
             String paymentChannel = "";
             if (row.getPaymentChannel() == null) {

+ 3 - 1
mec-web/src/main/java/com/ym/mec/web/controller/SysMessageController.java

@@ -43,7 +43,9 @@ public class SysMessageController extends BaseController {
 		if (sysUser == null) {
 			return failed(HttpStatus.FORBIDDEN, "请登录");
 		}
-		queryInfo.setUserId(sysUser.getId());
+		if(!sysUser.getIsSuperAdmin()){
+			queryInfo.setUserId(sysUser.getId());
+		}
 		queryInfo.setType(MessageSendMode.SEO.getCode());
 		PageInfo<SysMessage> pageInfo = sysMessageService.queryPage(queryInfo);
 		return succeed(pageInfo);

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

@@ -119,7 +119,7 @@ public class TeacherController extends BaseController {
     @ApiOperation(value = "获取分部教师")
     @GetMapping("/findTeacherByOrganId")
     @PreAuthorize("@pcs.hasPermissions('teacher/findTeacherByOrganId')")
-    public HttpResponseResult findTeacherByOrganId(String organId,String subjectIds) {
+    public HttpResponseResult findTeacherByOrganId(String organId,String subjectIds,String jobNature) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null) {
             return failed("用户信息获取失败");
@@ -137,7 +137,7 @@ public class TeacherController extends BaseController {
                 }
             }
         }
-        return succeed(teacherService.findTeacherByOrganId(organId,subjectIds));
+        return succeed(teacherService.findTeacherByOrganId(organId,subjectIds,jobNature));
     }
 
     @ApiOperation(value = "获取乐团所有老师")