Forráskód Böngészése

增加分润逻辑

周箭河 5 éve
szülő
commit
20bc39dc37
26 módosított fájl, 351 hozzáadás és 80 törlés
  1. 1 1
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/AuthServerApplication.java
  2. 15 8
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/SysUserServiceImpl.java
  3. 14 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupStudentMapperDao.java
  4. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupDao.java
  5. 9 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/VipGroupDao.java
  6. 1 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java
  7. 6 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/VipGroupStatusEnum.java
  8. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentRegistrationService.java
  9. 1 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  10. 11 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  11. 96 18
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  12. 26 25
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java
  13. 35 6
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
  14. 2 2
      mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml
  15. 8 0
      mec-biz/src/main/resources/config/mybatis/ClassGroupStudentMapperMapper.xml
  16. 1 1
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  17. 10 0
      mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml
  18. 4 1
      mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml
  19. 5 2
      mec-client-api/src/main/java/com/ym/mec/task/TaskRemoteService.java
  20. 5 0
      mec-client-api/src/main/java/com/ym/mec/task/fallback/TaskRemoteServiceFallback.java
  21. 15 0
      mec-client-api/src/main/java/com/ym/mec/user/UserFeignService.java
  22. 13 0
      mec-client-api/src/main/java/com/ym/mec/user/fallback/UserFeignServiceFallback.java
  23. 19 0
      mec-task/src/main/java/com/ym/mec/task/jobs/MusicGroupTeacherSalarySettlementTaskTask.java
  24. 31 0
      mec-web/src/main/java/com/ym/mec/web/controller/APIController.java
  25. 2 1
      mec-web/src/main/java/com/ym/mec/web/controller/StudentRegistrationController.java
  26. 12 6
      mec-web/src/main/java/com/ym/mec/web/controller/TaskController.java

+ 1 - 1
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/AuthServerApplication.java

@@ -16,7 +16,7 @@ import com.spring4all.swagger.EnableSwagger2Doc;
 
 @SpringBootApplication
 @EnableDiscoveryClient
-@EnableFeignClients({"com.ym.mec.im"})
+@EnableFeignClients({"com.ym.mec"})
 @MapperScan("com.ym.mec.auth.dal.dao")
 @ComponentScan(basePackages="com.ym.mec")
 @Configuration

+ 15 - 8
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/SysUserServiceImpl.java

@@ -1,5 +1,14 @@
 package com.ym.mec.auth.service.impl;
 
+import java.util.Date;
+import java.util.List;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.security.core.userdetails.UsernameNotFoundException;
+import org.springframework.stereotype.Service;
+
 import com.ym.mec.auth.api.dto.SysUserInfo;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.api.enums.SysUserType;
@@ -14,14 +23,7 @@ import com.ym.mec.common.entity.ImUserModel;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.im.ImFeignService;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.security.core.userdetails.UsernameNotFoundException;
-import org.springframework.stereotype.Service;
-
-import java.util.Date;
-import java.util.List;
+import com.ym.mec.user.UserFeignService;
 
 @Service
 public class SysUserServiceImpl extends BaseServiceImpl<Integer, SysUser> implements SysUserService {
@@ -37,6 +39,9 @@ public class SysUserServiceImpl extends BaseServiceImpl<Integer, SysUser> implem
 
 	@Autowired
 	private ImFeignService imFeignService;
+	
+	@Autowired
+	private UserFeignService userFeignService;
 
 	@Value("${message.autoRegister}")
 	private boolean autoRegister;
@@ -166,7 +171,9 @@ public class SysUserServiceImpl extends BaseServiceImpl<Integer, SysUser> implem
 			sysUser.setPhone(phone);
 			sysUser.setUserType(SysUserType.STUDENT);
 			sysUserDao.insert(sysUser);
+            //添加用户现金账户
 			imFeignService.register(new ImUserModel(sysUser.getId().toString(),phone,null));
+			userFeignService.createCashAccount(sysUser.getId());
 			return queryUserInfoByPhone(phone);
 		}
 		throw new UsernameNotFoundException("404.9");

+ 14 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupStudentMapperDao.java

@@ -211,4 +211,18 @@ public interface ClassGroupStudentMapperDao extends BaseDAO<Long, ClassGroupStud
      * @return
      */
     List<ClassGroupStudentMapper> findMusicGroupClassGroupByType(@Param("musicGroupId") String musicGroupId, @Param("classGroupType") ClassGroupTypeEnum classGroupType);
