Explorar o código

feat: 参数修改

xdd hai 1 mes
pai
achega
50c00a27e3
Modificáronse 100 ficheiros con 5501 adicións e 0 borrados
  1. 87 0
      fs-service-system/src/main/java/com/fs/course/GetObjectDemo.java
  2. 60 0
      fs-service-system/src/main/java/com/fs/course/HuaweiCloudTest.java
  3. 34 0
      fs-service-system/src/main/java/com/fs/course/config/CourseConfig.java
  4. 48 0
      fs-service-system/src/main/java/com/fs/course/config/CourseMaConfig.java
  5. 51 0
      fs-service-system/src/main/java/com/fs/course/config/RedPacketConfig.java
  6. 47 0
      fs-service-system/src/main/java/com/fs/course/domain/FsCollection.java
  7. 67 0
      fs-service-system/src/main/java/com/fs/course/domain/FsCourseAnswerLogs.java
  8. 66 0
      fs-service-system/src/main/java/com/fs/course/domain/FsCourseAnswerLogsClickHouse.java
  9. 58 0
      fs-service-system/src/main/java/com/fs/course/domain/FsCourseAnswerReward.java
  10. 29 0
      fs-service-system/src/main/java/com/fs/course/domain/FsCourseDomainName.java
  11. 61 0
      fs-service-system/src/main/java/com/fs/course/domain/FsCourseFinishTemp.java
  12. 64 0
      fs-service-system/src/main/java/com/fs/course/domain/FsCourseLink.java
  13. 45 0
      fs-service-system/src/main/java/com/fs/course/domain/FsCourseQuestionBank.java
  14. 37 0
      fs-service-system/src/main/java/com/fs/course/domain/FsCourseRealLink.java
  15. 63 0
      fs-service-system/src/main/java/com/fs/course/domain/FsCourseRedPacketHistoryLog.java
  16. 64 0
      fs-service-system/src/main/java/com/fs/course/domain/FsCourseRedPacketLog.java
  17. 43 0
      fs-service-system/src/main/java/com/fs/course/domain/FsCourseRedPacketLogClickHouse.java
  18. 68 0
      fs-service-system/src/main/java/com/fs/course/domain/FsCourseRedPacketRetry.java
  19. 54 0
      fs-service-system/src/main/java/com/fs/course/domain/FsCourseSop.java
  20. 85 0
      fs-service-system/src/main/java/com/fs/course/domain/FsCourseSopAppLink.java
  21. 90 0
      fs-service-system/src/main/java/com/fs/course/domain/FsCourseSopLogs.java
  22. 58 0
      fs-service-system/src/main/java/com/fs/course/domain/FsCourseTrafficLog.java
  23. 69 0
      fs-service-system/src/main/java/com/fs/course/domain/FsCourseWatchComment.java
  24. 104 0
      fs-service-system/src/main/java/com/fs/course/domain/FsCourseWatchHistoryLog.java
  25. 84 0
      fs-service-system/src/main/java/com/fs/course/domain/FsCourseWatchLog.java
  26. 120 0
      fs-service-system/src/main/java/com/fs/course/domain/FsCourseWatchLogClickHouse.java
  27. 54 0
      fs-service-system/src/main/java/com/fs/course/domain/FsMessTemp.java
  28. 73 0
      fs-service-system/src/main/java/com/fs/course/domain/FsUserCompanyBind.java
  29. 150 0
      fs-service-system/src/main/java/com/fs/course/domain/FsUserCourse.java
  30. 43 0
      fs-service-system/src/main/java/com/fs/course/domain/FsUserCourseCategory.java
  31. 53 0
      fs-service-system/src/main/java/com/fs/course/domain/FsUserCourseComment.java
  32. 30 0
      fs-service-system/src/main/java/com/fs/course/domain/FsUserCourseCommentLike.java
  33. 69 0
      fs-service-system/src/main/java/com/fs/course/domain/FsUserCourseComplaintRecord.java
  34. 29 0
      fs-service-system/src/main/java/com/fs/course/domain/FsUserCourseComplaintType.java
  35. 28 0
      fs-service-system/src/main/java/com/fs/course/domain/FsUserCourseFavorite.java
  36. 29 0
      fs-service-system/src/main/java/com/fs/course/domain/FsUserCourseFollow.java
  37. 29 0
      fs-service-system/src/main/java/com/fs/course/domain/FsUserCourseLike.java
  38. 54 0
      fs-service-system/src/main/java/com/fs/course/domain/FsUserCourseNote.java
  39. 29 0
      fs-service-system/src/main/java/com/fs/course/domain/FsUserCourseNoteLike.java
  40. 29 0
      fs-service-system/src/main/java/com/fs/course/domain/FsUserCourseNoteSave.java
  41. 86 0
      fs-service-system/src/main/java/com/fs/course/domain/FsUserCourseOrder.java
  42. 97 0
      fs-service-system/src/main/java/com/fs/course/domain/FsUserCoursePeriod.java
  43. 51 0
      fs-service-system/src/main/java/com/fs/course/domain/FsUserCourseStudy.java
  44. 63 0
      fs-service-system/src/main/java/com/fs/course/domain/FsUserCourseStudyLog.java
  45. 88 0
      fs-service-system/src/main/java/com/fs/course/domain/FsUserCourseVideo.java
  46. 34 0
      fs-service-system/src/main/java/com/fs/course/domain/FsUserCourseVideoRedPackage.java
  47. 141 0
      fs-service-system/src/main/java/com/fs/course/domain/FsUserTalent.java
  48. 29 0
      fs-service-system/src/main/java/com/fs/course/domain/FsUserTalentFollow.java
  49. 138 0
      fs-service-system/src/main/java/com/fs/course/domain/FsUserVideo.java
  50. 54 0
      fs-service-system/src/main/java/com/fs/course/domain/FsUserVideoComment.java
  51. 30 0
      fs-service-system/src/main/java/com/fs/course/domain/FsUserVideoCommentLike.java
  52. 30 0
      fs-service-system/src/main/java/com/fs/course/domain/FsUserVideoFavorite.java
  53. 30 0
      fs-service-system/src/main/java/com/fs/course/domain/FsUserVideoLike.java
  54. 37 0
      fs-service-system/src/main/java/com/fs/course/domain/FsUserVideoTags.java
  55. 32 0
      fs-service-system/src/main/java/com/fs/course/domain/FsUserVideoView.java
  56. 62 0
      fs-service-system/src/main/java/com/fs/course/domain/FsUserVipOrder.java
  57. 51 0
      fs-service-system/src/main/java/com/fs/course/domain/FsUserVipPackage.java
  58. 71 0
      fs-service-system/src/main/java/com/fs/course/domain/FsVideoBarrage.java
  59. 34 0
      fs-service-system/src/main/java/com/fs/course/domain/FsVideoCollection.java
  60. 28 0
      fs-service-system/src/main/java/com/fs/course/domain/FsVideoKey.java
  61. 95 0
      fs-service-system/src/main/java/com/fs/course/domain/FsVideoResource.java
  62. 55 0
      fs-service-system/src/main/java/com/fs/course/domain/MarketPush.java
  63. 30 0
      fs-service-system/src/main/java/com/fs/course/domain/QwCourseLiveTemp.java
  64. 14 0
      fs-service-system/src/main/java/com/fs/course/dto/CoursePackageDTO.java
  65. 142 0
      fs-service-system/src/main/java/com/fs/course/dto/FsVideoCollectionDTO.java
  66. 29 0
      fs-service-system/src/main/java/com/fs/course/dto/StatisQueryDTO.java
  67. 11 0
      fs-service-system/src/main/java/com/fs/course/dto/UserCourseStudyDto.java
  68. 9 0
      fs-service-system/src/main/java/com/fs/course/dto/VideoFavoriteStatusDTO.java
  69. 9 0
      fs-service-system/src/main/java/com/fs/course/dto/VideoLikeStatusDTO.java
  70. 11 0
      fs-service-system/src/main/java/com/fs/course/dto/WatchLogDTO.java
  71. 27 0
      fs-service-system/src/main/java/com/fs/course/enums/CourseWatchLogTypeEnum.java
  72. 48 0
      fs-service-system/src/main/java/com/fs/course/mapper/FsUserCourseMapper.java
  73. 22 0
      fs-service-system/src/main/java/com/fs/course/service/IFsUserCourseService.java
  74. 48 0
      fs-service-system/src/main/java/com/fs/course/service/impl/FsUserCourseServiceImpl.java
  75. 11 0
      fs-service-system/src/main/java/com/fs/course/vo/CourseInfoVO.java
  76. 11 0
      fs-service-system/src/main/java/com/fs/course/vo/CourseVideoVO.java
  77. 80 0
      fs-service-system/src/main/java/com/fs/course/vo/FsCourseAnswerLogsListVO.java
  78. 64 0
      fs-service-system/src/main/java/com/fs/course/vo/FsCourseFinishTempVO.java
  79. 26 0
      fs-service-system/src/main/java/com/fs/course/vo/FsCourseListBySidebarVO.java
  80. 26 0
      fs-service-system/src/main/java/com/fs/course/vo/FsCourseOverVO.java
  81. 102 0
      fs-service-system/src/main/java/com/fs/course/vo/FsCourseRedPacketHistoryLogVO.java
  82. 92 0
      fs-service-system/src/main/java/com/fs/course/vo/FsCourseRedPacketLogListPVO.java
  83. 32 0
      fs-service-system/src/main/java/com/fs/course/vo/FsCourseSopAiListVO.java
  84. 52 0
      fs-service-system/src/main/java/com/fs/course/vo/FsCourseSopListVO.java
  85. 95 0
      fs-service-system/src/main/java/com/fs/course/vo/FsCourseSopLogsCVOList.java
  86. 95 0
      fs-service-system/src/main/java/com/fs/course/vo/FsCourseSopLogsListVO.java
  87. 97 0
      fs-service-system/src/main/java/com/fs/course/vo/FsCourseSopLogsTVOList.java
  88. 100 0
      fs-service-system/src/main/java/com/fs/course/vo/FsCourseSopLogsVO.java
  89. 22 0
      fs-service-system/src/main/java/com/fs/course/vo/FsCourseTrafficLogListVO.java
  90. 7 0
      fs-service-system/src/main/java/com/fs/course/vo/FsCourseUserStatisticsListVO.java
  91. 37 0
      fs-service-system/src/main/java/com/fs/course/vo/FsCourseVideoListBySidebarVO.java
  92. 58 0
      fs-service-system/src/main/java/com/fs/course/vo/FsCourseWatchCommentListVO.java
  93. 54 0
      fs-service-system/src/main/java/com/fs/course/vo/FsCourseWatchCommentVO.java
  94. 107 0
      fs-service-system/src/main/java/com/fs/course/vo/FsCourseWatchLogListVO.java
  95. 10 0
      fs-service-system/src/main/java/com/fs/course/vo/FsCourseWatchLogScoreVO.java
  96. 33 0
      fs-service-system/src/main/java/com/fs/course/vo/FsCourseWatchLogStatisticsListVO.java
  97. 57 0
      fs-service-system/src/main/java/com/fs/course/vo/FsCourseWatchLogVO.java
  98. 44 0
      fs-service-system/src/main/java/com/fs/course/vo/FsSopMyCourseLinkVO.java
  99. 51 0
      fs-service-system/src/main/java/com/fs/course/vo/FsUserCourseCommentListUVO.java
  100. 47 0
      fs-service-system/src/main/java/com/fs/course/vo/FsUserCourseCommentListVO.java

+ 87 - 0
fs-service-system/src/main/java/com/fs/course/GetObjectDemo.java

@@ -0,0 +1,87 @@
+package com.fs.course;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import com.qcloud.cos.COSClient;
+import com.qcloud.cos.ClientConfig;
+import com.qcloud.cos.auth.BasicCOSCredentials;
+import com.qcloud.cos.auth.COSCredentials;
+import com.qcloud.cos.exception.CosClientException;
+import com.qcloud.cos.exception.CosServiceException;
+import com.qcloud.cos.model.COSObject;
+import com.qcloud.cos.model.GetObjectRequest;
+import com.qcloud.cos.region.Region;
+import com.qcloud.cos.utils.IOUtils;
+
+public class GetObjectDemo {
+    private static String secretId = "AKIDiMq9lDf2EOM9lIfqqfKo7FNgM5meD0sT";
+    private static String secretKey = "u5SuS80342xzx8FRBukza9lVNHKNMSaB";
+    private static String bucketName = "hylj-1323137866";
+    private static String region = "ap-chongqing";
+    private static COSClient cosClient = createClient();
+
+    public static void main(String[] args) {
+        try {
+            getObjectInputStreamDemo();
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            cosClient.shutdown();
+        }
+    }
+
+    private static COSClient createClient() {
+        // 初始化用户身份信息(secretId, secretKey)
+        COSCredentials cred = new BasicCOSCredentials(secretId,secretKey);
+        // 设置bucket的区域, COS地域的简称请参照 https://www.qcloud.com/document/product/436/6224
+        ClientConfig clientConfig = new ClientConfig(new Region(region));
+        // 生成cos客户端
+        COSClient cosclient = new COSClient(cred, clientConfig);
+
+        return cosclient;
+    }
+
+//    private static void getObjectToFileDemo() {
+//        String key = "test/my_test.json";
+//        GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, key);
+//        // 设置下载的单链接限速(如有需要),不需要可忽略
+//
+//        try {
+//            File localFile = new File("my_test.json");
+//            ObjectMetadata objectMetadata = cosClient.getObject(getObjectRequest, localFile);
+//            log.info(objectMetadata.getContentLength());
+//        } catch (CosServiceException cse) {
+//            cse.printStackTrace();
+//        } catch (CosClientException cce) {
+//            cce.printStackTrace();
+//        }
+//    }
+
+    private static void getObjectInputStreamDemo() throws IOException {
+        String key = "test/my_test.json";
+        GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, key);
+        InputStream cosObjectInput = null;
+
+        try {
+            COSObject cosObject = cosClient.getObject(getObjectRequest);
+            cosObjectInput = cosObject.getObjectContent();
+        } catch (CosServiceException e) {
+            e.printStackTrace();
+        } catch (CosClientException e) {
+            e.printStackTrace();
+        }
+
+        // 处理下载到的流
+        // 这里是直接读取,按实际情况来处理
+        byte[] bytes = null;
+        try {
+            bytes = IOUtils.toByteArray(cosObjectInput);
+        } catch (IOException e) {
+            e.printStackTrace();
+        } finally {
+            // 用完流之后一定要调用 close()
+            cosObjectInput.close();
+        }
+    }
+}

+ 60 - 0
fs-service-system/src/main/java/com/fs/course/HuaweiCloudTest.java

@@ -0,0 +1,60 @@
+package com.fs.course;
+
+import lombok.extern.slf4j.Slf4j;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
+import java.util.Date;
+
+@Slf4j
+public class HuaweiCloudTest {
+
+    public static void main(String[] args) {
+       String a = "https://h5.cdwjyyh.com/courseh5/pages/course/learning?course={\"companyId\":170,\"companyUserId\":6824,\"corpId\":\"ww5a88c4f879f204c5\",\"courseId\":79,\"linkType\":0,\"qwExternalId\":8334754,\"qwUserId\":\"18716\",\"videoId\":798}".replace("https://h5.cdwjyyh.com","");
+        log.info(a);
+    }
+
+    public static String extractPathByRegex(String urlString) {
+        // ^https?://   匹配 http:// 或 https:// 开头
+        // [^/]+        匹配域名部分(直到遇到第一个 '/')
+        // /            紧跟一个 '/'
+        // 最后将这段内容替换为空字符串
+        return urlString.replaceAll("^https?://[^/]+/", "");
+    }
+
+    public static String updateUrlPrefix(String url) {
+        final String oldPrefix = "https://obs.ylrztop.com";
+        final String newPrefix = "https://rtobs.ylrztop.com";
+
+        // 判断是否以 oldPrefix 开头,如果是,则进行替换
+        if (url.startsWith(oldPrefix)) {
+            // 去掉 oldPrefix 前缀,然后拼上 newPrefix
+            return newPrefix + url.substring(oldPrefix.length());
+        }
+        // 如果不是以 oldPrefix 开头,则原样返回
+        return url;
+    }
+
+
+    public static Date convertStringToDate(String dateString,String pattern) {
+        if (dateString == null || dateString.isEmpty()) {
+            return null;
+        }
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
+        LocalDateTime localDateTime;
+        LocalDate localDate;
+        // 先解析成 LocalDate(只含年月日)
+        if (pattern.equals("yyyy-MM-dd")){
+            // 先解析成 LocalDate(只含年月日)
+            localDate = LocalDate.parse(dateString, formatter);
+            // 将 LocalDate 转为当天 00:00:00 的 LocalDateTime
+            localDateTime = localDate.atStartOfDay();
+        }else {
+            localDateTime = LocalDateTime.parse(dateString, formatter);
+        }
+        return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
+    }
+
+}

+ 34 - 0
fs-service-system/src/main/java/com/fs/course/config/CourseConfig.java

