From d186f2029cf5d9ed2879e3fa8cae720df6d870e0 Mon Sep 17 00:00:00 2001 From: maochaoying <925670706@qq.com> Date: Tue, 21 Mar 2023 11:10:30 +0800 Subject: [PATCH] house --- src/constant/err.type.js | 1 + src/controller/account.controller.js | 8 ++++-- src/controller/house.controller.js | 28 ++++++++++++++++++++ src/middleware/house.middleware.js | 15 +++++++++++ src/router/house.route.js | 16 ++++++++++++ src/service/house.service.js | 50 ++++++++++++++++++++++++++++++++++++ 6 files changed, 116 insertions(+), 2 deletions(-) create mode 100644 src/controller/house.controller.js create mode 100644 src/middleware/house.middleware.js create mode 100644 src/router/house.route.js create mode 100644 src/service/house.service.js diff --git a/src/constant/err.type.js b/src/constant/err.type.js index ea3b225..9719a3b 100644 --- a/src/constant/err.type.js +++ b/src/constant/err.type.js @@ -11,4 +11,5 @@ module.exports = { tokenExpiredError: Response("40001", "token已经过期"), noAuthorization: Response("40002", "Authorization头部为空"), noAdminPermission: Response("40003", "没有超级管理员权限"), + houseNameAlreadyExisted: Response("50001", "鸡厂名称已存在"), }; diff --git a/src/controller/account.controller.js b/src/controller/account.controller.js index 0a01f76..1dc32e6 100644 --- a/src/controller/account.controller.js +++ b/src/controller/account.controller.js @@ -10,9 +10,13 @@ const { class AccountController { async register(ctx, next) { - const { username, password } = ctx.request.body; + const { username, password, role } = ctx.request.body; try { - const res = await createAccount(username, password, 0); + const res = await createAccount( + username, + password, + role == "1" ? role : "0" + ); ctx.body = Response(0, "用户注册成功", { id: res.id, username: res.username, diff --git a/src/controller/house.controller.js b/src/controller/house.controller.js new file mode 100644 index 0000000..4f959a2 --- /dev/null +++ b/src/controller/house.controller.js @@ -0,0 +1,28 @@ +const { + getHouseListById, + createHouse, + updateHouse, +} = 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); + } + + 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); + } + + 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); + } +} + +module.exports = new HouseController(); diff --git a/src/middleware/house.middleware.js b/src/middleware/house.middleware.js new file mode 100644 index 0000000..fb62c18 --- /dev/null +++ b/src/middleware/house.middleware.js @@ -0,0 +1,15 @@ +const { getHouseByName } = require("../service/house.service"); +const { houseNameAlreadyExisted } = require("../constant/err.type"); + +const verifyHouseExisted = async (ctx, next) => { + const { house_name } = ctx.request.body; + if (await getHouseByName(house_name)) { + ctx.app.emit("error", houseNameAlreadyExisted, ctx); + return; + } + await next(); +}; + +module.exports = { + verifyHouseExisted, +}; diff --git a/src/router/house.route.js b/src/router/house.route.js new file mode 100644 index 0000000..e534585 --- /dev/null +++ b/src/router/house.route.js @@ -0,0 +1,16 @@ +const Router = require("koa-router"); + +const router = new Router({ prefix: "/house" }); + +const { auth, hasAdminPermission } = require("../middleware/auth.middleware"); +const { verifyHouseExisted } = require("../middleware/house.middleware"); +const { list, create, update } = require("../controller/house.controller"); + +// 查询某厂主的鸡场信息 +router.get("/list", auth, list); + +router.post("/create", auth, hasAdminPermission, verifyHouseExisted, create); + +router.post("/update", auth, hasAdminPermission, update); + +module.exports = router; diff --git a/src/service/house.service.js b/src/service/house.service.js new file mode 100644 index 0000000..0dd7d18 --- /dev/null +++ b/src/service/house.service.js @@ -0,0 +1,50 @@ +const House = require("../model/house.model"); +class HouseService { + async getHouseListById(belong) { + const res = await House.findAll({ + where: { + belong, + }, + }); + + const arr = res.map((item) => item.dataValues); + // 根据belong 查询用户信息并拼接 + return arr; + } + + async createHouse(belong, house_name, area) { + const res = await House.create({ + belong, + house_name, + area, + }); + return res ? res.dataValues : null; + } + + async getHouseByName(house_name) { + const whereOpt = {}; + house_name && Object.assign(whereOpt, { house_name }); + const res = await House.findOne({ + where: whereOpt, + }); + return res ? res.dataValues : null; + } + + async updateHouse(belong, house_name, area, id) { + const res = await House.update( + { + belong, + house_name, + area, + }, + { + where: { + id, + }, + } + ); + return res; + } +} + +module.exports = new HouseService();