package controller import ( "context" "video-factory/shortdrama/model/dto" "video-factory/shortdrama/model/entity" "video-factory/shortdrama/service" ) type agent struct{} var Agent = new(agent) type createAgentRes struct { Id int64 `json:"id"` } type getAgentDetailRes struct { User *entity.User `json:"user"` Profile *entity.AgentProfile `json:"profile"` } func (c *agent) Create(ctx context.Context, req *dto.CreateAgentReq) (res *createAgentRes, err error) { user, err := service.AgentService.CreateAgent(ctx, req.Username, req.Password, req.Phone, req.Name, req.Province, req.Region, req.RegionProtected) if err != nil { return nil, err } return &createAgentRes{Id: user.Id}, nil } func (c *agent) List(ctx context.Context, req *dto.ListAgentReq) (res *dto.ListAgentRes, err error) { return service.AgentService.ListAgents(ctx, req) } func (c *agent) Update(ctx context.Context, req *dto.UpdateAgentReq) (res *struct{}, err error) { return nil, service.AgentService.UpdateAgent(ctx, req) } func (c *agent) Renew(ctx context.Context, req *dto.RenewAgentReq) (res *struct{}, err error) { return nil, service.AgentService.RenewAgent(ctx, req.AgentId) } func (c *agent) CreateRenewOrder(ctx context.Context, req *dto.CreateRenewOrderReq) (res *dto.CreateRenewOrderRes, err error) { order, err := service.PaymentService.CreateRenewalOrder(ctx, req.AgentId, req.Duration, req.PricingId) if err != nil { return nil, err } if err := service.PaymentService.ConfirmOffline(ctx, order.OrderNo); err != nil { return nil, err } return &dto.CreateRenewOrderRes{ OrderNo: order.OrderNo, Amount: order.Amount, Status: "success", }, nil } func (c *agent) ListRenewals(ctx context.Context, req *dto.ListRenewalsReq) (res *dto.ListRenewalsRes, err error) { return service.AgentService.ListAgentRenewals(ctx, req.AgentId) } func (c *agent) Get(ctx context.Context, req *struct{ Id int64 }) (res *getAgentDetailRes, err error) { user, profile, err := service.AgentService.GetAgentDetail(ctx, req.Id) if err != nil || user == nil { return nil, err } return &getAgentDetailRes{User: user, Profile: profile}, nil }