@@ -0,0 +1,34 @@
+package com.fs.course.config;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+@Data
+public class CourseConfig implements Serializable {
+    private Integer answerRate; //可答题百分比
+    private Integer answerErrorCount; //允许错误次数
+    private Integer videoLinkExpireDate; //课程小节短链过期时间
+    private Integer maxBufferLength;//最大缓冲时长
+    private Integer videoIntegral;//每十分钟获取多少积分
+    private Integer answerIntegral;//答题获得积分
+    private Integer defaultLine;//默认看课线路
+    private String realLinkDomainName;//真链域名
+    private String authDomainName;//网页授权域名
+    private BigDecimal redPackageMoney;//充值手续费百分比
+    private String licenseURL;//播放器License URL
+    private String licenseKey;//播放器License Key
+    private String mpAppId;//看课公众号APPID
+    private String miniprogramAppid;//小程序appid
+    private String miniprogramPage;//小程序page路径
+    private Integer appAnswerIntegral; //app答题积分
+    private Integer openCommentStatus; //开启评论/弹幕
+    private Integer viewCommentNum; // 查看历史评论数量
+    private Integer delayStart;
+    private Integer delayEnd;
+
+    //private Integer fontSize;//字体大小
+    private String notify;
+
+}

+ 48 - 0
fs-service-system/src/main/java/com/fs/course/config/CourseMaConfig.java

@@ -0,0 +1,48 @@
+package com.fs.course.config;
+
+import lombok.Data;
+
+@Data
+public class CourseMaConfig {
+
+    /**
+     * 设置微信小程序的名称
+     */
+    private String name;
+
+    /**
+     * 设置微信小程序的appid
+     */
+    private String appid;
+
+    /**
+     * 设置微信小程序的Secret
+     */
+    private String secret;
+
+    /**
+     * 设置微信小程序消息服务器配置的token
+     */
+    private String token;
+
+    /**
+     * 设置微信小程序消息服务器配置的EncodingAESKey
+     */
+    private String aesKey;
+
+    /**
+     * 消息格式,XML或者JSON
+     */
+    private String msgDataFormat;
+
+    /**
+     * 小程序log
+     */
+    private String log;
+
+    /**
+     * 小程序原始ID
+     */
+    private String username;
+
+}

+ 51 - 0
fs-service-system/src/main/java/com/fs/course/config/RedPacketConfig.java

@@ -0,0 +1,51 @@
+package com.fs.course.config;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class RedPacketConfig implements Serializable {
+    private String appId;//公众号appId
+
+    private String miniappId;//小程序appId
+    /**
+     * 商户号.
+     */
+    private String mchId;
+    /**
+     * 商户密钥.
+     */
+    private String mchKey;
+
+    /**
+     * p12证书文件的绝对路径或者以classpath:开头的类路径.
+     */
+    private String keyPath;
+
+    /**
+     * apiclient_key.pem证书文件的绝对路径或者以classpath:开头的类路径.
+     */
+    private String privateKeyPath;
+
+    /**
+     * apiclient_cert.pem证书文件的绝对路径或者以classpath:开头的类路径.
+     */
+    private String privateCertPath;
+
+    /**
+     * apiV3 秘钥值.
+     */
+    private String apiV3Key;
+    /**
+     * 公钥ID
+     */
+    private String publicKeyId;
+
+    /**
+     * pub_key.pem证书文件的绝对路径或者以classpath:开头的类路径.
+     */
+    private String publicKeyPath;
+
+    private String notifyUrl;
+}

+ 47 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsCollection.java

@@ -0,0 +1,47 @@
+package com.fs.course.domain;
+
+import com.fs.common.annotation.Excel;
+import lombok.Data;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 短视频合集对象 fs_collection
+ *
+ * @author fs
+ * @date 2025-07-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class FsCollection extends BaseEntity{
+
+    /** 合集ID */
+    private Long collectionId;
+
+    private Long userId;
+    /** 合集标题 */
+    @Excel(name = "合集标题")
+    private String title;
+
+    /** 合集描述 */
+    @Excel(name = "合集描述")
+    private String description;
+
+    /** 合集封面图 */
+    @Excel(name = "合集封面图")
+    private String coverUrl;
+
+    /** 达人ID */
+    @Excel(name = "达人ID")
+    private Long talentId;
+
+    /** 状态:1正常 0下架 */
+    @Excel(name = "状态:1正常 0下架")
+    private Long status;
+
+    /** 合集标签 */
+    @Excel(name = "合集标签")
+    private String tags;
+
+
+}

+ 67 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsCourseAnswerLogs.java

@@ -0,0 +1,67 @@
+package com.fs.course.domain;
+
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 答题日志对象 fs_course_answer_logs
+ *
+ * @author fs
+ * @date 2024-10-26
+ */
+@Data
+public class FsCourseAnswerLogs extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键Id
+     */
+
+    private Long logId;
+
+    /**
+     * 用户Id
+     */
+    @Excel(name = "用户Id")
+    private Long userId;
+
+    /**
+     * 课程小节Id
+     */
+    @Excel(name = "课程小节Id ")
+    private Long videoId;
+
+    private Long courseId;
+
+    /**
+     * 是否全部正确
+     */
+    @Excel(name = "是否全部正确")
+    private Integer isRight;
+
+    /**
+     * 客服id
+     */
+    @Excel(name = "客服id")
+    private Long companyUserId;
+
+    /**
+     * 公司id
+     */
+    @Excel(name = "公司id")
+    private Long companyId;
+
+    /**
+     * 企微userid
+     */
+    @Excel(name = "企微userid")
+    private String qwUserId;
+
+    /**
+     * 企微userid
+     */
+    private String questionJson;
+
+    private Long watchLogId;//绑定观看的记录id
+}

+ 66 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsCourseAnswerLogsClickHouse.java

@@ -0,0 +1,66 @@
+package com.fs.course.domain;
+
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 答题日志对象 fs_course_answer_logs
+ *
+ * @author fs
+ * @date 2024-10-26
+ */
+@Data
+public class FsCourseAnswerLogsClickHouse extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键Id
+     */
+    private Long logId;
+
+    /**
+     * 用户Id
+     */
+    @Excel(name = "用户Id")
+    private Long userId;
+
+    /**
+     * 课程小节Id
+     */
+    @Excel(name = "课程小节Id ")
+    private Long videoId;
+
+    private Long courseId;
+
+    /**
+     * 是否全部正确
+     */
+    @Excel(name = "是否全部正确")
+    private Integer isRight;
+
+    /**
+     * 客服id
+     */
+    @Excel(name = "客服id")
+    private Long companyUserId;
+
+    /**
+     * 公司id
+     */
+    @Excel(name = "公司id")
+    private Long companyId;
+
+    /**
+     * 企微userid
+     */
+    @Excel(name = "企微userid")
+    private String qwUserId;
+
+    /**
+     * 企微userid
+     */
+    private String questionJson;
+
+    private Long watchLogId;//绑定观看的记录id
+}

+ 58 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsCourseAnswerReward.java

@@ -0,0 +1,58 @@
+package com.fs.course.domain;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class FsCourseAnswerReward {
+
+    /**
+     * 用户当前积分
+     */
+    private Integer currentPoints;
+
+    /**
+     * 奖励兑换进度(百分比)
+     */
+    private Integer exchangeProgress;
+
+    /**
+     * 可兑换的商品列表
+     */
+    private List<RewardProduct> products;
+
+    /**
+     * 本次获得的芳华币数量
+     */
+    private Integer availableCoins;
+
+    @Data
+    public static class RewardProduct {
+        /**
+         * 商品ID
+         */
+        private Long productId;
+
+        /**
+         * 商品名称
+         */
+        private String productName;
+
+        /**
+         * 所需积分
+         */
+        private Integer requiredPoints;
+
+        /**
+         * 商品图片URL
+         */
+        private String imageUrl;
+
+        /**
+         * 商品图片URL
+         */
+        private BigDecimal otPrice;
+    }
+}

+ 29 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsCourseDomainName.java

@@ -0,0 +1,29 @@
+package com.fs.course.domain;
+
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 课程短链域名对象 fs_course_domain_name
+ *
+ * @author fs
+ * @date 2024-10-09
+ */
+@Data
+public class FsCourseDomainName extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键Id */
+    private Long id;
+
+    /** 域名 */
+    @Excel(name = "域名")
+    private String domainName;
+
+    /** 状态 0 停用  1正常 */
+    @Excel(name = "状态 0 停用  1正常")
+    private Long status;
+
+}

+ 61 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsCourseFinishTemp.java

@@ -0,0 +1,61 @@
+package com.fs.course.domain;
+
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 完课模板对象 fs_course_finish_temp
+ *
+ * @author fs
+ * @date 2024-12-19
+ */
+@Data
+public class FsCourseFinishTemp extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** $column.columnComment */
+    private Long id;
+
+    /** 模板名称 */
+    @Excel(name = "模板名称")
+    private String name;
+
+    /** 状态 1正常 0停用 */
+    @Excel(name = "状态 1正常 0停用")
+    private Long status;
+
+    /** 规则 */
+    @Excel(name = "规则")
+    private String setting;
+
+    /** 公司id */
+    @Excel(name = "公司id")
+    private Long companyId;
+
+    /** 课程id */
+    @Excel(name = "课程id")
+    private Long courseId;
+
+    /** 小节视频id */
+    @Excel(name = "小节视频id")
+    private Long videoId;
+
+    /** 归属客服id(对多) */
+    @Excel(name = "归属客服id(对多)")
+    private String companyUserIds;
+
+    /** 删除标志 */
+    @Excel(name = "删除标志")
+    private Long isDel;
+
+    /** 是否整客服公司可用 */
+    @Excel(name = "是否整客服公司可用")
+    private Integer isAllCompanyUser;
+
+    /**
+     * 部门ids,逗号分隔的部门id(对多)
+     */
+    private String deptIds;
+}

+ 64 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsCourseLink.java

@@ -0,0 +1,64 @@
+package com.fs.course.domain;
+
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 短链对象 fs_course_link
+ *
+ * @author fs
+ * @date 2024-10-24
+ */
+@Data
+public class FsCourseLink extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键Id */
+    private Long linkId;
+
+    /** 链接后缀 */
+    @Excel(name = "链接后缀")
+    private String link;
+
+    /** 真实链接 */
+    @Excel(name = "真实链接")
+    private String realLink;
+
+    /** 公司id */
+    @Excel(name = "公司id")
+    private Long companyId;
+
+    /** 客服id */
+    @Excel(name = "客服id")
+    private Long companyUserId;
+
+    /** 企微userId主键 */
+    @Excel(name = "企微userId主键")
+    private String qwUserId;
+
+    /** 课节id */
+    @Excel(name = "课节id")
+    private Long videoId;
+
+    /** 企微主体id */
+    @Excel(name = "企微主体id")
+    private String corpId;
+
+    private Long courseId;
+    /**
+    * 企微外部联系表主键
+    */
+    private Long qwExternalId;
+
+    private Integer linkType; //链接类型 0:正常链接  1:应急链接  3:小程序链接 4:app 5:官方
+
+    private Integer isRoom;//是否发群
+
+    private String chatId;
+//    private String link_uuid;
+    // 识别编号
+    private String uNo;
+
+}

+ 45 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsCourseQuestionBank.java

@@ -0,0 +1,45 @@
+package com.fs.course.domain;
+
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 题库对象 fs_course_question_bank
+ *
+ * @author fs
+ * @date 2024-09-07
+ */
+@Data
+public class FsCourseQuestionBank extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** id */
+    private Long id;
+
+    /** 问题 */
+    @Excel(name = "问题")
+    private String title;
+
+    /** 排序 */
+    @Excel(name = "排序")
+    private Long sort;
+
+    /** 类别1 单选 2 多选  */
+    @Excel(name = "类别1 单选 2 多选 ")
+    private Long type;
+
+    /** 状态 */
+    @Excel(name = "状态")
+    private Long status;
+
+    /** 选项 */
+    @Excel(name = "选项")
+    private String question;
+
+    /** 答案 */
+    @Excel(name = "答案")
+    private String answer;
+    private String questionType;
+}

+ 37 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsCourseRealLink.java

@@ -0,0 +1,37 @@
+package com.fs.course.domain;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+
+@Data
+public class FsCourseRealLink implements Serializable
+{
+    private Long companyId;
+
+
+    private Long companyUserId;
+
+    private String qwUserId;
+
+
+    private Long videoId;
+
+
+    private String corpId;
+
+    private Long courseId;
+
+    private Long qwExternalId;
+
+    //5官方 0正常链接
+    private Integer linkType;
+    private Integer isRoom;//是否发群
+    private Long linkId;
+
+    private String link;
+    private String chatId;
+    private String uNo;
+
+}

+ 63 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsCourseRedPacketHistoryLog.java

@@ -0,0 +1,63 @@
+package com.fs.course.domain;
+
+import java.math.BigDecimal;
+import com.fs.common.annotation.Excel;
+import lombok.Data;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 红包历史记录对象 fs_course_red_packet_log
+ *
+ * @author fs
+ * @date 2025-05-22
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class FsCourseRedPacketHistoryLog extends BaseEntity{
+
+    /** 日志Id */
+    private Long logId;
+
+    /** 批次单号 */
+    @Excel(name = "批次单号")
+    private String outBatchNo;
+
+    /** 课程id */
+    @Excel(name = "课程id")
+    private Long courseId;
+
+    /** 用户id */
+    @Excel(name = "用户id")
+    private Long userId;
+
+    /** 小节id */
+    @Excel(name = "小节id")
+    private Long videoId;
+
+    /** 公司员工id */
+    @Excel(name = "公司员工id")
+    private Long companyUserId;
+
+    /** 公司id */
+    @Excel(name = "公司id")
+    private Long companyId;
+
+    /** 转帐金额 */
+    @Excel(name = "转帐金额")
+    private BigDecimal amount;
+
+    /** 状态 0 发送中  1  已发送 */
+    @Excel(name = "状态 0 发送中  1  已发送")
+    private Long status;
+
+    /** 企微分享userId */
+    @Excel(name = "企微分享userId")
+    private Long qwUserId;
+
+    /** 观看记录id */
+    @Excel(name = "观看记录id")
+    private Long watchLogId;
+
+
+}

+ 64 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsCourseRedPacketLog.java

@@ -0,0 +1,64 @@
+package com.fs.course.domain;
+
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 短链课程看课记录对象 fs_course_red_packet_log
+ *
+ * @author fs
+ * @date 2024-10-24
+ */
+@Data
+public class FsCourseRedPacketLog extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 日志Id */
+    private Long logId;
+
+    private String outBatchNo;
+
+    /** 课程id */
+    @Excel(name = "课程id")
+    private Long courseId;
+
+    /** 用户id */
+    @Excel(name = "用户id")
+    private Long userId;
+
+    /** 小节id */
+    @Excel(name = "小节id")
+    private Long videoId;
+
+    /** 公司员工id */
+    @Excel(name = "公司员工id")
+    private Long companyUserId;
+
+    /** 公司id */
+    @Excel(name = "公司id")
+    private Long companyId;
+
+    /** 转帐金额 */
+    @Excel(name = "转帐金额")
+    private BigDecimal amount;
+
+    /** 分享企微userid */
+    @Excel(name = "分享企微userid")
+    private String qwUserId;
+
+    private Integer status;//状态 0 发送中  1  已发送
+
+
+    private Long watchLogId;//观看记录 id
+
+    private String batchId;//微信批次单号
+
+
+    private String appId;//小程序appId
+
+
+}

+ 43 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsCourseRedPacketLogClickHouse.java

@@ -0,0 +1,43 @@
+package com.fs.course.domain;
+
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 短链课程看课记录对象 fs_course_red_packet_log
+ *
+ * @author fs
+ * @date 2024-10-24
+ */
+@Data
+public class FsCourseRedPacketLogClickHouse extends BaseEntity
+{
+    private Long logId;
+    private String outBatchNo;
+    private Long courseId;
+    private String courseName;
+    private Long userId;
+    private Long videoId;
+    private String videoName;
+    private Long companyUserId;
+    private String companyUserName;
+    private Long companyId;
+    private String companyName;
+    private BigDecimal amount;
+    private Long status;
+    private Long qwUserId;
+    private String qwUserName;
+    private Long watchLogId;
+    private String remark;
+    private Long periodId;
+    private Long duration;
+    private String fsAvatar;
+    private String fsNickName;
+    private String title;
+    private String phone;
+    private Date createTime;
+    private Date updateTime;
+}

+ 68 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsCourseRedPacketRetry.java

