Jelajahi Sumber

add:老师购买会员

liujunchi 3 tahun lalu
induk
melakukan
5fea236055

+ 49 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/Teacher.java

@@ -125,6 +125,30 @@ public class Teacher implements Serializable {
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
     private Date liveDate;
+
+    /**
+     * 会员等级
+     */
+    @ApiModelProperty("会员等级 ")
+    @TableField(value = "member_rank_setting_id_")
+    private Long memberRankSettingId;
+    /**
+     * 有效期开始时间
+     */
+    @ApiModelProperty("有效期开始时间 ")
+    @TableField(value = "membership_start_time_")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+    private Date membershipStartTime;
+    /**
+     * 有效期结束时间
+     */
+    @ApiModelProperty("有效期结束时间 ")
+    @TableField(value = "membership_end_time_")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+    private Date membershipEndTime;
+
     @ApiModelProperty("对应user表用户编号 ")
     @TableField(value = "browse_")
     private Integer browse;
@@ -140,6 +164,31 @@ public class Teacher implements Serializable {
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
     private Date updateTime;
 
+
+    public Long getMemberRankSettingId() {
+        return memberRankSettingId;
+    }
+
+    public void setMemberRankSettingId(Long memberRankSettingId) {
+        this.memberRankSettingId = memberRankSettingId;
+    }
+
+    public Date getMembershipStartTime() {
+        return membershipStartTime;
+    }
+
+    public void setMembershipStartTime(Date membershipStartTime) {
+        this.membershipStartTime = membershipStartTime;
+    }
+
+    public Date getMembershipEndTime() {
+        return membershipEndTime;
+    }
+
+    public void setMembershipEndTime(Date membershipEndTime) {
+        this.membershipEndTime = membershipEndTime;
+    }
+
     public Long getUserId() {
         return userId;
     }

+ 16 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/VipCardRecord.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -34,6 +35,12 @@ public class VipCardRecord implements Serializable {
     @ApiModelProperty("会员卡id ")
 	@TableField(value = "vip_card_id_")
     private Long vipCardId;
+
+    @TableField(value = "client_type_")
+    @ApiModelProperty("用户类型 学生:STUDENT 老师 :TEACHER")
+    private ClientEnum clientType;
+
+
     @ApiModelProperty("会员卡开始时间 ")
 	@TableField(value = "start_time_")
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@@ -62,7 +69,15 @@ public class VipCardRecord implements Serializable {
     @TableField(value = "msg_status_")
     private Integer msgStatus;
 
-	public Long getId() {
+    public ClientEnum getClientType() {
+        return clientType;
+    }
+
+    public void setClientType(ClientEnum clientType) {
+        this.clientType = clientType;
+    }
+
+    public Long getId() {
         return id;
     }
 

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

@@ -3,24 +3,21 @@ package com.yonge.cooleshow.biz.dal.service.impl;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yonge.cooleshow.biz.dal.dto.req.OrderReq;
-import com.yonge.cooleshow.biz.dal.entity.PlatformCashAccountRecord;
-import com.yonge.cooleshow.biz.dal.entity.VipCardRecord;
+import com.yonge.cooleshow.biz.dal.entity.*;
 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.service.*;
-import com.yonge.cooleshow.biz.dal.vo.StudentVo;
-import com.yonge.cooleshow.biz.dal.vo.UserOrderDetailVo;
+import com.yonge.cooleshow.biz.dal.vo.*;
 import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
 import com.yonge.toolset.utils.date.DateUtil;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import com.yonge.cooleshow.biz.dal.entity.MemberPriceSettings;
-import com.yonge.cooleshow.biz.dal.vo.MemberPriceSettingsVo;
 import com.yonge.cooleshow.biz.dal.dto.search.MemberPriceSettingsSearch;
 import com.yonge.cooleshow.biz.dal.dao.MemberPriceSettingsDao;
 import org.springframework.transaction.annotation.Transactional;
@@ -33,6 +30,10 @@ public class MemberPriceSettingsServiceImpl extends ServiceImpl<MemberPriceSetti
     private final static Logger log = LoggerFactory.getLogger(MemberPriceSettingsServiceImpl.class);
     @Autowired
     private StudentService studentService;
+
+    @Autowired
+    private TeacherService teacherService;
+
     @Autowired
     private VipCardRecordService vipCardRecordService;
     @Autowired
@@ -76,22 +77,27 @@ public class MemberPriceSettingsServiceImpl extends ServiceImpl<MemberPriceSetti
 
     @Override
     public void orderSuccess(UserOrderDetailVo orderDetailVo) {
-        StudentVo studentVo = studentService.detail(orderDetailVo.getUserId());
-        if (null == studentVo) {
-            return;
-        }
+
         VipCardRecord vipCardRecord = vipCardRecordService.buildVipCardRecordByOrderDetail(orderDetailVo);
 
-        if (null == studentVo.getMembershipEndTime() || studentVo.getMembershipEndTime().before(new Date())) {
+        UserVipInfoVo userVipInfoVo = getVipInfo(orderDetailVo.getOrderClient(),orderDetailVo.getUserId());
+
+        if (userVipInfoVo == null) {
+            log.error("未找到用户信息");
+        }
+
+        if (null == userVipInfoVo.getMembershipEndTime() || userVipInfoVo.getMembershipEndTime().before(new Date())) {
             //没有会员、会员已过期 会员卡生效时间为当前时间
-            studentVo.setMembershipStartTime(vipCardRecord.getStartTime());
-            studentVo.setMembershipEndTime(vipCardRecord.getEndTime());
+            userVipInfoVo.setMembershipStartTime(vipCardRecord.getStartTime());
+            userVipInfoVo.setMembershipEndTime(vipCardRecord.getEndTime());
         } else {
-            studentVo.setMembershipEndTime(vipCardRecord.getEndTime());
+            userVipInfoVo.setMembershipEndTime(vipCardRecord.getEndTime());
         }
-        studentVo.setMemberRankSettingId(1l);
-        studentVo.setUpdateTime(new Date());
-        studentService.updateById(studentVo);
+        userVipInfoVo.setMemberRankSettingId(1l);
+        userVipInfoVo.setUpdateTime(new Date());
+
+        updateUser(userVipInfoVo);
+
         //会员购买记录入库
         vipCardRecordService.save(vipCardRecord);
         //记录平台收入
@@ -100,26 +106,68 @@ public class MemberPriceSettingsServiceImpl extends ServiceImpl<MemberPriceSetti
 //        platformCashAccountRecord.setTransAmount(ClientEnum.STUDENT.getCode());
 //        platformCashAccountRecordService.save();
         //会员购买消息推送
-        authSend(studentVo.getUserId(), studentVo.getPhone(), DateUtil.format(vipCardRecord.getEndTime(), DateUtil.DEFAULT_PATTERN));
+        authSend(userVipInfoVo.getUserId(), userVipInfoVo.getPhone(), DateUtil.format(vipCardRecord.getEndTime(), DateUtil.DEFAULT_PATTERN),orderDetailVo.getOrderClient());
+    }
+
+    private void updateUser(UserVipInfoVo userVipInfoVo) {
+        if (userVipInfoVo.getUserType().equals(ClientEnum.STUDENT)) {
+            studentService.lambdaUpdate()
+                    .eq(Student::getUserId,userVipInfoVo.getUserId())
+                    .set(Student::getMemberRankSettingId,userVipInfoVo.getMemberRankSettingId())
+                    .set(Student::getMembershipStartTime,userVipInfoVo.getMembershipStartTime())
+                    .set(Student::getMembershipEndTime,userVipInfoVo.getMembershipEndTime())
+                    .set(Student::getUpdateTime,userVipInfoVo.getUpdateTime())
+                    .update();
+        } else {
+            teacherService.lambdaUpdate()
+                          .eq(Teacher::getUserId, userVipInfoVo.getUserId())
+                          .set(Teacher::getMemberRankSettingId,userVipInfoVo.getMemberRankSettingId())
+                          .set(Teacher::getMembershipStartTime,userVipInfoVo.getMembershipStartTime())
+                          .set(Teacher::getMembershipEndTime,userVipInfoVo.getMembershipEndTime())
+                          .set(Teacher::getUpdateTime,userVipInfoVo.getUpdateTime())
+                          .update();
+        }
     }
 
 
+    private UserVipInfoVo getVipInfo(ClientEnum userType, Long userId) {
+        if (userType.equals(ClientEnum.STUDENT)) {
+            StudentVo studentVo = studentService.detail(userId);
+            if (studentVo == null) {
+                return null;
+            }
+
+            UserVipInfoVo userVipInfoVo = new UserVipInfoVo();
+            BeanUtils.copyProperties(studentVo,userVipInfoVo);
+            return userVipInfoVo;
+        } else if (userType.equals(ClientEnum.TEACHER)) {
+            TeacherVo teacherVo = teacherService.detail(userId);
+            if (teacherVo == null) {
+                return null;
+            }
+
+            UserVipInfoVo userVipInfoVo = new UserVipInfoVo();
+            BeanUtils.copyProperties(teacherVo,userVipInfoVo);
+            return userVipInfoVo;
+        }
+        return null;
+    }
 
 
     // 发送会员购买消息推送
-    private void authSend(Long userId, String phone, String param1) {
+    private void authSend(Long userId, String phone, String param1,ClientEnum clientEnum) {
         Map<Long, String> receivers = new HashMap<>();
         receivers.put(userId, phone);
         try {
             sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.VIP_BUY_SUCCESS,
-                    receivers, null, 0, null, ClientEnum.STUDENT.getCode(), param1);
+                    receivers, null, 0, null, clientEnum.getCode(), param1);
         } catch (Exception e) {
             log.error("会员购买极光消息推送异常,userId={}", userId);
         }
 
         try {
             sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.SMS_VIP_BUY_SUCCESS,
-                    receivers, null, 0, null, ClientEnum.STUDENT.getCode(), param1);
+                    receivers, null, 0, null, clientEnum.getCode(), param1);
         } catch (Exception e) {
             log.error("会员购买短信消息推送异常,userId={}", userId);
         }

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

@@ -30,6 +30,7 @@ import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
 import com.yonge.toolset.utils.easyexcel.ErrMsg;
 import com.yonge.toolset.utils.easyexcel.ExcelDataReaderProperty;
 import com.yonge.toolset.utils.easyexcel.ExcelException;
+import feign.Client;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
@@ -199,7 +200,7 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
             if (SysUserType.TEACHER.getCode().equals(userType.getCode()) && detail.getUserId().equals(sysUser.getId())) {
                 detail.setPlay(YesOrNoEnum.YES);
             } else {
-                setMusicSheetPlay(sysUser.getId(), detail);
+                setMusicSheetPlay(sysUser.getId(), detail,userType);
             }
         } else {
             detail.setPlay(YesOrNoEnum.YES);
@@ -215,11 +216,11 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
      * 设置学生曲目信息
      *
      * 2022 7 20  老师也能购买曲目
-     *
-     * @param studentId 学生id
+     *  @param studentId 学生id
      * @param detail 曲目详情
+     * @param userType 用户类型
      */
-    private void setMusicSheetPlay(Long studentId, MusicSheetDetailVo detail) {
+    private void setMusicSheetPlay(Long studentId, MusicSheetDetailVo detail, SysUserType userType) {
         detail.setPlay(YesOrNoEnum.NO);
         // 单曲购买 判断购买记录,有记录课播放
         if (ChargeTypeEnum.CHARGE.getCode().equals(detail.getChargeType().getCode())) {
@@ -236,9 +237,16 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
         } else if  (ChargeTypeEnum.VIP.getCode().equals(detail.getChargeType().getCode())) {
             // 会员 判断是否为会员, 会员可播放
             // todo 老师会员判断
-            StudentVo studentVo = studentService.detail(studentId);
-            if (studentVo != null && YesOrNoEnum.YES.getCode().equals(studentVo.getIsVip().getCode())) {
-                detail.setPlay(YesOrNoEnum.YES);
+            if (userType.equals(SysUserType.STUDENT)) {
+                StudentVo studentVo = studentService.detail(studentId);
+                if (studentVo != null && YesOrNoEnum.YES.getCode().equals(studentVo.getIsVip().getCode())) {
+                    detail.setPlay(YesOrNoEnum.YES);
+                }
+            } else if (userType.equals(SysUserType.TEACHER)) {
+                TeacherVo teacher= teacherService.detail(studentId);
+                if (teacher != null && YesOrNoEnum.YES.getCode().equals(teacher.getIsVip().getCode())) {
+                    detail.setPlay(YesOrNoEnum.YES);
+                }
             }
         }
     }

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

@@ -8,9 +8,7 @@ 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.service.*;
-import com.yonge.cooleshow.biz.dal.vo.MemberPriceSettingsVo;
-import com.yonge.cooleshow.biz.dal.vo.StudentVo;
-import com.yonge.cooleshow.biz.dal.vo.UserOrderDetailVo;
+import com.yonge.cooleshow.biz.dal.vo.*;
 import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -18,7 +16,6 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.yonge.cooleshow.biz.dal.entity.VipCardRecord;
-import com.yonge.cooleshow.biz.dal.vo.VipCardRecordVo;
 import com.yonge.cooleshow.biz.dal.dto.search.VipCardRecordSearch;
 import com.yonge.cooleshow.biz.dal.dao.VipCardRecordDao;
 
@@ -35,6 +32,11 @@ public class VipCardRecordServiceImpl extends ServiceImpl<VipCardRecordDao, VipC
     private MemberPriceSettingsDao memberPriceSettingsDao;
     @Autowired
     private StudentService studentService;
+
+
+    @Autowired
+    private TeacherService teacherService;
+
     @Autowired
     private MemberPriceSettingsService memberPriceSettingsService;
     @Autowired
@@ -74,12 +76,24 @@ public class VipCardRecordServiceImpl extends ServiceImpl<VipCardRecordDao, VipC
         if (null == detail) {
             return null;
         }
-        StudentVo studentVo = studentService.detail(orderDetailVo.getUserId());
-        if (null == studentVo) {
+
+        //修改用户会员时长
+        Date membershipEndTime = null;
+        if (orderDetailVo.getOrderClient().equals(ClientEnum.STUDENT)) {
+            StudentVo studentVo = studentService.detail(orderDetailVo.getUserId());
+            if (null == studentVo) {
+                return null;
+            }
+            membershipEndTime = studentVo.getMembershipEndTime();
+        } else if (orderDetailVo.getOrderClient().equals(ClientEnum.TEACHER)){
+            TeacherVo teacherVo = teacherService.detail(orderDetailVo.getUserId());
+            if (null == teacherVo) {
+                return null;
+            }
+            membershipEndTime = teacherVo.getMembershipEndTime();
+        } else {
             return null;
         }
-        //修改用户会员时长
-        Date membershipEndTime = studentVo.getMembershipEndTime();
 
         VipCardRecord vipCardRecord = new VipCardRecord();
         vipCardRecord.setUserId(orderDetailVo.getUserId());
@@ -87,6 +101,7 @@ public class VipCardRecordServiceImpl extends ServiceImpl<VipCardRecordDao, VipC
         vipCardRecord.setSubOrderNo(orderDetailVo.getSubOrderNo());
         vipCardRecord.setVipCardId(detail.getId());
         vipCardRecord.setMsgStatus(0);
+        vipCardRecord.setClientType(orderDetailVo.getOrderClient());
 
         if (null == membershipEndTime || membershipEndTime.before(new Date())) {
             //没有会员、会员已过期 会员卡生效时间为当前时间
@@ -148,7 +163,7 @@ public class VipCardRecordServiceImpl extends ServiceImpl<VipCardRecordDao, VipC
             }
             expireFlagMap.put(record.getUserId(), record.getUserId());
             //发送消息
-            expireSend(record.getUserId(), record.getPhone());
+            expireSend(record.getUserId(), record.getPhone(),record.getClientType());
             record.setMsgStatus(2);
             record.setUpdateTime(new Date());
 
@@ -181,13 +196,13 @@ public class VipCardRecordServiceImpl extends ServiceImpl<VipCardRecordDao, VipC
     }
 
     // 发送会员到期消息推送
-    private void expireSend(Long userId, String phone) {
+    private void expireSend(Long userId, String phone,ClientEnum userType) {
         Map<Long, String> receivers = new HashMap<>();
         receivers.put(userId, phone);
         try {
             String url = sysMessageService.selectConfigUrl(MessageTypeEnum.VIP_EXPIRE.getCode());
             sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.VIP_EXPIRE,
-                    receivers, null, 0, url, ClientEnum.STUDENT.getCode());
+                    receivers, null, 0, url, userType.getCode());
         } catch (Exception e) {
             log.error("会员到期3天极光消息推送异常,userId={}", userId);
         }
@@ -195,7 +210,7 @@ public class VipCardRecordServiceImpl extends ServiceImpl<VipCardRecordDao, VipC
         try {
             String url = sysMessageService.selectConfigUrl(MessageTypeEnum.SMS_VIP_EXPIRE.getCode());
             sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.SMS_VIP_EXPIRE,
-                    receivers, null, 0, null, ClientEnum.STUDENT.getCode(), url);
+                    receivers, null, 0, null, userType.getCode(), url);
         } catch (Exception e) {
             log.error("会员到期3天短信消息推送异常,userId={}", userId);
         }

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

@@ -54,6 +54,20 @@ public class TeacherVo extends Teacher {
     private List<TeacherStyleVideo> styleVideo;
     @ApiModelProperty(value = "学生 STUDENT 老师 TEACHER 系统用户 STSTEM")
     private String userType;
+    @ApiModelProperty(value = "是否会员 0否 1是")
+    private YesOrNoEnum isVip;
+
+    public YesOrNoEnum getIsVip() {
+        return isVip;
+    }
+
+    public void setIsVip(YesOrNoEnum isVip) {
+        this.isVip = isVip;
+    }
+
+    public void setGender(GenderEnum gender) {
+        this.gender = gender;
+    }
 
     public String getAvatar() {
         return avatar;

+ 12 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/UserOrderDetailVo.java

@@ -1,6 +1,7 @@
 package com.yonge.cooleshow.biz.dal.vo;
 
 import com.yonge.cooleshow.biz.dal.entity.UserOrderDetail;
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -18,6 +19,9 @@ public class UserOrderDetailVo extends UserOrderDetail {
     @ApiModelProperty("订单id ")
     private Long orderId;
 
+    @ApiModelProperty("用户类型 学生:STUDENT 老师 :TEACHER")
+    private ClientEnum orderClient;
+
     @ApiModelProperty("头像 ")
     private String avatar;
 
@@ -33,6 +37,14 @@ public class UserOrderDetailVo extends UserOrderDetail {
     @ApiModelProperty(value = "分润用户编号")
     private Long routeUserId;
 
+    public ClientEnum getOrderClient() {
+        return orderClient;
+    }
+
+    public void setOrderClient(ClientEnum orderClient) {
+        this.orderClient = orderClient;
+    }
+
     public Long getRouteUserId() {
         return routeUserId;
     }

+ 109 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/UserVipInfoVo.java

@@ -0,0 +1,109 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
+import io.swagger.annotations.ApiModelProperty;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-07-21
+ */
+public class UserVipInfoVo {
+
+    /**
+     * 对应user表用户编号
+     */
+    @ApiModelProperty("对应user表用户编号 ")
+    private Long userId;
+
+    /**
+     * 会员等级
+     */
+    @ApiModelProperty("会员等级 ")
+    private Long memberRankSettingId;
+    /**
+     * 有效期开始时间
+     */
+    @ApiModelProperty("有效期开始时间 ")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone="GMT+8")
+    private Date membershipStartTime;
+    /**
+     * 有效期结束时间
+     */
+    @ApiModelProperty("有效期结束时间 ")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+    private Date membershipEndTime;
+
+    @ApiModelProperty(value = "手机号")
+    private String phone;
+
+    @ApiModelProperty("用户类型")
+    private ClientEnum userType;
+
+    private Date updateTime;
+
+    public ClientEnum getUserType() {
+        return userType;
+    }
+
+    public void setUserType(ClientEnum userType) {
+        this.userType = userType;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public Long getMemberRankSettingId() {
+        return memberRankSettingId;
+    }
+
+    public void setMemberRankSettingId(Long memberRankSettingId) {
+        this.memberRankSettingId = memberRankSettingId;
+    }
+
+    public Date getMembershipStartTime() {
+        return membershipStartTime;
+    }
+
+    public void setMembershipStartTime(Date membershipStartTime) {
+        this.membershipStartTime = membershipStartTime;
+    }
+
+    public Date getMembershipEndTime() {
+        return membershipEndTime;
+    }
+
+    public void setMembershipEndTime(Date membershipEndTime) {
+        this.membershipEndTime = membershipEndTime;
+    }
+
+    public String getPhone() {
+        return phone;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
+}

+ 7 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherMapper.xml

@@ -17,6 +17,9 @@
         <result column="entry_auth_date_" property="entryAuthDate" />
         <result column="musician_flag_" property="musicianFlag" />
         <result column="musician_date_" property="musicianDate" />
+        <result column="member_rank_setting_id_" property="memberRankSettingId"/>
+        <result column="membership_start_time_" property="membershipStartTime"/>
+        <result column="membership_end_time_" property="membershipEndTime"/>
         <result column="live_flag_" property="liveFlag" />
         <result column="live_date_" property="liveDate" />
         <result column="browse_" property="browse" />
@@ -44,6 +47,9 @@
         , t.musician_date_ as "musicianDate"
         , t.live_flag_ as "liveFlag"
         , t.live_date_ as "liveDate"
+        , t.member_rank_setting_id_ as "memberRankSettingId"
+        , t.membership_start_time_ as "membershipStartTime"
+        , t.membership_end_time_ as "membershipEndTime"
         , t.browse_ as "browse"
         , t.memo_ as "memo"
         , t.create_time_ as "createTime"
@@ -118,6 +124,7 @@
             u.birthdate_ as birthdate,
             u.phone_ as phone,
             (case when isnull(u.id_card_no_) then 0 else 1 end) as isReal,
+        (!isnull(membership_end_time_) and membership_end_time_ > now()) as isVip,
             u.real_name_ as realName,
             u.id_card_no_ as idCardNo,
             u.lock_flag_ as lockFlag,

+ 2 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/UserOrderDetailMapper.xml

@@ -93,8 +93,10 @@
             <include refid="baseColumns" />,
             u.avatar_ as avatar,
             u.username_ as username,
+            uo.order_client_ as orderClient,
             a.star_grade_ as starGrade
         FROM user_order_detail t
+        left join user_order uo on uo.order_no_ = t.order_no_
         left join sys_user u on t.merch_id_ = u.id_
         left join teacher_total a on t.merch_id_ = a.user_id_
         where t.order_no_ = #{orderNo}

+ 1 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/VipCardRecordMapper.xml

@@ -26,6 +26,7 @@
         , t.update_time_ as updateTime
         , t.end_time_ as endTime
         , t.msg_status_ as msgStatus
+        ,t.client_type_ as clientType
         </sql>
 
     <select id="detail" resultType="com.yonge.cooleshow.biz.dal.vo.VipCardRecordVo">