- NestJS + TypeScript + Prisma + PostgreSQL 工程骨架 - 微信登录安全流程:服务端 code2Session 换 openid 后签发 JWT, session_key 缓存于 Redis,不信任前端 openid - 统一响应/异常处理、JWT 全局鉴权(@Public 豁免)、Swagger 文档 - Prisma 全量核心 schema(用户/分类/商品/设计清单/地址/订单/支付/上传/定制任务)+ seed - 业务模块空壳(商品/分类/设计清单/地址/订单/支付/上传/BullMQ 队列) - Docker 多阶段镜像 + 本地/生产 docker-compose - docs:密钥获取指南、COS SDK 移除记录 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
28 lines
826 B
TypeScript
28 lines
826 B
TypeScript
import { Injectable } from '@nestjs/common';
|
|
import { ProductStatus } from '@prisma/client';
|
|
import { PrismaService } from '../prisma/prisma.service';
|
|
import { CreateProductDto } from './dto/create-product.dto';
|
|
|
|
@Injectable()
|
|
export class ProductsService {
|
|
constructor(private readonly prisma: PrismaService) {}
|
|
|
|
async list() {
|
|
// TODO: 分页、按分类/状态筛选、价格区间
|
|
return this.prisma.product.findMany({
|
|
where: { status: ProductStatus.ON_SALE },
|
|
orderBy: { createdAt: 'desc' },
|
|
});
|
|
}
|
|
|
|
async findOne(id: string) {
|
|
// TODO: 404 处理、浏览量统计
|
|
return this.prisma.product.findUnique({ where: { id } });
|
|
}
|
|
|
|
async create(dto: CreateProductDto) {
|
|
// TODO: 校验 categoryId 存在、图片归属
|
|
return this.prisma.product.create({ data: dto });
|
|
}
|
|
}
|