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

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
}