@@ -0,0 +1,68 @@
+package com.fs.course.domain;
+
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.math.BigDecimal;
+
+/**
+ * 课程红包失败重试记录对象 fs_course_red_packet_retry
+ *
+ * @author fs
+ * @date 2025-03-18
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class FsCourseRedPacketRetry extends BaseEntity{
+
+    /** 日志Id */
+    private Long logId;
+
+    /** 批次单号 */
+    @Excel(name = "批次单号")
+    private String outBatchNo;
+
+    /** 课程id */
+    @Excel(name = "课程id")
+    private Long courseId;
+
+    /** 用户id */
+    @Excel(name = "用户id")
+    private Long userId;
+
+    /** 小节id */
+    @Excel(name = "小节id")
+    private Long videoId;
+
+    /** 公司员工id */
+    @Excel(name = "公司员工id")
+    private Long companyUserId;
+
+    /** 公司id */
+    @Excel(name = "公司id")
+    private Long companyId;
+
+    /** 转帐金额 */
+    @Excel(name = "转帐金额")
+    private BigDecimal amount;
+
+    /** 状态 0 发送中  1  已发送 */
+    @Excel(name = "状态 0 发送中  1  已发送")
+    private Integer status;
+
+    /** 企微分享userId */
+    @Excel(name = "企微分享userId")
+    private String qwUserId;
+
+    /** 观看记录id */
+    @Excel(name = "观看记录id")
+    private Long watchLogId;
+
+    private String sendOpenId;
+
+    private Integer source;
+
+
+}

+ 54 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsCourseSop.java

@@ -0,0 +1,54 @@
+package com.fs.course.domain;
+
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 看课sop对象 fs_course_sop
+ *
+ * @author fs
+ * @date 2024-09-04
+ */
+@Data
+public class FsCourseSop extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** $column.columnComment */
+    private Long id;
+
+    /** 规则名称 */
+    @Excel(name = "规则名称")
+    private String name;
+
+    /** 状态 1正常 0停用 */
+    @Excel(name = "状态 1正常 0停用")
+    private Long status;
+
+    /** 规则 */
+    @Excel(name = "规则")
+    private String setting;
+
+    /** 公司id */
+    @Excel(name = "公司id")
+    private Long companyId;
+
+    /** sop类型 (1:课程小节 2:直播) */
+    @Excel(name = "sop类型 ", readConverterExp = "1=:课程小节,2=:直播")
+    private Long sopType;
+
+    /** 关联ID */
+    @Excel(name = "关联ID")
+    private Long businessId;
+
+    /** 短链 */
+    @Excel(name = "短链")
+    private String url;
+
+    /**
+    * 是否审核
+    */
+    private Integer isAudit;
+
+}

+ 85 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsCourseSopAppLink.java

@@ -0,0 +1,85 @@
+package com.fs.course.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * sop发送app消息的记录对象 fs_course_sop_app_link
+ *
+ * @author fs
+ * @date 2025-03-20
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class FsCourseSopAppLink extends BaseEntity{
+
+    /** $column.columnComment */
+    private Long id;
+
+    /** 链接后缀 */
+    @Excel(name = "链接后缀")
+    private String link;
+
+    /** 公司id */
+    @Excel(name = "公司id")
+    private Long companyId;
+
+    /** 客服id */
+    @Excel(name = "客服id")
+    private Long companyUserId;
+
+    /** 企微userId */
+    @Excel(name = "企微userId")
+    private Long qwUserId;
+
+    /** 企微员工昵称 */
+    @Excel(name = "企微员工昵称")
+    private String qwUserName;
+
+    /** 企微主体id */
+    @Excel(name = "企微主体id")
+    private String corpId;
+
+    /** 课程Id */
+    @Excel(name = "课程Id")
+    private Long courseId;
+
+    /** 课程标题 */
+    @Excel(name = "课程标题")
+    private String courseTitle;
+
+    /** 课程封面 */
+    @Excel(name = "课程封面")
+    private String courseUrl;
+
+    /** 课节id */
+    @Excel(name = "课节id")
+    private Long videoId;
+
+    /** 课节描述 */
+    @Excel(name = "课节描述")
+    private String videoTitle;
+
+    /** 跳转链接 */
+    @Excel(name = "跳转链接")
+    private String appRealLink;
+
+    /** 企微外部联系人userId */
+    @Excel(name = "企微外部联系人userId")
+    private Long qwExternalId;
+
+    private Integer isRead;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
+
+
+}

+ 90 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsCourseSopLogs.java

@@ -0,0 +1,90 @@
+package com.fs.course.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 看课SOP  定时任务对象 fs_course_sop_logs
+ *
+ * @author fs
+ * @date 2024-09-04
+ */
+@Data
+public class FsCourseSopLogs extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** $column.columnComment */
+    private String id;
+
+    /** qw_user表-企微的成员qw_user_id */
+    @Excel(name = "qw_user表-企微的成员qw_user_id")
+    private String qwUserid;
+
+    /** 企微外部联系人id */
+    @Excel(name = "企微外部联系人id")
+    private String externalUserId;
+
+    /** 状态(0:无规则 1:待看课 2:看课中 3:已完课) */
+    @Excel(name = "状态", readConverterExp = "0=:无规则,1=:待看课,2=:看课中,3=:已完课")
+    private Integer watchStatus;
+
+    /** 符合条件的规则 */
+    @Excel(name = "符合条件的规则")
+    private String contentJson;
+
+    /** 发送(给成员)状态 0发送失败 1发送成功 3待发送 4未发送 5已作废 */
+    @Excel(name = "发送(给成员)状态 0发送失败 1发送成功 3待发送 4未发送 5已作废")
+    private Long sendStatus;
+
+    /** 预计发送时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "预计发送时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date sendTime;
+
+    private String sendTimeJson;
+
+    /** 公司id */
+    @Excel(name = "公司id")
+    private Long companyId;
+
+    /** 接收(客户的)状态:0-未发送 1-已发送  */
+    @Excel(name = "接收(客户的)状态:0-未发送 1-已发送 ")
+    private Long receivingStatus;
+
+    /** 消息ID */
+    @Excel(name = "消息ID")
+    private String msgId;
+
+    /** qw_sop表主键 */
+    @Excel(name = "qw_sop表主键")
+    private Long sopId;
+
+    /** 实际发送时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "实际发送时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date realSendTime;
+
+    /** sop类型 (1:课程小节 2:直播) */
+    @Excel(name = "sop类型 ", readConverterExp = "1=:课程小节,2=:直播")
+    private Long sopType;
+
+    /** 关联ID */
+    @Excel(name = "关联ID")
+    private Long businessId;
+
+    /**
+    * company_user的主键
+    */
+    private Long companyUserId;
+
+    private Long customerId;
+
+    private String corpId;
+
+
+}

+ 58 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsCourseTrafficLog.java

@@ -0,0 +1,58 @@
+package com.fs.course.domain;
+
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 短链课程流量记录对象 fs_course_traffic_log
+ *
+ * @author fs
+ * @date 2024-10-31
+ */
+@Data
+public class FsCourseTrafficLog extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 日志Id */
+    private Long logId;
+
+    private String uuId;
+
+    /** 用户id */
+    @Excel(name = "用户id")
+    private Long userId;
+
+    /** 小节id */
+    @Excel(name = "小节id")
+    private Long videoId;
+
+    /** 企微外部联系人id */
+    @Excel(name = "企微外部联系人id")
+    private Long qwExternalContactId;
+
+    /** 使用流量 */
+    @Excel(name = "使用流量")
+    private Long internetTraffic;
+
+    /** 分享人企微userId */
+    @Excel(name = "分享人企微userId")
+    private String qwUserId;
+
+    /** 客服id */
+    @Excel(name = "客服id")
+    private Long companyUserId;
+
+    /** 公司id */
+    @Excel(name = "公司id")
+    private Long companyId;
+
+    /** 课程id */
+    @Excel(name = "课程id")
+    private Long courseId;
+
+//    @JsonFormat(pattern = "yyyy-MM-dd")
+//    private Date time;
+
+}

+ 69 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsCourseWatchComment.java

@@ -0,0 +1,69 @@
+package com.fs.course.domain;
+
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 看课评论对象 fs_course_watch_comment
+ *
+ * @author fs
+ * @date 2025-05-26
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class FsCourseWatchComment extends BaseEntity{
+
+    /** 评论id */
+    private Long commentId;
+
+    /** 用户id */
+    @Excel(name = "用户id")
+    private Long userId;
+
+    /** 用户类型,1-管理员,2-用户 */
+    @Excel(name = "用户类型,1-管理员,2-用户")
+    private Integer userType;
+
+    /** 课程id */
+    @Excel(name = "课程id")
+    private Long courseId;
+
+    /** 视频id */
+    @Excel(name = "视频id")
+    private Long videoId;
+
+    /** 评论类型 1:评论,2:回复 */
+    @Excel(name = "评论类型 1:评论,2:回复")
+    private Integer type;
+
+    /** 父评论id */
+    @Excel(name = "父评论id")
+    private Long parentId;
+
+    /** 评论内容 */
+    @Excel(name = "评论内容")
+    private String content;
+
+    /** 是否是撤回的消息,1-是,0-否 */
+    @Excel(name = "是否是撤回的消息,1-是,0-否")
+    private Integer isRevoke;
+
+    @Excel(name = "时间点,记录发送消息的视频播放时间点")
+    private Integer time;
+
+    @ApiModelProperty(value = "字体大小")
+    @Excel(name = "字体大小")
+    private String fontSize;
+
+    @ApiModelProperty(value = "展示模式")
+    @Excel(name = "展示模式")
+    private String mode;
+
+    @ApiModelProperty(value = "字体颜色")
+    @Excel(name = "字体颜色")
+    private String color;
+
+}

+ 104 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsCourseWatchHistoryLog.java

@@ -0,0 +1,104 @@
+package com.fs.course.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * 看课历史记录对象 fs_course_watch_log
+ *
+ * @author fs
+ * @date 2025-05-21
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class FsCourseWatchHistoryLog extends BaseEntity{
+
+    /** 日志Id */
+    private Long logId;
+
+    /** 用户id */
+    @Excel(name = "用户id")
+    private Long userId;
+
+    /** 小节id */
+    @Excel(name = "小节id")
+    private Long videoId;
+
+    /** 记录类型 1看课中 2完课 3待看课 4看课中断 */
+    @Excel(name = "记录类型 1看课中 2完课 3待看课 4看课中断")
+    private Long logType;
+
+    /** 企微外部联系人id */
+    @Excel(name = "企微外部联系人id")
+    private Long qwExternalContactId;
+
+    /** 播放时长 */
+    @Excel(name = "播放时长")
+    private Long duration;
+
+    /** 分享人企微userId */
+    @Excel(name = "分享人企微userId")
+    private String qwUserId;
+
+    /** 客服id */
+    @Excel(name = "客服id")
+    private Long companyUserId;
+
+    /** 公司id */
+    @Excel(name = "公司id")
+    private Long companyId;
+
+    /** 课程id */
+    @Excel(name = "课程id")
+    private Long courseId;
+
+    /** 归属发送方式:1 个微  2 企微 */
+    @Excel(name = "归属发送方式:1 个微  2 企微")
+    private Long sendType;
+
+    /** 奖励类型 1:红包 2积分 */
+    @Excel(name = "奖励类型 1:红包 2积分")
+    private Long rewardType;
+
+    /** 最后心跳时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "最后心跳时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date lastHeartbeatTime;
+
+    /** sop任务id */
+    @Excel(name = "sop任务id")
+    private String sopId;
+
+    /** 完课时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "完课时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date finishTime;
+
+    /** 是否发送完课消息 */
+    @Excel(name = "是否发送完课消息")
+    private Long sendFinishMsg;
+
+    /** sop任务中的营期 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "sop任务中的营期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date campPeriodTime;
+
+    /** 天数 */
+    @Excel(name = "天数")
+    private Long day;
+
+    /** 项目 */
+    @Excel(name = "项目")
+    private Long project;
+
+    /** 营期id */
+    @Excel(name = "营期id")
+    private Long periodId;
+
+
+}

+ 84 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsCourseWatchLog.java

@@ -0,0 +1,84 @@
+package com.fs.course.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * 短链课程看课记录对象 fs_course_watch_log
+ *
+ * @author fs
+ * @date 2024-10-24
+ */
+@Data
+public class FsCourseWatchLog extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 日志Id */
+    private Long logId;
+
+    /** 用户id */
+    @Excel(name = "用户id")
+    private Long userId;
+
+    /** 小节id */
+    @Excel(name = "小节id")
+    private Long videoId;
+
+    /** 记录类型 1看课中 2完课 3待看课 4看课中断 */
+    @Excel(name = "记录类型 1看课中 2完课 3待看课 4看课中断")
+    private Integer logType;
+
+    /** 企微外部联系人id */
+    @Excel(name = "企微外部联系人id")
+    private Long qwExternalContactId;
+
+    /** 播放时长 */
+    @Excel(name = "播放时长")
+    private Long duration;
+
+    /** 分享人企微userId 主键 */
+    @Excel(name = "分享人企微userId 主键")
+    private String qwUserId;
+
+    /** 客服id */
+    @Excel(name = "客服id")
+    private Long companyUserId;
+
+    /** 公司id */
+    @Excel(name = "公司id")
+    private Long companyId;
+
+    /** 课程id */
+    @Excel(name = "课程id")
+    private Long courseId;
+
+    private Integer sendType; //归属发送方式:1 个微  2 企微
+
+    private Integer rewardType;//发放奖励类型
+
+
+    private LocalDateTime lastHeartbeatTime;//心跳时间
+
+
+    private String sopId; //sop任务id
+
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date finishTime; //完课时间
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date campPeriodTime; //sop任务中营期
+
+    private Integer sendFinishMsg;//是否发送完课消息
+
+    private Long project;
+    private Long day;
+
+
+}

+ 120 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsCourseWatchLogClickHouse.java

