SemQuery.java

  1. package com.foxinmy.weixin4j.mp.model;

  2. import java.io.Serializable;

  3. import com.alibaba.fastjson.JSONObject;
  4. import com.foxinmy.weixin4j.mp.type.SemCategory;

  5. /**
  6.  * 语义理解参数
  7.  *
  8.  * @className SemQuery
  9.  * @author jinyu(foxinmy@gmail.com)
  10.  * @date 2014年11月7日
  11.  * @since JDK 1.6
  12.  * @see
  13.  */
  14. public class SemQuery implements Serializable {

  15.     private static final long serialVersionUID = 679548284525912436L;
  16.     private JSONObject jsonObj;

  17.     /**
  18.      * 输入文本串
  19.      *
  20.      * @param query
  21.      */
  22.     public SemQuery(String query) {
  23.         jsonObj = new JSONObject();
  24.         jsonObj.put("query", query);
  25.     }

  26.     /**
  27.      * 城市名称,与经纬度二选一传入
  28.      *
  29.      * @param city
  30.      * @return
  31.      */
  32.     public SemQuery city(String city) {
  33.         jsonObj.put("city", city);
  34.         return this;
  35.     }

  36.     /**
  37.      * 需要使用的服务类别,多个用,隔开,不能为空
  38.      *
  39.      * @param categorys
  40.      * @return
  41.      */
  42.     public SemQuery category(SemCategory... categorys) {
  43.         StringBuilder category = new StringBuilder();
  44.         if (categorys.length == 1) {
  45.             category.append(categorys[0].name());
  46.         } else {
  47.             for (int i = 0; i < categorys.length - 1; i++) {
  48.                 category.append(categorys[i].name()).append(",");
  49.             }
  50.             category.append(categorys[categorys.length - 1].name());
  51.         }
  52.         jsonObj.put("category", category.toString());
  53.         return this;
  54.     }

  55.     /**
  56.      * App id,开发者的唯一标识,用于区分开放者, 如果为空,则没法使用上下文理解功能。
  57.      *
  58.      * @param appid
  59.      * @return
  60.      */
  61.     public SemQuery appid(String appid) {
  62.         jsonObj.put("appid", appid);
  63.         return this;
  64.     }

  65.     /**
  66.      * 用户唯一 id(并非开发者 id),用于区分该开发者下不同用户,如果为空,则没法使用上下文理解功能。appid 和
  67.      * uid同时存在的情况下,才可以使用上下文理解功能。
  68.      *
  69.      * @param uid
  70.      * @return
  71.      */
  72.     public SemQuery uid(String uid) {
  73.         jsonObj.put("uid", uid);
  74.         return this;
  75.     }

  76.     /**
  77.      * 区域名称,在城市存在的情况下可省;与经纬度 二选一传入
  78.      *
  79.      * @param region
  80.      * @return
  81.      */
  82.     public SemQuery region(String region) {
  83.         jsonObj.put("region", region);
  84.         return this;
  85.     }

  86.     /**
  87.      * 纬度经度;与城市二选一传入
  88.      *
  89.      * @param latitude
  90.      * @param longitude
  91.      * @return
  92.      */
  93.     public SemQuery location(float latitude, float longitude) {
  94.         jsonObj.put("latitude", latitude);
  95.         jsonObj.put("longitude", longitude);
  96.         return this;
  97.     }

  98.     /**
  99.      * 输入文本串
  100.      *
  101.      * @param query
  102.      * @return
  103.      */
  104.     public static SemQuery build(String query) {
  105.         return new SemQuery(query);
  106.     }

  107.     public String toJson() {
  108.         return jsonObj.toJSONString();
  109.     }

  110.     @Override
  111.     public String toString() {
  112.         return "SemQuery " + jsonObj;
  113.     }
  114. }