forked from all_user/stat_center
153 lines
3.5 KiB
Go
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
|
|
}
|