Commit 41077a2b235587b39007656350372ab65bfd697a

Authored by 王家文
1 parent 6d794428
Exists in master and in 1 other branch dev-wjw

feat✨:公共库

.gitignore
1 1 .idea
2 2 .vscode
3 3 bin
  4 +bat
4 5 apigame.exe
  6 +apigame.exe~
5 7 *.bat
6 8 \ No newline at end of file
... ...
service/cardholder/config-registry.go
... ... @@ -9,15 +9,15 @@ import (
9 9 )
10 10  
11 11 var (
12   - Configs map[string]*CardActivityConfig // 配置列表 k=GameId v=配置
  12 + _Configs map[string]*CardActivityConfig // 配置列表 k=GameId v=配置
13 13 )
14 14  
15 15 func NewConfigs() {
16   - Configs = make(map[string]*CardActivityConfig)
  16 + _Configs = make(map[string]*CardActivityConfig)
17 17 }
18 18  
19 19 func GetConfig(gameId string) (config *CardActivityConfig, has bool) {
20   - config, has = Configs[gameId]
  20 + config, has = _Configs[gameId]
21 21 return
22 22 }
23 23  
... ... @@ -119,7 +119,7 @@ func ConfigDecode(gameId string, configRaw *CardActivityConfigRaw) {
119 119 Config.StarShopConfig[i2.Id] = i2
120 120 }
121 121 }
122   - Configs[gameId] = Config
  122 + _Configs[gameId] = Config
123 123  
124 124 GenerateConfigClient(Config)
125 125 }
... ...
service/cardholder/handle.go
... ... @@ -5,7 +5,7 @@ import (
5 5 "apigame/service/constd"
6 6 "apigame/util/util-lx/lxalilog"
7 7 "apigame/util/util-lx/lxtime"
8   - "apigame/util/uttype"
  8 + "apigame/util/utslice"
9 9 "strconv"
10 10 )
11 11  
... ... @@ -103,7 +103,7 @@ func HandleOpen(req *models.ReqCardHolderOpen) (code string, rsp models.RspCardH
103 103 sequenceId, cohort,
104 104 openMode)
105 105 // 打乱顺序
106   - uttype.Shuffle(newCards)
  106 + utslice.Shuffle(newCards)
107 107 for _, i3 := range newCards {
108 108 allNewCards = append(allNewCards, i3)
109 109 }
... ... @@ -226,7 +226,7 @@ func HandleShopExchange(req *models.ReqStarShopExchange) (code string, rsp model
226 226 // 存档
227 227 SaveData(req.GameID, gameData)
228 228  
229   - uttype.Shuffle(rsp.NewCards)
  229 + utslice.Shuffle(rsp.NewCards)
230 230  
231 231 // 返回信息
232 232 rsp.CardHolderInfo = GetInfo(gameData, config)
... ...
service/cardholder/logic.go
... ... @@ -7,7 +7,8 @@ import (
7 7 "apigame/util/util-lx/lxalilog"
8 8 "apigame/util/util-lx/lxtime"
9 9 "apigame/util/utjson"
10   - "apigame/util/uttype"
  10 + "apigame/util/utslice"
  11 + "apigame/util/utstring"
11 12 )
12 13  
13 14 // SaveData 存储数据
... ... @@ -117,7 +118,7 @@ func GetNewCard(gameData *dto.CardHolderData, conf *CardActivityConfig) int {
117 118 list = append(list, index)
118 119 }
119 120  
120   - indexMin := uttype.Min(list...)
  121 + indexMin := utslice.Min(list)
121 122 return int(indexMin % rate)
122 123 }
123 124  
... ... @@ -194,7 +195,7 @@ func DoOpen(gameId string,
194 195 combineId := CombineIdSequenceIdCohort(cardConfigId, sequenceId, cohort)
195 196 scale := gameData.Details.CardSequenceScales[combineId]
196 197 cardId := GetOneFromArray(confCardSequence.CardIdLists, scale)
197   - cardIdInt := uttype.StringToInt(cardId)
  198 + cardIdInt := utstring.StringToInt(cardId)
198 199 // 增加刻度
199 200 gameData.Details.CardSequenceScales[combineId] = scale + 1
200 201 // 增加卡牌
... ... @@ -228,7 +229,7 @@ func DoOpen(gameId string,
228 229 {
229 230 recordBase := dto.NewCardHolderRecordBase(gameData.Uid, sequenceId, cohort, config.Id, gameData.Details.Round)
230 231 dto.SaveRecord(gameId, dto.NewCardHolderRecordOpen(recordBase,
231   - openMode, uttype.StringToInt(confCardholder.Id), utjson.JsonString(newCards)))
  232 + openMode, utstring.StringToInt(confCardholder.Id), utjson.JsonString(newCards)))
232 233 }
233 234  
234 235 return
... ... @@ -270,7 +271,7 @@ func DoOpenCheckAward(gameId string,
270 271 }
271 272 // 集齐处理发奖
272 273 gameData.Details.Album[albumId] += 1
273   - award := confAlbum.Rewards[uttype.IntToString(gameData.Details.Round)]
  274 + award := confAlbum.Rewards[utstring.IntToString(gameData.Details.Round)]
