From 3e803d1ec0583cb60dfedc63a8e31fb7b29fffdc Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Wed, 15 Dec 2021 14:23:22 +0800
Subject: [PATCH] 20211214

---
 src/main/resources/mapper/modules/VideoCollectionMapper.xml                    |   41 ++++
 src/main/java/cc/mrbird/febs/video/vo/ApiMyVideoHistoryVo.java                 |   31 +++
 src/main/java/cc/mrbird/febs/video/vo/ApiVideoMemberVo.java                    |  105 +++++++++++
 pom.xml                                                                        |   29 +++
 src/main/java/cc/mrbird/febs/video/controller/ApiVideoMemberController.java    |   71 +++++++
 src/main/java/cc/mrbird/febs/video/dto/ApiMyVideoCollectionDto.java            |   19 ++
 src/main/java/cc/mrbird/febs/video/entity/DataDictionaryCustom.java            |   19 ++
 src/main/java/cc/mrbird/febs/video/vo/ApiMyVideoCollectionVo.java              |   22 ++
 src/main/java/cc/mrbird/febs/video/conversion/VideoMemberConversion.java       |   15 +
 src/main/java/cc/mrbird/febs/video/mapper/DataDictionaryCustomMapper.java      |   14 +
 src/main/java/cc/mrbird/febs/video/service/IApiVideoMemberService.java         |   12 +
 src/main/java/cc/mrbird/febs/video/dto/ApiMyVideoHistoryDto.java               |   20 ++
 src/main/resources/mapper/modules/DataDictionaryCustomMapper.xml               |   14 +
 src/main/java/cc/mrbird/febs/video/service/impl/ApiVideoMemberServiceImpl.java |   67 ++++++-
 src/main/java/cc/mrbird/febs/common/utils/LoginUserUtil.java                   |   15 +
 src/main/java/cc/mrbird/febs/video/mapper/VideoCollectionMapper.java           |   17 +
 src/main/java/cc/mrbird/febs/video/vo/ApiVipCostVo.java                        |   20 ++
 17 files changed, 519 insertions(+), 12 deletions(-)

diff --git a/pom.xml b/pom.xml
index 48804c6..6498c71 100644
--- a/pom.xml
+++ b/pom.xml
@@ -22,9 +22,17 @@
         <swagger.ui>2.9.2</swagger.ui>
         <tomcat.version>9.0.31</tomcat.version>
         <hutool.version>5.3.1</hutool.version>
+        <mapstruct.version>1.3.1.Final</mapstruct.version>
     </properties>
 
     <dependencies>
+
+        <dependency>
+            <groupId>org.mapstruct</groupId>
+            <artifactId>mapstruct</artifactId>
+            <version>${mapstruct.version}</version>
+        </dependency>
+
         <dependency>
             <groupId>cn.hutool</groupId>
             <artifactId>hutool-all</artifactId>
@@ -228,6 +236,27 @@
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin</artifactId>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.5.1</version>
+                <configuration>
+                    <source>${java.version}</source>
+                    <target>${java.version}</target>
+                    <annotationProcessorPaths>
+                        <path>
+                            <groupId>org.mapstruct</groupId>
+                            <artifactId>mapstruct-processor</artifactId>
+                            <version>${mapstruct.version}</version>
+                        </path>
+                        <path>
+                            <groupId>org.projectlombok</groupId>
+                            <artifactId>lombok</artifactId>
+                            <version>${lombok.version}</version>
+                        </path>
+                    </annotationProcessorPaths>
+                </configuration>
+            </plugin>
         </plugins>
     </build>
 </project>
