81 lines
1.8 KiB
Go
81 lines
1.8 KiB
Go
package dao
|
||
|
||
import (
|
||
"context"
|
||
"net/url"
|
||
|
||
"go-common/app/admin/ep/marthe/model"
|
||
)
|
||
|
||
const (
|
||
_qyWechatURL = "https://qyapi.weixin.qq.com"
|
||
_corpID = "wx0833ac9926284fa5" // 企业微信:Bilibili的企业ID
|
||
_departmentID = "12" // 公司统一用部门ID
|
||
_corpsecret = "WveODxk3xpT9box48wcxkmArx3mu6d4vJHdJkNy_iTk"
|
||
|
||
_getToken = "/cgi-bin/gettoken"
|
||
_userList = "/cgi-bin/user/list"
|
||
)
|
||
|
||
// WechatAccessToken query access token with the specified secret 企业微信api获取公司token
|
||
func (d *Dao) WechatAccessToken(c context.Context) (token string, err error) {
|
||
var (
|
||
u string
|
||
params = url.Values{}
|
||
res struct {
|
||
ErrCode int `json:"errcode"`
|
||
ErrMsg string `json:"errmsg"`
|
||
AccessToken string `json:"access_token"`
|
||
ExpiresIn int32 `json:"expires_in"`
|
||
}
|
||
)
|
||
u = _qyWechatURL + _getToken
|
||
params.Set("corpid", _corpID)
|
||
params.Set("corpsecret", _corpsecret)
|
||
|
||
if err = d.httpClient.Get(c, u, "", params, &res); err != nil {
|
||
return
|
||
}
|
||
|
||
if res.ErrCode != 0 {
|
||
return
|
||
}
|
||
|
||
token = res.AccessToken
|
||
return
|
||
}
|
||
|
||
// WechatContacts Wechat Contacts 获取用户信息列表
|
||
func (d *Dao) WechatContacts(c context.Context) (contacts []*model.WechatContact, err error) {
|
||
var (
|
||
token string
|
||
u string
|
||
params = url.Values{}
|
||
res struct {
|
||
ErrCode int `json:"errcode"`
|
||
ErrMsg string `json:"errmsg"`
|
||
UserList []*model.WechatContact `json:"userlist"`
|
||
}
|
||
)
|
||
//get token
|
||
if token, err = d.WechatAccessToken(c); err != nil {
|
||
return
|
||
}
|
||
|
||
u = _qyWechatURL + _userList
|
||
params.Set("access_token", token)
|
||
params.Set("department_id", _departmentID)
|
||
params.Set("fetch_child", "1")
|
||
|
||
if err = d.httpClient.Get(c, u, "", params, &res); err != nil {
|
||
return
|
||
}
|
||
|
||
if res.ErrCode != 0 {
|
||
return
|
||
}
|
||
|
||
contacts = res.UserList
|
||
return
|
||
}
|