main.go 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. package main
  2. import (
  3. "fmt"
  4. "log"
  5. "math/rand"
  6. "os"
  7. "time"
  8. "github.com/bxcodec/faker/v3"
  9. "github.com/mhaya/game/game_cluster/internal/mdb/eventmodels"
  10. "gorm.io/driver/clickhouse"
  11. "gorm.io/gorm"
  12. "gorm.io/gorm/logger"
  13. )
  14. // `insert into assets_event_contents (user_id, user_name, tg_id, x_id, parent_user_id, is_robot, points_rank_seq,
  15. // throw_dice_rank_seq, invite_user_rank_seq, is_success, create_at, operation_type,
  16. // currency, reason, before_balance, amount, after_balance, server_id)
  17. // values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`
  18. var (
  19. server_id = "m-web-admin-1"
  20. count = 100
  21. )
  22. func main() {
  23. db := connectDb()
  24. // address := faker.Address()
  25. // phone := faker.Phone()
  26. users := make([]*eventmodels.UserBasic, 0, 8)
  27. for i := 0; i < 10; i++ {
  28. user_id := faker.Name()
  29. name := faker.Name()
  30. tg_id := faker.Name()
  31. x_id := faker.Name()
  32. nameObj := &eventmodels.UserBasic{
  33. UserId: user_id,
  34. UserName: name,
  35. TgId: tg_id,
  36. XId: x_id,
  37. IsRobot: false,
  38. IfTgVip: func() bool {
  39. return rand.Intn(2) == 1
  40. }(),
  41. TonWall: faker.Name(),
  42. Email: faker.Email(),
  43. Fingerprint: faker.Name(),
  44. Level: rand.Intn(50) + 1,
  45. UserStatus: rand.Intn(2) + 1,
  46. PointsRankSeq: rand.Int63n(100) + 1,
  47. ThrowDiceRankSeq: rand.Int63n(100) + 1,
  48. InviteUserRankSeq: rand.Int63n(100) + 1,
  49. }
  50. users = append(users, nameObj)
  51. }
  52. registerDatas := getregisterFakeData(users)
  53. err := db.CreateInBatches(registerDatas, len(registerDatas)).Error
  54. if err != nil {
  55. fmt.Printf("CreateInBatches registerDatas error:%v", err)
  56. return
  57. }
  58. updateDatas := getUpdateInfoFakeData(users)
  59. err = db.CreateInBatches(updateDatas, len(updateDatas)).Error
  60. if err != nil {
  61. fmt.Printf("CreateInBatches updateDatas error:%v", err)
  62. return
  63. }
  64. assetDatas := getAssetFakeData(users)
  65. err = db.CreateInBatches(assetDatas, len(assetDatas)).Error
  66. if err != nil {
  67. fmt.Printf("CreateInBatches assetDatas error:%v", err)
  68. return
  69. }
  70. diceDatas := getDiceFakeData(users)
  71. err = db.CreateInBatches(diceDatas, len(diceDatas)).Error
  72. if err != nil {
  73. fmt.Printf("CreateInBatches diceDatas error:%v", err)
  74. return
  75. }
  76. followDatas := getFollowFakeData(users)
  77. err = db.CreateInBatches(followDatas, len(followDatas)).Error
  78. if err != nil {
  79. fmt.Printf("CreateInBatches followDatas error:%v", err)
  80. return
  81. }
  82. inviteDatas := getInviteFakeData(users)
  83. err = db.CreateInBatches(inviteDatas, len(inviteDatas)).Error
  84. if err != nil {
  85. fmt.Printf("CreateInBatches inviteDatas error:%v", err)
  86. return
  87. }
  88. joinDatas := getJoinFakeData(users)
  89. err = db.CreateInBatches(joinDatas, len(joinDatas)).Error
  90. if err != nil {
  91. fmt.Printf("CreateInBatches joinDatas error:%v", err)
  92. return
  93. }
  94. turntableDatas := getTurntableFakeData(users)
  95. err = db.CreateInBatches(turntableDatas, len(turntableDatas)).Error
  96. if err != nil {
  97. fmt.Printf("CreateInBatches turntableDatas error:%v", err)
  98. return
  99. }
  100. loginDatas := getLoginFakeData(users)
  101. err = db.CreateInBatches(loginDatas, len(loginDatas)).Error
  102. if err != nil {
  103. fmt.Printf("CreateInBatches loginDatas error:%v", err)
  104. return
  105. }
  106. rewardDatas := getRewardFakeData(users)
  107. err = db.CreateInBatches(rewardDatas, len(rewardDatas)).Error
  108. if err != nil {
  109. fmt.Printf("CreateInBatches rewardDatas error:%v", err)
  110. return
  111. }
  112. withdrawDatas := getWithdrawFakeData(users)
  113. err = db.CreateInBatches(withdrawDatas, len(withdrawDatas)).Error
  114. if err != nil {
  115. fmt.Printf("CreateInBatches withdrawDatas error:%v", err)
  116. return
  117. }
  118. }
  119. func connectDb() *gorm.DB {
  120. dsn := "clickhouse://default:123456@192.168.0.193:9000/default?dial_timeout=10s&read_timeout=20s"
  121. newLogger := logger.New(
  122. log.New(os.Stdout, "\r\n", log.LstdFlags), // io writer(日志输出的地方,这里是标准输出)
  123. logger.Config{
  124. SlowThreshold: time.Second, // 慢 SQL 阈值
  125. LogLevel: logger.Info, // 日志级别
  126. Colorful: true, // 彩色打印
  127. },
  128. )
  129. db, err := gorm.Open(clickhouse.Open(dsn), &gorm.Config{
  130. Logger: newLogger,
  131. })
  132. if err != nil {
  133. panic("failed to connect database")
  134. }
  135. return db
  136. }
  137. func getUserBasic(users []*eventmodels.UserBasic) *eventmodels.UserBasic {
  138. retry:
  139. index := rand.Intn(len(users))
  140. user := users[index]
  141. if user.UserStatus != 1 {
  142. goto retry
  143. }
  144. return &eventmodels.UserBasic{
  145. UserId: user.UserId,
  146. UserName: user.UserName,
  147. TgId: user.TgId,
  148. XId: user.XId,
  149. ParentUserId: user.ParentUserId,
  150. IsRobot: user.IsRobot,
  151. IfTgVip: user.IfTgVip,
  152. TonWall: user.TonWall,
  153. Email: user.Email,
  154. Fingerprint: user.Fingerprint,
  155. Level: user.Level,
  156. UserStatus: user.UserStatus,
  157. PointsRankSeq: user.PointsRankSeq,
  158. ThrowDiceRankSeq: user.ThrowDiceRankSeq,
  159. InviteUserRankSeq: user.InviteUserRankSeq,
  160. }
  161. }
  162. func getEventBasic() *eventmodels.EventBasic {
  163. return &eventmodels.EventBasic{
  164. ServerId: server_id,
  165. IsSuccess: rand.Intn(2) == 1,
  166. Status: rand.Intn(2),
  167. RewardDrawStatus: rand.Intn(2),
  168. CreateAt: faker.RandomUnixTime(),
  169. }
  170. }
  171. func getPlatform() string {
  172. datas := make([]string, 0, 8)
  173. datas = append(datas, "pc", "h5", "ios", "android")
  174. index := rand.Intn(len(datas))
  175. return datas[index]
  176. }
  177. func getChannel() string {
  178. datas := make([]string, 0, 8)
  179. datas = append(datas, "tg")
  180. index := rand.Intn(len(datas))
  181. return datas[index]
  182. }