Files
2026-05-20 16:13:58 +08:00

153 lines
3.5 KiB
Go

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
}