package cardpackage import ( "context" "git.5iot.com/iotlcm-public/iotlcm-admin-svr/internal/dao" "git.5iot.com/iotlcm-public/iotlcm-admin-svr/internal/model/do" "github.com/gogf/gf/v2/database/gdb" "github.com/gogf/gf/v2/errors/gerror" "github.com/gogf/gf/v2/os/gtime" ) func (s *Service) UpdateCardsAfterRenew(ctx context.Context, tx gdb.TX, renew *RenewCurrentPackageOutput, userId int64) error { if renew == nil || len(renew.NewBindsByIccid) == 0 { return nil } now := gtime.Now() for _, iccid := range renew.Iccids { card := renew.CardsByIccid[iccid] if card == nil { return gerror.Newf("ICCID卡信息不存在:%s", iccid) } bind := renew.NewBindsByIccid[iccid] if bind == nil { return gerror.Newf("ICCID续费订购记录不存在:%s", iccid) } packageStatus, _ := calcPackageStatuses(now, bind.EffectiveTime, bind.ExpectedExpireTime) result, err := tx.Ctx(ctx).Model(dao.TSimCardInfo.Table()). Where(dao.TSimCardInfo.Columns().Iccid, iccid). Data(do.TSimCardInfo{ FlowPkgEndAt: bind.ExpectedExpireTime, PackageStatus: packageStatus, UpdatedBy: userId, UpdatedAt: now, }). Update() if err != nil { return gerror.Wrap(err, "更新续费后卡套餐到期时间失败") } affected, err := result.RowsAffected() if err != nil { return gerror.Wrap(err, "读取续费后卡信息更新数量失败") } if affected != 1 { return gerror.Newf("ICCID卡信息已变化,请刷新后重试:%s", iccid) } } return nil }