diff --git a/src/controller/feeding.controller.js b/src/controller/feeding.controller.js new file mode 100644 index 0000000..bbd82eb --- /dev/null +++ b/src/controller/feeding.controller.js @@ -0,0 +1,18 @@ +const { getAllFeeding, addFeeding } = require("../service/feeding.service"); +const Response = require("../utils/response"); + +class FeedingController { + async list(ctx, next) { + const { coop_id } = ctx.request.query; + const res = await getAllFeeding(coop_id); + ctx.body = Response(0, "获取饲喂记录成功", res); + } + + async add(ctx, next) { + const { coop_id, feeding, water_intake } = ctx.request.body; + const res = await addFeeding(coop_id, feeding, water_intake); + ctx.body = Response(0, "增加饲喂记录成功", res); + } +} + +module.exports = new FeedingController(); diff --git a/src/router/feeding.route.js b/src/router/feeding.route.js new file mode 100644 index 0000000..90143d5 --- /dev/null +++ b/src/router/feeding.route.js @@ -0,0 +1,12 @@ +const Router = require("koa-router"); + +const router = new Router({ prefix: "/feeding" }); + +const { auth } = require("../middleware/auth.middleware"); +const { list, add } = require("../controller/feeding.controller"); + +router.get("/list", auth, list); + +router.post("/add", auth, add); + +module.exports = router; diff --git a/src/service/feeding.service.js b/src/service/feeding.service.js new file mode 100644 index 0000000..703eefd --- /dev/null +++ b/src/service/feeding.service.js @@ -0,0 +1,48 @@ +const moment = require("moment"); +const Feeding = require("../model/feeding.model"); +class FeedingService { + async getAllFeeding(coop_id) { + const res = await Feeding.findAll({ + where: { + coop_id, + }, + }); + const arr = res.map((item) => item.dataValues); + // 进行归类 根据时间 + let obj = {}; + arr.map((item) => { + const time = moment(item.createdAt).format("YYYY-MM-DD"); + if (obj[time]) { + // 需要添加进list + obj[time] = { + feedingList: obj[time].feedingList + parseInt(item.feeding), + waterIntakeList: + obj[time].waterIntakeList + parseInt(item.water_intake), + }; + } else { + obj[time] = { + feedingList: parseInt(item.feeding), + waterIntakeList: parseInt(item.water_intake), + }; + } + }); + return { + list: arr, + echarts: { + xData: Object.keys(obj), + yData: Object.values(obj), + }, + }; + } + + async addFeeding(coop_id, feeding, water_intake) { + const res = await Feeding.create({ + coop_id, + feeding, + water_intake, + }); + return res ? res.dataValues : null; + } +} + +module.exports = new FeedingService();