刘俊驰 1 год назад
Родитель
Сommit
0963073e83
13 измененных файлов с 194 добавлено и 13 удалено
  1. 1 0
      cooleshow-common/src/main/java/com/yonge/cooleshow/common/enums/RewardTypeEnum.java
  2. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/req/OrderReq.java
  3. 11 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/EVipType.java
  4. 21 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/VipCardRecordService.java
  5. 12 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MemberPriceSettingsServiceImpl.java
  6. 11 4
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/StudentServiceImpl.java
  7. 7 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherServiceImpl.java
  8. 3 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderServiceImpl.java
  9. 2 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserPaymentCoreServiceImpl.java
  10. 78 4
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VipCardRecordServiceImpl.java
  11. 6 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/StudentHomeVo.java
  12. 9 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TeacherHomeVo.java
  13. 32 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/VipCardRecordWrapper.java

+ 1 - 0
cooleshow-common/src/main/java/com/yonge/cooleshow/common/enums/RewardTypeEnum.java

@@ -13,6 +13,7 @@ public enum RewardTypeEnum implements BaseEnum<String, RewardTypeEnum> {
 
     ACTUAL("实物"),
     VIP("小酷AI会员"),
+    SVIP("小酷AISVIP会员"),
     PIANO_ROOM("琴房时长"),
     COUPON("优惠券"),
     ;

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/req/OrderReq.java

@@ -32,7 +32,7 @@ public class OrderReq {
     @ApiModelProperty(value = "订单名称 ", required = true)
     private String orderName;
     @NotNull(message = "订单类型不能为空")
-    @ApiModelProperty(value = "订单类型: 学生端( VIP、开通会员  PRACTICE、陪练课购买  LIVE、直播课购买 VIDEO、视频课购买 MUSIC、单曲点播 ACTI_REGIST、活动报名 ) 老师端(VIP、开通会员 PIANO_ROOM、琴房时长 ACTI_REGIST 活动报名)", required = true)
+    @ApiModelProperty(value = "订单类型: 学生端( VIP、开通会员  SVIP:SVIP PRACTICE、陪练课购买  LIVE、直播课购买 VIDEO、视频课购买 MUSIC、单曲点播 ACTI_REGIST、活动报名 ) 老师端(VIP、开通会员 PIANO_ROOM、琴房时长 ACTI_REGIST 活动报名)", required = true)
     private OrderTypeEnum orderType;
     @ApiModelProperty(value = "订单描述信息 ")
     private String orderDesc;

+ 11 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/EVipType.java

@@ -10,9 +10,20 @@ import com.yonge.toolset.base.enums.BaseEnum;
  * @Data: 2022/3/16 10:19
  */
 public enum EVipType implements BaseEnum<String, EVipType> {
+
+    // 字段 说明 VIP:会员 SVIP:SVIP,PERMANENT_SVIP:永久SVIP,NOT_VIP:不是vip
+
     VIP("会员"),
     SVIP("SVIP"),
 
+
+    // 业务用字段
+    // 永久SVIP
+    PERMANENT_SVIP("永久SVIP"),
+
+    // 不是vip
+    NOT_VIP("不是vip"),
+
     ;
     @EnumValue
     private String code;

+ 21 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/VipCardRecordService.java

@@ -15,9 +15,12 @@ import com.yonge.cooleshow.biz.dal.vo.UserOrderVo;
 import com.yonge.cooleshow.biz.dal.vo.VipCardRecordVo;
 import com.yonge.cooleshow.biz.dal.dto.search.VipCardRecordSearch;
 import com.yonge.cooleshow.biz.dal.entity.VipCardRecord;
+import com.yonge.cooleshow.biz.dal.wrapper.VipCardRecordWrapper;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.toolset.base.page.PageInfo;
 
+import java.util.List;
+
 /**
  * 购买会员卡记录表 服务类
  *
@@ -83,4 +86,22 @@ public interface VipCardRecordService extends IService<VipCardRecord> {
      * @return
      */
     PageInfo<VipRecordVo> vipRecord(VipRecordSearch recordSearch);
+
+    /**
+     * 获取生效中的会员记录
+     *
+     * @param userId
+     * @param clientEnum
+     * @return
+     */
+    List<VipCardRecord> getEfficientVipRecord(Long userId, ClientEnum clientEnum);
+
+    /**
+     * 用户会员信息
+     *
+     * @param userId
+     * @param clientEnum
+     * @return
+     */
+    VipCardRecordWrapper.UserVip UserVipInfo(Long userId, ClientEnum clientEnum);
 }

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

@@ -90,6 +90,9 @@ public class MemberPriceSettingsServiceImpl extends ServiceImpl<MemberPriceSetti
         if (null == detail) {
             return HttpResponseResult.failed("未找到会员卡信息");
         }
+        if (Boolean.FALSE.equals(detail.getStatus())) {
+            return HttpResponseResult.failed("会员卡已下架");
+        }
 
         OrderCreateRes orderCreateRes = new OrderCreateRes();
         BigDecimal couponAmount = BigDecimal.ZERO;
@@ -97,7 +100,8 @@ public class MemberPriceSettingsServiceImpl extends ServiceImpl<MemberPriceSetti
 
         if (activityPlanVo != null && activityPlanVo.getActivityState() == 1) {
             for (ActivityPlanRewardDto activityPlanRewardDto : activityPlanVo.getActivityRewardList()) {
-                if (activityPlanRewardDto.getActivityReward().getUnit().getCode().equals(detail.getPeriod().getCode())) {
+                if (activityPlanRewardDto.getActivityReward().getRewardType().getCode().equals(detail.getVipType().getCode())
+                && activityPlanRewardDto.getActivityReward().getUnit().getCode().equals(detail.getPeriod().getCode())) {
                     couponAmount = activityPlanRewardDto.getActivityReward().getDiscountPrice();
                     orderCreateRes.setActivityId(activityPlanVo.getId());
                     orderCreateRes.setRewardId(activityPlanRewardDto.getActivityReward().getId());
@@ -263,12 +267,18 @@ public class MemberPriceSettingsServiceImpl extends ServiceImpl<MemberPriceSetti
         if (null == detail) {
             throw new BizException("未找到会员卡信息");
         }
+
+        if (Boolean.FALSE.equals(detail.getStatus())) {
+            throw new BizException("会员卡已下架");
+        }
+
         BigDecimal couponAmount = BigDecimal.ZERO;
         ActivityPlanVo activityPlanVo = activityPlanService.detail(orderGoodsInfo.getActivityId());
 
         if (activityPlanVo != null && activityPlanVo.getActivityState() == 1) {
             for (ActivityPlanRewardDto activityPlanRewardDto : activityPlanVo.getActivityRewardList()) {
-                if (activityPlanRewardDto.getActivityReward().getUnit().getCode().equals(detail.getPeriod().getCode())) {
+                if (activityPlanRewardDto.getActivityReward().getRewardType().getCode().equals(detail.getVipType().getCode())
+                    && activityPlanRewardDto.getActivityReward().getUnit().getCode().equals(detail.getPeriod().getCode())) {
                     couponAmount = activityPlanRewardDto.getActivityReward().getDiscountPrice();
                     break;
                 }

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

@@ -17,10 +17,7 @@ import com.yonge.cooleshow.biz.dal.dao.*;
 import com.yonge.cooleshow.biz.dal.dto.search.QueryMyFollowSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.StudentSearch;
 import com.yonge.cooleshow.biz.dal.entity.*;
-import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
-import com.yonge.cooleshow.biz.dal.enums.ImGroupMemberRoleType;
-import com.yonge.cooleshow.biz.dal.enums.ImGroupType;
-import com.yonge.cooleshow.biz.dal.enums.MessageTypeEnum;
+import com.yonge.cooleshow.biz.dal.enums.*;
 import com.yonge.cooleshow.biz.dal.mapper.SysUserMapper;
 import com.yonge.cooleshow.biz.dal.mapper.TenantAlbumMapper;
 import com.yonge.cooleshow.biz.dal.mapper.TenantAlbumRefMapper;
@@ -34,6 +31,7 @@ import com.yonge.cooleshow.biz.dal.vo.StudentHomeVo;
 import com.yonge.cooleshow.biz.dal.vo.StudentVo;
 import com.yonge.cooleshow.biz.dal.vo.TeacherVo;
 import com.yonge.cooleshow.biz.dal.wrapper.StudentWrapper;
+import com.yonge.cooleshow.biz.dal.wrapper.VipCardRecordWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.im.ImGroupWrapper;
 import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
@@ -116,6 +114,9 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, Student> impleme
     @Autowired
     private SysMessageService sysMessageService;
 
+    @Autowired
+    private VipCardRecordService vipCardRecordService;
+
     @Override
     public StudentDao getDao() {
         return baseMapper;
@@ -190,6 +191,12 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, Student> impleme
         studentHomeVo.setMusicAlbumNum(null == total.getMusicAlbumNum() ? 0 : total.getMusicAlbumNum());
         studentHomeVo.setMusicSheetNum(null == total.getMusicSheetNum() ? 0 : total.getMusicSheetNum());
 
+        // 设置会员信息
+
+
+        studentHomeVo.setUserVip(vipCardRecordService.UserVipInfo(user.getId(), ClientEnum.STUDENT));
+
+
         // IM聊天用户ID
         studentHomeVo.setImUserId(imGroupService.getImUserId(String.valueOf(detail.getUserId()), ClientEnum.STUDENT.name()));
 

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

@@ -208,6 +208,8 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
     @Autowired
     private UserTenantBindRecordMapper userTenantBindRecordMapper;
 
+    @Autowired
+    private VipCardRecordService vipCardRecordService;
 
     @Override
     public TeacherDao getDao() {
@@ -376,6 +378,11 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
             }
         }
 
+        // 会员信息
+
+        teacherHomeVo.setUserVip(vipCardRecordService.UserVipInfo(teacherHomeVo.getUserId(), ClientEnum.TEACHER));
+
+
         if (YesOrNoEnum.YES.equals(teacher.getMusicianFlag())) {
             teacherHomeVo.setMusicianAuthStatus(AuthStatusEnum.PASS);
         } else {

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

@@ -171,6 +171,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
         /**********订单生成前******************/
         //vip开通缴费
         orderCreate.put(GoodTypeEnum.VIP, memberPriceSettingsService::orderCreate);
+        orderCreate.put(GoodTypeEnum.SVIP, memberPriceSettingsService::orderCreate);
         //直播课程购买
         orderCreate.put(GoodTypeEnum.LIVE, courseGroupService::buyLiveCourse);
         //陪练课购买
@@ -1036,6 +1037,8 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
             configValue = sysConfigService.findConfigValue(SysConfigConstant.GOOD_LOGO_ACTI_REGIST);
         } else if (GoodTypeEnum.ALBUM.equals(goodTypeEnum)) {
             configValue = sysConfigService.findConfigValue(SysConfigConstant.GOOD_LOGO_ALBUM);
+        } else if (GoodTypeEnum.SVIP.equals(goodTypeEnum)) {
+            configValue = sysConfigService.findConfigValue(SysConfigConstant.GOOD_LOGO_VIP);
         }
         return configValue;
     }

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

@@ -161,6 +161,7 @@ public class UserPaymentCoreServiceImpl implements UserPaymentCoreService {
         /**********订单生成前 商品校验******************/
         //vip开通缴费
         orderGoodsCreate.put(GoodTypeEnum.VIP, memberPriceSettingsService::orderCreate);
+        orderGoodsCreate.put(GoodTypeEnum.SVIP, memberPriceSettingsService::orderCreate);
         //直播课程购买
         orderGoodsCreate.put(GoodTypeEnum.LIVE, courseGroupService::buyLiveCourse);
         //陪练课购买
@@ -198,6 +199,7 @@ public class UserPaymentCoreServiceImpl implements UserPaymentCoreService {
         paymentSuccess.put(GoodTypeEnum.VIDEO, paymentDivMemberRecordService::videoCourse);
         paymentSuccess.put(GoodTypeEnum.ALBUM, paymentDivMemberRecordService::musicSheet);
         paymentSuccess.put(GoodTypeEnum.VIP, paymentDivMemberRecordService::vip);
+        paymentSuccess.put(GoodTypeEnum.SVIP, paymentDivMemberRecordService::vip);
         paymentSuccess.put(GoodTypeEnum.ACTI_REGIST, paymentDivMemberRecordService::activity);
 
         /**********订单取消后******************/

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

@@ -1,21 +1,21 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yonge.cooleshow.biz.dal.dao.MemberPriceSettingsDao;
 import com.yonge.cooleshow.biz.dal.dto.search.VipRecordSearch;
 import com.yonge.cooleshow.biz.dal.entity.ActivityReward;
 import com.yonge.cooleshow.biz.dal.entity.MemberPriceSettings;
 import com.yonge.cooleshow.biz.dal.entity.Student;
-import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
-import com.yonge.cooleshow.biz.dal.enums.MessageTypeEnum;
-import com.yonge.cooleshow.biz.dal.enums.PeriodEnum;
-import com.yonge.cooleshow.biz.dal.enums.SourceTypeEnum;
+import com.yonge.cooleshow.biz.dal.enums.*;
 import com.yonge.cooleshow.biz.dal.service.*;
 import com.yonge.cooleshow.biz.dal.vo.*;
+import com.yonge.cooleshow.biz.dal.wrapper.VipCardRecordWrapper;
 import com.yonge.toolset.base.page.PageInfo;
 import com.yonge.toolset.mybatis.support.PageUtil;
 import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
+import com.yonge.toolset.utils.date.DateUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
@@ -27,6 +27,7 @@ import com.yonge.cooleshow.biz.dal.dao.VipCardRecordDao;
 
 import java.util.*;
 import java.util.concurrent.CompletableFuture;
+import java.util.stream.Collectors;
 
 
 @Service
@@ -228,6 +229,79 @@ public class VipCardRecordServiceImpl extends ServiceImpl<VipCardRecordDao, VipC
 
     }
 
+    /**
+     * 获取生效中的会员记录
+     * @param userId
+     * @param clientEnum
+     * @return
+     */
+    @Override
+    public List<VipCardRecord> getEfficientVipRecord(Long userId, ClientEnum clientEnum) {
+        return this.lambdaQuery()
+            .eq(VipCardRecord::getUserId, userId)
+            .eq(VipCardRecord::getEfficientFlag, true)
+            .eq(VipCardRecord::getClientType, clientEnum.name())
+            .and(wrapper -> wrapper
+                .gt(VipCardRecord::getEndTime, new Date())
+                .or()
+                .isNull(VipCardRecord::getEndTime)
+            )
+            .list();
+    }
+
+    /**
+     * 用户会员信息
+     *
+     * @param userId
+     * @param clientEnum
+     * @return
+     */
+    @Override
+    public VipCardRecordWrapper.UserVip UserVipInfo (Long userId, ClientEnum clientEnum) {
+        // 获取生效中的会员记录
+        VipCardRecordWrapper.UserVip userVip = new VipCardRecordWrapper.UserVip();
+        List<VipCardRecord> vipCardRecords = this.getEfficientVipRecord(userId,clientEnum);
+        if (CollectionUtils.isEmpty(vipCardRecords)) {
+            userVip.setVipType(EVipType.NOT_VIP);
+        } else {
+            // 存在没有结束时间的SVIP记录 永久SVIP
+            List<VipCardRecord> svipList = vipCardRecords.stream().filter(o -> o.getVipType() == EVipType.SVIP).collect(Collectors.toList());
+            if (CollectionUtils.isNotEmpty(svipList)) {
+                userVip.setVipType(EVipType.SVIP);
+
+                Optional<VipCardRecord> first = svipList.stream().filter(o -> o.getEndTime() == null).findFirst();
+                if (first.isPresent()) {
+                    userVip.setVipType(EVipType.PERMANENT_SVIP);
+                } else {
+                    Optional<VipCardRecord> max = svipList.stream().max(Comparator.comparing(VipCardRecord::getEndTime));
+                    max.ifPresent(vipCardRecord -> userVip.setSvipEndDate(vipCardRecord.getEndTime()));
+
+                }
+            }
+            // 过滤出VIP数据
+            List<VipCardRecord> vipList = vipCardRecords.stream().filter(o -> o.getVipType() == EVipType.VIP).collect(Collectors.toList());
+            if (CollectionUtils.isNotEmpty(vipList)) {
+                if (userVip.getVipType() == null) {
+                    userVip.setVipType(EVipType.VIP);
+                }
+                Optional<VipCardRecord> max = vipList.stream().max(Comparator.comparing(VipCardRecord::getEndTime));
+                max.ifPresent(vipCardRecord -> userVip.setVipEndDate(vipCardRecord.getEndTime()));
+            }
+        }
+
+        // 设置剩余天数
+        if (userVip.getVipEndDate() != null) {
+
+            int num = DateUtil.daysBetween(new Date(), userVip.getVipEndDate());
+            userVip.setVipEndDays(Math.max(num, 0));
+        }
+        if (userVip.getSvipEndDate() != null) {
+            int num = DateUtil.daysBetween(new Date(), userVip.getSvipEndDate());
+            userVip.setSvipEndDays(Math.max(num, 0));
+        }
+        return userVip;
+    }
+
     // 发送会员到期3天消息推送
     private void temporary3DaysSend(Long userId, String phone, ClientEnum clientType) {
         Map<Long, String> receivers = new HashMap<>();

+ 6 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/StudentHomeVo.java

@@ -2,7 +2,9 @@ package com.yonge.cooleshow.biz.dal.vo;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.yonge.cooleshow.biz.dal.entity.Student;
+import com.yonge.cooleshow.biz.dal.enums.EVipType;
 import com.yonge.cooleshow.biz.dal.enums.GenderEnum;
+import com.yonge.cooleshow.biz.dal.wrapper.VipCardRecordWrapper;
 import com.yonge.cooleshow.common.enums.YesOrNoEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -57,9 +59,12 @@ public class StudentHomeVo extends Student {
     private Integer musicAlbumNum;
     @ApiModelProperty("曲谱数 ")
     private Integer musicSheetNum;
-    @ApiModelProperty(value = "是否会员 0否 1是")
+    @ApiModelProperty(value = "是否会员 0否 1是 弃用")
     private YesOrNoEnum isVip;
 
+    @ApiModelProperty(value = "会员信息")
+    private VipCardRecordWrapper.UserVip userVip;
+
     @ApiModelProperty(value = "IM用户ID")
     private String imUserId;
 

+ 9 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TeacherHomeVo.java

@@ -5,9 +5,11 @@ import com.yonge.cooleshow.biz.dal.entity.Teacher;
 import com.yonge.cooleshow.biz.dal.entity.TeacherStyleVideo;
 import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
 import com.yonge.cooleshow.biz.dal.enums.GenderEnum;
+import com.yonge.cooleshow.biz.dal.wrapper.VipCardRecordWrapper;
 import com.yonge.cooleshow.common.enums.YesOrNoEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serializable;
@@ -18,6 +20,7 @@ import java.util.List;
  * @Author: liweifan
  * @Data: 2022/3/21 18:37
  */
+@Data
 @ApiModel(value = "TeacherHomeVo对象", description = "老师主页基本信息返回")
 public class TeacherHomeVo extends Teacher implements Serializable {
     private static final long serialVersionUID = 1L;
@@ -81,6 +84,10 @@ public class TeacherHomeVo extends Teacher implements Serializable {
     private String userType;
 
 
+
+    @ApiModelProperty(value = "会员信息")
+    private VipCardRecordWrapper.UserVip userVip;
+
     @ApiModelProperty(value = "默认查询声部名称 ")
     private String defaultSubjectName;
 
@@ -95,6 +102,7 @@ public class TeacherHomeVo extends Teacher implements Serializable {
     @ApiModelProperty(value = "imToken")
     private String imToken;
 
+
     public String getTenantName() {
         return tenantName;
     }
@@ -123,7 +131,7 @@ public class TeacherHomeVo extends Teacher implements Serializable {
         this.membershipDays = membershipDays;
     }
 
-    @ApiModelProperty(value = "是否会员 0否 1是")
+    @ApiModelProperty(value = "是否会员 0否 1是 弃用")
     private YesOrNoEnum isVip;
 
     public YesOrNoEnum getIsVip() {

+ 32 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/VipCardRecordWrapper.java

@@ -0,0 +1,32 @@
+package com.yonge.cooleshow.biz.dal.wrapper;
+
+import com.yonge.cooleshow.biz.dal.enums.EVipType;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+public class VipCardRecordWrapper {
+
+    @Data
+    public static class UserVip{
+
+
+        @ApiModelProperty(value = "vip类型 VIP:会员 SVIP:SVIP,PERMANENT_SVIP:永久SVIP,NOT_VIP:不是vip")
+        private EVipType vipType;
+
+        @ApiModelProperty(value = "vip结束时间")
+        private Date vipEndDate;
+
+
+        @ApiModelProperty(value = "vip剩余天数")
+        private Integer vipEndDays;
+
+        @ApiModelProperty(value = "svip结束时间")
+        private Date svipEndDate;
+
+
+        @ApiModelProperty(value = "svip剩余天数")
+        private Integer svipEndDays;
+    }
+}