Create & Init Project...
This commit is contained in:
99
app/job/live/gift/internal/service/package.go
Normal file
99
app/job/live/gift/internal/service/package.go
Normal file
@ -0,0 +1,99 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"go-common/app/job/live/gift/internal/model"
|
||||
"go-common/library/log"
|
||||
"go-common/library/sync/errgroup"
|
||||
)
|
||||
|
||||
// AddGift AddGift
|
||||
func (s *Service) AddGift(ctx context.Context, m *model.AddFreeGift) (bagId int64, err error) {
|
||||
uid := m.UID
|
||||
giftID := m.GiftID
|
||||
giftNum := m.GiftNum
|
||||
expireAt := m.ExpireAt
|
||||
source := m.Source
|
||||
if uid == 0 || giftID == 0 || giftNum == 0 {
|
||||
log.Error("add gift params error,uid:%d,giftID:%d,giftNum:%d", uid, giftID, giftNum)
|
||||
err = errors.New("params error")
|
||||
return
|
||||
}
|
||||
bagID, err := s.GetBagID(ctx, uid, giftID, expireAt)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
var (
|
||||
affectNum int64
|
||||
isUpdate = false
|
||||
eg, _ = errgroup.WithContext(ctx)
|
||||
)
|
||||
if bagID != 0 {
|
||||
isUpdate = true
|
||||
affectNum, _ = s.dao.UpdateBagNum(ctx, uid, bagID, giftNum)
|
||||
} else {
|
||||
affectNum, _ = s.dao.AddBag(ctx, uid, giftID, giftNum, expireAt)
|
||||
bagID = affectNum
|
||||
eg.Go(
|
||||
func() error {
|
||||
s.dao.SetBagIDCache(ctx, uid, giftID, expireAt, bagID, 14400)
|
||||
return nil
|
||||
})
|
||||
|
||||
}
|
||||
newNum := giftNum
|
||||
if affectNum > 0 {
|
||||
eg.Go(
|
||||
func() error {
|
||||
s.dao.ClearBagListCache(ctx, uid)
|
||||
return nil
|
||||
})
|
||||
if isUpdate {
|
||||
res, _ := s.dao.GetBagByID(ctx, uid, bagID)
|
||||
newNum = res.GiftNum
|
||||
//上报lancer TODO
|
||||
s.bagLogInfoc(uid, bagID, giftID, giftNum, newNum, source)
|
||||
}
|
||||
}
|
||||
// 更新免费礼物数量缓存
|
||||
eg.Go(
|
||||
func() error {
|
||||
s.UpdateFreeGiftCache(ctx, uid, giftID, expireAt, newNum)
|
||||
return nil
|
||||
})
|
||||
eg.Wait()
|
||||
return
|
||||
}
|
||||
|
||||
// GetBagID GetBagID
|
||||
func (s *Service) GetBagID(ctx context.Context, uid, giftID, expireAt int64) (id int64, err error) {
|
||||
id, err = s.dao.GetBagIDCache(ctx, uid, giftID, expireAt)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
if id == 0 {
|
||||
//queryDB
|
||||
var r *model.BagInfo
|
||||
r, err = s.dao.GetBag(ctx, uid, giftID, expireAt)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
id = r.ID
|
||||
}
|
||||
|
||||
// 缓存或数据库本身有,再更新缓存
|
||||
if id != 0 {
|
||||
s.dao.SetBagIDCache(ctx, uid, giftID, expireAt, id, 14400)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// UpdateFreeGiftCache UpdateFreeGiftCache
|
||||
func (s *Service) UpdateFreeGiftCache(ctx context.Context, uid, giftID, expireAt, num int64) {
|
||||
//giftInfo := s.GetGiftInfoByID(ctx, giftID)
|
||||
//if giftInfo.Id == 0 || giftInfo.Type != 3 {
|
||||
// return
|
||||
//}
|
||||
//s.dao.SetBagNumCache(ctx, uid, giftID, expireAt, num, 14400)
|
||||
}
|
Reference in New Issue
Block a user