刘俊驰 9 mēneši atpakaļ
vecāks
revīzija
c95728837c

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentMemberTimeService.java

@@ -5,11 +5,15 @@ import com.ym.mec.biz.dal.entity.CloudTeacherOrder;
 import com.ym.mec.biz.dal.entity.StudentMemberTime;
 import com.ym.mec.biz.dal.entity.StudentMemberUpdateLog;
 
+import java.util.List;
+
 public interface StudentMemberTimeService extends IService<StudentMemberTime> {
 
     void saveToCloudTeacherOrder(CloudTeacherOrder cloudTeacherOrder);
 
     void saveToStudentMemberUpdateLog(StudentMemberUpdateLog studentMemberUpdateLog);
+
+    List<StudentMemberTime> queryByUserId(List<Integer> userIds);
 }
 
 

+ 15 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CloudTeacherOrderServiceImpl.java

@@ -447,26 +447,34 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
     public List<CloudTeacherOrderWrapper.StudentMemberDetail> getEffectiveCloudTeacherOrder(List<Integer> userIds) {
         //获取生效中的会员
         List<CloudTeacherOrderWrapper.StudentMemberDetail> studentMemberDetails = new ArrayList<>();
-        List<CloudTeacherOrder> activeCloudTeachers = cloudTeacherOrderDao.queryByUserIds(userIds,2);
-        if (CollectionUtils.isNotEmpty(activeCloudTeachers)) {
+        List<StudentMemberTime> studentMemberTimes = studentMemberTimeService.queryByUserId(userIds);
+        if (CollectionUtils.isNotEmpty(studentMemberTimes)) {
             //获取所有的会员列表
-            List<Integer> memberRankIds = activeCloudTeachers.stream().map(CloudTeacherOrder::getLevel).distinct().collect(Collectors.toList());
+            List<Integer> memberRankIds = studentMemberTimes.stream().map(StudentMemberTime::getMemberRankId).distinct().collect(Collectors.toList());
             Map<Integer, String> memberNameMap = memberRankSettingService.queryMemberName(memberRankIds);
             //按学员分组
-            Map<Integer, List<CloudTeacherOrder>> cloudTeacherOrderMap = activeCloudTeachers.stream().collect(Collectors.groupingBy(CloudTeacherOrder::getStudentId));
+            Map<Integer, List<StudentMemberTime>> cloudTeacherOrderMap = studentMemberTimes.stream().collect(Collectors.groupingBy(StudentMemberTime::getStudentId));
             cloudTeacherOrderMap.forEach((k, v) -> {
                 //按会员等级分组,同一个级别的会员,去最大的截止时间
-                Map<Integer, List<CloudTeacherOrder>> memberRankMap = v.stream().collect(Collectors.groupingBy(CloudTeacherOrder::getLevel));
+                Map<Integer, List<StudentMemberTime>> memberRankMap = v.stream().collect(Collectors.groupingBy(StudentMemberTime::getMemberRankId));
                 memberRankMap.forEach((key, value) -> {
                     CloudTeacherOrderWrapper.StudentMemberDetail studentMemberDetail = new CloudTeacherOrderWrapper.StudentMemberDetail();
                     studentMemberDetail.setStudentId(k);
                     //会员名称
                     studentMemberDetail.setMemberRankName(memberNameMap.get(key));
                     //获取最大的截止时间
-                    Date maxTime = value.stream().map(CloudTeacherOrder::getEndTime).max(Date::compareTo).get();
+                    Date maxTime = value.stream().map(StudentMemberTime::getEndTime).max(Date::compareTo).get();
                     studentMemberDetail.setEndTime(maxTime);
                     //剩余天数
-                    studentMemberDetail.setRemainingDays(DateUtil.daysBetween(new Date(), maxTime));
+                    if (maxTime.compareTo(new Date()) < 0) {
+                        studentMemberDetail.setRemainingDays(0);
+                    } else {
+                        int i = DateUtil.daysBetween(new Date(), maxTime);
+                        if (i <= 0) {
+                            i = 1;
+                        }
+                        studentMemberDetail.setRemainingDays(i);
+                    }
                     studentMemberDetail.setMemberRankId(key);
                     studentMemberDetails.add(studentMemberDetail);
                 });

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentMemberTimeServiceImpl.java

@@ -14,6 +14,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Date;
+import java.util.List;
 
 @Service("studentMemberTimeService")
 public class StudentMemberTimeServiceImpl extends ServiceImpl<StudentMemberTimeDao, StudentMemberTime> implements StudentMemberTimeService {
@@ -75,6 +76,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: