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.
126 lines
2.6 KiB
Go
126 lines
2.6 KiB
Go
package openplatform
|
|
|
|
import (
|
|
"joybuywork/internal/config"
|
|
"joybuywork/internal/repository/cache"
|
|
"joybuywork/internal/repository/finder"
|
|
"joybuywork/internal/repository/model"
|
|
"joybuywork/internal/repository/mtype"
|
|
"joybuywork/internal/service/cmm"
|
|
"joybuywork/internal/utils/blink"
|
|
"joybuywork/internal/utils/logic"
|
|
pb "joybuywork/proto/go_proto/w_open_platform"
|
|
"fmt"
|
|
)
|
|
|
|
type CampaignInfo struct {
|
|
logic.Logic
|
|
Req *pb.CampaignInfoReq
|
|
Res *pb.CampaignInfoRes
|
|
}
|
|
|
|
func (s *CampaignInfo) Run() error {
|
|
return logic.Run(s)
|
|
}
|
|
|
|
func (s *CampaignInfo) Exec() (err error) {
|
|
project, cpn, err := s.campaign()
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
err = s.info(project, cpn)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
if len(cpn.GetLangMarks()) <= 1 {
|
|
return
|
|
}
|
|
|
|
return s.langs(cpn)
|
|
}
|
|
|
|
func (s *CampaignInfo) campaign() (project *model.Project, cpn *model.FissionCampaign, err error) {
|
|
project, err = finder.Project(s.Ctx, s.Req.GetProjectId())
|
|
if err != nil {
|
|
err = s.BE().CacheError(err)
|
|
return
|
|
}
|
|
|
|
if project == nil {
|
|
err = s.BE().VerifyError("not found project")
|
|
return
|
|
}
|
|
|
|
cpn, err = finder.Campaign(s.Ctx, s.Req.GetCampaignHashId())
|
|
if err != nil {
|
|
err = s.BE().CacheError(err)
|
|
return
|
|
}
|
|
|
|
if cpn == nil {
|
|
err = s.BE().VerifyError("not found campaign")
|
|
return
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
func (s *CampaignInfo) info(project *model.Project, cpn *model.FissionCampaign) (err error) {
|
|
|
|
s.Res.HashId = cpn.HashID
|
|
s.Res.Title = cpn.Title
|
|
|
|
// 默认渠道
|
|
cl, err := cmm.NewCMM(s.Ctx, s.GetDao()).UserBindChannel(cpn.ID, "")
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
var clMark string
|
|
if cl != nil {
|
|
clMark = cl.Mark
|
|
}
|
|
|
|
s.Res.Link = blink.NewCampaignLink(project.Domain, cpn.HashID, clMark).CampaignShareLink()
|
|
|
|
s.Res.Langs = make([]*pb.CampaignInfoRes_Lang, 0, len(cpn.GetLangMarks()))
|
|
|
|
style, err := cache.NewCampaignStyle(s.Ctx).FindByCampaignId(cpn.ID)
|
|
if err != nil {
|
|
err = s.BE().CacheError(err)
|
|
return
|
|
}
|
|
|
|
s.Res.Langs = append(s.Res.Langs, &pb.CampaignInfoRes_Lang{
|
|
Mark: cpn.GetLangMarks()[0],
|
|
PageTitle: style.PageTitle,
|
|
ShareText: style.ShareText,
|
|
ShareImg: fmt.Sprintf("%s/%s", config.Config.Upload.Host, style.ShareImg),
|
|
})
|
|
|
|
return
|
|
}
|
|
|
|
func (s *CampaignInfo) langs(cpn *model.FissionCampaign) (err error) {
|
|
m := s.GetDao().FissionCampaignLang
|
|
|
|
list, err := m.WithContext(s.Ctx).Where(m.CampaignID.Eq(cpn.ID), m.IsDel.Eq(mtype.No)).Find()
|
|
if err != nil {
|
|
err = s.BE().MysqlError(err)
|
|
return
|
|
}
|
|
|
|
for _, v := range list {
|
|
s.Res.Langs = append(s.Res.Langs, &pb.CampaignInfoRes_Lang{
|
|
Mark: v.LangMark,
|
|
PageTitle: v.PageTitle,
|
|
ShareText: v.ShareText,
|
|
ShareImg: fmt.Sprintf("%s/%s", config.Config.Upload.Host, v.ShareImg),
|
|
})
|
|
}
|
|
|
|
return
|
|
}
|