123 lines
3.1 KiB
Go
123 lines
3.1 KiB
Go
package dao
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"net/url"
|
|
"strconv"
|
|
|
|
"go-common/app/service/main/vip/model"
|
|
"go-common/library/ecode"
|
|
"go-common/library/log"
|
|
"go-common/library/net/metadata"
|
|
|
|
"github.com/pkg/errors"
|
|
)
|
|
|
|
const (
|
|
_token = "/x/internal/v1/captcha/token"
|
|
_verify = "/x/internal/v1/captcha/verify"
|
|
|
|
_openCode = "/pay/codeOpen"
|
|
_passportDetail = "/intranet/acc/detail"
|
|
|
|
token = "vip-service.token"
|
|
)
|
|
|
|
//GetPassportDetail get passport detail
|
|
func (d *Dao) GetPassportDetail(c context.Context, mid int64) (res *model.PassportDetail, err error) {
|
|
ip := metadata.String(c, metadata.RemoteIP)
|
|
val := url.Values{}
|
|
val.Add("mid", strconv.FormatInt(mid, 10))
|
|
resq := new(struct {
|
|
Code int `json:"code"`
|
|
Data *model.PassportDetail `json:"data"`
|
|
})
|
|
defer func() {
|
|
log.Info("get passport detail is error url:%+v params:%+v resq:%+v err:%+v", d.passportDetail, val, resq, err)
|
|
}()
|
|
if err = d.client.Get(c, d.passportDetail, ip, val, resq); err != nil {
|
|
err = errors.WithStack(err)
|
|
return
|
|
}
|
|
if resq.Code != ecode.OK.Code() {
|
|
err = ecode.Int(resq.Code)
|
|
return
|
|
}
|
|
res = resq.Data
|
|
return
|
|
}
|
|
|
|
//OpenCode open code.
|
|
func (d *Dao) OpenCode(c context.Context, mid, batchCodeID int64, unit int32, remark, code string) (data *model.CommonResq, err error) {
|
|
data = new(model.CommonResq)
|
|
val := url.Values{}
|
|
val.Add("token", token)
|
|
val.Add("remark", remark)
|
|
val.Add("code", code)
|
|
val.Add("mid", fmt.Sprintf("%v", mid))
|
|
if err = d.doRequest(c, d.c.Property.VipURL, _openCode, "", val, data, d.client.Post); err != nil {
|
|
err = errors.WithStack(err)
|
|
return
|
|
}
|
|
return
|
|
}
|
|
|
|
//GetOpenInfo get open info.
|
|
func (d *Dao) GetOpenInfo(c context.Context, code string) (data *model.OpenCodeResp, err error) {
|
|
data = new(model.OpenCodeResp)
|
|
val := url.Values{}
|
|
val.Add("token", token)
|
|
val.Add("code", code)
|
|
if err = d.doRequest(c, d.c.Property.VipURL, _openCode, "", val, data, d.client.Get); err != nil {
|
|
err = errors.WithStack(err)
|
|
return
|
|
}
|
|
return
|
|
}
|
|
|
|
//GetToken get open token.
|
|
func (d *Dao) GetToken(c context.Context, bid string, ip string) (data *model.TokenResq, err error) {
|
|
data = new(model.TokenResq)
|
|
val := url.Values{}
|
|
val.Add("bid", bid)
|
|
if err = d.doRequest(c, d.c.Property.APICoURL, _token, ip, val, data, d.client.Get); err != nil {
|
|
err = errors.WithStack(err)
|
|
return
|
|
}
|
|
return
|
|
}
|
|
|
|
//Verify verify code.
|
|
func (d *Dao) Verify(c context.Context, code, token, ip string) (data *model.TokenResq, err error) {
|
|
data = new(model.TokenResq)
|
|
val := url.Values{}
|
|
val.Add("token", token)
|
|
val.Add("code", code)
|
|
if err = d.doRequest(c, d.c.Property.APICoURL, _verify, ip, val, data, d.client.Post); err != nil {
|
|
err = errors.WithStack(err)
|
|
return
|
|
}
|
|
return
|
|
}
|
|
|
|
func (d *Dao) doRequest(c context.Context, basicURL, path, IP string, params url.Values, data interface{},
|
|
fn func(c context.Context, uri, ip string, params url.Values, res interface{}) error) (err error) {
|
|
var (
|
|
url = basicURL + path
|
|
)
|
|
if len(IP) == 0 {
|
|
IP = "127.0.0.1"
|
|
}
|
|
|
|
err = fn(c, url, IP, params, data)
|
|
log.Info("reques url %v params:%+v result:%+v", url, params, data)
|
|
if err != nil {
|
|
log.Error("request error %+v", err)
|
|
err = errors.WithStack(err)
|
|
return
|
|
}
|
|
return
|
|
|
|
}
|