Переглянути джерело

学生老师会员信息添加

yuanliang 1 рік тому
батько
коміт
0d7b4748f6

+ 14 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/StudentServiceImpl.java

@@ -136,7 +136,20 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, Student> impleme
     @Override
     public StudentVo detail(Long userId) {
         StudentVo detail = baseMapper.detail(userId);
-        detail.setUserVip(vipCardRecordService.UserVipInfo(userId, ClientEnum.STUDENT));
+        VipCardRecordWrapper.UserVip userVip = vipCardRecordService.UserVipInfo(userId, ClientEnum.STUDENT);
+        detail.setUserVip(userVip);
+        detail.setVipType(EUserVipType.NORMAL);
+        if (userVip != null) {
+            Date svipEndDate = userVip.getSvipEndDate();
+            Date vipEndDate = userVip.getVipEndDate();
+            if (svipEndDate != null && svipEndDate.after(new Date())) {
+                detail.setVipType(EUserVipType.SVIP);
+                detail.setMembershipEndTime(userVip.getSvipEndDate());
+            } else if (vipEndDate != null && vipEndDate.after(new Date())) {
+                detail.setVipType(EUserVipType.VIP);
+                detail.setMembershipEndTime(userVip.getVipEndDate());
+            }
+        }
         return detail;
     }
 

+ 4 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherServiceImpl.java

@@ -309,6 +309,10 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
             }).filter(Objects::nonNull).collect(Collectors.joining(","));
             teacherVo.setSubjectName(subjectNames);
         }
+
+
+
+
         return page.setRecords(teacherVos);
     }
 

+ 20 - 12
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VipCardRecordServiceImpl.java

@@ -30,6 +30,8 @@ import com.yonge.cooleshow.biz.dal.dao.VipCardRecordDao;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
 import java.time.ZoneId;
 import java.util.*;
 import java.util.concurrent.CompletableFuture;
@@ -390,8 +392,7 @@ public class VipCardRecordServiceImpl extends ServiceImpl<VipCardRecordDao, VipC
         // 没有会员信息
         if (vipCardRecordList.isEmpty()) {
             PeriodEnum period = addVipCardRecord.getType();
-            LocalDate startLocalDate = startTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
-            Date endDate = plusDate(startLocalDate, period, Long.valueOf(addVipCardRecord.getTimes()));
+            Date endDate = plusDate(startTime, period, Long.valueOf(addVipCardRecord.getTimes()));
 
             VipCardRecord addRecord = JSON.parseObject(JSON.toJSONString(addVipCardRecord), VipCardRecord.class);
             addRecord.setSourceType(SourceTypeEnum.BACKEND_GIVE);
@@ -414,8 +415,7 @@ public class VipCardRecordServiceImpl extends ServiceImpl<VipCardRecordDao, VipC
             }
         }
 
-        LocalDate startLocalDate = startTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
-        Date endDate = plusDate(startLocalDate, addVipCardRecord.getType(), Long.valueOf(addVipCardRecord.getTimes()));
+        Date endDate = plusDate(startTime, addVipCardRecord.getType(), Long.valueOf(addVipCardRecord.getTimes()));
         // 平移时间
         long plusMills = endDate == null ? 0L : (endDate.getTime() - startTime.getTime());
         for (int i = 0; i < vipCardRecordList.size(); i++) {
@@ -606,30 +606,38 @@ public class VipCardRecordServiceImpl extends ServiceImpl<VipCardRecordDao, VipC
         this.save(vipCardRecord);
     }
 
-    private Date plusDate(LocalDate start, PeriodEnum period, long times) {
-        LocalDate end = null;
+    private Date plusDate(Date start, PeriodEnum period, long times) {
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(start);
+        calendar.set(Calendar.HOUR_OF_DAY, 23);
+        calendar.set(Calendar.MINUTE, 59);
+        calendar.set(Calendar.SECOND, 59);
+        calendar.set(Calendar.MILLISECOND, 0);
+
+        LocalDateTime localDateTimeMaxTime =  calendar.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
+        LocalDateTime end;
         switch (period) {
             case DAY:
-                end = start.minusDays(times);
+                end = localDateTimeMaxTime.plusDays(times);
                 break;
             case MONTH:
-                end = start.minusMonths(times);
+                end = localDateTimeMaxTime.plusMonths(times);
                 break;
             case QUARTERLY:
-                end = start.minusMonths(times * 3);
+                end = localDateTimeMaxTime.plusMonths(times * 3);
                 break;
             case YEAR_HALF:
-                end = start.minusMonths(times * 6);
+                end = localDateTimeMaxTime.plusMonths(times * 6);
                 break;
             case YEAR:
-                end = start.minusYears(times);
+                end = localDateTimeMaxTime.plusYears(times);
                 break;
             case PERPETUAL:
                 return null;
             default:
                 throw new BizException("不支持的扣减类型");
         }
-        return Date.from(end.atStartOfDay(ZoneId.systemDefault()).toInstant());
+        return Date.from(end.atZone(ZoneId.systemDefault()).toInstant());
     }
 
     // 发送会员到期3天消息推送

+ 4 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/StudentVo.java

@@ -1,6 +1,7 @@
 package com.yonge.cooleshow.biz.dal.vo;
 
 import com.alibaba.excel.annotation.ExcelProperty;
+import com.yonge.cooleshow.biz.dal.enums.EUserVipType;
 import com.yonge.cooleshow.biz.dal.wrapper.VipCardRecordWrapper;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -83,6 +84,9 @@ public class StudentVo extends Student {
     @ApiModelProperty(value = "会员信息")
     private VipCardRecordWrapper.UserVip userVip;
 
+    @ApiModelProperty(value = "用户会员类型,普通用户:NORMAL,会员:VIP,SVIP:SVIP")
+    private EUserVipType vipType;
+
     public YesOrNoEnum getDelFlag() {
         return delFlag;
     }

+ 4 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TeacherVo.java

@@ -3,6 +3,7 @@ package com.yonge.cooleshow.biz.dal.vo;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.yonge.cooleshow.biz.dal.entity.Teacher;
 import com.yonge.cooleshow.biz.dal.entity.TeacherStyleVideo;
+import com.yonge.cooleshow.biz.dal.enums.EUserVipType;
 import com.yonge.cooleshow.biz.dal.enums.GenderEnum;
 import com.yonge.cooleshow.biz.dal.wrapper.VipCardRecordWrapper;
 import com.yonge.cooleshow.common.enums.ESettlementFrom;
@@ -106,6 +107,9 @@ public class TeacherVo extends Teacher {
     @ApiModelProperty(value = "会员信息")
     private VipCardRecordWrapper.UserVip userVip;
 
+    @ApiModelProperty(value = "用户会员类型,普通用户:NORMAL,会员:VIP,SVIP:SVIP")
+    private EUserVipType vipType;
+
 
     public YesOrNoEnum getDelFlag() {
         return delFlag;