const sequelize = require('sequelize'); 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 Area = require('../../../db/models/area'); const Sample = require('../../../db/models/sample'); const { Op } = require('sequelize'); const router = express.Router(); async function fillSingle(data) { return data; } /** * showdoc * @catalog v1/商家/地区 * @title ai地区列表 * @description ai地区列表接口 * @method GET * @url /business/area/ai * @param type 1 integer 1省2市3地区 * @param provinceId 0 integer 省id * @param cityId 0 integer 市id * @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 type integer 1省2市3地区 * @return_param pinyin string 首字母 * @return_param createdAt date - * @return_param updatedAt date - * @remark * @number */ router.get('/ai', async (req, res) => { const { page = 0, type } = req.query; const where = _.omit(req.query, ['page']); const info = onSuccess(); if (type === '1') { // const psArr = await Sample.findAll({ // distinct:['province_id'] // attributes: [[sequelize.fn('DISTINCT', sequelize.col('province_id')), 'pid']], // }); const psArr = await Sample.aggregate('provinceId', 'DISTINCT', { plain: false }); // const psArr = await Sample.findAll({ // attributes: ['province_id'], // group: ['province_id'], // }); console.log(psArr); where.id = { [Op.in]: psArr.map(i => i.DISTINCT) }; } else if (type === '2') { // const psArr = await Sample.findAll({ // attributes: ['city_id'], // group: ['city_id'], // }); const psArr = await Sample.aggregate('cityId', 'DISTINCT', { plain: false }); where.id = { [Op.in]: psArr.map(i => i.DISTINCT) }; } else { // const psArr = await Sample.findAll({ // attributes: ['region_id'], // group: ['region_id'], // }); const psArr = await Sample.aggregate('regionId', 'DISTINCT', { plain: false }); where.id = { [Op.in]: psArr.map(i => i.DISTINCT) }; } info.data = await Area.findAll({ where, all: true }); info.data = await fill(info.data, fillSingle); if (!page) { info.count = await Area.count({ where }); } res.send(info); }); /** * showdoc * @catalog v1/商家/地区 * @title 地区详情 * @description * @method GET * @url /business/area/: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 type integer 1省2市3地区 * @return_param pinyin string 首字母 * @return_param createdAt date - * @return_param updatedAt date - * @remark * @number */ router.get('/:id', async (req, res) => { let data = await Area.findOne({ where: req.params }); data = await fill(data, fillSingle); res.send(onSuccess(data)); }); module.exports = router;