88 lines
2.3 KiB
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)
|
|
}
|