+
+    /**
+     * 获取vip课所有学员列表
+     * @param vipGroupId
+     * @return
+     */
+    List<Map<Integer, String>> queryStudentIdMap(Long vipGroupId);
+
+    /**
+     * 获取vip课所有教师列表
+     * @param vipGroupId
+     * @return
+     */
+    List<Map<Integer, String>> queryTeacherIdMap(Long vipGroupId);
 }

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupDao.java

@@ -179,4 +179,12 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
      * @return
      */
     MusicGroup findUserMusicGroup(@Param("UserId") Integer UserId);
+
+    /**
+     * 获取乐团信息
+     * @param list
+     * @return
+     */
+    MusicGroup findMusicGroup(List<Long> list);
+
 }

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

@@ -293,7 +293,7 @@ public interface VipGroupDao extends BaseDAO<Long, VipGroup> {
 	 * @param vipGroupList
 	 * @return
 	 */
-	int batchUpdate(List<VipGroup> vipGroupList);
+	int batchUpdate(@Param("vipGroupList") List<VipGroup> vipGroupList);
 
 	/**
 	 * @describe
@@ -309,4 +309,12 @@ public interface VipGroupDao extends BaseDAO<Long, VipGroup> {
 	 * @return
 	 */
 	List<VipGroup> queryRequiredOverList();
+
+	/**
+	 * @describe 获取正常状态的vip课
+	 * @author Joburgess
+	 * @date 2019/12/3
+	 * @return java.util.List<com.ym.mec.biz.dal.entity.VipGroup>
+	 */
+	List<VipGroup> queryNormalStatusList();
 }

+ 1 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java

@@ -80,6 +80,7 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
     BACKSTAGE_CREATE_MUSIC_GROUP_APPLY("BACKSTAGE_CREATE_MUSIC_GROUP_APPLY", "建团申请"),
     BACKSTAGE_ACTION_APPLY("BACKSTAGE_ACTION_APPLY", "开启报名"),
     BACKSTAGE_ACTION_PAYMENT("BACKSTAGE_ACTION_PAYMENT", "开启缴费"),
+    SMS_STUDENT_OPEN_PAYMENT("SMS_STUDENT_OPEN_PAYMENT", "开启缴费"),
     BACKSTAGE_LENGTHEN_PAYMENT("BACKSTAGE_LENGTHEN_PAYMENT", "延长缴费"),
     BACKSTAGE_ACTION_GROUP("BACKSTAGE_ACTION_GROUP", "开团"),
     BACKSTAGE_STUDENT_SUBJECT_CHANGE("BACKSTAGE_STUDENT_SUBJECT_CHANGE", "学员声部调整"),

+ 6 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/VipGroupStatusEnum.java

