88 lines
2.0 KiB
JavaScript
88 lines
2.0 KiB
JavaScript
const { DataTypes } = require('sequelize');
|
|
const { sequelize } = require('../config/database');
|
|
|
|
/**
|
|
* UserSubscription Model - Quản lý subscription của từng user
|
|
*/
|
|
const UserSubscription = sequelize.define('user_subscriptions', {
|
|
id: {
|
|
type: DataTypes.UUID,
|
|
defaultValue: DataTypes.UUIDV4,
|
|
primaryKey: true,
|
|
},
|
|
user_id: {
|
|
type: DataTypes.UUID,
|
|
allowNull: false,
|
|
references: {
|
|
model: 'users_auth',
|
|
key: 'id',
|
|
},
|
|
comment: 'User mua gói',
|
|
},
|
|
plan_id: {
|
|
type: DataTypes.UUID,
|
|
allowNull: false,
|
|
references: {
|
|
model: 'subscription_plans',
|
|
key: 'id',
|
|
},
|
|
comment: 'Gói đã mua',
|
|
},
|
|
start_date: {
|
|
type: DataTypes.DATEONLY,
|
|
allowNull: false,
|
|
comment: 'Ngày bắt đầu',
|
|
},
|
|
end_date: {
|
|
type: DataTypes.DATEONLY,
|
|
allowNull: false,
|
|
comment: 'Ngày kết thúc',
|
|
},
|
|
status: {
|
|
type: DataTypes.ENUM('active', 'expired', 'cancelled'),
|
|
defaultValue: 'active',
|
|
allowNull: false,
|
|
comment: 'Trạng thái subscription',
|
|
},
|
|
transaction_id: {
|
|
type: DataTypes.STRING(100),
|
|
comment: 'Mã giao dịch để đối soát',
|
|
},
|
|
payment_method: {
|
|
type: DataTypes.STRING(50),
|
|
comment: 'Phương thức thanh toán: momo, vnpay, banking',
|
|
},
|
|
payment_amount: {
|
|
type: DataTypes.DECIMAL(10, 2),
|
|
comment: 'Số tiền đã thanh toán',
|
|
},
|
|
auto_renew: {
|
|
type: DataTypes.BOOLEAN,
|
|
defaultValue: false,
|
|
comment: 'Tự động gia hạn',
|
|
},
|
|
created_at: {
|
|
type: DataTypes.DATE,
|
|
allowNull: false,
|
|
defaultValue: DataTypes.NOW,
|
|
},
|
|
updated_at: {
|
|
type: DataTypes.DATE,
|
|
allowNull: false,
|
|
defaultValue: DataTypes.NOW,
|
|
},
|
|
}, {
|
|
tableName: 'user_subscriptions',
|
|
timestamps: true,
|
|
underscored: true,
|
|
indexes: [
|
|
{ fields: ['user_id'] },
|
|
{ fields: ['status'] },
|
|
{ fields: ['end_date'] },
|
|
{ fields: ['transaction_id'] },
|
|
],
|
|
comment: 'Bảng quản lý subscription của user',
|
|
});
|
|
|
|
module.exports = UserSubscription;
|