maochaoying 2 years ago
parent
commit
55e3f7b9e5
  1. 3
      src/constant/err.type.js
  2. 1
      src/controller/reason.controller.js
  3. 5
      src/db/seq.js
  4. 15
      src/middleware/factory.middleware.js
  5. 15
      src/middleware/reason.middleware.js
  6. 15
      src/middleware/variety.middleware.js
  7. 6
      src/model/coop.model.js
  8. 3
      src/router/factory.route.js
  9. 3
      src/router/reason.route.js
  10. 3
      src/router/variety.route.js
  11. 7
      src/service/chicken.service.js
  12. 16
      src/service/coop.service.js
  13. 9
      src/service/factory.service.js
  14. 9
      src/service/reason.service.js
  15. 9
      src/service/variety.service.js

3
src/constant/err.type.js

@ -13,4 +13,7 @@ module.exports = {
noAdminPermission: Response("40003", "没有超级管理员权限"), noAdminPermission: Response("40003", "没有超级管理员权限"),
houseNameAlreadyExisted: Response("50001", "鸡厂名称已存在"), houseNameAlreadyExisted: Response("50001", "鸡厂名称已存在"),
coopNameAlreadyExisted: Response("50002", "鸡舍名称重复"), coopNameAlreadyExisted: Response("50002", "鸡舍名称重复"),
varietyNameAlreadyExisted: Response("50003", "鸡苗品种名称重复"),
varietyReasonNameAlreadyExisted: Response("50004", "死亡原因名称重复"),
factoryNameAlreadyExisted: Response("50005", "鸡苗厂家名称重复"),
}; };

1
src/controller/reason.controller.js

@ -4,7 +4,6 @@ const {
addDieReason, addDieReason,
} = require("../service/reason.service"); } = require("../service/reason.service");
const Response = require("../utils/response"); const Response = require("../utils/response");
class ReasonController { class ReasonController {
async list(ctx, next) { async list(ctx, next) {
const res = await getAllReason(); const res = await getAllReason();

5
src/db/seq.js

@ -1,5 +1,10 @@
const { Sequelize } = require("sequelize"); const { Sequelize } = require("sequelize");
// Sequelize 支持两种使用事务的方式:
// 非托管事务:  提交和回滚事务应该手动完成(通过调用适当的 Sequelize 方法)
// 托管事务: 如果抛出任何错误, Sequelize 将会自动回滚事务, 否则将提交事务, 另外,如果启用了CLS(连续本地存储), 则事务回调中的所有查询将自动接收事务对象
const { const {
MYSQL_HOST, MYSQL_HOST,
MYSQL_PORT, MYSQL_PORT,

15
src/middleware/factory.middleware.js

@ -0,0 +1,15 @@
const { getFactoryByName } = require("../service/factory.service");
const { factoryNameAlreadyExisted } = require("../constant/err.type");
const verifyFactoryExisted = async (ctx, next) => {
const { factory_name } = ctx.request.body;
if (await getFactoryByName(factory_name)) {
ctx.app.emit("error", factoryNameAlreadyExisted, ctx);
return;
}
await next();
};
module.exports = {
verifyFactoryExisted,
};

15
src/middleware/reason.middleware.js

@ -0,0 +1,15 @@
const { getReasonByName } = require("../service/reason.service");
const { varietyReasonNameAlreadyExisted } = require("../constant/err.type");
const verifyReasonExisted = async (ctx, next) => {
const { reason_name } = ctx.request.body;
if (await getReasonByName(reason_name)) {
ctx.app.emit("error", varietyReasonNameAlreadyExisted, ctx);
return;
}
await next();
};
module.exports = {
verifyReasonExisted,
};

15
src/middleware/variety.middleware.js

@ -0,0 +1,15 @@
const { getVarietyByName } = require("../service/variety.service");
const { varietyNameAlreadyExisted } = require("../constant/err.type");
const verifyVarietyExisted = async (ctx, next) => {
const { variety_name } = ctx.request.body;
if (await getVarietyByName(variety_name)) {
ctx.app.emit("error", varietyNameAlreadyExisted, ctx);
return;
}
await next();
};
module.exports = {
verifyVarietyExisted,
};

6
src/model/coop.model.js

@ -24,6 +24,12 @@ const Coop = seq.define("chicken_coop", {
allowNull: false, allowNull: false,
comment: "所属鸡场id, 相当于外键", comment: "所属鸡场id, 相当于外键",
}, },
is_empty: {
type: DataTypes.BOOLEAN,
allowNull: false,
defaultValue: 1,
comment: "是否为空舍,1为空,0为非空",
},
}); });
// 强制同步数据库(创建数据表) // 强制同步数据库(创建数据表)

3
src/router/factory.route.js

@ -3,11 +3,12 @@ const Router = require("koa-router");
const router = new Router({ prefix: "/factory" }); const router = new Router({ prefix: "/factory" });
const { auth, hasAdminPermission } = require("../middleware/auth.middleware"); const { auth, hasAdminPermission } = require("../middleware/auth.middleware");
const { verifyFactoryExisted } = require("../middleware/factory.middleware");
const { list, add, deleteItem } = require("../controller/factory.controller"); const { list, add, deleteItem } = require("../controller/factory.controller");
router.get("/list", auth, list); router.get("/list", auth, list);
router.post("/add", auth, hasAdminPermission, add);
router.post("/add", auth, hasAdminPermission, verifyFactoryExisted, add);
router.post("/del", auth, hasAdminPermission, deleteItem); router.post("/del", auth, hasAdminPermission, deleteItem);

3
src/router/reason.route.js

@ -4,10 +4,11 @@ const router = new Router({ prefix: "/reason" });
const { auth, hasAdminPermission } = require("../middleware/auth.middleware"); const { auth, hasAdminPermission } = require("../middleware/auth.middleware");
const { list, add, deleteItem } = require("../controller/reason.controller"); const { list, add, deleteItem } = require("../controller/reason.controller");
const { verifyReasonExisted } = require("../middleware/reason.middleware");
router.get("/list", auth, list); router.get("/list", auth, list);
router.post("/add", auth, hasAdminPermission, add);
router.post("/add", auth, hasAdminPermission, verifyReasonExisted, add);
router.post("/del", auth, hasAdminPermission, deleteItem); router.post("/del", auth, hasAdminPermission, deleteItem);

3
src/router/variety.route.js

@ -3,11 +3,12 @@ const Router = require("koa-router");
const router = new Router({ prefix: "/variety" }); const router = new Router({ prefix: "/variety" });
const { auth, hasAdminPermission } = require("../middleware/auth.middleware"); const { auth, hasAdminPermission } = require("../middleware/auth.middleware");
const { verifyVarietyExisted } = require("../middleware/variety.middleware");
const { list, add, deleteItem } = require("../controller/variety.controller"); const { list, add, deleteItem } = require("../controller/variety.controller");
router.get("/list", auth, list); router.get("/list", auth, list);
router.post("/add", auth, hasAdminPermission, add);
router.post("/add", auth, hasAdminPermission, verifyVarietyExisted, add);
router.post("/del", auth, hasAdminPermission, deleteItem); router.post("/del", auth, hasAdminPermission, deleteItem);

7
src/service/chicken.service.js

@ -8,7 +8,10 @@ const {
const { getHouseById } = require("./house.service"); const { getHouseById } = require("./house.service");
const { getFactoryById } = require("./factory.service"); const { getFactoryById } = require("./factory.service");
const { getVarietyById } = require("./variety.service"); const { getVarietyById } = require("./variety.service");
const { getBatchCoopByIds } = require("./coop.service");
const {
getBatchCoopByIds,
batchUpdateCoopStatusByIds,
} = require("./coop.service");
const { getAccountInfo } = require("./account.service"); const { getAccountInfo } = require("./account.service");
const { getTotalFeedingByCoopId } = require("./feeding.service"); const { getTotalFeedingByCoopId } = require("./feeding.service");
const { Op, Sequelize } = require("sequelize"); const { Op, Sequelize } = require("sequelize");
@ -41,6 +44,8 @@ class ChickenService {
batch_number, batch_number,
real_life_init_time, real_life_init_time,
}); });
// 新进鸡苗后需要将进入的鸡舍状态变为非空舍
const coopRes = await batchUpdateCoopStatusByIds(coop_id, 0);
return res ? res.dataValues : null; return res ? res.dataValues : null;
} }

