springboot集成teams的方法是什么

springboot集成teams的方法是什么

本篇内容主要讲解“springboot集成teams的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“springboot集成teams的方法是什么”吧!

添加依赖

<dependency><groupId>com.microsoft.graph</groupId><artifactId>microsoft-graph</artifactId><version>2.3.2</version></dependency><dependency><groupId>com.microsoft.graph</groupId><artifactId>microsoft-graph-core</artifactId><version>1.0.5</version></dependency><dependency><groupId>com.microsoft.graph</groupId><artifactId>microsoft-graph-auth</artifactId><version>0.3.0-SNAPSHOT</version></dependency><dependency><groupId>com.microsoft.azure</groupId><artifactId>msal4j</artifactId><version>1.0.0</version></dependency>

业务逻辑层

packagecom.tg.admin.service;importcom.tg.admin.utils.CommonResult;importjava.util.Map;/***用户信息**@authorsummer.chou*@date2020/11/26*/publicinterfaceSplGraphService{/***获取token(自动刷新)**@returntoken*/StringgetToken();*获取用户所属团队*@return结果CommonResult<Map<String,Object>>getTeamsInfo();*获取用户所属渠道*@paramteamsId团队IDCommonResult<Map<String,Object>>getChannel(StringteamsId);*根据teamsId、channelId获取用户信息*@paramteamsId团队ID*@paramchannelId渠道IDCommonResult<Map<String,Object>>getMember(StringteamsId,StringchannelId);*发送消息*@paramcontent消息内容*@paramteamId团队IDCommonResult<Map<String,Object>>sendMs(Stringcontent,StringteamId,StringchannelId);*添加渠道*@paramdisplayName渠道名称*@paramdescription渠道备注*@paramteamId渠道ID*@return渠道IDCommonResult<Map<String,Object>>addChannel(StringdisplayName,Stringdescription,StringteamId);*添加成员*@paramuserNum用户名称CommonResult<Map<String,Object>>addMembers(StringteamId,StringchannelId,StringuserNum);}

业务逻辑实现