@@ -0,0 +1,120 @@
+package com.fs.course.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class FsCourseWatchLogClickHouse extends BaseEntity {
+
+    @Excel(name = "记录编号")
+    private Long logId;
+
+    /** 会员id */
+    @Excel(name = "会员id")
+    private Long userId;
+
+    /** 小程序昵称 */
+    @Excel(name = "小程序昵称")
+    private String fsNickName;
+
+    /** 小程序头像 */
+    @Excel(name = "小程序头像")
+    private String fsAvatar;
+
+    /** 课程id */
+    @Excel(name = "课程id")
+    private Long courseId;
+
+    /** 课程名称 */
+    @Excel(name = "课程名称")
+    private String courseName;
+
+    /** 小节id */
+    @Excel(name = "小节id")
+    private Long videoId;
+
+    /** 小节名称 */
+    @Excel(name = "小节名称")
+    private String videoName;
+
+    /** 记录类型 1看课中 2完课 3待看课 4看课中断 */
+    @Excel(name = "记录类型", dictType = "sys_course_watch_log_type")
+    private Integer logType;
+
+    /** 企微外部联系人id */
+    @Excel(name = "企微外部联系人id")
+    private String qwExternalContactId;
+
+    /** 播放时长 */
+    @Excel(name = "播放时长")
+    private String duration;
+
+    /** 分享人企微userId */
+    @Excel(name = "分享人企微userId")
+    private String qwUserId;
+
+    /** 企业微信员工名称 */
+    @Excel(name = "企业微信员工名称")
+    private String qwUserName;
+
+    /** 客服id */
+    @Excel(name = "客服id")
+    private Long companyUserId;
+
+    /** 所属客服 */
+    @Excel(name = "所属客服")
+    private String companyUserName;
+
+    /** 公司id/所属团队编号 */
+    @Excel(name = "所属团队编号")
+    private String companyId;
+
+    /** 所属团队 */
+    @Excel(name = "所属团队")
+    private String companyName;
+
+    /** 发送方式:1 个微  2 企微 */
+    @Excel(name = "发送方式")
+    private Integer sendType;
+
+    /** 发放奖励类型 */
+    private Integer rewardType;
+
+    /** 是否发送完课消息 */
+    private Integer sendFinishMsg;
+
+    /** sop任务id */
+    private String sopId;
+
+    /** 创建时间 */
+    @Excel(name = "创建时间", dateFormat = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+    /** 更新时间 */
+    @Excel(name = "更新时间", dateFormat = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
+
+    /** 最后心跳时间 */
+    @Excel(name = "最后心跳时间", dateFormat = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date lastHeartbeatTime;
+
+    /** 完课时间 */
+    @Excel(name = "完课时间", dateFormat = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date finishTime;
+
+    /** sop任务中营期 */
+    @Excel(name = "营期时间", dateFormat = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date campPeriodTime;
+
+    /** 外部联系人名称 */
+    private String externalUserName;
+}

+ 54 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsMessTemp.java

@@ -0,0 +1,54 @@
+package com.fs.course.domain;
+
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 群发模板对象 fs_mess_temp
+ *
+ * @author fs
+ * @date 2025-01-09
+ */
+@Data
+public class FsMessTemp extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** $column.columnComment */
+    private Long id;
+
+    /** 模板名称 */
+    @Excel(name = "模板名称")
+    private String name;
+
+    /** 状态 1正常 0停用 */
+    @Excel(name = "状态 1正常 0停用")
+    private Long status;
+
+    /** 规则 */
+    @Excel(name = "规则")
+    private String setting;
+
+    /** 公司id */
+    @Excel(name = "公司id")
+    private Long companyId;
+
+    /** 课程id */
+    @Excel(name = "课程id")
+    private Long courseId;
+
+    /** 小节视频id */
+    @Excel(name = "小节视频id")
+    private Long videoId;
+
+    private String sopUserLogId;
+
+    /** 删除标志 */
+    @Excel(name = "删除标志")
+    private Long isDel;
+
+
+
+
+}

+ 73 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsUserCompanyBind.java

@@ -0,0 +1,73 @@
+package com.fs.course.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.time.LocalDateTime;
+
+/**
+ * 用户客服关联对象 fs_user_company_bind
+ *
+ * @author fs
+ * @date 2025-07-22
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class FsUserCompanyBind extends BaseEntity{
+
+    /** id */
+    private Long id;
+
+    /** 用户id */
+    @Excel(name = "用户id")
+    private Long fsUserId;
+
+    /** 客服id */
+    @Excel(name = "客服id")
+    private Long companyUserId;
+
+    /** 公司ID */
+    @Excel(name = "公司ID")
+    private Long companyId;
+
+    /** 课程项目ID */
+    @Excel(name = "课程项目ID")
+    private Long projectId;
+
+    /** 企微用户ID */
+    @Excel(name = "企微用户ID")
+    private Long qwUserId;
+
+    /** 企微外部联系人ID */
+    @Excel(name = "企微外部联系人ID")
+    private Long qwExternalContactId;
+
+    /** 企微主体ID */
+    @Excel(name = "企微主体ID")
+    private Long qwCompanyId;
+
+    /** 课程ID */
+    @Excel(name = "课程ID")
+    private Long courseId;
+
+    /** 视频ID */
+    @Excel(name = "视频ID")
+    private Long videoId;
+
+    /** 看课记录ID */
+    private Long watchLogId;
+
+    /** 完课状态 */
+    @Excel(name = "完课状态")
+    private Integer logType;
+
+    /** 完课时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "完课时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private LocalDateTime finishTime;
+
+
+}

+ 150 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsUserCourse.java

@@ -0,0 +1,150 @@
+package com.fs.course.domain;
+
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 课程对象 fs_user_course
+ *
+ * @author fs
+ * @date 2024-05-15
+ */
+@Data
+public class FsUserCourse extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 课程id */
+    private Long courseId;
+
+    /** 分类ID */
+    @Excel(name = "分类ID")
+    private Long cateId;
+
+    private Long subCateId;
+
+    /** 课程名称 */
+    @Excel(name = "课程名称")
+    private String courseName;
+
+    /** 标题 */
+    @Excel(name = "标题")
+    private String title;
+
+    /** 课程封面 */
+    @Excel(name = "课程封面")
+    private String imgUrl;
+
+    /** 排序 */
+    @Excel(name = "排序")
+    private Long sort;
+
+    /** 状态 */
+    @Excel(name = "状态")
+    private Integer status;
+
+    /** 是否会员课程 */
+    @Excel(name = "是否会员课程")
+    private Integer isVip;
+
+    /** 是否热门 */
+    @Excel(name = "是否热门")
+    private Integer isHot;
+
+    /** 状态(上下架) */
+    @Excel(name = "状态", readConverterExp = "上=下架")
+    private Integer isShow;
+
+    /** 播放量 */
+    @Excel(name = "播放量")
+    private Long views;
+
+    /** 播放时长 */
+    @Excel(name = "播放时长")
+    private Long duration;
+
+    /** 课程描述 */
+    @Excel(name = "课程描述")
+    private String description;
+
+    /** 热力排行 */
+    @Excel(name = "热力排行")
+    private Long hotRanking;
+
+    /** 兑换积分 */
+    @Excel(name = "兑换积分")
+    private Long integral;
+
+    /** 原价售价 */
+    @Excel(name = "原价售价")
+    private BigDecimal price;
+
+    /** 售价 */
+    @Excel(name = "售价")
+    private BigDecimal sellPrice;
+
+    /** 归属项目 */
+    @Excel(name = "归属项目")
+    private Long project;
+
+    /** 标签 */
+    @Excel(name = "标签")
+    private String tags;
+
+    /** 点赞数 */
+    @Excel(name = "点赞数")
+    private Long likes;
+
+    /** 收藏数 */
+    @Excel(name = "收藏数")
+    private Long favoriteNum;
+
+    /** 分享数 */
+    @Excel(name = "分享数")
+    private Long shares;
+
+    /** 是否自动播放 */
+    @Excel(name = "是否自动播放")
+    private Integer isAutoPlay;
+
+    /** 是否允许快进 */
+    @Excel(name = "是否允许快进")
+    private Integer isFast;
+
+    /** 是否精选 */
+    @Excel(name = "是否精选")
+    private Integer isBest;
+
+    /** 是否推荐 */
+    @Excel(name = "是否推荐")
+    private Integer isTui;
+
+    /** 热度值 */
+    @Excel(name = "热度值")
+    private Long hotNum;
+
+    /** 是否允许积分兑换 */
+    @Excel(name = "是否允许积分兑换")
+    private Integer isIntegral;
+
+    /** 课程类型  1vip  2 积分 */
+    @Excel(name = "课程类型  1vip  2 积分")
+    private Long courseType;
+
+    private Long talentId;
+
+    private Integer isDel;
+
+    private String secondImg;//小封面
+
+    private Integer isNext;//是否逐级观看
+
+    private Integer isPrivate; //是否私域
+
+    private String companyIds;
+    private String liveTempId;
+
+}

+ 43 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsUserCourseCategory.java

@@ -0,0 +1,43 @@
+package com.fs.course.domain;
+
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 课堂分类对象 fs_user_course_category
+ *
+ * @author fs
+ * @date 2024-05-15
+ */
+@Data
+public class FsUserCourseCategory extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 课堂分类表ID */
+    private Long cateId;
+
+    /** 父id */
+    @Excel(name = "父id")
+    private Long pid;
+
+    /** 分类名称 */
+    @Excel(name = "分类名称")
+    private String cateName;
+
+    /** 排序 */
+    @Excel(name = "排序")
+    private Long sort;
+
+    /** 是否推荐 */
+    @Excel(name = "是否推荐")
+    private Integer isShow;
+
+    /** 删除状态 */
+    @Excel(name = "删除状态")
+    private Integer isDel;
+
+    private String pic;
+
+}

+ 53 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsUserCourseComment.java

@@ -0,0 +1,53 @@
+package com.fs.course.domain;
+
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 课堂评论对象 fs_user_course_comment
+ *
+ * @author fs
+ * @date 2024-05-15
+ */
+@Data
+public class FsUserCourseComment extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 评论id */
+    private Long commentId;
+
+    /** 用户id */
+    @Excel(name = "用户id")
+    private Long userId;
+
+    /** 课堂id */
+    @Excel(name = "课堂id")
+    private Long courseId;
+
+    /** 评论类型 1:评论,2:回复 */
+    @Excel(name = "评论类型")
+    private Long type;
+
+    /** 父评论id */
+    @Excel(name = "父评论id")
+    private Long parentId;
+
+    /** 评论内容 */
+    @Excel(name = "评论内容")
+    private String content;
+
+    /** 回复数量 */
+    @Excel(name = "回复数量")
+    private Long replyCount;
+
+    /** 点赞数 */
+    @Excel(name = "点赞数")
+    private Long likes;
+
+    private Long toUserId;
+
+    private Integer isDel;
+
+}

+ 30 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsUserCourseCommentLike.java

@@ -0,0 +1,30 @@
+package com.fs.course.domain;
+
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 课堂评论点赞对象 fs_user_course_comment_like
+ *
+ * @author fs
+ * @date 2024-05-15
+ */
+@Data
+public class FsUserCourseCommentLike extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 点赞id */
+    private Long id;
+
+    /** 用户id */
+    @Excel(name = "用户id")
+    private Long userId;
+
+    /** 评论id */
+    @Excel(name = "评论id")
+    private Long commentId;
+
+
+}

+ 69 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsUserCourseComplaintRecord.java

@@ -0,0 +1,69 @@
+package com.fs.course.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * 看课投诉记录对象 fs_user_course_complaint_record
+ *
+ * @author fs
+ * @date 2025-06-04
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class FsUserCourseComplaintRecord extends BaseEntity{
+
+    @ApiModelProperty(value = "页码,默认为1", required = true)
+    private Integer pageNum = 1;
+
+    @ApiModelProperty(value = "页大小,默认为10", required = true)
+    private Integer pageSize = 10;
+
+    //    @ApiModelProperty(value = "用户昵称")
+//    @TableField(exist = false)
+//    private String nickName;
+
+    @ApiModelProperty(value = "投诉类型")
+    private String complaintTypeName;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date startCreateTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date endCreateTime;
+
+    /** 投诉记录id */
+    private Long recordId;
+
+    /** 用户id,关联fs_user */
+    @Excel(name = "用户id,关联fs_user")
+    private Long userId;
+
+    /** 投诉类型id */
+    @Excel(name = "投诉类型id")
+    private Long complaintTypeId;
+
+    /** 投诉内容 */
+    @Excel(name = "投诉内容")
+    private String complaintContent;
+
+    /** 投诉上传图片 */
+    @Excel(name = "投诉上传图片")
+    private String complaintUrl;
+
+    /** 课程id */
+    @Excel(name = "课程id")
+    private Long courseId;
+
+    /** 视频小节id */
+    @Excel(name = "视频小节id")
+    private Long videoId;
+
+
+}

+ 29 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsUserCourseComplaintType.java

@@ -0,0 +1,29 @@
+package com.fs.course.domain;
+
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.TreeEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 看课投诉类型对象 fs_user_course_complaint_type
+ *
+ * @author fs
+ * @date 2025-06-04
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class FsUserCourseComplaintType extends TreeEntity{
+
+    /** 投诉类型id */
+    private Long complaintTypeId;
+
+    /** 投诉类型名称 */
+    @Excel(name = "投诉类型名称")
+    private String complaintTypeName;
+
+    /** 级别(目前只有两级) */
+    @Excel(name = "级别", readConverterExp = "目=前只有两级")
+    private Integer typeLevel;
+
+}

+ 28 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsUserCourseFavorite.java

@@ -0,0 +1,28 @@
+package com.fs.course.domain;
+
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 课程收藏对象 fs_user_course_favorite
+ *
+ * @author fs
+ * @date 2024-05-15
+ */
+@Data
+public class FsUserCourseFavorite extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 收藏id */
+    private Long favoriteId;
+
+    /** 用户id */
+    @Excel(name = "用户id")
+    private Long userId;
+
+    /** 课程id */
+    @Excel(name = "课程id")
+    private Long courseId;
+}

+ 29 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsUserCourseFollow.java

@@ -0,0 +1,29 @@
+package com.fs.course.domain;
+
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 课堂关注对象 fs_user_course_follow
+ *
+ * @author fs
+ * @date 2024-05-17
+ */
+@Data
+public class FsUserCourseFollow extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 关注id */
+    private Long id;
+
+    /** 用户id */
+    @Excel(name = "用户id")
+    private Long userId;
+
+    /** 课堂id */
+    @Excel(name = "课堂id")
+    private Long courseId;
+
+}

+ 29 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsUserCourseLike.java

@@ -0,0 +1,29 @@
+package com.fs.course.domain;
+
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 课堂点赞对象 fs_user_course_like
+ *
+ * @author fs
+ * @date 2024-05-15
+ */
+@Data
+public class FsUserCourseLike extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 点赞id */
+    private Long id;
+
+    /** 用户id */
+    @Excel(name = "用户id")
+    private Long userId;
+
+    /** 课堂id */
+    @Excel(name = "课堂id")
+    private Long courseId;
+
+}

+ 54 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsUserCourseNote.java

@@ -0,0 +1,54 @@
+package com.fs.course.domain;
+
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 课堂笔记对象 fs_user_course_note
+ *
+ * @author fs
+ * @date 2024-05-15
+ */
+@Data
+public class FsUserCourseNote extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 笔记id */
+    private Long noteId;
+
+    /** 用户id */
+    @Excel(name = "用户id")
+    private Long userId;
+
+    /** 课堂id */
+    @Excel(name = "课堂id")
+    private Long courseId;
+
+    /** 笔记分类id */
+    @Excel(name = "笔记分类id")
+    private Long noteCateId;
+
+
+    /** 是否热门 */
+    @Excel(name = "是否热门")
+    private Integer isHot;
+
+    /** 点赞数 */
+    @Excel(name = "点赞数")
+    private Long likes;
+
+    /** 状态:1:草稿,2:已发布 */
+    @Excel(name = "状态:1:草稿,2:已发布")
+    private Integer status;
+
+    /** 是否展示 */
+    @Excel(name = "是否展示")
+    private Integer isShow;
+
+    private String content;
+
+    private Integer isDel;
+
+}

+ 29 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsUserCourseNoteLike.java

@@ -0,0 +1,29 @@
+package com.fs.course.domain;
+
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 课堂笔记点赞对象 fs_user_course_note_like
+ *
+ * @author fs
+ * @date 2024-05-15
+ */
+@Data
+public class FsUserCourseNoteLike extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 点赞id */
+    private Long id;
+
+    /** 用户id */
+    @Excel(name = "用户id")
+    private Long userId;
+
+    /** 笔记id */
+    @Excel(name = "笔记id")
+    private Long noteId;
+
+}

+ 29 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsUserCourseNoteSave.java

@@ -0,0 +1,29 @@
+package com.fs.course.domain;
+
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 课堂笔记保存对象 fs_user_course_note_save
+ *
+ * @author fs
+ * @date 2024-06-05
+ */
+@Data
+public class FsUserCourseNoteSave extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 点赞id */
+    private Long saveId;
+
+    /** 用户id */
+    @Excel(name = "用户id")
+    private Long userId;
+
+    /** 笔记id */
+    @Excel(name = "笔记id")
+    private Long noteId;
+
+}

+ 86 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsUserCourseOrder.java

@@ -0,0 +1,86 @@
+package com.fs.course.domain;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 课程订单信息对象 fs_user_course_order
+ *
+ * @author fs
+ * @date 2024-05-21
+ */
+@Data
+public class FsUserCourseOrder extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long orderId;
+
+    /** 订单号 */
+    @Excel(name = "订单号")
+    private String orderCode;
+
+    /** 课程ID */
+    @Excel(name = "课程ID")
+    private Long courseId;
+
+    /** 课程名称 */
+    @Excel(name = "课程名称")
+    private String courseName;
+
+    /** 视频id */
+    @Excel(name = "视频id")
+    private Long courseVideoId;
+
+    /** 用户id */
+    @Excel(name = "用户id")
+    private Long userId;
+
+    /** 用户电话 */
+    @Excel(name = "用户电话")
+    private String mobile;
+
+    /** 使用积分 */
+    @Excel(name = "使用积分")
+    private Long integral;
+
+    /** 应付金额 */
+    @Excel(name = "应付金额")
+    private BigDecimal payPrice;
+
+    /** 优惠金额 */
+    @Excel(name = "优惠金额")
+    private BigDecimal discountPrice;
+
+    /** 实付金额 */
+    @Excel(name = "实付金额")
+    private BigDecimal payMoney;
+
+    /** 支付方式:1线上支付,2积分兑换  */
+    @Excel(name = "支付方式:1线上支付,2积分兑换 ")
+    private Integer payType;
+
+    /** 订单状态:1待支付,2成功支付,3已评价,4退款中 5已退款 */
+    @Excel(name = "订单状态:1待支付,2成功支付,3已评价,4退款中 5已退款")
+    private Integer status;
+
+    /** 支付时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "支付时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date payTime;
+
+    /** 退款原因 */
+    @Excel(name = "退款原因")
+    private String refundReason;
+
+    private Integer createType;
+
+    private Long userCouponId;
+
+
+}

+ 97 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsUserCoursePeriod.java

@@ -0,0 +1,97 @@
+package com.fs.course.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fs.common.annotation.Excel;
+import lombok.Data;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.util.List;
+
+/**
+ * 会员营期对象 fs_user_course_period
+ *
+ * @author fs
+ * @date 2025-04-15
+ */
+@Data
+public class FsUserCoursePeriod
+{
+    private static final long serialVersionUID = 1L;
+
+
+
+    /** 营期id */
+    private Long periodId;
+
+    /** 营期名称 */
+    @Excel(name = "营期名称")
+    private String periodName;
+
+    /** 公司id */
+    @Excel(name = "公司id")
+    private String companyId;
+
+    /** 训练营id */
+    @Excel(name = "训练营id")
+    private Long trainingCampId;
+
+    /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "创建时间")
+    private LocalDateTime createTime;
+
+    /** 更新时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "更新时间")
+    private LocalDateTime updateTime;
+
+    /** 课程风格url */
+    @Excel(name = "课程风格url")
+    private String courseStyle;
+
+    /** 直播间风格url */
+    @Excel(name = "直播间风格url")
+    private String liveRoomStyle;
+
+    /** 红包发放方式,1-按课程,每个课程可得一个;2-按营期,每个营期可得一个 */
+    @Excel(name = "红包发放方式,1-按课程,每个课程可得一个;2-按营期,每个营期可得一个")
+    private Long redPacketGrantMethod;
+
+    /** 营期类型,1-多课程营期;2-单课程营期 */
+    @Excel(name = "营期类型,1-多课程营期;2-单课程营期")
+    private Long periodType;
+
+    /** 开营日期-开始时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "开营日期-开始时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private LocalDate periodStartingTime;
+
+    /** 开营日期-结束时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "开营日期-结束时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private LocalDate periodEndTime;
+
+    /** 营期状态,1-未开始,2-进行中,3-已结束 */
+    @Excel(name = "营期状态,1-未开始,2-进行中,3-已结束")
+    private Long periodStatus;
+
+    @JsonFormat(pattern = "HH:mm:ss")
+    @Excel(name = "开始看课时间")
+    private LocalTime viewStartTime;
+
+    @JsonFormat(pattern = "HH:mm:ss")
+    @Excel(name = "结束看课时间")
+    private LocalTime viewEndTime;
+
+    @JsonFormat(pattern = "HH:mm:ss")
+    @Excel(name = "领取红包结束时间")
+    private LocalTime lastJoinTime;
+
+    private List<Long> companyIdList;
+
+    @Excel(name = "开启评论或者弹幕,1-开启评论;2-开启弹幕;3-都关闭")
+    private Integer openCommentStatus;
+
+}

