mm.config.js 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. const api = require(`./api/index.js`)
  2. const { wrapApiData } = require(`./util.js`)
  3. /**
  4. * 配置说明请参考文档:
  5. * https://hongqiye.com/doc/mockm/config/option.html
  6. * @type {import('mockm/@types/config').Config}
  7. */
  8. module.exports = async (util) => {
  9. const joi = await util.tool.generate.initPackge(`joi`)
  10. return {
  11. plugin: [util.plugin.validate, util.plugin.apiDoc],
  12. guard: false,
  13. port: 8100,
  14. testPort: 8105,
  15. replayPort: 8101,
  16. watch: [`./api/`],
  17. proxy: {
  18. '/': `http://www.httpbin.org/`, // 后端接口主域
  19. '/anything/intercept': [`origin`, `127.0.0.1`], // 修改接口返回的数据
  20. },
  21. api: {
  22. // 在其他文件里的 api
  23. ...api(util).api,
  24. 'get /api/currentWeather': util.side({
  25. tags: [`公用`],
  26. summary: `当前天气`,
  27. async action(req, res) {
  28. res.json(
  29. wrapApiData(
  30. util.libObj.mockjs.mock({
  31. data: {
  32. 温度: `@integer(0, 40)`,
  33. 天气: `@pick(多云, 少云, 晴, 雨, 雪, 雾, 暴雨)`,
  34. },
  35. })
  36. )
  37. )
  38. },
  39. }),
  40. 'get /api/realTimeStatistics': util.side({
  41. tags: [`综合总览`],
  42. summary: `实时统计`,
  43. async action(req, res) {
  44. res.json(
  45. wrapApiData(
  46. util.libObj.mockjs.mock({
  47. data: {
  48. 目标完成率: `@integer(0, 100)`,
  49. 年移栽数量: `@integer(9, 9e4)`,
  50. 年移栽面积: `@integer(9, 9e4)`,
  51. 移载区域数: `@integer(9, 9e4)`,
  52. 烟农数量: `@integer(9, 9e4)`,
  53. },
  54. })
  55. )
  56. )
  57. },
  58. }),
  59. 'get /api/analysisOfTransplantYieldInVariousRegions': util.side({
  60. tags: [`综合总览`],
  61. summary: `各区域移栽产量分析`,
  62. async action(req, res) {
  63. res.json(
  64. wrapApiData(
  65. util.libObj.mockjs.mock({
  66. 'data|10': [
  67. {
  68. 名称: `@county`,
  69. 值: `@integer(0, 1000)`,
  70. },
  71. ],
  72. })
  73. )
  74. )
  75. },
  76. }),
  77. 'get /api/weatherForecast': util.side({
  78. tags: [`综合总览`],
  79. summary: `天气预报`,
  80. async action(req, res) {
  81. res.json(
  82. wrapApiData(
  83. util.libObj.mockjs.mock({
  84. 'data|24': [
  85. {
  86. '时间|+1': 0,
  87. 温度: `@integer(0, 40)`,
  88. 天气: `@pick(多云, 少云, 晴, 雨, 雪, 雾, 暴雨)`,
  89. },
  90. ],
  91. })
  92. )
  93. )
  94. },
  95. }),
  96. 'get /api/transplantAreaInEachRegion': util.side({
  97. tags: [`综合总览`],
  98. summary: `各区域移栽面积`,
  99. async action(req, res) {
  100. res.json(
  101. wrapApiData(
  102. util.libObj.mockjs.mock({
  103. 'data|10': [
  104. {
  105. 名称: `@county`,
  106. 今年: `@integer(0, 80)`,
  107. 去年: `@integer(0, 80)`,
  108. },
  109. ],
  110. })
  111. )
  112. )
  113. },
  114. }),
  115. 'get /api/analysisOfTransplantingSituation': util.side({
  116. tags: [`综合总览`],
  117. summary: `移栽情况分析`,
  118. async action(req, res) {
  119. res.json(
  120. wrapApiData(
  121. util.libObj.mockjs.mock({
  122. 'data|10': [
  123. {
  124. 名称: `@county`,
  125. 已移载: `@integer(9, 9e4)`,
  126. 未移栽: `@integer(9, 9e4)`,
  127. 比率() {
  128. return (this.已移载 / (this.已移载 + this.未移栽)) * 100
  129. },
  130. },
  131. ],
  132. })
  133. )
  134. )
  135. },
  136. }),
  137. 'get /api/transplantTrendAnalysis': util.side({
  138. tags: [`综合总览`],
  139. summary: `移栽趋势分析`,
  140. async action(req, res) {
  141. res.json(
  142. wrapApiData(
  143. util.libObj.mockjs.mock({
  144. 'data|31': [
  145. {
  146. '时间|+1': 1,
  147. 名称: `@county`,
  148. 今年: `@integer(0, 2000)`,
  149. 去年: `@integer(0, 2000)`,
  150. },
  151. ],
  152. })
  153. )
  154. )
  155. },
  156. }),
  157. // 当为基本数据类型时, 直接返回数据, 这个接口返回 {"msg":"ok"}
  158. '/api/1': { msg: `ok` },
  159. // 也可以像 express 一样返回数据
  160. '/api/2'(req, res) {
  161. res.send({ msg: `ok` })
  162. },
  163. // 一个只能使用 post 方法访问的接口
  164. 'post /api/3': { msg: `ok` },
  165. // // 一个 websocket 接口, 会发送收到的消息
  166. // 'ws /api/4' (ws, req) {
  167. // ws.on('message', (msg) => ws.send(msg))
  168. // },
  169. // 一个下载文件的接口
  170. '/file'(req, res) {
  171. res.download(__filename, `mm.config.js`)
  172. },
  173. // 获取动态的接口路径的参数 code
  174. '/status/:code'(req, res) {
  175. res.json({ statusCode: req.params.code })
  176. },
  177. // 使用 mockjs 生成数据
  178. '/user'(req, res) {
  179. const json = util.libObj.mockjs.mock({
  180. 'data|3-7': [
  181. {
  182. userId: `@id`,
  183. userName: `@cname`,
  184. },
  185. ],
  186. })
  187. res.json(json)
  188. },
  189. },
  190. static: [],
  191. resHandleReplay: ({ req, res }) => wrapApiData({ code: 200, data: {} }),
  192. resHandleJsonApi: ({ req, res: { statusCode: code }, data }) =>
  193. wrapApiData({ code, data }),
  194. }
  195. }