修改管理后台
This commit is contained in:
178
backend/models/Pen.js
Normal file
178
backend/models/Pen.js
Normal file
@@ -0,0 +1,178 @@
|
||||
/**
|
||||
* 栏舍模型
|
||||
* @file Pen.js
|
||||
* @description 栏舍信息数据模型
|
||||
*/
|
||||
|
||||
const { DataTypes, Model } = require('sequelize');
|
||||
const sequelize = require('../config/database');
|
||||
|
||||
class Pen extends Model {
|
||||
// 获取动物类型文本
|
||||
getAnimalTypeText() {
|
||||
return this.animal_type || '未知';
|
||||
}
|
||||
|
||||
// 获取状态文本
|
||||
getStatusText() {
|
||||
return this.status ? '开启' : '关闭';
|
||||
}
|
||||
|
||||
// 获取容量使用率(如果有当前动物数量的话)
|
||||
getCapacityUsageRate() {
|
||||
// 这里可以根据实际业务需求计算
|
||||
return 0;
|
||||
}
|
||||
|
||||
// 检查容量是否足够
|
||||
isCapacitySufficient(requiredCapacity) {
|
||||
return (this.capacity - this.getCurrentAnimalCount()) >= requiredCapacity;
|
||||
}
|
||||
|
||||
// 获取当前动物数量(需要根据实际业务实现)
|
||||
getCurrentAnimalCount() {
|
||||
// 这里应该查询当前栏舍中的动物数量
|
||||
// 暂时返回0,实际实现时需要关联查询
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
Pen.init({
|
||||
id: {
|
||||
type: DataTypes.BIGINT,
|
||||
primaryKey: true,
|
||||
autoIncrement: true,
|
||||
comment: '栏舍ID'
|
||||
},
|
||||
name: {
|
||||
type: DataTypes.STRING(50),
|
||||
allowNull: false,
|
||||
comment: '栏舍名称',
|
||||
validate: {
|
||||
notEmpty: {
|
||||
msg: '栏舍名称不能为空'
|
||||
},
|
||||
len: {
|
||||
args: [1, 50],
|
||||
msg: '栏舍名称长度应在1-50个字符之间'
|
||||
}
|
||||
}
|
||||
},
|
||||
animal_type: {
|
||||
type: DataTypes.ENUM('马', '牛', '羊', '家禽', '猪'),
|
||||
allowNull: false,
|
||||
comment: '动物类型',
|
||||
validate: {
|
||||
notEmpty: {
|
||||
msg: '动物类型不能为空'
|
||||
},
|
||||
isIn: {
|
||||
args: [['马', '牛', '羊', '家禽', '猪']],
|
||||
msg: '动物类型必须是:马、牛、羊、家禽、猪中的一个'
|
||||
}
|
||||
}
|
||||
},
|
||||
pen_type: {
|
||||
type: DataTypes.STRING(50),
|
||||
allowNull: true,
|
||||
comment: '栏舍类型',
|
||||
validate: {
|
||||
len: {
|
||||
args: [0, 50],
|
||||
msg: '栏舍类型长度不能超过50个字符'
|
||||
}
|
||||
}
|
||||
},
|
||||
responsible: {
|
||||
type: DataTypes.STRING(20),
|
||||
allowNull: false,
|
||||
comment: '负责人',
|
||||
validate: {
|
||||
notEmpty: {
|
||||
msg: '负责人不能为空'
|
||||
},
|
||||
len: {
|
||||
args: [1, 20],
|
||||
msg: '负责人姓名长度应在1-20个字符之间'
|
||||
}
|
||||
}
|
||||
},
|
||||
capacity: {
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: false,
|
||||
defaultValue: 1,
|
||||
comment: '容量',
|
||||
validate: {
|
||||
min: {
|
||||
args: 1,
|
||||
msg: '容量不能小于1'
|
||||
},
|
||||
max: {
|
||||
args: 10000,
|
||||
msg: '容量不能超过10000'
|
||||
},
|
||||
isInt: {
|
||||
msg: '容量必须是整数'
|
||||
}
|
||||
}
|
||||
},
|
||||
status: {
|
||||
type: DataTypes.BOOLEAN,
|
||||
allowNull: false,
|
||||
defaultValue: true,
|
||||
comment: '状态:true-开启,false-关闭'
|
||||
},
|
||||
description: {
|
||||
type: DataTypes.TEXT,
|
||||
allowNull: true,
|
||||
comment: '备注信息',
|
||||
validate: {
|
||||
len: {
|
||||
args: [0, 1000],
|
||||
msg: '备注信息长度不能超过1000个字符'
|
||||
}
|
||||
}
|
||||
},
|
||||
farm_id: {
|
||||
type: DataTypes.BIGINT,
|
||||
allowNull: true,
|
||||
comment: '所属农场ID',
|
||||
references: {
|
||||
model: 'farms',
|
||||
key: 'id'
|
||||
}
|
||||
},
|
||||
creator: {
|
||||
type: DataTypes.STRING(50),
|
||||
allowNull: false,
|
||||
defaultValue: 'admin',
|
||||
comment: '创建人'
|
||||
}
|
||||
}, {
|
||||
sequelize,
|
||||
modelName: 'Pen',
|
||||
tableName: 'pens',
|
||||
timestamps: true,
|
||||
createdAt: 'created_at',
|
||||
updatedAt: 'updated_at',
|
||||
comment: '栏舍管理表',
|
||||
indexes: [
|
||||
{
|
||||
fields: ['name']
|
||||
},
|
||||
{
|
||||
fields: ['animal_type']
|
||||
},
|
||||
{
|
||||
fields: ['farm_id']
|
||||
},
|
||||
{
|
||||
fields: ['status']
|
||||
},
|
||||
{
|
||||
fields: ['created_at']
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
module.exports = Pen;
|
||||
Reference in New Issue
Block a user