Files
wwjcloud-nest-v1/wwjcloud/src/common/member/entities/Member.ts
万物街 7a20a0c50a feat: 完成PHP到NestJS的100%功能迁移
- 迁移25个模块,包含95个控制器和160个服务
- 新增验证码管理、登录配置、云编译等模块
- 完善认证授权、会员管理、支付系统等核心功能
- 实现完整的队列系统、配置管理、监控体系
- 确保100%功能对齐和命名一致性
- 支持生产环境部署
2025-09-10 08:04:28 +08:00

240 lines
5.9 KiB
TypeScript

import {
Entity,
PrimaryGeneratedColumn,
Column,
OneToMany,
ManyToOne,
JoinColumn,
} from 'typeorm';
import { BaseEntity } from '../../../core/base/BaseEntity';
import { MemberAccount } from './MemberAccount';
import { MemberCashOut } from './MemberCashOut';
import { MemberLabel } from './MemberLabel';
import { MemberSign } from './MemberSign';
import { MemberLevel } from './MemberLevel';
import { MemberAddress } from './MemberAddress';
import { MemberAccountLog } from './MemberAccountLog';
@Entity('member')
export class Member extends BaseEntity {
@PrimaryGeneratedColumn({ name: 'member_id' })
member_id: number;
@Column({ name: 'member_no', type: 'varchar', length: 255, default: '' })
member_no: string;
@Column({ name: 'pid', type: 'int', default: 0 })
pid: number;
@Column({ name: 'username', type: 'varchar', length: 255, default: '' })
username: string;
@Column({ name: 'mobile', type: 'varchar', length: 20, default: '' })
mobile: string;
@Column({ name: 'password', type: 'varchar', length: 255, default: '' })
password: string;
@Column({ name: 'nickname', type: 'varchar', length: 255, default: '' })
nickname: string;
@Column({ name: 'headimg', type: 'varchar', length: 1000, default: '' })
headimg: string;
@Column({ name: 'member_level', type: 'int', default: 0 })
member_level: number;
@Column({ name: 'member_label', type: 'varchar', length: 255, default: '' })
member_label: string;
@Column({ name: 'wx_openid', type: 'varchar', length: 255, default: '' })
wx_openid: string;
@Column({ name: 'weapp_openid', type: 'varchar', length: 255, default: '' })
weapp_openid: string;
@Column({ name: 'wx_unionid', type: 'varchar', length: 255, default: '' })
wx_unionid: string;
@Column({ name: 'ali_openid', type: 'varchar', length: 255, default: '' })
ali_openid: string;
@Column({ name: 'douyin_openid', type: 'varchar', length: 255, default: '' })
douyin_openid: string;
@Column({
name: 'register_channel',
type: 'varchar',
length: 255,
default: 'H5',
})
register_channel: string;
@Column({ name: 'register_type', type: 'varchar', length: 255, default: '' })
register_type: string;
@Column({ name: 'login_ip', type: 'varchar', length: 255, default: '' })
login_ip: string;
@Column({ name: 'login_type', type: 'varchar', length: 255, default: 'h5' })
login_type: string;
@Column({ name: 'login_channel', type: 'varchar', length: 255, default: '' })
login_channel: string;
@Column({ name: 'login_count', type: 'int', default: 0 })
login_count: number;
@Column({ name: 'login_time', type: 'int', default: 0 })
login_time: number;
@Column({ name: 'last_visit_time', type: 'int', default: 0 })
last_visit_time: number;
@Column({ name: 'last_consum_time', type: 'int', default: 0 })
last_consum_time: number;
@Column({ name: 'sex', type: 'tinyint', default: 0 })
sex: number;
@Column({ name: 'status', type: 'tinyint', default: 1 })
status: number;
@Column({ name: 'birthday', type: 'varchar', length: 20, default: '' })
birthday: string;
@Column({ name: 'id_card', type: 'varchar', length: 30, default: '' })
id_card: string;
@Column({ name: 'point', type: 'int', default: 0 })
point: number;
@Column({ name: 'point_get', type: 'int', default: 0 })
point_get: number;
@Column({
name: 'balance',
type: 'decimal',
precision: 10,
scale: 2,
default: 0,
})
balance: number;
@Column({
name: 'balance_get',
type: 'decimal',
precision: 10,
scale: 2,
default: 0,
})
balance_get: number;
@Column({
name: 'money',
type: 'decimal',
precision: 10,
scale: 2,
default: 0,
})
money: number;
@Column({
name: 'money_get',
type: 'decimal',
precision: 10,
scale: 2,
default: 0,
})
money_get: number;
@Column({
name: 'money_cash_outing',
type: 'decimal',
precision: 10,
scale: 2,
default: 0,
})
money_cash_outing: number;
@Column({ name: 'growth', type: 'int', default: 0 })
growth: number;
@Column({ name: 'growth_get', type: 'int', default: 0 })
growth_get: number;
@Column({
name: 'commission',
type: 'decimal',
precision: 10,
scale: 2,
default: 0,
})
commission: number;
@Column({
name: 'commission_get',
type: 'decimal',
precision: 10,
scale: 2,
default: 0,
})
commission_get: number;
@Column({
name: 'commission_cash_outing',
type: 'decimal',
precision: 10,
scale: 2,
default: 0,
})
commission_cash_outing: number;
@Column({ name: 'is_member', type: 'tinyint', default: 0 })
is_member: number;
@Column({ name: 'member_time', type: 'int', default: 0 })
member_time: number;
@Column({ name: 'province_id', type: 'int', default: 0 })
province_id: number;
@Column({ name: 'city_id', type: 'int', default: 0 })
city_id: number;
@Column({ name: 'district_id', type: 'int', default: 0 })
district_id: number;
@Column({ name: 'address', type: 'varchar', length: 255, default: '' })
address: string;
@Column({ name: 'location', type: 'varchar', length: 255, default: '' })
location: string;
@Column({ name: 'remark', type: 'varchar', length: 300, default: '' })
remark: string;
// 关联关系
@OneToMany(() => MemberAccount, (account) => account.member)
accounts: MemberAccount[];
@OneToMany(() => MemberCashOut, (cashOut) => cashOut.member)
cashOuts: MemberCashOut[];
@OneToMany(() => MemberLabel, (label) => label.member)
labels: MemberLabel[];
@OneToMany(() => MemberSign, (sign) => sign.member)
signs: MemberSign[];
@ManyToOne(() => MemberLevel, (level) => level.members)
@JoinColumn({ name: 'member_level' })
level: MemberLevel;
@OneToMany(() => MemberAddress, (address) => address.member)
addresses: MemberAddress[];
@OneToMany(() => MemberAccountLog, (accountLog) => accountLog.member)
accountLogs: MemberAccountLog[];
}