guohongjin
2024-05-15 5b7639f0bd9e056738ec15100ed0532e965c6cd5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
package cn.stylefeng.guns.modular.business.dto;
 
import cn.stylefeng.guns.modular.business.entity.CourseChapter;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
 
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
 
 
@ApiModel("课程响应对象信息")
@Data
public class CourseResponseDTO implements Serializable {
 
 
    /**
     * 主键id
     */
    @ApiModelProperty(value = "主键id")
    @ChineseDescription("主键id")
    private Long id;
    /**
     * 课程/章节名称
     */
 
    @ApiModelProperty(value = "课程名称")
    @ChineseDescription("课程名称")
    private String courseName;
    /**
     * 课程标签id串,逗号拼接
     */
 
    @ApiModelProperty(value = "课程标签id串,逗号拼接")
    @ChineseDescription("课程标签id串,逗号拼接")
    private String courseTagIds;
    /**
     * 课程简介
     */
 
    @ApiModelProperty(value = "课程简介")
    @ChineseDescription("课程简介")
    private String courseIntroduction;
    /**
     * 课程有效期
     */
 
    @ApiModelProperty(value = "课程有效期")
    @ChineseDescription("课程有效期")
    private Integer courseValidity;
    /**
     * 价格
     */
    @ApiModelProperty(value = "价格")
    @ChineseDescription("价格")
    private BigDecimal price;
    /**
     * 原价
     */
 
    @ApiModelProperty(value = "原价")
    @ChineseDescription("原价")
    private BigDecimal originalPrice;
    /**
     * 课程封面图
     */
 
    @ApiModelProperty(value = "课程封面图")
    @ChineseDescription("课程封面图")
    private String coverPictureUrl;
 
    /**
     * 课程详细图
     */
 
    @ApiModelProperty(value = "课程详细图")
    @ChineseDescription("课程详细图")
    private String courseDetailUrl;
    /**
     * 课程详细内容
     */
 
    @ApiModelProperty(value = "课程详细内容")
    @ChineseDescription("课程详细内容")
    private String courseContent;
    /**
     * 总评分
     */
 
    @ApiModelProperty(value = "总评分")
    @ChineseDescription("总评分")
    private BigDecimal totalScore;
    /**
     * 上架状态 1-上架,2-下架
     */
 
 
    @ApiModelProperty(value = "章节集合")
    @ChineseDescription("章节集合")
    private List<CourseChapter> courseChapterList;
 
 
 
    @ApiModelProperty(value = "课程标签名称集合")
    @ChineseDescription("课程标签名称集合")
    private String courseTagNames;
 
    @ApiModelProperty(value = "是否已购买 true-是,false-否")
    @ChineseDescription("是否已购买 true-是,false-否")
    private Boolean isBuy = false;
 
    @ApiModelProperty(value = "已购买人数")
    @ChineseDescription("已购买人数")
    private Integer buyNum = 0;
 
    @ApiModelProperty(value = "课程订单id")
    @ChineseDescription("课程订单id")
    private Long courseOrderId ;
 
 
    @ApiModel("课程章节响应")
    @Data
    public static class CourseChapterResponseDTO extends CourseChapter {
 
        /**
         * 课程总时长 单位S
         */
 
        @ApiModelProperty(value = "课程总时长 单位S")
        @ChineseDescription("课程总时长 单位S")
        private Long totalTime;
        /**
         * 课程已学时长
         */
        @ApiModelProperty(value = "课程已学时长")
        @ChineseDescription("课程已学时长")
        private Long learnedTime;
 
        @ApiModelProperty(value = "已学时长显示")
        @ChineseDescription("已学时长显示")
        private String studyShowTime;
 
        @ApiModelProperty(value = "总时长展示")
        @ChineseDescription("总时长展示")
        private String totalShowTime;
 
        @ApiModelProperty(value = "学习状态 1-已学,0-未学")
        @ChineseDescription("学习状态 1-已学,0-未学")
        private Integer studyState = 0;
 
        @ApiModelProperty("学习百分比")
        private Integer studyPercent = 0;
 
        public Integer getStudyPercent() {
            if (getTotalTime() != null && getLearnedTime() != null){
                return (int)Math.ceil(getLearnedTime()*100f/getTotalTime());
            }
            return studyPercent;
        }
        public String getStudyShowTime() {
            if (this.learnedTime != null){
                int hour = (int) Math.floor(this.learnedTime.longValue() / 3600f);
                long minute = (int) Math.floor((this.learnedTime.longValue() % 3600l) / 60f);
                long sec = (this.learnedTime.longValue() % 3600l) % 60;
                return String.format("%02d",  hour)+":"+String.format("%02d",  minute)+":"+String.format("%02d",  sec);
            }
            return studyShowTime;
        }
 
        public String getTotalShowTime() {
            if (this.totalTime != null){
                int hour = (int) Math.floor(this.totalTime.longValue() / 3600f);
                long minute = (int) Math.floor((this.totalTime.longValue() % 3600l) / 60f);
                long sec = (this.totalTime.longValue() % 3600l) % 60;
                return String.format("%02d",  hour)+":"+String.format("%02d",  minute)+":"+String.format("%02d",  sec);
            }
            return totalShowTime;
        }
 
        public Integer getStudyState() {
            if (this.learnedTime != null){
                return 1;
            }
            return studyState;
        }
 
        @ApiModelProperty(value = "章节响应DTO子集")
        @ChineseDescription("章节响应DTO子集")
        private List<CourseChapterResponseDTO> childCourseChapterResponseDTOList;
 
        @ApiModelProperty(value = "最新一次学习位置")
        @ChineseDescription("最新一次学习位置")
        private Long lastStudyTime;
 
 
    }
}