diff --git a/src/controller/chicken.controller.js b/src/controller/chicken.controller.js new file mode 100644 index 0000000..80d3d8c --- /dev/null +++ b/src/controller/chicken.controller.js @@ -0,0 +1,42 @@ +const { + addChicken, + getChickenInfoById, +} = require("../service/chicken.service"); +const Response = require("../utils/response"); + +class ChickenController { + async add(ctx, next) { + const { + house_id, + coop_id, + put_time, + variety_id, + chicken_number, + chicken_day_life, + chicken_counter_balance, + factory_id, + } = ctx.request.body; + const { id: log_user_id } = ctx.state.user; + const res = await addChicken( + house_id, + coop_id, + put_time, + variety_id, + chicken_number, + chicken_day_life, + chicken_counter_balance, + factory_id, + log_user_id + ); + ctx.body = Response(0, "新进记录成功", res); + } + + async info(ctx, next) { + const { id } = ctx.request.query; + const { name: log_name } = ctx.state.user; + const res = await getChickenInfoById(id, log_name); + ctx.body = Response(0, "查询单个新进记录成功", res); + } +} + +module.exports = new ChickenController(); diff --git a/src/controller/factory.controller.js b/src/controller/factory.controller.js new file mode 100644 index 0000000..0e2de30 --- /dev/null +++ b/src/controller/factory.controller.js @@ -0,0 +1,11 @@ +const { getAllFactory } = require("../service/factory.service"); +const Response = require("../utils/response"); + +class FactoryController { + async list(ctx, next) { + const res = await getAllFactory(); + ctx.body = Response(0, "获取鸡苗厂家成功", res); + } +} + +module.exports = new FactoryController(); diff --git a/src/controller/variety.controller.js b/src/controller/variety.controller.js new file mode 100644 index 0000000..9512d17 --- /dev/null +++ b/src/controller/variety.controller.js @@ -0,0 +1,11 @@ +const { getAllVariety } = require("../service/variety.service"); +const Response = require("../utils/response"); + +class VarietyController { + async list(ctx, next) { + const res = await getAllVariety(); + ctx.body = Response(0, "获取鸡苗品种成功", res); + } +} + +module.exports = new VarietyController(); diff --git a/src/model/chicken.model.js b/src/model/chicken.model.js index 97ba97a..13f2b22 100644 --- a/src/model/chicken.model.js +++ b/src/model/chicken.model.js @@ -15,6 +15,12 @@ const Chicken = seq.define("chicken_chicken", { allowNull: false, comment: "鸡舍id, 可多选", }, + put_time: { + type: DataTypes.DATE, + allowNull: false, + defaultValue: DataTypes.NOW, + comment: "进鸡时间", + }, variety_id: { type: DataTypes.INTEGER, allowNull: false, diff --git a/src/router/chicken.route.js b/src/router/chicken.route.js new file mode 100644 index 0000000..6b1b439 --- /dev/null +++ b/src/router/chicken.route.js @@ -0,0 +1,13 @@ +const Router = require("koa-router"); + +const router = new Router({ prefix: "/chicken" }); + +const { auth, hasAdminPermission } = require("../middleware/auth.middleware"); +const { add, info } = require("../controller/chicken.controller"); + +router.post("/add", auth, add); + +// 根据id获取新进鸡苗记录详情。 +router.get("/info", auth, info); + +module.exports = router; diff --git a/src/router/factory.route.js b/src/router/factory.route.js new file mode 100644 index 0000000..c303259 --- /dev/null +++ b/src/router/factory.route.js @@ -0,0 +1,10 @@ +const Router = require("koa-router"); + +const router = new Router({ prefix: "/factory" }); + +const { auth } = require("../middleware/auth.middleware"); +const { list } = require("../controller/factory.controller"); + +router.get("/list", auth, list); + +module.exports = router; diff --git a/src/router/variety.model.js b/src/router/variety.model.js new file mode 100644 index 0000000..018e2ab --- /dev/null +++ b/src/router/variety.model.js @@ -0,0 +1,10 @@ +const Router = require("koa-router"); + +const router = new Router({ prefix: "/variety" }); + +const { auth } = require("../middleware/auth.middleware"); +const { list } = require("../controller/variety.controller"); + +router.get("/list", auth, list); + +module.exports = router; diff --git a/src/service/account.service.js b/src/service/account.service.js index 895ad2c..0912bd8 100644 --- a/src/service/account.service.js +++ b/src/service/account.service.js @@ -9,13 +9,14 @@ class AccountService { return res.dataValues; } - async getAccountInfo({ id, username, role }) { + async getAccountInfo({ id, username, role, name }) { const whereOpt = {}; id && Object.assign(whereOpt, { id }); username && Object.assign(whereOpt, { username }); role && Object.assign(whereOpt, { role }); + name && Object.assign(whereOpt, { name }); const res = await Account.findOne({ - attributes: ["id", "username", "role", "name"], + attributes: ["id", "username", "role", "name", "password"], where: whereOpt, }); return res ? res.dataValues : null; diff --git a/src/service/chicken.service.js b/src/service/chicken.service.js new file mode 100644 index 0000000..b24d48a --- /dev/null +++ b/src/service/chicken.service.js @@ -0,0 +1,59 @@ +const Chicken = require("../model/chicken.model"); +const { generateSerialNumber } = require("../utils/common"); +const { getHouseById } = require("./house.service"); +const { getFactoryById } = require("./factory.service"); +const { getVarietyById } = require("./variety.service"); +const { getBatchCoopByIds } = require("./coop.service"); +class ChickenService { + async addChicken( + house_id, + coop_id, + put_time, + variety_id, + chicken_number, + chicken_day_life, + chicken_counter_balance, + factory_id, + log_user_id + ) { + const batch_number = generateSerialNumber(); + const res = await Chicken.create({ + house_id, + coop_id: coop_id.join(","), + put_time, + variety_id, + chicken_number, + chicken_day_life, + chicken_counter_balance, + factory_id, + log_user_id, + batch_number, + }); + console.log(res); + return res ? res.dataValues : null; + } + + async getChickenInfoById(id, log_name) { + const res = await Chicken.findOne({ + where: { + id, + }, + }); + if (res) { + const someId = res.dataValues; + const houseInfo = await getHouseById(someId.house_id); + const factoryName = await getFactoryById(someId.factory_id); + const varietyName = await getVarietyById(someId.variety_id); + const allCoops = await getBatchCoopByIds(someId.coop_id.split(",")); + someId.houseName = houseInfo.house_name; + someId.log_name = log_name; + someId.factoryName = factoryName; + someId.varietyName = varietyName; + someId.allCoops = allCoops; + return someId; + } + return null; + } +} + +module.exports = new ChickenService(); diff --git a/src/service/coop.service.js b/src/service/coop.service.js index e8e2758..d9f5934 100644 --- a/src/service/coop.service.js +++ b/src/service/coop.service.js @@ -1,3 +1,4 @@ +const { Op } = require("sequelize"); const Coop = require("../model/coop.model"); const { getHouseById } = require("./house.service"); class CoopService { @@ -46,6 +47,18 @@ class CoopService { return null; } + async getBatchCoopByIds(ids) { + const res = await Coop.findAll({ + where: { + id: { + [Op.in]: ids, + }, + }, + }); + const arr = res.map((item) => item.dataValues); + return arr; + } + async updateCoop(coop_name, coop_cage_number, chicken_number, house_id, id) { const res = await Coop.update( { diff --git a/src/service/factory.service.js b/src/service/factory.service.js new file mode 100644 index 0000000..463fde4 --- /dev/null +++ b/src/service/factory.service.js @@ -0,0 +1,19 @@ +const Factory = require("../model/factory.model"); +class FactoryService { + async getAllFactory() { + const res = await Factory.findAll(); + const arr = res.map((item) => item.dataValues); + return arr; + } + + async getFactoryById(id) { + const whereOpt = {}; + id && Object.assign(whereOpt, { id }); + const res = await Factory.findOne({ + where: whereOpt, + }); + return res ? res.dataValues : null; + } +} + +module.exports = new FactoryService(); diff --git a/src/service/variety.service.js b/src/service/variety.service.js new file mode 100644 index 0000000..d7debd2 --- /dev/null +++ b/src/service/variety.service.js @@ -0,0 +1,19 @@ +const Variety = require("../model/variety.model"); +class VarietyService { + async getAllVariety() { + const res = await Variety.findAll(); + const arr = res.map((item) => item.dataValues); + return arr; + } + + async getVarietyById(id) { + const whereOpt = {}; + id && Object.assign(whereOpt, { id }); + const res = await Variety.findOne({ + where: whereOpt, + }); + return res ? res.dataValues : null; + } +} + +module.exports = new VarietyService(); diff --git a/src/test/someFunc.js b/src/test/someFunc.js new file mode 100644 index 0000000..a127df3 --- /dev/null +++ b/src/test/someFunc.js @@ -0,0 +1,14 @@ +function generateSerialNumber() { + const now = new Date(); + const year = now.getFullYear(); //得到年份 + const month = now.getMonth() + 1; //得到月份 + const date = now.getDate(); //得到日期 + const hour = now.getHours(); //得到小时数 + const minute = now.getMinutes(); //得到分钟数 + const second = now.getSeconds(); //得到秒数 + const time = now.getTime(); + return `${year}${month}${date}${hour}${minute}${second}${time}`; +} + +const res = generateSerialNumber(); +console.log(res); diff --git a/src/utils/common.js b/src/utils/common.js index 3241472..dd4defa 100644 --- a/src/utils/common.js +++ b/src/utils/common.js @@ -7,6 +7,19 @@ function isJsonString(str) { return true; } +function generateSerialNumber() { + const now = new Date(); + const year = now.getFullYear(); //得到年份 + const month = now.getMonth() + 1; //得到月份 + const date = now.getDate(); //得到日期 + const hour = now.getHours(); //得到小时数 + const minute = now.getMinutes(); //得到分钟数 + const second = now.getSeconds(); //得到秒数 + const time = now.getTime(); + return `${year}${month}${date}${hour}${minute}${second}${time}`; +} + module.exports = { isJsonString, + generateSerialNumber, };