处理分享2
This commit is contained in:
parent
077b94ff99
commit
6431aa890b
@ -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)
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
@ -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"`
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user