Răsfoiți Sursa

信徒管理 完成

yourname 5 luni în urmă
părinte
comite
6b8284e118

+ 4 - 2
src/client/admin/pages/Believers.tsx

@@ -1,7 +1,8 @@
 import React, { useState } from 'react';
 import {
   Button, Table, Space, Form, Input, Select, DatePicker,
-  message, Modal, Card, Typography, Tag, Popconfirm
+  Modal, Card, Typography, Tag, Popconfirm,
+  App
 } from 'antd';
 import { useQuery } from '@tanstack/react-query';
 import dayjs from 'dayjs';
@@ -19,6 +20,7 @@ const { Option } = Select;
 
 // 信徒管理页面
 export const BelieversPage = () => {
+  const { message } = App.useApp();
   const [searchParams, setSearchParams] = useState({
     page: 1,
     pageSize: 10,
@@ -139,7 +141,7 @@ export const BelieversPage = () => {
       const res = await believersClient[':id']['$delete']({
         param: { id }
       });
-      if (res.status !== 204) {
+      if (res.status !== 200) {
         throw new Error('删除信徒失败');
       }
       message.success('信徒删除成功');

+ 2 - 2
src/server/api/believers/[id]/delete.ts

@@ -23,7 +23,7 @@ const routeDef = createRoute({
     params: GetParams
   },
   responses: {
-    204: {
+    200: {
       description: '成功删除信徒记录'
     },
     404: {
@@ -56,7 +56,7 @@ const app = new OpenAPIHono<AuthContext>().openapi(routeDef, async (c) => {
       return c.json({ code: 404, message: '信徒不存在' }, 404);
     }
     
-    return c.body(null, 204);
+    return c.body(null, 200);
   } catch (error) {
     return c.json({ 
       code: 500, 

+ 3 - 4
src/server/api/believers/post.ts

@@ -19,7 +19,9 @@ const CreateBelieverSchema = BelieverSchema.omit({
     BelieverStatus.INACTIVE, 
     BelieverStatus.TRANSFERRED, 
     BelieverStatus.DECEASED
-  ]).optional().default(BelieverStatus.ACTIVE)
+  ]).optional().default(BelieverStatus.ACTIVE),
+  address: BelieverSchema.shape.address.optional(),
+  birthDay: z.coerce.date().optional()
 });
 
 // 路由定义
@@ -69,9 +71,6 @@ const app = new OpenAPIHono<AuthContext>().openapi(routeDef, async (c) => {
   try {
     const data = c.req.valid('json');
     const user = c.get('user');
-    if (!user) {
-      return c.json({ code: 401, message: '未授权' }, 401);
-    }
     
     const believerService = new BelieverService(AppDataSource);
     const believer = await believerService.createBeliever({

+ 2 - 3
src/server/api/groups/[id]/believers/[believerId]/delete.ts

@@ -1,8 +1,7 @@
 import { createRoute, OpenAPIHono } from '@hono/zod-openapi';
 import { ErrorSchema } from '@/server/utils/errorHandler';
 import { AuthContext } from '@/server/types/context';
-import z from 'zod';
-import type { Handler } from 'hono';
+import {z} from '@hono/zod-openapi';
 
 const GetParams = z.object({
   id: z.string().openapi({
@@ -33,7 +32,7 @@ const routeDef = createRoute({
   }
 });
 
-const app = new OpenAPIHono<AuthContext>().openapi(routeDef, async (c): Promise<Response> => {
+const app = new OpenAPIHono<AuthContext>().openapi(routeDef, async (c) => {
   try {
     const { id, believerId } = c.req.valid('param');
     // TODO: 实现删除群组成员的业务逻辑

+ 1 - 2
src/server/api/groups/[id]/believers/get.ts

@@ -1,8 +1,7 @@
 import { createRoute, OpenAPIHono } from '@hono/zod-openapi';
 import { ErrorSchema } from '@/server/utils/errorHandler';
 import { AuthContext } from '@/server/types/context';
-import z from 'zod';
-import { Handler } from 'hono';
+import {z} from '@hono/zod-openapi';
 
 const GetParams = z.object({
   id: z.string().openapi({

+ 1 - 1
src/server/api/groups/[id]/believers/post.ts

@@ -1,7 +1,7 @@
 import { createRoute, OpenAPIHono } from '@hono/zod-openapi';
 import { ErrorSchema } from '@/server/utils/errorHandler';
 import { AuthContext } from '@/server/types/context';
-import z from 'zod';
+import {z} from '@hono/zod-openapi';
 
 const routeDef = createRoute({
   method: 'post',

+ 2 - 1
src/server/data-source.ts

@@ -5,6 +5,7 @@ import process from 'node:process'
 // 实体类导入
 import { UserEntity as User } from "./modules/users/user.entity"
 import { Role } from "./modules/users/role.entity"
+import { Believer } from "./modules/believers/believer.entity"
 
 export const AppDataSource = new DataSource({
   type: "mysql",
@@ -14,7 +15,7 @@ export const AppDataSource = new DataSource({
   password: process.env.DB_PASSWORD || "",
   database: process.env.DB_DATABASE || "d8dai",
   entities: [
-    User, Role
+    User, Role, Believer
   ],
   migrations: [],
   synchronize: process.env.DB_SYNCHRONIZE !== "false",