99 lines
3.3 KiB
Go
99 lines
3.3 KiB
Go
package service
|
|
|
|
import (
|
|
"encoding/json"
|
|
"io"
|
|
"net/http"
|
|
"net/url"
|
|
"strings"
|
|
)
|
|
|
|
const (
|
|
contentTypeApplicationJson = "application/json"
|
|
)
|
|
|
|
var (
|
|
AccessTokenUrl = "https://api.xiaoe-tech.com/token" // 获取access_token
|
|
|
|
RegisterUserUrl = "https://api.xiaoe-tech.com/xe.user.register/1.0.0" // 注册用户
|
|
UpdateUserUrl = "https://api.xiaoe-tech.com/xe.user.info.update/1.0.0" // 修改用户信息
|
|
GetUserInfoUrl = "https://api.xiaoe-tech.com/xe.user.info.get/1.0.0" // 获取用户信息
|
|
GetUserListUrl = "https://api.xiaoe-tech.com/xe.user.batch.get/2.0.0" // 获取用户列表
|
|
|
|
GetAliveListUrl = "https://api.xiaoe-tech.com/xe.alive.list.get/2.0.0" // 获取直播列表
|
|
GetAliveDetailUrl = "https://api.xiaoe-tech.com/xe.alive.detail.get/2.0.0" // 获取直播详情
|
|
|
|
GetClassListUrl = "https://api.xiaoe-tech.com/xe.big_class.list.get/1.0.0" // 获取班课列表
|
|
|
|
GetGoodsListUrl = "https://api.xiaoe-tech.com/xe.goods.list.get/4.0.0" // 获取商品列表
|
|
GetGoodsInfoUrl = "https://api.xiaoe-tech.com/xe.goods.detail.get/4.0.0" // 获取商品详情
|
|
|
|
GetCampTaskListURL = "https://api.xiaoe-tech.com/xe.camp.task.list/1.0.0" // 获取训练营营期任务
|
|
|
|
GetCourseListUrl = "https://api.xiaoe-tech.com/xe.course.course.list/1.0.0" // 获取课程列表
|
|
GetSubCourseListUrl = "https://api.xiaoe-tech.com/xe.course.sub.course.list/1.0.0" // 获取子课程列表
|
|
GetCourseChapterListUrl = "https://api.xiaoe-tech.com/xe.course.course.chapter.get/1.0.0" // 获取课程章节列表
|
|
|
|
OrderDeliveryUrl = "https://api.xiaoe-tech.com/xe.order.delivery/2.0.0" // 用户开通产品包权益
|
|
OrderDeliveryUrlV1 = "https://api.xiaoe-tech.com/xe.order.delivery/1.0.0" // 用户开通产品包权益1.0
|
|
PermissionCheckUrl = "https://api.xiaoe-tech.com/xe.user.permission.check/1.0.0" // 查询用户资源权益
|
|
PurchaseDeleteUrl = "https://api.xiaoe-tech.com/xe.purchase.delete/1.0.0" // 取消订购
|
|
)
|
|
|
|
// NewClient
|
|
func NewClient(AccessTokenManager AccessTokenManager) (client *Client) {
|
|
return &Client{
|
|
AccessTokenManager: AccessTokenManager,
|
|
HttpClient: http.DefaultClient,
|
|
}
|
|
}
|
|
|
|
type Client struct {
|
|
AccessTokenManager AccessTokenManager
|
|
HttpClient *http.Client
|
|
}
|
|
|
|
// CurlDo 执行 请求
|
|
func (client *Client) CurlDo(method string, methodUrl string, paramsMap map[string]interface{}) (resp []byte, err error) {
|
|
// 添加 access_token
|
|
accessToken, err := client.AccessTokenManager.GetAccessToken()
|
|
if err != nil {
|
|
return
|
|
}
|
|
params := make(map[string]interface{})
|
|
params["access_token"] = accessToken
|
|
|
|
for k, v := range paramsMap {
|
|
params[k] = v
|
|
}
|
|
|
|
str, _ := json.Marshal(params)
|
|
payload := strings.NewReader(string(str))
|
|
|
|
req, _ := http.NewRequest(method, methodUrl, payload)
|
|
|
|
// 检测URL
|
|
if !strings.HasPrefix(req.URL.String(), "http") {
|
|
parse, _ := url.Parse(AccessTokenUrl)
|
|
req.URL.Host = parse.Host
|
|
req.URL.Scheme = parse.Scheme
|
|
}
|
|
|
|
// 默认 Header Content-Type
|
|
if req.Method == http.MethodPost && req.Header.Get("Content-Type") == "" {
|
|
req.Header.Set("Content-Type", contentTypeApplicationJson)
|
|
}
|
|
|
|
response, err := client.HttpClient.Do(req)
|
|
if err != nil {
|
|
return
|
|
}
|
|
defer response.Body.Close()
|
|
|
|
resp, err = io.ReadAll(response.Body)
|
|
if err != nil {
|
|
return
|
|
}
|
|
return
|
|
}
|