处理分享2

This commit is contained in:
wucongxing8150 2024-09-29 14:52:42 +08:00
parent 077b94ff99
commit 6431aa890b
7 changed files with 127 additions and 58 deletions

View File

@ -59,7 +59,13 @@ func (r *Share) GetShare(c *gin.Context) {
return
}
g := &dto.ShareDto{}
//g := dto.ShareDto{}
g := dto.ShareDto{
QuestionQa: &dto.QuestionQaDto{},
Question: []*dto.QuestionDto{},
BaseTokenItem: []*dto.BaseTokenItemDto{},
}
// 加载题库数据
g.QuestionQa = dto.GetQuestionQaDto(questionQa)
@ -68,17 +74,32 @@ func (r *Share) GetShare(c *gin.Context) {
maps = make(map[string]interface{})
maps["qa_id"] = questionQa.QaId
maps["is_must_select"] = 1
questionQaItems, err := questionQaItemDao.GetQuestionQaItemrPreloadList(maps)
questionQaItems, err := questionQaItemDao.GetQuestionQaItemPreloadList(maps)
if err == nil && len(questionQaItems) > 0 {
for i, item := range questionQaItems {
for _, item := range questionQaItems {
questionOptionDao := dao.QuestionOptionDao{}
maps = make(map[string]interface{})
maps["question_id"] = item.QuestionId
questionOption, err := questionOptionDao.GetQuestionOptionList(maps)
if err != nil {
responses.FailWithMessage("内部错误", c)
return
}
// 处理返回值
questionDto := dto.GetShareQuestionDto(item.Question)
// 加载选项
questionDto.LoadQuestionOption(item.Question.QuestionOption)
questionDto.LoadQuestionOption(questionOption)
// 加载图片
questionDto.LoadQuestionImage(item.Question.QuestionImage)
// 加载答案
questionDto.LoadQuestionAnswer(item.Question.QuestionAnswer)
// 将转换后的结构体添加到新切片中
g.Question[i] = questionDto
g.Question = append(g.Question, questionDto)
}
}
@ -92,11 +113,26 @@ func (r *Share) GetShare(c *gin.Context) {
questionQaItems, err = questionQaItemDao.GetQuestionQaItemWhereListRand(maps, remainingQuantity)
if err == nil && len(questionQaItems) > 0 {
for _, item := range questionQaItems {
questionOptionDao := dao.QuestionOptionDao{}
maps = make(map[string]interface{})
maps["question_id"] = item.QuestionId
questionOption, err := questionOptionDao.GetQuestionOptionList(maps)
if err != nil {
responses.FailWithMessage("内部错误", c)
return
}
// 处理返回值
questionDto := dto.GetShareQuestionDto(item.Question)
// 加载选项
questionDto.LoadQuestionOption(item.Question.QuestionOption)
questionDto.LoadQuestionOption(questionOption)
// 加载图片
questionDto.LoadQuestionImage(item.Question.QuestionImage)
// 加载答案
questionDto.LoadQuestionAnswer(item.Question.QuestionAnswer)
// 将转换后的结构体添加到新切片中
g.Question = append(g.Question, questionDto)

View File

@ -82,8 +82,8 @@ func (r *QuestionQaItemDao) GetQuestionQaItemList(maps interface{}) (m []*model.
return m, nil
}
// GetQuestionQaItemrPreloadList 获取列表-加载全部关联
func (r *QuestionQaItemDao) GetQuestionQaItemrPreloadList(maps interface{}) (m []*model.QuestionQaItem, err error) {
// GetQuestionQaItemPreloadList 获取列表-加载全部关联
func (r *QuestionQaItemDao) GetQuestionQaItemPreloadList(maps interface{}) (m []*model.QuestionQaItem, err error) {
err = global.Db.Preload(clause.Associations).Where(maps).Find(&m).Error
if err != nil {
return nil, err

View File

@ -16,7 +16,7 @@ type QuestionDto struct {
IsDelete int `json:"is_delete"` // 是否删除0:否 1:是)
QuestionSource int `json:"question_source"` // 题目来源1:本题库 2:外部数据)
QuestionImage []string `json:"question_image"` // 题目图片(逗号分隔)
QuestionAnswer string `json:"question_answer"` // 答案
QuestionAnswer []string `json:"question_answer"` // 答案
QuestionAnalysis string `json:"question_analysis"` // 解析
Difficulty int `json:"difficulty"` // 难度0:未知 1:低 2:中 3:高)
FirstLabelId string `json:"first_label_id"` // 一级标签id
@ -30,17 +30,6 @@ type QuestionDto struct {
// GetQuestionDto 题目详情
func GetQuestionDto(m *model.Question) *QuestionDto {
var questionImage []string
if m.QuestionImage != "" {
result := strings.Split(m.QuestionImage, ",")
if len(result) > 0 {
for _, v := range result {
v = utils.AddOssDomain(v)
questionImage = append(questionImage, v)
}
}
}
return &QuestionDto{
QuestionId: fmt.Sprintf("%d", m.QuestionId),
QuestionName: m.QuestionName,
@ -48,8 +37,8 @@ func GetQuestionDto(m *model.Question) *QuestionDto {
QuestionStatus: m.QuestionStatus,
IsDelete: m.IsDelete,
QuestionSource: m.QuestionSource,
QuestionImage: questionImage,
QuestionAnswer: m.QuestionAnswer,
QuestionImage: []string{},
QuestionAnswer: []string{},
QuestionAnalysis: m.QuestionAnalysis,
Difficulty: m.Difficulty,
FirstLabelId: fmt.Sprintf("%d", *m.FirstLabelId),
@ -66,17 +55,6 @@ func GetQuestionListDto(m []*model.Question) []*QuestionDto {
if len(m) > 0 {
for i, v := range m {
var questionImage []string
if v.QuestionImage != "" {
result := strings.Split(v.QuestionImage, ",")
if len(result) > 0 {
for _, v := range result {
v = utils.AddOssDomain(v)
questionImage = append(questionImage, v)
}
}
}
response := &QuestionDto{
QuestionId: fmt.Sprintf("%d", v.QuestionId),
QuestionName: v.QuestionName,
@ -84,8 +62,8 @@ func GetQuestionListDto(m []*model.Question) []*QuestionDto {
QuestionStatus: v.QuestionStatus,
IsDelete: v.IsDelete,
QuestionSource: v.QuestionSource,
QuestionImage: questionImage,
QuestionAnswer: v.QuestionAnswer,
QuestionImage: []string{},
QuestionAnswer: []string{},
QuestionAnalysis: v.QuestionAnalysis,
Difficulty: v.Difficulty,
FirstLabelId: fmt.Sprintf("%d", *v.FirstLabelId),
@ -104,6 +82,16 @@ func GetQuestionListDto(m []*model.Question) []*QuestionDto {
response = response.LoadSecondLabel(v.SecondLabel)
}
// 加载图片
if v.QuestionImage != "" {
response = response.LoadQuestionImage(v.QuestionImage)
}
// 加载答案
if v.QuestionAnswer != "" {
response = response.LoadQuestionAnswer(v.QuestionAnswer)
}
// 将转换后的结构体添加到新切片中
responses[i] = response
}
@ -114,23 +102,13 @@ func GetQuestionListDto(m []*model.Question) []*QuestionDto {
// GetShareQuestionDto 题目详情-分享
func GetShareQuestionDto(m *model.Question) *QuestionDto {
var questionImage []string
if m.QuestionImage != "" {
result := strings.Split(m.QuestionImage, ",")
if len(result) > 0 {
for _, v := range result {
v = utils.AddOssDomain(v)
questionImage = append(questionImage, v)
}
}
}
return &QuestionDto{
QuestionId: fmt.Sprintf("%d", m.QuestionId),
QuestionName: m.QuestionName,
QuestionType: m.QuestionType,
QuestionSource: m.QuestionSource,
QuestionImage: questionImage,
QuestionImage: []string{},
QuestionAnswer: []string{},
QuestionAnalysis: m.QuestionAnalysis,
Difficulty: m.Difficulty,
CreatedAt: m.CreatedAt,
@ -161,3 +139,30 @@ func (r *QuestionDto) LoadQuestionOption(m []*model.QuestionOption) *QuestionDto
}
return r
}
// LoadQuestionImage 加载图片
func (r *QuestionDto) LoadQuestionImage(s string) *QuestionDto {
if s != "" {
result := strings.Split(s, ",")
if len(result) > 0 {
for _, v := range result {
v = utils.AddOssDomain(v)
r.QuestionImage = append(r.QuestionImage, v)
}
}
}
return r
}
// LoadQuestionAnswer 加载答案
func (r *QuestionDto) LoadQuestionAnswer(s string) *QuestionDto {
if s != "" {
result := strings.Split(s, ",")
if len(result) > 0 {
for _, v := range result {
r.QuestionAnswer = append(r.QuestionAnswer, v)
}
}
}
return r
}

View File

@ -89,6 +89,12 @@ func (r *QuestionQaItemDto) LoadSecondLabel(m *model.Label) *QuestionQaItemDto {
func (r *QuestionQaItemDto) LoadQuestion(m *model.Question) *QuestionQaItemDto {
if m != nil {
r.Question = GetQuestionDto(m)
// 加载图片
r.Question = r.Question.LoadQuestionImage(m.QuestionImage)
// 加载答案
r.Question = r.Question.LoadQuestionAnswer(m.QuestionAnswer)
}
return r
}

View File

@ -38,7 +38,7 @@ type AddQuestion struct {
QuestionType int `json:"question_type" form:"question_type" validate:"required,oneof=1 2 3 4" label:"题目类型"` // 题目类型(1:单选 2:多选 3:问答 4:判断)
QuestionStatus int `json:"question_status" form:"question_status" validate:"required,oneof=1 2" label:"状态"` // 状态1:正常 2:禁用)
QuestionSource int `json:"question_source" form:"question_source" validate:"required,oneof=1 2" label:"题目来源"` // 题目来源1:本题库 2:外部数据)
QuestionAnswer string `json:"question_answer" form:"question_answer" validate:"required" label:"答案"`
QuestionAnswer []string `json:"question_answer" form:"question_answer" validate:"required" label:"答案"`
QuestionAnalysis string `json:"question_analysis" form:"question_analysis" label:"解析"`
Difficulty int `json:"difficulty" form:"difficulty" validate:"required,oneof=1 2 3" label:"难度"`
FirstLabelId string `json:"first_label_id" form:"first_label_id" validate:"required" label:"一级标签id"`
@ -72,7 +72,7 @@ type PutQuestion struct {
QuestionName string `json:"question_name" form:"question_name" validate:"required" label:"题目名称"`
QuestionType int `json:"question_type" form:"question_type" validate:"required,oneof=1 2 3 4" label:"题目类型"` // 题目类型(1:单选 2:多选 3:问答 4:判断)
QuestionStatus int `json:"question_status" form:"question_status" validate:"required,oneof=1 2" label:"状态"` // 状态1:正常 2:禁用)
QuestionAnswer string `json:"question_answer" form:"question_answer" validate:"required" label:"答案"`
QuestionAnswer []string `json:"question_answer" form:"question_answer" validate:"required" label:"答案"`
QuestionAnalysis string `json:"question_analysis" form:"question_analysis" label:"解析"`
Difficulty int `json:"difficulty" form:"difficulty" validate:"required,oneof=1 2 3" label:"难度"`
FirstLabelId string `json:"first_label_id" form:"first_label_id" validate:"required" label:"一级标签id"`

View File

@ -13,9 +13,9 @@ type res struct {
}
func result(code int, data interface{}, msg string, c *gin.Context) {
if data == nil {
data = gin.H{}
}
//if data == nil {
// data = gin.H{}
//}
c.JSON(http.StatusOK, res{
code,
data,

View File

@ -56,6 +56,17 @@ func (r *QuestionService) AddQuestion(req requests.AddQuestion) (bool, error) {
questionImage = strings.Join(result, ",")
}
// 处理答案
var questionAnswer string
if len(req.QuestionAnswer) > 0 {
result := make([]string, len(req.QuestionAnswer))
for i, url := range req.QuestionAnswer {
result[i] = url
}
questionAnswer = strings.Join(result, ",")
}
// 判断选项
if req.QuestionType == 1 || req.QuestionType == 2 {
if len(req.QuestionOption) == 0 {
@ -88,7 +99,7 @@ func (r *QuestionService) AddQuestion(req requests.AddQuestion) (bool, error) {
QuestionStatus: req.QuestionStatus,
QuestionSource: req.QuestionSource,
QuestionImage: questionImage,
QuestionAnswer: req.QuestionAnswer,
QuestionAnswer: questionAnswer,
QuestionAnalysis: req.QuestionAnalysis,
Difficulty: req.Difficulty,
FirstLabelId: &firstLabelId,
@ -365,11 +376,6 @@ func (r *QuestionService) PutQuestion(questionId int64, req requests.PutQuestion
questionData["question_status"] = req.QuestionStatus
}
// 答案
if req.QuestionAnswer != question.QuestionAnswer {
questionData["question_answer"] = req.QuestionAnswer
}
// 解析
if req.QuestionAnalysis != question.QuestionAnalysis {
questionData["question_analysis"] = req.QuestionAnalysis
@ -432,6 +438,16 @@ func (r *QuestionService) PutQuestion(questionId int64, req requests.PutQuestion
questionData["question_image"] = strings.Join(result, ",")
}
// 答案
if len(req.QuestionAnswer) > 0 {
result := make([]string, len(req.QuestionAnswer))
for i, v := range req.QuestionAnswer {
result[i] = v
}
questionData["question_answer"] = strings.Join(result, ",")
}
// 验证重复
if req.QuestionName != question.QuestionName {
maps := make(map[string]interface{})
@ -799,5 +815,11 @@ func (r *QuestionService) GetQuestion(questionId int64) (g *dto.QuestionDto, err
// 加载选项
g.LoadQuestionOption(question.QuestionOption)
// 加载图片
g.LoadQuestionImage(question.QuestionImage)
// 加载答案
g.LoadQuestionAnswer(question.QuestionAnswer)
return g, nil
}