new:MCP及openapi新增技能特殊属性查询
This commit is contained in:
@@ -213,7 +213,11 @@ func NewRouter(dep Dependencies) http.Handler {
|
||||
})
|
||||
|
||||
r.Get("/{jobId}/{jobGrowId}/skills/", func(w http.ResponseWriter, r *http.Request) {
|
||||
data, err := dep.OpenAPIService.SkillsByJob(chi.URLParam(r, "jobId"), chi.URLParam(r, "jobGrowId"))
|
||||
data, err := dep.OpenAPIService.SkillsByJob(
|
||||
chi.URLParam(r, "jobId"),
|
||||
chi.URLParam(r, "jobGrowId"),
|
||||
r.URL.Query().Get("descSpecial"),
|
||||
)
|
||||
if err != nil {
|
||||
writeError(w, http.StatusNotFound, err)
|
||||
return
|
||||
|
||||
@@ -68,18 +68,45 @@ func (s *OpenAPIService) JobsInfo(jobName string) ([]map[string]string, error) {
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func (s *OpenAPIService) SkillsByJob(jobID string, jobGrowID string) (any, error) {
|
||||
func (s *OpenAPIService) SkillsByJob(jobID string, jobGrowID string, descSpecial string) (any, error) {
|
||||
jobDir, jobGrowDir, err := s.adventure.ResolveDirectories(jobID, jobGrowID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var data any
|
||||
var data []map[string]any
|
||||
path := filepath.Join(s.projectRoot, "openapi", "data", jobDir, jobGrowDir, "cn", "skill_tree.json")
|
||||
if err := s.readJSON(path, &data); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return data, nil
|
||||
detailDir := filepath.Join(s.projectRoot, "openapi", "data", jobDir, jobGrowDir, "cn", "skillDetail")
|
||||
for _, skill := range data {
|
||||
skillID, _ := skill["skillId"].(string)
|
||||
var detail map[string]any
|
||||
if skillID != "" {
|
||||
err := s.readJSON(filepath.Join(detailDir, skillID+".json"), &detail)
|
||||
if err != nil && !os.IsNotExist(err) {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
skill["descSpecial"] = detail["descSpecial"]
|
||||
}
|
||||
if descSpecial == "" {
|
||||
return data, nil
|
||||
}
|
||||
|
||||
filtered := make([]map[string]any, 0)
|
||||
for _, skill := range data {
|
||||
items, _ := skill["descSpecial"].([]any)
|
||||
for _, item := range items {
|
||||
text, _ := item.(string)
|
||||
if strings.Contains(text, descSpecial) {
|
||||
filtered = append(filtered, skill)
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
return filtered, nil
|
||||
}
|
||||
|
||||
func (s *OpenAPIService) SkillDetail(jobID string, jobGrowID string, skillID string, level *int) (any, error) {
|
||||
|
||||
Reference in New Issue
Block a user