id_card.go 4.0 KB

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