写一个接口需要的四个文件
controller定义接口
import { UserService} from './user.service';
import {
Body,
Controller,
Post,
Req,
} from '@nestjs/common';
import { FileInterceptor } from '@nestjs/platform-express';
import {ApiOperation} from '@nestjs/swagger';
import * as UserDOT from './user.dto';
@ApiTags('用户系列接口:/api/user')
@Controller('user')
export class UserController {
constructor(private readonly userService: UserService) { }
/*
* 新增测试数据
*/
@ApiOperation({ summary: '删除测试数据' })
@Post('addTestData')
async addTestData(@Body() post: UserDOT.AddTestData, @Req() req) {
return this.userService.AddTestData(post, req);
}
}
entity定义事务(认为时操作数据的字段)
import { Entity, PrimaryGeneratedColumn, Column} from 'typeorm'
@Entity({ name: 'test' })
export class UserEntity{
@PrimaryGeneratedColumn()
id: number;
@Column()
code: string
@Column({ name: 'create_time' })
createTime: Date
@Column({ name: 'update_time' })
updateTime: Date
@Column({ name: 'create_by' })
createBy: string
@Column({ name: 'update_by' })
updateBy: string
}
dto定义需要传参数
export class AddTestData {
@ApiProperty({ description: '单号' })
@IsNotEmpty({ message: '缺少单号' })
readonly code
}
service定义方法
import { HttpException, Injectable } from '@nestjs/common';
import { InjectRepository, InjectEntityManager } from '@nestjs/typeorm';
import { Any, Like, Repository, EntityManager } from 'typeorm';
@Injectable()
export class UserService {
constructor(
@InjectRepository(UserEntity)
private readonly userRepository: Repository<UserEntity>,
private redisCacheService: RedisCacheService,
@InjectRepository(UserTokenEntity)
private readonly UserTokenRepository: Repository<UserTokenEntity>,
@InjectEntityManager()
private readonly entityManager: EntityManager,
) { }
async GetTestData(query) {
let { page, pageSize } = query
let list = await this.entityManager.query(
`
SELECT
u.id,
u.code,
u.purchase_plan_code purchasePlanCode,
u.yc_code ycCode,
u.supplier_code supplierCode,
u.warehouse,
u.sku_num skuNum,
u.update_time updateTime,
u.create_time createTime,
u.update_by updateBy,
u.create_by createBy,
s.name,
m.name trackBy
FROM srm_purchase u
LEFT JOIN srm_supplier s ON s.code=u.supplier_code
LEFT JOIN srm_merchandiser m ON m.user_id=u.track_user_id
LIMIT ${page - 1}, ${pageSize};
`
)
let count = await this.entityManager.query(
`
SELECT COUNT(*) AS count FROM test
`
)
return {
list,
count: count[0].count
}
}
}