Bladeren bron

会员扣减

刘俊驰 6 maanden geleden
bovenliggende
commit
32efbccadb

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

@@ -469,10 +469,7 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
                     if (maxTime.compareTo(new Date()) < 0) {
                         studentMemberDetail.setRemainingDays(0);
                     } else {
-                        int i = DateUtil.daysBetween(new Date(), maxTime);
-                        if (i <= 0) {
-                            i = 1;
-                        }
+                        int i = DateUtil.daysBetweenUp(new Date(), maxTime);
                         studentMemberDetail.setRemainingDays(i);
                     }
                     studentMemberDetail.setMemberRankId(key);

+ 18 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentMemberTimeServiceImpl.java

@@ -8,11 +8,14 @@ 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;
 
@@ -40,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());

+ 17 - 0
mec-util/src/main/java/com/ym/mec/util/date/DateUtil.java

@@ -5,6 +5,7 @@ import org.apache.commons.lang3.StringUtils;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.time.DayOfWeek;
+import java.time.LocalDate;
 import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
 import java.time.temporal.WeekFields;
@@ -1316,6 +1317,22 @@ public class DateUtil {
 		}
     }
 
+    public static Date localDateToDate(LocalDate nowDate) {
+
+        return Date.from(nowDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
+    }
+
+    public static int daysBetweenUp(Date date, Date maxTime) {
+        long epochSecond = date.toInstant().getEpochSecond();
+        long epochSecond1 = maxTime.toInstant().getEpochSecond();
+        int i = (int) (epochSecond1 - epochSecond)/(24*60*60)  ;
+        int j = (int) (epochSecond1 - epochSecond)%(24*60*60)  ;
+        if (j >0) {
+            i++;
+        }
+        return i;
+    }
+
     /**
 	 * @describe 时间区段辅助类
 	 * @author Joburgess