project.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. const express = require('express');
  2. const _ = require('lodash');
  3. const { query, body } = require('express-validator');
  4. const { onSuccess, fill } = require('../../../utils');
  5. const { limit } = require('../../config');
  6. const check = require('../../../middleware/check');
  7. const Project = require('../../../db/models/project');
  8. const Area = require('../../../db/models/area');
  9. const router = express.Router();
  10. async function fillSingle(data) {
  11. const { cityId, provinceId, regionId } = data;
  12. const [cItem, pItem, rItem] = await Promise.all([
  13. Area.findOne({ where: { id: cityId } }),
  14. Area.findOne({ where: { id: provinceId } }),
  15. Area.findOne({ where: { id: regionId } }),
  16. ]);
  17. data.cityName = cItem.name;
  18. data.provinceName = pItem.name;
  19. data.regionName = rItem.name;
  20. return data;
  21. }
  22. /**
  23. * showdoc
  24. * @catalog v1/商家/审定核证机构项目
  25. * @title 审定核证机构项目列表
  26. * @description 审定核证机构项目列表接口
  27. * @method GET
  28. * @url /master/project/
  29. * @param page 0 Int 页码: 不传默认取第1页数据,每页20条数据
  30. * @return {"code":0, "count":1, "data": []}
  31. * @return_param id integer id
  32. * @return_param name string 项目名称
  33. * @return_param cityId integer 城市ID
  34. * @return_param provinceId integer 省ID
  35. * @return_param regionId integer 区域ID
  36. * @return_param extent decimal 项目区域面积
  37. * @return_param sCount integer 样地数
  38. * @return_param conclusion string 结论内容
  39. * @return_param field decimal 实地监测碳减量
  40. * @return_param satellite decimal 卫星监测碳减量
  41. * @return_param boundary json 上传项目边界
  42. * @return_param landUse json 上传土地利用情况
  43. * @return_param plant json 植物净初级生产力
  44. * @return_param turn json 碳逆转风险监测
  45. * @return_param adapt json 适应性条件检查
  46. * @return_param extra json 额外性论证检查
  47. * @return_param sampleResult json 样地抽样结果
  48. * @return_param reservesResult json 碳储量监测结果
  49. * @return_param contrast json 对比数据上传
  50. * @return_param reservesExtent json 单位面积碳储量
  51. * @return_param reserves json 碳储量
  52. * @return_param cityName string 城市名称
  53. * @return_param provinceName string 省名称
  54. * @return_param regionName string 区名称
  55. * @return_param createdAt date -
  56. * @return_param updatedAt date -
  57. * @remark
  58. * @number
  59. */
  60. router.get('/', async (req, res) => {
  61. const { page = 0 } = req.query;
  62. const where = _.omit(req.query, ['page']);
  63. const info = onSuccess();
  64. info.data = await Project.findAll({ where, limit, offset: page * limit });
  65. info.data = await fill(info.data, fillSingle);
  66. if (!page) {
  67. info.count = await Project.count({ where });
  68. }
  69. res.send(info);
  70. });
  71. /**
  72. * showdoc
  73. * @catalog v1/商家/审定核证机构项目
  74. * @title 审定核证机构项目详情
  75. * @description
  76. * @method GET
  77. * @url /master/project/:id
  78. * @param :id 1 STRING 详情ID
  79. * @return {"code":0, "data": {}}
  80. * @return_param id integer id
  81. * @return_param name string 项目名称
  82. * @return_param cityId integer 城市ID
  83. * @return_param provinceId integer 省ID
  84. * @return_param regionId integer 区域ID
  85. * @return_param extent decimal 项目区域面积
  86. * @return_param sCount integer 样地数
  87. * @return_param conclusion string 结论内容
  88. * @return_param field decimal 实地监测碳减量
  89. * @return_param satellite decimal 卫星监测碳减量
  90. * @return_param boundary json 上传项目边界
  91. * @return_param landUse json 上传土地利用情况
  92. * @return_param plant json 植物净初级生产力
  93. * @return_param turn json 碳逆转风险监测
  94. * @return_param adapt json 适应性条件检查
  95. * @return_param extra json 额外性论证检查
  96. * @return_param sampleResult json 样地抽样结果
  97. * @return_param reservesResult json 碳储量监测结果
  98. * @return_param contrast json 对比数据上传
  99. * @return_param reservesExtent json 单位面积碳储量
  100. * @return_param reserves json 碳储量
  101. * @return_param cityName string 城市名称
  102. * @return_param provinceName string 省名称
  103. * @return_param regionName string 区名称
  104. * @return_param createdAt date -
  105. * @return_param updatedAt date -
  106. * @remark
  107. * @number
  108. */
  109. router.get('/:id', async (req, res) => {
  110. let data = await Project.findOne({ where: req.params });
  111. data = await fill(data, fillSingle);
  112. res.send(onSuccess(data));
  113. });
  114. module.exports = router;