const express = require('express'); const _ = require('lodash'); const { query, body } = require('express-validator'); const { onSuccess, fill } = require('../../../utils'); const { limit } = require('../../config'); const check = require('../../../middleware/check'); const Project = require('../../../db/models/project'); const Area = require('../../../db/models/area'); const router = express.Router(); async function fillSingle(data) { const { cityId, provinceId, regionId } = data; const [cItem, pItem, rItem] = await Promise.all([ Area.findOne({ where: { id: cityId } }), Area.findOne({ where: { id: provinceId } }), Area.findOne({ where: { id: regionId } }), ]); data.cityName = cItem.name; data.provinceName = pItem.name; data.regionName = rItem.name; return data; } /** * showdoc * @catalog v1/商家/审定核证机构项目 * @title 审定核证机构项目列表 * @description 审定核证机构项目列表接口 * @method GET * @url /master/project/ * @param page 0 Int 页码: 不传默认取第1页数据,每页20条数据 * @return {"code":0, "count":1, "data": []} * @return_param id integer id * @return_param name string 项目名称 * @return_param cityId integer 城市ID * @return_param provinceId integer 省ID * @return_param regionId integer 区域ID * @return_param extent decimal 项目区域面积 * @return_param sCount integer 样地数 * @return_param conclusion string 结论内容 * @return_param field decimal 实地监测碳减量 * @return_param satellite decimal 卫星监测碳减量 * @return_param boundary json 上传项目边界 * @return_param landUse json 上传土地利用情况 * @return_param plant json 植物净初级生产力 * @return_param turn json 碳逆转风险监测 * @return_param adapt json 适应性条件检查 * @return_param extra json 额外性论证检查 * @return_param sampleResult json 样地抽样结果 * @return_param reservesResult json 碳储量监测结果 * @return_param contrast json 对比数据上传 * @return_param reservesExtent json 单位面积碳储量 * @return_param reserves json 碳储量 * @return_param cityName string 城市名称 * @return_param provinceName string 省名称 * @return_param regionName string 区名称 * @return_param createdAt date - * @return_param updatedAt date - * @remark * @number */ router.get('/', async (req, res) => { const { page = 0 } = req.query; const where = _.omit(req.query, ['page']); const info = onSuccess(); info.data = await Project.findAll({ where, limit, offset: page * limit }); info.data = await fill(info.data, fillSingle); if (!page) { info.count = await Project.count({ where }); } res.send(info); }); /** * showdoc * @catalog v1/商家/审定核证机构项目 * @title 审定核证机构项目详情 * @description * @method GET * @url /master/project/:id * @param :id 1 STRING 详情ID * @return {"code":0, "data": {}} * @return_param id integer id * @return_param name string 项目名称 * @return_param cityId integer 城市ID * @return_param provinceId integer 省ID * @return_param regionId integer 区域ID * @return_param extent decimal 项目区域面积 * @return_param sCount integer 样地数 * @return_param conclusion string 结论内容 * @return_param field decimal 实地监测碳减量 * @return_param satellite decimal 卫星监测碳减量 * @return_param boundary json 上传项目边界 * @return_param landUse json 上传土地利用情况 * @return_param plant json 植物净初级生产力 * @return_param turn json 碳逆转风险监测 * @return_param adapt json 适应性条件检查 * @return_param extra json 额外性论证检查 * @return_param sampleResult json 样地抽样结果 * @return_param reservesResult json 碳储量监测结果 * @return_param contrast json 对比数据上传 * @return_param reservesExtent json 单位面积碳储量 * @return_param reserves json 碳储量 * @return_param cityName string 城市名称 * @return_param provinceName string 省名称 * @return_param regionName string 区名称 * @return_param createdAt date - * @return_param updatedAt date - * @remark * @number */ router.get('/:id', async (req, res) => { let data = await Project.findOne({ where: req.params }); data = await fill(data, fillSingle); res.send(onSuccess(data)); }); module.exports = router;