package rag import ( "encoding/json" "eta/eta_api/controllers" "eta/eta_api/models" "eta/eta_api/models/rag" "eta/eta_api/models/rag/request" "eta/eta_api/models/rag/response" "eta/eta_api/utils" "fmt" "github.com/rdlucklib/rdluck_tools/paging" "strings" "time" ) // QuestionController // @Description: 问题库管理 type QuestionController struct { controllers.BaseAuthController } // List // @Title 列表 // @Description 列表 // @Param PageSize query int true "每页数据条数" // @Param CurrentIndex query int true "当前页页码,从1开始" // @Param KeyWord query string true "搜索关键词" // @Success 200 {object} []*rag.QuestionListListResp // @router /question/list [get] func (c *QuestionController) List() { br := new(models.BaseResponse).Init() defer func() { c.Data["json"] = br c.ServeJSON() }() sysUser := c.SysUser if sysUser == nil { br.Msg = "请登录" br.ErrMsg = "请登录,SysUser Is Empty" return } pageSize, _ := c.GetInt("PageSize") currentIndex, _ := c.GetInt("CurrentIndex") keyWord := c.GetString("KeyWord") var startSize int if pageSize <= 0 { pageSize = utils.PageSize20 } if currentIndex <= 0 { currentIndex = 1 } startSize = utils.StartIndex(currentIndex, pageSize) var condition string var pars []interface{} if keyWord != "" { condition = fmt.Sprintf(` AND %s = ?`, rag.QuestionColumns.QuestionContent) pars = append(pars, `%`+keyWord+`%`) } obj := new(rag.Question) total, list, err := obj.GetPageListByCondition(condition, pars, startSize, pageSize) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } viewList := obj.ListToViewList(list) page := paging.GetPaging(currentIndex, pageSize, total) resp := response.QuestionListListResp{ List: viewList, Paging: page, } br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // Add // @Title 新增问题 // @Description 新增问题 // @Param request body request.AddQuestionReq true "type json string" // @Success 200 Ret=200 新增成功 // @router /question/add [post] func (c *QuestionController) Add() { br := new(models.BaseResponse).Init() defer func() { c.Data["json"] = br c.ServeJSON() }() var req request.AddQuestionReq err := json.Unmarshal(c.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } req.Content = strings.TrimSpace(req.Content) if req.Content == "" { br.Msg = "请输入问题" br.IsSendEmail = false return } item := &rag.Question{ QuestionId: 0, QuestionContent: req.Content, Sort: 0, ModifyTime: time.Now(), CreateTime: time.Now(), } err = item.Create() if err != nil { br.Msg = "添加失败" br.ErrMsg = "添加失败,Err:" + err.Error() return } br.Ret = 200 br.Success = true br.Msg = `添加成功` } // Edit // @Title 编辑问题 // @Description 编辑问题 // @Param request body request.EditQuestionReq true "type json string" // @Success 200 Ret=200 新增成功 // @router /question/edit [post] func (c *QuestionController) Edit() { br := new(models.BaseResponse).Init() defer func() { c.Data["json"] = br c.ServeJSON() }() var req request.EditQuestionReq err := json.Unmarshal(c.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } if req.QuestionId <= 0 { br.Msg = "问题id不能为空" br.IsSendEmail = false return } req.Content = strings.TrimSpace(req.Content) if req.Content == "" { br.Msg = "请输入问题" br.IsSendEmail = false return } obj := rag.Question{} item, err := obj.GetByID(req.QuestionId) if err != nil { br.Msg = "修改失败" br.ErrMsg = "修改失败,查找问题失败,Err:" + err.Error() if utils.IsErrNoRow(err) { br.Msg = "问题不存在" br.IsSendEmail = false } return } item.QuestionContent = req.Content item.ModifyTime = time.Now() err = item.Update([]string{"question_content", "modify_time"}) if err != nil { br.Msg = "修改失败" br.ErrMsg = "修改失败,Err:" + err.Error() return } br.Ret = 200 br.Success = true br.Msg = `添加成功` } // Edit // @Title 新增问题 // @Description 新增问题 // @Param request body request.EditQuestionReq true "type json string" // @Success 200 Ret=200 新增成功 // @router /question/del [post] func (c *QuestionController) Del() { br := new(models.BaseResponse).Init() defer func() { c.Data["json"] = br c.ServeJSON() }() var req request.EditQuestionReq err := json.Unmarshal(c.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } if req.QuestionId <= 0 { br.Msg = "问题id不能为空" br.IsSendEmail = false return } obj := rag.Question{} item, err := obj.GetByID(req.QuestionId) if err != nil { br.Msg = "修改失败" br.ErrMsg = "修改失败,查找问题失败,Err:" + err.Error() if utils.IsErrNoRow(err) { br.Msg = "问题不存在" br.IsSendEmail = false } return } err = item.Del() if err != nil { br.Msg = "删除失败" br.ErrMsg = "删除失败,Err:" + err.Error() return } br.Ret = 200 br.Success = true br.Msg = `删除成功` }