You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
100 lines
2.8 KiB
100 lines
2.8 KiB
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, |
|
}) |
|
}
|
|
|