|  | @@ -8,12 +8,16 @@ import com.ym.mec.biz.dal.entity.StudentMemberUpdateLog;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.enums.PeriodEnum;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.service.StudentMemberTimeService;
 | 
	
		
			
				|  |  |  import com.ym.mec.util.date.DateUtil;
 | 
	
		
			
				|  |  | +import org.joda.time.DateTime;
 | 
	
		
			
				|  |  | +import org.joda.time.DateTimeUtils;
 | 
	
		
			
				|  |  |  import org.slf4j.Logger;
 | 
	
		
			
				|  |  |  import org.slf4j.LoggerFactory;
 | 
	
		
			
				|  |  |  import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  |  import org.springframework.transaction.annotation.Transactional;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +import java.time.LocalDate;
 | 
	
		
			
				|  |  |  import java.util.Date;
 | 
	
		
			
				|  |  | +import java.util.List;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  @Service("studentMemberTimeService")
 | 
	
		
			
				|  |  |  public class StudentMemberTimeServiceImpl extends ServiceImpl<StudentMemberTimeDao, StudentMemberTime> implements StudentMemberTimeService {
 | 
	
	
		
			
				|  | @@ -39,22 +43,32 @@ public class StudentMemberTimeServiceImpl extends ServiceImpl<StudentMemberTimeD
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  |      public void saveToStudentMemberUpdateLog(StudentMemberUpdateLog studentMemberUpdateLog) {
 | 
	
		
			
				|  |  | -        StudentMemberTime one = this.lambdaQuery().eq(StudentMemberTime::getMemberRankId, studentMemberUpdateLog.getLevel()).last("limit 1").one();
 | 
	
		
			
				|  |  | +        StudentMemberTime one = this.lambdaQuery()
 | 
	
		
			
				|  |  | +            .eq(StudentMemberTime::getMemberRankId, studentMemberUpdateLog.getLevel())
 | 
	
		
			
				|  |  | +            .eq(StudentMemberTime::getStudentId, studentMemberUpdateLog.getStudentId())
 | 
	
		
			
				|  |  | +            .last("limit 1").one();
 | 
	
		
			
				|  |  |          //扣减
 | 
	
		
			
				|  |  | -        Date now = new Date();
 | 
	
		
			
				|  |  | +        LocalDate nowDate = LocalDate.now().plusDays(1);
 | 
	
		
			
				|  |  | +        // 转 Date
 | 
	
		
			
				|  |  | +        Date now = DateUtil.localDateToDate(nowDate);
 | 
	
		
			
				|  |  |          if(studentMemberUpdateLog.getBuyType() == 3){
 | 
	
		
			
				|  |  |              if (one == null) {
 | 
	
		
			
				|  |  | -                throw new RuntimeException("会员信息不存在");
 | 
	
		
			
				|  |  | +                throw new RuntimeException("学练宝信息不存在");
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              studentMemberUpdateLog.setOldEndTime(one.getEndTime());
 | 
	
		
			
				|  |  | -            if (one.getEndTime().after(now)) {
 | 
	
		
			
				|  |  | +            if (one.getEndTime().after(new Date())) {
 | 
	
		
			
				|  |  | +                int i = DateUtil.daysBetweenUp(new Date(), one.getEndTime());
 | 
	
		
			
				|  |  | +                if (i<studentMemberUpdateLog.getTime()) {
 | 
	
		
			
				|  |  | +                    throw new RuntimeException("学练宝剩余天数不足");
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |                  studentMemberUpdateLog.setOldEndTime(one.getEndTime());
 | 
	
		
			
				|  |  |                  one.setEndTime(addDays(one.getEndTime(), -studentMemberUpdateLog.getTime(), studentMemberUpdateLog.getType()));
 | 
	
		
			
				|  |  |                  this.updateById(one);
 | 
	
		
			
				|  |  |              }else {
 | 
	
		
			
				|  |  | -                throw new RuntimeException("会员已过期");
 | 
	
		
			
				|  |  | +                throw new RuntimeException("学练宝已过期");
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }else {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |              if (one == null) {
 | 
	
		
			
				|  |  |                  one = new StudentMemberTime();
 | 
	
		
			
				|  |  |                  one.setMemberRankId(studentMemberUpdateLog.getLevel());
 | 
	
	
		
			
				|  | @@ -75,6 +89,14 @@ public class StudentMemberTimeServiceImpl extends ServiceImpl<StudentMemberTimeD
 | 
	
		
			
				|  |  |          studentMemberUpdateLog.setNewEndTime(one.getEndTime());
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public List<StudentMemberTime> queryByUserId(List<Integer> userIds) {
 | 
	
		
			
				|  |  | +        return lambdaQuery()
 | 
	
		
			
				|  |  | +            .in(StudentMemberTime::getStudentId, userIds)
 | 
	
		
			
				|  |  | +            .gt(StudentMemberTime::getEndTime, new Date())
 | 
	
		
			
				|  |  | +            .list();
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      private Date addDays(Date endTime, int time, PeriodEnum type) {
 | 
	
		
			
				|  |  |          switch (type) {
 | 
	
		
			
				|  |  |              case DAY:
 |