This commit is contained in:
liuxiaobo 2025-05-26 16:02:54 +08:00
parent cd54354df2
commit b692da3054
6 changed files with 72 additions and 61 deletions

View File

@ -14,9 +14,10 @@ type INode interface {
MapKey() string
}
// 服务节点信息TypeId及Type都是标记同类型的节点Name是区别该节点与其它节点的字段
type ServiceNode struct {
ServiceId int32 `json:"service_id"` // 服务id 由proto定义gate通过该字段找到serviceNode
Name string `json:"name"` // 服务名 多个同类服务依赖name区分:1,2,3等等
TypeId int `json:"type_id"` // 服务类型id与Type字段功能一样 由proto定义gate通过该字段找到这类服务的所有节点信息
Name string `json:"name"` // 服务名 多个同类服务依赖name区分:lobby1,lobby2,lobby3等等
Type string `json:"type"` // 服务类型:lobby, game, gate等等
Address string `json:"address"` // 地址
Port int `json:"port"` // 端口
@ -33,7 +34,7 @@ func (s ServiceNode) EtcdRootKey() string {
}
func (s ServiceNode) MapKey() string {
return fmt.Sprintf("%s-%s", s.Type, s.Name)
return s.Name
}
type TopicNode struct {
@ -50,5 +51,5 @@ func (s TopicNode) EtcdRootKey() string {
}
func (s TopicNode) MapKey() string {
return fmt.Sprintf("%s", s.Name)
return s.Name
}

View File

@ -172,11 +172,11 @@ func (s *BaseService) Run() {
}
func (s *BaseService) Log(format string, a ...any) string {
head := fmt.Sprintf("service:%v-%v ", s.type_, s.name)
head := fmt.Sprintf("service:%v ", s.name)
return head + fmt.Sprintf(format, a...)
}
func (s *BaseService) Err(format string, a ...any) error {
head := fmt.Sprintf("service:%v-%v ", s.type_, s.name)
head := fmt.Sprintf("service:%v ", s.name)
return fmt.Errorf(head + fmt.Sprintf(format, a...))
}

View File

@ -1,18 +1,23 @@
package service
import (
"fmt"
const (
extTopic = ".topic"
extGroup = ".group"
)
// 每个服务都有自己的服务topic
func Topic(s IService) string {
return fmt.Sprintf("%v-%v.topic", s.Type(), s.Name())
return s.Name() + extTopic
}
func TopicEx(serviceName string) string {
return serviceName + extTopic
}
func GroupTopic(s IService) string {
return s.Type() + ".topic"
return s.Type() + extTopic
}
func GroupQueue(s IService) string {
return s.Type() + ".group"
return s.Type() + extGroup
}

View File

@ -5,54 +5,59 @@ import (
"time"
)
var rd *rand.Rand
func init() {
rand.New(rand.NewSource(time.Now().UnixNano()))
rd = rand.New(rand.NewSource(time.Now().UnixNano()))
}
var Int = rand.Int
func Int() int {
return rd.Int()
}
func Intn(n int) int {
return rand.Intn(n)
// [0,n)
func IntN(n int) int {
return rd.Intn(n)
}
func Int31() int32 {
return rand.Int31()
return rd.Int31()
}
func Int31n(n int32) int32 {
return rand.Int31n(n)
return rd.Int31n(n)
}
func Int63() int64 {
return rand.Int63()
return rd.Int63()
}
func Int63n(n int64) int64 {
return rand.Int63n(n)
return rd.Int63n(n)
}
func Uint32() uint32 {
return rand.Uint32()
return rd.Uint32()
}
func Uint64() uint64 {
return rand.Uint64()
return rd.Uint64()
}
func Float32() float32 {
return rand.Float32()
return rd.Float32()
}
func Float64() float64 {
return rand.Float64()
return rd.Float64()
}
func Perm(n int) []int {
return rand.Perm(n)
return rd.Perm(n)
}
func Read(p []byte) (n int, err error) {
return rand.Read(p)
return rd.Read(p)
}
func Shuffle[T any](slice []T) {

View File

@ -29,7 +29,7 @@ func WeightRandom[W int | uint | int32 | uint32 | int64 | uint64, T any](m map[W
return items[0].Data, nil
}
r := Intn(int(sum))
r := IntN(int(sum))
for _, item := range items {
r -= int(item.Weight)
if r < 0 {

View File

@ -14,7 +14,7 @@ import (
// 设置时区
// reverse给Now()设置时传false解析系统时区输出的字符串/时间戳时传true
func setLocation(c carbon.Carbon, offsets ...int) carbon.Carbon {
func setLocation(c *carbon.Carbon, offsets ...int) *carbon.Carbon {
var loc *time.Location
if len(offsets) > 0 {
loc = time.FixedZone("CUS", offsets[len(offsets)-1])
@ -25,7 +25,7 @@ func setLocation(c carbon.Carbon, offsets ...int) carbon.Carbon {
return c.SetLocation(loc)
}
func set(c carbon.Carbon, offsets ...int) carbon.Carbon {
func set(c *carbon.Carbon, offsets ...int) *carbon.Carbon {
// 设置周起始
c = c.SetWeekStartsAt(WeekStartsAt)
// 设置时区
@ -33,18 +33,18 @@ func set(c carbon.Carbon, offsets ...int) carbon.Carbon {
return c
}
func Now(offsets ...int) (c carbon.Carbon) {
func Now(offsets ...int) (c *carbon.Carbon) {
c = carbon.Now().AddSeconds(nowOffset)
c = set(c, offsets...)
return
}
func ConvertToCarbon[T time.Time | carbon.Carbon | int64](t T, offsets ...int) carbon.Carbon {
var c carbon.Carbon
func ConvertToCarbon[T time.Time | *carbon.Carbon | int64](t T, offsets ...int) *carbon.Carbon {
var c *carbon.Carbon
switch v := any(t).(type) {
case time.Time:
c = set(carbon.CreateFromStdTime(v), offsets...)
case carbon.Carbon:
case *carbon.Carbon:
c = set(v, offsets...)
case int64:
c = set(carbon.CreateFromTimestamp(v), offsets...)
@ -58,7 +58,7 @@ func IsTodayTimestamp[T int | int64](timestamp T, offsets ...int) bool {
}
// IsToday 判断时间是否为今天
func IsToday[T time.Time | carbon.Carbon | int64](t T, offsets ...int) bool {
func IsToday[T time.Time | *carbon.Carbon | int64](t T, offsets ...int) bool {
c := ConvertToCarbon(t, offsets...)
return c.ToDateString() == Now().ToDateString()
@ -70,7 +70,7 @@ func IsToday[T time.Time | carbon.Carbon | int64](t T, offsets ...int) bool {
// now := time.Now()
// before := time.Now().Add(-time.Hour)
// IsBeforeNow(after) // true
func IsBeforeNow[T time.Time | carbon.Carbon | int64](t T, offsets ...int) bool {
func IsBeforeNow[T time.Time | *carbon.Carbon | int64](t T, offsets ...int) bool {
return !IsAfterNow(t, offsets...)
}
@ -80,11 +80,11 @@ func IsBeforeNow[T time.Time | carbon.Carbon | int64](t T, offsets ...int) bool
// now := time.Now()
// after := time.Now().Add(time.Hour)
// IsAfterNow(after) // true
func IsAfterNow[T time.Time | carbon.Carbon | int64](t T, offsets ...int) bool {
func IsAfterNow[T time.Time | *carbon.Carbon | int64](t T, offsets ...int) bool {
switch v := any(t).(type) {
case time.Time:
return IsAfter(v, time.Now(), offsets...)
case carbon.Carbon:
case *carbon.Carbon:
return IsAfter(v, Now(), offsets...)
case int64:
return IsAfter(v, Now().Timestamp())
@ -98,7 +98,7 @@ func IsAfterNow[T time.Time | carbon.Carbon | int64](t T, offsets ...int) bool {
// t1 := time.Now().Add(-time.Hour)
// t2 := time.Now()
// IsBefore(t1,t2) // true
func IsBefore[T time.Time | carbon.Carbon | int64](t1, t2 T, offsets ...int) bool {
func IsBefore[T time.Time | *carbon.Carbon | int64](t1, t2 T, offsets ...int) bool {
return !IsAfter(t1, t2, offsets...)
}
@ -107,103 +107,103 @@ func IsBefore[T time.Time | carbon.Carbon | int64](t1, t2 T, offsets ...int) boo
// t1 := time.Now().Add(time.Hour)
// t2 := time.Now()
// IsAfter(t1,t2) // true
func IsAfter[T time.Time | carbon.Carbon | int64](t1, t2 T, offsets ...int) bool {
func IsAfter[T time.Time | *carbon.Carbon | int64](t1, t2 T, offsets ...int) bool {
c1, c2 := ConvertToCarbon(t1, offsets...), ConvertToCarbon(t2, offsets...)
return c1.Gt(c2)
}
// TimestampToTime 将时间戳转为 carbon.Carbon 类型
func TimestampToTime[T int | int64](timestamp T, offsets ...int) carbon.Carbon {
func TimestampToTime[T int | int64](timestamp T, offsets ...int) *carbon.Carbon {
return set(carbon.CreateFromTimestamp(int64(timestamp)), offsets...)
}
// IsInDuration 判断某个时间在某个时间段内
func IsInDuration[T time.Time | carbon.Carbon | int64](t, start, end T, offsets ...int) bool {
func IsInDuration[T time.Time | *carbon.Carbon | int64](t, start, end T, offsets ...int) bool {
return IsAfter(t, start, offsets...) && IsBefore(t, end, offsets...)
}
// FormatDuration 将起止时间,格式化为 format - format
func FormatDuration[T time.Time | carbon.Carbon | int64](start, end T, layout string, offsets ...int) string {
func FormatDuration[T time.Time | *carbon.Carbon | int64](start, end T, layout string, offsets ...int) string {
startC, endC := ConvertToCarbon(start, offsets...), ConvertToCarbon(end, offsets...)
return fmt.Sprintf("%s - %s", startC.StdTime().Format(layout), endC.StdTime().Format(layout))
}
func Yesterday(offsets ...int) carbon.Carbon {
func Yesterday(offsets ...int) *carbon.Carbon {
return Now(offsets...).SubDay().StartOfDay()
}
func Today(offsets ...int) carbon.Carbon {
func Today(offsets ...int) *carbon.Carbon {
return Now(offsets...).StartOfDay()
}
func Tomorrow(offsets ...int) carbon.Carbon {
func Tomorrow(offsets ...int) *carbon.Carbon {
return Now(offsets...).AddDay().StartOfDay()
}
func NextNDay(n int, offsets ...int) carbon.Carbon {
func NextNDay(n int, offsets ...int) *carbon.Carbon {
return Now(offsets...).AddDays(n).StartOfDay()
}
func LastWeek(offsets ...int) carbon.Carbon {
func LastWeek(offsets ...int) *carbon.Carbon {
return Now(offsets...).SubWeek().StartOfWeek()
}
func ThisWeek(offsets ...int) carbon.Carbon {
func ThisWeek(offsets ...int) *carbon.Carbon {
return Now(offsets...).StartOfWeek()
}
func NextWeek(offsets ...int) carbon.Carbon {
func NextWeek(offsets ...int) *carbon.Carbon {
return Now(offsets...).AddWeek().StartOfWeek()
}
func NextNWeek(n int, offsets ...int) carbon.Carbon {
func NextNWeek(n int, offsets ...int) *carbon.Carbon {
return Now(offsets...).AddWeeks(n).StartOfWeek()
}
func LastMonth(offsets ...int) carbon.Carbon {
func LastMonth(offsets ...int) *carbon.Carbon {
return Now(offsets...).SubMonth().StartOfMonth()
}
func ThisMonth(offsets ...int) carbon.Carbon {
func ThisMonth(offsets ...int) *carbon.Carbon {
return Now(offsets...).StartOfMonth()
}
func NextMonth(offsets ...int) carbon.Carbon {
func NextMonth(offsets ...int) *carbon.Carbon {
return Now(offsets...).AddMonth().StartOfMonth()
}
func NextNMonth(n int, offsets ...int) carbon.Carbon {
func NextNMonth(n int, offsets ...int) *carbon.Carbon {
return Now(offsets...).AddMonths(n).StartOfMonth()
}
func LastQuarter(offsets ...int) carbon.Carbon {
func LastQuarter(offsets ...int) *carbon.Carbon {
return Now(offsets...).SubQuarter().StartOfQuarter()
}
func ThisQuarter(offsets ...int) carbon.Carbon {
func ThisQuarter(offsets ...int) *carbon.Carbon {
return Now(offsets...).StartOfQuarter()
}
func NextQuarter(offsets ...int) carbon.Carbon {
func NextQuarter(offsets ...int) *carbon.Carbon {
return Now(offsets...).AddQuarter().StartOfQuarter()
}
func NextNQuarter(n int, offsets ...int) carbon.Carbon {
func NextNQuarter(n int, offsets ...int) *carbon.Carbon {
return Now(offsets...).AddQuarters(n).StartOfQuarter()
}
func LastYear(offsets ...int) carbon.Carbon {
func LastYear(offsets ...int) *carbon.Carbon {
return Now(offsets...).SubYear().StartOfYear()
}
func ThisYear(offsets ...int) carbon.Carbon {
func ThisYear(offsets ...int) *carbon.Carbon {
return Now(offsets...).StartOfYear()
}
func NextYear(offsets ...int) carbon.Carbon {
func NextYear(offsets ...int) *carbon.Carbon {
return Now(offsets...).AddYear().StartOfYear()
}
func NextNYear(n int, offsets ...int) carbon.Carbon {
func NextNYear(n int, offsets ...int) *carbon.Carbon {
return Now(offsets...).AddYears(n).StartOfYear()
}