import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn } from 'typeorm';

@Entity('merchants_mt')
export class MerchantMt {
  @PrimaryGeneratedColumn({ unsigned: true })
  id!: number;

  @Column({ name: 'tenant_id', type: 'int', unsigned: true, nullable: false, comment: '租户ID' })
  tenantId!: number;

  @Column({ name: 'name', type: 'varchar', length: 255, nullable: true, comment: '商户名称' })
  name!: string | null;

  @Column({ name: 'username', type: 'varchar', length: 20, unique: true, comment: '用户名' })
  username!: string;

  @Column({ name: 'password', type: 'varchar', length: 255, comment: '密码' })
  password!: string;

  @Column({ name: 'phone', type: 'char', length: 11, nullable: true, comment: '手机号码' })
  phone!: string | null;

  @Column({ name: 'realname', type: 'varchar', length: 20, nullable: true, comment: '姓名' })
  realname!: string | null;

  @Column({ name: 'login_num', type: 'int', unsigned: true, default: 0, comment: '登录次数' })
  loginNum!: number;

  @Column({ name: 'login_time', type: 'int', unsigned: true, default: 0, comment: '登录时间' })
  loginTime!: number;

  @Column({ name: 'login_ip', type: 'varchar', length: 15, nullable: true, comment: '登录IP' })
  loginIp!: string | null;

  @Column({ name: 'last_login_time', type: 'int', unsigned: true, default: 0, comment: '上次登录时间' })
  lastLoginTime!: number;

  @Column({ name: 'last_login_ip', type: 'varchar', length: 15, nullable: true, comment: '上次登录IP' })
  lastLoginIp!: string | null;

  @Column({ name: 'state', type: 'smallint', unsigned: true, default: 2, comment: '状态 1启用 2禁用' })
  state!: number;

  @Column({ name: 'rsa_public_key', type: 'varchar', length: 2000, nullable: true, comment: '公钥' })
  rsaPublicKey!: string | null;

  @Column({ name: 'aes_key', type: 'varchar', length: 32, nullable: true, comment: 'aes秘钥' })
  aesKey!: string | null;

  @CreateDateColumn({ name: 'created_at', type: 'timestamp', comment: '创建时间' })
  createdAt!: Date;

  @UpdateDateColumn({ name: 'updated_at', type: 'timestamp', comment: '更新时间' })
  updatedAt!: Date;

  @Column({ name: 'created_by', type: 'int', unsigned: true, nullable: true, comment: '创建用户ID' })
  createdBy!: number | null;

  @Column({ name: 'updated_by', type: 'int', unsigned: true, nullable: true, comment: '更新用户ID' })
  updatedBy!: number | null;
}