diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..c76c14f --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,5 @@ +{ + "recommendations": [ + "marscode.marscode-extension" + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..137d9f4 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,7 @@ +{ + "marscode.chatLanguage": "cn", + "marscode.codeCompletionPro": { + "enableCodeCompletionPro": true + }, + "marscode.enableInlineCommand": true +} \ No newline at end of file diff --git a/apps/server/src/main.ts b/apps/server/src/main.ts index bf49691..91928ec 100755 --- a/apps/server/src/main.ts +++ b/apps/server/src/main.ts @@ -3,32 +3,28 @@ import { AppModule } from './app.module'; import { TrpcRouter } from './trpc/trpc.router'; import { WebSocketService } from './socket/websocket.service'; -/** - * 启动 NestJS 应用程序的引导函数 - * 该函数初始化 NestJS 应用程序,配置 CORS,初始化 WebSocket 服务,应用 TRPC 中间件,并启动服务器监听指定端口 - */ async function bootstrap() { - // 创建 NestJS 应用实例,使用 AppModule 作为根模块 + // 创建NestJS应用实例 const app = await NestFactory.create(AppModule); // 启用 CORS 并允许所有来源 - app.enableCors({ //允许跨域 + app.enableCors({ origin: '*', }); - // 从 NestJS 应用实例中获取 WebSocketService 实例 + + // 获取WebSocket服务实例并初始化 const wsService = app.get(WebSocketService); - // 初始化 WebSocket 服务,传入 HTTP 服务器实例 await wsService.initialize(app.getHttpServer()); - // 从 NestJS 应用实例中获取 TrpcRouter 实例 + + // 获取tRPC路由实例并应用中间件 const trpc = app.get(TrpcRouter); - // 应用 TRPC 中间件到 NestJS 应用实例 trpc.applyMiddleware(app); - // 获取环境变量中的服务器端口,如果未设置则使用默认端口 3000 + // 设置服务器端口,优先使用环境变量中的值,默认3000 const port = process.env.SERVER_PORT || 3000; - // 启动服务器监听指定端口 + // 启动应用,监听指定端口 await app.listen(port); } -// 调用引导函数启动应用程序 +// 启动应用 bootstrap(); diff --git a/apps/server/src/models/goods/goods.service.ts b/apps/server/src/models/goods/goods.service.ts index 09c472f..cbb7b29 100644 --- a/apps/server/src/models/goods/goods.service.ts +++ b/apps/server/src/models/goods/goods.service.ts @@ -1,4 +1,10 @@ import { Injectable } from '@nestjs/common'; @Injectable() +<<<<<<< HEAD export class GoodsService {} +======= +export class GoodsService { + +} +>>>>>>> 28132992c8dc4afaf9311d9ecd4ecd992e43e827 diff --git a/apps/server/src/models/message/message.controller.ts b/apps/server/src/models/message/message.controller.ts index 9e2270a..e265c5c 100755 --- a/apps/server/src/models/message/message.controller.ts +++ b/apps/server/src/models/message/message.controller.ts @@ -3,7 +3,6 @@ import { Controller, Get, Query, UseGuards } from '@nestjs/common'; import { MessageService } from './message.service'; import { AuthGuard } from '@server/auth/auth.guard'; import { db, VisitType } from '@nice/common'; -// /message/find-last-one?staff-id=1 @Controller('message') export class MessageController { constructor(private readonly messageService: MessageService) { } diff --git a/apps/server/src/models/message/message.module.ts b/apps/server/src/models/message/message.module.ts index 3c88776..ce83a6e 100755 --- a/apps/server/src/models/message/message.module.ts +++ b/apps/server/src/models/message/message.module.ts @@ -6,9 +6,9 @@ import { DepartmentModule } from '../department/department.module'; import { MessageController } from './message.controller'; @Module({ - imports: [DepartmentModule], //可能要用的 - providers: [MessageService, MessageRouter, TrpcService], //可以被自己使用这三个 - exports: [MessageService, MessageRouter], //可以被其他模块使用这两个 - controllers: [MessageController], //路由层 + imports: [DepartmentModule], + providers: [MessageService, MessageRouter, TrpcService], + exports: [MessageService, MessageRouter], + controllers: [MessageController], }) export class MessageModule { } diff --git a/apps/server/src/tasks/init/gendev.service.ts b/apps/server/src/tasks/init/gendev.service.ts index 539fa9b..1ef0ea1 100755 --- a/apps/server/src/tasks/init/gendev.service.ts +++ b/apps/server/src/tasks/init/gendev.service.ts @@ -1,4 +1,3 @@ -//开发数据生成服务 import { Injectable, Logger } from '@nestjs/common'; import { DepartmentService } from '@server/models/department/department.service'; import { AppConfigService } from '@server/models/app-config/app-config.service'; diff --git a/apps/server/src/trpc/trpc.module.ts b/apps/server/src/trpc/trpc.module.ts index f9b9e75..ead8b11 100755 --- a/apps/server/src/trpc/trpc.module.ts +++ b/apps/server/src/trpc/trpc.module.ts @@ -39,4 +39,4 @@ import { GoodsModule } from '@server/models/goods/goods.module'; controllers: [], providers: [TrpcService, TrpcRouter, Logger], }) -export class TrpcModule {} +export class TrpcModule { } diff --git a/apps/web/src/app/main/component/People.tsx b/apps/web/src/app/main/component/People.tsx new file mode 100644 index 0000000..835b87e --- /dev/null +++ b/apps/web/src/app/main/component/People.tsx @@ -0,0 +1,51 @@ +import { useEffect } from 'react'; +import { api } from '@nice/client'; + +function People() { + // 使用 useQuery 钩子从 API 获取数据,限制查询结果数量为 10 + const { data } = api.staff.findMany.useQuery({ + take: 10, // 限制查询结果数量 + }); + // 当 data 发生变化时,打印数据到控制台 + useEffect(() => { + console.log(data); + }, [data]); + + return ( +
+ { + // 遍历 data 并渲染每个元素 + data?.map((i) => { + return ( + + + + + + + + + + + + + {data?.map((i) => ( + + + + + + + + + ))} + +
UsernameIDShownamePasswordPhone NumberOrder
{i.username}{i.id}{i.showname}{i.password}{i.phoneNumber}{i.order}
+ ); + }) + } +
+ ); +} + +export default People; diff --git a/apps/web/src/app/main/home/page.tsx b/apps/web/src/app/main/home/page.tsx index 7f0bf77..878e55c 100755 --- a/apps/web/src/app/main/home/page.tsx +++ b/apps/web/src/app/main/home/page.tsx @@ -1,35 +1,45 @@ -import { Button, Tag } from 'antd' -import { api } from '@nice/client' -import { useEffect, useMemo, useState } from 'react' -import { apiClient } from '@web/src/utils' +import { api } from "@nice/client" +import { apiClient } from "@web/src/utils" +import { Button, Tag } from "antd" +import { useEffect, useMemo, useState } from "react" + function HomePage() { const { data } = api.staff.findMany.useQuery({ take: 10 }) - const [counter, setCounter] = useState(0) + const [counter, setCounter] = useState(0) const counterText = useMemo(() => { return `当前计数为:${counter}` - },[counter]) - - // const getData = async () => { - // const res = await apiClient.get|{"/goods/hello"} - // console.log(res) - // } + }, [counter]) - return
+ const getData = async () => { + const res = await apiClient.get("/goods/hello") + console.log(res) + } + useEffect(() => { + getData() + }, []) + return
{counterText} -
- - +
+ +
+ { - data?.map(i=>{ - return
+ data?.map(i => { + return
{i.username} -
+
}) }
} -//export {HomePage} -export default HomePage \ No newline at end of file +// export { HomePage } +export default HomePage diff --git a/apps/web/src/routes/main-route.tsx b/apps/web/src/routes/main-route.tsx index 408cdee..1c23dc9 100644 --- a/apps/web/src/routes/main-route.tsx +++ b/apps/web/src/routes/main-route.tsx @@ -6,7 +6,7 @@ export const MainRoute: CustomRouteObject = { element: , children: [ { - index: true, //默认第一次进主页 + index: true, element: , }, ], diff --git a/packages/common/prisma/schema.prisma b/packages/common/prisma/schema.prisma index f6fed62..935a217 100755 --- a/packages/common/prisma/schema.prisma +++ b/packages/common/prisma/schema.prisma @@ -330,42 +330,44 @@ model Resource { @@map("resource") } + + //商品表 -model Goods{ - id String @id @default(cuid()) - name String @unique - description String? - price Float @default(0.0) - images String[] @default([]) - tags Tag[] @relation("goods_tag")//多对多关系 - reviews Review[] //一对多关系 - createdAt DateTime @default(now()) @map("created_at") - updatedAt DateTime @updatedAt @map("updated_at") - deletedAt DateTime? @map("deleted_at") +model Goods { + id String @id @default(cuid()) // 商品ID + name String @unique // 商品名称 + description String? // 商品描述 + price Float @default(0.0) // 商品价格 + images String[] @default([]) // 商品图片 + tags Tag[] @relation("GoodsTags") // 多对多关系 + reviews Review[] // 一对多关系 + createdAt DateTime @default(now()) @map("created_at") // 创建时间 + updatedAt DateTime @updatedAt @map("updated_at") // 更新时间 + deletedAt DateTime? @map("deleted_at") // 删除时间,可为空 @@index([name]) @@map("goods") } -//商品标签表 -model Tag{ - id String @id @default(cuid()) - name String @unique - goods Goods[] @relation("goods_tag") - createdAt DateTime @default(now()) @map("created_at") - updatedAt DateTime @updatedAt @map("updated_at") - deletedAt DateTime? @map("deleted_at") +// 标签表 +model Tag { + id String @id @default(cuid()) + name String @unique + goods Goods[] @relation("GoodsTags") + createdAt DateTime @default(now()) @map("created_at") + updatedAt DateTime @updatedAt @map("updated_at") + deletedAt DateTime? @map("deleted_at") @@map("tag") } -model Review{ - id String @id @default(cuid()) - content String - rating Int @default(0) - goodsId String @map("goods_id") - goods Goods @relation(fields: [goodsId], references: [id]) - createdAt DateTime @default(now()) @map("created_at") - updatedAt DateTime @updatedAt @map("updated_at") - deletedAt DateTime? @map("deleted_at") +model Review { + id String @id @default(cuid()) + content String + rating Int @default(0) + goodsId String @map("goods_id") + goods Goods @relation(fields: [goodsId], references: [id]) + createdAt DateTime @default(now()) @map("created_at") + updatedAt DateTime @updatedAt @map("updated_at") + deletedAt DateTime? @map("deleted_at") @@index([goodsId]) @@index([rating]) @@map("review")