| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- package card
- import (
- "fmt"
- "log-server/global"
- "log-server/model/card"
- cardReq "log-server/model/card/request"
- "math/rand"
- "strconv"
- "time"
- )
- type IdCardService struct {
- }
- //查找身份证信息
- func (s *IdCardService) GetIdCard(idCard cardReq.IdCardRequest) (list []card.IdCard, err error) {
- var unionIdCardList []card.UnionIdCard
- var idCardList = make([]card.IdCard, idCard.Rows)
- var total int64
- //查找此渠道和此id_idCard记录是否存在, 1是创建,2是更新
- var status int
- //取一个0-1000的随机数作为偏移值
- //将时间戳设置成种子数
- rand.Seed(time.Now().UnixNano())
- limit := idCard.Rows
- //联合查询符合条件的身份证信息
- //查找channel != channel 的表单信息
- 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)
- db = db.Select("a.id, id_name, a.id_number, flag, IFNULL(use_count, 0) as use_count, b.id as usage_id, channel")
- db = db.Joins("left JOIN shuyou_id_card_usage as b on b.id_idCard = a.id")
- db.Count(&total)
- if total > 0 {
- //将total转化为int
- strInt64 := strconv.FormatInt(total, 10)
- countInt, _ := strconv.Atoi(strInt64)
- //生成1个0-total之间的随机数
- randomOffset := rand.Intn(countInt)
- db = db.Order("use_count").Limit(limit).Offset(randomOffset)
- err = db.Find(&unionIdCardList).Error
- if err != nil {
- return nil, err
- }
- fmt.Println(unionIdCardList)
- }
- //没有非这个渠道的记录
- if total == 0 {
- dbFail := global.GVA_DB.Table("shuyou_id_card as a")
- dbFail = dbFail.Select("a.id, id_name, a.id_number, flag, IFNULL(use_count, 0) as use_count, b.id as usage_id, channel")
- dbFail = dbFail.Joins("left JOIN shuyou_id_card_usage as b on b.id_idCard = a.id")
- dbFail = dbFail.Where("channel = ? and flag = ?", idCard.Channel, idCard.Flag)
- dbFail = dbFail.Order("use_count").Limit(limit)
- err = dbFail.Find(&unionIdCardList).Error
- fmt.Println("---------没查到----------")
- fmt.Println(unionIdCardList)
- //1是创建,2是更新
- status = 2
- } else {
- //1是创建,2是更新
- status = 1
- }
- for i, unionInfo := range unionIdCardList {
- //将idCard内容赋予idCardList
- idCardList[i] = unionInfo.IdCard
- if status == 1 {
- err = s.CreateIdCardUsage(unionInfo, idCard.Channel)
- } else if status == 2 {
- err = s.UpdateIdCardUsage(unionInfo)
- }
- if err != nil {
- return nil, err
- }
- }
- return idCardList, err
- }
- //更改身份证使用表
- //func (s *IdCardService) ChangeIdCardUsage(unionInfo card.UnionIdCard, channel string) (err error){
- // var usageEntity card.IdCardUsage
- // if unionInfo.UseCount == 0 {
- // usageEntity = card.IdCardUsage{
- // IdIdCard: unionInfo.Id,
- // IdNumber: unionInfo.IdNumber,
- // Channel: channel,
- // UseCount: 1,
- // }
- // err = global.GVA_DB.Model(&card.IdCardUsage{}).Create(&usageEntity).Error
- // } else {
- // usageEntity = card.IdCardUsage{
- // UseCount: unionInfo.UseCount + 1,
- // }
- // err = global.GVA_DB.Model(&card.IdCardUsage{}).Updates(&usageEntity).Error
- // }
- // return err
- //}
- //添加身份证使用记录信息
- func (s *IdCardService) CreateIdCardUsage(unionInfo card.UnionIdCard, channel string) (err error) {
- var usageEntity = card.IdCardUsage{
- IdIdCard: unionInfo.Id,
- IdNumber: unionInfo.IdNumber,
- Channel: channel,
- UseCount: 1,
- }
- return global.GVA_DB.Model(&card.IdCardUsage{}).Omit("createTime", "updateTime").Create(&usageEntity).Error
- }
- //更新身份证使用记录信息
- func (s *IdCardService) UpdateIdCardUsage(unionInfo card.UnionIdCard) (err error) {
- useCount := unionInfo.UseCount + 1
- //更新记录
- return global.GVA_DB.Model(&card.IdCardUsage{}).Where("id = ? ", unionInfo.UsageId).Update("use_count", useCount).Error
- }
- //判断是更新记录还是创建记录, 1是创建,2是更新
- //func(s *IdCardService) judgeOperate(unionInfo card.UnionIdCard, channel string) (status int, err error){
- // //查找此channel和此id_number账号是否存在
- // var total int64
- // err = global.GVA_DB.Model(&card.IdCardUsage{}).Where("channel = ? and id_idCard = ?", channel, unionInfo.Id).Count(&total).Error
- // fmt.Println(total)
- // if total == 0 {
- // status = 1
- // } else {
- // status = 2
- // }
- // return status, err
- //}
|