You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
1.2 KiB
Go
66 lines
1.2 KiB
Go
package blink
|
|
|
|
import (
|
|
"joybuywork/internal/config"
|
|
"joybuywork/internal/consts"
|
|
"fmt"
|
|
)
|
|
|
|
type AdsLink struct {
|
|
link
|
|
userId string //活动用户id
|
|
}
|
|
|
|
func NewAdsLink(domain, hashId, cmark string, opts ...AdsLinkOption) AdsLink {
|
|
switch config.Config.Server.Env {
|
|
case consts.Dev, consts.Local, consts.Test:
|
|
domain = fmt.Sprintf("dev%s", config.Config.Server.AdsDomain)
|
|
case consts.Prod:
|
|
domain = fmt.Sprintf("%s%s", domain, config.Config.Server.AdsDomain)
|
|
}
|
|
|
|
l := AdsLink{
|
|
link: link{
|
|
host: fmt.Sprintf("%s%s", config.Config.Server.AdsDomainProto, domain),
|
|
hashId: hashId,
|
|
cmark: cmark,
|
|
},
|
|
}
|
|
|
|
for _, opt := range opts {
|
|
opt(&l)
|
|
}
|
|
|
|
return l
|
|
}
|
|
|
|
// AddOption 追加参数
|
|
func (l AdsLink) AddOption(opts ...AdsLinkOption) AdsLink {
|
|
for _, opt := range opts {
|
|
opt(&l)
|
|
}
|
|
|
|
return l
|
|
}
|
|
|
|
// CampaignShareLink 活动链接
|
|
func (l AdsLink) CampaignShareLink() string {
|
|
return l.params(fmt.Sprintf("%s/%s", l.host, route))
|
|
}
|
|
|
|
// 参数
|
|
func (l AdsLink) params(link string) (url string) {
|
|
url = fmt.Sprintf(
|
|
"%s?%s=%s&%s=%s",
|
|
link,
|
|
campaignHashIdKey,
|
|
l.hashId,
|
|
campaignCmarkKey,
|
|
l.cmark,
|
|
)
|
|
|
|
url = queryAddStr(url, campaignUserIdKey, l.userId)
|
|
|
|
return
|
|
}
|