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 }