@@ -8,7 +8,12 @@ import com.ym.mec.common.enums.BaseEnum;
  */
 public enum VipGroupStatusEnum implements BaseEnum<Integer, VipGroupStatusEnum> {
 
-	NOT_START(0, "未开始"), APPLYING(1, "报名中"), PROGRESS(2, "进行中"), FINISHED(4, "已结束"), CANCEL(3, "取消");
+	NOT_START(0, "未开始"),
+	APPLYING(1, "报名中"),
+	APPLYING_END(5,"报名结束"),
+	PROGRESS(2, "进行中"),
+	FINISHED(4, "已结束"),
+	CANCEL(3, "取消");
 
 	private Integer code;
 

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

@@ -200,7 +200,7 @@ public interface StudentRegistrationService extends BaseService<Long, StudentReg
 	 * @param ids
 	 * @return
 	 */
-	int openPayment(String ids);
+	int openPayment(String ids) throws IOException;
 
 	/**
 	 * 根据乐团编号获取已缴费学员列表

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

@@ -337,7 +337,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
             String courseScheduleName = subjectList.stream().map(subject -> subject.getName()).collect(Collectors.joining("/"));
 
-            while (true) {
+            while (highClassGroup.getCourseTimes() >= times) {
                 int dayOfWeek = now.getDayOfWeek().getValue();
                 if (highClassGroup.getDayOfWeek().equals(dayOfWeek)) {
                     CourseSchedule courseSchedule = new CourseSchedule();
@@ -365,9 +365,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                     times++;
                 }
                 now = now.plusDays(1);
-                if (highClassGroup.getCourseTimes().equals(times)) {
-                    break;
-                }
             }
             //检测新排课冲突
             courseScheduleService.checkNewCourseSchedules(courseScheduleList, false);

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

@@ -737,6 +737,14 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
                 throw new BizException("不能调整今天及以前的课程");
             }
 
+            boolean courseTimeIsChange = false;
+			int newCourseTime = DateUtil.minutesBetween(newCourseSchedule.getStartClassTime(), newCourseSchedule.getEndClassTime());
+			int oldCourseTime = DateUtil.minutesBetween(oldCourseSchedule.getStartClassTime(), oldCourseSchedule.getEndClassTime());
+
+			if(newCourseTime!=oldCourseTime){
+				courseTimeIsChange = true;
+			}
+
 			oldCourseSchedule.setClassDate(newCourseSchedule.getClassDate());
 			oldCourseSchedule.setStartClassTime(newCourseSchedule.getStartClassTime());
 			oldCourseSchedule.setEndClassTime(newCourseSchedule.getEndClassTime());
@@ -786,8 +794,9 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 					}
 				}
 			}else{
-				if(Objects.nonNull(newCourseSchedule.getActualTeacherId())&&(Objects.isNull(oldCourseSchedule.getActualTeacherId())
-						||!oldCourseSchedule.getActualTeacherId().equals(newCourseSchedule.getActualTeacherId()))){
+				if(courseTimeIsChange||(Objects.nonNull(newCourseSchedule.getActualTeacherId())
+						&&(Objects.isNull(oldCourseSchedule.getActualTeacherId())
+						||!oldCourseSchedule.getActualTeacherId().equals(newCourseSchedule.getActualTeacherId())))){
 					if(Objects.nonNull(oldCourseSchedule.getActualTeacherId())){
 						beReplaceTeacherIds.add(oldCourseSchedule.getActualTeacherId().intValue());
 					}

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

@@ -1,19 +1,88 @@
 package com.ym.mec.biz.service.impl;
 
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import javax.annotation.Resource;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.alibaba.fastjson.JSONObject;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.api.entity.SysUserRole;
 import com.ym.mec.auth.api.enums.SysUserType;
 import com.ym.mec.auth.api.enums.UserLockFlag;
-import com.ym.mec.biz.dal.dao.*;
+import com.ym.mec.biz.dal.dao.MusicGroupDao;
+import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDao;
+import com.ym.mec.biz.dal.dao.MusicGroupStudentFeeDao;
+import com.ym.mec.biz.dal.dao.MusicGroupSubjectPlanDao;
+import com.ym.mec.biz.dal.dao.StudentRegistrationDao;
+import com.ym.mec.biz.dal.dao.SubjectDao;
+import com.ym.mec.biz.dal.dao.SysConfigDao;
+import com.ym.mec.biz.dal.dao.SysUserCashAccountDao;
+import com.ym.mec.biz.dal.dao.TeacherDao;
 import com.ym.mec.biz.dal.dto.StudentAddDto;
 import com.ym.mec.biz.dal.dto.StudentApplyDetailDto;
 import com.ym.mec.biz.dal.dto.StudentFeeDetailDto;
 import com.ym.mec.biz.dal.dto.StudentInfo;
-import com.ym.mec.biz.dal.entity.*;
-import com.ym.mec.biz.dal.enums.*;
+import com.ym.mec.biz.dal.entity.ClassGroup;
+import com.ym.mec.biz.dal.entity.ClassGroupRelation;
+import com.ym.mec.biz.dal.entity.ClassGroupStudentMapper;
+import com.ym.mec.biz.dal.entity.CourseSchedule;
+import com.ym.mec.biz.dal.entity.CourseScheduleStudentPayment;
+import com.ym.mec.biz.dal.entity.Goods;
+import com.ym.mec.biz.dal.entity.MusicGroup;
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender;
+import com.ym.mec.biz.dal.entity.MusicGroupStudentFee;
+import com.ym.mec.biz.dal.entity.MusicGroupSubjectGoodsGroup;
+import com.ym.mec.biz.dal.entity.MusicGroupSubjectPlan;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail;
+import com.ym.mec.biz.dal.entity.StudentRegistration;
+import com.ym.mec.biz.dal.entity.Subject;
+import com.ym.mec.biz.dal.entity.SysUserCashAccount;
+import com.ym.mec.biz.dal.entity.SysUserCashAccountDetail;
+import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum;
+import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
+import com.ym.mec.biz.dal.enums.DealStatusEnum;
+import com.ym.mec.biz.dal.enums.GoodsType;
+import com.ym.mec.biz.dal.enums.GroupType;
+import com.ym.mec.biz.dal.enums.MessageTypeEnum;
+import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
+import com.ym.mec.biz.dal.enums.OrderTypeEnum;
+import com.ym.mec.biz.dal.enums.PaymentStatusEnum;
+import com.ym.mec.biz.dal.enums.PlatformCashAccountDetailTypeEnum;
 import com.ym.mec.biz.dal.page.StudentRegistrationQueryInfo;
-import com.ym.mec.biz.service.*;
+import com.ym.mec.biz.service.ClassGroupRelationService;
+import com.ym.mec.biz.service.ClassGroupService;
+import com.ym.mec.biz.service.ClassGroupStudentMapperService;
+import com.ym.mec.biz.service.ContractService;
+import com.ym.mec.biz.service.CourseScheduleService;
+import com.ym.mec.biz.service.CourseScheduleStudentPaymentService;
+import com.ym.mec.biz.service.MusicGroupSubjectPlanService;
+import com.ym.mec.biz.service.StudentPaymentOrderDetailService;
+import com.ym.mec.biz.service.StudentPaymentOrderService;
+import com.ym.mec.biz.service.StudentRegistrationService;
+import com.ym.mec.biz.service.SubjectService;
+import com.ym.mec.biz.service.SysConfigService;
+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.entity.ImGroupMember;
 import com.ym.mec.common.entity.ImGroupModel;
@@ -29,18 +98,6 @@ import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.http.HttpUtil;
 
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import javax.annotation.Resource;
-
-import java.io.IOException;
-import java.math.BigDecimal;
-import java.util.*;
-import java.util.stream.Collectors;
-
 @Service
 public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, StudentRegistration> implements StudentRegistrationService {
 
@@ -225,8 +282,16 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             }
             ImResult register = imFeignService.register(new ImUserModel(userId.toString(), sysUser.getUsername(), sysUser.getAvatar()));
             sysUser.setImToken(register.getToken());
-            teacherDao.updateUser(sysUser);
         }
+        sysUser.setUserType(SysUserType.STUDENT);
+        sysUser.setOrganId(studentRegistration.getOrganId());
+        sysUser.setRealName(studentRegistration.getParentsName());
+        sysUser.setUsername(studentRegistration.getName());
+        sysUser.setGender(studentRegistration.getGender());
+        sysUser.setCreateTime(date);
+        sysUser.setUpdateTime(date);
+        teacherDao.updateUser(sysUser);
+
         studentRegistration.setActualSubjectId(studentRegistration.getSubjectId());
         studentRegistration.setCreateTime(date);
         studentRegistration.setUpdateTime(date);
@@ -864,7 +929,20 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     }
 
     @Override
-    public int openPayment(String ids) {
+    public int openPayment(String ids) throws IOException {
+        if(StringUtils.isNotEmpty(ids)){
+            //发送短信通知
+            List<Long> list = JSONObject.parseArray(JSONObject.toJSONString(Arrays.asList(ids.split(","))),Long.class);
+            List<StudentRegistration> registrations = studentRegistrationDao.findStudentListByIdList(list);
+            MusicGroup musicGroup = musicGroupDao.findMusicGroup(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());
+            });
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.YIMEI,
+                    MessageTypeEnum.SMS_STUDENT_OPEN_PAYMENT,receivers,null,0,null,musicGroup.getName(),HttpUtil.getSortUrl(configValue + musicGroup.getId()));
+        }
         return studentRegistrationDao.batchOpenPay(ids, PaymentStatusEnum.OPEN);
     }
 

+ 26 - 25
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java

@@ -80,10 +80,6 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 
 		TeacherAttendance teacherAttendance=teacherAttendanceDao.findByTeacherAttendanceInfo(user.getId().longValue(),teacherSignOutDto.getTeacherAttendanceInfo().getCourseScheduleId());
 
-		if(StringUtils.isBlank(teacherSignOutDto.getTeacherAttendanceInfo().getSignInLongitudeLatitude())){
-			throw new BizException("未获取到您的位置");
-		}
-
 		Date date = new Date();
 		if(Objects.isNull(teacherAttendance)){
 			teacherAttendance=teacherSignOutDto.getTeacherAttendanceInfo();
@@ -115,27 +111,6 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 			throw new BizException("明天的课程不能进行签到");
 		}
 
-		School school = schoolDao.get(courseSchedule.getSchoolId());
-
-		//是否在范围内
-		boolean isInScore = true;
-		if(StringUtils.isBlank(school.getLongitudeLatitude())){
-			if(teacherSignOutDto.getTeacherAttendanceInfo().getUpdate().equals(YesOrNoEnum.YES.getCode())){
-				school.setLongitudeLatitude(teacherSignOutDto.getTeacherAttendanceInfo().getSignInLongitudeLatitude());
-				schoolDao.update(school);
-			}else{
-				isInScore = false;
-			}
-		}else{
-			SysConfig sysConfig = sysConfigService.findByParamName(SysConfigService.ATTENDANCE_RANGE);
-			double attendanceRange = Double.valueOf(sysConfig.getParanValue());
-			double distance = MapUtil.distance(teacherSignOutDto.getTeacherAttendanceInfo().getSignInLongitudeLatitude(),
-					school.getLongitudeLatitude());
-			if(distance>attendanceRange){
-				isInScore=false;
-			}
-		}
-
 		String classDate = DateUtil.format(courseSchedule.getClassDate(), DateUtil.DEFAULT_PATTERN);
 		String startClassTime = DateUtil.format(courseSchedule.getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
 		String endClassTime = DateUtil.format(courseSchedule.getEndClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
@@ -145,6 +120,32 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 		Date classEndDateAdd60Minutes = DateUtil.addMinutes(classEndDateTime, 60);
 		Date add20Minutes = DateUtil.addMinutes(classStartDateTime, advanceSignMinutes * -1);
 		if(teacherAttendance.getSignInTime() == null && teacherSignOutDto.getTeacherAttendanceInfo().getStatus().equals(SignStatusEnum.SIGN_IN.getCode())){
+
+			if(StringUtils.isBlank(teacherSignOutDto.getTeacherAttendanceInfo().getSignInLongitudeLatitude())){
+				throw new BizException("未获取到您的位置");
+			}
+
+			School school = schoolDao.get(courseSchedule.getSchoolId());
+
+			//是否在范围内
+			boolean isInScore = true;
+			if(StringUtils.isBlank(school.getLongitudeLatitude())){
+				if(teacherSignOutDto.getTeacherAttendanceInfo().getUpdate().equals(YesOrNoEnum.YES.getCode())){
+					school.setLongitudeLatitude(teacherSignOutDto.getTeacherAttendanceInfo().getSignInLongitudeLatitude());
+					schoolDao.update(school);
+				}else{
+					isInScore = false;
+				}
+			}else{
+				SysConfig sysConfig = sysConfigService.findByParamName(SysConfigService.ATTENDANCE_RANGE);
+				double attendanceRange = Double.valueOf(sysConfig.getParanValue());
+				double distance = MapUtil.distance(teacherSignOutDto.getTeacherAttendanceInfo().getSignInLongitudeLatitude(),
+						school.getLongitudeLatitude());
+				if(distance>attendanceRange){
+					isInScore=false;
+				}
+			}
+
 			teacherAttendance.setCurrentClassTimes(courseScheduleDao.countCurrentTimes(teacherAttendance.getClassGroupId(),courseSchedule.getStartClassTime()) + 1);
 			teacherAttendance.setSignInLongitudeLatitude(teacherSignOutDto.getTeacherAttendanceInfo().getSignInLongitudeLatitude());
 			if (currentCourseDetail.getEndClassTime().before(date)){

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

@@ -1232,8 +1232,6 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		studentApplyRefunds.setStatus(status);
 		if (studentApplyRefunds.getStatus() == StudentApplyRefundsStatus.DONE) {
 			studentApplyRefunds.setActualAmount(amount);
-		} else if (studentApplyRefunds.getStatus() == StudentApplyRefundsStatus.WAIT_PAYMENT){
-			studentApplyRefunds.setExpectAmount(amount);
 		}else{
 			studentApplyRefunds.setActualAmount(new BigDecimal(0));
 		}
@@ -1273,9 +1271,6 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			case REJECT:
 
 				break;
-			case WAIT_PAYMENT:
-
-				break;
 			default:
 				throw new BizException("审核状态错误!");
 		}
@@ -1655,14 +1650,27 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		if(CollectionUtils.isEmpty(noCreateSuccessVipGroups)){
 			return;
 		}
+		String refundPeriod = sysConfigDao.findConfigValue(SysConfigService.REFUND_PERIOD);
 		//用户账户资金变动信息列表
 		List<SysUserCashAccountDetail> userCashAccountDetails = new ArrayList<>();
 		for (VipGroup noCreateSuccessVipGroup : noCreateSuccessVipGroups) {
+			noCreateSuccessVipGroup.setStatus(VipGroupStatusEnum.CANCEL);
 			List<StudentPaymentOrder> studentPaymentOrders = studentPaymentOrderDao.queryByDealStatus(noCreateSuccessVipGroup.getId().toString(),
 					OrderTypeEnum.SMALL_CLASS_TO_BUY, DealStatusEnum.SUCCESS);
+
 			//学生推送消息
+			Map<Integer,String> maps = MapUtil.convertMybatisMap(classGroupStudentMapperDao.queryStudentIdMap(noCreateSuccessVipGroup.getId()));
+			if(maps != null && maps.size() > 0){
+				sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG,MessageTypeEnum.PUSH_STUDENT_VIP_STOP,
+						maps,null,0,null,noCreateSuccessVipGroup.getName(),refundPeriod);
+			}
 			//老师推送消息
-//			sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG,MessageTypeEnum.PUSH_STUDENT_VIP_STOP,);
+			maps = MapUtil.convertMybatisMap(classGroupStudentMapperDao.queryTeacherIdMap(noCreateSuccessVipGroup.getId()));
+			if(maps != null && maps.size() > 0){
+				sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG,MessageTypeEnum.PUSH_TEACHER_VIP_STOP,
+						maps,null,0,null,noCreateSuccessVipGroup.getName());
+			}
+
 			for (StudentPaymentOrder studentPaymentOrder:studentPaymentOrders){
 				//生成账户资金明细
 				sysUserCashAccountService.updateCourseBalance(studentPaymentOrder.getUserId(),studentPaymentOrder.getActualAmount());
@@ -1678,6 +1686,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			}
 		}
 		sysUserCashAccountDetailDao.batchInsert(userCashAccountDetails);
+		vipGroupDao.batchUpdate(noCreateSuccessVipGroups);
 	}
 
 	@Override
@@ -1691,6 +1700,26 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			}
 			vipGroupDao.batchUpdate(vipGroupList);
 		}
+		List<VipGroup> normalVipGroupList = vipGroupDao.queryNormalStatusList();
+		if (!CollectionUtils.isEmpty(normalVipGroupList)){
+            Date now = new Date();
+            for (VipGroup vipGroup : normalVipGroupList) {
+                if(now.before(vipGroup.getRegistrationStartTime())){
+                    vipGroup.setStatus(VipGroupStatusEnum.NOT_START);
+                }
+                if(vipGroup.getRegistrationStartTime().before(now)&&vipGroup.getCoursesExpireDate().after(now)){
+                    vipGroup.setStatus(VipGroupStatusEnum.APPLYING);
+                }
+                if(vipGroup.getCoursesExpireDate().before(now)&&vipGroup.getCourseStartDate().after(now)){
+                    vipGroup.setStatus(VipGroupStatusEnum.APPLYING_END);
+                }
+                if(vipGroup.getCourseStartDate().before(now)&&vipGroup.getCoursesExpireDate().after(now)){
+                    vipGroup.setStatus(VipGroupStatusEnum.PROGRESS);
+                }
+                vipGroup.setUpdateTime(now);
+            }
+            vipGroupDao.batchUpdate(normalVipGroupList);
+        }
 	}
 
 	@Override

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

@@ -777,12 +777,12 @@
     </select>
 
     <!-- 根据主键批量删除班级-->
-    <delete id="batchSoftDelete">
+    <update id="batchSoftDelete">
         UPDATE class_group SET del_flag_ = 1 WHERE id_ IN
         <foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
             #{classGroupId}
         </foreach>
-    </delete>
+    </update>
 
     <select id="findClassGroupByType" resultMap="ClassGroupTeachers">
         SELECT * FROM class_group WHERE music_group_id_=#{musicGroupId}

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

@@ -248,4 +248,12 @@
         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'
     </select>
+    <select id="queryStudentIdMap" resultType="java.util.Map">
+        SELECT cgsm.user_id_ 'key',cgsm.user_id_ 'value' FROM class_group_student_mapper cgsm
+        WHERE cgsm.music_group_id_ = #{vipGroupId} AND cgsm.group_type_ = 'VIP' AND cgsm.status_ != 'QUIT'
+    </select>
+    <select id="queryTeacherIdMap" resultType="java.util.Map">
+        SELECT cgtm.user_id_ 'key',cgtm.user_id_ 'value' FROM class_group_teacher_mapper cgtm
+        WHERE cgtm.music_group_id_ = #{vipGroupId} AND cgtm.group_type_ = 'VIP'
+    </select>
 </mapper>

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

@@ -1303,7 +1303,7 @@
         FROM
             course_schedule cs
         WHERE cs.class_date_=DATE_FORMAT(#{date},'%Y-%m-%d')
-        AND cs.type_!='VIP'
+        AND cs.group_type_='MUSIC'
     </select>
     <select id="findByClassGroup" resultMap="CourseSchedule">
       select

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

@@ -385,4 +385,14 @@
 		LEFT JOIN student_registration sr on sr.music_group_id_ = mg.id_
 		WHERE sr.user_id_ = #{UserId} AND sr.payment_status_= '2' ORDER BY sr.id_ ASC LIMIT 1
 	</select>
+
+    <select id="findMusicGroup" resultMap="MusicGroup">
+		SELECT mg.* FROM student_registration sr
+		LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
+		WHERE sr.id_ IN
+		<foreach collection="list" item="id" index="index" open="(" close=")" separator=",">
+			#{id}
+		</foreach>
+		AND mg.id_ IS NOT NULL LIMIT 1
+	</select>
 </mapper>

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

@@ -792,7 +792,7 @@
     </select>
 
     <update id="batchUpdate" parameterType="java.util.List">
-    	<foreach collection="list" item="item" index="index" open="" close="" separator=";">
+    	<foreach collection="vipGroupList" item="item" index="index" open="" close="" separator=";">
 	        UPDATE vip_group
 	        <set>
 	            <if test="item.paymentExpireDate != null">
@@ -869,4 +869,7 @@
     <select id="queryRequiredOverList" resultMap="VipGroup">
     	select vg.* from vip_group vg left join class_group cg on vg.id_ = cg.music_group_id_ where vg.status_ = 2 and cg.total_class_times_ = cg.current_class_times_ and cg.total_class_times_ &gt; 0
     </select>
+    <select id="queryNormalStatusList" resultMap="VipGroup">
+        SELECT * FROM vip_group WHERE status_!=3 AND status_!=4
+    </select>
 </mapper>

+ 5 - 2
mec-client-api/src/main/java/com/ym/mec/task/TaskRemoteService.java

@@ -6,7 +6,7 @@ import org.springframework.web.bind.annotation.GetMapping;
 import com.ym.mec.common.config.FeignConfiguration;
 import com.ym.mec.task.fallback.TaskRemoteServiceFallback;
 
-@FeignClient(name = "web-server", configuration = { FeignConfiguration.class }, fallback = TaskRemoteServiceFallback.class)
+@FeignClient(name = "web-server", contextId = "TaskRemoteService", configuration = { FeignConfiguration.class }, fallback = TaskRemoteServiceFallback.class)
 public interface TaskRemoteService {
 
 	@GetMapping(value = "task/refreshPaymentFeeStatus")
@@ -29,6 +29,9 @@ public interface TaskRemoteService {
 	// vip课课酬结算
 	public void vipGroupTeacherSalarySettlement();
 
+	@GetMapping("task/musicGroupTeacherSalarySettlement")
+	void MusicGroupTeacherSalarySettlement();
+
 	@GetMapping("task/studentCoursesScheduleRemind")
 	// 学生有课提醒
 	public void studentCoursesScheduleRemind();
@@ -61,7 +64,7 @@ public interface TaskRemoteService {
 	// 更新VIP课程状态至已结束
 	public void updateVipGroupToFinishedStatus();
 
-	@GetMapping("task/updateVipGroupToFinishedStatus")
+	@GetMapping("task/stopVipGroupWithNoCreate")
 	// 取消达到报名时间未达到报名人数的vip课
 	public void stopVipGroupWithNoCreate();
 }

+ 5 - 0
mec-client-api/src/main/java/com/ym/mec/task/fallback/TaskRemoteServiceFallback.java

@@ -37,6 +37,11 @@ public class TaskRemoteServiceFallback implements TaskRemoteService {
 	}
 
 	@Override
+	public void MusicGroupTeacherSalarySettlement() {
+		logger.info("乐团课课酬结算的服务调用失败");
+	}
+
+	@Override
 	public void studentCoursesScheduleRemind() {
 		logger.info("有课提醒的服务调用失败");
 	}

+ 15 - 0
mec-client-api/src/main/java/com/ym/mec/user/UserFeignService.java

@@ -0,0 +1,15 @@
+package com.ym.mec.user;
+
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+
+import com.ym.mec.common.config.FeignConfiguration;
+import com.ym.mec.user.fallback.UserFeignServiceFallback;
+
+@FeignClient(name = "web-server", contextId = "UserFeignService", configuration = FeignConfiguration.class, fallback = UserFeignServiceFallback.class)
+public interface UserFeignService {
+
+	@GetMapping(value = "api/createCashAccount/{userId}")
+	public Boolean createCashAccount(@PathVariable("userId") Integer userId);
+}

+ 13 - 0
mec-client-api/src/main/java/com/ym/mec/user/fallback/UserFeignServiceFallback.java

@@ -0,0 +1,13 @@
+package com.ym.mec.user.fallback;
+
+import org.springframework.stereotype.Component;
+
+import com.ym.mec.user.UserFeignService;
+
+@Component
+public class UserFeignServiceFallback implements UserFeignService {
+
+	@Override
+	public Boolean createCashAccount(Integer userId) {
+		return false;
+	}}

+ 19 - 0
mec-task/src/main/java/com/ym/mec/task/jobs/MusicGroupTeacherSalarySettlementTaskTask.java

@@ -0,0 +1,19 @@
+package com.ym.mec.task.jobs;
+
+import com.ym.mec.task.TaskRemoteService;
+import com.ym.mec.task.core.BaseTask;
+import com.ym.mec.task.core.TaskException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class MusicGroupTeacherSalarySettlementTaskTask extends BaseTask {
+
+	@Autowired
+	private TaskRemoteService taskRemoteService;
+
+	@Override
+	public void execute() throws TaskException {
+		taskRemoteService.MusicGroupTeacherSalarySettlement();
+	}
+}

+ 31 - 0
mec-web/src/main/java/com/ym/mec/web/controller/APIController.java

@@ -0,0 +1,31 @@
+package com.ym.mec.web.controller;
+
+import io.swagger.annotations.Api;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.ym.mec.biz.dal.dao.SysUserCashAccountDao;
+import com.ym.mec.biz.dal.entity.SysUserCashAccount;
+import com.ym.mec.common.controller.BaseController;
+
+@RequestMapping("api")
+@Api(tags = "对外接口")
+@RestController
+public class APIController extends BaseController {
+
+	@Autowired
+	private SysUserCashAccountDao sysUserCashAccountDao;
+
+	@GetMapping("/createCashAccount/{userId}")
+	public Boolean createCashAccount(@PathVariable("userId") Integer userId) {
+		// 添加用户现金账户
+		sysUserCashAccountDao.insert(new SysUserCashAccount(userId, "CNY"));
+
+		return true;
+	}
+
+}

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

@@ -6,6 +6,7 @@ import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 
+import java.io.IOException;
 import java.util.Date;
 
 import org.apache.commons.lang3.StringUtils;
@@ -120,7 +121,7 @@ public class StudentRegistrationController extends BaseController {
     @PostMapping("/openPayment")
     @PreAuthorize("@pcs.hasPermissions('studentRegistration/openPayment')")
     @ApiImplicitParams({@ApiImplicitParam(name = "ids", value = "报名id(不是userId),逗号分隔", required = true, dataType = "String")})
-    public HttpResponseResult openPayment(String ids) {
+    public HttpResponseResult openPayment(String ids) throws IOException {
         return succeed(studentRegistrationService.openPayment(ids));
     }
 

+ 12 - 6
mec-web/src/main/java/com/ym/mec/web/controller/TaskController.java

@@ -54,6 +54,12 @@ public class TaskController extends BaseController {
 		courseScheduleTeacherSalaryService.teacherSalarySettlement();
 	}
 
+	// 乐团课课酬结算
+	@GetMapping("/musicGroupTeacherSalarySettlement")
+	public void musicGroupTeacherSalarySettlement() {
+		courseScheduleTeacherSalaryService.musicGroupTeacherSalarySettlement();
+	}
+
 	@GetMapping("/updateCourseScheduleToOverStatus")
 	// 更新课程状态至已结束
 	public void updateCourseScheduleToOverStatus() {
@@ -66,6 +72,12 @@ public class TaskController extends BaseController {
 		vipGroupService.updateVipGroupStatusToFinished();
 	}
 
+	@GetMapping("/stopVipGroupWithNoCreate")
+	// 取消达到报名时间未达到报名人数的vip课
+	public void stopVipGroupWithNoCreate() {
+		vipGroupService.stopVipGroupWithNoCreate();
+	}
+
 	@GetMapping("/pushNoSignOutMessage")
 	// 推送未签退消息提醒
 	public void pushNoSignOutMessage() {
@@ -114,10 +126,4 @@ public class TaskController extends BaseController {
 		studentPaymentOrderService.queryOrderStatus();
 	}
 
-	//取消达到报名时间仍未达到报名人数的vip课
-	@GetMapping("/stopVipGroupWithNoCreate")
-	public void stopVipGroupWithNoCreate(){
-		vipGroupService.stopVipGroupWithNoCreate();
-	}
-
 }