+ 51 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsUserCourseStudy.java

@@ -0,0 +1,51 @@
+package com.fs.course.domain;
+
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 课程用户关联对象 fs_user_course_study
+ *
+ * @author fs
+ * @date 2024-05-15
+ */
+@Data
+public class FsUserCourseStudy extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long studyId;
+
+    /** 视频id */
+    @Excel(name = "视频id")
+    private Long videoId;
+
+    /** 课程ID */
+    @Excel(name = "课程ID")
+    private Long courseId;
+
+    /** 用户ID */
+    @Excel(name = "用户ID")
+    private Long userId;
+
+    /** 总课时数 */
+    @Excel(name = "总课时数")
+    private Long periodTotal;
+
+    /** 已学习课时数 */
+    @Excel(name = "已学习课时数")
+    private Long periodStudy;
+
+    /** 状态(1待学习,2正在学习 、3已结课) */
+    @Excel(name = "状态(1待学习,2正在学习 、3已结课)")
+    private Integer status;
+
+    /** 排序 */
+    @Excel(name = "排序")
+    private Long sort;
+
+    private Integer isExam;
+
+}

+ 63 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsUserCourseStudyLog.java

@@ -0,0 +1,63 @@
+package com.fs.course.domain;
+
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 课程用户学习日志对象 fs_user_course_study_log
+ *
+ * @author fs
+ * @date 2024-05-15
+ */
+@Data
+public class FsUserCourseStudyLog extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private String logId;
+
+    /** 课程id */
+    @Excel(name = "课程id")
+    private Long courseId;
+
+    /** 课程名称 */
+    @Excel(name = "课程名称")
+    private String courseName;
+
+    /** 视频id */
+    @Excel(name = "视频id")
+    private Long videoId;
+
+    /** 视频名称 */
+    @Excel(name = "视频名称")
+    private String videoName;
+
+    /** 用户id */
+    @Excel(name = "用户id")
+    private Long userId;
+
+    /** $column.columnComment */
+    @Excel(name = "用户id")
+    private Long studyId;
+
+    /** 学时 秒 */
+    @Excel(name = "学时 秒")
+    private Long times;
+
+    /** 百分比 */
+    @Excel(name = "百分比")
+    private Short rate;
+
+    /** 当前观看时间点 秒 */
+    @Excel(name = "当前观看时间点 秒")
+    private Long currentTimes;
+
+    private Integer isBuy; //是否购买
+    //状态:0未完播 1已完播
+    private Integer status;
+
+    //累计播放时长
+    private Long totalTimes;
+}

+ 88 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsUserCourseVideo.java

@@ -0,0 +1,88 @@
+package com.fs.course.domain;
+
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 课堂视频对象 fs_user_course_video
+ *
+ * @author fs
+ * @date 2024-05-17
+ */
+@Data
+public class FsUserCourseVideo extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** ID */
+    private Long videoId;
+
+    /** 腾讯vod文件id */
+    @Excel(name = "腾讯vod文件id")
+    private String fileId;
+
+    /** 视频标题 */
+    @Excel(name = "视频标题")
+    private String title;
+
+    /** 视频描述 */
+    @Excel(name = "视频描述")
+    private String description;
+
+    /** 视频URL */
+    @Excel(name = "视频URL")
+    private String videoUrl;
+
+    /** 视频缩略图 */
+    @Excel(name = "视频缩略图")
+    private String thumbnail;
+
+    /** 视频时长 */
+    @Excel(name = "视频时长")
+    private Long duration;
+
+    /** 达人id */
+    @Excel(name = "达人id")
+    private Long talentId;
+
+    /** 课程ID */
+    @Excel(name = "课程ID")
+    private Long courseId;
+
+    /** 视频状态 1:草稿,2:待审核,3:发布 */
+    @Excel(name = "视频状态 1:草稿,2:待审核,3:发布")
+    private Long status;
+
+    /** 课程排序 */
+    @Excel(name = "课程排序")
+    private Long courseSort;
+
+    private String fileName;
+
+    private Integer isDel;
+
+    /**
+     *  课题数组
+     */
+    private String questionBankId;
+
+    private String lineOne; //线路一 腾讯云pcdn 前缀tcpv
+
+    private String lineTwo; //线路二 电信 前缀ctev
+    private String lineThree; //线路三 华为云obs
+    private Integer uploadType;
+
+    private String redPacketMoney;
+    private Long fileSize;//文件大小  字节
+    private String fileKey;//文件key 对用存储桶
+    private String round;//轮次
+
+
+    private String packageJson;//绑定疗法
+    private Integer isFirst;
+    private Integer isTranscode;//是否转码
+
+    private String transcodeFileKey;//转码的文件key
+
+}

+ 34 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsUserCourseVideoRedPackage.java

@@ -0,0 +1,34 @@
+package com.fs.course.domain;
+
+import java.math.BigDecimal;
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 课程公司红包对象 fs_user_course_video_red_package
+ *
+ * @author fs
+ * @date 2024-10-25
+ */
+@Data
+public class FsUserCourseVideoRedPackage extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** id */
+    private Long id;
+
+    /** 公司id */
+    @Excel(name = "公司id")
+    private Long companyId;
+
+    /** 课程id */
+    @Excel(name = "课程id")
+    private Long videoId;
+
+    /** 红包价格 */
+    @Excel(name = "红包价格")
+    private BigDecimal redPacketMoney;
+
+}

+ 141 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsUserTalent.java

@@ -0,0 +1,141 @@
+package com.fs.course.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 达人对象 fs_user_talent
+ *
+ * @author fs
+ * @date 2024-05-31
+ */
+@Data
+public class FsUserTalent extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 达人id */
+    private Long talentId;
+
+    /** 所属用户 */
+    @Excel(name = "所属用户")
+    private Long userId;
+
+    /** 昵称 */
+    @Excel(name = "昵称")
+    private String nickName;
+
+    /** 头像 */
+    @Excel(name = "头像")
+    private String avatar;
+
+    /** 电话 */
+    @Excel(name = "电话")
+    private String phone;
+
+    /** 标题 */
+    @Excel(name = "标题")
+    private String title;
+
+    /** 性别 */
+    @Excel(name = "性别")
+    private Long sex;
+
+    /** 标签 */
+    @Excel(name = "标签")
+    private String tags;
+
+    /** 位置 */
+    @Excel(name = "位置")
+    private String address;
+
+    /** 达人等级 */
+    @Excel(name = "达人等级")
+    private Long level;
+
+    /** 粉丝数 */
+    @Excel(name = "粉丝数")
+    private Long fans;
+
+    /** 获赞数 */
+    @Excel(name = "获赞数")
+    private Long likes;
+
+    /** 删除标志 */
+    @Excel(name = "删除标志")
+    private Long isDel;
+
+    /** 抖音链接 */
+    @Excel(name = "抖音链接")
+    private String tiktokLink;
+
+    /** 快手链接 */
+    @Excel(name = "快手链接")
+    private String kwaiLink;
+
+    /** 是否审核 */
+    @Excel(name = "是否审核")
+    private Long isAudit;
+
+    /** 审核时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "审核时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date auditTime;
+
+    /** 证书编号 */
+    @Excel(name = "证书编号")
+    private String certificateCode;
+
+    /** 证书图片 */
+    @Excel(name = "证书图片")
+    private String certificateImages;
+
+    /** 余额 */
+    @Excel(name = "余额")
+    private BigDecimal balance;
+
+    /** 累计佣金 */
+    @Excel(name = "累计佣金")
+    private BigDecimal totalMoney;
+
+    /** 冻结佣金 */
+    @Excel(name = "冻结佣金")
+    private BigDecimal freezeMoney;
+
+    /** 已提现佣金 */
+    @Excel(name = "已提现佣金")
+    private BigDecimal extractMoney;
+
+    /** 达人类别1:普通达人2:带货达人 */
+    @Excel(name = "达人类别1:普通达人2:带货达人")
+    private String talentType;
+
+    @Excel(name = "状态1正常状态,2禁用状态")
+    private Long status;
+
+    @Excel(name = "生日")
+    private String birthDay;
+
+    @Excel(name = "背景")
+    private String backGround;
+
+    /** 收货人所在省 */
+    @Excel(name = "收货人所在省")
+    private String province;
+
+    /** 收货人所在市 */
+    @Excel(name = "收货人所在市")
+    private String city;
+
+    /** 收货人所在区 */
+    @Excel(name = "收货人所在区")
+    private String district;
+
+
+
+}

+ 29 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsUserTalentFollow.java

@@ -0,0 +1,29 @@
+package com.fs.course.domain;
+
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 达人关注对象 fs_user_talent_follow
+ *
+ * @author fs
+ * @date 2024-05-31
+ */
+@Data
+public class FsUserTalentFollow extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** id */
+    private Long id;
+
+    /** 用户id */
+    @Excel(name = "用户id")
+    private Long userId;
+
+    /** 达人id */
+    @Excel(name = "达人id")
+    private Long talentId;
+
+}

+ 138 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsUserVideo.java

@@ -0,0 +1,138 @@
+package com.fs.course.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 课堂视频对象 fs_user_video
+ *
+ * @author fs
+ * @date 2024-05-15
+ */
+@Data
+public class FsUserVideo extends BaseEntity
+{
+    /** ID */
+    private Long videoId;
+
+    /** 腾讯vod文件id */
+    @Excel(name = "腾讯vod文件id")
+    private String fileId;
+
+    /** 视频标题 */
+    @Excel(name = "视频标题")
+    private String title;
+
+    /** 视频描述 */
+    @Excel(name = "视频描述")
+    private String description;
+
+    private Integer uploadType;//上传方式
+
+    /** 视频URL */
+    @Excel(name = "视频URL")
+    private String url;
+
+    /** 视频缩略图 */
+    @Excel(name = "视频缩略图")
+    private String thumbnail;
+
+    /** 视频时长 */
+    @Excel(name = "视频时长")
+    private Long duration;
+
+    /** 达人id */
+    @Excel(name = "达人id")
+    private Long talentId;
+
+    /** 分类id */
+    @Excel(name = "分类id")
+    private Long cateId;
+
+    /** 点赞数 */
+    @Excel(name = "点赞数")
+    private Long likes;
+
+    /** 观看次数 */
+    @Excel(name = "观看次数")
+    private Long views;
+
+    /** 评论数 */
+    @Excel(name = "评论数")
+    private Long comments;
+
+    /** 视频状态 1:草稿,2、待审核3:发布 */
+    @Excel(name = "视频状态 1:草稿,2、待审核3:发布,5、下架")
+    private Integer status;
+
+    /** 是否热门 */
+    @Excel(name = "是否热门")
+    private Integer isHot;
+
+    /** 是否审核 */
+    @Excel(name = "是否审核")
+    private Integer isAudit;
+
+    /** 审核人 */
+    @Excel(name = "审核人")
+    private Long auditBy;
+
+    /** 审核时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "审核时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date auditTime;
+
+    /** 来源  */
+    @Excel(name = "来源 ")
+    private Integer source;
+
+    /** 删除标志 */
+    @Excel(name = "删除标志")
+    private Integer isDel;
+
+    /** 分享次数 */
+    @Excel(name = "分享次数")
+    private Long shares;
+
+    /** 视频标签 */
+    @Excel(name = "视频标签")
+    private String tags;
+
+    /** 精选商品id */
+    @Excel(name = "精选商品id")
+    private Long productId;
+
+    /** 精选商品json */
+    @Excel(name = "精选商品json")
+    private String productJson;
+
+    /** 收藏数 */
+    @Excel(name = "收藏数")
+    private Long favoriteNum;
+
+    /** 腾讯cdn地址 */
+    @Excel(name = "腾讯cdn地址")
+    private String txCdnUrl;
+
+    /** 腾讯pcdn地址 */
+    @Excel(name = "腾讯pcdn地址")
+    private String txPcdnUrl;
+
+    /** 腾讯vod地址 */
+    @Excel(name = "腾讯vod地址")
+    private String txVodUrl;
+
+    /** 华为obs地址 */
+    @Excel(name = "华为obs地址")
+    private String hwObsUrl;
+
+    /** 华为vod地址 */
+    @Excel(name = "华为vod地址")
+    private String hwVodUrl;
+
+    private String addNum;//随机添加数
+}

+ 54 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsUserVideoComment.java

@@ -0,0 +1,54 @@
+package com.fs.course.domain;
+
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 课堂视频评论对象 fs_user_video_comment
+ *
+ * @author fs
+ * @date 2024-05-15
+ */
+@Data
+public class FsUserVideoComment extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 评论id */
+    private Long commentId;
+
+    /** 用户id */
+    @Excel(name = "用户id")
+    private Long userId;
+
+    private String commentCode;
+
+    /** 视频id */
+    @Excel(name = "视频id")
+    private Long videoId;
+
+    /** 评论类型 1:评论,2:回复 */
+    @Excel(name = "评论类型 1:评论,2:回复")
+    private Long type;
+
+    /** 父评论id */
+    @Excel(name = "父评论id")
+    private String parentId;
+
+    /** 评论内容 */
+    @Excel(name = "评论内容")
+    private String content;
+
+    /** 回复数量 */
+    @Excel(name = "回复数量")
+    private Long replyCount;
+
+    /** 点赞数 */
+    @Excel(name = "点赞数")
+    private Long likes;
+
+    private Boolean synced;
+
+
+}

+ 30 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsUserVideoCommentLike.java

@@ -0,0 +1,30 @@
+package com.fs.course.domain;
+
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 课堂评论点赞对象 fs_user_video_comment_like
+ *
+ * @author fs
+ * @date 2024-05-15
+ */
+@Data
+public class FsUserVideoCommentLike extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 点赞id */
+    private Long id;
+
+    /** 用户id */
+    @Excel(name = "用户id")
+    private Long userId;
+
+    /** 评论id */
+    @Excel(name = "评论编号")
+    private Long commentId;
+
+
+}

+ 30 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsUserVideoFavorite.java

@@ -0,0 +1,30 @@
+package com.fs.course.domain;
+
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 课堂视频收藏对象 fs_user_video_favorite
+ *
+ * @author fs
+ * @date 2024-05-15
+ */
+@Data
+public class FsUserVideoFavorite extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 收藏id */
+    private Long favoriteId;
+
+    /** 用户id */
+    @Excel(name = "用户id")
+    private Long userId;
+
+    /** 视频id */
+    @Excel(name = "视频id")
+    private Long videoId;
+
+
+}

+ 30 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsUserVideoLike.java

@@ -0,0 +1,30 @@
+package com.fs.course.domain;
+
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 课堂视频点赞对象 fs_user_video_like
+ *
+ * @author fs
+ * @date 2024-05-15
+ */
+@Data
+public class FsUserVideoLike extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 点赞id */
+    private Long likeId;
+
+    /** 用户id */
+    @Excel(name = "用户id")
+    private Long userId;
+
+    /** 视频id */
+    @Excel(name = "视频id")
+    private Long videoId;
+
+
+}

+ 37 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsUserVideoTags.java

@@ -0,0 +1,37 @@
+package com.fs.course.domain;
+
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 短视频标签对象 fs_user_video_tags
+ *
+ * @author fs
+ * @date 2024-09-23
+ */
+@Data
+public class FsUserVideoTags extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 视频标签表ID */
+    private Long tagId;
+
+    /** 父id */
+    @Excel(name = "父id")
+    private Long pid;
+
+    /** 分类名称 */
+    @Excel(name = "分类名称")
+    private String tagName;
+
+    /** 排序 */
+    @Excel(name = "排序")
+    private Long sort;
+
+    /** 删除状态 */
+    @Excel(name = "删除状态")
+    private String isDel;
+
+}

+ 32 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsUserVideoView.java

@@ -0,0 +1,32 @@
+package com.fs.course.domain;
+
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 课堂视频观看记录对象 fs_user_video_view
+ *
+ * @author fs
+ * @date 2024-05-15
+ */
+@Data
+public class FsUserVideoView extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 观看id */
+    private Long viewId;
+
+    /** 用户id */
+    @Excel(name = "用户id")
+    private Long userId;
+
+    private Long duration;
+
+    /** 视频id */
+    @Excel(name = "视频id")
+    private Long videoId;
+
+
+}

