From 93eb6b470773bc49ea6e1a9d4cbd914eb95d525b Mon Sep 17 00:00:00 2001
From: lrj <owen.stl@gmail.com>
Date: 星期二, 30 九月 2025 17:38:04 +0800
Subject: [PATCH] feat: 完善比赛晋级功能并清理测试文件

---
 web/src/api/rating.js |  227 ++++++++++++++++++++++++++------------------------------
 1 files changed, 107 insertions(+), 120 deletions(-)

diff --git a/web/src/api/rating.js b/web/src/api/rating.js
index a2a5d72..542ca97 100644
--- a/web/src/api/rating.js
+++ b/web/src/api/rating.js
@@ -1,138 +1,125 @@
-const GRAPHQL_ENDPOINT = 'http://localhost:8080/api/graphql'
+import { API_CONFIG, graphqlRequest } from '@/config/api'
 
-// GraphQL璇锋眰鍑芥暟
-async function graphqlRequest(query, variables = {}) {
-  const response = await fetch(GRAPHQL_ENDPOINT, {
-    method: 'POST',
-    headers: {
-      'Content-Type': 'application/json',
-    },
-    body: JSON.stringify({
-      query,
-      variables,
-    }),
-  })
+// 浣跨敤缁熶竴鐨凣raphQL璇锋眰鍑芥暟
 
-  if (!response.ok) {
-    throw new Error(`HTTP error! status: ${response.status}`)
+// GraphQL鏌ヨ璇彞
+const GET_RATING_SCHEMES_QUERY = `
+  query GetRatingSchemes($page: Int!, $size: Int!, $name: String) {
+    ratingSchemes(page: $page, size: $size, name: $name) {
+      content {
+        id
+        name
+        description
+        totalScore
+        state
+        stateName
+        createTime
+        updateTime
+      }
+      totalElements
+      page
+      size
+    }
   }
+`
 
-  const result = await response.json()
-  
-  if (result.errors) {
-    throw new Error(result.errors[0].message)
+const GET_ALL_RATING_SCHEMES_QUERY = `
+  query GetAllRatingSchemes {
+    allRatingSchemes {
+      id
+      name
+      description
+      totalScore
+      state
+      stateName
+    }
   }
+`
 
-  return result.data
-}
+const GET_RATING_SCHEME_QUERY = `
+  query GetRatingScheme($id: ID!) {
+    ratingScheme(id: $id) {
+      id
+      name
+      description
+      totalScore
+      state
+      stateName
+      createTime
+      updateTime
+      items {
+        id
+        name
+        maxScore
+        orderNo
+      }
+    }
+  }
+`
 
-// 鍒嗛〉鏌ヨ璇勫垎妯℃澘鍒楄〃
+const SAVE_RATING_SCHEME_MUTATION = `
+  mutation SaveRatingScheme($input: RatingSchemeInput!) {
+    saveRatingScheme(input: $input) {
+      id
+      name
+      description
+      totalScore
+      state
+      stateName
+      createTime
+      updateTime
+    }
+  }
+`
+
+const DELETE_RATING_SCHEME_MUTATION = `
+  mutation DeleteRatingScheme($id: ID!) {
+    deleteRatingScheme(id: $id)
+  }
+`
+
+// API鍑芥暟
 export const getRatingSchemes = async (page = 0, size = 10, name = '') => {
-  const query = `
-    query GetRatingSchemes($page: Int, $size: Int, $name: String) {
-      ratingSchemes(page: $page, size: $size, name: $name) {
-        content {
-          id
-          name
-          description
-          totalScore
-          createTime
-          updateTime
-        }
-        totalElements
-        totalPages
-        number
-        size
-        first
-        last
-      }
-    }
-  `
-  
-  const variables = { page, size }
-  if (name) {
-    variables.name = name
+  try {
+    const data = await graphqlRequest(GET_RATING_SCHEMES_QUERY, { page, size, name })
+    return data.ratingSchemes
+  } catch (error) {
+    throw new Error(error.message || '鑾峰彇璇勫垎鏂规鍒楄〃澶辫触')
   }
-  
-  const data = await graphqlRequest(query, variables)
-  return data.ratingSchemes
 }
 
-// 鏍规嵁ID鑾峰彇璇勫垎妯℃澘璇︽儏
-export const getRatingScheme = async (id) => {
-  const query = `
-    query GetRatingScheme($id: ID!) {
-      ratingScheme(id: $id) {
-        id
-        name
-        description
-        totalScore
-        items {
-          id
-          name
-          maxScore
-          orderNo
-        }
-        createTime
-        updateTime
-      }
-    }
-  `
-  
-  const data = await graphqlRequest(query, { id })
-  return data.ratingScheme
-}
-
-// 鑾峰彇鎵�鏈夎瘎鍒嗘ā鏉匡紙鐢ㄤ簬涓嬫媺閫夋嫨锛�
 export const getAllRatingSchemes = async () => {
-  const query = `
-    query GetAllRatingSchemes {
-      allRatingSchemes {
-        id
-        name
-        description
-        totalScore
-      }
-    }
-  `
-  
-  const data = await graphqlRequest(query)
-  return data.allRatingSchemes
+  try {
+    const data = await graphqlRequest(GET_ALL_RATING_SCHEMES_QUERY)
+    return data.allRatingSchemes || []
+  } catch (error) {
+    throw new Error(error.message || '鑾峰彇鎵�鏈夎瘎鍒嗘柟妗堝け璐�')
+  }
 }
 
-// 淇濆瓨璇勫垎妯℃澘
-export const saveRatingScheme = async (input) => {
-  const mutation = `
-    mutation SaveRatingScheme($input: RatingSchemeInput!) {
-      saveRatingScheme(input: $input) {
-        id
-        name
-        description
-        totalScore
-        items {
-          id
-          name
-          maxScore
-          orderNo
-        }
-        createTime
-        updateTime
-      }
-    }
-  `
-  
-  const data = await graphqlRequest(mutation, { input })
-  return data.saveRatingScheme
+export const getRatingScheme = async (id) => {
+  try {
+    const data = await graphqlRequest(GET_RATING_SCHEME_QUERY, { id })
+    return data.ratingScheme
+  } catch (error) {
+    throw new Error(error.message || '鑾峰彇璇勫垎鏂规璇︽儏澶辫触')
+  }
 }
 
-// 鍒犻櫎璇勫垎妯℃澘
+export const saveRatingScheme = async (ratingSchemeData) => {
+  try {
+    const data = await graphqlRequest(SAVE_RATING_SCHEME_MUTATION, { input: ratingSchemeData })
+    return data.saveRatingScheme
+  } catch (error) {
+    throw new Error(error.message || '淇濆瓨璇勫垎鏂规澶辫触')
+  }
+}
+
 export const deleteRatingScheme = async (id) => {
-  const mutation = `
-    mutation DeleteRatingScheme($id: ID!) {
-      deleteRatingScheme(id: $id)
-    }
-  `
-  
-  const data = await graphqlRequest(mutation, { id })
-  return data.deleteRatingScheme
+  try {
+    const data = await graphqlRequest(DELETE_RATING_SCHEME_MUTATION, { id })
+    return data.deleteRatingScheme
+  } catch (error) {
+    throw new Error(error.message || '鍒犻櫎璇勫垎鏂规澶辫触')
+  }
 }
\ No newline at end of file

--
Gitblit v1.8.0