101 lines
2.8 KiB
Go
101 lines
2.8 KiB
Go
package vip
|
|
|
|
import (
|
|
"bytes"
|
|
"context"
|
|
|
|
"go-common/app/interface/main/account/model"
|
|
v1 "go-common/app/service/main/vip/api"
|
|
"go-common/library/log"
|
|
)
|
|
|
|
// ElemeOAuthURI get ele oauth uri.
|
|
func (s *Service) ElemeOAuthURI(c context.Context, csrf string) string {
|
|
var buf bytes.Buffer
|
|
buf.WriteString(s.c.Vipproperty.EleOAuthURI)
|
|
buf.WriteString("?consumer_key=")
|
|
buf.WriteString(s.c.Vipproperty.EleConsumerKey)
|
|
buf.WriteString("&scope=user_basic_info&redirect_uri=")
|
|
buf.WriteString(s.c.Vipproperty.EleOAuthCallBackURI)
|
|
buf.WriteString("&state=")
|
|
buf.WriteString(csrf)
|
|
return buf.String()
|
|
}
|
|
|
|
// OpenIDByAuthCode third get open_id by auth code.
|
|
func (s *Service) OpenIDByAuthCode(c context.Context, a *model.ArgAuthCode) (res *model.OpenIDResp, err error) {
|
|
var (
|
|
data *model.OAuth2InfoResp
|
|
r *v1.RegisterOpenIDReply
|
|
)
|
|
//oauth2 token.
|
|
if data, err = s.vipDao.OAuth2ByCode(c, a); err != nil {
|
|
return
|
|
}
|
|
res = new(model.OpenIDResp)
|
|
if r, err = s.vipgRPC.RegisterOpenID(c, &v1.RegisterOpenIDReq{Mid: data.Mid, AppId: a.APPID}); err != nil {
|
|
return
|
|
}
|
|
res.OpenID = r.OpenId
|
|
return
|
|
}
|
|
|
|
// OpenAuthCallBack open auth callback[third->bilibili].
|
|
func (s *Service) OpenAuthCallBack(c context.Context, a *model.ArgOpenAuthCallBack) (uri string) {
|
|
var (
|
|
ret = "0"
|
|
err error
|
|
)
|
|
if _, err = s.vipgRPC.OpenAuthCallBack(c, &v1.OpenAuthCallBackReq{
|
|
Mid: a.Mid,
|
|
ThirdCode: a.ThirdCode,
|
|
AppId: a.AppID,
|
|
}); err != nil {
|
|
log.Error("vipSvc.OpenAuthCallBack(%+v) err(%+v)", a, err)
|
|
ret = "1"
|
|
}
|
|
uri = s.c.Vipproperty.ActivityURI + "?bind_ret=" + ret
|
|
return
|
|
}
|
|
|
|
// BilibiliPrizeGrant vip prize grant.
|
|
func (s *Service) BilibiliPrizeGrant(c context.Context, a *model.ArgBilibiliPrizeGrant) (res *v1.BilibiliPrizeGrantReply, err error) {
|
|
return s.vipgRPC.BilibiliPrizeGrant(c, &v1.BilibiliPrizeGrantReq{
|
|
PrizeKey: a.PrizeKey,
|
|
UniqueNo: a.UniqueNo,
|
|
OpenId: a.OpenID,
|
|
AppId: a.AppID,
|
|
})
|
|
}
|
|
|
|
// BilibiliVipGrant vip grant.
|
|
func (s *Service) BilibiliVipGrant(c context.Context, a *model.ArgBilibiliVipGrant) (err error) {
|
|
_, err = s.vipgRPC.BilibiliVipGrant(c, &v1.BilibiliVipGrantReq{
|
|
OpenId: a.OpenID,
|
|
AppId: a.AppID,
|
|
OutOpenId: a.OutOpenID,
|
|
OutOrderNo: a.OutOrderNO,
|
|
Duration: a.Duration,
|
|
})
|
|
return
|
|
}
|
|
|
|
// OpenBindByOutOpenID associate user bind by out_open_id [third -> bilibili].
|
|
func (s *Service) OpenBindByOutOpenID(c context.Context, a *model.ArgBind) (err error) {
|
|
_, err = s.vipgRPC.OpenBindByOutOpenID(c, &v1.OpenBindByOutOpenIDReq{
|
|
OpenId: a.OpenID,
|
|
OutOpenId: a.OutOpenID,
|
|
AppId: a.AppID,
|
|
})
|
|
return
|
|
}
|
|
|
|
// UserInfoByOpenID get userinfo by open_id.
|
|
func (s *Service) UserInfoByOpenID(c context.Context, a *model.ArgUserInfoByOpenID) (res *v1.UserInfoByOpenIDReply, err error) {
|
|
return s.vipgRPC.UserInfoByOpenID(c, &v1.UserInfoByOpenIDReq{
|
|
OpenId: a.OpenID,
|
|
Ip: a.IP,
|
|
AppId: a.AppID,
|
|
})
|
|
}
|