package dashboard import ( "code.tczkiot.com/wlw/ai-agent/internal/builders" "code.tczkiot.com/wlw/ai-agent/internal/pkg/constants" "code.tczkiot.com/wlw/ai-agent/internal/pkg/dto/request" "code.tczkiot.com/wlw/ai-agent/internal/pkg/dto/response" "code.tczkiot.com/wlw/ai-agent/internal/pkg/enums" "code.tczkiot.com/wlw/ai-agent/internal/pkg/httpx" "code.tczkiot.com/wlw/ai-agent/internal/services" "code.tczkiot.com/wlw/ai-agent/internal/pkg/httpx/params" "github.com/gin-gonic/gin" "github.com/mlogclub/simple/web" ) func AgentAnyList(ctx *gin.Context) { if _, err := services.AuthService.RequirePermission(ctx, constants.PermissionAgentView); err != nil { httpx.WriteJSON(ctx, err) return } list, paging := services.AgentProfileService.FindPageByCnd(params.NewPagedSqlCnd(ctx, params.QueryFilter{ParamName: "user_id"}, params.QueryFilter{ParamName: "team_id"}, params.QueryFilter{ParamName: "service_status"}, params.QueryFilter{ParamName: "agent_code", Op: params.Like}, params.QueryFilter{ParamName: "display_name", Op: params.Like}, ).Desc("id")) results := builders.BuildAgentProfileList(list) httpx.WriteJSON(ctx, &web.PageResult{Results: results, Page: paging}) } func AgentGetList_all(ctx *gin.Context) { if _, err := services.AuthService.RequirePermission(ctx, constants.PermissionAgentView); err != nil { httpx.WriteJSON(ctx, err) return } list := services.AgentProfileService.Find(params.NewPagedSqlCnd(ctx, params.QueryFilter{ParamName: "user_id"}, params.QueryFilter{ParamName: "team_id"}, params.QueryFilter{ParamName: "service_status"}, params.QueryFilter{ParamName: "agent_code", Op: params.Like}, ).Eq("status", enums.StatusOk).Desc("id")) httpx.WriteJSON(ctx, builders.BuildAgentProfileList(list)) } func AgentGetUser_options(ctx *gin.Context) { if _, err := services.AuthService.RequirePermission(ctx, constants.PermissionAgentView); err != nil { httpx.WriteJSON(ctx, err) return } users := services.UserService.Find(ctx.Query("keyword")) results := make([]response.AgentUserOptionResponse, 0, len(users)) for _, user := range users { results = append(results, response.AgentUserOptionResponse{ ID: user.ID, Username: user.Username, Nickname: user.Nickname, Avatar: user.Avatar, }) } httpx.WriteJSON(ctx, results) } func AgentGetBy(ctx *gin.Context) { id, ok := httpx.GetPathInt64(ctx, "id") if !ok { return } if _, err := services.AuthService.RequirePermission(ctx, constants.PermissionAgentView); err != nil { httpx.WriteJSON(ctx, err) return } item := services.AgentProfileService.Get(id) if item == nil { httpx.WriteJSON(ctx, httpx.JsonErrorMsg(ctx, "error.e0164")) return } httpx.WriteJSON(ctx, builders.BuildAgentProfileResponse(item)) } func AgentPostCreate(ctx *gin.Context) { user, err := services.AuthService.RequirePermission(ctx, constants.PermissionAgentCreate) if err != nil { httpx.WriteJSON(ctx, err) return } req := request.CreateAgentProfileRequest{} if err := params.ReadJSON(ctx, &req); err != nil { httpx.WriteJSON(ctx, err) return } item, err := services.AgentProfileService.CreateAgentProfile(req, user) if err != nil { httpx.WriteJSON(ctx, err) return } httpx.WriteJSON(ctx, builders.BuildAgentProfileResponse(item)) } func AgentPostUpdate(ctx *gin.Context) { user, err := services.AuthService.RequirePermission(ctx, constants.PermissionAgentUpdate) if err != nil { httpx.WriteJSON(ctx, err) return } req := request.UpdateAgentProfileRequest{} if err := params.ReadJSON(ctx, &req); err != nil { httpx.WriteJSON(ctx, err) return } if err := services.AgentProfileService.UpdateAgentProfile(req, user); err != nil { httpx.WriteJSON(ctx, err) return } httpx.WriteJSON(ctx, nil) } func AgentPostDelete(ctx *gin.Context) { if _, err := services.AuthService.RequirePermission(ctx, constants.PermissionAgentDelete); err != nil { httpx.WriteJSON(ctx, err) return } req := request.DeleteAgentProfileRequest{} if err := params.ReadJSON(ctx, &req); err != nil { httpx.WriteJSON(ctx, err) return } if err := services.AgentProfileService.DeleteAgentProfile(req.ID); err != nil { httpx.WriteJSON(ctx, err) return } httpx.WriteJSON(ctx, nil) }