Initial commit: 全友米项目完整代码
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
const { DataTypes } = require('sequelize');
|
||||
const sequelize = require('./db');
|
||||
|
||||
const Activity = sequelize.define('Activity', {
|
||||
id: {
|
||||
type: DataTypes.INTEGER,
|
||||
primaryKey: true,
|
||||
autoIncrement: true
|
||||
},
|
||||
title: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false
|
||||
},
|
||||
description: DataTypes.TEXT,
|
||||
location: DataTypes.STRING,
|
||||
locationLat: DataTypes.DECIMAL(10, 7),
|
||||
locationLng: DataTypes.DECIMAL(10, 7),
|
||||
startTime: DataTypes.DATE,
|
||||
endTime: DataTypes.DATE,
|
||||
registrationDeadline: DataTypes.DATE,
|
||||
maxParticipants: DataTypes.INTEGER,
|
||||
status: {
|
||||
type: DataTypes.ENUM('upcoming', 'ongoing', 'completed'),
|
||||
defaultValue: 'upcoming'
|
||||
},
|
||||
registrationEnabled: {
|
||||
type: DataTypes.BOOLEAN,
|
||||
defaultValue: true,
|
||||
comment: '报名开关'
|
||||
},
|
||||
coverImage: DataTypes.STRING,
|
||||
price: {
|
||||
type: DataTypes.DECIMAL(10, 2),
|
||||
defaultValue: 0,
|
||||
comment: '人均费用'
|
||||
},
|
||||
budget: {
|
||||
type: DataTypes.DECIMAL(10, 2),
|
||||
defaultValue: 0,
|
||||
comment: '活动预算'
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = Activity;
|
||||
@@ -0,0 +1,22 @@
|
||||
const { DataTypes } = require('sequelize');
|
||||
const sequelize = require('./db');
|
||||
|
||||
const Admin = sequelize.define('Admin', {
|
||||
id: {
|
||||
type: DataTypes.INTEGER,
|
||||
primaryKey: true,
|
||||
autoIncrement: true
|
||||
},
|
||||
username: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false,
|
||||
unique: true
|
||||
},
|
||||
password: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false
|
||||
},
|
||||
name: DataTypes.STRING
|
||||
});
|
||||
|
||||
module.exports = Admin;
|
||||
@@ -0,0 +1,32 @@
|
||||
const { DataTypes } = require('sequelize');
|
||||
const sequelize = require('./db');
|
||||
|
||||
const Expense = sequelize.define('Expense', {
|
||||
id: {
|
||||
type: DataTypes.INTEGER,
|
||||
primaryKey: true,
|
||||
autoIncrement: true
|
||||
},
|
||||
activityId: {
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: false
|
||||
},
|
||||
item: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false
|
||||
},
|
||||
amount: {
|
||||
type: DataTypes.DECIMAL(10, 2),
|
||||
allowNull: false
|
||||
},
|
||||
category: DataTypes.STRING,
|
||||
receipt: DataTypes.STRING,
|
||||
note: DataTypes.TEXT,
|
||||
media: {
|
||||
type: DataTypes.JSON,
|
||||
defaultValue: [],
|
||||
comment: '经费相关照片/视频,最多5个'
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = Expense;
|
||||
@@ -0,0 +1,30 @@
|
||||
const { DataTypes } = require('sequelize');
|
||||
const sequelize = require('./db');
|
||||
|
||||
const Photo = sequelize.define('Photo', {
|
||||
id: {
|
||||
type: DataTypes.INTEGER,
|
||||
primaryKey: true,
|
||||
autoIncrement: true
|
||||
},
|
||||
activityId: {
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: false
|
||||
},
|
||||
url: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false
|
||||
},
|
||||
type: {
|
||||
type: DataTypes.ENUM('image', 'video'),
|
||||
defaultValue: 'image'
|
||||
},
|
||||
description: DataTypes.STRING,
|
||||
uploadedBy: DataTypes.STRING,
|
||||
status: {
|
||||
type: DataTypes.ENUM('pending', 'approved', 'rejected'),
|
||||
defaultValue: 'approved'
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = Photo;
|
||||
@@ -0,0 +1,40 @@
|
||||
const { DataTypes } = require('sequelize');
|
||||
const sequelize = require('./db');
|
||||
|
||||
const Registration = sequelize.define('Registration', {
|
||||
id: {
|
||||
type: DataTypes.INTEGER,
|
||||
primaryKey: true,
|
||||
autoIncrement: true
|
||||
},
|
||||
activityId: {
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: false
|
||||
},
|
||||
name: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false
|
||||
},
|
||||
phone: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false
|
||||
},
|
||||
carModel: DataTypes.STRING,
|
||||
carNumber: DataTypes.STRING,
|
||||
peopleCount: {
|
||||
type: DataTypes.INTEGER,
|
||||
defaultValue: 1
|
||||
},
|
||||
status: {
|
||||
type: DataTypes.ENUM('pending', 'approved', 'rejected'),
|
||||
defaultValue: 'pending'
|
||||
},
|
||||
note: DataTypes.TEXT,
|
||||
checkInStatus: {
|
||||
type: DataTypes.BOOLEAN,
|
||||
defaultValue: false
|
||||
},
|
||||
checkInTime: DataTypes.DATE
|
||||
});
|
||||
|
||||
module.exports = Registration;
|
||||
@@ -0,0 +1,26 @@
|
||||
const { DataTypes } = require('sequelize');
|
||||
const sequelize = require('./db');
|
||||
|
||||
const Sponsor = sequelize.define('Sponsor', {
|
||||
id: {
|
||||
type: DataTypes.INTEGER,
|
||||
primaryKey: true,
|
||||
autoIncrement: true
|
||||
},
|
||||
activityId: {
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: false
|
||||
},
|
||||
name: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false
|
||||
},
|
||||
logo: DataTypes.STRING,
|
||||
type: {
|
||||
type: DataTypes.ENUM('title', 'sponsor'),
|
||||
defaultValue: 'sponsor'
|
||||
},
|
||||
link: DataTypes.STRING
|
||||
});
|
||||
|
||||
module.exports = Sponsor;
|
||||
@@ -0,0 +1,14 @@
|
||||
const { Sequelize } = require('sequelize');
|
||||
|
||||
const sequelize = new Sequelize(
|
||||
process.env.DB_NAME || 'quanyoumi',
|
||||
process.env.DB_USER || 'root',
|
||||
process.env.DB_PASSWORD || '',
|
||||
{
|
||||
host: process.env.DB_HOST || 'localhost',
|
||||
dialect: 'mysql',
|
||||
logging: false
|
||||
}
|
||||
);
|
||||
|
||||
module.exports = sequelize;
|
||||
@@ -0,0 +1,22 @@
|
||||
const sequelize = require('./db');
|
||||
const Activity = require('./Activity');
|
||||
const Registration = require('./Registration');
|
||||
const Expense = require('./Expense');
|
||||
const Photo = require('./Photo');
|
||||
const Sponsor = require('./Sponsor');
|
||||
const Admin = require('./Admin');
|
||||
|
||||
// 同步数据库
|
||||
sequelize.sync({ alter: true }).then(() => {
|
||||
console.log('数据库同步完成');
|
||||
});
|
||||
|
||||
module.exports = {
|
||||
sequelize,
|
||||
Activity,
|
||||
Registration,
|
||||
Expense,
|
||||
Photo,
|
||||
Sponsor,
|
||||
Admin
|
||||
};
|
||||
Reference in New Issue
Block a user