View Javadoc
1   package com.foxinmy.weixin4j.mp.model;
2   
3   import java.io.Serializable;
4   
5   import com.alibaba.fastjson.JSONObject;
6   import com.foxinmy.weixin4j.mp.type.SemCategory;
7   
8   /**
9    * 语义理解参数
10   * 
11   * @className SemQuery
12   * @author jinyu(foxinmy@gmail.com)
13   * @date 2014年11月7日
14   * @since JDK 1.6
15   * @see
16   */
17  public class SemQuery implements Serializable {
18  
19  	private static final long serialVersionUID = 679548284525912436L;
20  	private JSONObject jsonObj;
21  
22  	/**
23  	 * 输入文本串
24  	 * 
25  	 * @param query
26  	 */
27  	public SemQuery(String query) {
28  		jsonObj = new JSONObject();
29  		jsonObj.put("query", query);
30  	}
31  
32  	/**
33  	 * 城市名称,与经纬度二选一传入
34  	 * 
35  	 * @param city
36  	 * @return
37  	 */
38  	public SemQuery city(String city) {
39  		jsonObj.put("city", city);
40  		return this;
41  	}
42  
43  	/**
44  	 * 需要使用的服务类别,多个用,隔开,不能为空
45  	 * 
46  	 * @param categorys
47  	 * @return
48  	 */
49  	public SemQuery category(SemCategory... categorys) {
50  		StringBuilder category = new StringBuilder();
51  		if (categorys.length == 1) {
52  			category.append(categorys[0].name());
53  		} else {
54  			for (int i = 0; i < categorys.length - 1; i++) {
55  				category.append(categorys[i].name()).append(",");
56  			}
57  			category.append(categorys[categorys.length - 1].name());
58  		}
59  		jsonObj.put("category", category.toString());
60  		return this;
61  	}
62  
63  	/**
64  	 * App id,开发者的唯一标识,用于区分开放者, 如果为空,则没法使用上下文理解功能。
65  	 * 
66  	 * @param appid
67  	 * @return
68  	 */
69  	public SemQuery appid(String appid) {
70  		jsonObj.put("appid", appid);
71  		return this;
72  	}
73  
74  	/**
75  	 * 用户唯一 id(并非开发者 id),用于区分该开发者下不同用户,如果为空,则没法使用上下文理解功能。appid 和
76  	 * uid同时存在的情况下,才可以使用上下文理解功能。
77  	 * 
78  	 * @param uid
79  	 * @return
80  	 */
81  	public SemQuery uid(String uid) {
82  		jsonObj.put("uid", uid);
83  		return this;
84  	}
85  
86  	/**
87  	 * 区域名称,在城市存在的情况下可省;与经纬度 二选一传入
88  	 * 
89  	 * @param region
90  	 * @return
91  	 */
92  	public SemQuery region(String region) {
93  		jsonObj.put("region", region);
94  		return this;
95  	}
96  
97  	/**
98  	 * 纬度经度;与城市二选一传入
99  	 * 
100 	 * @param latitude
101 	 * @param longitude
102 	 * @return
103 	 */
104 	public SemQuery location(float latitude, float longitude) {
105 		jsonObj.put("latitude", latitude);
106 		jsonObj.put("longitude", longitude);
107 		return this;
108 	}
109 
110 	/**
111 	 * 输入文本串
112 	 * 
113 	 * @param query
114 	 * @return
115 	 */
116 	public static SemQuery build(String query) {
117 		return new SemQuery(query);
118 	}
119 
120 	public String toJson() {
121 		return jsonObj.toJSONString();
122 	}
123 
124 	@Override
125 	public String toString() {
126 		return "SemQuery " + jsonObj;
127 	}
128 }