task.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package main
  2. import (
  3. "fmt"
  4. "math/rand"
  5. "github.com/bxcodec/faker/v3"
  6. "github.com/mhaya/game/game_cluster/internal/mdb/eventmodels"
  7. "gorm.io/gorm"
  8. )
  9. func getTaskFakeData(users []*eventmodels.UserBasic) []*eventmodels.TaskFinishEventContent {
  10. datas := make([]*eventmodels.TaskFinishEventContent, 0, 8)
  11. for i := 0; i < count; i++ {
  12. userBasic := getUserBasic(users)
  13. eventBasic := getEventBasic()
  14. rewards := make([]eventmodels.ItemReward, 0, 8)
  15. rewards = append(rewards, eventmodels.ItemReward{
  16. ItemBaseType: rand.Intn(5) + 1,
  17. ItemID: rand.Intn(7) + 1,
  18. Amount: rand.Intn(100) + 1,
  19. })
  20. bytes, err := json.Marshal(rewards)
  21. if err != nil {
  22. panic(err)
  23. }
  24. eventBasic.Reward = string(bytes)
  25. datas = append(datas, &eventmodels.TaskFinishEventContent{
  26. UserBasic: *userBasic,
  27. EventBasic: *eventBasic,
  28. TaskId: faker.TimeString(),
  29. TaskName: faker.Name(),
  30. TaskCondition: faker.AmountWithCurrency(),
  31. TaskType: faker.Name(),
  32. TaskProgress: rand.Intn(100) + 1,
  33. })
  34. }
  35. return datas
  36. }
  37. func distinctTask(db *gorm.DB, users []*eventmodels.UserBasic) {
  38. for _, nameObj := range users {
  39. taskIds := make([]*eventmodels.TaskFinishEventContent, 0, 8)
  40. where := &eventmodels.TaskFinishEventContent{
  41. UserBasic: eventmodels.UserBasic{
  42. UserId: nameObj.UserId,
  43. },
  44. }
  45. err := db.Model(&eventmodels.TaskFinishEventContent{}).Distinct("task_id").Where(where).Find(&taskIds).Error
  46. if err != nil {
  47. fmt.Printf("Distinct error:%v", err)
  48. return
  49. }
  50. fmt.Printf("taskIds:%#v", taskIds)
  51. for _, v := range taskIds {
  52. taskInfo := &eventmodels.TaskFinishEventContent{}
  53. where.TaskId = v.TaskId
  54. err = db.Model(&eventmodels.TaskFinishEventContent{}).Where(where).Order("create_at desc").First(&taskInfo).Error
  55. if err != nil {
  56. fmt.Printf("First error:%v", err)
  57. return
  58. }
  59. fmt.Printf("taskInfo:%#v", taskInfo)
  60. }
  61. }
  62. }