123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- package service
- import (
- "context"
- "encoding/json"
- "time"
- "go-common/app/job/main/card/model"
- cardapi "go-common/app/service/main/card/api/grpc/v1"
- cardmol "go-common/app/service/main/card/model"
- vipmol "go-common/app/service/main/vip/model"
- "go-common/library/log"
- )
- // ChangeEquipTime change vip equip time.
- func (s *Service) ChangeEquipTime(c context.Context, v *model.VipReq) (err error) {
- var res *cardapi.UserCardReply
- if res, err = s.cardRPC.UserCard(c, &cardapi.UserCardReq{Mid: v.Mid}); err != nil {
- return
- }
- if res.Res == nil ||
- res.Res.Id == 0 ||
- res.Res.CardType != cardmol.CardTypeVip {
- return
- }
- var expire int64
- switch {
- case v.VipType == vipmol.NotVip || v.VipStatus == vipmol.Expire:
- expire = time.Now().Unix()
- case v.VipOverdueTime != res.Res.ExpireTime:
- expire = v.VipOverdueTime
- default:
- }
- if expire == 0 {
- return
- }
- if err = s.dao.UpdateExpireTime(c, expire, v.Mid); err != nil {
- return
- }
- err = s.dao.DelCacheEquip(c, v.Mid)
- return
- }
- func (s *Service) vipchangeproc() {
- defer s.waiter.Done()
- msgs := s.vipConsumer.Messages()
- var err error
- for {
- msg, ok := <-msgs
- if !ok {
- log.Warn("[service.dataConsume|vip] dataConsumer has been closed.")
- return
- }
- if err = msg.Commit(); err != nil {
- log.Error("msg.Commit err(%+v)", err)
- }
- log.Info("cur consumer vipchangeproc(%v)", string(msg.Value))
- v := &model.MsgCanal{}
- if err = json.Unmarshal([]byte(msg.Value), v); err != nil {
- log.Error("json.Unmarshal(%v) err(%v)", v, err)
- continue
- }
- if v.Table != _tableUserInfo || v.Action != _updateAction {
- continue
- }
- n := new(model.VipUserInfoMsg)
- if err = json.Unmarshal(v.New, n); err != nil {
- log.Error("vipchangeproc json.Unmarshal val(%v) error(%v)", string(v.New), err)
- continue
- }
- o := new(model.VipUserInfoMsg)
- if err = json.Unmarshal(v.Old, o); err != nil {
- log.Error("vipchangeproc json.Unmarshal val(%v) error(%v)", string(v.Old), err)
- continue
- }
- if n.VipStatus == o.VipStatus &&
- n.VipType == o.VipType &&
- n.VipOverdueTime == o.VipOverdueTime {
- continue
- }
- var duetime time.Time
- if duetime, err = time.ParseInLocation("2006-01-02 15:04:05", n.VipOverdueTime, time.Local); err != nil {
- log.Error("vipchangeproc ParseInLocation val(%s) error(%v)", n.VipOverdueTime, err)
- continue
- }
- if err = s.ChangeEquipTime(context.Background(), &model.VipReq{
- Mid: n.Mid,
- VipType: n.VipType,
- VipStatus: n.VipStatus,
- VipOverdueTime: duetime.Unix(),
- }); err != nil {
- log.Error("ChangeEquipTime val(%+v) error(%v)", n, err)
- continue
- }
- }
- }
|