feat: 完成 NestJS 后端核心底座开发 (M1-M6) 和 Ant Design Vue 前端迁移

主要更新:
1. 后端核心底座完成 (M1-M6):
   - 健康检查、指标监控、分布式锁
   - 事件总线、队列系统、事务管理
   - 安全守卫、多租户隔离、存储适配器
   - 审计日志、配置管理、多语言支持

2. 前端迁移到 Ant Design Vue:
   - 从 Element Plus 迁移到 Ant Design Vue
   - 完善 system 模块 (role/menu/dept)
   - 修复依赖和配置问题

3. 文档完善:
   - AI 开发工作流文档
   - 架构约束和开发规范
   - 项目进度跟踪

4. 其他改进:
   - 修复编译错误和类型问题
   - 完善测试用例
   - 优化项目结构
This commit is contained in:
万物街
2025-08-27 11:24:22 +08:00
parent be07b9ffec
commit 1cd5d3bdef
696 changed files with 36708 additions and 16868 deletions

View File

@@ -1,4 +1,12 @@
import { Entity, PrimaryGeneratedColumn, Column, OneToMany, ManyToOne, JoinColumn } from 'typeorm';
import {
Entity,
PrimaryGeneratedColumn,
Column,
OneToMany,
ManyToOne,
JoinColumn,
} from 'typeorm';
import { BaseEntity } from '@wwjCore/base/BaseEntity';
import { MemberAccount } from './MemberAccount';
import { MemberCashOut } from './MemberCashOut';
import { MemberLabel } from './MemberLabel';
@@ -8,7 +16,7 @@ import { MemberAddress } from './MemberAddress';
import { MemberAccountLog } from './MemberAccountLog';
@Entity('member')
export class Member {
export class Member extends BaseEntity {
@PrimaryGeneratedColumn({ name: 'member_id' })
member_id: number;
@@ -18,9 +26,6 @@ export class Member {
@Column({ name: 'pid', type: 'int', default: 0 })
pid: number;
@Column({ name: 'site_id', type: 'int', default: 0 })
site_id: number;
@Column({ name: 'username', type: 'varchar', length: 255, default: '' })
username: string;
@@ -57,7 +62,12 @@ export class Member {
@Column({ name: 'douyin_openid', type: 'varchar', length: 255, default: '' })
douyin_openid: string;
@Column({ name: 'register_channel', type: 'varchar', length: 255, default: 'H5' })
@Column({
name: 'register_channel',
type: 'varchar',
length: 255,
default: 'H5',
})
register_channel: string;
@Column({ name: 'register_type', type: 'varchar', length: 255, default: '' })
@@ -78,9 +88,6 @@ export class Member {
@Column({ name: 'login_time', type: 'int', default: 0 })
login_time: number;
@Column({ name: 'create_time', type: 'int', default: 0 })
create_time: number;
@Column({ name: 'last_visit_time', type: 'int', default: 0 })
last_visit_time: number;
@@ -105,19 +112,49 @@ export class Member {
@Column({ name: 'point_get', type: 'int', default: 0 })
point_get: number;
@Column({ name: 'balance', type: 'decimal', precision: 10, scale: 2, default: 0 })
@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 })
@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 })
@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 })
@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 })
@Column({
name: 'money_cash_outing',
type: 'decimal',
precision: 10,
scale: 2,
default: 0,
})
money_cash_outing: number;
@Column({ name: 'growth', type: 'int', default: 0 })
@@ -126,13 +163,31 @@ export class Member {
@Column({ name: 'growth_get', type: 'int', default: 0 })
growth_get: number;
@Column({ name: 'commission', type: 'decimal', precision: 10, scale: 2, default: 0 })
@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 })
@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 })
@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 })
@@ -141,9 +196,6 @@ export class Member {
@Column({ name: 'member_time', type: 'int', default: 0 })
member_time: number;
@Column({ name: 'is_del', type: 'tinyint', default: 0 })
is_del: number;
@Column({ name: 'province_id', type: 'int', default: 0 })
province_id: number;
@@ -162,32 +214,26 @@ export class Member {
@Column({ name: 'remark', type: 'varchar', length: 300, default: '' })
remark: string;
@Column({ name: 'delete_time', type: 'int', default: 0 })
delete_time: number;
@Column({ name: 'update_time', type: 'int', default: 0 })
update_time: number;
// 关联关系
@OneToMany(() => MemberAccount, account => account.member)
@OneToMany(() => MemberAccount, (account) => account.member)
accounts: MemberAccount[];
@OneToMany(() => MemberCashOut, cashOut => cashOut.member)
@OneToMany(() => MemberCashOut, (cashOut) => cashOut.member)
cashOuts: MemberCashOut[];
@OneToMany(() => MemberLabel, label => label.member)
@OneToMany(() => MemberLabel, (label) => label.member)
labels: MemberLabel[];
@OneToMany(() => MemberSign, sign => sign.member)
@OneToMany(() => MemberSign, (sign) => sign.member)
signs: MemberSign[];
@ManyToOne(() => MemberLevel, level => level.members)
@ManyToOne(() => MemberLevel, (level) => level.members)
@JoinColumn({ name: 'member_level' })
level: MemberLevel;
@OneToMany(() => MemberAddress, address => address.member)
@OneToMany(() => MemberAddress, (address) => address.member)
addresses: MemberAddress[];
@OneToMany(() => MemberAccountLog, accountLog => accountLog.member)
@OneToMany(() => MemberAccountLog, (accountLog) => accountLog.member)
accountLogs: MemberAccountLog[];
}
}