ai_scheduler/internal/services/advice/activity.go

88 lines
2.3 KiB
Go

package advice
import (
"ai_scheduler/internal/biz"
"ai_scheduler/internal/config"
"ai_scheduler/internal/entitys"
"ai_scheduler/internal/pkg"
"github.com/gofiber/fiber/v2"
)
// ActivityService 产品活动管理(用于 AI 主动对话与活动推送)
type ActivityService struct {
AdviceActivityBiz *biz.AdviceActivityBiz
cfg *config.Config
}
func NewActivityService(
AdviceActivityBiz *biz.AdviceActivityBiz,
cfg *config.Config,
) *ActivityService {
return &ActivityService{
AdviceActivityBiz: AdviceActivityBiz,
cfg: cfg,
}
}
// Add 新增产品活动
func (s *ActivityService) Add(c *fiber.Ctx) error {
req := &entitys.AdvicerActivityAddReq{}
if err := c.BodyParser(req); err != nil {
return err
}
id, err := s.AdviceActivityBiz.Add(c.UserContext(), req)
return pkg.HandleResponse(c, id, err)
}
// Update 更新产品活动
func (s *ActivityService) Update(c *fiber.Ctx) error {
req := &entitys.AdvicerActivityUpdateReq{}
if err := c.BodyParser(req); err != nil {
return err
}
return s.AdviceActivityBiz.Update(c.UserContext(), req)
}
// List 活动列表
func (s *ActivityService) List(c *fiber.Ctx) error {
req := &entitys.AdvicerActivityListReq{}
if err := c.BodyParser(req); err != nil {
return err
}
list, err := s.AdviceActivityBiz.List(c.UserContext(), req)
return pkg.HandleResponse(c, list, err)
}
// Del 删除活动
func (s *ActivityService) Del(c *fiber.Ctx) error {
req := &entitys.AdvicerActivityDelReq{}
if err := c.BodyParser(req); err != nil {
return err
}
return s.AdviceActivityBiz.Del(c.UserContext(), req)
}
// Info 活动详情
func (s *ActivityService) Info(c *fiber.Ctx) error {
req := &entitys.AdvicerActivityInfoReq{}
if err := c.BodyParser(req); err != nil {
return err
}
info, err := s.AdviceActivityBiz.Info(c.UserContext(), req)
return pkg.HandleResponse(c, info, err)
}
// ActiveList 当前生效中的活动(状态启用且在时间范围内,可按客户等级过滤)
func (s *ActivityService) ActiveList(c *fiber.Ctx) error {
var req struct {
ProjectId int32 `json:"projectId"`
Level string `json:"level"`
}
if err := c.BodyParser(&req); err != nil {
return err
}
list, err := s.AdviceActivityBiz.ActiveList(c.UserContext(), req.ProjectId, req.Level)
return pkg.HandleResponse(c, list, err)
}