From ba94ceae1315174798ae1967ef62268c6d16cd5b Mon Sep 17 00:00:00 2001 From: Codex Assistant <codex@example.com> Date: 星期一, 06 十月 2025 22:07:06 +0800 Subject: [PATCH] feat: 评审与活动相关改动 - backend(GraphQL): Activity schema 增加 updateActivityState(id, state);实现 resolver/service 仅更新 state=2 作为逻辑删除 - backend(GraphQL): region.graphqls 新增 Query leafRegions - backend(GraphQL): player.graphqls 的 projectReviewApplications 增加可选参数 regionId - backend(Service): listProjectReviewApplications 绑定 regionId 参数,修复 QueryParameterException - frontend(web): 新增 api/activity.js 的 updateActivityState 并接入 activity-list 删除逻辑 - frontend(web): review-list.vue 权限仅校验登录,移除角色限制;查询参数修正为 name/regionId - frontend(web): 删除未引用的 ActivityList.vue - frontend(web): projectReviewNew.js GraphQL 查询增加 name 参数 --- web/src/api/activity.js | 96 +++++++++++++++++++++++++++++++----------------- 1 files changed, 62 insertions(+), 34 deletions(-) diff --git a/web/src/api/activity.js b/web/src/api/activity.js index 6ea223a..8c42f87 100644 --- a/web/src/api/activity.js +++ b/web/src/api/activity.js @@ -1,11 +1,11 @@ // 姣旇禌绠$悊 API -import { API_CONFIG, graphqlRequest } from '@/config/api'; +import { API_CONFIG, graphqlRequest } from '@/config/api' // GraphQL 鏌ヨ璇彞 const GET_ACTIVITIES_QUERY = ` - query GetActivities($page: Int!, $size: Int!, $name: String) { - activities(page: $page, size: $size, name: $name) { + query GetActivities($page: Int!, $size: Int!, $name: String, $state: Int) { + activities(page: $page, size: $size, name: $name, state: $state) { content { id name @@ -13,22 +13,19 @@ signupDeadline matchTime address + playerCount playerMax state stateName - playerCount createTime - ratingScheme { - id - name - } + updateTime } totalElements page size } } -`; +` const GET_ACTIVITY_QUERY = ` query GetActivity($id: ID!) { @@ -41,6 +38,7 @@ matchTime address ratingSchemeId + playerCount playerMax state stateName @@ -58,6 +56,7 @@ matchTime address ratingSchemeId + playerCount playerMax state stateName @@ -76,7 +75,7 @@ } } } -`; +` const GET_ALL_ACTIVITIES_QUERY = ` query GetAllActivities { @@ -87,13 +86,14 @@ state stateName sortOrder + playerCount parent { id name } } } -`; +` const SAVE_ACTIVITY_MUTATION = ` mutation SaveActivity($input: ActivityInput!) { @@ -110,56 +110,84 @@ stateName } } -`; +` const DELETE_ACTIVITY_MUTATION = ` mutation DeleteActivity($id: ID!) { deleteActivity(id: $id) } -`; +` + +const UPDATE_ACTIVITY_STATE_MUTATION = ` + mutation UpdateActivityState($id: ID!, $state: Int!) { + updateActivityState(id: $id, state: $state) + } +` // API 鍑芥暟 -export const getActivities = async (page = 0, size = 10, name = '') => { +export const getActivities = async (page = 0, size = 10, name = '', state) => { try { - const data = await graphqlRequest(GET_ACTIVITIES_QUERY, { page, size, name }); - return data.activities; + const variables = { + page, + size, + name + } + + if (state !== undefined && state !== null && state !== '') { + variables.state = Number(state) + } + + const result = await graphqlRequest(GET_ACTIVITIES_QUERY, variables) + return result.data.activities } catch (error) { - throw new Error(error.message || '鑾峰彇姣旇禌鍒楄〃澶辫触'); + console.error('鑾峰彇姣旇禌鍒楄〃澶辫触:', error) + throw new Error(error && error.message ? error.message : '鑾峰彇姣旇禌鍒楄〃澶辫触') } -}; +} export const getActivity = async (id) => { try { - const data = await graphqlRequest(GET_ACTIVITY_QUERY, { id }); - return data.activity; + const result = await graphqlRequest(GET_ACTIVITY_QUERY, { id }) + return result.data.activity } catch (error) { - throw new Error(error.message || '鑾峰彇姣旇禌璇︽儏澶辫触'); + throw new Error(error && error.message ? error.message : '鑾峰彇姣旇禌璇︽儏澶辫触') } -}; +} export const getAllActivities = async () => { try { - const data = await graphqlRequest(GET_ALL_ACTIVITIES_QUERY); - return data.allActivities; + const result = await graphqlRequest(GET_ALL_ACTIVITIES_QUERY) + return result.data.allActivities } catch (error) { - throw new Error(error.message || '鑾峰彇鎵�鏈夋瘮璧涘け璐�'); + console.error('鑾峰彇鎵�鏈夋瘮璧涘け璐�:', error) + throw new Error(error && error.message ? error.message : '鑾峰彇鎵�鏈夋瘮璧涘け璐�') } -}; +} export const saveActivity = async (activityData) => { try { - const data = await graphqlRequest(SAVE_ACTIVITY_MUTATION, { input: activityData }); - return data.saveActivity; + const data = await graphqlRequest(SAVE_ACTIVITY_MUTATION, { input: activityData }) + return data.data.saveActivity } catch (error) { - throw new Error(error.message || '淇濆瓨姣旇禌澶辫触'); + console.error('淇濆瓨姣旇禌澶辫触:', error) + throw new Error(error && error.message ? error.message : '淇濆瓨姣旇禌澶辫触') } -}; +} export const deleteActivity = async (id) => { try { - const data = await graphqlRequest(DELETE_ACTIVITY_MUTATION, { id }); - return data.deleteActivity; + const data = await graphqlRequest(DELETE_ACTIVITY_MUTATION, { id }) + return data.data.deleteActivity } catch (error) { - throw new Error(error.message || '鍒犻櫎姣旇禌澶辫触'); + throw new Error(error && error.message ? error.message : '鍒犻櫎姣旇禌澶辫触') } -}; \ No newline at end of file +} + +export const updateActivityState = async (id, state) => { + try { + const data = await graphqlRequest(UPDATE_ACTIVITY_STATE_MUTATION, { id, state }) + return data.data.updateActivityState + } catch (error) { + throw new Error(error && error.message ? error.message : '鏇存柊姣旇禌鐘舵�佸け璐�') + } +} \ No newline at end of file -- Gitblit v1.8.0