88 lines
2.2 KiB
Go
88 lines
2.2 KiB
Go
package service
|
||
|
||
import (
|
||
"cid/dao"
|
||
"cid/model/dto"
|
||
"cid/model/entity"
|
||
"context"
|
||
"time"
|
||
|
||
"github.com/gogf/gf/v2/util/gconv"
|
||
)
|
||
|
||
var Advertisement = new(advertisement)
|
||
|
||
type advertisement struct{}
|
||
|
||
// Add 添加广告
|
||
func (s *advertisement) Add(ctx context.Context, req *dto.AddAdvertisementReq) (res *dto.AddAdvertisementRes, err error) {
|
||
advertisement := &entity.Advertisement{}
|
||
if err = gconv.Struct(req, advertisement); err != nil {
|
||
return
|
||
}
|
||
|
||
// 设置基础字段
|
||
now := time.Now()
|
||
advertisement.CreatedAt = now
|
||
advertisement.UpdatedAt = now
|
||
advertisement.IsDeleted = false
|
||
|
||
// 设置初始状态
|
||
advertisement.Status = "待审核"
|
||
|
||
if err = dao.Advertisement.Insert(ctx, advertisement); err != nil {
|
||
return
|
||
}
|
||
|
||
res = &dto.AddAdvertisementRes{Id: advertisement.Id.Hex()}
|
||
return
|
||
}
|
||
|
||
// Update 更新广告
|
||
func (s *advertisement) Update(ctx context.Context, req *dto.UpdateAdvertisementReq) (err error) {
|
||
// 更新修改时间(不需要设置,DAO层会处理)
|
||
return dao.Advertisement.Update(ctx, req)
|
||
}
|
||
|
||
// UpdateStatus 更新广告状态
|
||
func (s *advertisement) UpdateStatus(ctx context.Context, req *dto.UpdateAdStatusReq) (err error) {
|
||
return dao.Advertisement.UpdateStatus(ctx, req.Id, req.Status)
|
||
}
|
||
|
||
// Audit 审核广告
|
||
func (s *advertisement) Audit(ctx context.Context, req *dto.AuditAdvertisementReq) (err error) {
|
||
return dao.Advertisement.Audit(ctx, req.Id, req.AuditStatus, req.AuditReason)
|
||
}
|
||
|
||
// GetOne 获取广告详情
|
||
func (s *advertisement) GetOne(ctx context.Context, req *dto.GetAdvertisementReq) (res *dto.GetAdvertisementRes, err error) {
|
||
advertisement, err := dao.Advertisement.GetOne(ctx, req.Id)
|
||
if err != nil {
|
||
return
|
||
}
|
||
|
||
res = &dto.GetAdvertisementRes{
|
||
Advertisement: advertisement,
|
||
}
|
||
return
|
||
}
|
||
|
||
// List 获取广告列表
|
||
func (s *advertisement) List(ctx context.Context, req *dto.ListAdvertisementReq) (res *dto.ListAdvertisementRes, err error) {
|
||
list, total, err := dao.Advertisement.List(ctx, req)
|
||
if err != nil {
|
||
return
|
||
}
|
||
|
||
res = &dto.ListAdvertisementRes{
|
||
List: list,
|
||
Total: int(total),
|
||
}
|
||
return
|
||
}
|
||
|
||
// UpdateAdStatistics 更新广告统计
|
||
func (s *advertisement) UpdateAdStatistics(ctx context.Context, id string, impressions, clicks, conversions int64, cost int64) (err error) {
|
||
return
|
||
}
|