7 changed files with 168 additions and 12 deletions
-
1src/constant/err.type.js
-
41src/controller/coop.controller.js
-
24src/controller/house.controller.js
-
15src/middleware/coop.middleware.js
-
32src/model/coop.model.js
-
15src/router/coop.route.js
-
52src/service/coop.service.js
@ -0,0 +1,41 @@ |
|||||
|
const { |
||||
|
getCoopListById, |
||||
|
createCoop, |
||||
|
updateCoop, |
||||
|
} = require("../service/coop.service"); |
||||
|
const Response = require("../utils/response"); |
||||
|
|
||||
|
class CoopController { |
||||
|
async list(ctx, next) { |
||||
|
const { house_id } = ctx.request.query; |
||||
|
const res = await getCoopListById(house_id); |
||||
|
ctx.body = Response(0, "查询鸡舍列表成功", res); |
||||
|
} |
||||
|
|
||||
|
async create(ctx, next) { |
||||
|
const { coop_name, coop_cage_number, chicken_number, house_id } = |
||||
|
ctx.request.body; |
||||
|
const res = await createCoop( |
||||
|
coop_name, |
||||
|
coop_cage_number, |
||||
|
chicken_number, |
||||
|
house_id |
||||
|
); |
||||
|
ctx.body = Response(0, "新增鸡舍成功", res); |
||||
|
} |
||||
|
|
||||
|
async update(ctx, next) { |
||||
|
const { coop_name, coop_cage_number, chicken_number, house_id, id } = |
||||
|
ctx.request.body; |
||||
|
const res = await updateCoop( |
||||
|
coop_name, |
||||
|
coop_cage_number, |
||||
|
chicken_number, |
||||
|
house_id, |
||||
|
id |
||||
|
); |
||||
|
ctx.body = Response(0, "更新鸡舍信息成功", res); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
module.exports = new CoopController(); |
@ -0,0 +1,15 @@ |
|||||
|
const { getCoopByNameAndHouseId } = require("../service/coop.service"); |
||||
|
const { coopNameAlreadyExisted } = require("../constant/err.type"); |
||||
|
|
||||
|
const verifyCoopExisted = async (ctx, next) => { |
||||
|
const { coop_name, house_id } = ctx.request.body; |
||||
|
if (await getCoopByNameAndHouseId(coop_name, house_id)) { |
||||
|
ctx.app.emit("error", coopNameAlreadyExisted, ctx); |
||||
|
return; |
||||
|
} |
||||
|
await next(); |
||||
|
}; |
||||
|
|
||||
|
module.exports = { |
||||
|
verifyCoopExisted, |
||||
|
}; |
@ -0,0 +1,32 @@ |
|||||
|
const { DataTypes } = require("sequelize"); |
||||
|
|
||||
|
const seq = require("../db/seq"); |
||||
|
|
||||
|
const Coop = seq.define("chicken_coop", { |
||||
|
// id 会被sequelize自动创建, 管理
|
||||
|
coop_name: { |
||||
|
type: DataTypes.STRING, |
||||
|
allowNull: false, |
||||
|
comment: "鸡舍名称", |
||||
|
}, |
||||
|
coop_cage_number: { |
||||
|
type: DataTypes.INTEGER, |
||||
|
allowNull: false, |
||||
|
comment: "鸡舍笼位", |
||||
|
}, |
||||
|
chicken_number: { |
||||
|
type: DataTypes.INTEGER, |
||||
|
allowNull: false, |
||||
|
comment: "每笼鸡位", |
||||
|
}, |
||||
|
house_id: { |
||||
|
type: DataTypes.INTEGER, |
||||
|
allowNull: false, |
||||
|
comment: "所属鸡场id, 相当于外键", |
||||
|
}, |
||||
|
}); |
||||
|
|
||||
|
// 强制同步数据库(创建数据表)
|
||||
|
// Coop.sync({ force: true });
|
||||
|
|
||||
|
module.exports = Coop; |
@ -0,0 +1,15 @@ |
|||||
|
const Router = require("koa-router"); |
||||
|
|
||||
|
const router = new Router({ prefix: "/coop" }); |
||||
|
|
||||
|
const { auth, hasAdminPermission } = require("../middleware/auth.middleware"); |
||||
|
const { verifyCoopExisted } = require("../middleware/coop.middleware"); |
||||
|
const { list, create, update } = require("../controller/coop.controller"); |
||||
|
|
||||
|
router.get("/list", auth, list); |
||||
|
|
||||
|
router.post("/create", auth, verifyCoopExisted, create); |
||||
|
|
||||
|
router.post("/update", auth, update); |
||||
|
|
||||
|
module.exports = router; |
@ -0,0 +1,52 @@ |
|||||
|
const Coop = require("../model/coop.model"); |
||||
|
class CoopService { |
||||
|
async getCoopListById(house_id) { |
||||
|
const res = await Coop.findAll({ |
||||
|
where: { |
||||
|
house_id, |
||||
|
}, |
||||
|
}); |
||||
|
const arr = res.map((item) => item.dataValues); |
||||
|
// 根据belong 查询用户信息并拼接
|
||||
|
return arr; |
||||
|
} |
||||
|
|
||||
|
async createCoop(coop_name, coop_cage_number, chicken_number, house_id) { |
||||
|
const res = await Coop.create({ |
||||
|
coop_name, |
||||
|
coop_cage_number, |
||||
|
chicken_number, |
||||
|
house_id, |
||||
|
}); |
||||
|
return res ? res.dataValues : null; |
||||
|
} |
||||
|
|
||||
|
async getCoopByNameAndHouseId(coop_name, house_id) { |
||||
|
const whereOpt = {}; |
||||
|
coop_name && Object.assign(whereOpt, { coop_name }); |
||||
|
house_id && Object.assign(whereOpt, { house_id }); |
||||
|
const res = await Coop.findOne({ |
||||
|
where: whereOpt, |
||||
|
}); |
||||
|
return res ? res.dataValues : null; |
||||
|
} |
||||
|
|
||||
|
async updateCoop(coop_name, coop_cage_number, chicken_number, house_id, id) { |
||||
|
const res = await Coop.update( |
||||
|
{ |
||||
|
coop_name, |
||||
|
coop_cage_number, |
||||
|
chicken_number, |
||||
|
house_id, |
||||
|
}, |
||||
|
{ |
||||
|
where: { |
||||
|
id, |
||||
|
}, |
||||
|
} |
||||
|
); |
||||
|
return res; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
module.exports = new CoopService(); |
Write
Preview
Loading…
Cancel
Save
Reference in new issue