Files
stat_center/service/advertiseSer/advertiseLoc.go
T
2026-05-20 16:13:58 +08:00

152 lines
3.4 KiB
Go

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
}