1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- package service
- import (
- "context"
- "fmt"
- "github.com/go-nunu/nunu-layout-advanced/internal/repository"
- "strconv"
- "strings"
- "time"
- )
- type DuedateService interface {
- NextDueDate(ctx context.Context, uid int, hostId string) (string, error)
- }
- func NewDuedateService(
- service *Service,
- gameShieldRepository repository.GameShieldRepository,
- ) DuedateService {
- return &duedateService{
- Service: service,
- gameShieldRepository: gameShieldRepository,
- }
- }
- type duedateService struct {
- *Service
- gameShieldRepository repository.GameShieldRepository
- }
- func (service *duedateService) NextDueDate(ctx context.Context, uid int, hostId string) (string, error) {
- productID := strings.ReplaceAll(hostId, "(游戏盾入门版)", "")
- timeStr, err := service.gameShieldRepository.GetGameShieldNextduedate(ctx, int64(uid), productID)
- if timeStr == "0" || timeStr == "" {
- return "", err
- }
- // 将字符串转为 int64 时间戳
- unixTime, err := strconv.ParseInt(timeStr, 10, 64)
- if err != nil {
- return "", err
- }
- now := time.Now().Unix() // 当前时间戳(秒级)
- if now > unixTime {
- return "", fmt.Errorf("产品已过期,请及时续费")
- }
- // 格式化时间
- t := time.Unix(unixTime, 0)
- nextduedate := t.Format("2006-01-02 15:04:05")
- return nextduedate, nil
- }
|