+ 62 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsUserVipOrder.java

@@ -0,0 +1,62 @@
+package com.fs.course.domain;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 购买会员订单对象 fs_user_vip_order
+ *
+ * @author fs
+ * @date 2024-06-27
+ */
+@Data
+public class FsUserVipOrder extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 订单id */
+    private Long orderId;
+
+    /** 用户id */
+    @Excel(name = "用户id")
+    private Long userId;
+
+    /** 会员套餐id */
+    @Excel(name = "会员套餐id")
+    private Long packageId;
+
+    /** 开始时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date purchaseDate;
+
+    /** 过期时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "过期时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date expireDate;
+
+    private BigDecimal payMoney;
+
+    /** 支付金额 */
+    @Excel(name = "支付金额")
+    private BigDecimal price;
+
+    /** 状态 */
+    @Excel(name = "状态")
+    private Integer status;
+
+    private Integer payType;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date payTime;
+
+    /** 订单编码 */
+    @Excel(name = "订单编码")
+    private String orderCode;
+
+
+}

+ 51 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsUserVipPackage.java

@@ -0,0 +1,51 @@
+package com.fs.course.domain;
+
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 会员套餐对象 fs_user_vip_package
+ *
+ * @author fs
+ * @date 2024-06-27
+ */
+@Data
+public class FsUserVipPackage extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 套餐id */
+    private Long packageId;
+
+    /** 套餐名称 */
+    @Excel(name = "套餐名称")
+    private String packageName;
+
+    /** 有效期(天) -1为永久 */
+    @Excel(name = "有效期")
+    private Integer months;
+
+    /** 原价 */
+    @Excel(name = "原价")
+    private BigDecimal price;
+
+    /** 苹果产品id */
+    @Excel(name = "苹果产品id")
+    private String appleProductId;
+
+    /** 售价 */
+    @Excel(name = "售价")
+    private BigDecimal sellPrice;
+
+    /** 状态 */
+    @Excel(name = "状态")
+    private Long status;
+
+    /** 排序 */
+    @Excel(name = "排序")
+    private Long sort;
+
+}

+ 71 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsVideoBarrage.java

@@ -0,0 +1,71 @@
+package com.fs.course.domain;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 视频弹幕对象 fs_video_barrage
+ *
+ * @author fs
+ * @date 2025-04-07
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class FsVideoBarrage extends BaseEntity{
+    private String cmd;
+    /** 弹幕ID */
+    private Long id;
+
+    /** 视频ID */
+    @Excel(name = "视频ID")
+    private Long videoId;
+
+    /** 弹幕内容 */
+    @Excel(name = "弹幕内容")
+    private String content;
+
+    /** 弹幕对应视频时间点(毫秒) */
+    @Excel(name = "弹幕对应视频时间点", readConverterExp = "秒")
+    private Long timePoint;
+
+    /** 用户ID */
+    @Excel(name = "用户ID")
+    private Long userId;
+
+    /** 用户名 */
+    @Excel(name = "用户名")
+    private String username;
+
+    /** 发送平台(app / mini_app) */
+    @Excel(name = "发送平台", readConverterExp = "app,mini_app")
+    private String platform;
+
+    /** 状态:1-正常 0-隐藏 */
+    @Excel(name = "状态:1-正常 0-隐藏")
+    private String status;
+
+    /** 弹幕持续时间 */
+    @Excel(name = "弹幕持续时间")
+    private Long duration;
+
+    /** 是否优先显示1是0否,默认为0 */
+    @Excel(name = "是否优先显示1是0否,默认为0")
+    private String isPrior;
+
+    /** 是否彩色弹幕1是0否,默认为0 */
+    @Excel(name = "是否彩色弹幕1是0否,默认为0")
+    private String isColor;
+    // 例:'top',显示模式,top顶部居中,bottom底部居中,scroll滚动,默认为scroll
+    private String mode;
+    //颜色
+    private String color;
+    //字号
+    private String fontSize;
+
+
+
+}

+ 34 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsVideoCollection.java

@@ -0,0 +1,34 @@
+package com.fs.course.domain;
+
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 合集与视频关联对象 fs_video_collection
+ *
+ * @author fs
+ * @date 2025-07-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class FsVideoCollection extends BaseEntity{
+
+    /** 主键ID */
+    private Long id;
+
+    /** 合集ID */
+    @Excel(name = "合集ID")
+    private Long collectionId;
+
+    /** 视频ID */
+    @Excel(name = "视频ID")
+    private Long videoId;
+
+    /** 视频在合集中的排序 */
+    @Excel(name = "视频在合集中的排序")
+    private Long sort;
+
+
+}

+ 28 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsVideoKey.java

@@ -0,0 +1,28 @@
+package com.fs.course.domain;
+
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 弹幕关键字黑名单对象 fs_video_key
+ *
+ * @author fs
+ * @date 2025-05-22
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class FsVideoKey extends BaseEntity{
+
+    private Long id;
+
+    @Excel(name = "关键字")
+    private String keyword;
+
+    @Excel(name = "状态")
+    private Integer status;
+
+
+
+}

+ 95 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsVideoResource.java

@@ -0,0 +1,95 @@
+package com.fs.course.domain;
+
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class FsVideoResource {
+
+    /**
+     * 主键ID
+     */
+    private Long id;
+
+    /**
+     * 资源名称
+     */
+    private String resourceName;
+
+    /**
+     * 分类ID
+     */
+    private Long typeId;
+
+    /**
+     * 子分类ID
+     */
+    private Long typeSubId;
+
+    /**
+     * 文件名称
+     */
+    private String fileName;
+
+    /**
+     * 缩略图
+     */
+    private String thumbnail;
+
+    /**
+     * 视频URL
+     */
+    private String videoUrl;
+
+    /**
+     * 线路1
+     */
+    private String line1;
+
+    /**
+     * 线路2
+     */
+    private String line2;
+
+    /**
+     * 线路3
+     */
+    private String line3;
+
+    /**
+     * 时长
+     */
+    private Integer duration;
+    /**
+     * 文件大小
+     */
+    private Long fileSize;
+
+    /**
+     * 文件key
+     */
+    private String fileKey;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 是否已删除 0未删除 1已删除
+     */
+    private Integer isDel;
+
+    /**
+     * 课程ID
+     */
+    private String projectIds;
+
+
+    private Integer isTranscode;//是否转码
+
+    private String transcodeFileKey;//转码的文件key
+
+    private Integer sort;
+}

+ 55 - 0
fs-service-system/src/main/java/com/fs/course/domain/MarketPush.java

@@ -0,0 +1,55 @@
+package com.fs.course.domain;
+
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 营销活动推送对象 market_push
+ *
+ * @author fs
+ * @date 2025-03-25
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class MarketPush extends BaseEntity{
+
+    /** $column.columnComment */
+        private Long id;
+
+    /** 推送营销活动类型 */
+    @Excel(name = "推送营销活动类型")
+    private String marketType;
+
+    /** 推送标题 */
+    @Excel(name = "推送标题")
+    private String title;
+
+    /** 推送内容 */
+    @Excel(name = "推送内容")
+    private String cintent;
+
+    /** 定时推送时间 */
+    //@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "定时推送周期")
+    private Long pushTime;
+
+    /** 是否启用1:启用   0:禁用 */
+    @Excel(name = "是否启用1:启用   0:禁用")
+    private String status;
+
+    /** 点击通知以后跳转的地址 */
+    @Excel(name = "点击通知以后跳转的地址")
+    private String url;
+
+    /** 附件图片地址 */
+    @Excel(name = "附件图片地址")
+    private String imgUrl;
+
+    /** 已推送次数 */
+    @Excel(name = "已推送次数")
+    private Long pushCount;
+
+
+}

+ 30 - 0
fs-service-system/src/main/java/com/fs/course/domain/QwCourseLiveTemp.java

@@ -0,0 +1,30 @@
+package com.fs.course.domain;
+
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 企微课程直播课模板对象 qw_course_live_temp
+ *
+ * @author fs
+ * @date 2025-08-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class QwCourseLiveTemp extends BaseEntity{
+
+    /** id */
+    private Long id;
+
+    /** 名称 */
+    @Excel(name = "名称")
+    private String name;
+
+    /** 模板内容 */
+    @Excel(name = "模板内容")
+    private String tempJson;
+
+
+}

+ 14 - 0
fs-service-system/src/main/java/com/fs/course/dto/CoursePackageDTO.java

@@ -0,0 +1,14 @@
+package com.fs.course.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class CoursePackageDTO implements Serializable {
+    private Long packageId;
+    private String packageName;
+    private String secondName;
+    private String imgUrl;
+    private String duration;//弹出时间
+}

+ 142 - 0
fs-service-system/src/main/java/com/fs/course/dto/FsVideoCollectionDTO.java

@@ -0,0 +1,142 @@
+package com.fs.course.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fs.common.annotation.Excel;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class FsVideoCollectionDTO {
+    private Long id;
+
+    /** 合集ID */
+    @Excel(name = "合集ID")
+    private Long collectionId;
+
+    /** 视频ID */
+    @Excel(name = "视频ID")
+    private Long videoId;
+
+    /** 视频在合集中的排序 */
+    @Excel(name = "视频在合集中的排序")
+    private Long sort;
+
+    /** 腾讯vod文件id */
+    @Excel(name = "腾讯vod文件id")
+    private String fileId;
+
+    /** 视频标题 */
+    @Excel(name = "视频标题")
+    private String title;
+
+    /** 视频描述 */
+    @Excel(name = "视频描述")
+    private String description;
+
+    private Integer uploadType;//上传方式
+
+    /** 视频URL */
+    @Excel(name = "视频URL")
+    private String url;
+
+    /** 视频缩略图 */
+    @Excel(name = "视频缩略图")
+    private String thumbnail;
+
+    /** 视频时长 */
+    @Excel(name = "视频时长")
+    private Long duration;
+
+    /** 达人id */
+    @Excel(name = "达人id")
+    private Long talentId;
+
+    /** 分类id */
+    @Excel(name = "分类id")
+    private Long cateId;
+
+    /** 点赞数 */
+    @Excel(name = "点赞数")
+    private Long likes;
+
+    /** 观看次数 */
+    @Excel(name = "观看次数")
+    private Long views;
+
+    /** 评论数 */
+    @Excel(name = "评论数")
+    private Long comments;
+
+    /** 视频状态 1:草稿,2、待审核3:发布 */
+    @Excel(name = "视频状态 1:草稿,2、待审核3:发布,5、下架")
+    private Integer status;
+
+    /** 是否热门 */
+    @Excel(name = "是否热门")
+    private Integer isHot;
+
+    /** 是否审核 */
+    @Excel(name = "是否审核")
+    private Integer isAudit;
+
+    /** 审核人 */
+    @Excel(name = "审核人")
+    private Long auditBy;
+
+    /** 审核时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "审核时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date auditTime;
+
+    /** 来源  */
+    @Excel(name = "来源 ")
+    private Integer source;
+
+    /** 删除标志 */
+    @Excel(name = "删除标志")
+    private Integer isDel;
+
+    /** 分享次数 */
+    @Excel(name = "分享次数")
+    private Long shares;
+
+    /** 视频标签 */
+    @Excel(name = "视频标签")
+    private String tags;
+
+    /** 精选商品id */
+    @Excel(name = "精选商品id")
+    private Long productId;
+
+    /** 精选商品json */
+    @Excel(name = "精选商品json")
+    private String productJson;
+
+    /** 收藏数 */
+    @Excel(name = "收藏数")
+    private Long favoriteNum;
+
+    /** 腾讯cdn地址 */
+    @Excel(name = "腾讯cdn地址")
+    private String txCdnUrl;
+
+    /** 腾讯pcdn地址 */
+    @Excel(name = "腾讯pcdn地址")
+    private String txPcdnUrl;
+
+    /** 腾讯vod地址 */
+    @Excel(name = "腾讯vod地址")
+    private String txVodUrl;
+
+    /** 华为obs地址 */
+    @Excel(name = "华为obs地址")
+    private String hwObsUrl;
+
+    /** 华为vod地址 */
+    @Excel(name = "华为vod地址")
+    private String hwVodUrl;
+
+    private String addNum;//随机添加数
+
+}

+ 29 - 0
fs-service-system/src/main/java/com/fs/course/dto/StatisQueryDTO.java

@@ -0,0 +1,29 @@
+package com.fs.course.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.util.Set;
+
+@Data
+public class StatisQueryDTO implements Serializable {
+    private Long companyUserId;
+    private String sopId;
+    private Set<Long> videoList;
+    private Set<String> qwExternalContactIdList;
+    private LocalDate thisDate;
+
+    private String periodId;
+    /**
+     * 营期开始时间
+     */
+    private String startTime;
+
+    private LocalDate updateDate;
+
+    /**
+     * 客服-企业微信账号
+     */
+    private String qwUserId;
+}

+ 11 - 0
fs-service-system/src/main/java/com/fs/course/dto/UserCourseStudyDto.java

@@ -0,0 +1,11 @@
+package com.fs.course.dto;
+
+import lombok.Data;
+
+@Data
+public class UserCourseStudyDto {
+    private Long userId;      // 用户ID
+    private Long courseId;    // 课程ID
+    private String courseName; // 课程名称
+    private String appRealLink;//课程链接
+}

+ 9 - 0
fs-service-system/src/main/java/com/fs/course/dto/VideoFavoriteStatusDTO.java

@@ -0,0 +1,9 @@
+package com.fs.course.dto;
+
+import lombok.Data;
+
+@Data
+public class VideoFavoriteStatusDTO {
+    private Long videoId;
+    private Boolean favorited = false;
+}

+ 9 - 0
fs-service-system/src/main/java/com/fs/course/dto/VideoLikeStatusDTO.java

@@ -0,0 +1,9 @@
+package com.fs.course.dto;
+
+import lombok.Data;
+
+@Data
+public class VideoLikeStatusDTO {
+    private Long videoId;
+    private Boolean liked = false;
+}

+ 11 - 0
fs-service-system/src/main/java/com/fs/course/dto/WatchLogDTO.java

@@ -0,0 +1,11 @@
+package com.fs.course.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class WatchLogDTO implements Serializable {
+    private String date;
+    private Integer logType;
+}

+ 27 - 0
fs-service-system/src/main/java/com/fs/course/enums/CourseWatchLogTypeEnum.java

@@ -0,0 +1,27 @@
+package com.fs.course.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+
+import java.util.stream.Stream;
+
+@Getter
+@NoArgsConstructor
+@AllArgsConstructor
+public enum CourseWatchLogTypeEnum {
+
+    TYPE_1(1,"看课中"),
+    TYPE_2(2,"已完课"),
+    TYPE_3(3,"待看课");
+
+    private Integer value;
+    private String desc;
+
+    public static CourseWatchLogTypeEnum toType(Integer value) {
+        return Stream.of(CourseWatchLogTypeEnum.values())
+                .filter(p -> p.value == value)
+                .findAny()
+                .orElse(null);
+    }
+}

+ 48 - 0
fs-service-system/src/main/java/com/fs/course/mapper/FsUserCourseMapper.java

@@ -0,0 +1,48 @@
+package com.fs.course.mapper;
+
+import java.util.List;
+
+import com.fs.common.annotation.DataSource;
+import com.fs.common.enums.DataSourceType;
+import com.fs.course.domain.FsUserCourse;
+import com.fs.course.vo.*;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+import org.springframework.stereotype.Repository;
+
+/**
+ * 课程Mapper接口
+ *
+ * @author fs
+ * @date 2024-05-15
+ */
+@Repository
+public interface FsUserCourseMapper
+{
+    /**
+     * 查询课程
+     *
+     * @param courseId 课程主键
+     * @return 课程
+     */
+    public FsUserCourse selectFsUserCourseByCourseId(Long courseId);
+
+
+    @Update("update fs_user_course set views=views+1 where course_id=#{courseId}")
+    int updateViews(Long courseId);
+
+
+    @DataSource(DataSourceType.SLAVE)
+    @Select("select course_id ,project   from fs_user_course where is_del = 0 and is_private = 1")
+    List<FsUserCourse> selectFsUserCourseAllCourse();
+
+    @Select("select course_id,course_name,description,img_url,second_img secondImg,views from fs_user_course where " +
+            " is_private = 0 and is_del = 0 and is_show = 1 and is_tui = 1  order by sort,course_id")
+    List<FsUserCourseVideoAppletVO> selectFsUserCourseVideoApplet();
+
+    @Select("select video_id,title,course_id,video_url,SEC_TO_TIME(duration) as total_duration," +
+            "thumbnail videoImgUrl,description videoDescription,video_url videoUrl,question_bank_id questionBankId " +
+            " from fs_user_course_video where course_id = #{courseId} and is_del = 0 order by course_sort,video_id")
+    List<FsUserCourseVideoAppletVO.FsUserCourseVideo> selectFsUserCourseVideoAppletByCourseId(@Param("courseId") Long courseId);
+}

