id_card.go 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. package card
  2. import (
  3. "fmt"
  4. "log-server/global"
  5. "log-server/model/card"
  6. cardReq "log-server/model/card/request"
  7. "math/rand"
  8. "strconv"
  9. "time"
  10. )
  11. type IdCardService struct {
  12. }
  13. //查找身份证信息
  14. func (s *IdCardService) GetIdCard(idCard cardReq.IdCardRequest) (list []card.IdCard, err error) {
  15. var unionIdCardList []card.UnionIdCard
  16. var idCardList = make([]card.IdCard, idCard.Rows)
  17. var total int64
  18. //查找此渠道和此id_idCard记录是否存在, 1是创建,2是更新
  19. var status int
  20. //取一个0-1000的随机数作为偏移值
  21. //将时间戳设置成种子数
  22. rand.Seed(time.Now().UnixNano())
  23. limit := idCard.Rows
  24. //联合查询符合条件的身份证信息
  25. //查找channel != channel 的表单信息
  26. db := global.GVA_DB.Table("(select * from shuyou_id_card where id not in (select id_idCard from `shuyou_id_card_usage` where channel = ?) and flag = ?) as a", idCard.Channel, idCard.Flag)
  27. db = db.Select("a.id, id_name, a.id_number, flag, IFNULL(use_count, 0) as use_count, b.id as usage_id, channel")
  28. db = db.Joins("left JOIN shuyou_id_card_usage as b on b.id_idCard = a.id")
  29. db.Count(&total)
  30. if total > 0 {
  31. //将total转化为int
  32. strInt64 := strconv.FormatInt(total, 10)
  33. countInt, _ := strconv.Atoi(strInt64)
  34. //生成1个0-total之间的随机数
  35. randomOffset := rand.Intn(countInt)
  36. db = db.Order("use_count").Limit(limit).Offset(randomOffset)
  37. err = db.Find(&unionIdCardList).Error
  38. if err != nil {
  39. return nil, err
  40. }
  41. fmt.Println(unionIdCardList)
  42. }
  43. //没有非这个渠道的记录
  44. if total == 0 {
  45. dbFail := global.GVA_DB.Table("shuyou_id_card as a")
  46. dbFail = dbFail.Select("a.id, id_name, a.id_number, flag, IFNULL(use_count, 0) as use_count, b.id as usage_id, channel")
  47. dbFail = dbFail.Joins("left JOIN shuyou_id_card_usage as b on b.id_idCard = a.id")
  48. dbFail = dbFail.Where("channel = ? and flag = ?", idCard.Channel, idCard.Flag)
  49. dbFail = dbFail.Order("use_count").Limit(limit)
  50. err = dbFail.Find(&unionIdCardList).Error
  51. fmt.Println("---------没查到----------")
  52. fmt.Println(unionIdCardList)
  53. //1是创建,2是更新
  54. status = 2
  55. } else {
  56. //1是创建,2是更新
  57. status = 1
  58. }
  59. for i, unionInfo := range unionIdCardList {
  60. //将idCard内容赋予idCardList
  61. idCardList[i] = unionInfo.IdCard
  62. if status == 1 {
  63. err = s.CreateIdCardUsage(unionInfo, idCard.Channel)
  64. } else if status == 2 {
  65. err = s.UpdateIdCardUsage(unionInfo)
  66. }
  67. if err != nil {
  68. return nil, err
  69. }
  70. }
  71. return idCardList, err
  72. }
  73. //更改身份证使用表
  74. //func (s *IdCardService) ChangeIdCardUsage(unionInfo card.UnionIdCard, channel string) (err error){
  75. // var usageEntity card.IdCardUsage
  76. // if unionInfo.UseCount == 0 {
  77. // usageEntity = card.IdCardUsage{
  78. // IdIdCard: unionInfo.Id,
  79. // IdNumber: unionInfo.IdNumber,
  80. // Channel: channel,
  81. // UseCount: 1,
  82. // }
  83. // err = global.GVA_DB.Model(&card.IdCardUsage{}).Create(&usageEntity).Error
  84. // } else {
  85. // usageEntity = card.IdCardUsage{
  86. // UseCount: unionInfo.UseCount + 1,
  87. // }
  88. // err = global.GVA_DB.Model(&card.IdCardUsage{}).Updates(&usageEntity).Error
  89. // }
  90. // return err
  91. //}
  92. //添加身份证使用记录信息
  93. func (s *IdCardService) CreateIdCardUsage(unionInfo card.UnionIdCard, channel string) (err error) {
  94. var usageEntity = card.IdCardUsage{
  95. IdIdCard: unionInfo.Id,
  96. IdNumber: unionInfo.IdNumber,
  97. Channel: channel,
  98. UseCount: 1,
  99. }
  100. return global.GVA_DB.Model(&card.IdCardUsage{}).Omit("createTime", "updateTime").Create(&usageEntity).Error
  101. }
  102. //更新身份证使用记录信息
  103. func (s *IdCardService) UpdateIdCardUsage(unionInfo card.UnionIdCard) (err error) {
  104. useCount := unionInfo.UseCount + 1
  105. //更新记录
  106. return global.GVA_DB.Model(&card.IdCardUsage{}).Where("id = ? ", unionInfo.UsageId).Update("use_count", useCount).Error
  107. }
  108. //判断是更新记录还是创建记录, 1是创建,2是更新
  109. //func(s *IdCardService) judgeOperate(unionInfo card.UnionIdCard, channel string) (status int, err error){
  110. // //查找此channel和此id_number账号是否存在
  111. // var total int64
  112. // err = global.GVA_DB.Model(&card.IdCardUsage{}).Where("channel = ? and id_idCard = ?", channel, unionInfo.Id).Count(&total).Error
  113. // fmt.Println(total)
  114. // if total == 0 {
  115. // status = 1
  116. // } else {
  117. // status = 2
  118. // }
  119. // return status, err
  120. //}