package service import ( "StuAcaWorksAI/dao" "encoding/json" "errors" "log" ) // 创建模型信息 func CreateModel(userID uint, modelType, url, parameter, description string) (error, uint) { //查看用户是否有权限创建模型 user := GetUserByIDWithCache(int(userID)) if user.ID == 0 { return errors.New("user not exist"), 0 } if user.Role != "admin" { return errors.New("user not admin,no permission"), 0 } return dao.CreateModel(userID, modelType, url, parameter, description) } // 根据id查找模型 func FindModelByID(id, userID int) []dao.ModelResponse { models := dao.FindModelByID(id, userID) modelTokens := dao.FindModelTotalTokensByModelID(id) var res []dao.ModelResponse mt := make(map[uint]uint) for _, v := range modelTokens { mt[v.ModelID] = v.Token } for _, v := range models { var model dao.ModelResponse model.Model = v model.Token = mt[v.ID] res = append(res, model) } return res } // 根据用户id查找模型 func FindModelByUserID(userID int) []dao.ModelResponse { models := dao.FindModelByUserID(userID) modelTokens := dao.FindModelTotalTokensByModelID(userID) var res []dao.ModelResponse mt := make(map[uint]uint) for _, v := range modelTokens { mt[v.ModelID] = v.Token } for _, v := range models { var model dao.ModelResponse model.Model = v model.Token = mt[v.ID] res = append(res, model) } return res } // 根据id删除模型 func DeleteModelByID(id, userID int) error { //查看用户是否有权限删除模型 user := GetUserByIDWithCache(userID) model := dao.FindModelByID(id, userID) if user.ID == 0 { return errors.New("user not exist") } if len(model) == 0 && user.Role != "admin" { return errors.New("model not exist or no permission") } return dao.DeleteModelByID(id) } // 更新模型信息 func UpdateModelByID(id int, userID uint, modelType, url, parameter, description string) error { return dao.UpdateModelByID(id, userID, modelType, url, parameter, description) } func CreateFuncModel(userID, modelID int, name, info, function, modelIDs string) (error, uint) { //查看用户是否有权限创建模型 user := GetUserByIDWithCache(userID) if user.ID == 0 { return errors.New("user not exist"), 0 } if user.Role != "admin" { return errors.New("user not admin,no permission"), 0 } return dao.CreateFunctionModel(uint(userID), uint(modelID), name, info, function, modelIDs) } func FindFuncModelByID(id, userID int) ([]dao.FunctionModel, error) { user := GetUserByIDWithCache(userID) if user.ID == 0 { return nil, errors.New("user not exist") } if user.Role != "admin" { return nil, errors.New("user not admin,no permission") } return dao.FindFunctionModelByID(id, userID), nil } // 根据userID查找功能模型 func FindFuncModelByUserID(userID int) ([]dao.FunctionModel, error) { user := GetUserByIDWithCache(userID) if user.ID == 0 { return nil, errors.New("user not exist") } if user.Role != "admin" { return nil, errors.New("user not admin,no permission") } return dao.FindFunctionModelByUserID(userID), nil } func DeleteFuncModelByID(id, userID int) error { //查看用户是否有权限删除模型 user := GetUserByIDWithCache(userID) model := dao.FindFunctionModelByID(id, userID) if user.ID == 0 { return errors.New("user not exist") } if len(model) == 0 && user.Role != "admin" { return errors.New("model not exist or no permission") } return dao.DeleteFunctionModelByID(id) } func UpdateFuncModelByID(id int, userID, modelID uint, name, info, function, modelIDs string) error { user := GetUserByIDWithCache(int(userID)) if user.ID == 0 { return errors.New("user not exist") } if user.Role != "admin" { return errors.New("user not admin,no permission") } return dao.UpdateFunctionModelByID(id, userID, modelID, name, info, function, modelIDs) } // 根据功能查找对应功能 func FindFuncModelByFunction(function string, userID int) ([]dao.Model, []dao.FunctionModel) { //先查找对应功能 funcModels := dao.FindFunctionModelByFunction(function) if len(funcModels) == 0 { return []dao.Model{}, funcModels } modelID := funcModels[0].ModelID //再查找对应模型 return dao.FindModelByModelID(modelID), funcModels } // 根据功能查找对应的功能模型列表(不查询密钥等信息,只差id,类型及名称) func FindFuncModelListByFunction(function string) ([]dao.Model, error) { funcModels := dao.FindFunctionModelByFunction(function) modelIDs := map[int]bool{} err := json.Unmarshal([]byte(funcModels[0].ModelIDS), &modelIDs) if err != nil { log.Println("FindFuncModelListByFunction json unmarshal error:", err) return nil, err } var models []dao.Model for k := range modelIDs { models_ := dao.FindModelByIDV2(k) for _, v := range models_ { v.Url = "" v.Parameter = "" v.Description = "" models = append(models, v) } } return models, nil }