274 275 awardAlbum[albumId] = award
275 276 {
276 277 // 记录日志
... ... @@ -282,7 +283,7 @@ func DoOpenCheckAward(gameId string,
282 283 // 判断 处理 发放轮次奖励 轮次完成
283 284 if CheckRoundFinish(gameData, config) {
284 285 // 返回奖励
285   - awardRound = config.Awards[uttype.IntToString(gameData.Details.Round)]
  286 + awardRound = config.Awards[utstring.IntToString(gameData.Details.Round)]
286 287  
287 288 // 记录日志
288 289 recordBase := dto.NewCardHolderRecordBase(gameData.Uid, sequenceId, cohort, config.Id, gameData.Details.Round)
... ...
util/utmap/map.go 0 → 100644
... ... @@ -0,0 +1,66 @@
  1 +package utmap
  2 +
  3 +import (
  4 + "math/rand"
  5 + "venus/util/uttype"
  6 +)
  7 +
  8 +// Keys Keys切片
  9 +func Keys[T1 comparable, T2 any](dict map[T1]T2) []T1 {
  10 + list := make([]T1, 0)
  11 + for k, _ := range dict {
  12 + list = append(list, k)
  13 + }
  14 + return list
  15 +}
  16 +
  17 +// Values Values切片
  18 +func Values[T1 comparable, T2 any](dict map[T1]T2) []T2 {
  19 + list := make([]T2, 0)
  20 + for _, v := range dict {
  21 + list = append(list, v)
  22 + }
  23 + return list
  24 +}
  25 +
  26 +// ContainValue 值等于
  27 +func ContainValue[T1 comparable, T2 comparable](dict map[T1]T2, value T2) bool {
  28 + for _, v := range dict {
  29 + if v == value {
  30 + return true
  31 + }
  32 + }
  33 + return false
  34 +}
  35 +
  36 +// ContainValueEquals 值等于
  37 +func ContainValueEquals[T1 comparable, T2 uttype.EqualAble](dict map[T1]T2, value T2) bool {
  38 + for _, v := range dict {
  39 + if v.Equals(value) {
  40 + return true
  41 + }
  42 + }
  43 + return false
  44 +}
  45 +
  46 +// ContainValueBy 值符合
  47 +func ContainValueBy[T1 comparable, T2 any](dict map[T1]T2, value T2, equals func(v1 T2, v2 T2) bool) bool {
  48 + for _, v := range dict {
  49 + if equals(v, value) {
  50 + return true
  51 + }
  52 + }
  53 + return false
  54 +}
  55 +
  56 +// RandomOne 随机一个值
  57 +func RandomOne[T1 comparable, T2 any](dict map[T1]T2) T2 {
  58 + if len(dict) <= 0 {
  59 + return *new(T2)
  60 + }
  61 + list := make([]T1, 0)
  62 + for i, _ := range dict {
  63 + list = append(list, i)
  64 + }
  65 + return dict[list[rand.Intn(len(list))]]
  66 +}
... ...
util/utslice/slice.go 0 → 100644
... ... @@ -0,0 +1,183 @@
  1 +package utslice
  2 +
  3 +import (
  4 + "apigame/util/uttype"
  5 + "math/rand"
  6 +)
  7 +
  8 +// Contains 判断切片是否包含某元素
  9 +func Contains[T comparable](list []T, value T) bool {
  10 + for _, v := range list {
  11 + if v == value {
  12 + return true
  13 + }
  14 + }
  15 + return false
  16 +}
  17 +
  18 +// RandomOne 随机一个元素
  19 +func RandomOne[T any](list []T) T {
  20 + if len(list) <= 0 {
  21 + return *new(T)
  22 + }
  23 + return list[rand.Intn(len(list))]
  24 +}
  25 +
  26 +// Remove 切片删除一个元素
  27 +func Remove[T comparable](list []T, item T) []T {
  28 + for i := 0; i < len(list); i++ {
  29 + if item == list[i] {
  30 + list = append(list[:i], list[i+1:]...)
  31 + i = i - 1
  32 + }
  33 + }
  34 + return list
  35 +}
  36 +
  37 +// RemoveList 切片删除多个元素
  38 +func RemoveList[T comparable](list []T, items []T) []T {
  39 + dMap := make(map[T]bool)
  40 + for _, s := range items {
  41 + dMap[s] = true
  42 + }
  43 +
  44 + for i := 0; i < len(list); i++ {
  45 + if _, ok := dMap[list[i]]; ok {
  46 + list = append(list[:i], list[i+1:]...)
  47 + i = i - 1
  48 + }
  49 + }
  50 + return list
  51 +}
  52 +
  53 +// Sum 求和
  54 +func Sum[T uttype.UtNumber](list []T) T {
  55 + var result T = 0
  56 + for _, v := range list {
  57 + result += v
  58 + }
  59 + return result
  60 +}
  61 +
  62 +// Min 最小值
  63 +func Min[T uttype.UtNumber](list []T) T {
  64 + var result T = 0
  65 + for _, v := range list {
  66 + if v < result {
  67 + result = v
  68 + }
  69 + }
  70 + return result
  71 +}
  72 +
  73 +// Max 最大值
  74 +func Max[T uttype.UtNumber](list []T) T {
  75 + var result T = 0
  76 + for _, v := range list {
  77 + if v > result {
  78 + result = v
  79 + }
  80 + }
  81 + return result
  82 +}
  83 +
  84 +// Any 其中有一个元素符合就返回true
  85 +func Any[T uttype.UtNumber](list []T, value T) bool {
  86 + for _, v := range list {
  87 + if v == value {
  88 + return true
  89 + }
  90 + }
  91 + return false
  92 +}
  93 +
  94 +// AnyEquals 其中有一个元素符合就返回true
  95 +func AnyEquals[T uttype.EqualAble](list []T, value T) bool {
  96 + for _, v := range list {
  97 + if v.Equals(value) {
  98 + return true
  99 + }
  100 + }
  101 + return false
  102 +}
  103 +
  104 +// AnyBy 其中有一个元素符合就返回true
  105 +func AnyBy[T any](list []T, value T, equals func(v1 T, v2 T) bool) bool {
  106 + for _, v := range list {
  107 + if equals(v, value) {
  108 + return true
  109 + }
  110 + }
  111 + return false
  112 +}
  113 +
  114 +// All 所有元素符合就返回true
  115 +func All[T uttype.UtNumber](list []T, value T) bool {
  116 + for _, v := range list {
  117 + if v != value {
  118 + return false
  119 + }
  120 + }
  121 + return true
  122 +}
  123 +
  124 +// AllEquals 所有元素符合就返回true
  125 +func AllEquals[T uttype.EqualAble](list []T, value T) bool {
  126 + for _, v := range list {
  127 + if !v.Equals(value) {
  128 + return false
  129 + }
  130 + }
  131 + return true
  132 +}
  133 +
  134 +// AllBy 所有元素符合就返回true
  135 +func AllBy[T any](list []T, value T, equals func(v1 T, v2 T) bool) bool {
  136 + for _, v := range list {
  137 + if !equals(v, value) {
  138 + return false
  139 + }
  140 + }
  141 + return true
  142 +}
  143 +
  144 +// Filter 过滤
  145 +func Filter[T comparable](list []T, value T) []T {
  146 + result := make([]T, 0)
  147 + for _, v := range list {
  148 + if v == value {
  149 + result = append(result, v)
  150 + }
  151 + }
  152 + return result
  153 +}
  154 +
  155 +// FilterEquals 过滤
  156 +func FilterEquals[T uttype.EqualAble](list []T, value T) []T {
  157 + result := make([]T, 0)
  158 + for _, v := range list {
  159 + if v.Equals(value) {
  160 + result = append(result, v)
  161 + }
  162 + }
  163 + return result
  164 +}
  165 +
  166 +// FilterBy 过滤
  167 +func FilterBy[T any](list []T, value T, equals func(v1 T, v2 T) bool) []T {
  168 + result := make([]T, 0)
  169 + for _, v := range list {
  170 + if equals(v, value) {
  171 + result = append(result, v)
  172 + }
  173 + }
  174 + return result
  175 +}
  176 +
  177 +// Shuffle 打乱
  178 +func Shuffle[T any](list []T) {
  179 + for i := len(list) - 1; i > 0; i-- {
  180 + j := rand.Intn(i + 1)
  181 + list[i], list[j] = list[j], list[i]
  182 + }
  183 +}
... ...
util/utstring/list.go 0 → 100644
... ... @@ -0,0 +1,51 @@
  1 +package utstring
  2 +
  3 +import "strings"
  4 +
  5 +func ListStringToListInt(list []string) []int {
  6 + result := make([]int, 0)
  7 + for _, v := range list {
  8 + result = append(result, StringToInt(v))
  9 + }
  10 + return result
  11 +}
  12 +func ListStringToListInt64(list []string) []int64 {
  13 + result := make([]int64, 0)
  14 + for _, v := range list {
  15 + result = append(result, StringToInt64(v))
  16 + }
  17 + return result
  18 +}
  19 +func StringToListString(str string, sep string) []string {
  20 + return strings.Split(str, sep)
  21 +}
  22 +func StringToListInt(str string, sep string) []int {
  23 + return ListStringToListInt(strings.Split(str, sep))
  24 +}
  25 +func StringToListListString(str string, sep1, sep2 string) [][]string {
  26 + result := make([][]string, 0)
  27 + list1 := strings.Split(str, sep1)
  28 + for _, v := range list1 {
  29 + list2 := strings.Split(v, sep2)
  30 + result = append(result, list2)
  31 + }
  32 + return result
  33 +}
  34 +func StringToListListInt(str string, sep1, sep2 string) [][]int {
  35 + result := make([][]int, 0)
  36 + list1 := strings.Split(str, sep1)
  37 + for _, v := range list1 {
  38 + list2 := strings.Split(v, sep2)
  39 + result = append(result, ListStringToListInt(list2))
  40 + }
  41 + return result
  42 +}
  43 +func StringToListListInt64(str string, sep1, sep2 string) [][]int64 {
  44 + result := make([][]int64, 0)
  45 + list1 := strings.Split(str, sep1)
  46 + for _, v := range list1 {
  47 + list2 := strings.Split(v, sep2)
  48 + result = append(result, ListStringToListInt64(list2))
  49 + }
  50 + return result
  51 +}
... ...
util/utstring/string.go 0 → 100644
... ... @@ -0,0 +1,30 @@
  1 +package utstring
  2 +
  3 +import (
  4 + "strconv"
  5 +)
  6 +
  7 +func StringToInt(str string) int {
  8 + if value, err := strconv.Atoi(str); err == nil {
  9 + return value
  10 + }
  11 + return 0
  12 +}
  13 +func StringToInt32(str string) int32 {
  14 + return int32(StringToInt(str))
  15 +}
  16 +func StringToInt64(str string) int64 {
  17 + if value, err := strconv.ParseInt(str, 10, 64); err == nil {
  18 + return value
  19 + }
  20 + return 0
  21 +}
  22 +func IntToString(value int) string {
  23 + return strconv.Itoa(value)
  24 +}
  25 +func Int32ToString(value int32) string {
  26 + return IntToString(int(value))
  27 +}
  28 +func Int64ToString(value int64) string {
  29 + return strconv.FormatInt(value, 10)
  30 +}
... ...
util/uttype/equals.go 0 → 100644
... ... @@ -0,0 +1,8 @@
  1 +package uttype
  2 +
  3 +// EqualAble 可比较的
  4 +type EqualAble interface {
  5 + Equals(T EqualAble) bool
  6 +}
  7 +
  8 +type FuncEquals[T any] func(v1 T, v2 T) bool
... ...
util/uttype/number.go
... ... @@ -1,21 +0,0 @@
1   -package uttype
2   -
3   -// Int 整型
4   -type Int interface {
5   - int | int8 | int16 | int32 | int64 | float32 | float64
6   -}
7   -
8   -// Uint 无符号整型
9   -type Uint interface {
10   - uint | uint8 | uint16 | uint32
11   -}
12   -
13   -// Float 浮点
14   -type Float interface {
15   - float32 | float64
16   -}
17   -
18   -// Number 数字
19   -type Number interface {
20   - Int | Uint | Float
21   -}
util/uttype/slice.go
... ... @@ -1,43 +0,0 @@
1   -package uttype
2   -
3   -import "math/rand"
4   -
5   -// Contains 切片内是否有
6   -func Contains[T comparable](values []T, value T) bool {
7   - for _, v := range values {
8   - if v == value {
9   - return true
10   - }
11   - }
12   - return false
13   -}
14   -
15   -// Min 最小值
16   -func Min[T Number](values ...T) T {
17   - result := values[0]
18   - for _, v := range values[1:] {
19   - if v < result {
20   - result = v
21   - }
22   - }
23   - return result
24   -}
25   -
26   -// Max 最大值
27   -func Max[T Number](values ...T) T {
28   - result := values[0]
29   - for _, v := range values[1:] {
30   - if v > result {
31   - result = v
32   - }
33   - }
34   - return result
35   -}
36   -
37   -// Shuffle 打乱
38   -func Shuffle[T any](list []T) {
39   - for i := len(list) - 1; i > 0; i-- {
40   - j := rand.Intn(i + 1)
41   - list[i], list[j] = list[j], list[i]
42   - }
43   -}
util/uttype/string.go
... ... @@ -1,84 +0,0 @@
1   -package uttype
2   -
3   -import (
4   - "strconv"
5   - "strings"
6   -)
7   -
8   -const (
9   - StrSpe1 = "|"
10   - StrSpe2 = "_"
11   -)
12   -
13   -func StringToInt(str string) int {
14   - if value, err := strconv.Atoi(str); err == nil {
15   - return value
16   - }
17   - return 0
18   -}
19   -func StringToInt32(str string) int32 {
20   - return int32(StringToInt(str))
21   -}
22   -func StringToInt64(str string) int64 {
23   - if value, err := strconv.ParseInt(str, 10, 64); err == nil {
24   - return value
25   - }
26   - return 0
27   -}
28   -func IntToString(value int) string {
29   - return strconv.Itoa(value)
30   -}
31   -func Int32ToString(value int32) string {
32   - return IntToString(int(value))
33   -}
34   -func Int64ToString(value int64) string {
35   - return strconv.FormatInt(value, 10)
36   -}
37   -
38   -func ListStringToListInt(list []string) []int {
39   - result := make([]int, 0)
40   - for _, v := range list {
41   - result = append(result, StringToInt(v))
42   - }
43   - return result
44   -}
45   -func ListStringToListInt64(list []string) []int64 {
46   - result := make([]int64, 0)
47   - for _, v := range list {
48   - result = append(result, StringToInt64(v))
49   - }
50   - return result
51   -}
52   -func StringToListString(str string) []string {
53   - return strings.Split(str, StrSpe1)
54   -}
55   -func StringToListInt(str string) []int {
56   - return ListStringToListInt(strings.Split(str, StrSpe1))
57   -}
58   -func StringToListListString(str string) [][]string {
59   - result := make([][]string, 0)
60   - list1 := strings.Split(str, StrSpe1)
61   - for _, v := range list1 {
62   - list2 := strings.Split(v, StrSpe2)
63   - result = append(result, list2)
64   - }
65   - return result
66   -}
67   -func StringToListListInt(str string) [][]int {
68   - result := make([][]int, 0)
69   - list1 := strings.Split(str, StrSpe1)
70   - for _, v := range list1 {
71   - list2 := strings.Split(v, StrSpe2)
72   - result = append(result, ListStringToListInt(list2))
73   - }
74   - return result
75   -}
76   -func StringToListListInt64(str string) [][]int64 {
77   - result := make([][]int64, 0)
78   - list1 := strings.Split(str, StrSpe1)
79   - for _, v := range list1 {
80   - list2 := strings.Split(v, StrSpe2)
81   - result = append(result, ListStringToListInt64(list2))
82   - }
83   - return result
84   -}
util/uttype/type.go 0 → 100644
... ... @@ -0,0 +1,21 @@
  1 +package uttype
  2 +
  3 +type UtInt interface {
  4 + ~int | ~int8 | ~int16 | ~int32 | ~int64
  5 +}
  6 +
  7 +type UtUint interface {
  8 + ~uint | ~uint8 | ~uint16 | ~uint32
  9 +}
  10 +
  11 +type UtFloat interface {
  12 + ~float32 | ~float64
  13 +}
  14 +
  15 +type UtNumber interface {
  16 + UtInt | UtUint | UtFloat
  17 +}
  18 +
  19 +type UtBase interface {
  20 + UtNumber | string
  21 +}
... ...