拆分think模块包
This commit is contained in:
@@ -0,0 +1,134 @@
|
||||
package com.gxwebsoft.common.core.utils;
|
||||
|
||||
import cn.hutool.core.util.CharsetUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.http.HttpUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.gxwebsoft.common.core.exception.BusinessException;
|
||||
import org.springframework.data.redis.core.StringRedisTemplate;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
* 企业微信工具类
|
||||
* @author 科技小王子
|
||||
*
|
||||
*/
|
||||
@Component
|
||||
public class WxWorkUtil {
|
||||
private final StringRedisTemplate stringRedisTemplate;
|
||||
private Integer tenantId;
|
||||
public String appId;
|
||||
public String appSecret;
|
||||
public String access_token;
|
||||
public String expires_in;
|
||||
public String nickname;
|
||||
public String userid;
|
||||
public String user_ticket;
|
||||
public String openid;
|
||||
public String external_userid;
|
||||
public String name;
|
||||
public String position;
|
||||
public String mobile;
|
||||
public String gender;
|
||||
public String email;
|
||||
public String avatar;
|
||||
public String thumb_avatar;
|
||||
public String telephone;
|
||||
public String address;
|
||||
public String alias;
|
||||
public String qr_code;
|
||||
public String open_userid;
|
||||
|
||||
@Resource
|
||||
private CacheClient cacheClient;
|
||||
|
||||
|
||||
public WxWorkUtil(StringRedisTemplate stringRedisTemplate){
|
||||
this.stringRedisTemplate = stringRedisTemplate;
|
||||
}
|
||||
|
||||
|
||||
// 实例化客户端
|
||||
public WxWorkUtil client(Integer tenantId) {
|
||||
this.tenantId = tenantId;
|
||||
this.config();
|
||||
return this;
|
||||
}
|
||||
|
||||
// 开发者ID和秘钥
|
||||
private void config() {
|
||||
JSONObject settingInfo = cacheClient.getSettingInfo("wx-work", this.tenantId);
|
||||
if(settingInfo == null){
|
||||
throw new BusinessException("企业微信未配置");
|
||||
}
|
||||
this.appId = settingInfo.getString("corpId");
|
||||
this.appSecret = settingInfo.getString("secret");
|
||||
System.out.println("this.appId = " + this.appId);
|
||||
System.out.println("this.appSecret = " + this.appSecret);
|
||||
}
|
||||
|
||||
// 获取access_token
|
||||
public void getAccessToken(String code) {
|
||||
String key = "cache"+ this.tenantId +":ww:access_token";
|
||||
final String access_token = stringRedisTemplate.opsForValue().get(key);
|
||||
if(access_token != null){
|
||||
this.getUserInfo(code,access_token);
|
||||
}else {
|
||||
String url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=" +this.appId+ "&corpsecret="+ this.appSecret;
|
||||
System.out.println("url = " + url);
|
||||
String response = HttpUtil.get(url, CharsetUtil.CHARSET_UTF_8);
|
||||
System.out.println("response = " + response);
|
||||
final JSONObject jsonObject = JSONObject.parseObject(response);
|
||||
// 获取成功
|
||||
if(jsonObject.getString("access_token") != null){
|
||||
this.access_token = jsonObject.getString("access_token");
|
||||
this.expires_in = jsonObject.getString("expires_in");
|
||||
stringRedisTemplate.opsForValue().set(key,this.access_token,7000, TimeUnit.SECONDS);
|
||||
System.out.println("获取access_token成功 = " + this.access_token);
|
||||
this.getUserInfo(code,this.access_token);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 获取userinfo
|
||||
public void getUserInfo(String code, String access_token) {
|
||||
String url = "https://qyapi.weixin.qq.com/cgi-bin/auth/getuserinfo?access_token=" +access_token+ "&code=" + code;
|
||||
System.out.println("url2 = " + url);
|
||||
String response = HttpUtil.get(url, CharsetUtil.CHARSET_UTF_8);
|
||||
System.out.println("response = " + response);
|
||||
JSONObject jsonObject = JSONObject.parseObject(response);
|
||||
final String errcode = jsonObject.getString("errcode");
|
||||
final String errmsg = jsonObject.getString("errmsg");
|
||||
if(!StrUtil.equals(errcode,"0")){
|
||||
throw new BusinessException(errmsg);
|
||||
}
|
||||
this.userid = jsonObject.getString("userid");
|
||||
this.user_ticket = jsonObject.getString("user_ticket");
|
||||
this.openid = jsonObject.getString("openid");
|
||||
this.external_userid = jsonObject.getString("external_userid");
|
||||
System.out.println("获取用户信息成功 = " + jsonObject);
|
||||
}
|
||||
|
||||
public void getUserProfile(String userid, String access_token) {
|
||||
String url = "https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token="+ access_token +"&userid=" + userid;
|
||||
String response = HttpUtil.get(url, CharsetUtil.CHARSET_UTF_8);
|
||||
System.out.println("response3 = " + response);
|
||||
JSONObject jsonObject = JSONObject.parseObject(response);
|
||||
System.out.println("读取用户详细信息 = " + jsonObject);
|
||||
|
||||
this.name = jsonObject.getString("name");
|
||||
this.position = jsonObject.getString("position");
|
||||
this.gender = jsonObject.getString("gender");
|
||||
this.email = jsonObject.getString("email");
|
||||
this.avatar = jsonObject.getString("avatar");
|
||||
this.thumb_avatar = jsonObject.getString("thumb_avatar");
|
||||
this.telephone = jsonObject.getString("telephone");
|
||||
this.address = jsonObject.getString("address");
|
||||
this.alias = jsonObject.getString("alias");
|
||||
this.qr_code = jsonObject.getString("qr_code");
|
||||
this.open_userid = jsonObject.getString("open_userid");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user