diff --git a/src/main/java/cc/mrbird/febs/common/utils/LoginUserUtil.java b/src/main/java/cc/mrbird/febs/common/utils/LoginUserUtil.java
new file mode 100644
index 0000000..8af2d91
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/common/utils/LoginUserUtil.java
@@ -0,0 +1,15 @@
+package cc.mrbird.febs.common.utils;
+
+import cc.mrbird.febs.video.entity.VideoMemberEntity;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+
+public class LoginUserUtil {
+
+    public static VideoMemberEntity getLoginUser() {
+        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest();
+        return (VideoMemberEntity) request.getSession().getAttribute("member");
+    }
+}
diff --git a/src/main/java/cc/mrbird/febs/video/controller/ApiVideoMemberController.java b/src/main/java/cc/mrbird/febs/video/controller/ApiVideoMemberController.java
new file mode 100644
index 0000000..5cb81f7
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/video/controller/ApiVideoMemberController.java
@@ -0,0 +1,71 @@
+package cc.mrbird.febs.video.controller;
+
+import cc.mrbird.febs.common.entity.FebsResponse;
+import cc.mrbird.febs.video.dto.ApiMyVideoCollectionDto;
+import cc.mrbird.febs.video.dto.ApiMyVideoHistoryDto;
+import cc.mrbird.febs.video.service.IApiVideoMemberService;
+import cc.mrbird.febs.video.vo.ApiMyVideoCollectionVo;
+import cc.mrbird.febs.video.vo.ApiMyVideoHistoryVo;
+import cc.mrbird.febs.video.vo.ApiVideoMemberVo;
+import cc.mrbird.febs.video.vo.ApiVipCostVo;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+@Slf4j
+@CrossOrigin("*")
+@RequiredArgsConstructor
+@RestController
+@RequestMapping(value = "/api/member")
+public class ApiVideoMemberController {
+
+    private final IApiVideoMemberService memberService;
+
+    @ApiOperation(value = "退出登录", notes = "退出登录")
+    @PostMapping(value = "/logout")
+    public FebsResponse logout() {
+        return memberService.logout();
+    }
+
+    @ApiOperation(value = "获取用户信息", notes = "获取用户信息")
+    @ApiResponses({
+            @ApiResponse(code = 200, message = "success", response = ApiVideoMemberVo.class)
+    })
+    @GetMapping(value = "/findMemberInfo")
+    public FebsResponse findMemberInfo() {
+        return memberService.findMemberInfo();
+    }
+
+    @ApiOperation(value = "我的收藏")
+    @ApiResponses({
+            @ApiResponse(code = 200, message = "success", response = ApiMyVideoCollectionVo.class)
+    })
+    @PostMapping(value = "/myCollection")
+    public FebsResponse myCollection(@RequestBody ApiMyVideoCollectionDto apiMyVideoCollectionDto) {
+        return memberService.myCollection(apiMyVideoCollectionDto);
+    }
+
+    @ApiOperation(value = "观看历史")
+    @ApiResponses({
+            @ApiResponse(code = 200, message = "success", response = ApiMyVideoHistoryVo.class)
+    })
+    @PostMapping(value = "/myHistory")
+    public FebsResponse myHistory(@RequestBody ApiMyVideoHistoryDto apiMyVideoHistoryDto) {
+        return memberService.myHistory(apiMyVideoHistoryDto);
+    }
+
+    @ApiOperation(value = "视频VIP价格", notes = "视频VIP价格")
+    @ApiResponses({
+            @ApiResponse(code = 200, message = "success", response = ApiVipCostVo.class)
+    })
+    @GetMapping(value = "/vipCostInfo")
+    public FebsResponse vipCostInfo() {
+        return memberService.vipCostInfo();
+    }
+
+
+
+}
diff --git a/src/main/java/cc/mrbird/febs/video/conversion/VideoMemberConversion.java b/src/main/java/cc/mrbird/febs/video/conversion/VideoMemberConversion.java
new file mode 100644
index 0000000..42af423
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/video/conversion/VideoMemberConversion.java
@@ -0,0 +1,15 @@
+package cc.mrbird.febs.video.conversion;
+
+import cc.mrbird.febs.video.entity.VideoMemberEntity;
+import cc.mrbird.febs.video.vo.ApiVideoMemberVo;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+@Mapper
+public abstract class VideoMemberConversion {
+
+    public static final VideoMemberConversion INSTANCE = Mappers.getMapper(VideoMemberConversion.class);
+
+    public abstract ApiVideoMemberVo entityToVo(VideoMemberEntity videoMemberEntity);
+
+}
diff --git a/src/main/java/cc/mrbird/febs/video/dto/ApiMyVideoCollectionDto.java b/src/main/java/cc/mrbird/febs/video/dto/ApiMyVideoCollectionDto.java
new file mode 100644
index 0000000..ba4f2c0
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/video/dto/ApiMyVideoCollectionDto.java
@@ -0,0 +1,19 @@
+package cc.mrbird.febs.video.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "ApiMyVideoCollectionDto", description = "接收参数类")
+public class ApiMyVideoCollectionDto {
+
+    @ApiModelProperty(value = "一页多少个", example = "10")
+    private Integer pageSize;
+
+    @ApiModelProperty(value = "页码", example = "1")
+    private Integer pageNum;
+
+    @ApiModelProperty(hidden = true)
+    private Long memberId;
+}
diff --git a/src/main/java/cc/mrbird/febs/video/dto/ApiMyVideoHistoryDto.java b/src/main/java/cc/mrbird/febs/video/dto/ApiMyVideoHistoryDto.java
new file mode 100644
index 0000000..e2abefa
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/video/dto/ApiMyVideoHistoryDto.java
@@ -0,0 +1,20 @@
+package cc.mrbird.febs.video.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "ApiMyVideoHistoryDto", description = "接收参数类")
+public class ApiMyVideoHistoryDto {
+
+    @ApiModelProperty(value = "一页多少个", example = "10")
+    private Integer pageSize;
+
+    @ApiModelProperty(value = "页码", example = "1")
+    private Integer pageNum;
+
+    @ApiModelProperty(hidden = true)
+    private Long memberId;
+
+}
diff --git a/src/main/java/cc/mrbird/febs/video/entity/DataDictionaryCustom.java b/src/main/java/cc/mrbird/febs/video/entity/DataDictionaryCustom.java
new file mode 100644
index 0000000..88687a9
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/video/entity/DataDictionaryCustom.java
@@ -0,0 +1,19 @@
+package cc.mrbird.febs.video.entity;
+
+import cc.mrbird.febs.common.entity.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+@Data
+@TableName("data_dictionary_custom")
+public class DataDictionaryCustom extends BaseEntity {
+
+    private String type;
+
+    private String code;
+
+    private String value;
+
+    private String description;
+
+}
diff --git a/src/main/java/cc/mrbird/febs/video/mapper/DataDictionaryCustomMapper.java b/src/main/java/cc/mrbird/febs/video/mapper/DataDictionaryCustomMapper.java
new file mode 100644
index 0000000..0f3280e
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/video/mapper/DataDictionaryCustomMapper.java
@@ -0,0 +1,14 @@
+package cc.mrbird.febs.video.mapper;
+
+import cc.mrbird.febs.video.entity.DataDictionaryCustom;
+import cc.mrbird.febs.video.vo.ApiVipCostVo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface DataDictionaryCustomMapper extends BaseMapper<DataDictionaryCustom> {
+
+    List<ApiVipCostVo> selectApiVipCostByType(@Param("type") String type);
+
+}
diff --git a/src/main/java/cc/mrbird/febs/video/mapper/VideoCollectionMapper.java b/src/main/java/cc/mrbird/febs/video/mapper/VideoCollectionMapper.java
new file mode 100644
index 0000000..c0a822b
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/video/mapper/VideoCollectionMapper.java
@@ -0,0 +1,17 @@
+package cc.mrbird.febs.video.mapper;
+
+import cc.mrbird.febs.video.dto.ApiMyVideoCollectionDto;
+import cc.mrbird.febs.video.dto.ApiMyVideoHistoryDto;
+import cc.mrbird.febs.video.entity.VideoCollectionEntity;
+import cc.mrbird.febs.video.vo.ApiMyVideoCollectionVo;
+import cc.mrbird.febs.video.vo.ApiMyVideoHistoryVo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
+
+public interface VideoCollectionMapper extends BaseMapper<VideoCollectionEntity> {
+
+    IPage<ApiMyVideoCollectionVo> selectApiVideoCollectionInPage(IPage<ApiMyVideoCollectionVo> page, @Param("record")ApiMyVideoCollectionDto apiMyVideoCollectionDto);
+
+    IPage<ApiMyVideoHistoryVo> selectApiMyVideoHistoryInPage(IPage<ApiMyVideoHistoryVo> page, @Param("record")ApiMyVideoHistoryDto apiMyVideoHistoryDto);
+}
diff --git a/src/main/java/cc/mrbird/febs/video/service/IApiVideoMemberService.java b/src/main/java/cc/mrbird/febs/video/service/IApiVideoMemberService.java
index 36a707d..914db3e 100644
--- a/src/main/java/cc/mrbird/febs/video/service/IApiVideoMemberService.java
+++ b/src/main/java/cc/mrbird/febs/video/service/IApiVideoMemberService.java
@@ -1,6 +1,8 @@
 package cc.mrbird.febs.video.service;
 
 import cc.mrbird.febs.common.entity.FebsResponse;
