222 lines
6.9 KiB
Go
222 lines
6.9 KiB
Go
package dto
|
||
|
||
import (
|
||
"fmt"
|
||
"hepa-calc-api/api/model"
|
||
"time"
|
||
)
|
||
|
||
// QuestionDto 问题表
|
||
type QuestionDto struct {
|
||
QuestionId string `json:"question_id"` // 主键id
|
||
QuestionTitle string `json:"question_title"` // 标题
|
||
QuestionSubtitle string `json:"question_subtitle"` // 副标题
|
||
QuestionIden string `json:"question_iden"` // 唯一标识
|
||
QuestionStatus int `json:"question_status"` // 问题状态(1:正常 2:待发布)
|
||
IsHide int `json:"is_hide"` // 是否隐藏(0:否 1:是)
|
||
IsRecommend int `json:"is_recommend"` // 是否推荐(0:否 1:是)
|
||
ClickCount int `json:"click_count"` // 点击次数(点击进入详情页的人次)
|
||
SubmitCount int `json:"submit_count"` // 提交次数(提交个人信息进行了算算的人次)
|
||
PayCount int `json:"pay_count"` // 支付次数(查看报告的人次)
|
||
Price float64 `json:"price"` // 价格(原价)
|
||
DiscountPrice *float64 `json:"discount_price"` // 优惠价格
|
||
DiscountEndTime *time.Time `json:"discount_end_time"` // 优惠截止时间
|
||
QuestionBrief string `json:"question_brief"` // 问题介绍
|
||
QuestionExplain string `json:"question_explain"` // 问题解释/科普
|
||
CreatedAt model.LocalTime `json:"created_at"` // 创建时间
|
||
UpdatedAt model.LocalTime `json:"updated_at"` // 更新时间
|
||
IsCollection bool `json:"is_collection"` // 用户是否收藏
|
||
FirstTimePrice *float64 `json:"first_time_price"` // 首次购买价格
|
||
BuyCount int `json:"buy_count"` // 被购买数量
|
||
}
|
||
|
||
// QuestionBuyStatusDto 获取问题解锁状态
|
||
type QuestionBuyStatusDto struct {
|
||
QuestionId string `json:"buy_status"` // 解锁状态(0:否 1:是)
|
||
QuestionTitle *int `json:"buy_mode"` // 解锁方式(1:单项有效期 2:会员)
|
||
ValidDate *time.Time `json:"valid_date"` // 到期时间
|
||
}
|
||
|
||
// GetQuestionDto 详情-问题
|
||
func GetQuestionDto(m *model.Question) *QuestionDto {
|
||
return &QuestionDto{
|
||
QuestionId: fmt.Sprintf("%d", m.QuestionId),
|
||
QuestionTitle: m.QuestionTitle,
|
||
QuestionSubtitle: m.QuestionSubtitle,
|
||
QuestionIden: m.QuestionIden,
|
||
QuestionStatus: m.QuestionStatus,
|
||
IsHide: m.IsHide,
|
||
IsRecommend: m.IsRecommend,
|
||
ClickCount: m.ClickCount,
|
||
SubmitCount: m.SubmitCount,
|
||
PayCount: m.PayCount,
|
||
Price: m.Price,
|
||
DiscountPrice: m.DiscountPrice,
|
||
DiscountEndTime: m.DiscountEndTime,
|
||
QuestionBrief: m.QuestionBrief,
|
||
QuestionExplain: m.QuestionExplain,
|
||
CreatedAt: m.CreatedAt,
|
||
UpdatedAt: m.UpdatedAt,
|
||
}
|
||
}
|
||
|
||
// GetQuestionListDto 列表-问题
|
||
func GetQuestionListDto(m []*model.Question) []*QuestionDto {
|
||
// 处理返回值
|
||
responses := make([]*QuestionDto, len(m))
|
||
|
||
if len(m) > 0 {
|
||
for i, v := range m {
|
||
response := &QuestionDto{
|
||
QuestionId: fmt.Sprintf("%d", v.QuestionId),
|
||
QuestionTitle: v.QuestionTitle,
|
||
QuestionSubtitle: v.QuestionSubtitle,
|
||
QuestionIden: v.QuestionIden,
|
||
QuestionStatus: v.QuestionStatus,
|
||
IsHide: v.IsHide,
|
||
IsRecommend: v.IsRecommend,
|
||
ClickCount: v.ClickCount,
|
||
SubmitCount: v.SubmitCount,
|
||
PayCount: v.PayCount,
|
||
Price: v.Price,
|
||
DiscountPrice: v.DiscountPrice,
|
||
DiscountEndTime: v.DiscountEndTime,
|
||
QuestionBrief: v.QuestionBrief,
|
||
QuestionExplain: v.QuestionExplain,
|
||
CreatedAt: v.CreatedAt,
|
||
UpdatedAt: v.UpdatedAt,
|
||
}
|
||
|
||
// 将转换后的结构体添加到新切片中
|
||
responses[i] = response
|
||
}
|
||
}
|
||
|
||
return responses
|
||
}
|
||
|
||
// GetHotQuestionListDto 列表-热榜问题
|
||
func GetHotQuestionListDto(m []*model.Question) []*QuestionDto {
|
||
// 处理返回值
|
||
responses := make([]*QuestionDto, len(m))
|
||
|
||
if len(m) > 0 {
|
||
for i, v := range m {
|
||
response := &QuestionDto{
|
||
QuestionId: fmt.Sprintf("%d", v.QuestionId),
|
||
QuestionTitle: v.QuestionTitle,
|
||
QuestionSubtitle: v.QuestionSubtitle,
|
||
QuestionIden: v.QuestionIden,
|
||
ClickCount: v.ClickCount,
|
||
SubmitCount: v.SubmitCount,
|
||
PayCount: v.PayCount,
|
||
}
|
||
|
||
// 将转换后的结构体添加到新切片中
|
||
responses[i] = response
|
||
}
|
||
}
|
||
|
||
return responses
|
||
}
|
||
|
||
// GetRecommendQuestionListDto 列表-为你推荐
|
||
func GetRecommendQuestionListDto(m []*model.Question) []*QuestionDto {
|
||
// 处理返回值
|
||
responses := make([]*QuestionDto, len(m))
|
||
|
||
if len(m) > 0 {
|
||
for i, v := range m {
|
||
response := &QuestionDto{
|
||
QuestionId: fmt.Sprintf("%d", v.QuestionId),
|
||
QuestionTitle: v.QuestionTitle,
|
||
QuestionSubtitle: v.QuestionSubtitle,
|
||
QuestionIden: v.QuestionIden,
|
||
ClickCount: v.ClickCount,
|
||
SubmitCount: v.SubmitCount,
|
||
PayCount: v.PayCount,
|
||
}
|
||
|
||
// 将转换后的结构体添加到新切片中
|
||
responses[i] = response
|
||
}
|
||
}
|
||
|
||
return responses
|
||
}
|
||
|
||
// GetGuessUserLikeListDto 列表-猜你喜欢
|
||
func GetGuessUserLikeListDto(m []*model.Question) []*QuestionDto {
|
||
// 处理返回值
|
||
responses := make([]*QuestionDto, len(m))
|
||
|
||
if len(m) > 0 {
|
||
for i, v := range m {
|
||
response := &QuestionDto{
|
||
QuestionId: fmt.Sprintf("%d", v.QuestionId),
|
||
QuestionTitle: v.QuestionTitle,
|
||
QuestionSubtitle: v.QuestionSubtitle,
|
||
QuestionIden: v.QuestionIden,
|
||
ClickCount: v.ClickCount,
|
||
SubmitCount: v.SubmitCount,
|
||
PayCount: v.PayCount,
|
||
}
|
||
|
||
// 将转换后的结构体添加到新切片中
|
||
responses[i] = response
|
||
}
|
||
}
|
||
|
||
return responses
|
||
}
|
||
|
||
// GetQuestionPageListDto 列表-分页问题
|
||
func GetQuestionPageListDto(m []*model.Question) []*QuestionDto {
|
||
// 处理返回值
|
||
responses := make([]*QuestionDto, len(m))
|
||
|
||
if len(m) > 0 {
|
||
for i, v := range m {
|
||
response := &QuestionDto{
|
||
QuestionId: fmt.Sprintf("%d", v.QuestionId),
|
||
QuestionTitle: v.QuestionTitle,
|
||
QuestionSubtitle: v.QuestionSubtitle,
|
||
QuestionIden: v.QuestionIden,
|
||
ClickCount: v.ClickCount,
|
||
SubmitCount: v.SubmitCount,
|
||
PayCount: v.PayCount,
|
||
Price: v.Price,
|
||
DiscountPrice: v.DiscountPrice,
|
||
}
|
||
|
||
// 将转换后的结构体添加到新切片中
|
||
responses[i] = response
|
||
}
|
||
}
|
||
|
||
return responses
|
||
}
|
||
|
||
// LoadIsCollection 加载数据-是否收藏
|
||
func (r *QuestionDto) LoadIsCollection(isCollection bool) *QuestionDto {
|
||
r.IsCollection = isCollection
|
||
|
||
return r
|
||
}
|
||
|
||
// LoadFirstTimePrice 加载数据-首次购买价格
|
||
func (r *QuestionDto) LoadFirstTimePrice(firstTimePrice *float64) *QuestionDto {
|
||
if firstTimePrice != nil {
|
||
r.FirstTimePrice = firstTimePrice
|
||
}
|
||
|
||
return r
|
||
}
|
||
|
||
// LoadBuyCount 加载数据-问题被购买数量
|
||
func (r *QuestionDto) LoadBuyCount(buyCount int) *QuestionDto {
|
||
r.BuyCount = buyCount
|
||
|
||
return r
|
||
}
|