Sfoglia il codice sorgente

更新成员控制器和服务,调整创建游客逻辑以返回用户信息和JWT令牌,同时简化收入记录路由的请求验证逻辑。

wuyi 3 mesi fa
parent
commit
ba0e650d9b

+ 17 - 9
src/controllers/member.controller.ts

@@ -13,15 +13,23 @@ export class MemberController {
   async createGuest(request: FastifyRequest<{ Querystring: { code?: string } }>, reply: FastifyReply) {
     try {
       const { code } = request.query || {}
-      
-      // 获取客户端IP地址
-      const ip = request.ip || 
-                 request.headers['x-forwarded-for'] as string || 
-                 request.headers['x-real-ip'] as string || 
-                 'unknown'
-      
-      await this.memberService.createGuest(code, ip)
-      return reply.code(201).send({ message: '创建游客成功' })
+
+      const ip =
+        request.ip ||
+        (request.headers['x-forwarded-for'] as string) ||
+        (request.headers['x-real-ip'] as string) ||
+        'unknown'
+
+      const user = await this.memberService.createGuest(code, ip)
+      const token = await reply.jwtSign({ id: user.id, name: user.name, role: user.role })
+
+      return reply.code(201).send({
+        user: {
+          id: user.id,
+          name: user.name
+        },
+        token
+      })
     } catch (error) {
       return reply.code(500).send({ message: '创建游客失败', error })
     }

+ 1 - 1
src/routes/income-records.routes.ts

@@ -15,7 +15,7 @@ export default async function incomeRecordsRoutes(fastify: FastifyInstance) {
   // 创建收入记录
   fastify.post<{ Body: CreateIncomeRecordBody }>(
     '/',
-    { onRequest: [authenticate, hasRole(UserRole.ADMIN)] },
+    { onRequest: [authenticate] },
     incomeRecordsController.create.bind(incomeRecordsController)
   )
 

+ 2 - 5
src/services/member.service.ts

@@ -15,7 +15,7 @@ export class MemberService {
     this.dataSource = app.dataSource
   }
 
-  async createGuest(code?: string, ip?: string): Promise<{ user: User; member: Member }> {
+  async createGuest(code?: string, ip?: string): Promise<User> {
     return await this.dataSource.transaction(async manager => {
       const randomSuffix = randomstring.generate({
         length: 10,
@@ -48,10 +48,7 @@ export class MemberService {
       })
       const savedMember = await manager.save(member)
 
-      return {
-        user: savedUser,
-        member: savedMember
-      }
+      return savedUser
     })
   }