Skip to content

Instantly share code, notes, and snippets.

@shaobin0604
Last active September 11, 2015 01:57
Show Gist options
  • Save shaobin0604/7d1e5b066fc91504ca45 to your computer and use it in GitHub Desktop.
Save shaobin0604/7d1e5b066fc91504ca45 to your computer and use it in GitHub Desktop.
[功能] 附近兴趣点采集
版本 作者 日期
1.0 邵彬 2015-09-10

[TOC]

数据采集(管理版)

表单模板格式

id                # 表单标识
version           # 表单版本
title             # 表单名称
post_url          # 表单提交路径
entries           # 表单项目列表
    key           # http form post param name
    name          # 界面展示名称
    optional      # 是否为可选参数
    widget        # 控件类型,目前支持[edittext, single_choice, multi_choice, datepicker, timepicker, photo, address]
    widget_params # 控件参数,不同控件类型参数可能不同

widget_params

edittext

  • hint: 文本框提示文案
  • single_line: 是否单行[true, false]
  • input_type: 输入法模式
  • text (默认)
  • textUri
  • textEmailAddress
  • textPassword
  • textVisiblePassword
  • number
  • numberSigned
  • numberDecimal
  • numberPassword
  • phone
  • validators 支持以下类型:
  • regex [regex] 正则表达式,建议控制台在配置时验证正则表达式的正确性

备注

  • 所有 validator 都包含属性 err_msg 属性,用于提示用户验证不通过
  • 可以添加多个 validator
  • 客户端目前支持 regex 校验,为方便用户使用,建议控制台预置以下常用正则表达式
  • phone 电话
  • email 电子邮件
  • url 网址
  • numeric 数字
  • range [min, max] 字符串长度(最大值,最小值)
  • 中文字符

single_choice

  • entry_names: 列表项名称数组
  • entry_values: 列表项值数组

multi_choice

  • entry_names: 列表项名称数组
  • entry_values: 列表项值数组

datepicker

  • initial_date
  • min_date
  • max_date

备注

日期格式为 yyyy-MM-dd

timepicker

  • initial_time

备注

时间格式为 HH:mm

photo

  • photo_list 类型: JSONArray
[
  {
    "name": "身份证正面",
    "type": "NAME_CARD_FRONT",
    "w": 480,
    "h": 800
  },
  {
    "name": "身份证反面",
    "type": "NAME_CARD_BEHIND",
    "w": 480,
    "h": 800
  }
]

备注

由于目前 server 端提供的图片上传机制的限制,图片类型 type 只支持预定义的若干类型,例如:

  • NAME_CARD_FRONT
  • NAME_CARD_BEHIND
  • SHOP_PHOTO1
  • SHOP_PHOTO2
  • SHOP_PHOTO3

如需要支持更多的图片类型,则 serverclient 都要修改代码

wh 为图片的

address

  • 用户输入
  • 自动定位
  • 地图选点

addresspicker

省/市/县 提交为 县的 数字编号

备注

API 需求:需要 API 提供省市县信息

  • GET /provincies 获取省列表
  • [["北京", "01"], ["天津", "02"]]
  • GET /cities?pid=xx 获取省下属城市列表
  • [["海淀", "0101"], ["朝阳", "0102"]]
  • GET /counties?cid=xxxx 获取城市下属区县列表
  • [["管庄", "010201"], ["北苑", "010202"]]

表单模板样例

{
  "id": 1,
  "version": 1,
  "title": "二手车信息采集",
  "post_url": "http://host/form_post",
  "entries": [
    {
      "key": "email",
      "name": "电子邮件",
      "optional": false,
      "widget": "edittext",
      "widget_params": {
        "hint": "请输入电子邮件",
        "input_type": "textEmailAddress",
        "validators": [
          {
            "name": "email",
            "error_msg": "邮件格式不正确"
          }
        ]
      }
    },
    {
      "key": "phone",
      "name": "电话号码",
      "optional": false,
      "widget": "edittext",
      "widget_params": {
        "hint": "请输入电话号码",
        "input_type": "phone",
        "validators": [
          {
            "name": "phone",
            "error_msg": "电话号码格式不正确"
          }
        ]
      }
    },
    {
      "key": "work_age",
      "name": "工作年限",
      "optional": false,
      "widget": "single_choice",
      "widget_params": {
        "entry_names": [
          "小于三年",
          "三年到五年",
          "五年到十年",
          "十年以上"
        ],
        "entry_values": [
          "1",
          "2",
          "3",
          "4"
        ]
      }
    },
    {
      "key": "channel",
      "name": "发布渠道",
      "optional": false,
      "widget": "multi_choice",
      "widget_params": {
        "entry_names": [
          "豌豆荚",
          "360",
          "百度",
          "酷市场"
        ],
        "entry_values": [
          "1",
          "2",
          "3",
          "4"
        ]
      }
    },
    {
      "key": "birthday",
      "name": "生日",
      "optional": false,
      "widget": "datepicker",
      "widget_params": {
        "initial_date": "2015-06-04",
        "min_date": "1970-01-01",
        "max_date": "2035-01-01"
      }
    },
    {
      "key": "begin_time",
      "name": "开门时间",
      "optional": false,
      "widget": "timepicker",
      "widget_params": {
        "initial_time": "09:00"
      }
    },
    {
      "key": "city",
      "name": "城市",
      "optional": false,
      "widget": "addresspicker",
      "widget_params": {}
    },
    {
      "key": "address",
      "name": "详细地址",
      "optional": false,
      "widget": "address",
      "widget_params": {}
    },
    {
      "key": "photo_id_card",
      "name": "身份证",
      "optional": false,
      "widget": "photo",
      "widget_params": {
        "photo_list": [
          {
            "name": "身份证正面",
            "type": "NAME_CARD_FRONT"
          },
          {
            "name": "身份证反面",
            "type": "NAME_CARD_BEHIND"
          }
        ]
      }
    }
  ]
}

数据校验参考

API 需求

获取表单模板列表

request

GET /poi_type_list

response

[
  {
    "name": "二手车",
    "type_id": 1
  },
  {
    "name": "修理厂",
    "type_id": 2
  }
]

表单数据提交

  • 沿用老版本的方式 form post
  • 提交到模板数据中指定的 post_url
  • 模板 id type_id

已采集的记录获取

{
	"id": xxx,
	"type_id": xxx,
	"其他字段": "其他字段的值"
}

附近兴趣点数据展示(司机版)

需求文档

存在的问题

  • 是否所有的 POI 数据都来自于我们的服务器?
  • 不是,只是部分类型,需要有字段标识

Client API

获取附近兴趣点类型

request

GET /nearby_poi_category

response

[
  {
    "icon": "http://host/icon.jpg",
    "title": "服务网点",
    "poi_cat_id": 1
  },
  {
    "icon": "http://host/icon.jpg",
    "title": "信息部",
    "poi_cat_id": 2
  },
  {
    "icon": "http://host/icon.jpg",
    "title": "银行",
    "poi_cat_id": 3
  }
]

Written with StackEdit.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment