支持购买套餐/续费套餐/用户账户操作等

This commit is contained in:
GoEdgeLab
2021-11-08 20:52:15 +08:00
parent 1f9e3e428b
commit dcfba222e2
24 changed files with 582 additions and 14 deletions

View File

@@ -2,13 +2,14 @@ package utils
import (
"github.com/TeaOSLab/EdgeAPI/internal/errors"
"github.com/iwind/TeaGo/lists"
"github.com/iwind/TeaGo/types"
timeutil "github.com/iwind/TeaGo/utils/time"
"regexp"
"time"
)
// 计算日期之间的所有日期格式为YYYYMMDD
// RangeDays 计算日期之间的所有日期格式为YYYYMMDD
func RangeDays(dayFrom string, dayTo string) ([]string, error) {
ok, err := regexp.MatchString(`^\d{8}$`, dayFrom)
if err != nil {
@@ -56,7 +57,56 @@ func RangeDays(dayFrom string, dayTo string) ([]string, error) {
return result, nil
}
// 计算小时之间的所有小时格式为YYYYMMDDHH
// RangeMonths 计算日期之间的所有月份格式为YYYYMM
func RangeMonths(dayFrom string, dayTo string) ([]string, error) {
ok, err := regexp.MatchString(`^\d{8}$`, dayFrom)
if err != nil {
return nil, err
}
if !ok {
return nil, errors.New("invalid 'dayFrom'")
}
ok, err = regexp.MatchString(`^\d{8}$`, dayTo)
if err != nil {
return nil, err
}
if !ok {
return nil, errors.New("invalid 'dayTo'")
}
if dayFrom > dayTo {
dayFrom, dayTo = dayTo, dayFrom
}
result := []string{dayFrom[:6]}
year := types.Int(dayFrom[:4])
month := types.Int(dayFrom[4:6])
day := types.Int(dayFrom[6:])
t := time.Date(year, time.Month(month), day, 0, 0, 0, 0, time.Local)
for {
t = t.AddDate(0, 0, 20)
newDay := timeutil.Format("Ymd", t)
if newDay <= dayTo {
var monthString = newDay[:6]
if !lists.ContainsString(result, monthString) {
result = append(result, monthString)
}
} else {
break
}
}
var endMonth = dayTo[:6]
if !lists.ContainsString(result, endMonth) {
result = append(result, endMonth)
}
return result, nil
}
// RangeHours 计算小时之间的所有小时格式为YYYYMMDDHH
func RangeHours(hourFrom string, hourTo string) ([]string, error) {
ok, err := regexp.MatchString(`^\d{10}$`, hourFrom)
if err != nil {

View File

@@ -10,6 +10,13 @@ func TestRangeDays(t *testing.T) {
t.Log(days)
}
func TestRangeMonth(t *testing.T) {
days, err := RangeMonths("20200101", "20210115")
if err != nil {
t.Fatal(err)
}
t.Log(days)
}
func TestRangeHours(t *testing.T) {
{