From 577eae6dfd9bc7a902ade134cca01389134b4ebd Mon Sep 17 00:00:00 2001 From: maochaoying <925670706@qq.com> Date: Tue, 21 Mar 2023 14:12:02 +0800 Subject: [PATCH] 123 --- src/constant/err.type.js | 1 + src/controller/coop.controller.js | 41 ++++++++++++++++++++++++++++++ src/controller/house.controller.js | 24 +++++++++--------- src/middleware/coop.middleware.js | 15 +++++++++++ src/model/coop.model.js | 32 +++++++++++++++++++++++ src/router/coop.route.js | 15 +++++++++++ src/service/coop.service.js | 52 ++++++++++++++++++++++++++++++++++++++ 7 files changed, 168 insertions(+), 12 deletions(-) create mode 100644 src/controller/coop.controller.js create mode 100644 src/middleware/coop.middleware.js create mode 100644 src/model/coop.model.js create mode 100644 src/router/coop.route.js create mode 100644 src/service/coop.service.js diff --git a/src/constant/err.type.js b/src/constant/err.type.js index 9719a3b..210512a 100644 --- a/src/constant/err.type.js +++ b/src/constant/err.type.js @@ -12,4 +12,5 @@ module.exports = { noAuthorization: Response("40002", "Authorization头部为空"), noAdminPermission: Response("40003", "没有超级管理员权限"), houseNameAlreadyExisted: Response("50001", "鸡厂名称已存在"), + coopNameAlreadyExisted: Response("50002", "鸡舍名称重复"), }; diff --git a/src/controller/coop.controller.js b/src/controller/coop.controller.js new file mode 100644 index 0000000..4bb4a6f --- /dev/null +++ b/src/controller/coop.controller.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(); diff --git a/src/controller/house.controller.js b/src/controller/house.controller.js index 4f959a2..6267a7a 100644 --- a/src/controller/house.controller.js +++ b/src/controller/house.controller.js @@ -2,27 +2,27 @@ const { getHouseListById, createHouse, updateHouse, -} = require("../service/house.service"); -const Response = require("../utils/response"); +} = require('../service/house.service') +const Response = require('../utils/response') class HouseController { async list(ctx, next) { - const { belong } = ctx.request.query; - const res = await getHouseListById(belong); - ctx.body = Response(0, "查询鸡厂列表成功", res); + const { id: belong } = ctx.state.user + const res = await getHouseListById(belong) + ctx.body = Response(0, '查询鸡厂列表成功', res) } async create(ctx, next) { - const { belong, house_name, area } = ctx.request.body; - const res = await createHouse(belong, house_name, area); - ctx.body = Response(0, "新增鸡厂成功", res); + const { belong, house_name, area } = ctx.request.body + const res = await createHouse(belong, house_name, area) + ctx.body = Response(0, '新增鸡厂成功', res) } async update(ctx, next) { - const { belong, house_name, area, id } = ctx.request.body; - const res = await updateHouse(belong, house_name, area, id); - ctx.body = Response(0, "更新鸡厂信息成功", res); + const { belong, house_name, area, id } = ctx.request.body + const res = await updateHouse(belong, house_name, area, id) + ctx.body = Response(0, '更新鸡厂信息成功', res) } } -module.exports = new HouseController(); +module.exports = new HouseController() diff --git a/src/middleware/coop.middleware.js b/src/middleware/coop.middleware.js new file mode 100644 index 0000000..e2c60f0 --- /dev/null +++ b/src/middleware/coop.middleware.js @@ -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, +}; diff --git a/src/model/coop.model.js b/src/model/coop.model.js new file mode 100644 index 0000000..28c3110 --- /dev/null +++ b/src/model/coop.model.js @@ -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; diff --git a/src/router/coop.route.js b/src/router/coop.route.js new file mode 100644 index 0000000..7d67ceb --- /dev/null +++ b/src/router/coop.route.js @@ -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; diff --git a/src/service/coop.service.js b/src/service/coop.service.js new file mode 100644 index 0000000..bc77bd2 --- /dev/null +++ b/src/service/coop.service.js @@ -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();