From a8d9bbb4bd96a4da06279fba78da49458418d280 Mon Sep 17 00:00:00 2001 From: li Date: Tue, 19 Apr 2022 09:55:38 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix:=E4=BC=9A=E5=91=98=E5=85=91=E6=8D=A2?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controller/user.go | 4 +- model/autogenerated_redeem_code.go | 643 +++++++++++++++++++++++++++-- model/autogenerated_user.go | 258 ++++++++---- model/model_test.go | 16 +- model/redeem_code.go | 53 ++- model/user.go | 58 +-- 6 files changed, 879 insertions(+), 153 deletions(-) diff --git a/controller/user.go b/controller/user.go index b5bed7c..219fa83 100644 --- a/controller/user.go +++ b/controller/user.go @@ -326,7 +326,7 @@ func UpgradeMember(c *gin.Context) { // 补押金 depositMendFee := int64(memberConfig.MemberDeposit) - int64(user.Deposit) - count, err := model.NewUserRedeemCodeQuerySet(model.DB).UidEq(uc.Uid).StatusEq(model.RedeemCodeStatusUsed).Count() + count, err := model.NewUserRedeemCodeQuerySet(model.DB).UidEq(uc.Uid).CodeTypeEq(model.CodeTypeMemberCard30).StatusEq(model.RedeemCodeStatusUsed).Count() if err != nil { logger.Error("err:", err) RespJson(c, status.InternalServerError, nil) @@ -452,7 +452,7 @@ func UpgradeMemberInfo(c *gin.Context) { // 补押金 depositMendFee := int64(memberConfig.MemberDeposit) - int64(user.Deposit) - count, err := model.NewUserRedeemCodeQuerySet(model.DB).UidEq(uc.Uid).StatusEq(model.RedeemCodeStatusUsed).Count() + count, err := model.NewUserRedeemCodeQuerySet(model.DB).UidEq(uc.Uid).CodeTypeEq(model.CodeTypeMemberCard30).StatusEq(model.RedeemCodeStatusUsed).Count() if err != nil { logger.Error("err:", err) RespJson(c, status.InternalServerError, nil) diff --git a/model/autogenerated_redeem_code.go b/model/autogenerated_redeem_code.go index ffbe1f2..8156a49 100644 --- a/model/autogenerated_redeem_code.go +++ b/model/autogenerated_redeem_code.go @@ -4,6 +4,7 @@ package model import ( "errors" "fmt" + "strings" "time" "github.com/jinzhu/gorm" @@ -29,6 +30,15 @@ func (qs RedeemCodeQuerySet) w(db *gorm.DB) RedeemCodeQuerySet { return NewRedeemCodeQuerySet(db) } +func (qs RedeemCodeQuerySet) Select(fields ...RedeemCodeDBSchemaField) RedeemCodeQuerySet { + names := []string{} + for _, f := range fields { + names = append(names, f.String()) + } + + return qs.w(qs.db.Select(strings.Join(names, ","))) +} + // Create is an autogenerated method // nolint: dupl func (o *RedeemCode) Create(db *gorm.DB) error { @@ -53,6 +63,18 @@ func (qs RedeemCodeQuerySet) CodeSecretEq(codeSecret string) RedeemCodeQuerySet return qs.w(qs.db.Where("code_secret = ?", codeSecret)) } +// CodeSecretGt is an autogenerated method +// nolint: dupl +func (qs RedeemCodeQuerySet) CodeSecretGt(codeSecret string) RedeemCodeQuerySet { + return qs.w(qs.db.Where("code_secret > ?", codeSecret)) +} + +// CodeSecretGte is an autogenerated method +// nolint: dupl +func (qs RedeemCodeQuerySet) CodeSecretGte(codeSecret string) RedeemCodeQuerySet { + return qs.w(qs.db.Where("code_secret >= ?", codeSecret)) +} + // CodeSecretIn is an autogenerated method // nolint: dupl func (qs RedeemCodeQuerySet) CodeSecretIn(codeSecret ...string) RedeemCodeQuerySet { @@ -63,6 +85,24 @@ func (qs RedeemCodeQuerySet) CodeSecretIn(codeSecret ...string) RedeemCodeQueryS return qs.w(qs.db.Where("code_secret IN (?)", codeSecret)) } +// CodeSecretLike is an autogenerated method +// nolint: dupl +func (qs RedeemCodeQuerySet) CodeSecretLike(codeSecret string) RedeemCodeQuerySet { + return qs.w(qs.db.Where("code_secret LIKE ?", codeSecret)) +} + +// CodeSecretLt is an autogenerated method +// nolint: dupl +func (qs RedeemCodeQuerySet) CodeSecretLt(codeSecret string) RedeemCodeQuerySet { + return qs.w(qs.db.Where("code_secret < ?", codeSecret)) +} + +// CodeSecretLte is an autogenerated method +// nolint: dupl +func (qs RedeemCodeQuerySet) CodeSecretLte(codeSecret string) RedeemCodeQuerySet { + return qs.w(qs.db.Where("code_secret <= ?", codeSecret)) +} + // CodeSecretNe is an autogenerated method // nolint: dupl func (qs RedeemCodeQuerySet) CodeSecretNe(codeSecret string) RedeemCodeQuerySet { @@ -79,12 +119,30 @@ func (qs RedeemCodeQuerySet) CodeSecretNotIn(codeSecret ...string) RedeemCodeQue return qs.w(qs.db.Where("code_secret NOT IN (?)", codeSecret)) } +// CodeSecretNotlike is an autogenerated method +// nolint: dupl +func (qs RedeemCodeQuerySet) CodeSecretNotlike(codeSecret string) RedeemCodeQuerySet { + return qs.w(qs.db.Where("code_secret NOT LIKE ?", codeSecret)) +} + // CodeTypeEq is an autogenerated method // nolint: dupl func (qs RedeemCodeQuerySet) CodeTypeEq(codeType string) RedeemCodeQuerySet { return qs.w(qs.db.Where("code_type = ?", codeType)) } +// CodeTypeGt is an autogenerated method +// nolint: dupl +func (qs RedeemCodeQuerySet) CodeTypeGt(codeType string) RedeemCodeQuerySet { + return qs.w(qs.db.Where("code_type > ?", codeType)) +} + +// CodeTypeGte is an autogenerated method +// nolint: dupl +func (qs RedeemCodeQuerySet) CodeTypeGte(codeType string) RedeemCodeQuerySet { + return qs.w(qs.db.Where("code_type >= ?", codeType)) +} + // CodeTypeIn is an autogenerated method // nolint: dupl func (qs RedeemCodeQuerySet) CodeTypeIn(codeType ...string) RedeemCodeQuerySet { @@ -95,6 +153,24 @@ func (qs RedeemCodeQuerySet) CodeTypeIn(codeType ...string) RedeemCodeQuerySet { return qs.w(qs.db.Where("code_type IN (?)", codeType)) } +// CodeTypeLike is an autogenerated method +// nolint: dupl +func (qs RedeemCodeQuerySet) CodeTypeLike(codeType string) RedeemCodeQuerySet { + return qs.w(qs.db.Where("code_type LIKE ?", codeType)) +} + +// CodeTypeLt is an autogenerated method +// nolint: dupl +func (qs RedeemCodeQuerySet) CodeTypeLt(codeType string) RedeemCodeQuerySet { + return qs.w(qs.db.Where("code_type < ?", codeType)) +} + +// CodeTypeLte is an autogenerated method +// nolint: dupl +func (qs RedeemCodeQuerySet) CodeTypeLte(codeType string) RedeemCodeQuerySet { + return qs.w(qs.db.Where("code_type <= ?", codeType)) +} + // CodeTypeNe is an autogenerated method // nolint: dupl func (qs RedeemCodeQuerySet) CodeTypeNe(codeType string) RedeemCodeQuerySet { @@ -111,6 +187,12 @@ func (qs RedeemCodeQuerySet) CodeTypeNotIn(codeType ...string) RedeemCodeQuerySe return qs.w(qs.db.Where("code_type NOT IN (?)", codeType)) } +// CodeTypeNotlike is an autogenerated method +// nolint: dupl +func (qs RedeemCodeQuerySet) CodeTypeNotlike(codeType string) RedeemCodeQuerySet { + return qs.w(qs.db.Where("code_type NOT LIKE ?", codeType)) +} + // Count is an autogenerated method // nolint: dupl func (qs RedeemCodeQuerySet) Count() (int, error) { @@ -381,6 +463,18 @@ func (qs RedeemCodeQuerySet) One(ret *RedeemCode) error { return qs.db.First(ret).Error } +// OrderAscByCodeSecret is an autogenerated method +// nolint: dupl +func (qs RedeemCodeQuerySet) OrderAscByCodeSecret() RedeemCodeQuerySet { + return qs.w(qs.db.Order("code_secret ASC")) +} + +// OrderAscByCodeType is an autogenerated method +// nolint: dupl +func (qs RedeemCodeQuerySet) OrderAscByCodeType() RedeemCodeQuerySet { + return qs.w(qs.db.Order("code_type ASC")) +} + // OrderAscByCreatedAt is an autogenerated method // nolint: dupl func (qs RedeemCodeQuerySet) OrderAscByCreatedAt() RedeemCodeQuerySet { @@ -411,12 +505,42 @@ func (qs RedeemCodeQuerySet) OrderAscByID() RedeemCodeQuerySet { return qs.w(qs.db.Order("id ASC")) } +// OrderAscBySerialCode is an autogenerated method +// nolint: dupl +func (qs RedeemCodeQuerySet) OrderAscBySerialCode() RedeemCodeQuerySet { + return qs.w(qs.db.Order("serial_code ASC")) +} + +// OrderAscByStatus is an autogenerated method +// nolint: dupl +func (qs RedeemCodeQuerySet) OrderAscByStatus() RedeemCodeQuerySet { + return qs.w(qs.db.Order("status ASC")) +} + +// OrderAscByStoreId is an autogenerated method +// nolint: dupl +func (qs RedeemCodeQuerySet) OrderAscByStoreId() RedeemCodeQuerySet { + return qs.w(qs.db.Order("store_id ASC")) +} + // OrderAscByUpdatedAt is an autogenerated method // nolint: dupl func (qs RedeemCodeQuerySet) OrderAscByUpdatedAt() RedeemCodeQuerySet { return qs.w(qs.db.Order("updated_at ASC")) } +// OrderDescByCodeSecret is an autogenerated method +// nolint: dupl +func (qs RedeemCodeQuerySet) OrderDescByCodeSecret() RedeemCodeQuerySet { + return qs.w(qs.db.Order("code_secret DESC")) +} + +// OrderDescByCodeType is an autogenerated method +// nolint: dupl +func (qs RedeemCodeQuerySet) OrderDescByCodeType() RedeemCodeQuerySet { + return qs.w(qs.db.Order("code_type DESC")) +} + // OrderDescByCreatedAt is an autogenerated method // nolint: dupl func (qs RedeemCodeQuerySet) OrderDescByCreatedAt() RedeemCodeQuerySet { @@ -447,6 +571,24 @@ func (qs RedeemCodeQuerySet) OrderDescByID() RedeemCodeQuerySet { return qs.w(qs.db.Order("id DESC")) } +// OrderDescBySerialCode is an autogenerated method +// nolint: dupl +func (qs RedeemCodeQuerySet) OrderDescBySerialCode() RedeemCodeQuerySet { + return qs.w(qs.db.Order("serial_code DESC")) +} + +// OrderDescByStatus is an autogenerated method +// nolint: dupl +func (qs RedeemCodeQuerySet) OrderDescByStatus() RedeemCodeQuerySet { + return qs.w(qs.db.Order("status DESC")) +} + +// OrderDescByStoreId is an autogenerated method +// nolint: dupl +func (qs RedeemCodeQuerySet) OrderDescByStoreId() RedeemCodeQuerySet { + return qs.w(qs.db.Order("store_id DESC")) +} + // OrderDescByUpdatedAt is an autogenerated method // nolint: dupl func (qs RedeemCodeQuerySet) OrderDescByUpdatedAt() RedeemCodeQuerySet { @@ -459,6 +601,18 @@ func (qs RedeemCodeQuerySet) SerialCodeEq(serialCode string) RedeemCodeQuerySet return qs.w(qs.db.Where("serial_code = ?", serialCode)) } +// SerialCodeGt is an autogenerated method +// nolint: dupl +func (qs RedeemCodeQuerySet) SerialCodeGt(serialCode string) RedeemCodeQuerySet { + return qs.w(qs.db.Where("serial_code > ?", serialCode)) +} + +// SerialCodeGte is an autogenerated method +// nolint: dupl +func (qs RedeemCodeQuerySet) SerialCodeGte(serialCode string) RedeemCodeQuerySet { + return qs.w(qs.db.Where("serial_code >= ?", serialCode)) +} + // SerialCodeIn is an autogenerated method // nolint: dupl func (qs RedeemCodeQuerySet) SerialCodeIn(serialCode ...string) RedeemCodeQuerySet { @@ -469,6 +623,24 @@ func (qs RedeemCodeQuerySet) SerialCodeIn(serialCode ...string) RedeemCodeQueryS return qs.w(qs.db.Where("serial_code IN (?)", serialCode)) } +// SerialCodeLike is an autogenerated method +// nolint: dupl +func (qs RedeemCodeQuerySet) SerialCodeLike(serialCode string) RedeemCodeQuerySet { + return qs.w(qs.db.Where("serial_code LIKE ?", serialCode)) +} + +// SerialCodeLt is an autogenerated method +// nolint: dupl +func (qs RedeemCodeQuerySet) SerialCodeLt(serialCode string) RedeemCodeQuerySet { + return qs.w(qs.db.Where("serial_code < ?", serialCode)) +} + +// SerialCodeLte is an autogenerated method +// nolint: dupl +func (qs RedeemCodeQuerySet) SerialCodeLte(serialCode string) RedeemCodeQuerySet { + return qs.w(qs.db.Where("serial_code <= ?", serialCode)) +} + // SerialCodeNe is an autogenerated method // nolint: dupl func (qs RedeemCodeQuerySet) SerialCodeNe(serialCode string) RedeemCodeQuerySet { @@ -485,12 +657,30 @@ func (qs RedeemCodeQuerySet) SerialCodeNotIn(serialCode ...string) RedeemCodeQue return qs.w(qs.db.Where("serial_code NOT IN (?)", serialCode)) } +// SerialCodeNotlike is an autogenerated method +// nolint: dupl +func (qs RedeemCodeQuerySet) SerialCodeNotlike(serialCode string) RedeemCodeQuerySet { + return qs.w(qs.db.Where("serial_code NOT LIKE ?", serialCode)) +} + // StatusEq is an autogenerated method // nolint: dupl func (qs RedeemCodeQuerySet) StatusEq(status string) RedeemCodeQuerySet { return qs.w(qs.db.Where("status = ?", status)) } +// StatusGt is an autogenerated method +// nolint: dupl +func (qs RedeemCodeQuerySet) StatusGt(status string) RedeemCodeQuerySet { + return qs.w(qs.db.Where("status > ?", status)) +} + +// StatusGte is an autogenerated method +// nolint: dupl +func (qs RedeemCodeQuerySet) StatusGte(status string) RedeemCodeQuerySet { + return qs.w(qs.db.Where("status >= ?", status)) +} + // StatusIn is an autogenerated method // nolint: dupl func (qs RedeemCodeQuerySet) StatusIn(status ...string) RedeemCodeQuerySet { @@ -501,6 +691,24 @@ func (qs RedeemCodeQuerySet) StatusIn(status ...string) RedeemCodeQuerySet { return qs.w(qs.db.Where("status IN (?)", status)) } +// StatusLike is an autogenerated method +// nolint: dupl +func (qs RedeemCodeQuerySet) StatusLike(status string) RedeemCodeQuerySet { + return qs.w(qs.db.Where("status LIKE ?", status)) +} + +// StatusLt is an autogenerated method +// nolint: dupl +func (qs RedeemCodeQuerySet) StatusLt(status string) RedeemCodeQuerySet { + return qs.w(qs.db.Where("status < ?", status)) +} + +// StatusLte is an autogenerated method +// nolint: dupl +func (qs RedeemCodeQuerySet) StatusLte(status string) RedeemCodeQuerySet { + return qs.w(qs.db.Where("status <= ?", status)) +} + // StatusNe is an autogenerated method // nolint: dupl func (qs RedeemCodeQuerySet) StatusNe(status string) RedeemCodeQuerySet { @@ -517,6 +725,68 @@ func (qs RedeemCodeQuerySet) StatusNotIn(status ...string) RedeemCodeQuerySet { return qs.w(qs.db.Where("status NOT IN (?)", status)) } +// StatusNotlike is an autogenerated method +// nolint: dupl +func (qs RedeemCodeQuerySet) StatusNotlike(status string) RedeemCodeQuerySet { + return qs.w(qs.db.Where("status NOT LIKE ?", status)) +} + +// StoreIdEq is an autogenerated method +// nolint: dupl +func (qs RedeemCodeQuerySet) StoreIdEq(storeId uint32) RedeemCodeQuerySet { + return qs.w(qs.db.Where("store_id = ?", storeId)) +} + +// StoreIdGt is an autogenerated method +// nolint: dupl +func (qs RedeemCodeQuerySet) StoreIdGt(storeId uint32) RedeemCodeQuerySet { + return qs.w(qs.db.Where("store_id > ?", storeId)) +} + +// StoreIdGte is an autogenerated method +// nolint: dupl +func (qs RedeemCodeQuerySet) StoreIdGte(storeId uint32) RedeemCodeQuerySet { + return qs.w(qs.db.Where("store_id >= ?", storeId)) +} + +// StoreIdIn is an autogenerated method +// nolint: dupl +func (qs RedeemCodeQuerySet) StoreIdIn(storeId ...uint32) RedeemCodeQuerySet { + if len(storeId) == 0 { + qs.db.AddError(errors.New("must at least pass one storeId in StoreIdIn")) + return qs.w(qs.db) + } + return qs.w(qs.db.Where("store_id IN (?)", storeId)) +} + +// StoreIdLt is an autogenerated method +// nolint: dupl +func (qs RedeemCodeQuerySet) StoreIdLt(storeId uint32) RedeemCodeQuerySet { + return qs.w(qs.db.Where("store_id < ?", storeId)) +} + +// StoreIdLte is an autogenerated method +// nolint: dupl +func (qs RedeemCodeQuerySet) StoreIdLte(storeId uint32) RedeemCodeQuerySet { + return qs.w(qs.db.Where("store_id <= ?", storeId)) +} + +// StoreIdNe is an autogenerated method +// nolint: dupl +func (qs RedeemCodeQuerySet) StoreIdNe(storeId uint32) RedeemCodeQuerySet { + return qs.w(qs.db.Where("store_id != ?", storeId)) +} + +// StoreIdNotIn is an autogenerated method +// nolint: dupl +func (qs RedeemCodeQuerySet) StoreIdNotIn(storeId ...uint32) RedeemCodeQuerySet { + if len(storeId) == 0 { + qs.db.AddError(errors.New("must at least pass one storeId in StoreIdNotIn")) + return qs.w(qs.db) + } + return qs.w(qs.db.Where("store_id NOT IN (?)", storeId)) +} + // UpdatedAtEq is an autogenerated method // nolint: dupl func (qs RedeemCodeQuerySet) UpdatedAtEq(updatedAt time.Time) RedeemCodeQuerySet { @@ -616,6 +886,13 @@ func (u RedeemCodeUpdater) SetStatus(status string) RedeemCodeUpdater { return u } +// SetStoreId is an autogenerated method +// nolint: dupl +func (u RedeemCodeUpdater) SetStoreId(storeId uint32) RedeemCodeUpdater { + u.fields[string(RedeemCodeDBSchema.StoreId)] = storeId + return u +} + // SetUpdatedAt is an autogenerated method // nolint: dupl func (u RedeemCodeUpdater) SetUpdatedAt(updatedAt time.Time) RedeemCodeUpdater { @@ -658,6 +935,7 @@ var RedeemCodeDBSchema = struct { SerialCode RedeemCodeDBSchemaField CodeType RedeemCodeDBSchemaField Status RedeemCodeDBSchemaField + StoreId RedeemCodeDBSchemaField CodeSecret RedeemCodeDBSchemaField EffectiveTime RedeemCodeDBSchemaField ExpirationTime RedeemCodeDBSchemaField @@ -670,6 +948,7 @@ var RedeemCodeDBSchema = struct { SerialCode: RedeemCodeDBSchemaField("serial_code"), CodeType: RedeemCodeDBSchemaField("code_type"), Status: RedeemCodeDBSchemaField("status"), + StoreId: RedeemCodeDBSchemaField("store_id"), CodeSecret: RedeemCodeDBSchemaField("code_secret"), EffectiveTime: RedeemCodeDBSchemaField("effective_time"), ExpirationTime: RedeemCodeDBSchemaField("expiration_time"), @@ -686,6 +965,7 @@ func (o *RedeemCode) Update(db *gorm.DB, fields ...RedeemCodeDBSchemaField) erro "serial_code": o.SerialCode, "code_type": o.CodeType, "status": o.Status, + "store_id": o.StoreId, "code_secret": o.CodeSecret, "effective_time": o.EffectiveTime, "expiration_time": o.ExpirationTime, @@ -742,6 +1022,15 @@ func (qs UserRedeemCodeQuerySet) w(db *gorm.DB) UserRedeemCodeQuerySet { return NewUserRedeemCodeQuerySet(db) } +func (qs UserRedeemCodeQuerySet) Select(fields ...UserRedeemCodeDBSchemaField) UserRedeemCodeQuerySet { + names := []string{} + for _, f := range fields { + names = append(names, f.String()) + } + + return qs.w(qs.db.Select(strings.Join(names, ","))) +} + // Create is an autogenerated method // nolint: dupl func (o *UserRedeemCode) Create(db *gorm.DB) error { @@ -754,6 +1043,62 @@ func (o *UserRedeemCode) Delete(db *gorm.DB) error { return db.Delete(o).Error } +// ActivityTypeEq is an autogenerated method +// nolint: dupl +func (qs UserRedeemCodeQuerySet) ActivityTypeEq(activityType uint32) UserRedeemCodeQuerySet { + return qs.w(qs.db.Where("activity_type = ?", activityType)) +} + +// ActivityTypeGt is an autogenerated method +// nolint: dupl +func (qs UserRedeemCodeQuerySet) ActivityTypeGt(activityType uint32) UserRedeemCodeQuerySet { + return qs.w(qs.db.Where("activity_type > ?", activityType)) +} + +// ActivityTypeGte is an autogenerated method +// nolint: dupl +func (qs UserRedeemCodeQuerySet) ActivityTypeGte(activityType uint32) UserRedeemCodeQuerySet { + return qs.w(qs.db.Where("activity_type >= ?", activityType)) +} + +// ActivityTypeIn is an autogenerated method +// nolint: dupl +func (qs UserRedeemCodeQuerySet) ActivityTypeIn(activityType ...uint32) UserRedeemCodeQuerySet { + if len(activityType) == 0 { + qs.db.AddError(errors.New("must at least pass one activityType in ActivityTypeIn")) + return qs.w(qs.db) + } + return qs.w(qs.db.Where("activity_type IN (?)", activityType)) +} + +// ActivityTypeLt is an autogenerated method +// nolint: dupl +func (qs UserRedeemCodeQuerySet) ActivityTypeLt(activityType uint32) UserRedeemCodeQuerySet { + return qs.w(qs.db.Where("activity_type < ?", activityType)) +} + +// ActivityTypeLte is an autogenerated method +// nolint: dupl +func (qs UserRedeemCodeQuerySet) ActivityTypeLte(activityType uint32) UserRedeemCodeQuerySet { + return qs.w(qs.db.Where("activity_type <= ?", activityType)) +} + +// ActivityTypeNe is an autogenerated method +// nolint: dupl +func (qs UserRedeemCodeQuerySet) ActivityTypeNe(activityType uint32) UserRedeemCodeQuerySet { + return qs.w(qs.db.Where("activity_type != ?", activityType)) +} + +// ActivityTypeNotIn is an autogenerated method +// nolint: dupl +func (qs UserRedeemCodeQuerySet) ActivityTypeNotIn(activityType ...uint32) UserRedeemCodeQuerySet { + if len(activityType) == 0 { + qs.db.AddError(errors.New("must at least pass one activityType in ActivityTypeNotIn")) + return qs.w(qs.db) + } + return qs.w(qs.db.Where("activity_type NOT IN (?)", activityType)) +} + // All is an autogenerated method // nolint: dupl func (qs UserRedeemCodeQuerySet) All(ret *[]UserRedeemCode) error { @@ -766,6 +1111,18 @@ func (qs UserRedeemCodeQuerySet) CodeTypeEq(codeType string) UserRedeemCodeQuery return qs.w(qs.db.Where("code_type = ?", codeType)) } +// CodeTypeGt is an autogenerated method +// nolint: dupl +func (qs UserRedeemCodeQuerySet) CodeTypeGt(codeType string) UserRedeemCodeQuerySet { + return qs.w(qs.db.Where("code_type > ?", codeType)) +} + +// CodeTypeGte is an autogenerated method +// nolint: dupl +func (qs UserRedeemCodeQuerySet) CodeTypeGte(codeType string) UserRedeemCodeQuerySet { + return qs.w(qs.db.Where("code_type >= ?", codeType)) +} + // CodeTypeIn is an autogenerated method // nolint: dupl func (qs UserRedeemCodeQuerySet) CodeTypeIn(codeType ...string) UserRedeemCodeQuerySet { @@ -776,6 +1133,24 @@ func (qs UserRedeemCodeQuerySet) CodeTypeIn(codeType ...string) UserRedeemCodeQu return qs.w(qs.db.Where("code_type IN (?)", codeType)) } +// CodeTypeLike is an autogenerated method +// nolint: dupl +func (qs UserRedeemCodeQuerySet) CodeTypeLike(codeType string) UserRedeemCodeQuerySet { + return qs.w(qs.db.Where("code_type LIKE ?", codeType)) +} + +// CodeTypeLt is an autogenerated method +// nolint: dupl +func (qs UserRedeemCodeQuerySet) CodeTypeLt(codeType string) UserRedeemCodeQuerySet { + return qs.w(qs.db.Where("code_type < ?", codeType)) +} + +// CodeTypeLte is an autogenerated method +// nolint: dupl +func (qs UserRedeemCodeQuerySet) CodeTypeLte(codeType string) UserRedeemCodeQuerySet { + return qs.w(qs.db.Where("code_type <= ?", codeType)) +} + // CodeTypeNe is an autogenerated method // nolint: dupl func (qs UserRedeemCodeQuerySet) CodeTypeNe(codeType string) UserRedeemCodeQuerySet { @@ -792,6 +1167,12 @@ func (qs UserRedeemCodeQuerySet) CodeTypeNotIn(codeType ...string) UserRedeemCod return qs.w(qs.db.Where("code_type NOT IN (?)", codeType)) } +// CodeTypeNotlike is an autogenerated method +// nolint: dupl +func (qs UserRedeemCodeQuerySet) CodeTypeNotlike(codeType string) UserRedeemCodeQuerySet { + return qs.w(qs.db.Where("code_type NOT LIKE ?", codeType)) +} + // ConvertTimeEq is an autogenerated method // nolint: dupl func (qs UserRedeemCodeQuerySet) ConvertTimeEq(convertTime time.Time) UserRedeemCodeQuerySet { @@ -1026,6 +1407,18 @@ func (qs UserRedeemCodeQuerySet) One(ret *UserRedeemCode) error { return qs.db.First(ret).Error } +// OrderAscByActivityType is an autogenerated method +// nolint: dupl +func (qs UserRedeemCodeQuerySet) OrderAscByActivityType() UserRedeemCodeQuerySet { + return qs.w(qs.db.Order("activity_type ASC")) +} + +// OrderAscByCodeType is an autogenerated method +// nolint: dupl +func (qs UserRedeemCodeQuerySet) OrderAscByCodeType() UserRedeemCodeQuerySet { + return qs.w(qs.db.Order("code_type ASC")) +} + // OrderAscByConvertTime is an autogenerated method // nolint: dupl func (qs UserRedeemCodeQuerySet) OrderAscByConvertTime() UserRedeemCodeQuerySet { @@ -1050,6 +1443,24 @@ func (qs UserRedeemCodeQuerySet) OrderAscByID() UserRedeemCodeQuerySet { return qs.w(qs.db.Order("id ASC")) } +// OrderAscBySerialCode is an autogenerated method +// nolint: dupl +func (qs UserRedeemCodeQuerySet) OrderAscBySerialCode() UserRedeemCodeQuerySet { + return qs.w(qs.db.Order("serial_code ASC")) +} + +// OrderAscByStatus is an autogenerated method +// nolint: dupl +func (qs UserRedeemCodeQuerySet) OrderAscByStatus() UserRedeemCodeQuerySet { + return qs.w(qs.db.Order("status ASC")) +} + +// OrderAscByStoreId is an autogenerated method +// nolint: dupl +func (qs UserRedeemCodeQuerySet) OrderAscByStoreId() UserRedeemCodeQuerySet { + return qs.w(qs.db.Order("store_id ASC")) +} + // OrderAscByUid is an autogenerated method // nolint: dupl func (qs UserRedeemCodeQuerySet) OrderAscByUid() UserRedeemCodeQuerySet { @@ -1062,6 +1473,18 @@ func (qs UserRedeemCodeQuerySet) OrderAscByUpdatedAt() UserRedeemCodeQuerySet { return qs.w(qs.db.Order("updated_at ASC")) } +// OrderDescByActivityType is an autogenerated method +// nolint: dupl +func (qs UserRedeemCodeQuerySet) OrderDescByActivityType() UserRedeemCodeQuerySet { + return qs.w(qs.db.Order("activity_type DESC")) +} + +// OrderDescByCodeType is an autogenerated method +// nolint: dupl +func (qs UserRedeemCodeQuerySet) OrderDescByCodeType() UserRedeemCodeQuerySet { + return qs.w(qs.db.Order("code_type DESC")) +} + // OrderDescByConvertTime is an autogenerated method // nolint: dupl func (qs UserRedeemCodeQuerySet) OrderDescByConvertTime() UserRedeemCodeQuerySet { @@ -1086,6 +1509,24 @@ func (qs UserRedeemCodeQuerySet) OrderDescByID() UserRedeemCodeQuerySet { return qs.w(qs.db.Order("id DESC")) } +// OrderDescBySerialCode is an autogenerated method +// nolint: dupl +func (qs UserRedeemCodeQuerySet) OrderDescBySerialCode() UserRedeemCodeQuerySet { + return qs.w(qs.db.Order("serial_code DESC")) +} + +// OrderDescByStatus is an autogenerated method +// nolint: dupl +func (qs UserRedeemCodeQuerySet) OrderDescByStatus() UserRedeemCodeQuerySet { + return qs.w(qs.db.Order("status DESC")) +} + +// OrderDescByStoreId is an autogenerated method +// nolint: dupl +func (qs UserRedeemCodeQuerySet) OrderDescByStoreId() UserRedeemCodeQuerySet { + return qs.w(qs.db.Order("store_id DESC")) +} + // OrderDescByUid is an autogenerated method // nolint: dupl func (qs UserRedeemCodeQuerySet) OrderDescByUid() UserRedeemCodeQuerySet { @@ -1104,6 +1545,18 @@ func (qs UserRedeemCodeQuerySet) SerialCodeEq(serialCode string) UserRedeemCodeQ return qs.w(qs.db.Where("serial_code = ?", serialCode)) } +// SerialCodeGt is an autogenerated method +// nolint: dupl +func (qs UserRedeemCodeQuerySet) SerialCodeGt(serialCode string) UserRedeemCodeQuerySet { + return qs.w(qs.db.Where("serial_code > ?", serialCode)) +} + +// SerialCodeGte is an autogenerated method +// nolint: dupl +func (qs UserRedeemCodeQuerySet) SerialCodeGte(serialCode string) UserRedeemCodeQuerySet { + return qs.w(qs.db.Where("serial_code >= ?", serialCode)) +} + // SerialCodeIn is an autogenerated method // nolint: dupl func (qs UserRedeemCodeQuerySet) SerialCodeIn(serialCode ...string) UserRedeemCodeQuerySet { @@ -1114,6 +1567,24 @@ func (qs UserRedeemCodeQuerySet) SerialCodeIn(serialCode ...string) UserRedeemCo return qs.w(qs.db.Where("serial_code IN (?)", serialCode)) } +// SerialCodeLike is an autogenerated method +// nolint: dupl +func (qs UserRedeemCodeQuerySet) SerialCodeLike(serialCode string) UserRedeemCodeQuerySet { + return qs.w(qs.db.Where("serial_code LIKE ?", serialCode)) +} + +// SerialCodeLt is an autogenerated method +// nolint: dupl +func (qs UserRedeemCodeQuerySet) SerialCodeLt(serialCode string) UserRedeemCodeQuerySet { + return qs.w(qs.db.Where("serial_code < ?", serialCode)) +} + +// SerialCodeLte is an autogenerated method +// nolint: dupl +func (qs UserRedeemCodeQuerySet) SerialCodeLte(serialCode string) UserRedeemCodeQuerySet { + return qs.w(qs.db.Where("serial_code <= ?", serialCode)) +} + // SerialCodeNe is an autogenerated method // nolint: dupl func (qs UserRedeemCodeQuerySet) SerialCodeNe(serialCode string) UserRedeemCodeQuerySet { @@ -1130,12 +1601,30 @@ func (qs UserRedeemCodeQuerySet) SerialCodeNotIn(serialCode ...string) UserRedee return qs.w(qs.db.Where("serial_code NOT IN (?)", serialCode)) } +// SerialCodeNotlike is an autogenerated method +// nolint: dupl +func (qs UserRedeemCodeQuerySet) SerialCodeNotlike(serialCode string) UserRedeemCodeQuerySet { + return qs.w(qs.db.Where("serial_code NOT LIKE ?", serialCode)) +} + // StatusEq is an autogenerated method // nolint: dupl func (qs UserRedeemCodeQuerySet) StatusEq(status string) UserRedeemCodeQuerySet { return qs.w(qs.db.Where("status = ?", status)) } +// StatusGt is an autogenerated method +// nolint: dupl +func (qs UserRedeemCodeQuerySet) StatusGt(status string) UserRedeemCodeQuerySet { + return qs.w(qs.db.Where("status > ?", status)) +} + +// StatusGte is an autogenerated method +// nolint: dupl +func (qs UserRedeemCodeQuerySet) StatusGte(status string) UserRedeemCodeQuerySet { + return qs.w(qs.db.Where("status >= ?", status)) +} + // StatusIn is an autogenerated method // nolint: dupl func (qs UserRedeemCodeQuerySet) StatusIn(status ...string) UserRedeemCodeQuerySet { @@ -1146,6 +1635,24 @@ func (qs UserRedeemCodeQuerySet) StatusIn(status ...string) UserRedeemCodeQueryS return qs.w(qs.db.Where("status IN (?)", status)) } +// StatusLike is an autogenerated method +// nolint: dupl +func (qs UserRedeemCodeQuerySet) StatusLike(status string) UserRedeemCodeQuerySet { + return qs.w(qs.db.Where("status LIKE ?", status)) +} + +// StatusLt is an autogenerated method +// nolint: dupl +func (qs UserRedeemCodeQuerySet) StatusLt(status string) UserRedeemCodeQuerySet { + return qs.w(qs.db.Where("status < ?", status)) +} + +// StatusLte is an autogenerated method +// nolint: dupl +func (qs UserRedeemCodeQuerySet) StatusLte(status string) UserRedeemCodeQuerySet { + return qs.w(qs.db.Where("status <= ?", status)) +} + // StatusNe is an autogenerated method // nolint: dupl func (qs UserRedeemCodeQuerySet) StatusNe(status string) UserRedeemCodeQuerySet { @@ -1162,6 +1669,68 @@ func (qs UserRedeemCodeQuerySet) StatusNotIn(status ...string) UserRedeemCodeQue return qs.w(qs.db.Where("status NOT IN (?)", status)) } +// StatusNotlike is an autogenerated method +// nolint: dupl +func (qs UserRedeemCodeQuerySet) StatusNotlike(status string) UserRedeemCodeQuerySet { + return qs.w(qs.db.Where("status NOT LIKE ?", status)) +} + +// StoreIdEq is an autogenerated method +// nolint: dupl +func (qs UserRedeemCodeQuerySet) StoreIdEq(storeId uint32) UserRedeemCodeQuerySet { + return qs.w(qs.db.Where("store_id = ?", storeId)) +} + +// StoreIdGt is an autogenerated method +// nolint: dupl +func (qs UserRedeemCodeQuerySet) StoreIdGt(storeId uint32) UserRedeemCodeQuerySet { + return qs.w(qs.db.Where("store_id > ?", storeId)) +} + +// StoreIdGte is an autogenerated method +// nolint: dupl +func (qs UserRedeemCodeQuerySet) StoreIdGte(storeId uint32) UserRedeemCodeQuerySet { + return qs.w(qs.db.Where("store_id >= ?", storeId)) +} + +// StoreIdIn is an autogenerated method +// nolint: dupl +func (qs UserRedeemCodeQuerySet) StoreIdIn(storeId ...uint32) UserRedeemCodeQuerySet { + if len(storeId) == 0 { + qs.db.AddError(errors.New("must at least pass one storeId in StoreIdIn")) + return qs.w(qs.db) + } + return qs.w(qs.db.Where("store_id IN (?)", storeId)) +} + +// StoreIdLt is an autogenerated method +// nolint: dupl +func (qs UserRedeemCodeQuerySet) StoreIdLt(storeId uint32) UserRedeemCodeQuerySet { + return qs.w(qs.db.Where("store_id < ?", storeId)) +} + +// StoreIdLte is an autogenerated method +// nolint: dupl +func (qs UserRedeemCodeQuerySet) StoreIdLte(storeId uint32) UserRedeemCodeQuerySet { + return qs.w(qs.db.Where("store_id <= ?", storeId)) +} + +// StoreIdNe is an autogenerated method +// nolint: dupl +func (qs UserRedeemCodeQuerySet) StoreIdNe(storeId uint32) UserRedeemCodeQuerySet { + return qs.w(qs.db.Where("store_id != ?", storeId)) +} + +// StoreIdNotIn is an autogenerated method +// nolint: dupl +func (qs UserRedeemCodeQuerySet) StoreIdNotIn(storeId ...uint32) UserRedeemCodeQuerySet { + if len(storeId) == 0 { + qs.db.AddError(errors.New("must at least pass one storeId in StoreIdNotIn")) + return qs.w(qs.db) + } + return qs.w(qs.db.Where("store_id NOT IN (?)", storeId)) +} + // UidEq is an autogenerated method // nolint: dupl func (qs UserRedeemCodeQuerySet) UidEq(uid uint32) UserRedeemCodeQuerySet { @@ -1254,6 +1823,13 @@ func (qs UserRedeemCodeQuerySet) UpdatedAtNe(updatedAt time.Time) UserRedeemCode return qs.w(qs.db.Where("updated_at != ?", updatedAt)) } +// SetActivityType is an autogenerated method +// nolint: dupl +func (u UserRedeemCodeUpdater) SetActivityType(activityType uint32) UserRedeemCodeUpdater { + u.fields[string(UserRedeemCodeDBSchema.ActivityType)] = activityType + return u +} + // SetCodeType is an autogenerated method // nolint: dupl func (u UserRedeemCodeUpdater) SetCodeType(codeType string) UserRedeemCodeUpdater { @@ -1303,6 +1879,13 @@ func (u UserRedeemCodeUpdater) SetStatus(status string) UserRedeemCodeUpdater { return u } +// SetStoreId is an autogenerated method +// nolint: dupl +func (u UserRedeemCodeUpdater) SetStoreId(storeId uint32) UserRedeemCodeUpdater { + u.fields[string(UserRedeemCodeDBSchema.StoreId)] = storeId + return u +} + // SetUid is an autogenerated method // nolint: dupl func (u UserRedeemCodeUpdater) SetUid(uid uint32) UserRedeemCodeUpdater { @@ -1345,41 +1928,47 @@ func (f UserRedeemCodeDBSchemaField) String() string { // UserRedeemCodeDBSchema stores db field names of UserRedeemCode var UserRedeemCodeDBSchema = struct { - ID UserRedeemCodeDBSchemaField - CreatedAt UserRedeemCodeDBSchemaField - UpdatedAt UserRedeemCodeDBSchemaField - DeletedAt UserRedeemCodeDBSchemaField - Uid UserRedeemCodeDBSchemaField - Status UserRedeemCodeDBSchemaField - SerialCode UserRedeemCodeDBSchemaField - CodeType UserRedeemCodeDBSchemaField - ConvertTime UserRedeemCodeDBSchemaField + ID UserRedeemCodeDBSchemaField + CreatedAt UserRedeemCodeDBSchemaField + UpdatedAt UserRedeemCodeDBSchemaField + DeletedAt UserRedeemCodeDBSchemaField + Uid UserRedeemCodeDBSchemaField + Status UserRedeemCodeDBSchemaField + StoreId UserRedeemCodeDBSchemaField + SerialCode UserRedeemCodeDBSchemaField + CodeType UserRedeemCodeDBSchemaField + ConvertTime UserRedeemCodeDBSchemaField + ActivityType UserRedeemCodeDBSchemaField }{ - ID: UserRedeemCodeDBSchemaField("id"), - CreatedAt: UserRedeemCodeDBSchemaField("created_at"), - UpdatedAt: UserRedeemCodeDBSchemaField("updated_at"), - DeletedAt: UserRedeemCodeDBSchemaField("deleted_at"), - Uid: UserRedeemCodeDBSchemaField("uid"), - Status: UserRedeemCodeDBSchemaField("status"), - SerialCode: UserRedeemCodeDBSchemaField("serial_code"), - CodeType: UserRedeemCodeDBSchemaField("code_type"), - ConvertTime: UserRedeemCodeDBSchemaField("convert_time"), + ID: UserRedeemCodeDBSchemaField("id"), + CreatedAt: UserRedeemCodeDBSchemaField("created_at"), + UpdatedAt: UserRedeemCodeDBSchemaField("updated_at"), + DeletedAt: UserRedeemCodeDBSchemaField("deleted_at"), + Uid: UserRedeemCodeDBSchemaField("uid"), + Status: UserRedeemCodeDBSchemaField("status"), + StoreId: UserRedeemCodeDBSchemaField("store_id"), + SerialCode: UserRedeemCodeDBSchemaField("serial_code"), + CodeType: UserRedeemCodeDBSchemaField("code_type"), + ConvertTime: UserRedeemCodeDBSchemaField("convert_time"), + ActivityType: UserRedeemCodeDBSchemaField("activity_type"), } // Update updates UserRedeemCode fields by primary key // nolint: dupl func (o *UserRedeemCode) Update(db *gorm.DB, fields ...UserRedeemCodeDBSchemaField) error { dbNameToFieldName := map[string]interface{}{ - "id": o.ID, - "created_at": o.CreatedAt, - "updated_at": o.UpdatedAt, - "deleted_at": o.DeletedAt, - "uid": o.Uid, - "status": o.Status, - "serial_code": o.SerialCode, - "code_type": o.CodeType, - "convert_time": o.ConvertTime, + "id": o.ID, + "created_at": o.CreatedAt, + "updated_at": o.UpdatedAt, + "deleted_at": o.DeletedAt, + "uid": o.Uid, + "status": o.Status, + "store_id": o.StoreId, + "serial_code": o.SerialCode, + "code_type": o.CodeType, + "convert_time": o.ConvertTime, + "activity_type": o.ActivityType, } u := map[string]interface{}{} for _, f := range fields { diff --git a/model/autogenerated_user.go b/model/autogenerated_user.go index 1447459..143fc2c 100644 --- a/model/autogenerated_user.go +++ b/model/autogenerated_user.go @@ -6093,6 +6093,74 @@ func (qs UserQuerySet) One(ret *User) error { return qs.db.First(ret).Error } +// OpenMemberChannelEq is an autogenerated method +// nolint: dupl +func (qs UserQuerySet) OpenMemberChannelEq(openMemberChannel string) UserQuerySet { + return qs.w(qs.db.Where("open_member_channel = ?", openMemberChannel)) +} + +// OpenMemberChannelGt is an autogenerated method +// nolint: dupl +func (qs UserQuerySet) OpenMemberChannelGt(openMemberChannel string) UserQuerySet { + return qs.w(qs.db.Where("open_member_channel > ?", openMemberChannel)) +} + +// OpenMemberChannelGte is an autogenerated method +// nolint: dupl +func (qs UserQuerySet) OpenMemberChannelGte(openMemberChannel string) UserQuerySet { + return qs.w(qs.db.Where("open_member_channel >= ?", openMemberChannel)) +} + +// OpenMemberChannelIn is an autogenerated method +// nolint: dupl +func (qs UserQuerySet) OpenMemberChannelIn(openMemberChannel ...string) UserQuerySet { + if len(openMemberChannel) == 0 { + qs.db.AddError(errors.New("must at least pass one openMemberChannel in OpenMemberChannelIn")) + return qs.w(qs.db) + } + return qs.w(qs.db.Where("open_member_channel IN (?)", openMemberChannel)) +} + +// OpenMemberChannelLike is an autogenerated method +// nolint: dupl +func (qs UserQuerySet) OpenMemberChannelLike(openMemberChannel string) UserQuerySet { + return qs.w(qs.db.Where("open_member_channel LIKE ?", openMemberChannel)) +} + +// OpenMemberChannelLt is an autogenerated method +// nolint: dupl +func (qs UserQuerySet) OpenMemberChannelLt(openMemberChannel string) UserQuerySet { + return qs.w(qs.db.Where("open_member_channel < ?", openMemberChannel)) +} + +// OpenMemberChannelLte is an autogenerated method +// nolint: dupl +func (qs UserQuerySet) OpenMemberChannelLte(openMemberChannel string) UserQuerySet { + return qs.w(qs.db.Where("open_member_channel <= ?", openMemberChannel)) +} + +// OpenMemberChannelNe is an autogenerated method +// nolint: dupl +func (qs UserQuerySet) OpenMemberChannelNe(openMemberChannel string) UserQuerySet { + return qs.w(qs.db.Where("open_member_channel != ?", openMemberChannel)) +} + +// OpenMemberChannelNotIn is an autogenerated method +// nolint: dupl +func (qs UserQuerySet) OpenMemberChannelNotIn(openMemberChannel ...string) UserQuerySet { + if len(openMemberChannel) == 0 { + qs.db.AddError(errors.New("must at least pass one openMemberChannel in OpenMemberChannelNotIn")) + return qs.w(qs.db) + } + return qs.w(qs.db.Where("open_member_channel NOT IN (?)", openMemberChannel)) +} + +// OpenMemberChannelNotlike is an autogenerated method +// nolint: dupl +func (qs UserQuerySet) OpenMemberChannelNotlike(openMemberChannel string) UserQuerySet { + return qs.w(qs.db.Where("open_member_channel NOT LIKE ?", openMemberChannel)) +} + // OpenMemberTimeEq is an autogenerated method // nolint: dupl func (qs UserQuerySet) OpenMemberTimeEq(openMemberTime time.Time) UserQuerySet { @@ -6219,6 +6287,12 @@ func (qs UserQuerySet) OrderAscByMemberLevel() UserQuerySet { return qs.w(qs.db.Order("member_level ASC")) } +// OrderAscByOpenMemberChannel is an autogenerated method +// nolint: dupl +func (qs UserQuerySet) OrderAscByOpenMemberChannel() UserQuerySet { + return qs.w(qs.db.Order("open_member_channel ASC")) +} + // OrderAscByOpenMemberTime is an autogenerated method // nolint: dupl func (qs UserQuerySet) OrderAscByOpenMemberTime() UserQuerySet { @@ -6387,6 +6461,12 @@ func (qs UserQuerySet) OrderDescByMemberLevel() UserQuerySet { return qs.w(qs.db.Order("member_level DESC")) } +// OrderDescByOpenMemberChannel is an autogenerated method +// nolint: dupl +func (qs UserQuerySet) OrderDescByOpenMemberChannel() UserQuerySet { + return qs.w(qs.db.Order("open_member_channel DESC")) +} + // OrderDescByOpenMemberTime is an autogenerated method // nolint: dupl func (qs UserQuerySet) OrderDescByOpenMemberTime() UserQuerySet { @@ -7294,6 +7374,13 @@ func (u UserUpdater) SetMemberLevel(memberLevel uint32) UserUpdater { return u } +// SetOpenMemberChannel is an autogenerated method +// nolint: dupl +func (u UserUpdater) SetOpenMemberChannel(openMemberChannel string) UserUpdater { + u.fields[string(UserDBSchema.OpenMemberChannel)] = openMemberChannel + return u +} + // SetOpenMemberTime is an autogenerated method // nolint: dupl func (u UserUpdater) SetOpenMemberTime(openMemberTime time.Time) UserUpdater { @@ -7413,98 +7500,101 @@ func (f UserDBSchemaField) String() string { // UserDBSchema stores db field names of User var UserDBSchema = struct { - ID UserDBSchemaField - CreatedAt UserDBSchemaField - UpdatedAt UserDBSchemaField - DeletedAt UserDBSchemaField - Uid UserDBSchemaField - MemberLevel UserDBSchemaField - MemberExpire UserDBSchemaField - OpenMemberTime UserDBSchemaField - Bond UserDBSchemaField - WxName UserDBSchemaField - WxAvatar UserDBSchemaField - WxOpenID UserDBSchemaField - AppOpenID UserDBSchemaField - WxUnionID UserDBSchemaField - Tel UserDBSchemaField - Gender UserDBSchemaField - City UserDBSchemaField - Province UserDBSchemaField - Country UserDBSchemaField - Deposit UserDBSchemaField - UserType UserDBSchemaField - StoreId UserDBSchemaField - InviteCodeUrl UserDBSchemaField - LastLoginAt UserDBSchemaField - IP UserDBSchemaField - InBlack UserDBSchemaField - StoreType UserDBSchemaField - Version UserDBSchemaField + ID UserDBSchemaField + CreatedAt UserDBSchemaField + UpdatedAt UserDBSchemaField + DeletedAt UserDBSchemaField + Uid UserDBSchemaField + MemberLevel UserDBSchemaField + MemberExpire UserDBSchemaField + OpenMemberTime UserDBSchemaField + Bond UserDBSchemaField + WxName UserDBSchemaField + WxAvatar UserDBSchemaField + WxOpenID UserDBSchemaField + AppOpenID UserDBSchemaField + WxUnionID UserDBSchemaField + Tel UserDBSchemaField + Gender UserDBSchemaField + City UserDBSchemaField + Province UserDBSchemaField + Country UserDBSchemaField + Deposit UserDBSchemaField + UserType UserDBSchemaField + OpenMemberChannel UserDBSchemaField + StoreId UserDBSchemaField + InviteCodeUrl UserDBSchemaField + LastLoginAt UserDBSchemaField + IP UserDBSchemaField + InBlack UserDBSchemaField + StoreType UserDBSchemaField + Version UserDBSchemaField }{ - ID: UserDBSchemaField("id"), - CreatedAt: UserDBSchemaField("created_at"), - UpdatedAt: UserDBSchemaField("updated_at"), - DeletedAt: UserDBSchemaField("deleted_at"), - Uid: UserDBSchemaField("uid"), - MemberLevel: UserDBSchemaField("member_level"), - MemberExpire: UserDBSchemaField("member_expire"), - OpenMemberTime: UserDBSchemaField("open_member_time"), - Bond: UserDBSchemaField("bond"), - WxName: UserDBSchemaField("wx_name"), - WxAvatar: UserDBSchemaField("wx_avatar"), - WxOpenID: UserDBSchemaField("wx_open_id"), - AppOpenID: UserDBSchemaField("app_open_id"), - WxUnionID: UserDBSchemaField("wx_union_id"), - Tel: UserDBSchemaField("tel"), - Gender: UserDBSchemaField("gender"), - City: UserDBSchemaField("city"), - Province: UserDBSchemaField("province"), - Country: UserDBSchemaField("country"), - Deposit: UserDBSchemaField("deposit"), - UserType: UserDBSchemaField("user_type"), - StoreId: UserDBSchemaField("store_id"), - InviteCodeUrl: UserDBSchemaField("invite_code_url"), - LastLoginAt: UserDBSchemaField("last_login_at"), - IP: UserDBSchemaField("ip"), - InBlack: UserDBSchemaField("in_black"), - StoreType: UserDBSchemaField("store_type"), - Version: UserDBSchemaField("version"), + ID: UserDBSchemaField("id"), + CreatedAt: UserDBSchemaField("created_at"), + UpdatedAt: UserDBSchemaField("updated_at"), + DeletedAt: UserDBSchemaField("deleted_at"), + Uid: UserDBSchemaField("uid"), + MemberLevel: UserDBSchemaField("member_level"), + MemberExpire: UserDBSchemaField("member_expire"), + OpenMemberTime: UserDBSchemaField("open_member_time"), + Bond: UserDBSchemaField("bond"), + WxName: UserDBSchemaField("wx_name"), + WxAvatar: UserDBSchemaField("wx_avatar"), + WxOpenID: UserDBSchemaField("wx_open_id"), + AppOpenID: UserDBSchemaField("app_open_id"), + WxUnionID: UserDBSchemaField("wx_union_id"), + Tel: UserDBSchemaField("tel"), + Gender: UserDBSchemaField("gender"), + City: UserDBSchemaField("city"), + Province: UserDBSchemaField("province"), + Country: UserDBSchemaField("country"), + Deposit: UserDBSchemaField("deposit"), + UserType: UserDBSchemaField("user_type"), + OpenMemberChannel: UserDBSchemaField("open_member_channel"), + StoreId: UserDBSchemaField("store_id"), + InviteCodeUrl: UserDBSchemaField("invite_code_url"), + LastLoginAt: UserDBSchemaField("last_login_at"), + IP: UserDBSchemaField("ip"), + InBlack: UserDBSchemaField("in_black"), + StoreType: UserDBSchemaField("store_type"), + Version: UserDBSchemaField("version"), } // Update updates User fields by primary key // nolint: dupl func (o *User) Update(db *gorm.DB, fields ...UserDBSchemaField) error { dbNameToFieldName := map[string]interface{}{ - "id": o.ID, - "created_at": o.CreatedAt, - "updated_at": o.UpdatedAt, - "deleted_at": o.DeletedAt, - "uid": o.Uid, - "member_level": o.MemberLevel, - "member_expire": o.MemberExpire, - "open_member_time": o.OpenMemberTime, - "bond": o.Bond, - "wx_name": o.WxName, - "wx_avatar": o.WxAvatar, - "wx_open_id": o.WxOpenID, - "app_open_id": o.AppOpenID, - "wx_union_id": o.WxUnionID, - "tel": o.Tel, - "gender": o.Gender, - "city": o.City, - "province": o.Province, - "country": o.Country, - "deposit": o.Deposit, - "user_type": o.UserType, - "store_id": o.StoreId, - "invite_code_url": o.InviteCodeUrl, - "last_login_at": o.LastLoginAt, - "ip": o.IP, - "in_black": o.InBlack, - "store_type": o.StoreType, - "version": o.Version, + "id": o.ID, + "created_at": o.CreatedAt, + "updated_at": o.UpdatedAt, + "deleted_at": o.DeletedAt, + "uid": o.Uid, + "member_level": o.MemberLevel, + "member_expire": o.MemberExpire, + "open_member_time": o.OpenMemberTime, + "bond": o.Bond, + "wx_name": o.WxName, + "wx_avatar": o.WxAvatar, + "wx_open_id": o.WxOpenID, + "app_open_id": o.AppOpenID, + "wx_union_id": o.WxUnionID, + "tel": o.Tel, + "gender": o.Gender, + "city": o.City, + "province": o.Province, + "country": o.Country, + "deposit": o.Deposit, + "user_type": o.UserType, + "open_member_channel": o.OpenMemberChannel, + "store_id": o.StoreId, + "invite_code_url": o.InviteCodeUrl, + "last_login_at": o.LastLoginAt, + "ip": o.IP, + "in_black": o.InBlack, + "store_type": o.StoreType, + "version": o.Version, } u := map[string]interface{}{} for _, f := range fields { diff --git a/model/model_test.go b/model/model_test.go index 724d8b8..c88652e 100644 --- a/model/model_test.go +++ b/model/model_test.go @@ -413,10 +413,10 @@ func TestRedeemCodeCreate(t *testing.T) { } func RedeemCodeCreate() { - //InitTestDB() - InitDBProd() + InitTestDB() + //InitDBProd() - for i := 0; i < 1000; i++ { + for i := 0; i < 10; i++ { redeem := NewRedeemCode() fmt.Println("redeemCode:", redeem) @@ -427,13 +427,14 @@ func RedeemCodeCreate() { if !IsRedeemCodeExist(redeem) { redeemCode := &RedeemCode{ SerialCode: redeem, - CodeType: CodeTypeMemberCard30, + CodeType: CodeTypeMemberBlackGoldMember, Status: RedeemCodeStatusStock, CodeSecret: secretCode, EffectiveTime: time.Now(), - ExpirationTime: time.Time{}, + ExpirationTime: time.Now().AddDate(1, 0, 0), } - err := DBProd.Create(redeemCode).Error + err := DBDev.Create(redeemCode).Error + //err := DBProd.Create(redeemCode).Error if err != nil { fmt.Println("err:", err) @@ -447,7 +448,8 @@ func RedeemCodeCreate() { func IsRedeemCodeExist(code string) bool { var isExist uint32 sql := fmt.Sprintf("SELECT EXISTS (SELECT * FROM redeem_code WHERE serial_code = '%s') AS code_exsit;", code) - err := DBProd.Raw(sql).Row().Scan(&isExist) + err := DBDev.Raw(sql).Row().Scan(&isExist) + //err := DBProd.Raw(sql).Row().Scan(&isExist) if err != nil { fmt.Println("err:", err) return true diff --git a/model/redeem_code.go b/model/redeem_code.go index 1d7d4de..4dacdc2 100644 --- a/model/redeem_code.go +++ b/model/redeem_code.go @@ -15,7 +15,10 @@ const ( RedeemCodeStatusUsed = "used" // 已使用 ) const ( - CodeTypeMemberCard30 = "member-card-30" + CodeTypeMemberCard30 = "member-card-30" // 会员卡 30天 + CodeTypeMemberGoldMember = "member-card-gold-member" + CodeTypeMemberPlatinumMember = "member-card-platinum-member" + CodeTypeMemberBlackGoldMember = "member-card-black-gold-member" ) const ( @@ -41,6 +44,7 @@ type RedeemCode struct { SerialCode string `json:"serial_code" gorm:"index;comment:'兑换编码'"` // 兑换编码 CodeType string `json:"code_type"` // memberCard Status string `json:"status" gorm:"index;comment:'兑换状态'"` // stocking user-hold used + StoreId uint32 `json:"store_id" gorm:"index"` // 门店id CodeSecret string `json:"code_secret"` // 兑换密码 EffectiveTime time.Time `json:"effective_time"` // 生效时间 ExpirationTime time.Time `json:"expiration_time"` // 过期时间 @@ -51,6 +55,7 @@ type UserRedeemCode struct { Model Uid uint32 `json:"uid" gorm:"index;comment:'用户id'"` Status string `json:"status" gorm:"index;comment:'兑换状态'"` // user-hold used + StoreId uint32 `json:"store_id" gorm:"index"` // 门店id SerialCode string `json:"serial_code" gorm:"index;comment:'兑换编码'"` // 兑换编码 CodeType string `json:"code_type"` // memberCard ConvertTime time.Time `json:"convert_time"` // 绑定时间 @@ -123,6 +128,10 @@ func UserRedeemCodeConvert(uid uint32, serialCode string) error { begin.Rollback() return err } + //qsUserRedeem := NewUserRedeemCodeQuerySet(begin).UidEq(uid).SerialCodeEq(serialCode).GetUpdater() + //if userRedeem.CodeType == CodeTypeMemberGoldMember { + // //qsUserRedeem = qsUserRedeem.SetCodeType() + //} updateNum, err := NewUserRedeemCodeQuerySet(begin).UidEq(uid).SerialCodeEq(serialCode).GetUpdater(). SetStatus(UserRedeemCodeStatusUsed).SetConvertTime(time.Now()).UpdateNum() if err != nil { @@ -137,15 +146,45 @@ func UserRedeemCodeConvert(uid uint32, serialCode string) error { } user := GetUserByUid(uid) qs := NewUserQuerySet(begin).UidEq(uid).GetUpdater() - if user.MemberLevel == 1 { - qs = qs.SetMemberLevel(3) + if user.MemberLevel != 1 && user.MemberLevel != 3 && + userRedeem.CodeType != CodeTypeMemberCard30 { + logger.Error("code type used by consumer:") + begin.Rollback() + return errors.New("code type used by consumer") } - if user.MemberExpire.After(time.Now()) { - qs = qs.SetMemberExpire(user.MemberExpire.AddDate(0, 0, 30)) - } else { - qs = qs.SetMemberExpire(time.Now().AddDate(0, 0, 30)) + addDates := 0 + memberLevel := uint32(0) + switch userRedeem.CodeType { + case CodeTypeMemberCard30: + addDates = 30 + memberLevel = 3 + case CodeTypeMemberGoldMember: + addDates = 365 + memberLevel = 2 + qs = qs.SetMemberLevel(MemberLevelGold).SetOpenMemberTime(time.Now()).SetOpenMemberChannel(OpenMemberChannelRedeemCode) + case CodeTypeMemberPlatinumMember: + addDates = 365 + memberLevel = 4 + qs = qs.SetMemberLevel(MemberLevelPlatinum).SetOpenMemberTime(time.Now()).SetOpenMemberChannel(OpenMemberChannelRedeemCode) + case CodeTypeMemberBlackGoldMember: + addDates = 365 + memberLevel = 5 + qs = qs.SetMemberLevel(MemberLevelBlackGold).SetOpenMemberTime(time.Now()).SetOpenMemberChannel(OpenMemberChannelRedeemCode) + default: + logger.Error(" code type err:", err) + begin.Rollback() + return err } + if user.MemberExpire.After(time.Now()) { + qs = qs.SetMemberExpire(user.MemberExpire.AddDate(0, 0, addDates)) + } else { + qs = qs.SetMemberExpire(time.Now().AddDate(0, 0, addDates)) + } + if user.MemberLevel == 1 || user.MemberLevel == 3 { + qs = qs.SetMemberLevel(memberLevel) + } + userNum, err := qs.UpdateNum() if err != nil { logger.Error("user redeem code err:", err) diff --git a/model/user.go b/model/user.go index bdda573..127c0e4 100644 --- a/model/user.go +++ b/model/user.go @@ -15,31 +15,32 @@ import ( type User struct { Model - Uid uint32 `json:"uid" gorm:"column:uid;unique_index"` - MemberLevel uint32 `json:"member_level"` // 会员等级 1-用户 2-会员 - MemberExpire time.Time `json:"member_expire"` // 会员到期时间 - OpenMemberTime time.Time `json:"open_member_time"` // 开通会员 - Bond uint32 `json:"bond"` // 保证金 - WxName string `json:"wx_name"` // 昵称 - WxAvatar string `json:"wx_avatar"` // 头像 - WxOpenID string `json:"wx_open_id"` - AppOpenID string `json:"app_open_id"` - WxUnionID string `json:"wx_union_id"` - Tel string `json:"tel"` // 电话 - Gender uint8 `json:"gender"` // 性别 - City string `json:"city"` // 城市 - Province string `json:"province"` // 省 - Country string `json:"country"` // 市 - Deposit uint32 `json:"deposit"` // - UserType uint8 `json:"user_type"` // 用户类型 1-普通用户 2-店员 - StoreId uint64 `json:"store_id"` // 门店id - InviteCodeUrl string `json:"invite_code_url"` // 分享二维码 - LastLoginAt time.Time `json:"last_login_at"` // 最近登录时间 - IP string `json:"-" gorm:"type:varchar(60)"` // ip - InBlack bool `json:"in_black"` // 是否在黑名单 - StoreType uint8 `json:"store_type"` // 1-订单门店 - Version uint32 `json:"-"` - UserVm *UserVm `json:"user_vm" gorm:"-"` // + Uid uint32 `json:"uid" gorm:"column:uid;unique_index"` + MemberLevel uint32 `json:"member_level"` // 会员等级 1-用户 2-会员 + MemberExpire time.Time `json:"member_expire"` // 会员到期时间 + OpenMemberTime time.Time `json:"open_member_time"` // 开通会员 + Bond uint32 `json:"bond"` // 保证金 + WxName string `json:"wx_name"` // 昵称 + WxAvatar string `json:"wx_avatar"` // 头像 + WxOpenID string `json:"wx_open_id"` + AppOpenID string `json:"app_open_id"` + WxUnionID string `json:"wx_union_id"` + Tel string `json:"tel"` // 电话 + Gender uint8 `json:"gender"` // 性别 + City string `json:"city"` // 城市 + Province string `json:"province"` // 省 + Country string `json:"country"` // 市 + Deposit uint32 `json:"deposit"` // 押金 + UserType uint8 `json:"user_type"` // 用户类型 1-普通用户 2-店员 + OpenMemberChannel string `json:"open_member_channel" ` // 开通会员渠道 -门店推广 -用户邀请 -兑换码 + StoreId uint64 `json:"store_id"` // 门店id + InviteCodeUrl string `json:"invite_code_url"` // 分享二维码 + LastLoginAt time.Time `json:"last_login_at"` // 最近登录时间 + IP string `json:"-" gorm:"type:varchar(60)"` // ip + InBlack bool `json:"in_black"` // 是否在黑名单 + StoreType uint8 `json:"store_type"` // 1-订单门店 + Version uint32 `json:"-"` + UserVm *UserVm `json:"user_vm" gorm:"-"` // } func (o *User) TableName() string { @@ -54,7 +55,7 @@ const ( const ( MemberLevelConsumer = 1 // 普通用户 MemberLevelGold = 2 // 黄金会员 - MemberLevelPeriod = 3 + MemberLevelPeriod = 3 // 短期会员 MemberLevelPlatinum = 4 // 白金会员 MemberLevelBlackGold = 5 // 黑金会员 ) @@ -63,6 +64,11 @@ const ( DateTimeFormat = "2006-01-02" TimeFormat = "2006-01-02 15:04:05" ) +const ( + OpenMemberChannelStorePromotion = "store_promotion" + OpenMemberChannelUserInvite = "user_invite" + OpenMemberChannelRedeemCode = "redeem_code" +) // gen:qs type UserInvite struct { From 128af37e98984a4a099d5204e1ff1d5efd1aba99 Mon Sep 17 00:00:00 2001 From: li Date: Tue, 19 Apr 2022 14:18:21 +0800 Subject: [PATCH 2/2] fix: --- model/model_test.go | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/model/model_test.go b/model/model_test.go index c88652e..2046467 100644 --- a/model/model_test.go +++ b/model/model_test.go @@ -408,15 +408,16 @@ func TestLeng(t *testing.T) { // B61E1104C989D4E2F453EB6253A06A3721094DDF76FF468EB679CEA046403D3F7B963A8FBED0CB70C1EB9B17BB684DAFB700F966676D } +// 生成会员兑换码 func TestRedeemCodeCreate(t *testing.T) { RedeemCodeCreate() } func RedeemCodeCreate() { - InitTestDB() - //InitDBProd() + //InitTestDB() + InitDBProd() - for i := 0; i < 10; i++ { + for i := 0; i < 7; i++ { redeem := NewRedeemCode() fmt.Println("redeemCode:", redeem) @@ -427,14 +428,14 @@ func RedeemCodeCreate() { if !IsRedeemCodeExist(redeem) { redeemCode := &RedeemCode{ SerialCode: redeem, - CodeType: CodeTypeMemberBlackGoldMember, + CodeType: CodeTypeMemberGoldMember, Status: RedeemCodeStatusStock, CodeSecret: secretCode, EffectiveTime: time.Now(), ExpirationTime: time.Now().AddDate(1, 0, 0), } - err := DBDev.Create(redeemCode).Error - //err := DBProd.Create(redeemCode).Error + //err := DBDev.Create(redeemCode).Error + err := DBProd.Create(redeemCode).Error if err != nil { fmt.Println("err:", err) @@ -448,8 +449,8 @@ func RedeemCodeCreate() { func IsRedeemCodeExist(code string) bool { var isExist uint32 sql := fmt.Sprintf("SELECT EXISTS (SELECT * FROM redeem_code WHERE serial_code = '%s') AS code_exsit;", code) - err := DBDev.Raw(sql).Row().Scan(&isExist) - //err := DBProd.Raw(sql).Row().Scan(&isExist) + //err := DBDev.Raw(sql).Row().Scan(&isExist) + err := DBProd.Raw(sql).Row().Scan(&isExist) if err != nil { fmt.Println("err:", err) return true