GetPrompts 获取提示词列表 @Summary 获取提示词列表 @Description 获取提示词列表,支持分页、关键词搜索、按分组筛选、按分组类型筛选 @Tags Prompt @Produce json @Param keyword query string false "关键词搜索" @Param group_id query string false "分组ID,多个ID用逗号分隔,为空时查询全部" @Param group_type query int false "分组类型筛选(5=系统提示,6=个人提示等)" @Param offset query int false
(c *gin.Context)
| 82 | // @Router /api/prompts [get] |
| 83 | // @Router /api/prompts/admin [get] |
| 84 | func GetPrompts(c *gin.Context) { |
| 85 | var promptListRequest PromptListRequest |
| 86 | if err := c.ShouldBindQuery(&promptListRequest); err != nil { |
| 87 | c.JSON(http.StatusBadRequest, model.ParamError.ToResponse(err)) |
| 88 | return |
| 89 | } |
| 90 | |
| 91 | // 设置默认分页大小为10 |
| 92 | if promptListRequest.Limit == 0 { |
| 93 | promptListRequest.Limit = 10 |
| 94 | } |
| 95 | |
| 96 | var userId int64 |
| 97 | eid := config.GetEID(c) |
| 98 | user, err := model.GetLoginUser(c) |
| 99 | if err == nil { |
| 100 | userId = user.UserID |
| 101 | eid = user.Eid |
| 102 | } |
| 103 | |
| 104 | status := -1 |
| 105 | if !strings.Contains(c.Request.URL.Path, "/admin") { |
| 106 | status = model.PromptStatusNormal |
| 107 | } |
| 108 | |
| 109 | // 处理 groupType 参数 |
| 110 | // 注意:如果同时提供 groupType 和 GroupId,groupType 优先级更高 |
| 111 | if promptListRequest.GroupType > 0 { |
| 112 | firstGroup, err := model.GetFirstGroupByEid(eid, promptListRequest.GroupType) |
| 113 | if err == nil { |
| 114 | // 成功找到分组,使用其ID |
| 115 | promptListRequest.GroupId = strconv.FormatInt(firstGroup.GroupId, 10) |
| 116 | } else { |
| 117 | // 如果没有找到对应类型的分组(gorm.ErrRecordNotFound), |
| 118 | // 设置 GroupId 为不存在的值以返回空结果 |
| 119 | promptListRequest.GroupId = "" |
| 120 | } |
| 121 | } else if promptListRequest.GroupId == "" { |
| 122 | // 如果没有提供 GroupId,则获取所有系统提示词分组的 ID |
| 123 | systemGroups, err := model.GetGroupsByEid(eid, model.SYSTEM_PROMPT_TYPE) |
| 124 | if err == nil && len(systemGroups) > 0 { |
| 125 | var groupIds []string |
| 126 | for _, group := range systemGroups { |
| 127 | groupIds = append(groupIds, strconv.FormatInt(group.GroupId, 10)) |
| 128 | } |
| 129 | promptListRequest.GroupId = strings.Join(groupIds, ",") |
| 130 | } |
| 131 | } |
| 132 | |
| 133 | // 获取提示词列表 |
| 134 | var total int64 |
| 135 | var prompts []*model.Prompt |
| 136 | |
| 137 | // 可以查看所有提示词 |
| 138 | total, prompts, err = model.GetPromptList( |
| 139 | eid, |
| 140 | promptListRequest.Keyword, |
| 141 | promptListRequest.GroupId, |
nothing calls this directly
no test coverage detected