main.go 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  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. taskDatas := getTaskFakeData(users)
  119. err = db.CreateInBatches(taskDatas, len(taskDatas)).Error
  120. if err != nil {
  121. fmt.Printf("CreateInBatches taskDatas error:%v", err)
  122. return
  123. }
  124. }
  125. func connectDb() *gorm.DB {
  126. dsn := "clickhouse://default:123456@192.168.0.193:9000/default?dial_timeout=10s&read_timeout=20s"
  127. newLogger := logger.New(
  128. log.New(os.Stdout, "\r\n", log.LstdFlags), // io writer(日志输出的地方,这里是标准输出)
  129. logger.Config{
  130. SlowThreshold: time.Second, // 慢 SQL 阈值
  131. LogLevel: logger.Info, // 日志级别
  132. Colorful: true, // 彩色打印
  133. },
  134. )
  135. db, err := gorm.Open(clickhouse.Open(dsn), &gorm.Config{
  136. Logger: newLogger,
  137. })
  138. if err != nil {
  139. panic("failed to connect database")
  140. }
  141. return db
  142. }
  143. func getUserBasic(users []*eventmodels.UserBasic) *eventmodels.UserBasic {
  144. retry:
  145. index := rand.Intn(len(users))
  146. user := users[index]
  147. if user.UserStatus != 1 {
  148. goto retry
  149. }
  150. return &eventmodels.UserBasic{
  151. UserId: user.UserId,
  152. UserName: user.UserName,
  153. TgId: user.TgId,
  154. XId: user.XId,
  155. ParentUserId: user.ParentUserId,
  156. IsRobot: user.IsRobot,
  157. IfTgVip: user.IfTgVip,
  158. TonWall: user.TonWall,
  159. Email: user.Email,
  160. Fingerprint: user.Fingerprint,
  161. Level: user.Level,
  162. UserStatus: user.UserStatus,
  163. PointsRankSeq: user.PointsRankSeq,
  164. ThrowDiceRankSeq: user.ThrowDiceRankSeq,
  165. InviteUserRankSeq: user.InviteUserRankSeq,
  166. }
  167. }
  168. func getEventBasic() *eventmodels.EventBasic {
  169. return &eventmodels.EventBasic{
  170. ServerId: server_id,
  171. IsSuccess: rand.Intn(2) == 1,
  172. Status: rand.Intn(2),
  173. RewardDrawStatus: rand.Intn(2),
  174. CreateAt: faker.RandomUnixTime(),
  175. }
  176. }
  177. func getPlatform() string {
  178. datas := make([]string, 0, 8)
  179. datas = append(datas, "pc", "h5", "ios", "android")
  180. index := rand.Intn(len(datas))
  181. return datas[index]
  182. }
  183. func getChannel() string {
  184. datas := make([]string, 0, 8)
  185. datas = append(datas, "tg")
  186. index := rand.Intn(len(datas))
  187. return datas[index]
  188. }