+ 22 - 0
fs-service-system/src/main/java/com/fs/course/service/IFsUserCourseService.java

@@ -0,0 +1,22 @@
+package com.fs.course.service;
+
+import com.fs.course.vo.*;
+
+import java.util.List;
+
+/**
+ * 课程Service接口
+ *
+ * @author fs
+ * @date 2024-05-15
+ */
+public interface IFsUserCourseService
+{
+
+    int updateViews(Long courseId);
+
+
+    List<FsUserCourseVideoAppletVO> selectFsUserCourseVideoApplet();
+
+    List<FsUserCourseVideoAppletVO.FsUserCourseVideo> selectFsUserCourseVideoAppletByCourseId(Long courseId);
+}

+ 48 - 0
fs-service-system/src/main/java/com/fs/course/service/impl/FsUserCourseServiceImpl.java

@@ -0,0 +1,48 @@
+package com.fs.course.service.impl;
+
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.net.URL;
+import java.util.*;
+
+import com.fs.course.mapper.*;
+import com.fs.course.vo.*;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.fs.course.service.IFsUserCourseService;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * 课程Service业务层处理
+ *
+ * @author fs
+ * @date 2024-05-15
+ */
+@Service
+@Slf4j
+public class FsUserCourseServiceImpl implements IFsUserCourseService
+{
+    @Autowired
+    private FsUserCourseMapper fsUserCourseMapper;
+
+    @Override
+    public int updateViews(Long courseId) {
+        return fsUserCourseMapper.updateViews(courseId);
+    }
+
+
+    @Override
+    public List<FsUserCourseVideoAppletVO> selectFsUserCourseVideoApplet() {
+        return fsUserCourseMapper.selectFsUserCourseVideoApplet();
+    }
+
+    @Override
+    public List<FsUserCourseVideoAppletVO.FsUserCourseVideo> selectFsUserCourseVideoAppletByCourseId(Long courseId) {
+        return fsUserCourseMapper.selectFsUserCourseVideoAppletByCourseId(courseId);
+    }
+
+}

+ 11 - 0
fs-service-system/src/main/java/com/fs/course/vo/CourseInfoVO.java

@@ -0,0 +1,11 @@
+package com.fs.course.vo;
+
+import lombok.Data;
+
+@Data
+public class CourseInfoVO {
+
+    private Long courseId;
+
+    private String courseName;
+}

+ 11 - 0
fs-service-system/src/main/java/com/fs/course/vo/CourseVideoVO.java

@@ -0,0 +1,11 @@
+package com.fs.course.vo;
+
+import lombok.Data;
+
+@Data
+public class CourseVideoVO {
+
+    private Long videoId;
+
+    private String title;
+}

+ 80 - 0
fs-service-system/src/main/java/com/fs/course/vo/FsCourseAnswerLogsListVO.java

@@ -0,0 +1,80 @@
+package com.fs.course.vo;
+
+import com.fs.common.annotation.Excel;
+import lombok.Data;
+
+@Data
+public class FsCourseAnswerLogsListVO {
+
+
+    private Long logId;
+
+    /**
+    * 小程序id
+    */
+    private Long userId;
+    /**
+    * 小程序用户名
+    */
+    @Excel(name = "小程序用户名")
+    private String userName;
+    private String fsAvatar;
+    /**
+    * 课程id
+    */
+    private Long courseId;
+    /**
+    * 课程名称
+    */
+    @Excel(name = "课程名称")
+    private String courseName;
+    /**
+    * 视频id
+    */
+    private Long videoId;
+    /**
+    * 视频名称
+    */
+    @Excel(name = "视频名称")
+    private String videoName;
+    /**
+    * 是否全部正确 0否 1是
+    */
+    @Excel(name = "是否全部正确 0否 1是")
+    private Integer isRight;
+    /**
+    * 创建时间
+    */
+    @Excel(name = "创建时间")
+    private String createTime;
+    /**
+    * 客服id
+    */
+    private Long companyUserId;
+    /**
+    * 客服名称
+    */
+    @Excel(name = "导医名称")
+    private String companyUserName;
+    /**
+    * 公司id
+    */
+    private Long companyId;
+    /**
+    * 公司名称
+    */
+    @Excel(name = "技术主体")
+    private String companyName;
+    /**
+    * 企业微信员工id
+    */
+    private Long qwUserId;
+    /**
+    * 企业微信员工名称
+    */
+    @Excel(name = "企业微信员工名称")
+    private String qwUserName;
+    private String answer;
+    private String questionTitle;
+    private String questionJson;
+}

+ 64 - 0
fs-service-system/src/main/java/com/fs/course/vo/FsCourseFinishTempVO.java

@@ -0,0 +1,64 @@
+package com.fs.course.vo;
+
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import com.fs.qw.vo.QwUserVO;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class FsCourseFinishTempVO  extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /** $column.columnComment */
+    private Long id;
+
+    /** 模板名称 */
+    @Excel(name = "模板名称")
+    private String name;
+
+    /** 状态 1正常 0停用 */
+    @Excel(name = "状态 1正常 0停用")
+    private Long status;
+
+    /** 规则 */
+    @Excel(name = "规则")
+    private String setting;
+
+    /** 公司id */
+    @Excel(name = "公司id")
+    private Long companyId;
+
+    /** 课程id */
+    @Excel(name = "课程id")
+    private Long courseId;
+
+    /** 小节视频id */
+    @Excel(name = "小节视频id")
+    private Long videoId;
+
+    /** 归属客服id(对多) */
+    @Excel(name = "归属客服id(对多)")
+    private String companyUserIds;
+
+    /** 删除标志 */
+    @Excel(name = "删除标志")
+    private Long isDel;
+
+    /** 是否整客服公司可用 */
+    @Excel(name = "是否整客服公司可用")
+    private Integer isAllCompanyUser;
+
+    public List<QwUserVO> userSelectList;
+
+    /**
+     * 部门ids,逗号分隔的部门id(对多)
+     */
+    private String deptIds;
+
+    /**
+     * 存放部门idList
+     */
+    private List<Integer> deptArrs;
+}

+ 26 - 0
fs-service-system/src/main/java/com/fs/course/vo/FsCourseListBySidebarVO.java

@@ -0,0 +1,26 @@
+package com.fs.course.vo;
+
+import lombok.Data;
+
+@Data
+public class FsCourseListBySidebarVO {
+    /**
+    * 课程id
+    */
+    private Long courseId;
+    /**
+    * 课程名称
+    */
+    private String courseName;
+
+    /**
+    * 标题
+    */
+    private String title;
+
+    /**
+    * 课程封面
+    */
+    private String imgUrl;
+
+}

+ 26 - 0
fs-service-system/src/main/java/com/fs/course/vo/FsCourseOverVO.java

@@ -0,0 +1,26 @@
+package com.fs.course.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fs.common.annotation.Excel;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class FsCourseOverVO {
+
+
+    @Excel(name = "企微客户")
+    private String qwUserName;
+    @Excel(name = "企业微信员工名称")
+    private String externalUserName;
+
+    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createTime;
+
+    @Excel(name = "进线时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date userCreateTime;
+
+}

+ 102 - 0
fs-service-system/src/main/java/com/fs/course/vo/FsCourseRedPacketHistoryLogVO.java

@@ -0,0 +1,102 @@
+package com.fs.course.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 红包历史记录对象 fs_course_red_packetLog
+ *
+ * @author fs
+ * @date 2025-05-22
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class FsCourseRedPacketHistoryLogVO extends BaseEntity{
+
+    @Excel(name = "日志id")
+    private Long logId;
+
+    @Excel(name = "批次单号")
+    private String outBatchNo;
+
+    @Excel(name = "课程id")
+    private Integer courseId;
+
+    @Excel(name = "课程名称")
+    private String courseName;
+
+    @Excel(name = "用户id")
+    private Long userId;
+
+    @Excel(name = "小节id")
+    private Long videoId;
+
+    @Excel(name = "小节名称")
+    private String videoName;
+
+    @Excel(name = "公司员工id")
+    private Long companyUserId;
+
+    @Excel(name = "公司用户名")
+    private String companyUserName;
+
+    @Excel(name = "公司id")
+    private Long companyId;
+
+    @Excel(name = "公司名称")
+    private String companyName;
+
+    @Excel(name = "转帐金额")
+    private BigDecimal amount;
+
+    @Excel(name = "状态 0 发送中  1 已发送")
+    private Long status;
+
+    @Excel(name = "企微分享userId")
+    private Long qwUserId;
+
+    @Excel(name = "企微用户名称")
+    private String qwUserName;
+
+    @Excel(name = "观看记录id")
+    private Long watchLogId;
+
+    @Excel(name = "备注")
+    private String remark;
+
+    @Excel(name = "营期id")
+    private String periodId;
+
+    @Excel(name = "播放时长")
+    private Integer duration;
+
+    @Excel(name = "用户头像")
+    private String fsAvatar;
+
+    @Excel(name = "用户昵称")
+    private String fsNickName;
+
+    @Excel(name = "标题")
+    private String title;
+
+    @Excel(name = "手机号")
+    private String phone;
+
+    @Excel(name = "创建时间")
+    private Date createTime;
+
+    private Date updateTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date eTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date sTime;
+
+}

+ 92 - 0
fs-service-system/src/main/java/com/fs/course/vo/FsCourseRedPacketLogListPVO.java

@@ -0,0 +1,92 @@
+package com.fs.course.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 短链课程看课记录对象 fs_course_red_packet_log
+ *
+ * @author fs
+ * @date 2024-10-24
+ */
+@Data
+public class FsCourseRedPacketLogListPVO extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+    @Excel(name = "记录编号")
+    private Long logId;
+
+    @Excel(name = "会员id")
+    private Long userId;
+
+    private String fsNickName;
+
+    private String fsAvatar;
+
+    @Excel(name = "课程名称")
+    private String courseName;
+
+    @Excel(name = "小节名称")
+    private String videoName;
+
+    @Excel(name = "记录类型" ,dictType = "sys_course_watch_log_type")
+    private Integer logType;
+
+    @Excel(name = "企微外部联系人id")
+    private String qwExternalContactId;
+
+
+    @Excel(name = "播放时长")
+    private String duration;
+
+
+    @Excel(name = "分享人企微userId")
+    private String qwUserId;
+    /**
+     * 企业微信员工名称
+     */
+    @Excel(name = "企业微信员工名称")
+    private String qwUserName;
+
+    @Excel(name = "所属导医")
+    private String companyUserName;
+
+    @Excel(name = "所属技术主体")
+    private String companyName;
+
+
+    @Excel(name = "发送方式")
+    private Integer sendType; //归属发送方式:1 个微  2 企微
+
+
+    /** 创建时间 */
+    @Excel(name = "创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+    @Excel(name = "批次编号")
+    private String outBatchNo;
+
+    @Excel(name = "课程id")
+    private String courseId;
+    @Excel(name = "课程id")
+    private String videoId;
+
+    @Excel(name = "小节名称")
+    private String title;
+
+    @Excel(name = "电话")
+    private String phone;
+    /** 转帐金额 */
+    @Excel(name = "转帐金额")
+    private BigDecimal amount;
+
+    @Excel(name = "状态",dictType = "sys_course_red_packet_status")
+    private Integer status;//状态 0 发送中  1  已发送
+
+}

+ 32 - 0
fs-service-system/src/main/java/com/fs/course/vo/FsCourseSopAiListVO.java

@@ -0,0 +1,32 @@
+package com.fs.course.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fs.common.annotation.Excel;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+public class FsCourseSopAiListVO  implements Serializable {
+
+
+    private static final long serialVersionUID = 1L;
+
+    /** id */
+    private Long id;
+
+    /** 规则名称 */
+    @Excel(name = "规则名称")
+    private String name;
+
+    /** qw_user主表的主键 */
+    @Excel(name = "qw_user主表的主键")
+    private String qwUserIds;
+
+    private Long companyId;
+
+    /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+}

+ 52 - 0
fs-service-system/src/main/java/com/fs/course/vo/FsCourseSopListVO.java

@@ -0,0 +1,52 @@
+package com.fs.course.vo;
+
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+@Data
+public class FsCourseSopListVO extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    /** $column.columnComment */
+    private Long id;
+
+    /** 规则名称 */
+    @Excel(name = "规则名称")
+    private String name;
+
+    /** 状态 1正常 0停用 */
+    @Excel(name = "状态 1正常 0停用")
+    private Long status;
+
+    /** 规则 */
+    @Excel(name = "规则")
+    private String setting;
+
+    /** 公司id */
+    @Excel(name = "公司id")
+    private Long companyId;
+
+    /** sop类型 (1:课程小节 2:直播) */
+    @Excel(name = "sop类型 ", readConverterExp = "1=:课程小节,2=:直播")
+    private Long sopType;
+
+    /** 关联ID */
+    @Excel(name = "关联ID")
+    private Long businessId;
+
+    /**
+    * 关联id的名称
+    */
+    private String courseTitle;
+
+    /** 短链 */
+    @Excel(name = "短链")
+    private String url;
+
+    /**
+     * 是否审核
+     */
+    private Integer isAudit;
+}

+ 95 - 0
fs-service-system/src/main/java/com/fs/course/vo/FsCourseSopLogsCVOList.java

@@ -0,0 +1,95 @@
+package com.fs.course.vo;
+
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fs.common.annotation.Excel;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class FsCourseSopLogsCVOList {
+
+    private static final long serialVersionUID = 1L;
+
+    /** $column.columnComment */
+    private Long id;
+
+    /** qw_user表-企微的成员qw_user_id */
+    private String qwUserid;
+
+
+    /**
+     * 企微qw_user主表主键
+     */
+    private Long qwId;
+
+    private Long companyUserId;
+
+    /**
+     * 企业微信用户昵称
+     */
+    @Excel(name = "企业微信用户昵称")
+    private String qwUserName;
+
+    /**
+     * 系统后台昵称(company_user)
+     */
+    @Excel(name = "系统后台昵称")
+    private String userName;
+
+    /** 企微外部联系人id */
+    @Excel(name = "企微外部联系人id")
+    private String externalUserId;
+
+    /**
+     * 客户昵称
+     */
+    @Excel(name = "客户昵称")
+    private String externalUserName;
+
+    /** 状态(0:无规则 1:待看课 2:看课中 3:已完课) */
+    @Excel(name = "状态", readConverterExp = "0=:无规则,1=:待看课,2=:看课中,3=:已完课")
+    private Integer watchStatus;
+
+    /** 符合条件的规则 */
+    @Excel(name = "符合条件的规则")
+    private String contentJson;
+
+    /** 发送(给成员)状态 0发送失败 1发送成功 3待发送 4未发送 5已作废 */
+    @Excel(name = "发送(给成员)状态 0发送失败 1发送成功 3待发送 4未发送 5已作废")
+    private Long sendStatus;
+
+    /** 预计发送时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "预计发送时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date sendTime;
+
+    /** 公司id */
+    @Excel(name = "公司id")
+    private Long companyId;
+
+    /** 接收(客户的)状态:0-未发送 1-已发送  */
+    @Excel(name = "接收(客户的)状态:0-未发送 1-已发送 ")
+    private Long receivingStatus;
+
+    /** 消息ID */
+    @Excel(name = "消息ID")
+    private String msgId;
+
+    /** qw_sop表主键 */
+    private Long sopId;
+
+    /** 实际发送时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "实际发送时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date realSendTime;
+
+    /** sop类型 (1:课程小节 2:直播) */
+    @Excel(name = "sop类型 ", readConverterExp = "1=:课程小节,2=:直播")
+    private Long sopType;
+
+    /** 关联ID */
+    private Long businessId;
+
+}

+ 95 - 0
fs-service-system/src/main/java/com/fs/course/vo/FsCourseSopLogsListVO.java

