Commit 41077a2b235587b39007656350372ab65bfd697a

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

feat✨:公共库

1 .idea 1 .idea
2 .vscode 2 .vscode
3 bin 3 bin
  4 +bat
4 apigame.exe 5 apigame.exe
  6 +apigame.exe~
5 *.bat 7 *.bat
6 \ No newline at end of file 8 \ No newline at end of file
service/cardholder/config-registry.go
@@ -9,15 +9,15 @@ import ( @@ -9,15 +9,15 @@ import (
9 ) 9 )
10 10
11 var ( 11 var (
12 - Configs map[string]*CardActivityConfig // 配置列表 k=GameId v=配置 12 + _Configs map[string]*CardActivityConfig // 配置列表 k=GameId v=配置
13 ) 13 )
14 14
15 func NewConfigs() { 15 func NewConfigs() {
16 - Configs = make(map[string]*CardActivityConfig) 16 + _Configs = make(map[string]*CardActivityConfig)
17 } 17 }
18 18
19 func GetConfig(gameId string) (config *CardActivityConfig, has bool) { 19 func GetConfig(gameId string) (config *CardActivityConfig, has bool) {
20 - config, has = Configs[gameId] 20 + config, has = _Configs[gameId]
21 return 21 return
22 } 22 }
23 23
@@ -119,7 +119,7 @@ func ConfigDecode(gameId string, configRaw *CardActivityConfigRaw) { @@ -119,7 +119,7 @@ func ConfigDecode(gameId string, configRaw *CardActivityConfigRaw) {
119 Config.StarShopConfig[i2.Id] = i2 119 Config.StarShopConfig[i2.Id] = i2
120 } 120 }
121 } 121 }
122 - Configs[gameId] = Config 122 + _Configs[gameId] = Config
123 123
124 GenerateConfigClient(Config) 124 GenerateConfigClient(Config)
125 } 125 }
service/cardholder/handle.go
@@ -5,7 +5,7 @@ import ( @@ -5,7 +5,7 @@ import (
5 "apigame/service/constd" 5 "apigame/service/constd"
6 "apigame/util/util-lx/lxalilog" 6 "apigame/util/util-lx/lxalilog"
7 "apigame/util/util-lx/lxtime" 7 "apigame/util/util-lx/lxtime"
8 - "apigame/util/uttype" 8 + "apigame/util/utslice"
9 "strconv" 9 "strconv"
10 ) 10 )
11 11
@@ -103,7 +103,7 @@ func HandleOpen(req *models.ReqCardHolderOpen) (code string, rsp models.RspCardH @@ -103,7 +103,7 @@ func HandleOpen(req *models.ReqCardHolderOpen) (code string, rsp models.RspCardH
103 sequenceId, cohort, 103 sequenceId, cohort,
104 openMode) 104 openMode)
105 // 打乱顺序 105 // 打乱顺序
106 - uttype.Shuffle(newCards) 106 + utslice.Shuffle(newCards)
107 for _, i3 := range newCards { 107 for _, i3 := range newCards {
108 allNewCards = append(allNewCards, i3) 108 allNewCards = append(allNewCards, i3)
109 } 109 }
@@ -226,7 +226,7 @@ func HandleShopExchange(req *models.ReqStarShopExchange) (code string, rsp model @@ -226,7 +226,7 @@ func HandleShopExchange(req *models.ReqStarShopExchange) (code string, rsp model
226 // 存档 226 // 存档
227 SaveData(req.GameID, gameData) 227 SaveData(req.GameID, gameData)
228 228
229 - uttype.Shuffle(rsp.NewCards) 229 + utslice.Shuffle(rsp.NewCards)
230 230
231 // 返回信息 231 // 返回信息
232 rsp.CardHolderInfo = GetInfo(gameData, config) 232 rsp.CardHolderInfo = GetInfo(gameData, config)
service/cardholder/logic.go
@@ -7,7 +7,8 @@ import ( @@ -7,7 +7,8 @@ import (
7 "apigame/util/util-lx/lxalilog" 7 "apigame/util/util-lx/lxalilog"
8 "apigame/util/util-lx/lxtime" 8 "apigame/util/util-lx/lxtime"
9 "apigame/util/utjson" 9 "apigame/util/utjson"
10 - "apigame/util/uttype" 10 + "apigame/util/utslice"
  11 + "apigame/util/utstring"
11 ) 12 )
12 13
13 // SaveData 存储数据 14 // SaveData 存储数据
@@ -117,7 +118,7 @@ func GetNewCard(gameData *dto.CardHolderData, conf *CardActivityConfig) int { @@ -117,7 +118,7 @@ func GetNewCard(gameData *dto.CardHolderData, conf *CardActivityConfig) int {
117 list = append(list, index) 118 list = append(list, index)
118 } 119 }
119 120
120 - indexMin := uttype.Min(list...) 121 + indexMin := utslice.Min(list)
121 return int(indexMin % rate) 122 return int(indexMin % rate)
122 } 123 }
123 124
@@ -194,7 +195,7 @@ func DoOpen(gameId string, @@ -194,7 +195,7 @@ func DoOpen(gameId string,
194 combineId := CombineIdSequenceIdCohort(cardConfigId, sequenceId, cohort) 195 combineId := CombineIdSequenceIdCohort(cardConfigId, sequenceId, cohort)
195 scale := gameData.Details.CardSequenceScales[combineId] 196 scale := gameData.Details.CardSequenceScales[combineId]
196 cardId := GetOneFromArray(confCardSequence.CardIdLists, scale) 197 cardId := GetOneFromArray(confCardSequence.CardIdLists, scale)
197 - cardIdInt := uttype.StringToInt(cardId) 198 + cardIdInt := utstring.StringToInt(cardId)
198 // 增加刻度 199 // 增加刻度
199 gameData.Details.CardSequenceScales[combineId] = scale + 1 200 gameData.Details.CardSequenceScales[combineId] = scale + 1
200 // 增加卡牌 201 // 增加卡牌
@@ -228,7 +229,7 @@ func DoOpen(gameId string, @@ -228,7 +229,7 @@ func DoOpen(gameId string,
228 { 229 {
229 recordBase := dto.NewCardHolderRecordBase(gameData.Uid, sequenceId, cohort, config.Id, gameData.Details.Round) 230 recordBase := dto.NewCardHolderRecordBase(gameData.Uid, sequenceId, cohort, config.Id, gameData.Details.Round)
230 dto.SaveRecord(gameId, dto.NewCardHolderRecordOpen(recordBase, 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 return 235 return
@@ -270,7 +271,7 @@ func DoOpenCheckAward(gameId string, @@ -270,7 +271,7 @@ func DoOpenCheckAward(gameId string,
270 } 271 }
271 // 集齐处理发奖 272 // 集齐处理发奖
272 gameData.Details.Album[albumId] += 1 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 awardAlbum[albumId] = award 275 awardAlbum[albumId] = award
275 { 276 {
276 // 记录日志 277 // 记录日志
@@ -282,7 +283,7 @@ func DoOpenCheckAward(gameId string, @@ -282,7 +283,7 @@ func DoOpenCheckAward(gameId string,
282 // 判断 处理 发放轮次奖励 轮次完成 283 // 判断 处理 发放轮次奖励 轮次完成
283 if CheckRoundFinish(gameData, config) { 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 recordBase := dto.NewCardHolderRecordBase(gameData.Uid, sequenceId, cohort, config.Id, gameData.Details.Round) 289 recordBase := dto.NewCardHolderRecordBase(gameData.Uid, sequenceId, cohort, config.Id, gameData.Details.Round)
util/utmap/map.go 0 → 100644
@@ -0,0 +1,66 @@ @@ -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 @@ @@ -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 @@ @@ -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 @@ @@ -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 @@ @@ -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,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,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,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 @@ @@ -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 +}