mirror of
				https://gitee.com/binary/weixin-java-tools.git
				synced 2025-10-31 18:46:10 +08:00 
			
		
		
		
	#536 企业号模块增加获取企业号应用相关接口
* 定义《企业号应用》的bean * 增加《获取企业号应用》接口实现 * 增加获取测试企业号应用信息测试类
This commit is contained in:
		| @ -0,0 +1,29 @@ | ||||
| package me.chanjar.weixin.cp.api; | ||||
|  | ||||
| import me.chanjar.weixin.common.exception.WxErrorException; | ||||
| import me.chanjar.weixin.cp.bean.WxCpAgent; | ||||
| import me.chanjar.weixin.cp.bean.WxCpDepart; | ||||
|  | ||||
| /** | ||||
|  * <pre> | ||||
|  *  管理企业号应用 | ||||
|  *  Created by huansinho on 2018/4/13. | ||||
|  * </pre> | ||||
|  * | ||||
|  * @author <a href="https://github.com/huansinho">huansinho</a> | ||||
|  */ | ||||
| public interface WxCpAgentService { | ||||
|  | ||||
|   /** | ||||
|    * <pre> | ||||
|    * 获取企业号应用信息 | ||||
|    * 该API用于获取企业号某个应用的基本信息,包括头像、昵称、帐号类型、认证类型、可见范围等信息 | ||||
|    * 详情请见: http://qydev.weixin.qq.com/wiki/index.php?title=获取企业号应用 | ||||
|    * </pre> | ||||
|    * | ||||
|    * @param agentId 企业应用的id | ||||
|    * @return 部门id | ||||
|    */ | ||||
|   WxCpAgent get(Integer agentId) throws WxErrorException; | ||||
|  | ||||
| } | ||||
| @ -249,6 +249,8 @@ public interface WxCpService { | ||||
|    */ | ||||
|   WxCpUserService getUserService(); | ||||
|  | ||||
|   WxCpAgentService getAgentService(); | ||||
|  | ||||
|   /** | ||||
|    * http请求对象 | ||||
|    */ | ||||
|  | ||||
| @ -0,0 +1,44 @@ | ||||
| package me.chanjar.weixin.cp.api.impl; | ||||
|  | ||||
| import com.google.gson.JsonElement; | ||||
| import com.google.gson.JsonParser; | ||||
| import com.google.gson.reflect.TypeToken; | ||||
| import me.chanjar.weixin.common.exception.WxErrorException; | ||||
| import me.chanjar.weixin.cp.api.WxCpAgentService; | ||||
| import me.chanjar.weixin.cp.api.WxCpService; | ||||
| import me.chanjar.weixin.cp.bean.WxCpAgent; | ||||
| import me.chanjar.weixin.cp.bean.WxCpDepart; | ||||
| import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder; | ||||
|  | ||||
| import java.util.List; | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * <pre> | ||||
|  *  管理企业号应用 | ||||
|  *  Created by huansinho on 2018/4/13. | ||||
|  * </pre> | ||||
|  * | ||||
|  * @author <a href="https://github.com/huansinho">huansinho</a> | ||||
|  */ | ||||
| public class WxCpAgentServiceImpl implements WxCpAgentService { | ||||
|   private WxCpService mainService; | ||||
|  | ||||
|   public WxCpAgentServiceImpl(WxCpService mainService) { | ||||
|     this.mainService = mainService; | ||||
|   } | ||||
|  | ||||
|   @Override | ||||
|   public WxCpAgent get(Integer agentId) throws WxErrorException { | ||||
|  | ||||
|     String url = "https://qyapi.weixin.qq.com/cgi-bin/agent/get"; | ||||
|     if (agentId != null) { | ||||
|       url += "?agentid=" + agentId; | ||||
|     } else { | ||||
|       throw new IllegalArgumentException("缺少agentid参数"); | ||||
|     } | ||||
|     String responseContent = this.mainService.get(url, null); | ||||
|     return WxCpAgent.fromJson(responseContent); | ||||
|   } | ||||
|  | ||||
| } | ||||
| @ -39,6 +39,7 @@ public abstract class WxCpServiceAbstractImpl<H, P> implements WxCpService, Requ | ||||
|   private WxCpMenuService menuService = new WxCpMenuServiceImpl(this); | ||||
|   private WxCpOAuth2Service oauth2Service = new WxCpOAuth2ServiceImpl(this); | ||||
|   private WxCpTagService tagService = new WxCpTagServiceImpl(this); | ||||
|   private WxCpAgentService agentService = new WxCpAgentServiceImpl(this); | ||||
|  | ||||
|   /** | ||||
|    * 全局的是否正在刷新access token的锁 | ||||
| @ -368,4 +369,13 @@ public abstract class WxCpServiceAbstractImpl<H, P> implements WxCpService, Requ | ||||
|   public void setTagService(WxCpTagService tagService) { | ||||
|     this.tagService = tagService; | ||||
|   } | ||||
|  | ||||
|   @Override | ||||
|   public WxCpAgentService getAgentService() { | ||||
|     return agentService; | ||||
|   } | ||||
|  | ||||
|   public void setAgentService(WxCpAgentService agentService) { | ||||
|     this.agentService = agentService; | ||||
|   } | ||||
| } | ||||
|  | ||||
| @ -0,0 +1,96 @@ | ||||
| package me.chanjar.weixin.cp.bean; | ||||
|  | ||||
| import com.google.gson.annotations.SerializedName; | ||||
| import lombok.Data; | ||||
| import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder; | ||||
|  | ||||
| import java.io.Serializable; | ||||
| import java.util.List; | ||||
|  | ||||
| /** | ||||
|  * <pre> | ||||
|  * 企业号应用信息. | ||||
|  * Created by huansinho on 2018/4/13. | ||||
|  * </pre> | ||||
|  * | ||||
|  * @author <a href="https://github.com/huansinho">huansinho</a> | ||||
|  */ | ||||
| @Data | ||||
| public class WxCpAgent implements Serializable { | ||||
|  | ||||
|   @SerializedName("errcode") | ||||
|   private Integer errcode; | ||||
|  | ||||
|   @SerializedName("errmsg") | ||||
|   private String errmsg; | ||||
|  | ||||
|   @SerializedName("agentid") | ||||
|   private Integer agentid; | ||||
|  | ||||
|   @SerializedName("name") | ||||
|   private String name; | ||||
|  | ||||
|   @SerializedName("square_logo_url") | ||||
|   private String squareLogoUrl; | ||||
|  | ||||
|   @SerializedName("description") | ||||
|   private String description; | ||||
|  | ||||
|   @SerializedName("allow_userinfos") | ||||
|   private Users allowUserinfos; | ||||
|  | ||||
|   @SerializedName("allow_partys") | ||||
|   private Partys allowPartys; | ||||
|  | ||||
|   @SerializedName("allow_tags") | ||||
|   private Tags allowTags; | ||||
|  | ||||
|   @SerializedName("close") | ||||
|   private Integer close; | ||||
|  | ||||
|   @SerializedName("redirect_domain") | ||||
|   private String redirectDomain; | ||||
|  | ||||
|   @SerializedName("report_location_flag") | ||||
|   private Integer reportLocationFlag; | ||||
|  | ||||
|   @SerializedName("isreportenter") | ||||
|   private Integer isreportenter; | ||||
|  | ||||
|   @SerializedName("home_url") | ||||
|   private String homeUrl; | ||||
|  | ||||
|   public static WxCpAgent fromJson(String json) { | ||||
|     return WxCpGsonBuilder.create().fromJson(json, WxCpAgent.class); | ||||
|   } | ||||
|  | ||||
|   public String toJson() { | ||||
|     return WxCpGsonBuilder.create().toJson(this); | ||||
|   } | ||||
|  | ||||
|   @Data | ||||
|   public static class Users implements Serializable { | ||||
|     @SerializedName("user") | ||||
|     private List<User> user; | ||||
|   } | ||||
|  | ||||
|  | ||||
|   @Data | ||||
|   public class User implements Serializable { | ||||
|     @SerializedName("userid") | ||||
|     private String userid; | ||||
|   } | ||||
|  | ||||
|   @Data | ||||
|   public class Partys { | ||||
|     @SerializedName("partyid") | ||||
|     private List<Integer> partyids = null; | ||||
|   } | ||||
|  | ||||
|   @Data | ||||
|   public class Tags { | ||||
|     @SerializedName("tagid") | ||||
|     private List<Integer> tagids = null; | ||||
|   } | ||||
|  | ||||
| } | ||||
| @ -0,0 +1,52 @@ | ||||
| package me.chanjar.weixin.cp.api.impl; | ||||
|  | ||||
| import com.google.inject.Inject; | ||||
| import me.chanjar.weixin.common.api.WxConsts; | ||||
| import me.chanjar.weixin.common.bean.menu.WxMenu; | ||||
| import me.chanjar.weixin.common.bean.menu.WxMenuButton; | ||||
| import me.chanjar.weixin.cp.api.ApiTestModule; | ||||
| import me.chanjar.weixin.cp.api.WxCpAgentService; | ||||
| import me.chanjar.weixin.cp.api.WxCpService; | ||||
| import me.chanjar.weixin.cp.bean.WxCpAgent; | ||||
| import me.chanjar.weixin.cp.config.WxCpInMemoryConfigStorage; | ||||
| import org.mockito.Mock; | ||||
| import org.testng.Assert; | ||||
| import org.testng.annotations.DataProvider; | ||||
| import org.testng.annotations.Guice; | ||||
| import org.testng.annotations.Test; | ||||
|  | ||||
| import static org.testng.Assert.assertEquals; | ||||
| import static org.testng.Assert.assertNotNull; | ||||
| import static org.mockito.Mockito.*; | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * <pre> | ||||
|  *  管理企业号应用-测试 | ||||
|  *  Created by huansinho on 2018/4/13. | ||||
|  * </pre> | ||||
|  * | ||||
|  * @author <a href="https://github.com/huansinho">huansinho</a> | ||||
|  */ | ||||
| public class WxCpAgentServiceImplTest { | ||||
|  | ||||
|   protected WxCpService wxService = mock(WxCpService.class); | ||||
|  | ||||
|   @Test | ||||
|   public void testGet() throws Exception { | ||||
|     String returnJson = "{\"errcode\": 0,\"errmsg\": \"ok\",\"agentid\": 9,\"name\": \"测试应用\",\"square_logo_url\": \"http://wx.qlogo.cn/mmhead/alksjf;lasdjf;lasjfuodiuj3rj2o34j/0\",\"description\": \"这是一个企业号应用\",\"allow_userinfos\": {\"user\": [{\"userid\": \"0009854\"}, {\"userid\": \"1723\"}, {\"userid\": \"5625\"}]},\"allow_partys\": {\"partyid\": [42762742]},\"allow_tags\": {\"tagid\": [23, 22, 35, 19, 32, 125, 133, 46, 150, 38, 183, 9, 7]},\"close\": 0,\"redirect_domain\": \"weixin.com.cn\",\"report_location_flag\": 0,\"isreportenter\": 0,\"home_url\": \"\"}"; | ||||
|     when(wxService.get("https://qyapi.weixin.qq.com/cgi-bin/agent/get?agentid=9", null)).thenReturn(returnJson); | ||||
|     when(wxService.getAgentService()).thenReturn(new WxCpAgentServiceImpl(wxService)); | ||||
|  | ||||
|     WxCpAgentService wxAgentService = this.wxService.getAgentService(); | ||||
|     WxCpAgent wxCpAgent = wxAgentService.get(9); | ||||
|  | ||||
|     Assert.assertEquals(9, wxCpAgent.getAgentid().intValue()); | ||||
|  | ||||
|     Assert.assertEquals(new Integer[]{42762742}, wxCpAgent.getAllowPartys().getPartyids().toArray()); | ||||
|  | ||||
|     Assert.assertEquals(new Integer[]{23, 22, 35, 19, 32, 125, 133, 46, 150, 38, 183, 9, 7}, wxCpAgent.getAllowTags().getTagids().toArray()); | ||||
|  | ||||
|   } | ||||
|  | ||||
| } | ||||
| @ -0,0 +1,25 @@ | ||||
| package me.chanjar.weixin.cp.bean; | ||||
|  | ||||
| import org.testng.Assert; | ||||
| import org.testng.annotations.Test; | ||||
|  | ||||
| /** | ||||
|  * Created by huansinho on 2018/4/13. | ||||
|  */ | ||||
| @Test | ||||
| public class WxCpAgentTest { | ||||
|  | ||||
|   public void testDeserialize() { | ||||
|     String json = "{\"errcode\": 0,\"errmsg\": \"ok\",\"agentid\": 9,\"name\": \"测试应用\",\"square_logo_url\": \"http://wx.qlogo.cn/mmhead/alksjf;lasdjf;lasjfuodiuj3rj2o34j/0\",\"description\": \"这是一个企业号应用\",\"allow_userinfos\": {\"user\": [{\"userid\": \"0009854\"}, {\"userid\": \"1723\"}, {\"userid\": \"5625\"}]},\"allow_partys\": {\"partyid\": [42762742]},\"allow_tags\": {\"tagid\": [23, 22, 35, 19, 32, 125, 133, 46, 150, 38, 183, 9, 7]},\"close\": 0,\"redirect_domain\": \"weixin.com.cn\",\"report_location_flag\": 0,\"isreportenter\": 0,\"home_url\": \"\"}"; | ||||
|  | ||||
|     WxCpAgent wxCpAgent = WxCpAgent.fromJson(json); | ||||
|  | ||||
|     Assert.assertEquals(9, wxCpAgent.getAgentid().intValue()); | ||||
|  | ||||
|     Assert.assertEquals(new Integer[]{42762742}, wxCpAgent.getAllowPartys().getPartyids().toArray()); | ||||
|  | ||||
|     Assert.assertEquals(new Integer[]{23, 22, 35, 19, 32, 125, 133, 46, 150, 38, 183, 9, 7}, wxCpAgent.getAllowTags().getTagids().toArray()); | ||||
|  | ||||
|   } | ||||
|  | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 huansinho
					huansinho