@@ -0,0 +1,95 @@
+package com.fs.course.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fs.common.annotation.Excel;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+public class FsCourseSopLogsListVO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /** $column.columnComment */
+    private Long id;
+
+    /** qw_user表的主键 */
+    @Excel(name = "企微的成员id")
+    private String qwUserId;
+
+    /**
+     * 企业微信用户昵称
+     */
+    private String qwUserName;
+
+    /**
+     * 系统后台昵称(company_user)
+     */
+    private String userName;
+    /**
+     * 企微qw_user主表主键
+     */
+    private Long qwId;
+
+    private Long companyUserId;
+
+    /** 企微外部联系人id */
+    @Excel(name = "企微外部联系人id")
+    private String externalUserId;
+
+    /**
+     * 客户昵称
+     */
+    private String externalUserName;
+
+    /**
+     * 客户电话
+     */
+    private String mobile;
+
+    /**
+     * 微信
+     */
+    private String weixin;
+
+
+    /** 要发送的内容 */
+    @Excel(name = "要发送的内容")
+    private String contentJson;
+
+    /**
+    * 状态(0:普通消息 1:待看课消息 2:看课中消息 3:已完课消息)
+    */
+    private Long watchStatus;
+
+    /** 发送(给成员)状态 0发送失败 1发送成功 3待发送 4未发送(未确定) 5已作废 */
+    private Long sendStatus;
+
+    /** 预计发送时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "预计发送时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date sendTime;
+
+    /** 公司id */
+    @Excel(name = "公司id")
+    private Long companyId;
+
+    /**
+     * 接收(客户的)状态:0-未发送 1-已发送
+     */
+    @Excel(name = "接收(客户的)状态:0-未发送 1-已发送 ")
+    private Long receivingStatus;
+
+    /**
+     * 企业微信返回的msgId,用于查消息结果
+     */
+    @Excel(name = "消息ID")
+    private String msgId;
+
+    /** 实际发送时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "实际发送时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date realSendTime;
+}

+ 97 - 0
fs-service-system/src/main/java/com/fs/course/vo/FsCourseSopLogsTVOList.java

@@ -0,0 +1,97 @@
+package com.fs.course.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 看课SOP  定时任务对象 fs_course_sop_logs
+ *
+ * @author fs
+ * @date 2024-09-04
+ */
+@Data
+public class FsCourseSopLogsTVOList extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** $column.columnComment */
+    private Long id;
+
+    /** qw_user表的主键 */
+    private String qwUserId;
+
+    /**
+     * 企业微信用户昵称
+     */
+    private String qwUserName;
+
+    /**
+     * 系统后台昵称(company_user)
+     */
+    private String userName;
+    /**
+     * 企微qw_user主表主键
+     */
+    private Long qwId;
+
+    private Long companyUserId;
+
+    /** 企微外部联系人id */
+    private String externalUserId;
+
+    /**
+     * 客户昵称
+     */
+    private String externalUserName;
+
+    /**
+     * 客户电话
+     */
+    private String mobile;
+
+    /**
+     * 微信
+     */
+    private String weixin;
+
+
+    /** 要发送的内容 */
+    private String contentJson;
+
+    /**
+     * 状态(0:普通消息 1:待看课消息 2:看课中消息 3:已完课消息)
+     */
+    private Long watchStatus;
+
+    /** 发送(给成员)状态 0发送失败 1发送成功 3待发送 4未发送(未确定) 5已作废 */
+    private Long sendStatus;
+
+    /** 预计发送时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date sendTime;
+
+    /** 公司id */
+    private Long companyId;
+
+    /**
+     * 接收(客户的)状态:0-未发送 1-已发送
+     */
+    private Long receivingStatus;
+
+    /**
+     * 企业微信返回的msgId,用于查消息结果
+     */
+    private String msgId;
+
+    /** 实际发送时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date realSendTime;
+
+    private Long customerId;
+
+    private Long businessId;
+
+}

+ 100 - 0
fs-service-system/src/main/java/com/fs/course/vo/FsCourseSopLogsVO.java

@@ -0,0 +1,100 @@
+package com.fs.course.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fs.common.annotation.Excel;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+public class FsCourseSopLogsVO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /** $column.columnComment */
+    private Long id;
+
+    /** qw_user表的主键 */
+    @Excel(name = "企微的成员id")
+    private String qwUserId;
+
+    /**
+     * 企业微信用户昵称
+     */
+    private String qwUserName;
+
+    /**
+     * 系统后台昵称(company_user)
+     */
+    private String userName;
+    /**
+     * 企微qw_user主表主键
+     */
+    private Long qwId;
+
+    private Long companyUserId;
+
+    /** 企微外部联系人id */
+    @Excel(name = "企微外部联系人id")
+    private String externalUserId;
+
+    /**
+     * 客户昵称
+     */
+    private String externalUserName;
+
+    /**
+     * 客户电话
+     */
+    private String mobile;
+
+    /**
+     * 微信
+     */
+    private String weixin;
+
+
+    /** 要发送的内容 */
+    @Excel(name = "要发送的内容")
+    private String contentJson;
+
+
+    /**
+     * 状态(0:普通消息 1:待看课消息 2:看课中消息 3:已完课消息)
+     */
+    private Long watchStatus;
+
+
+    /** 发送(给成员)状态 0发送失败 1发送成功 3待发送 4未发送(未确定) 5已作废 */
+    @Excel(name = "发送(给成员)状态 0发送失败 1发送成功 3待发送 4未发送(未确定) 5已作废")
+    private Long sendStatus;
+
+    /** 预计发送时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "预计发送时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date sendTime;
+
+    /** 公司id */
+    @Excel(name = "公司id")
+    private Long companyId;
+
+    /**
+     *  接收(客户的)状态:0-未发送 1-已发送
+     */
+    @Excel(name = "接收(客户的)状态:0-未发送 1-已发送 ")
+    private Long receivingStatus;
+
+    /**
+     * 企业微信返回的msgId,用于查消息结果
+     */
+    @Excel(name = "消息ID")
+    private String msgId;
+
+
+    /**
+     * 实际发送时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date realSendTime;
+}

+ 22 - 0
fs-service-system/src/main/java/com/fs/course/vo/FsCourseTrafficLogListVO.java

@@ -0,0 +1,22 @@
+package com.fs.course.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 短链课程流量记录对象 fs_course_traffic_log
+ *
+ * @author fs
+ * @date 2024-10-31
+ */
+@Data
+public class FsCourseTrafficLogListVO implements Serializable
+{
+    private String companyName;
+
+    private Long totalInternetTraffic;
+
+    private String month;
+
+}

+ 7 - 0
fs-service-system/src/main/java/com/fs/course/vo/FsCourseUserStatisticsListVO.java

@@ -0,0 +1,7 @@
+package com.fs.course.vo;
+
+import lombok.Data;
+
+@Data
+public class FsCourseUserStatisticsListVO {
+}

+ 37 - 0
fs-service-system/src/main/java/com/fs/course/vo/FsCourseVideoListBySidebarVO.java

@@ -0,0 +1,37 @@
+package com.fs.course.vo;
+
+import lombok.Data;
+
+@Data
+public class FsCourseVideoListBySidebarVO {
+
+    private Long videoId;
+
+    private Long courseId;
+
+    /**
+    * 视频标题
+    */
+    private String title;
+
+    /**
+    * 视频地址
+    */
+    private String videoUrl;
+
+    /**
+    * 时长
+    */
+    private Integer duration;
+
+    /**
+    * 视频缩略图
+    */
+    private String thumbnail;
+
+    /**
+    * 视频创建时间
+    */
+    private String createTime;
+
+}

+ 58 - 0
fs-service-system/src/main/java/com/fs/course/vo/FsCourseWatchCommentListVO.java

@@ -0,0 +1,58 @@
+package com.fs.course.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fs.common.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@ApiModel(value = "评论列表-管理端")
+public class FsCourseWatchCommentListVO {
+
+    @ApiModelProperty(value = "评论id")
+    private Long commentId;
+
+    @ApiModelProperty(value = "用户id")
+    private Long userId;
+
+    @Excel(name = "用户名称")
+    @ApiModelProperty(value = "用户名称")
+    private String nickName;
+
+    @ApiModelProperty(value = "课程id")
+    private Long courseId;
+
+    @ApiModelProperty(value = "视频id")
+    private Long videoId;
+
+    @Excel(name = "评论内容", width = 120)
+    @ApiModelProperty(value = "评论内容")
+    private String content;
+
+    @Excel(name = "评论时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "评论时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+    @ApiModelProperty(value = "时间(用于弹幕记录时间)")
+    private Integer time;
+
+    @ApiModelProperty(value = "字体大小")
+    private String fontSize;
+
+    @ApiModelProperty(value = "展示模式")
+    private String mode;
+
+    @ApiModelProperty(value = "字体颜色")
+    private String color;
+
+    @ApiModelProperty(value = "课程名称")
+    private String courseName;
+
+    @ApiModelProperty(value = "小节名称")
+    private String title;
+
+}

+ 54 - 0
fs-service-system/src/main/java/com/fs/course/vo/FsCourseWatchCommentVO.java

@@ -0,0 +1,54 @@
+package com.fs.course.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@ApiModel(value = "看课评论列表")
+public class FsCourseWatchCommentVO {
+
+    @ApiModelProperty(value = "评论id")
+    private Long commentId;
+
+    @ApiModelProperty(value = "用户id")
+    private Long userId;
+
+    @ApiModelProperty(value = "用户名称")
+    private String nickName;
+
+    @ApiModelProperty(value = "用户类型,1-管理员,2-用户")
+    private Integer userType;
+
+    @ApiModelProperty(value = "课程id")
+    private Long courseId;
+
+    @ApiModelProperty(value = "视频id")
+    private Long videoId;
+
+    @ApiModelProperty(value = "评论类型")
+    private Integer type;
+
+    @ApiModelProperty(value = "评论内容")
+    private String content;
+
+    @ApiModelProperty(value = "创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+    @ApiModelProperty(value = "时间(用于弹幕记录时间)")
+    private Integer time;
+
+    @ApiModelProperty(value = "字体大小")
+    private String fontSize;
+
+    @ApiModelProperty(value = "展示模式")
+    private String mode;
+
+    @ApiModelProperty(value = "字体颜色")
+    private String color;
+
+}

+ 107 - 0
fs-service-system/src/main/java/com/fs/course/vo/FsCourseWatchLogListVO.java

@@ -0,0 +1,107 @@
+package com.fs.course.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 短链课程看课记录对象 fs_course_watch_log
+ *
+ * @author fs
+ * @date 2024-10-24
+ */
+@Data
+public class FsCourseWatchLogListVO extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    @Excel(name = "记录编号")
+    private Long logId;
+
+    @Excel(name = "会员id")
+    private Long userId;
+
+    @Excel(name = "小程序昵称")
+    private String fsNickName;
+
+    @Excel(name = "小程序头像")
+    private String fsAvatar;
+
+    @Excel(name = "课程名称")
+    private String courseName;
+
+    @Excel(name = "小节名称")
+    private String videoName;
+
+    @Excel(name = "记录类型" ,dictType = "sys_course_watch_log_type")
+    private Integer logType;
+
+    @Excel(name = "企微外部联系人id")
+    private String qwExternalContactId;
+
+
+    @Excel(name = "播放时长")
+    private String duration;
+
+
+    @Excel(name = "分享人企微userId")
+    private String qwUserId;
+    /**
+     * 企业微信员工名称
+     */
+    @Excel(name = "企业微信员工名称")
+    private String qwUserName;
+
+    @Excel(name = "所属导医")
+    private String companyUserName;
+
+    @Excel(name = "所属技术主体")
+    private String companyName;
+
+    @Excel(name = "所属技术主体编号")
+    private String companyId;
+
+
+    @Excel(name = "发送方式")
+    private Integer sendType; //归属发送方式:1 个微  2 企微
+
+    private Integer rewardType;//奖励类型
+
+
+    /** 创建时间 */
+    @Excel(name = "创建时间",dateFormat = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+    @Excel(name = "更新时间",dateFormat = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
+
+    @Excel(name = "最后心跳时间",dateFormat = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date lastHeartbeatTime;
+
+    @Excel(name = "完课时间",dateFormat = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date finishTime;
+
+    @Excel(name = "营期时间",dateFormat = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date campPeriodTime;
+
+    @Excel(name = "外部联系人名称")
+    private String externalUserName; //外部联系人名称
+
+    @Excel(name = "部门名称")
+    private String deptName;
+
+    private Long videoId;
+
+    private Long courseId;
+
+    private Integer isVip;
+
+}

+ 10 - 0
fs-service-system/src/main/java/com/fs/course/vo/FsCourseWatchLogScoreVO.java

@@ -0,0 +1,10 @@
+package com.fs.course.vo;
+
+import lombok.Data;
+
+@Data
+public class FsCourseWatchLogScoreVO {
+    Long extId;
+    Integer type3; //待看课
+    Integer type4;//看课中断
+}

+ 33 - 0
fs-service-system/src/main/java/com/fs/course/vo/FsCourseWatchLogStatisticsListVO.java

@@ -0,0 +1,33 @@
+package com.fs.course.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fs.common.annotation.Excel;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class FsCourseWatchLogStatisticsListVO {
+
+
+    @Excel(name = "课程名称")
+    private String courseName;
+
+    @Excel(name = "小节名称")
+    private String videoName;
+
+    @Excel(name = "待看课")
+    private String type1;
+    @Excel(name = "看课中")
+    private String type2;
+    @Excel(name = "已完课")
+    private String type3;
+    @Excel(name = "看课中断")
+    private String type4;
+    @Excel(name = "企业微信员工名称")
+    private String qwUserName;
+
+    @Excel(name = "创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createTime;
+}

+ 57 - 0
fs-service-system/src/main/java/com/fs/course/vo/FsCourseWatchLogVO.java

@@ -0,0 +1,57 @@
+package com.fs.course.vo;
+
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+@Data
+public class FsCourseWatchLogVO extends BaseEntity  {
+
+    /** 日志Id */
+    private Long logId;
+
+    /** 用户id */
+    @Excel(name = "用户id")
+    private Long userId;
+
+    /** 小节id */
+    @Excel(name = "小节id")
+    private Long videoId;
+
+    /** 记录类型 1看课中 2完课 3待看课 */
+    @Excel(name = "记录类型 1看课中 2完课 3待看课")
+    private Integer logType;
+
+    /** 企微外部联系人id */
+    @Excel(name = "企微外部联系人id")
+    private Long qwExternalContactId;
+
+    /** 播放时长 */
+    @Excel(name = "播放时长")
+    private Long duration;
+
+    /** 分享人企微userId */
+    @Excel(name = "分享人企微userId")
+    private String qwUserId;
+
+    /** 客服id */
+    @Excel(name = "客服id")
+    private Long companyUserId;
+
+    /** 公司id */
+    @Excel(name = "公司id")
+    private Long companyId;
+
+    /** 课程id */
+    @Excel(name = "课程id")
+    private Long courseId;
+
+    private Integer sendType; //归属发送方式:1 个微  2 企微
+
+    private Integer rewardType;//发放奖励类型
+
+
+    private String title;
+
+    private String courseName;
+}

+ 44 - 0
fs-service-system/src/main/java/com/fs/course/vo/FsSopMyCourseLinkVO.java

@@ -0,0 +1,44 @@
+package com.fs.course.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fs.common.annotation.Excel;
+import lombok.Data;
+
+
+@Data
+public class FsSopMyCourseLinkVO  {
+
+    private static final long serialVersionUID = 1L;
+
+    /** 主键Id */
+    private Long id;
+
+    private String link;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private String createTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private String updateTime;
+
+
+    /** 企微员工昵称 */
+    private String qwUserName;
+
+    /** 课程标题 */
+    @Excel(name = "课程标题")
+    private String courseName;
+
+    /** 课程封面 */
+    private String courseUrl;
+
+    /** 课节描述 */
+    private String title;
+
+
+    /** 课节跳转地址 */
+    private String appRealLink;
+
+    private Integer isRead;
+
+}

+ 51 - 0
fs-service-system/src/main/java/com/fs/course/vo/FsUserCourseCommentListUVO.java

@@ -0,0 +1,51 @@
+package com.fs.course.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fs.common.annotation.Excel;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class FsUserCourseCommentListUVO {
+    private Long commentId;
+
+    /** 用户id */
+    @Excel(name = "用户id")
+    private Long userId;
+    @Excel(name = "目标用户id")
+    private Long toUserId;
+    /** 课堂id */
+    @Excel(name = "课堂id")
+    private Long courseId;
+    private String nickName;
+    private String toNickName;
+    private String avatar;
+    /** 评论类型 1:评论,2:回复 */
+    @Excel(name = "评论类型")
+    private Long type;
+
+    /** 父评论id */
+    @Excel(name = "父评论id")
+    private Long parentId;
+
+    /** 评论内容 */
+    @Excel(name = "评论内容")
+    private String content;
+
+    /** 回复数量 */
+    @Excel(name = "回复数量")
+    private Long replyCount;
+
+    /** 点赞数 */
+    @Excel(name = "点赞数")
+    private Long likes;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
+    private List<FsUserCourseCommentReplyListUVO> replyList;
+    //是否点赞 1是 0否
+    private Integer isLike;
+}

+ 47 - 0
fs-service-system/src/main/java/com/fs/course/vo/FsUserCourseCommentListVO.java

@@ -0,0 +1,47 @@
+package com.fs.course.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fs.common.annotation.Excel;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class FsUserCourseCommentListVO {
+    private Long commentId;
+
+    /** 用户id */
+    @Excel(name = "用户id")
+    private Long userId;
+
+    /** 课堂id */
+    @Excel(name = "课堂id")
+    private Long courseId;
+    private String nickName;
+    private String phone;
+    private String avatar;
+
+    /** 评论类型 1:评论,2:回复 */
+    @Excel(name = "评论类型")
+    private Long type;
+
+    /** 父评论id */
+    @Excel(name = "父评论id")
+    private Long parentId;
+
+    /** 评论内容 */
+    @Excel(name = "评论内容")
+    private String content;
+
+    /** 回复数量 */
+    @Excel(name = "回复数量")
+    private Long replyCount;
+
+    /** 点赞数 */
+    @Excel(name = "点赞数")
+    private Long likes;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
+}

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio