123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- 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;
|