+import cc.mrbird.febs.video.dto.ApiMyVideoCollectionDto;
+import cc.mrbird.febs.video.dto.ApiMyVideoHistoryDto;
 import cc.mrbird.febs.video.dto.LoginDto;
 import cc.mrbird.febs.video.dto.RegisterDto;
 import cc.mrbird.febs.video.entity.VideoMemberEntity;
@@ -11,4 +13,14 @@
     FebsResponse register(RegisterDto registerDto);
 
     FebsResponse toLogin(LoginDto loginDto);
+
+    FebsResponse logout();
+
+    FebsResponse findMemberInfo();
+
+    FebsResponse myCollection(ApiMyVideoCollectionDto apiMyVideoCollectionDto);
+
+    FebsResponse myHistory(ApiMyVideoHistoryDto apiMyVideoHistoryDto);
+
+    FebsResponse vipCostInfo();
 }
diff --git a/src/main/java/cc/mrbird/febs/video/service/impl/ApiVideoMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/video/service/impl/ApiVideoMemberServiceImpl.java
index 5b0b4be..8379729 100644
--- a/src/main/java/cc/mrbird/febs/video/service/impl/ApiVideoMemberServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/video/service/impl/ApiVideoMemberServiceImpl.java
@@ -3,13 +3,24 @@
 import cc.mrbird.febs.common.entity.FebsResponse;
 import cc.mrbird.febs.common.exception.FebsException;
 import cc.mrbird.febs.common.utils.AppContants;