packagecom.tg.admin.service.impl;importcom.alibaba.fastjson.JSONArray;importcom.alibaba.fastjson.JSONObject;importcom.microsoft.graph.models.extensions.IGraphServiceClient;importcom.microsoft.graph.requests.extensions.GraphServiceClient;importcom.tg.admin.service.ChannelUserLogService;importcom.tg.admin.service.SplGraphService;importcom.tg.admin.utils.*;importlombok.extern.slf4j.Slf4j;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.context.annotation.Lazy;importorg.springframework.http.HttpHeaders;importorg.springframework.http.MediaType;importorg.springframework.stereotype.Service;importorg.springframework.web.client.RestTemplate;importjava.util.HashMap;importjava.util.List;importjava.util.Map;/***teamsGraph模块第三方接口调用封装**@authorsummer.chou*@date2020/12/30*/@Service@Slf4jpublicclassSplGraphServiceImplimplementsSplGraphService{@Value("#{'${teams.graph.scopes}'.split(',')}")privateList<String>scopes;@Value("${teams.graph.clientId}")privateStringclientId;@Value("${teams.graph.team.url}")privateStringteamsUrl;@Value("${teams.graph.channel.url}")privateStringchannelUrl;@Value("${teams.graph.add.channel.url}")privateStringaddChannelUrl;@Value("${teams.graph.ms.url}")privateStringmsUrl;@Value("${teams.graph.member.url}")privateStringmemberUrl;@Value("${teams.graph.add.channel.members.url}")privateStringaddChannelMembersUrl;@Value("${teams.graph.account}")privateStringaccount;@Value("${teams.graph.password}")privateStringpassword;privateRedisUtilredisUtil;privateRestTemplaterestTemplate;privateChannelUserLogServicechannelUserLogService;publicSplGraphServiceImpl(RestTemplaterestTemplate,RedisUtilredisUtil,@LazyChannelUserLogServicechannelUserLogService){this.restTemplate=restTemplate;this.redisUtil=redisUtil;this.channelUserLogService=channelUserLogService;}@OverridepublicStringgetToken(){Objecttoken=redisUtil.get(Constants.ADMIN_TOKEN_KEY+account);try{if(token==null){MyAuthenticationProviderauthProvider=newMyAuthenticationProvider(clientId,scopes,account,password);IGraphServiceClientgraphClient=GraphServiceClient.builder().authenticationProvider(authProvider).buildClient();graphClient.me().buildRequest().get();token=authProvider.getToken();redisUtil.set(Constants.ADMIN_TOKEN_KEY+account,token,Constants.TOKEN_EXPIRES_TIME);}}catch(Exceptione){log.info("获取teams-graph,获取token接口异常",e);}returntoken.toString();publicCommonResult<Map<String,Object>>getTeamsInfo(){JSONArrayvalue=null;Map<String,Object>result=newHashMap<>();JSONObjectjsonObject=newJSONObject();log.info("调用temas获取团队信息:teamsUrl{}",teamsUrl);//设置请求头HttpHeadersheaders=newHttpHeaders();headers.set("Authorization",getToken());headers.setContentType(MediaType.APPLICATION_JSON_UTF8);jsonObject=RestTemplateUtils.requestByGet(teamsUrl,null,restTemplate,headers);log.info("返回值:jsonObject:{}",jsonObject.toJSONString());value=jsonObject.getJSONArray("value");result.put("value",value);e.printStackTrace();returnCommonResult.ok(result);publicCommonResult<Map<String,Object>>getChannel(StringteamId){JSONArrayarray=null;Stringurl=channelUrl.replace("{team-id}",teamId);log.info("调用teams获取用户渠道url:{}",url);jsonObject=RestTemplateUtils.requestByGet(url,null,restTemplate,headers);log.info("返回结果:jsonObject:{}",jsonObject.toJSONString());array=jsonObject.getJSONArray("value");result.put("value",array);publicCommonResult<Map<String,Object>>getMember(StringteamsId,StringchannelId){Stringurl=memberUrl.replace("{team-id}",teamsId).replace("{channel-id}",channelId);log.info("调用teams获取渠道成员:url:{}",url);publicCommonResult<Map<String,Object>>sendMs(Stringcontent,StringteamId,StringchannelId){Stringurl=msUrl.replace("{team-id}",teamId).replace("{channel-id}",channelId);log.info("调用teams发送消息:url:{}",url);Map<String,Object>map=newHashMap<String,Object>();Map<String,Object>body=newHashMap<>();map.put("content",content);map.put("contentType","html");body.put("body",map);jsonObject=RestTemplateUtils.requestByPost(url,body,restTemplate,headers);log.info("返回结果:jsonObject:{}",jsonObject.toJSONString());returnCommonResult.ok();publicCommonResult<Map<String,Object>>addChannel(StringdisplayName,Stringdescription,StringteamId){Stringurl=addChannelUrl.replace("{id}",teamId);log.info("调用teams添加渠道:url:{}",url);map.put("displayName",displayName);map.put("description",description);jsonObject=RestTemplateUtils.requestByPost(url,map,restTemplate,headers);if(jsonObject!=null){result.put("id",jsonObject.getString("id"));publicCommonResult<Map<String,Object>>addMembers(StringteamId,StringchannelId,StringuserNum){Stringurl=addChannelMembersUrl.replace("{team-id}",teamId).replace("{channel-id}",channelId);log.info("调用teams添加成员:url:{}",url);map.put("@odata.type","#microsoft.graph.aadUserConversationMember");JSONArrayroles=newJSONArray();roles.add("owner");map.put("roles",roles);}

RestTemplateUtils 工具类

packagecom.tg.admin.utils;importcom.alibaba.fastjson.JSONObject;importorg.springframework.http.HttpEntity;importorg.springframework.http.HttpHeaders;importorg.springframework.http.HttpMethod;importorg.springframework.http.ResponseEntity;importorg.springframework.stereotype.Component;importorg.springframework.util.MultiValueMap;importorg.springframework.web.client.RestTemplate;importorg.springframework.web.util.UriComponentsBuilder;importjava.util.HashMap;importjava.util.Map;/***RestTemplateUtils工具类**@authorsummer.chou*@date2020/11/26*/@ComponentpublicclassRestTemplateUtils{/***根据get方式请求接口(复合类型get请求,支持所有get请求)**@paramurl请求路劲*@parammap请求参数无传null*@paramrestTemplaterestTemplate对象*@returnjson*/publicstaticJSONObjectrequestByGet(Stringurl,HashMap<String,Object>map,RestTemplaterestTemplate,HttpHeadersheaders){//header填充HttpEntity<MultiValueMap<String,Object>>request=newHttpEntity(null,headers);UriComponentsBuilderbuilder=UriComponentsBuilder.fromHttpUrl(url);//ResponseEntityresponseEntity;ResponseEntity<JSONObject>responseEntity;//如果存在參數if(map!=null){for(Map.Entry<String,Object>e:map.entrySet()){//构建查询参数builder.queryParam(e.getKey(),e.getValue());}//拼接好参数后的URl//test.com/url?param1={param1}&param2={param2};StringreallyUrl=builder.build().toString();responseEntity=restTemplate.exchange(reallyUrl,HttpMethod.GET,request,JSONObject.class);}else{responseEntity=restTemplate.exchange(url,HttpMethod.GET,request,JSONObject.class);}returnresponseEntity.getBody();}/***根据Post方式请求接口(复合类型,post支持所有json格式传参请求post请求)**@paramurl请求路径*@parammap请求参数(无参数传null)*@paramrestTemplaterestTemplate对象*@returnjson*/publicstaticJSONObjectrequestByPost(Stringurl,Map<String,Object>map,RestTemplaterestTemplate,HttpHeadersheaders){//header填充,map填充HttpEntity<Map<String,Object>>request=newHttpEntity<Map<String,Object>>(map,headers);ResponseEntity<JSONObject>entity=restTemplate.postForEntity(url,request,JSONObject.class);returnentity.getBody();}}

测试接口

packagecom.tg.admin.controller;importcom.tg.admin.service.SplGraphService;importcom.tg.admin.utils.CommonResult;importio.swagger.annotations.Api;importio.swagger.annotations.ApiImplicitParam;importio.swagger.annotations.ApiImplicitParams;importio.swagger.annotations.ApiOperation;importlombok.extern.slf4j.Slf4j;importorg.springframework.cloud.context.config.annotation.RefreshScope;importorg.springframework.web.bind.annotation.*;@Api(description="teams-graph模块(第三方测试接口)")@RestController@RequestMapping("/graph")@RefreshScope@Slf4j@Deprecated//添加过期注解,接口保留方便后期异常排查publicclassGraphController{privateSplGraphServicetgService;publicGraphController(SplGraphServicetgService){this.tgService=tgService;}@ApiOperation("获取所属团队信息")@GetMapping("/getTeamsInfo")publicCommonResultgetTeamsInfo(){returntgService.getTeamsInfo();@ApiOperation("获取token")@GetMapping("/getToken")publicCommonResultgetToken(){returnCommonResult.ok(tgService.getToken());@ApiOperation("获取用户所属渠道")@ApiImplicitParams({@ApiImplicitParam(name="teamId",value="团队Id",dataType="string",required=true)})@GetMapping("/getChannel")publicCommonResultgetChannel(@RequestParam(value="teamId")StringteamId){returntgService.getChannel(teamId);@ApiOperation("获取渠道下的成员")@ApiImplicitParam(name="teamId",value="团队Id",dataType="string",required=true),@ApiImplicitParam(name="channelId",value="渠道Id",dataType="string",required=true)@GetMapping("/getMember")publicCommonResultgetMember(@RequestParam(value="teamId")StringteamId,@RequestParam(value="channelId")StringchannelId){returntgService.getMember(teamId,channelId);@ApiOperation("创建团队下的渠道(备用接口)")@ApiImplicitParam(name="displayName",value="渠道名称",dataType="string",required=true),@ApiImplicitParam(name="description",value="渠道备注",dataType="string",required=true)@PostMapping("/addChannel")publicCommonResultaddChannel(@RequestParam(value="teamId")StringteamId,@RequestParam(value="displayName")StringdisplayName,@RequestParam(value="description")Stringdescription){returntgService.addChannel(displayName,description,teamId);@ApiOperation("向渠道里面添加成员(备用接口)")@ApiImplicitParam(name="channelId",value="渠道ID",dataType="string",required=true),@ApiImplicitParam(name="userNum",value="用户Id",dataType="string",required=true)@PostMapping("/addMembers")publicCommonResultaddMembers(@RequestParam(value="teamId")StringteamId,@RequestParam(value="channelId")StringchannelId,@RequestParam(value="userNum")StringuserNumreturntgService.addMembers(teamId,channelId,userNum);@ApiOperation("通过teamId,channelId发送消息")@PostMapping("/sendMs")@ApiImplicitParam(name="content",value="内容",dataType="string",required=true),publicCommonResultsendMs(@RequestParam(value="teamId")StringteamId,@RequestParam(value="content")Stringcontent,@RequestParam(value="channelId")StringchannelId){returntgService.sendMs(content,teamId,channelId);}

yml 配置

teams:graph:#微软master账号,密码account:管理员账号password:管理员密码add:channel:members:url:https://graph.microsoft.com/v1.0/teams/{team-id}/channels/{channel-id}/membersurl:https://graph.microsoft.com/v1.0/teams/{id}/channelschannel:url:https://graph.microsoft.com/v1.0/teams/{team-id}/channelsclientId:e730901a-8bf3-472b-93dd-afe79713bc5bmember:url:https://graph.microsoft.com/v1.0/teams/{team-id}/channels/{channel-id}/membersms:url:https://graph.microsoft.com/v1.0/teams/{team-id}/channels/{channel-id}/messagesscopes:Group.Read.All,User.Readteam:url:https://graph.microsoft.com/v1.0/me/joinedTeams

到此,相信大家对“springboot集成teams的方法是什么”有了更深的了解,不妨来实际操作一番吧!这里是恰卡编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

发布于 2022-01-21 23:15:21
分享
海报
35
上一篇:Forfiles怎么用 下一篇:Linux下vgscan命令怎么使用
目录

    忘记密码?

    图形验证码