@@ -1,6 +1,7 @@ | |||||
package me.chanjar.weixin.cp.api; | package me.chanjar.weixin.cp.api; | ||||
import me.chanjar.weixin.common.exception.WxErrorException; | import me.chanjar.weixin.common.exception.WxErrorException; | ||||
import me.chanjar.weixin.cp.bean.WxCpInviteResult; | |||||
import me.chanjar.weixin.cp.bean.WxCpUser; | import me.chanjar.weixin.cp.bean.WxCpUser; | ||||
import java.util.List; | import java.util.List; | ||||
@@ -84,18 +85,18 @@ public interface WxCpUserService { | |||||
/** | /** | ||||
* <pre> | * <pre> | ||||
* 邀请成员关注 | |||||
* http://qydev.weixin.qq.com/wiki/index.php?title=管理成员#.E9.82.80.E8.AF.B7.E6.88.90.E5.91.98.E5.85.B3.E6.B3.A8 | |||||
* 邀请成员 | |||||
* 企业可通过接口批量邀请成员使用企业微信,邀请后将通过短信或邮件下发通知。 | |||||
* 请求方式:POST(HTTPS) | |||||
* 请求地址: https://qyapi.weixin.qq.com/cgi-bin/batch/invite?access_token=ACCESS_TOKEN | |||||
* 文档地址:https://work.weixin.qq.com/api/doc#12543 | |||||
* </pre> | * </pre> | ||||
* | * | ||||
* @param userId 用户的userid | |||||
* @param inviteTips 推送到微信上的提示语(只有认证号可以使用)。当使用微信推送时,该字段默认为“请关注XXX企业号”,邮件邀请时,该字段无效。 | |||||
* @return 1:微信邀请 2.邮件邀请 | |||||
* @deprecated api obsoleted. 邀请关注的功能微信企业号已经下线了, | |||||
* 详细请参考该链接点击查看 https://qy.weixin.qq.com/cgi-bin/homepagenotify?action=get&id=46 | |||||
* @param userIds 成员ID列表, 最多支持1000个。 | |||||
* @param partyIds 部门ID列表,最多支持100个。 | |||||
* @param tagIds 标签ID列表,最多支持100个。 | |||||
*/ | */ | ||||
@Deprecated | |||||
int invite(String userId, String inviteTips) throws WxErrorException; | |||||
WxCpInviteResult invite(List<String> userIds, List<String> partyIds, List<String> tagIds) throws WxErrorException; | |||||
/** | /** | ||||
* <pre> | * <pre> | ||||
@@ -6,9 +6,9 @@ import com.google.gson.reflect.TypeToken; | |||||
import me.chanjar.weixin.common.exception.WxErrorException; | import me.chanjar.weixin.common.exception.WxErrorException; | ||||
import me.chanjar.weixin.cp.api.WxCpService; | import me.chanjar.weixin.cp.api.WxCpService; | ||||
import me.chanjar.weixin.cp.api.WxCpUserService; | import me.chanjar.weixin.cp.api.WxCpUserService; | ||||
import me.chanjar.weixin.cp.bean.WxCpInviteResult; | |||||
import me.chanjar.weixin.cp.bean.WxCpUser; | import me.chanjar.weixin.cp.bean.WxCpUser; | ||||
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder; | import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder; | ||||
import org.apache.commons.lang3.StringUtils; | |||||
import java.util.List; | import java.util.List; | ||||
import java.util.Map; | import java.util.Map; | ||||
@@ -116,17 +116,34 @@ public class WxCpUserServiceImpl implements WxCpUserService { | |||||
} | } | ||||
@Override | @Override | ||||
@Deprecated | |||||
public int invite(String userId, String inviteTips) throws WxErrorException { | |||||
String url = "https://qyapi.weixin.qq.com/cgi-bin/invite/send"; | |||||
public WxCpInviteResult invite(List<String> userIds, List<String> partyIds, List<String> tagIds) throws WxErrorException { | |||||
String url = "https://qyapi.weixin.qq.com/cgi-bin/batch/invite"; | |||||
JsonObject jsonObject = new JsonObject(); | JsonObject jsonObject = new JsonObject(); | ||||
jsonObject.addProperty("userid", userId); | |||||
if (StringUtils.isNotEmpty(inviteTips)) { | |||||
jsonObject.addProperty("invite_tips", inviteTips); | |||||
if (userIds != null) { | |||||
JsonArray jsonArray = new JsonArray(); | |||||
for (String userId : userIds) { | |||||
jsonArray.add(new JsonPrimitive(userId)); | |||||
} | |||||
jsonObject.add("user", jsonArray); | |||||
} | } | ||||
String responseContent = this.mainService.post(url, jsonObject.toString()); | |||||
JsonElement tmpJsonElement = new JsonParser().parse(responseContent); | |||||
return tmpJsonElement.getAsJsonObject().get("type").getAsInt(); | |||||
if (partyIds != null) { | |||||
JsonArray jsonArray = new JsonArray(); | |||||
for (String userId : partyIds) { | |||||
jsonArray.add(new JsonPrimitive(userId)); | |||||
} | |||||
jsonObject.add("party", jsonArray); | |||||
} | |||||
if (tagIds != null) { | |||||
JsonArray jsonArray = new JsonArray(); | |||||
for (String tagId : tagIds) { | |||||
jsonArray.add(new JsonPrimitive(tagId)); | |||||
} | |||||
jsonObject.add("tag", jsonArray); | |||||
} | |||||
return WxCpInviteResult.fromJson(this.mainService.post(url, jsonObject.toString())); | |||||
} | } | ||||
@Override | @Override | ||||
@@ -0,0 +1,60 @@ | |||||
package me.chanjar.weixin.cp.bean; | |||||
import com.google.common.base.Splitter; | |||||
import com.google.gson.annotations.SerializedName; | |||||
import lombok.Data; | |||||
import me.chanjar.weixin.common.util.ToStringUtils; | |||||
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder; | |||||
import org.apache.commons.lang3.StringUtils; | |||||
import java.io.Serializable; | |||||
import java.util.Collections; | |||||
import java.util.List; | |||||
/** | |||||
* 邀请成员的结果对象类. | |||||
* Created by Binary Wang on 2018-5-13. | |||||
* | |||||
* @author <a href="https://github.com/binarywang">Binary Wang</a> | |||||
*/ | |||||
@Data | |||||
public class WxCpInviteResult implements Serializable { | |||||
private static final long serialVersionUID = 1420065684270213578L; | |||||
@Override | |||||
public String toString() { | |||||
return ToStringUtils.toSimpleString(this); | |||||
} | |||||
public static WxCpInviteResult fromJson(String json) { | |||||
return WxCpGsonBuilder.INSTANCE.create().fromJson(json, WxCpInviteResult.class); | |||||
} | |||||
@SerializedName("errcode") | |||||
private Integer errCode; | |||||
@SerializedName("errmsg") | |||||
private String errMsg; | |||||
@SerializedName("invaliduser") | |||||
private String invalidUsers; | |||||
@SerializedName("invalidparty") | |||||
private String[] invalidParties; | |||||
@SerializedName("invalidtag") | |||||
private String[] invalidTags; | |||||
public List<String> getInvalidUserList() { | |||||
return this.content2List(this.invalidUsers); | |||||
} | |||||
private List<String> content2List(String content) { | |||||
if (StringUtils.isBlank(content)) { | |||||
return Collections.emptyList(); | |||||
} | |||||
return Splitter.on("|").splitToList(content); | |||||
} | |||||
} |