SemQuery.java
package com.foxinmy.weixin4j.mp.model;
import java.io.Serializable;
import com.alibaba.fastjson.JSONObject;
import com.foxinmy.weixin4j.mp.type.SemCategory;
/**
* 语义理解参数
*
* @className SemQuery
* @author jinyu(foxinmy@gmail.com)
* @date 2014年11月7日
* @since JDK 1.6
* @see
*/
public class SemQuery implements Serializable {
private static final long serialVersionUID = 679548284525912436L;
private JSONObject jsonObj;
/**
* 输入文本串
*
* @param query
*/
public SemQuery(String query) {
jsonObj = new JSONObject();
jsonObj.put("query", query);
}
/**
* 城市名称,与经纬度二选一传入
*
* @param city
* @return
*/
public SemQuery city(String city) {
jsonObj.put("city", city);
return this;
}
/**
* 需要使用的服务类别,多个用,隔开,不能为空
*
* @param categorys
* @return
*/
public SemQuery category(SemCategory... categorys) {
StringBuilder category = new StringBuilder();
if (categorys.length == 1) {
category.append(categorys[0].name());
} else {
for (int i = 0; i < categorys.length - 1; i++) {
category.append(categorys[i].name()).append(",");
}
category.append(categorys[categorys.length - 1].name());
}
jsonObj.put("category", category.toString());
return this;
}
/**
* App id,开发者的唯一标识,用于区分开放者, 如果为空,则没法使用上下文理解功能。
*
* @param appid
* @return
*/
public SemQuery appid(String appid) {
jsonObj.put("appid", appid);
return this;
}
/**
* 用户唯一 id(并非开发者 id),用于区分该开发者下不同用户,如果为空,则没法使用上下文理解功能。appid 和
* uid同时存在的情况下,才可以使用上下文理解功能。
*
* @param uid
* @return
*/
public SemQuery uid(String uid) {
jsonObj.put("uid", uid);
return this;
}
/**
* 区域名称,在城市存在的情况下可省;与经纬度 二选一传入
*
* @param region
* @return
*/
public SemQuery region(String region) {
jsonObj.put("region", region);
return this;
}
/**
* 纬度经度;与城市二选一传入
*
* @param latitude
* @param longitude
* @return
*/
public SemQuery location(float latitude, float longitude) {
jsonObj.put("latitude", latitude);
jsonObj.put("longitude", longitude);
return this;
}
/**
* 输入文本串
*
* @param query
* @return
*/
public static SemQuery build(String query) {
return new SemQuery(query);
}
public String toJson() {
return jsonObj.toJSONString();
}
@Override
public String toString() {
return "SemQuery " + jsonObj;
}
}