package applicationser import ( "context" "stat/api/proto" "stat/common/genId" "stat/common/stdLog" "stat/common/utils" "stat/models/applicationLocMod" "stat/models/applicationmod" "stat/models/appInfoMod" "time" ) // 获取广告位置列表 func ListAppLoc(ctx context.Context, param proto.ListAppLocReq) (code stdLog.CodeType, data interface{}, err error) { resp := proto.ListAppLocRes{ Total: 0, List: make([]proto.AppLocInfo, 0), } skip, limit := utils.ToDBPage(param.PageNum, param.PageSize) // 获取广告位置信息 total, adsList, err := applicationLocMod.FindApplicationLocationList(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.AppLocInfo{ 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 AddAppLoc(ctx context.Context, param proto.AddAppLocReq) (code stdLog.CodeType, data interface{}, err error) { // 获取位置信息 locInfo, err := applicationLocMod.FindLocationByAppIdAndLocId(ctx, *param.AppId, *param.LocId) if err != nil || locInfo.Id > 0 { code = stdLog.ApplicationLocExists return } adsLocId := genId.GetNextAppLocId() now := time.Now() doc := applicationLocMod.ApplicationLocation{ Id: adsLocId, AppId: *param.AppId, LocId: *param.LocId, Name: *param.Name, ImgSizeDesc: param.ImgSizeDesc, Remark: param.Remark, CreatedAt: now, UpdatedAt: now, } if err = applicationLocMod.AddApplicationLocation(ctx, &doc); err != nil { code = stdLog.Failure return } code = stdLog.Success return } // 修改广告位置 func UpdateAppLoc(ctx context.Context, param proto.UpdateAppLocReq) (code stdLog.CodeType, data interface{}, err error) { // 获取位置信息 locInfo, err := applicationLocMod.FindLocationById(ctx, *param.Id) if err != nil { code = stdLog.Failure return } now := time.Now() doc := applicationLocMod.UpdateAppLoc{ AppId: param.AppId, LocId: param.LocId, Name: param.Name, ImgSizeDesc: param.ImgSizeDesc, Remark: param.Remark, UpdatedAt: &now, } if err = applicationLocMod.UpdateApplicationLocation(ctx, *param.Id, doc); err != nil { code = stdLog.Failure return } // 修改广告的位置id if param.LocId != nil && *param.LocId != locInfo.LocId { if err = applicationmod.UpdateLocInfo(ctx, locInfo.AppId, locInfo.LocId, *param.LocId); err != nil { code = stdLog.Failure return code, data, err } } code = stdLog.Success return } // 删除广告位置 func DelAppLoc(ctx context.Context, param proto.DelAppLocReq) (code stdLog.CodeType, data interface{}, err error) { if err = applicationLocMod.DelApplicationLocation(ctx, *param.Id); err != nil { code = stdLog.Failure return } code = stdLog.Success return }