+import cc.mrbird.febs.common.utils.LoginUserUtil;
 import cc.mrbird.febs.common.utils.RedisUtils;
 import cc.mrbird.febs.common.utils.ShareCodeUtil;
+import cc.mrbird.febs.video.conversion.VideoMemberConversion;
+import cc.mrbird.febs.video.dto.ApiMyVideoCollectionDto;
+import cc.mrbird.febs.video.dto.ApiMyVideoHistoryDto;
 import cc.mrbird.febs.video.dto.LoginDto;
 import cc.mrbird.febs.video.dto.RegisterDto;
+import cc.mrbird.febs.video.entity.DataDictionaryCustom;
 import cc.mrbird.febs.video.entity.VideoMemberEntity;
+import cc.mrbird.febs.video.mapper.DataDictionaryCustomMapper;
+import cc.mrbird.febs.video.mapper.VideoCollectionMapper;
 import cc.mrbird.febs.video.mapper.VideoMemberMapper;
 import cc.mrbird.febs.video.service.IApiVideoMemberService;
+import cc.mrbird.febs.video.vo.ApiMyVideoCollectionVo;
+import cc.mrbird.febs.video.vo.ApiMyVideoHistoryVo;
+import cc.mrbird.febs.video.vo.ApiVideoMemberVo;
+import cc.mrbird.febs.video.vo.ApiVipCostVo;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
@@ -17,13 +28,15 @@
 import cn.hutool.crypto.asymmetric.KeyType;
 import cn.hutool.crypto.asymmetric.RSA;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
