@@ -302,28 +302,28 @@ public interface WxMpService { | |||
WxMpKefuService getKefuService(); | |||
/** | |||
* 返回素材相关接口的方法实现类,以方便调用个其各种接口 | |||
* 返回素材相关接口方法的实现类对象,以方便调用个其各种接口 | |||
* | |||
* @return WxMpMaterialService | |||
*/ | |||
WxMpMaterialService getMaterialService(); | |||
/** | |||
* 返回菜单相关接口的方法实现类,以方便调用个其各种接口 | |||
* 返回菜单相关接口方法的实现类对象,以方便调用个其各种接口 | |||
* | |||
* @return WxMpMenuService | |||
*/ | |||
WxMpMenuService getMenuService(); | |||
/** | |||
* 返回用户相关接口的方法实现类,以方便调用个其各种接口 | |||
* 返回用户相关接口方法的实现类对象,以方便调用个其各种接口 | |||
* | |||
* @return WxMpUserService | |||
*/ | |||
WxMpUserService getUserService(); | |||
/** | |||
* 返回用户分组相关接口的方法实现类,以方便调用个其各种接口 | |||
* 返回用户分组相关接口方法的实现类对象,以方便调用个其各种接口 | |||
* | |||
* @return WxMpGroupService | |||
*/ | |||
@@ -331,44 +331,51 @@ public interface WxMpService { | |||
WxMpGroupService getGroupService(); | |||
/** | |||
* 返回用户标签相关接口的方法实现类,以方便调用个其各种接口 | |||
* 返回用户标签相关接口方法的实现类对象,以方便调用个其各种接口 | |||
* | |||
* @return WxMpUserTagService | |||
*/ | |||
WxMpUserTagService getUserTagService(); | |||
/** | |||
* 返回二维码相关接口的方法实现类,以方便调用个其各种接口 | |||
* 返回二维码相关接口方法的实现类对象,以方便调用个其各种接口 | |||
* | |||
* @return WxMpQrcodeService | |||
*/ | |||
WxMpQrcodeService getQrcodeService(); | |||
/** | |||
* 返回卡券相关接口的方法实现类,以方便调用个其各种接口 | |||
* 返回卡券相关接口方法的实现类对象,以方便调用个其各种接口 | |||
* | |||
* @return WxMpCardService | |||
*/ | |||
WxMpCardService getCardService(); | |||
/** | |||
* 返回微信支付相关接口的方法实现类,以方便调用个其各种接口 | |||
* 返回微信支付相关接口方法的实现类对象,以方便调用个其各种接口 | |||
* | |||
* @return WxMpPayService | |||
*/ | |||
WxMpPayService getPayService(); | |||
/** | |||
* 返回数据分析统计相关接口的方法实现类,以方便调用个其各种接口 | |||
* 返回数据分析统计相关接口方法的实现类对象,以方便调用个其各种接口 | |||
* | |||
* @return WxMpDataCubeService | |||
*/ | |||
WxMpDataCubeService getDataCubeService(); | |||
/** | |||
* 返回用户黑名单管理相关接口的方法实现类,以方便调用其各种借口 | |||
* 返回用户黑名单管理相关接口方法的实现类对象,以方便调用其各种接口 | |||
* | |||
* @return WxMpUserBlackListService | |||
* @return WxMpUserBlacklistService | |||
*/ | |||
WxMpUserBlacklistService getBlackListService(); | |||
/** | |||
* 返回门店管理相关接口方法的实现类对象,以方便调用其各种接口 | |||
* | |||
* @return WxMpStoreService | |||
*/ | |||
WxMpStoreService getStoreService(); | |||
} |
@@ -1,6 +1,7 @@ | |||
package me.chanjar.weixin.mp.api; | |||
import me.chanjar.weixin.common.exception.WxErrorException; | |||
import me.chanjar.weixin.mp.bean.WxMpStoreBaseInfo; | |||
/** | |||
* 门店管理的相关接口代码 | |||
@@ -19,8 +20,6 @@ public interface WxMpStoreService { | |||
* 接口格式: http://api.weixin.qq.com/cgi-bin/poi/addpoi?access_token=TOKEN | |||
* </pre> | |||
* | |||
* @param scene_id 参数。 | |||
* @param expire_seconds 过期秒数,默认60秒,最小60秒,最大1800秒 | |||
*/ | |||
void userUpdateRemark(String openid, String remark) throws WxErrorException; | |||
void add(WxMpStoreBaseInfo request) throws WxErrorException; | |||
} |
@@ -1,9 +1,23 @@ | |||
package me.chanjar.weixin.mp.api.impl; | |||
import java.io.IOException; | |||
import org.apache.http.HttpHost; | |||
import org.apache.http.client.config.RequestConfig; | |||
import org.apache.http.client.methods.CloseableHttpResponse; | |||
import org.apache.http.client.methods.HttpGet; | |||
import org.apache.http.conn.ssl.DefaultHostnameVerifier; | |||
import org.apache.http.conn.ssl.SSLConnectionSocketFactory; | |||
import org.apache.http.impl.client.BasicResponseHandler; | |||
import org.apache.http.impl.client.CloseableHttpClient; | |||
import org.slf4j.Logger; | |||
import org.slf4j.LoggerFactory; | |||
import com.google.gson.JsonArray; | |||
import com.google.gson.JsonElement; | |||
import com.google.gson.JsonObject; | |||
import com.google.gson.JsonParser; | |||
import me.chanjar.weixin.common.bean.WxAccessToken; | |||
import me.chanjar.weixin.common.bean.WxJsapiSignature; | |||
import me.chanjar.weixin.common.bean.result.WxError; | |||
@@ -12,22 +26,39 @@ import me.chanjar.weixin.common.session.StandardSessionManager; | |||
import me.chanjar.weixin.common.session.WxSessionManager; | |||
import me.chanjar.weixin.common.util.RandomUtils; | |||
import me.chanjar.weixin.common.util.crypto.SHA1; | |||
import me.chanjar.weixin.common.util.http.*; | |||
import me.chanjar.weixin.mp.api.*; | |||
import me.chanjar.weixin.mp.bean.*; | |||
import me.chanjar.weixin.mp.bean.result.*; | |||
import org.apache.http.HttpHost; | |||
import org.apache.http.client.config.RequestConfig; | |||
import org.apache.http.client.methods.CloseableHttpResponse; | |||
import org.apache.http.client.methods.HttpGet; | |||
import org.apache.http.conn.ssl.DefaultHostnameVerifier; | |||
import org.apache.http.conn.ssl.SSLConnectionSocketFactory; | |||
import org.apache.http.impl.client.BasicResponseHandler; | |||
import org.apache.http.impl.client.CloseableHttpClient; | |||
import org.slf4j.Logger; | |||
import org.slf4j.LoggerFactory; | |||
import java.io.IOException; | |||
import me.chanjar.weixin.common.util.http.ApacheHttpClientBuilder; | |||
import me.chanjar.weixin.common.util.http.DefaultApacheHttpClientBuilder; | |||
import me.chanjar.weixin.common.util.http.RequestExecutor; | |||
import me.chanjar.weixin.common.util.http.SimpleGetRequestExecutor; | |||
import me.chanjar.weixin.common.util.http.SimplePostRequestExecutor; | |||
import me.chanjar.weixin.common.util.http.URIUtil; | |||
import me.chanjar.weixin.mp.api.WxMpCardService; | |||
import me.chanjar.weixin.mp.api.WxMpConfigStorage; | |||
import me.chanjar.weixin.mp.api.WxMpDataCubeService; | |||
import me.chanjar.weixin.mp.api.WxMpGroupService; | |||
import me.chanjar.weixin.mp.api.WxMpKefuService; | |||
import me.chanjar.weixin.mp.api.WxMpMaterialService; | |||
import me.chanjar.weixin.mp.api.WxMpMenuService; | |||
import me.chanjar.weixin.mp.api.WxMpPayService; | |||
import me.chanjar.weixin.mp.api.WxMpQrcodeService; | |||
import me.chanjar.weixin.mp.api.WxMpService; | |||
import me.chanjar.weixin.mp.api.WxMpStoreService; | |||
import me.chanjar.weixin.mp.api.WxMpUserBlacklistService; | |||
import me.chanjar.weixin.mp.api.WxMpUserService; | |||
import me.chanjar.weixin.mp.api.WxMpUserTagService; | |||
import me.chanjar.weixin.mp.bean.WxMpIndustry; | |||
import me.chanjar.weixin.mp.bean.WxMpMassGroupMessage; | |||
import me.chanjar.weixin.mp.bean.WxMpMassNews; | |||
import me.chanjar.weixin.mp.bean.WxMpMassOpenIdsMessage; | |||
import me.chanjar.weixin.mp.bean.WxMpMassPreviewMessage; | |||
import me.chanjar.weixin.mp.bean.WxMpMassVideo; | |||
import me.chanjar.weixin.mp.bean.WxMpSemanticQuery; | |||
import me.chanjar.weixin.mp.bean.WxMpTemplateMessage; | |||
import me.chanjar.weixin.mp.bean.result.WxMpMassSendResult; | |||
import me.chanjar.weixin.mp.bean.result.WxMpMassUploadResult; | |||
import me.chanjar.weixin.mp.bean.result.WxMpOAuth2AccessToken; | |||
import me.chanjar.weixin.mp.bean.result.WxMpSemanticQueryResult; | |||
import me.chanjar.weixin.mp.bean.result.WxMpUser; | |||
public class WxMpServiceImpl implements WxMpService { | |||
@@ -65,6 +96,8 @@ public class WxMpServiceImpl implements WxMpService { | |||
private WxMpPayService payService = new WxMpPayServiceImpl(this); | |||
private WxMpStoreService storeService = new WxMpStoreServiceImpl(this); | |||
private WxMpDataCubeService dataCubeService = new WxMpDataCubeServiceImpl(this); | |||
private WxMpUserBlacklistService blackListService = new WxMpUserBlacklistServiceImpl(this); | |||
@@ -442,6 +475,8 @@ public class WxMpServiceImpl implements WxMpService { | |||
return this.execute(executor, uri, data); | |||
} | |||
if (error.getErrorCode() != 0) { | |||
this.log.error("\n[URL]: {}\n[PARAMS]: {}\n[RESPONSE]: {}", uri, data, | |||
error); | |||
throw new WxErrorException(error); | |||
} | |||
return null; | |||
@@ -560,4 +595,9 @@ public class WxMpServiceImpl implements WxMpService { | |||
return this.blackListService; | |||
} | |||
@Override | |||
public WxMpStoreService getStoreService() { | |||
return this.storeService; | |||
} | |||
} |
@@ -0,0 +1,67 @@ | |||
package me.chanjar.weixin.mp.api.impl; | |||
import java.lang.reflect.Field; | |||
import java.util.List; | |||
import java.util.Map.Entry; | |||
import org.joor.Reflect; | |||
import com.google.common.collect.Lists; | |||
import me.chanjar.weixin.common.annotation.Required; | |||
import me.chanjar.weixin.common.bean.result.WxError; | |||
import me.chanjar.weixin.common.exception.WxErrorException; | |||
import me.chanjar.weixin.mp.api.WxMpService; | |||
import me.chanjar.weixin.mp.api.WxMpStoreService; | |||
import me.chanjar.weixin.mp.bean.WxMpStoreBaseInfo; | |||
/** | |||
* Created by Binary Wang on 2016/9/26. | |||
* @author binarywang (https://github.com/binarywang) | |||
* | |||
*/ | |||
public class WxMpStoreServiceImpl implements WxMpStoreService { | |||
private WxMpService wxMpService; | |||
public WxMpStoreServiceImpl(WxMpService wxMpService) { | |||
this.wxMpService = wxMpService; | |||
} | |||
@Override | |||
public void add(WxMpStoreBaseInfo request) throws WxErrorException { | |||
checkParameters(request); | |||
String url = "http://api.weixin.qq.com/cgi-bin/poi/addpoi"; | |||
// String data = "{\"business\":{\"base_info\":{\"business_name\":\"haha\",\"branch_name\":\"abc\",\"province\":\"aaa\",\"city\":\"aaa\",\"district\":\"aaa\",\"telephone\":\"122\",\"categories\":\"adsdas\",\"offset_type\":\"1\",\"longitude\":\"115.32375\",\"latitude\":\"25.097486\"}}}"; | |||
String response = this.wxMpService.post(url, request.toJson()); | |||
// String response = this.wxMpService.post(url, data); | |||
WxError wxError = WxError.fromJson(response); | |||
if (wxError.getErrorCode() != 0) { | |||
throw new WxErrorException(wxError); | |||
} | |||
} | |||
private void checkParameters(WxMpStoreBaseInfo request) { | |||
List<String> nullFields = Lists.newArrayList(); | |||
for (Entry<String, Reflect> entry : Reflect.on(request).fields() | |||
.entrySet()) { | |||
Reflect reflect = entry.getValue(); | |||
try { | |||
Field field = request.getClass().getDeclaredField(entry.getKey()); | |||
if (field.isAnnotationPresent(Required.class) | |||
&& reflect.get() == null) { | |||
nullFields.add(entry.getKey()); | |||
} | |||
} catch (NoSuchFieldException | SecurityException e) { | |||
e.printStackTrace(); | |||
} | |||
} | |||
if (!nullFields.isEmpty()) { | |||
throw new IllegalArgumentException("必填字段[" + nullFields + "]必须提供值"); | |||
} | |||
} | |||
} |
@@ -1,9 +1,14 @@ | |||
package me.chanjar.weixin.mp.bean; | |||
import java.math.BigDecimal; | |||
import java.util.List; | |||
import com.google.gson.JsonElement; | |||
import com.google.gson.JsonObject; | |||
import com.google.gson.annotations.SerializedName; | |||
import java.util.List; | |||
import me.chanjar.weixin.common.annotation.Required; | |||
import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder; | |||
/** | |||
* 门店基础信息 | |||
@@ -11,6 +16,16 @@ import java.util.List; | |||
* Created by Binary Wang on 2016-09-23. | |||
*/ | |||
public class WxMpStoreBaseInfo { | |||
public String toJson() { | |||
JsonElement base_info = WxMpGsonBuilder.create().toJsonTree(this); | |||
JsonObject jsonObject = new JsonObject(); | |||
jsonObject.add("base_info", base_info); | |||
JsonObject business = new JsonObject(); | |||
business.add("business", jsonObject); | |||
return business.toString(); | |||
} | |||
public static class WxMpStorePhoto { | |||
/** | |||
* 照片url | |||
@@ -31,6 +46,7 @@ public class WxMpStoreBaseInfo { | |||
* 门店名称(仅为商户名,如:国美、麦当劳,不应包含地区、地址、分店名等信息,错误示例:北京国美) | |||
* 不能为空,15个汉字或30个英文字符内 | |||
*/ | |||
@Required | |||
@SerializedName("business_name") | |||
private String businessName; | |||
@@ -39,14 +55,16 @@ public class WxMpStoreBaseInfo { | |||
* 分店名称(不应包含地区信息,不应与门店名有重复,错误示例:北京王府井店) | |||
* 10个字以内 | |||
*/ | |||
@Required | |||
@SerializedName("branch_name") | |||
private String branch_name; | |||
private String branchName; | |||
/** | |||
* province | |||
* 门店所在的省份(直辖市填城市名,如:北京市) | |||
* 10个字以内 | |||
*/ | |||
@Required | |||
@SerializedName("province") | |||
private String province; | |||
@@ -55,6 +73,7 @@ public class WxMpStoreBaseInfo { | |||
* 门店所在的城市 | |||
* 10个字以内 | |||
*/ | |||
@Required | |||
@SerializedName("city") | |||
private String city; | |||
@@ -63,6 +82,7 @@ public class WxMpStoreBaseInfo { | |||
* 门店所在地区 | |||
* 10个字以内 | |||
*/ | |||
@Required | |||
@SerializedName("district") | |||
private String district; | |||
@@ -71,6 +91,7 @@ public class WxMpStoreBaseInfo { | |||
* 门店所在的详细街道地址(不要填写省市信息) | |||
* (东莞等没有“区”行政区划的城市,该字段可不必填写。其余城市必填。) | |||
*/ | |||
@Required | |||
@SerializedName("address") | |||
private String address; | |||
@@ -78,6 +99,7 @@ public class WxMpStoreBaseInfo { | |||
* telephone | |||
* 门店的电话(纯数字,区号、分机号均由“-”隔开) | |||
*/ | |||
@Required | |||
@SerializedName("telephone") | |||
private String telephone; | |||
@@ -85,29 +107,33 @@ public class WxMpStoreBaseInfo { | |||
* categories | |||
* 门店的类型(不同级分类用“,”隔开,如:美食,川菜,火锅。详细分类参见附件:微信门店类目表) | |||
*/ | |||
@Required | |||
@SerializedName("categories") | |||
private String categories; | |||
private String[] categories; | |||
/** | |||
* offset_type | |||
* offsetType | |||
* 坐标类型,1 为火星坐标(目前只能选1) | |||
*/ | |||
@Required | |||
@SerializedName("offset_type") | |||
private String offset_type; | |||
private Integer offsetType = 1; | |||
/** | |||
* longitude | |||
* 门店所在地理位置的经度 | |||
*/ | |||
@Required | |||
@SerializedName("longitude") | |||
private String longitude; | |||
private BigDecimal longitude; | |||
/** | |||
* latitude | |||
* 门店所在地理位置的纬度(经纬度均为火星坐标,最好选用腾讯地图标记的坐标) | |||
*/ | |||
@Required | |||
@SerializedName("latitude") | |||
private String latitude; | |||
private BigDecimal latitude; | |||
/** | |||
* photo_list | |||
@@ -115,7 +141,7 @@ public class WxMpStoreBaseInfo { | |||
* 图片内容不允许与门店不相关,不允许为二维码、员工合照(或模特肖像)、营业执照、无门店正门的街景、地图截图、公交地铁站牌、菜单截图等 | |||
*/ | |||
@SerializedName("photo_list") | |||
private List<WxMpStorePhoto> photo_list; | |||
private List<WxMpStorePhoto> photos; | |||
/** | |||
* recommend | |||
@@ -145,12 +171,317 @@ public class WxMpStoreBaseInfo { | |||
* 营业时间,24 小时制表示,用“-”连接,如 8:00-20:00 | |||
*/ | |||
@SerializedName("open_time") | |||
private String open_time; | |||
private String openTime; | |||
/** | |||
* avg_price | |||
* 人均价格,大于0 的整数 | |||
*/ | |||
@SerializedName("avg_price") | |||
private Integer avg_price; | |||
private Integer avgPrice; | |||
public String getSid() { | |||
return this.sid; | |||
} | |||
public void setSid(String sid) { | |||
this.sid = sid; | |||
} | |||
public String getBusinessName() { | |||
return this.businessName; | |||
} | |||
public void setBusinessName(String businessName) { | |||
this.businessName = businessName; | |||
} | |||
public String getBranchName() { | |||
return this.branchName; | |||
} | |||
public void setBranchName(String branchName) { | |||
this.branchName = branchName; | |||
} | |||
public String getProvince() { | |||
return this.province; | |||
} | |||
public void setProvince(String province) { | |||
this.province = province; | |||
} | |||
public String getCity() { | |||
return this.city; | |||
} | |||
public void setCity(String city) { | |||
this.city = city; | |||
} | |||
public String getDistrict() { | |||
return this.district; | |||
} | |||
public void setDistrict(String district) { | |||
this.district = district; | |||
} | |||
public String getAddress() { | |||
return this.address; | |||
} | |||
public void setAddress(String address) { | |||
this.address = address; | |||
} | |||
public String getTelephone() { | |||
return this.telephone; | |||
} | |||
public void setTelephone(String telephone) { | |||
this.telephone = telephone; | |||
} | |||
public String[] getCategories() { | |||
return this.categories; | |||
} | |||
public void setCategories(String[] categories) { | |||
this.categories = categories; | |||
} | |||
public Integer getOffsetType() { | |||
return this.offsetType; | |||
} | |||
public void setOffsetType(Integer offsetType) { | |||
this.offsetType = offsetType; | |||
} | |||
public BigDecimal getLongitude() { | |||
return this.longitude; | |||
} | |||
public void setLongitude(BigDecimal longitude) { | |||
this.longitude = longitude; | |||
} | |||
public BigDecimal getLatitude() { | |||
return this.latitude; | |||
} | |||
public void setLatitude(BigDecimal latitude) { | |||
this.latitude = latitude; | |||
} | |||
public List<WxMpStorePhoto> getPhotos() { | |||
return this.photos; | |||
} | |||
public void setPhotos(List<WxMpStorePhoto> photos) { | |||
this.photos = photos; | |||
} | |||
public String getRecommend() { | |||
return this.recommend; | |||
} | |||
public void setRecommend(String recommend) { | |||
this.recommend = recommend; | |||
} | |||
public String getSpecial() { | |||
return this.special; | |||
} | |||
public void setSpecial(String special) { | |||
this.special = special; | |||
} | |||
public String getIntroduction() { | |||
return this.introduction; | |||
} | |||
public void setIntroduction(String introduction) { | |||
this.introduction = introduction; | |||
} | |||
public String getOpenTime() { | |||
return this.openTime; | |||
} | |||
public void setOpenTime(String openTime) { | |||
this.openTime = openTime; | |||
} | |||
public Integer getAvgPrice() { | |||
return this.avgPrice; | |||
} | |||
public void setAvgPrice(Integer avgPrice) { | |||
this.avgPrice = avgPrice; | |||
} | |||
public static WxMpStoreBaseInfoBuilder builder() { | |||
return new WxMpStoreBaseInfoBuilder(); | |||
} | |||
public static class WxMpStoreBaseInfoBuilder { | |||
private String sid; | |||
private String businessName; | |||
private String branchName; | |||
private String province; | |||
private String city; | |||
private String district; | |||
private String address; | |||
private String telephone; | |||
private String[] categories; | |||
private Integer offsetType; | |||
private BigDecimal longitude; | |||
private BigDecimal latitude; | |||
private List<WxMpStorePhoto> photos; | |||
private String recommend; | |||
private String special; | |||
private String introduction; | |||
private String openTime; | |||
private Integer avgPrice; | |||
public WxMpStoreBaseInfoBuilder sid(String sid) { | |||
this.sid = sid; | |||
return this; | |||
} | |||
public WxMpStoreBaseInfoBuilder businessName(String businessName) { | |||
this.businessName = businessName; | |||
return this; | |||
} | |||
public WxMpStoreBaseInfoBuilder branchName(String branchName) { | |||
this.branchName = branchName; | |||
return this; | |||
} | |||
public WxMpStoreBaseInfoBuilder province(String province) { | |||
this.province = province; | |||
return this; | |||
} | |||
public WxMpStoreBaseInfoBuilder city(String city) { | |||
this.city = city; | |||
return this; | |||
} | |||
public WxMpStoreBaseInfoBuilder district(String district) { | |||
this.district = district; | |||
return this; | |||
} | |||
public WxMpStoreBaseInfoBuilder address(String address) { | |||
this.address = address; | |||
return this; | |||
} | |||
public WxMpStoreBaseInfoBuilder telephone(String telephone) { | |||
this.telephone = telephone; | |||
return this; | |||
} | |||
public WxMpStoreBaseInfoBuilder categories(String[] categories) { | |||
this.categories = categories; | |||
return this; | |||
} | |||
public WxMpStoreBaseInfoBuilder offsetType(Integer offsetType) { | |||
this.offsetType = offsetType; | |||
return this; | |||
} | |||
public WxMpStoreBaseInfoBuilder longitude(BigDecimal longitude) { | |||
this.longitude = longitude; | |||
return this; | |||
} | |||
public WxMpStoreBaseInfoBuilder latitude(BigDecimal latitude) { | |||
this.latitude = latitude; | |||
return this; | |||
} | |||
public WxMpStoreBaseInfoBuilder photos(List<WxMpStorePhoto> photos) { | |||
this.photos = photos; | |||
return this; | |||
} | |||
public WxMpStoreBaseInfoBuilder recommend(String recommend) { | |||
this.recommend = recommend; | |||
return this; | |||
} | |||
public WxMpStoreBaseInfoBuilder special(String special) { | |||
this.special = special; | |||
return this; | |||
} | |||
public WxMpStoreBaseInfoBuilder introduction(String introduction) { | |||
this.introduction = introduction; | |||
return this; | |||
} | |||
public WxMpStoreBaseInfoBuilder openTime(String openTime) { | |||
this.openTime = openTime; | |||
return this; | |||
} | |||
public WxMpStoreBaseInfoBuilder avgPrice(Integer avgPrice) { | |||
this.avgPrice = avgPrice; | |||
return this; | |||
} | |||
public WxMpStoreBaseInfoBuilder from(WxMpStoreBaseInfo origin) { | |||
this.sid(origin.sid); | |||
this.businessName(origin.businessName); | |||
this.branchName(origin.branchName); | |||
this.province(origin.province); | |||
this.city(origin.city); | |||
this.district(origin.district); | |||
this.address(origin.address); | |||
this.telephone(origin.telephone); | |||
this.categories(origin.categories); | |||
this.offsetType(origin.offsetType); | |||
this.longitude(origin.longitude); | |||
this.latitude(origin.latitude); | |||
this.photos(origin.photos); | |||
this.recommend(origin.recommend); | |||
this.special(origin.special); | |||
this.introduction(origin.introduction); | |||
this.openTime(origin.openTime); | |||
this.avgPrice(origin.avgPrice); | |||
return this; | |||
} | |||
public WxMpStoreBaseInfo build() { | |||
WxMpStoreBaseInfo m = new WxMpStoreBaseInfo(); | |||
m.sid = this.sid; | |||
m.businessName = this.businessName; | |||
m.branchName = this.branchName; | |||
m.province = this.province; | |||
m.city = this.city; | |||
m.district = this.district; | |||
m.address = this.address; | |||
m.telephone = this.telephone; | |||
m.categories = this.categories; | |||
m.offsetType = this.offsetType; | |||
m.longitude = this.longitude; | |||
m.latitude = this.latitude; | |||
m.photos = this.photos; | |||
m.recommend = this.recommend; | |||
m.special = this.special; | |||
m.introduction = this.introduction; | |||
m.openTime = this.openTime; | |||
m.avgPrice = this.avgPrice; | |||
return m; | |||
} | |||
} | |||
} |
@@ -0,0 +1,42 @@ | |||
/** | |||
* Copyright(c) 2011-2016 by UCredit Inc. | |||
* All Rights Reserved | |||
*/ | |||
package me.chanjar.weixin.mp.api.impl; | |||
import java.math.BigDecimal; | |||
import org.testng.annotations.Guice; | |||
import org.testng.annotations.Test; | |||
import com.google.inject.Inject; | |||
import me.chanjar.weixin.common.exception.WxErrorException; | |||
import me.chanjar.weixin.mp.api.ApiTestModule; | |||
import me.chanjar.weixin.mp.bean.WxMpStoreBaseInfo; | |||
/** | |||
* @author 王彬 (Binary Wang) | |||
* | |||
*/ | |||
@Test | |||
@Guice(modules = ApiTestModule.class) | |||
public class WxMpStoreServiceImplTest { | |||
@Inject | |||
private WxMpServiceImpl wxMpService; | |||
/** | |||
* Test method for {@link me.chanjar.weixin.mp.api.impl.WxMpStoreServiceImpl#add(me.chanjar.weixin.mp.bean.WxMpStoreBaseInfo)}. | |||
* @throws WxErrorException | |||
*/ | |||
public void testAdd() throws WxErrorException { | |||
this.wxMpService.getStoreService() | |||
.add(WxMpStoreBaseInfo.builder().businessName("haha").branchName("abc") | |||
.province("aaa").district("aaa").telephone("122").address("abc") | |||
.categories(new String[] { "美食,川菜,火锅" }) | |||
.longitude(new BigDecimal("115.32375")) | |||
.latitude(new BigDecimal("25.097486")).city("aaa").offsetType(1) | |||
.build()); | |||
} | |||
} |