package announInfoSer import ( "context" "stat/api/proto" "stat/common/stdLog" "stat/common/utils" "stat/models/announInfoMod" "stat/models/appInfoMod" ) // 获取广告列表 func ListAnnoun(ctx context.Context, param proto.ListAnnounReq) (code stdLog.CodeType, data interface{}, err error) { resp := proto.ListAnnounRes{ Total: 0, List: make([]proto.AnnounInfo, 0), } skip, limit := utils.ToDBPage(param.PageNum, param.PageSize) // 获取广告位置信息 total, aList, err := announInfoMod.FindAnnounceList(ctx, param.AppId, skip, limit) if err != nil { code = stdLog.Failure return } resp.Total = total // 获取app信息 appIds := make([]int32, 0) for _, v := range aList { appIds = append(appIds, v.AppId) } appList, err := appInfoMod.GetAppInfosByAppIds(ctx, appIds) if err != nil { code = stdLog.Failure return } appMap := make(map[int32]appInfoMod.AppInfo) for _, v := range appList { appMap[v.AppId] = v } for _, v := range aList { appName := "" if appInfo, ok := appMap[v.AppId]; ok { appName = appInfo.Name } tmp := proto.AnnounInfo{ ID: v.ID.Hex(), AppId: v.AppId, AppName: appName, Title: v.Title, Content: v.Content, Cover: v.Cover, Href: v.Href, Type: v.Type, Active: v.Active, StartTime: v.StartTime, EndTime: v.EndTime, } resp.List = append(resp.List, tmp) } code = stdLog.Success data = resp return } // 新增广告 func AddAnnounce(ctx context.Context, param proto.AddAnnounReq) (code stdLog.CodeType, data interface{}, err error) { doc := announInfoMod.AnnounInfo{ AppId: *param.AppId, Title: *param.Title, Content: *param.Content, Cover: *param.Cover, Href: *param.Href, Type: *param.Type, Active: *param.Active, StartTime: *param.StartTime, EndTime: *param.EndTime, } if err = announInfoMod.AddAnnounce(ctx, &doc); err != nil { code = stdLog.Failure return } code = stdLog.Success return } // 修改广告位置 func UpdateAnnounce(ctx context.Context, param proto.UpdateAnnounReq) (code stdLog.CodeType, data interface{}, err error) { doc := announInfoMod.UpdateDoc{ AppId: param.AppId, Title: param.Title, Content: param.Content, Cover: param.Cover, Href: param.Href, Type: param.Type, Active: param.Active, StartTime: param.StartTime, EndTime: param.EndTime, } if err = announInfoMod.UpdateAnnounce(ctx, *param.Id, doc); err != nil { code = stdLog.Failure return } code = stdLog.Success return } // 删除广告 func DelAnnounce(ctx context.Context, param proto.DelAnnounReq) (code stdLog.CodeType, data interface{}, err error) { if err = announInfoMod.DelAnnounce(ctx, *param.Id); err != nil { code = stdLog.Failure return } code = stdLog.Success return } // 外部获取广告 func GetAnnounce(ctx context.Context, param proto.AnnouncementReq) (code stdLog.CodeType, data interface{}, err error) { resp := proto.AnnouncementRes{AnnounceList: make([]proto.AnnouncementInfo, 0)} aList, err := announInfoMod.FindAnnounceByAppId(ctx, *param.AppId) if err != nil { code = stdLog.Failure return } for _, v := range aList { resp.AnnounceList = append(resp.AnnounceList, proto.AnnouncementInfo{ ID: v.ID.Hex(), Title: v.Title, Content: v.Content, Cover: v.Cover, Href: v.Href, Type: v.Type, }) } data = resp code = stdLog.Success return }