16
src/service/coop.service.js

@ -61,6 +61,22 @@ class CoopService {
return arr; return arr;
} }
async batchUpdateCoopStatusByIds(ids, status) {
const res = await Coop.update(
{
is_empty: status,
},
{
where: {
id: {
[Op.in]: ids,
},
},
}
);
return res;
}
async updateCoop(coop_name, coop_cage_number, chicken_number, house_id, id) { async updateCoop(coop_name, coop_cage_number, chicken_number, house_id, id) {
const res = await Coop.update( const res = await Coop.update(
{ {

9
src/service/factory.service.js

@ -23,6 +23,15 @@ class FactoryService {
return res?.dataValues; return res?.dataValues;
} }
async getFactoryByName(factory_name) {
const whereOpt = {};
factory_name && Object.assign(whereOpt, { factory_name });
const res = await Factory.findOne({
where: whereOpt,
});
return res ? res.dataValues : null;
}
async deleteFactoryById(id) { async deleteFactoryById(id) {
const res = await Factory.destroy({ const res = await Factory.destroy({
where: { where: {

9
src/service/reason.service.js

@ -22,6 +22,15 @@ class ReasonService {
return res?.dataValues; return res?.dataValues;
} }
async getReasonByName(reason_name) {
const whereOpt = {};
reason_name && Object.assign(whereOpt, { reason_name });
const res = await Reason.findOne({
where: whereOpt,
});
return res ? res.dataValues : null;
}
async deleteReasonById(id) { async deleteReasonById(id) {
const res = await Reason.destroy({ const res = await Reason.destroy({
where: { where: {

9
src/service/variety.service.js

@ -15,6 +15,15 @@ class VarietyService {
return res ? res.dataValues : null; return res ? res.dataValues : null;
} }
async getVarietyByName(variety_name) {
const whereOpt = {};
variety_name && Object.assign(whereOpt, { variety_name });
const res = await Variety.findOne({
where: whereOpt,
});
return res ? res.dataValues : null;
}
async addVariety(variety_name) { async addVariety(variety_name) {
const res = await Variety.create({ const res = await Variety.create({
variety_name, variety_name,

Loading…
Cancel
Save