Nest 自动生成自定义的订单ID

414 阅读1分钟

订单ID唯一 规则(我司)字符标识+年月日+四位递增数

引入dayjs

dayjs 为了获取当天的年月日 (其他方式也行)

  • 下载依赖
npm install dayjs
  • xxx.service.ts 文件引入
import * as dayjs from 'dayjs';

在新增接口编写自动生成订单ID逻辑

xxx.service.ts

// 新增接口里的逻辑
// 获取此时年月日
const data = dayjs().format('YYYYMMDD');
// 查询数据库里的最后一行数据
const [records] = await this.repository.find({
  order: { id: 'DESC' },
});
// records.id 就是最后一行的自增id
const weiId = String(records ? records.id : 0);
// 将自增id+1并转换位 0001 形式
const lastId = records ? parseInt(weiId.substr(-4), 10) : 0;
const nextId = (lastId + 1).toString().padStart(4, '0');
// 将所有拼接起来
const id = `DD${data}${nextId}`;
// 结果 DD202312010001
// 将id赋值给orderId存到数据库即可

ps:this.repository是什么?

// 引入你设计的数据库的表
import { Order } from './entities/order.entity';

@Injectable()
export class OrderService {
  @InjectRepository(Order)
  private repository: Repository<Order>;
  // this.repository 你的数据库映射
}