-import java.math.BigDecimal;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 @Slf4j
@@ -32,6 +45,8 @@
 public class ApiVideoMemberServiceImpl extends ServiceImpl<VideoMemberMapper, VideoMemberEntity> implements IApiVideoMemberService {
 
     private final RedisUtils redisUtils;
+    private final VideoCollectionMapper videoCollectionMapper;
+    private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
 
     @Override
     public FebsResponse register(RegisterDto registerDto) {
@@ -39,28 +54,17 @@
         if (videoMember != null) {
             throw new FebsException("该账号已被占用");
         }
-
         videoMember = new VideoMemberEntity();
         videoMember.setPassword(SecureUtil.md5(registerDto.getPassword()));
-
-//        // 判断账号类型
-//        if (AppContants.ACCOUNT_TYPE_MOBILE.equals(registerDto.getType())) {
-//            videoMember.setPhone(registerDto.getAccount());
-//        } else {
-//            videoMember.setEmail(registerDto.getAccount());
-//        }
-
         videoMember.setAccount(registerDto.getAccount());
         videoMember.setName(registerDto.getAccount());
         videoMember.setAccountStatus(VideoMemberEntity.ACCOUNT_STATUS_ENABLE);
         videoMember.setAccountType(VideoMemberEntity.ACCOUNT_TYPE_NORMAL);
         videoMember.setIsVip(VideoMemberEntity.ISVIP_STATUS_NO);
-
         this.baseMapper.insert(videoMember);
 
         String inviteId = ShareCodeUtil.toSerialCode(videoMember.getId());
         videoMember.setInviteId(inviteId);
-
         //推荐人和推荐人链
         boolean flag = false;
         String parentId = videoMember.getRefererId();
@@ -123,6 +127,45 @@
         return new FebsResponse().success().data(authInfo);
     }
 
+    @Override
+    public FebsResponse logout() {
+        Long id = LoginUserUtil.getLoginUser().getId();
+        redisUtils.del(AppContants.APP_LOGIN_PREFIX + id);
+        return new FebsResponse().success().message("退出登录");
+    }
+
+    @Override
+    public FebsResponse findMemberInfo() {
+        Long id = LoginUserUtil.getLoginUser().getId();
+        VideoMemberEntity videoMemberEntity = this.baseMapper.selectById(id);
+        ApiVideoMemberVo apiVideoMemberVo = VideoMemberConversion.INSTANCE.entityToVo(videoMemberEntity);
+        return new FebsResponse().success().data(apiVideoMemberVo);
+    }
+
+    @Override
+    public FebsResponse myCollection(ApiMyVideoCollectionDto apiMyVideoCollectionDto) {
+        IPage<ApiMyVideoCollectionVo> page = new Page<>(apiMyVideoCollectionDto.getPageNum(), apiMyVideoCollectionDto.getPageSize());
+        Long id = LoginUserUtil.getLoginUser().getId();
+        apiMyVideoCollectionDto.setMemberId(id);
+        IPage<ApiMyVideoCollectionVo> pages = videoCollectionMapper.selectApiVideoCollectionInPage(page, apiMyVideoCollectionDto);
+        return new FebsResponse().success().data(pages);
+    }
+
+    @Override
+    public FebsResponse myHistory(ApiMyVideoHistoryDto apiMyVideoHistoryDto) {
+        IPage<ApiMyVideoHistoryVo> page = new Page<>(apiMyVideoHistoryDto.getPageNum(), apiMyVideoHistoryDto.getPageSize());
+        Long id = LoginUserUtil.getLoginUser().getId();
+        apiMyVideoHistoryDto.setMemberId(id);
+        IPage<ApiMyVideoHistoryVo> pages = videoCollectionMapper.selectApiMyVideoHistoryInPage(page, apiMyVideoHistoryDto);
+        return new FebsResponse().success().data(pages);
+    }
+
+    @Override
+    public FebsResponse vipCostInfo() {
+        List<ApiVipCostVo> dataDictionaryCustoms = dataDictionaryCustomMapper.selectApiVipCostByType("VIP_COST");
+        return new FebsResponse().success().data(dataDictionaryCustoms);
+    }
+
 
     public String generateAsaToken(String token) {
         RSA rsa = new RSA(null, AppContants.PUBLIC_KEY);
diff --git a/src/main/java/cc/mrbird/febs/video/vo/ApiMyVideoCollectionVo.java b/src/main/java/cc/mrbird/febs/video/vo/ApiMyVideoCollectionVo.java
new file mode 100644
index 0000000..10ffc3a
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/video/vo/ApiMyVideoCollectionVo.java
@@ -0,0 +1,22 @@
+package cc.mrbird.febs.video.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "ApiMyVideoCollectionVo", description = "返回参数类")
+public class ApiMyVideoCollectionVo {
+
+    @ApiModelProperty(value = "视频ID")
+    private Long id;
+
+    @ApiModelProperty(value = "标题")
+    private String title;
+
+    @ApiModelProperty(value = "简介")
+    private String intro;
+
+    @ApiModelProperty(value = "缩略图")
+    private String thumb;
+}
diff --git a/src/main/java/cc/mrbird/febs/video/vo/ApiMyVideoHistoryVo.java b/src/main/java/cc/mrbird/febs/video/vo/ApiMyVideoHistoryVo.java
new file mode 100644
index 0000000..f0fbe9b
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/video/vo/ApiMyVideoHistoryVo.java
@@ -0,0 +1,31 @@
+package cc.mrbird.febs.video.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "ApiMyVideoHistoryVo", description = "返回参数类")
+public class ApiMyVideoHistoryVo {
+
+    @ApiModelProperty(value = "视频ID")
+    private Long id;
+
+    @ApiModelProperty(value = "标题")
+    private String title;
+
+    @ApiModelProperty(value = "简介")
+    private String intro;
+
+    @ApiModelProperty(value = "缩略图")
+    private String thumb;
+
+    @ApiModelProperty(value = "章节名称")
+    private String name;
+
+    @ApiModelProperty(value = "视频地址")
+    private String videoUrl;
+
+    @ApiModelProperty(value = "资源ID")
+    private Long sourceId;
+}
diff --git a/src/main/java/cc/mrbird/febs/video/vo/ApiVideoMemberVo.java b/src/main/java/cc/mrbird/febs/video/vo/ApiVideoMemberVo.java
new file mode 100644
index 0000000..49bce2c
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/video/vo/ApiVideoMemberVo.java
@@ -0,0 +1,105 @@
+package cc.mrbird.febs.video.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "ApiVideoMemberVo", description = "返回参数类")
+public class ApiVideoMemberVo {
+
+    private Long id;
+
+    /**
+     * 账号
+     */
+
+    @ApiModelProperty(value = "账号")
+    private String account;
+
+    /**
+     * 昵称
+     */
+    @ApiModelProperty(value = "昵称")
+    private String name;
+
+    /**
+     * 头像
+     */
+    @ApiModelProperty(value = "头像")
+    private String avatar;
+
+    /**
+     * 手机号
+     */
+    @ApiModelProperty(value = "手机号")
+    private String phone;
+
+    /**
+     * 邮箱
+     */
+    @ApiModelProperty(value = "邮箱")
+    private String email;
+
+    /**
+     * 邀请码
+     */
+    @ApiModelProperty(value = "邀请码")
+    private String inviteId;
+
+    /**
+     * 父级邀请码
+     */
+//    @ApiModelProperty(value = "父级邀请码")
+//    private String refererId;
+
+    /**
+     * 父级邀请码链
+     */
+//    @ApiModelProperty(value = "父级邀请码链")
+//    private String refererIds;
+
+    /**
+     * 是否会员 1/是 2/否
+     */
+    @ApiModelProperty(value = "是否会员 1/是 2/否")
+    private Integer isVip;
+
+    /**
+     * 是
+     */
+    public static final Integer ISVIP_STATUS_YES = 1;
+    /**
+     * 否
+     */
+    public static final Integer ISVIP_STATUS_NO = 2;
+
+    /**
+     * 账号状态 1/正常 2/禁用
+     */
+    @ApiModelProperty(value = "账号状态 1/正常 2/禁用")
+    private Integer accountStatus;
+    /**
+     * 启用
+     */
+    public static final Integer ACCOUNT_STATUS_ENABLE = 1;
+    /**
+     * 禁用
+     */
+    public static final Integer ACCOUNT_STATUS_DISABLED = 2;
+
+    /**
+     * 账号类型 1/正常 2/测试
+     */
+    @ApiModelProperty(value = "账号类型 1/正常 2/测试")
+    private Integer accountType;
+
+    /**
+     * 正常账号
+     */
+    public static final Integer ACCOUNT_TYPE_NORMAL = 1;
+    /**
+     * 测试账号
+     */
+    public static final Integer ACCOUNT_TYPE_TEST = 2;
+}
diff --git a/src/main/java/cc/mrbird/febs/video/vo/ApiVipCostVo.java b/src/main/java/cc/mrbird/febs/video/vo/ApiVipCostVo.java
new file mode 100644
index 0000000..f2abbde
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/video/vo/ApiVipCostVo.java
@@ -0,0 +1,20 @@
+package cc.mrbird.febs.video.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "ApiVipMemberVo", description = "返回参数类")
+public class ApiVipCostVo {
+
+    @ApiModelProperty(value = "编码")
+    private String code;
+
+    @ApiModelProperty(value = "价格")
+    private String value;
+
+    @ApiModelProperty(value = "描述")
+    private String description;
+
+}
diff --git a/src/main/resources/mapper/modules/DataDictionaryCustomMapper.xml b/src/main/resources/mapper/modules/DataDictionaryCustomMapper.xml
new file mode 100644
index 0000000..dfc1568
--- /dev/null
+++ b/src/main/resources/mapper/modules/DataDictionaryCustomMapper.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cc.mrbird.febs.video.mapper.DataDictionaryCustomMapper">
+
+    <select id="selectApiVipCostByType" resultType="cc.mrbird.febs.video.vo.ApiVipCostVo">
+        select
+               a.code code,
+               a.value value,
+               a.description description
+        from data_dictionary_custom a
+        where a.type = #{type}
+    </select>
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/modules/VideoCollectionMapper.xml b/src/main/resources/mapper/modules/VideoCollectionMapper.xml
new file mode 100644
index 0000000..2b2d77e
--- /dev/null
+++ b/src/main/resources/mapper/modules/VideoCollectionMapper.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cc.mrbird.febs.video.mapper.VideoCollectionMapper">
+
+    <select id="selectApiVideoCollectionInPage" resultType="cc.mrbird.febs.video.vo.ApiMyVideoCollectionVo">
+        select
+        a.video_id id,
+        b.title title,
+        b.intro intro,
+        b.thumb thumb
+        from video_collection a
+        left join video_master_info b on a.video_id = b.id
+        <where>
+            <if test="record.memberId != null">
+                and a.member_id=#{record.memberId}
+            </if>
+        </where>
+        order by a.created_time desc
+    </select>
+
+    <select id="selectApiMyVideoHistoryInPage" resultType="cc.mrbird.febs.video.vo.ApiMyVideoHistoryVo">
+        select
+        a.video_id id,
+        b.title title,
+        b.intro intro,
+        b.thumb thumb,
+        c.name name,
+        c.video_url videoUrl,
+        c.source_id sourceId
+        from video_history a
+        left join video_master_info b on a.video_id = b.id
+        left join video_master_items c on a.video_item_id = c.id
+        <where>
+            <if test="record.memberId != null">
+                and a.member_id=#{record.memberId}
+            </if>
+        </where>
+        order by a.created_time desc
+    </select>
+
+</mapper>
\ No newline at end of file

--
Gitblit v1.9.1