|
@@ -1313,16 +1313,43 @@ func genIssue(roomID int32) string {
|
|
|
return fmt.Sprintf("%d-%d", roomID, time.Now().Unix())
|
|
|
}
|
|
|
|
|
|
-var cardCache = cache.New(1*time.Minute, 2*time.Minute)
|
|
|
+var cardCache = cache.New(10*time.Minute, 20*time.Minute)
|
|
|
|
|
|
func getOpenNumList(issue string, roomID, chairID int32) []Card {
|
|
|
- cardCache.Get(issue)
|
|
|
+ currActiveCard, exists := cardCache.Get(issue)
|
|
|
+ var cardMap map[int]int
|
|
|
+
|
|
|
+ if !exists {
|
|
|
+ cardMap = map[int]int{}
|
|
|
+ for i := 1; i <= 52; i++ {
|
|
|
+ cardMap[i] = 1
|
|
|
+ }
|
|
|
+
|
|
|
+ cardCache.Set(issue, cardMap, cache.DefaultExpiration)
|
|
|
+ } else {
|
|
|
+ cardMap = currActiveCard.(map[int]int)
|
|
|
+ }
|
|
|
+
|
|
|
+ count := 0
|
|
|
cardList := make([]Card, 0)
|
|
|
- for c := 0; c < 5; c++ {
|
|
|
+
|
|
|
+ for {
|
|
|
+ key := rand.Intn(52) + 1
|
|
|
+ if cardMap[key] == -1 {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+
|
|
|
cardList = append(cardList, Card{
|
|
|
- Suit: rand.Intn(4) + 1,
|
|
|
- Num: rand.Intn(13) + 1,
|
|
|
+ Suit: key%13 + 1,
|
|
|
+ Num: key/13 + 1,
|
|
|
})
|
|
|
+
|
|
|
+ cardMap[key] = -1
|
|
|
+
|
|
|
+ count++
|
|
|
+ if count == 5 {
|
|
|
+ break
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
return cardList
|