package advertiseSer import ( "context" "stat/api/proto" "stat/common/genId" "stat/common/stdLog" "stat/common/utils" "stat/models/advertiseLocMod" "stat/models/advertiseMod" "stat/models/appInfoMod" "time" ) // 获取广告位置列表 func ListAdsLoc(ctx context.Context, param proto.ListAdsLocReq) (code stdLog.CodeType, data interface{}, err error) { resp := proto.ListAdsLocRes{ Total: 0, List: make([]proto.AdsLocInfo, 0), } skip, limit := utils.ToDBPage(param.PageNum, param.PageSize) // 获取广告位置信息 total, adsList, err := advertiseLocMod.FindAdvertiseLocationList(ctx, param.AppId, skip, limit) if err != nil { code = stdLog.Failure return } resp.Total = total // 获取app信息 appIds := make([]int32, 0) for _, v := range adsList { 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 adsList { appName := "" if appInfo, ok := appMap[v.AppId]; ok { appName = appInfo.Name } tmp := proto.AdsLocInfo{ Id: v.Id, AppId: v.AppId, AppName: appName, LocId: v.LocId, Name: v.Name, ImgSizeDesc: v.ImgSizeDesc, Remark: v.Remark, CreatedAt: v.CreatedAt, UpdatedAt: v.UpdatedAt, } resp.List = append(resp.List, tmp) } code = stdLog.Success data = resp return } // 新增广告位置 func AddAdsLoc(ctx context.Context, param proto.AddAdsLocReq) (code stdLog.CodeType, data interface{}, err error) { // 获取位置信息 locInfo, err := advertiseLocMod.FindLocationByAppIdAndLocId(ctx, *param.AppId, *param.LocId) if err != nil || locInfo.Id > 0 { code = stdLog.AdvertiseLocExists return } adsLocId := genId.GetNextAdsLocId() now := time.Now() doc := advertiseLocMod.AdvertiseLocation{ Id: adsLocId, AppId: *param.AppId, LocId: *param.LocId, Name: *param.Name, ImgSizeDesc: param.ImgSizeDesc, Remark: param.Remark, CreatedAt: now, UpdatedAt: now, } if err = advertiseLocMod.AddAdvertiseLocation(ctx, &doc); err != nil { code = stdLog.Failure return } code = stdLog.Success return } // 修改广告位置 func UpdateAdsLoc(ctx context.Context, param proto.UpdateAdsLocReq) (code stdLog.CodeType, data interface{}, err error) { // 获取位置信息 locInfo, err := advertiseLocMod.FindLocationById(ctx, *param.Id) if err != nil { code = stdLog.Failure return } now := time.Now() doc := advertiseLocMod.UpdateAdsLoc{ AppId: param.AppId, LocId: param.LocId, Name: param.Name, ImgSizeDesc: param.ImgSizeDesc, Remark: param.Remark, UpdatedAt: &now, } if err = advertiseLocMod.UpdateAdvertiseLocation(ctx, *param.Id, doc); err != nil { code = stdLog.Failure return } // 修改广告的位置id if param.LocId != nil && *param.LocId != locInfo.LocId { if err = advertiseMod.UpdateLocInfo(ctx, locInfo.AppId, locInfo.LocId, *param.LocId); err != nil { code = stdLog.Failure return code, data, err } } code = stdLog.Success return } // 删除广告位置 func DelAdsLoc(ctx context.Context, param proto.DelAdsLocReq) (code stdLog.CodeType, data interface{}, err error) { if err = advertiseLocMod.DelAdvertiseLocation(ctx, *param.Id); err != nil { code = stdLog.Failure return } code = stdLog.Success return }