Merge branch 'dev_mall_member' into dev_share_card_issue_code

This commit is contained in:
li 2022-04-19 14:21:33 +08:00
commit 30fca5a0a4
6 changed files with 876 additions and 149 deletions

View File

@ -326,7 +326,7 @@ func UpgradeMember(c *gin.Context) {
// 补押金 // 补押金
depositMendFee := int64(memberConfig.MemberDeposit) - int64(user.Deposit) 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 { if err != nil {
logger.Error("err:", err) logger.Error("err:", err)
RespJson(c, status.InternalServerError, nil) RespJson(c, status.InternalServerError, nil)
@ -452,7 +452,7 @@ func UpgradeMemberInfo(c *gin.Context) {
// 补押金 // 补押金
depositMendFee := int64(memberConfig.MemberDeposit) - int64(user.Deposit) 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 { if err != nil {
logger.Error("err:", err) logger.Error("err:", err)
RespJson(c, status.InternalServerError, nil) RespJson(c, status.InternalServerError, nil)

View File

@ -4,6 +4,7 @@ package model
import ( import (
"errors" "errors"
"fmt" "fmt"
"strings"
"time" "time"
"github.com/jinzhu/gorm" "github.com/jinzhu/gorm"
@ -29,6 +30,15 @@ func (qs RedeemCodeQuerySet) w(db *gorm.DB) RedeemCodeQuerySet {
return NewRedeemCodeQuerySet(db) 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 // Create is an autogenerated method
// nolint: dupl // nolint: dupl
func (o *RedeemCode) Create(db *gorm.DB) error { 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)) 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 // CodeSecretIn is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs RedeemCodeQuerySet) CodeSecretIn(codeSecret ...string) RedeemCodeQuerySet { 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)) 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 // CodeSecretNe is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs RedeemCodeQuerySet) CodeSecretNe(codeSecret string) RedeemCodeQuerySet { 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)) 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 // CodeTypeEq is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs RedeemCodeQuerySet) CodeTypeEq(codeType string) RedeemCodeQuerySet { func (qs RedeemCodeQuerySet) CodeTypeEq(codeType string) RedeemCodeQuerySet {
return qs.w(qs.db.Where("code_type = ?", codeType)) 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 // CodeTypeIn is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs RedeemCodeQuerySet) CodeTypeIn(codeType ...string) RedeemCodeQuerySet { 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)) 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 // CodeTypeNe is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs RedeemCodeQuerySet) CodeTypeNe(codeType string) RedeemCodeQuerySet { 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)) 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 // Count is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs RedeemCodeQuerySet) Count() (int, error) { func (qs RedeemCodeQuerySet) Count() (int, error) {
@ -381,6 +463,18 @@ func (qs RedeemCodeQuerySet) One(ret *RedeemCode) error {
return qs.db.First(ret).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 // OrderAscByCreatedAt is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs RedeemCodeQuerySet) OrderAscByCreatedAt() RedeemCodeQuerySet { func (qs RedeemCodeQuerySet) OrderAscByCreatedAt() RedeemCodeQuerySet {
@ -411,12 +505,42 @@ func (qs RedeemCodeQuerySet) OrderAscByID() RedeemCodeQuerySet {
return qs.w(qs.db.Order("id ASC")) 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 // OrderAscByUpdatedAt is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs RedeemCodeQuerySet) OrderAscByUpdatedAt() RedeemCodeQuerySet { func (qs RedeemCodeQuerySet) OrderAscByUpdatedAt() RedeemCodeQuerySet {
return qs.w(qs.db.Order("updated_at ASC")) 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 // OrderDescByCreatedAt is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs RedeemCodeQuerySet) OrderDescByCreatedAt() RedeemCodeQuerySet { func (qs RedeemCodeQuerySet) OrderDescByCreatedAt() RedeemCodeQuerySet {
@ -447,6 +571,24 @@ func (qs RedeemCodeQuerySet) OrderDescByID() RedeemCodeQuerySet {
return qs.w(qs.db.Order("id DESC")) 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 // OrderDescByUpdatedAt is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs RedeemCodeQuerySet) OrderDescByUpdatedAt() RedeemCodeQuerySet { 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)) 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 // SerialCodeIn is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs RedeemCodeQuerySet) SerialCodeIn(serialCode ...string) RedeemCodeQuerySet { 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)) 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 // SerialCodeNe is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs RedeemCodeQuerySet) SerialCodeNe(serialCode string) RedeemCodeQuerySet { 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)) 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 // StatusEq is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs RedeemCodeQuerySet) StatusEq(status string) RedeemCodeQuerySet { func (qs RedeemCodeQuerySet) StatusEq(status string) RedeemCodeQuerySet {
return qs.w(qs.db.Where("status = ?", status)) 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 // StatusIn is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs RedeemCodeQuerySet) StatusIn(status ...string) RedeemCodeQuerySet { 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)) 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 // StatusNe is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs RedeemCodeQuerySet) StatusNe(status string) RedeemCodeQuerySet { 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)) 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 // UpdatedAtEq is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs RedeemCodeQuerySet) UpdatedAtEq(updatedAt time.Time) RedeemCodeQuerySet { func (qs RedeemCodeQuerySet) UpdatedAtEq(updatedAt time.Time) RedeemCodeQuerySet {
@ -616,6 +886,13 @@ func (u RedeemCodeUpdater) SetStatus(status string) RedeemCodeUpdater {
return u 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 // SetUpdatedAt is an autogenerated method
// nolint: dupl // nolint: dupl
func (u RedeemCodeUpdater) SetUpdatedAt(updatedAt time.Time) RedeemCodeUpdater { func (u RedeemCodeUpdater) SetUpdatedAt(updatedAt time.Time) RedeemCodeUpdater {
@ -658,6 +935,7 @@ var RedeemCodeDBSchema = struct {
SerialCode RedeemCodeDBSchemaField SerialCode RedeemCodeDBSchemaField
CodeType RedeemCodeDBSchemaField CodeType RedeemCodeDBSchemaField
Status RedeemCodeDBSchemaField Status RedeemCodeDBSchemaField
StoreId RedeemCodeDBSchemaField
CodeSecret RedeemCodeDBSchemaField CodeSecret RedeemCodeDBSchemaField
EffectiveTime RedeemCodeDBSchemaField EffectiveTime RedeemCodeDBSchemaField
ExpirationTime RedeemCodeDBSchemaField ExpirationTime RedeemCodeDBSchemaField
@ -670,6 +948,7 @@ var RedeemCodeDBSchema = struct {
SerialCode: RedeemCodeDBSchemaField("serial_code"), SerialCode: RedeemCodeDBSchemaField("serial_code"),
CodeType: RedeemCodeDBSchemaField("code_type"), CodeType: RedeemCodeDBSchemaField("code_type"),
Status: RedeemCodeDBSchemaField("status"), Status: RedeemCodeDBSchemaField("status"),
StoreId: RedeemCodeDBSchemaField("store_id"),
CodeSecret: RedeemCodeDBSchemaField("code_secret"), CodeSecret: RedeemCodeDBSchemaField("code_secret"),
EffectiveTime: RedeemCodeDBSchemaField("effective_time"), EffectiveTime: RedeemCodeDBSchemaField("effective_time"),
ExpirationTime: RedeemCodeDBSchemaField("expiration_time"), ExpirationTime: RedeemCodeDBSchemaField("expiration_time"),
@ -686,6 +965,7 @@ func (o *RedeemCode) Update(db *gorm.DB, fields ...RedeemCodeDBSchemaField) erro
"serial_code": o.SerialCode, "serial_code": o.SerialCode,
"code_type": o.CodeType, "code_type": o.CodeType,
"status": o.Status, "status": o.Status,
"store_id": o.StoreId,
"code_secret": o.CodeSecret, "code_secret": o.CodeSecret,
"effective_time": o.EffectiveTime, "effective_time": o.EffectiveTime,
"expiration_time": o.ExpirationTime, "expiration_time": o.ExpirationTime,
@ -742,6 +1022,15 @@ func (qs UserRedeemCodeQuerySet) w(db *gorm.DB) UserRedeemCodeQuerySet {
return NewUserRedeemCodeQuerySet(db) 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 // Create is an autogenerated method
// nolint: dupl // nolint: dupl
func (o *UserRedeemCode) Create(db *gorm.DB) error { 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 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 // All is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs UserRedeemCodeQuerySet) All(ret *[]UserRedeemCode) error { 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)) 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 // CodeTypeIn is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs UserRedeemCodeQuerySet) CodeTypeIn(codeType ...string) UserRedeemCodeQuerySet { 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)) 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 // CodeTypeNe is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs UserRedeemCodeQuerySet) CodeTypeNe(codeType string) UserRedeemCodeQuerySet { 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)) 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 // ConvertTimeEq is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs UserRedeemCodeQuerySet) ConvertTimeEq(convertTime time.Time) UserRedeemCodeQuerySet { 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 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 // OrderAscByConvertTime is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs UserRedeemCodeQuerySet) OrderAscByConvertTime() UserRedeemCodeQuerySet { func (qs UserRedeemCodeQuerySet) OrderAscByConvertTime() UserRedeemCodeQuerySet {
@ -1050,6 +1443,24 @@ func (qs UserRedeemCodeQuerySet) OrderAscByID() UserRedeemCodeQuerySet {
return qs.w(qs.db.Order("id ASC")) 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 // OrderAscByUid is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs UserRedeemCodeQuerySet) OrderAscByUid() UserRedeemCodeQuerySet { func (qs UserRedeemCodeQuerySet) OrderAscByUid() UserRedeemCodeQuerySet {
@ -1062,6 +1473,18 @@ func (qs UserRedeemCodeQuerySet) OrderAscByUpdatedAt() UserRedeemCodeQuerySet {
return qs.w(qs.db.Order("updated_at ASC")) 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 // OrderDescByConvertTime is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs UserRedeemCodeQuerySet) OrderDescByConvertTime() UserRedeemCodeQuerySet { func (qs UserRedeemCodeQuerySet) OrderDescByConvertTime() UserRedeemCodeQuerySet {
@ -1086,6 +1509,24 @@ func (qs UserRedeemCodeQuerySet) OrderDescByID() UserRedeemCodeQuerySet {
return qs.w(qs.db.Order("id DESC")) 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 // OrderDescByUid is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs UserRedeemCodeQuerySet) OrderDescByUid() UserRedeemCodeQuerySet { 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)) 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 // SerialCodeIn is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs UserRedeemCodeQuerySet) SerialCodeIn(serialCode ...string) UserRedeemCodeQuerySet { 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)) 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 // SerialCodeNe is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs UserRedeemCodeQuerySet) SerialCodeNe(serialCode string) UserRedeemCodeQuerySet { 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)) 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 // StatusEq is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs UserRedeemCodeQuerySet) StatusEq(status string) UserRedeemCodeQuerySet { func (qs UserRedeemCodeQuerySet) StatusEq(status string) UserRedeemCodeQuerySet {
return qs.w(qs.db.Where("status = ?", status)) 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 // StatusIn is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs UserRedeemCodeQuerySet) StatusIn(status ...string) UserRedeemCodeQuerySet { 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)) 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 // StatusNe is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs UserRedeemCodeQuerySet) StatusNe(status string) UserRedeemCodeQuerySet { 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)) 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 // UidEq is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs UserRedeemCodeQuerySet) UidEq(uid uint32) UserRedeemCodeQuerySet { 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)) 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 // SetCodeType is an autogenerated method
// nolint: dupl // nolint: dupl
func (u UserRedeemCodeUpdater) SetCodeType(codeType string) UserRedeemCodeUpdater { func (u UserRedeemCodeUpdater) SetCodeType(codeType string) UserRedeemCodeUpdater {
@ -1303,6 +1879,13 @@ func (u UserRedeemCodeUpdater) SetStatus(status string) UserRedeemCodeUpdater {
return u 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 // SetUid is an autogenerated method
// nolint: dupl // nolint: dupl
func (u UserRedeemCodeUpdater) SetUid(uid uint32) UserRedeemCodeUpdater { func (u UserRedeemCodeUpdater) SetUid(uid uint32) UserRedeemCodeUpdater {
@ -1345,41 +1928,47 @@ func (f UserRedeemCodeDBSchemaField) String() string {
// UserRedeemCodeDBSchema stores db field names of UserRedeemCode // UserRedeemCodeDBSchema stores db field names of UserRedeemCode
var UserRedeemCodeDBSchema = struct { var UserRedeemCodeDBSchema = struct {
ID UserRedeemCodeDBSchemaField ID UserRedeemCodeDBSchemaField
CreatedAt UserRedeemCodeDBSchemaField CreatedAt UserRedeemCodeDBSchemaField
UpdatedAt UserRedeemCodeDBSchemaField UpdatedAt UserRedeemCodeDBSchemaField
DeletedAt UserRedeemCodeDBSchemaField DeletedAt UserRedeemCodeDBSchemaField
Uid UserRedeemCodeDBSchemaField Uid UserRedeemCodeDBSchemaField
Status UserRedeemCodeDBSchemaField Status UserRedeemCodeDBSchemaField
SerialCode UserRedeemCodeDBSchemaField StoreId UserRedeemCodeDBSchemaField
CodeType UserRedeemCodeDBSchemaField SerialCode UserRedeemCodeDBSchemaField
ConvertTime UserRedeemCodeDBSchemaField CodeType UserRedeemCodeDBSchemaField
ConvertTime UserRedeemCodeDBSchemaField
ActivityType UserRedeemCodeDBSchemaField
}{ }{
ID: UserRedeemCodeDBSchemaField("id"), ID: UserRedeemCodeDBSchemaField("id"),
CreatedAt: UserRedeemCodeDBSchemaField("created_at"), CreatedAt: UserRedeemCodeDBSchemaField("created_at"),
UpdatedAt: UserRedeemCodeDBSchemaField("updated_at"), UpdatedAt: UserRedeemCodeDBSchemaField("updated_at"),
DeletedAt: UserRedeemCodeDBSchemaField("deleted_at"), DeletedAt: UserRedeemCodeDBSchemaField("deleted_at"),
Uid: UserRedeemCodeDBSchemaField("uid"), Uid: UserRedeemCodeDBSchemaField("uid"),
Status: UserRedeemCodeDBSchemaField("status"), Status: UserRedeemCodeDBSchemaField("status"),
SerialCode: UserRedeemCodeDBSchemaField("serial_code"), StoreId: UserRedeemCodeDBSchemaField("store_id"),
CodeType: UserRedeemCodeDBSchemaField("code_type"), SerialCode: UserRedeemCodeDBSchemaField("serial_code"),
ConvertTime: UserRedeemCodeDBSchemaField("convert_time"), CodeType: UserRedeemCodeDBSchemaField("code_type"),
ConvertTime: UserRedeemCodeDBSchemaField("convert_time"),
ActivityType: UserRedeemCodeDBSchemaField("activity_type"),
} }
// Update updates UserRedeemCode fields by primary key // Update updates UserRedeemCode fields by primary key
// nolint: dupl // nolint: dupl
func (o *UserRedeemCode) Update(db *gorm.DB, fields ...UserRedeemCodeDBSchemaField) error { func (o *UserRedeemCode) Update(db *gorm.DB, fields ...UserRedeemCodeDBSchemaField) error {
dbNameToFieldName := map[string]interface{}{ dbNameToFieldName := map[string]interface{}{
"id": o.ID, "id": o.ID,
"created_at": o.CreatedAt, "created_at": o.CreatedAt,
"updated_at": o.UpdatedAt, "updated_at": o.UpdatedAt,
"deleted_at": o.DeletedAt, "deleted_at": o.DeletedAt,
"uid": o.Uid, "uid": o.Uid,
"status": o.Status, "status": o.Status,
"serial_code": o.SerialCode, "store_id": o.StoreId,
"code_type": o.CodeType, "serial_code": o.SerialCode,
"convert_time": o.ConvertTime, "code_type": o.CodeType,
"convert_time": o.ConvertTime,
"activity_type": o.ActivityType,
} }
u := map[string]interface{}{} u := map[string]interface{}{}
for _, f := range fields { for _, f := range fields {

View File

@ -6093,6 +6093,74 @@ func (qs UserQuerySet) One(ret *User) error {
return qs.db.First(ret).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 // OpenMemberTimeEq is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs UserQuerySet) OpenMemberTimeEq(openMemberTime time.Time) UserQuerySet { 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")) 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 // OrderAscByOpenMemberTime is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs UserQuerySet) OrderAscByOpenMemberTime() UserQuerySet { func (qs UserQuerySet) OrderAscByOpenMemberTime() UserQuerySet {
@ -6387,6 +6461,12 @@ func (qs UserQuerySet) OrderDescByMemberLevel() UserQuerySet {
return qs.w(qs.db.Order("member_level DESC")) 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 // OrderDescByOpenMemberTime is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs UserQuerySet) OrderDescByOpenMemberTime() UserQuerySet { func (qs UserQuerySet) OrderDescByOpenMemberTime() UserQuerySet {
@ -7294,6 +7374,13 @@ func (u UserUpdater) SetMemberLevel(memberLevel uint32) UserUpdater {
return u 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 // SetOpenMemberTime is an autogenerated method
// nolint: dupl // nolint: dupl
func (u UserUpdater) SetOpenMemberTime(openMemberTime time.Time) UserUpdater { func (u UserUpdater) SetOpenMemberTime(openMemberTime time.Time) UserUpdater {
@ -7413,98 +7500,101 @@ func (f UserDBSchemaField) String() string {
// UserDBSchema stores db field names of User // UserDBSchema stores db field names of User
var UserDBSchema = struct { var UserDBSchema = struct {
ID UserDBSchemaField ID UserDBSchemaField
CreatedAt UserDBSchemaField CreatedAt UserDBSchemaField
UpdatedAt UserDBSchemaField UpdatedAt UserDBSchemaField
DeletedAt UserDBSchemaField DeletedAt UserDBSchemaField
Uid UserDBSchemaField Uid UserDBSchemaField
MemberLevel UserDBSchemaField MemberLevel UserDBSchemaField
MemberExpire UserDBSchemaField MemberExpire UserDBSchemaField
OpenMemberTime UserDBSchemaField OpenMemberTime UserDBSchemaField
Bond UserDBSchemaField Bond UserDBSchemaField
WxName UserDBSchemaField WxName UserDBSchemaField
WxAvatar UserDBSchemaField WxAvatar UserDBSchemaField
WxOpenID UserDBSchemaField WxOpenID UserDBSchemaField
AppOpenID UserDBSchemaField AppOpenID UserDBSchemaField
WxUnionID UserDBSchemaField WxUnionID UserDBSchemaField
Tel UserDBSchemaField Tel UserDBSchemaField
Gender UserDBSchemaField Gender UserDBSchemaField
City UserDBSchemaField City UserDBSchemaField
Province UserDBSchemaField Province UserDBSchemaField
Country UserDBSchemaField Country UserDBSchemaField
Deposit UserDBSchemaField Deposit UserDBSchemaField
UserType UserDBSchemaField UserType UserDBSchemaField
StoreId UserDBSchemaField OpenMemberChannel UserDBSchemaField
InviteCodeUrl UserDBSchemaField StoreId UserDBSchemaField
LastLoginAt UserDBSchemaField InviteCodeUrl UserDBSchemaField
IP UserDBSchemaField LastLoginAt UserDBSchemaField
InBlack UserDBSchemaField IP UserDBSchemaField
StoreType UserDBSchemaField InBlack UserDBSchemaField
Version UserDBSchemaField StoreType UserDBSchemaField
Version UserDBSchemaField
}{ }{
ID: UserDBSchemaField("id"), ID: UserDBSchemaField("id"),
CreatedAt: UserDBSchemaField("created_at"), CreatedAt: UserDBSchemaField("created_at"),
UpdatedAt: UserDBSchemaField("updated_at"), UpdatedAt: UserDBSchemaField("updated_at"),
DeletedAt: UserDBSchemaField("deleted_at"), DeletedAt: UserDBSchemaField("deleted_at"),
Uid: UserDBSchemaField("uid"), Uid: UserDBSchemaField("uid"),
MemberLevel: UserDBSchemaField("member_level"), MemberLevel: UserDBSchemaField("member_level"),
MemberExpire: UserDBSchemaField("member_expire"), MemberExpire: UserDBSchemaField("member_expire"),
OpenMemberTime: UserDBSchemaField("open_member_time"), OpenMemberTime: UserDBSchemaField("open_member_time"),
Bond: UserDBSchemaField("bond"), Bond: UserDBSchemaField("bond"),
WxName: UserDBSchemaField("wx_name"), WxName: UserDBSchemaField("wx_name"),
WxAvatar: UserDBSchemaField("wx_avatar"), WxAvatar: UserDBSchemaField("wx_avatar"),
WxOpenID: UserDBSchemaField("wx_open_id"), WxOpenID: UserDBSchemaField("wx_open_id"),
AppOpenID: UserDBSchemaField("app_open_id"), AppOpenID: UserDBSchemaField("app_open_id"),
WxUnionID: UserDBSchemaField("wx_union_id"), WxUnionID: UserDBSchemaField("wx_union_id"),
Tel: UserDBSchemaField("tel"), Tel: UserDBSchemaField("tel"),
Gender: UserDBSchemaField("gender"), Gender: UserDBSchemaField("gender"),
City: UserDBSchemaField("city"), City: UserDBSchemaField("city"),
Province: UserDBSchemaField("province"), Province: UserDBSchemaField("province"),
Country: UserDBSchemaField("country"), Country: UserDBSchemaField("country"),
Deposit: UserDBSchemaField("deposit"), Deposit: UserDBSchemaField("deposit"),
UserType: UserDBSchemaField("user_type"), UserType: UserDBSchemaField("user_type"),
StoreId: UserDBSchemaField("store_id"), OpenMemberChannel: UserDBSchemaField("open_member_channel"),
InviteCodeUrl: UserDBSchemaField("invite_code_url"), StoreId: UserDBSchemaField("store_id"),
LastLoginAt: UserDBSchemaField("last_login_at"), InviteCodeUrl: UserDBSchemaField("invite_code_url"),
IP: UserDBSchemaField("ip"), LastLoginAt: UserDBSchemaField("last_login_at"),
InBlack: UserDBSchemaField("in_black"), IP: UserDBSchemaField("ip"),
StoreType: UserDBSchemaField("store_type"), InBlack: UserDBSchemaField("in_black"),
Version: UserDBSchemaField("version"), StoreType: UserDBSchemaField("store_type"),
Version: UserDBSchemaField("version"),
} }
// Update updates User fields by primary key // Update updates User fields by primary key
// nolint: dupl // nolint: dupl
func (o *User) Update(db *gorm.DB, fields ...UserDBSchemaField) error { func (o *User) Update(db *gorm.DB, fields ...UserDBSchemaField) error {
dbNameToFieldName := map[string]interface{}{ dbNameToFieldName := map[string]interface{}{
"id": o.ID, "id": o.ID,
"created_at": o.CreatedAt, "created_at": o.CreatedAt,
"updated_at": o.UpdatedAt, "updated_at": o.UpdatedAt,
"deleted_at": o.DeletedAt, "deleted_at": o.DeletedAt,
"uid": o.Uid, "uid": o.Uid,
"member_level": o.MemberLevel, "member_level": o.MemberLevel,
"member_expire": o.MemberExpire, "member_expire": o.MemberExpire,
"open_member_time": o.OpenMemberTime, "open_member_time": o.OpenMemberTime,
"bond": o.Bond, "bond": o.Bond,
"wx_name": o.WxName, "wx_name": o.WxName,
"wx_avatar": o.WxAvatar, "wx_avatar": o.WxAvatar,
"wx_open_id": o.WxOpenID, "wx_open_id": o.WxOpenID,
"app_open_id": o.AppOpenID, "app_open_id": o.AppOpenID,
"wx_union_id": o.WxUnionID, "wx_union_id": o.WxUnionID,
"tel": o.Tel, "tel": o.Tel,
"gender": o.Gender, "gender": o.Gender,
"city": o.City, "city": o.City,
"province": o.Province, "province": o.Province,
"country": o.Country, "country": o.Country,
"deposit": o.Deposit, "deposit": o.Deposit,
"user_type": o.UserType, "user_type": o.UserType,
"store_id": o.StoreId, "open_member_channel": o.OpenMemberChannel,
"invite_code_url": o.InviteCodeUrl, "store_id": o.StoreId,
"last_login_at": o.LastLoginAt, "invite_code_url": o.InviteCodeUrl,
"ip": o.IP, "last_login_at": o.LastLoginAt,
"in_black": o.InBlack, "ip": o.IP,
"store_type": o.StoreType, "in_black": o.InBlack,
"version": o.Version, "store_type": o.StoreType,
"version": o.Version,
} }
u := map[string]interface{}{} u := map[string]interface{}{}
for _, f := range fields { for _, f := range fields {

View File

@ -423,6 +423,7 @@ func TestLeng(t *testing.T) {
// B61E1104C989D4E2F453EB6253A06A3721094DDF76FF468EB679CEA046403D3F7B963A8FBED0CB70C1EB9B17BB684DAFB700F966676D // B61E1104C989D4E2F453EB6253A06A3721094DDF76FF468EB679CEA046403D3F7B963A8FBED0CB70C1EB9B17BB684DAFB700F966676D
} }
// 生成会员兑换码
func TestRedeemCodeCreate(t *testing.T) { func TestRedeemCodeCreate(t *testing.T) {
RedeemCodeCreate() RedeemCodeCreate()
} }
@ -431,7 +432,7 @@ func RedeemCodeCreate() {
//InitTestDB() //InitTestDB()
InitDBProd() InitDBProd()
for i := 0; i < 1000; i++ { for i := 0; i < 7; i++ {
redeem := NewRedeemCode() redeem := NewRedeemCode()
fmt.Println("redeemCode:", redeem) fmt.Println("redeemCode:", redeem)
@ -442,12 +443,13 @@ func RedeemCodeCreate() {
if !IsRedeemCodeExist(redeem) { if !IsRedeemCodeExist(redeem) {
redeemCode := &RedeemCode{ redeemCode := &RedeemCode{
SerialCode: redeem, SerialCode: redeem,
CodeType: CodeTypeMemberCard30, CodeType: CodeTypeMemberGoldMember,
Status: RedeemCodeStatusStock, Status: RedeemCodeStatusStock,
CodeSecret: secretCode, CodeSecret: secretCode,
EffectiveTime: time.Now(), EffectiveTime: time.Now(),
ExpirationTime: time.Time{}, ExpirationTime: time.Now().AddDate(1, 0, 0),
} }
//err := DBDev.Create(redeemCode).Error
err := DBProd.Create(redeemCode).Error err := DBProd.Create(redeemCode).Error
if err != nil { if err != nil {
fmt.Println("err:", err) fmt.Println("err:", err)
@ -462,6 +464,7 @@ func RedeemCodeCreate() {
func IsRedeemCodeExist(code string) bool { func IsRedeemCodeExist(code string) bool {
var isExist uint32 var isExist uint32
sql := fmt.Sprintf("SELECT EXISTS (SELECT * FROM redeem_code WHERE serial_code = '%s') AS code_exsit;", code) 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 := DBProd.Raw(sql).Row().Scan(&isExist)
if err != nil { if err != nil {
fmt.Println("err:", err) fmt.Println("err:", err)

View File

@ -15,7 +15,10 @@ const (
RedeemCodeStatusUsed = "used" // 已使用 RedeemCodeStatusUsed = "used" // 已使用
) )
const ( 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 ( const (
@ -41,6 +44,7 @@ type RedeemCode struct {
SerialCode string `json:"serial_code" gorm:"index;comment:'兑换编码'"` // 兑换编码 SerialCode string `json:"serial_code" gorm:"index;comment:'兑换编码'"` // 兑换编码
CodeType string `json:"code_type"` // memberCard CodeType string `json:"code_type"` // memberCard
Status string `json:"status" gorm:"index;comment:'兑换状态'"` // stocking user-hold used Status string `json:"status" gorm:"index;comment:'兑换状态'"` // stocking user-hold used
StoreId uint32 `json:"store_id" gorm:"index"` // 门店id
CodeSecret string `json:"code_secret"` // 兑换密码 CodeSecret string `json:"code_secret"` // 兑换密码
EffectiveTime time.Time `json:"effective_time"` // 生效时间 EffectiveTime time.Time `json:"effective_time"` // 生效时间
ExpirationTime time.Time `json:"expiration_time"` // 过期时间 ExpirationTime time.Time `json:"expiration_time"` // 过期时间
@ -51,6 +55,7 @@ type UserRedeemCode struct {
Model Model
Uid uint32 `json:"uid" gorm:"index;comment:'用户id'"` Uid uint32 `json:"uid" gorm:"index;comment:'用户id'"`
Status string `json:"status" gorm:"index;comment:'兑换状态'"` // user-hold used 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:'兑换编码'"` // 兑换编码 SerialCode string `json:"serial_code" gorm:"index;comment:'兑换编码'"` // 兑换编码
CodeType string `json:"code_type"` // memberCard CodeType string `json:"code_type"` // memberCard
ConvertTime time.Time `json:"convert_time"` // 绑定时间 ConvertTime time.Time `json:"convert_time"` // 绑定时间
@ -123,6 +128,10 @@ func UserRedeemCodeConvert(uid uint32, serialCode string) error {
begin.Rollback() begin.Rollback()
return err 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(). updateNum, err := NewUserRedeemCodeQuerySet(begin).UidEq(uid).SerialCodeEq(serialCode).GetUpdater().
SetStatus(UserRedeemCodeStatusUsed).SetConvertTime(time.Now()).UpdateNum() SetStatus(UserRedeemCodeStatusUsed).SetConvertTime(time.Now()).UpdateNum()
if err != nil { if err != nil {
@ -137,15 +146,45 @@ func UserRedeemCodeConvert(uid uint32, serialCode string) error {
} }
user := GetUserByUid(uid) user := GetUserByUid(uid)
qs := NewUserQuerySet(begin).UidEq(uid).GetUpdater() qs := NewUserQuerySet(begin).UidEq(uid).GetUpdater()
if user.MemberLevel == 1 { if user.MemberLevel != 1 && user.MemberLevel != 3 &&
qs = qs.SetMemberLevel(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()) { addDates := 0
qs = qs.SetMemberExpire(user.MemberExpire.AddDate(0, 0, 30)) memberLevel := uint32(0)
} else { switch userRedeem.CodeType {
qs = qs.SetMemberExpire(time.Now().AddDate(0, 0, 30)) 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() userNum, err := qs.UpdateNum()
if err != nil { if err != nil {
logger.Error("user redeem code err:", err) logger.Error("user redeem code err:", err)

View File

@ -15,31 +15,32 @@ import (
type User struct { type User struct {
Model Model
Uid uint32 `json:"uid" gorm:"column:uid;unique_index"` Uid uint32 `json:"uid" gorm:"column:uid;unique_index"`
MemberLevel uint32 `json:"member_level"` // 会员等级 1-用户 2-会员 MemberLevel uint32 `json:"member_level"` // 会员等级 1-用户 2-会员
MemberExpire time.Time `json:"member_expire"` // 会员到期时间 MemberExpire time.Time `json:"member_expire"` // 会员到期时间
OpenMemberTime time.Time `json:"open_member_time"` // 开通会员 OpenMemberTime time.Time `json:"open_member_time"` // 开通会员
Bond uint32 `json:"bond"` // 保证金 Bond uint32 `json:"bond"` // 保证金
WxName string `json:"wx_name"` // 昵称 WxName string `json:"wx_name"` // 昵称
WxAvatar string `json:"wx_avatar"` // 头像 WxAvatar string `json:"wx_avatar"` // 头像
WxOpenID string `json:"wx_open_id"` WxOpenID string `json:"wx_open_id"`
AppOpenID string `json:"app_open_id"` AppOpenID string `json:"app_open_id"`
WxUnionID string `json:"wx_union_id"` WxUnionID string `json:"wx_union_id"`
Tel string `json:"tel"` // 电话 Tel string `json:"tel"` // 电话
Gender uint8 `json:"gender"` // 性别 Gender uint8 `json:"gender"` // 性别
City string `json:"city"` // 城市 City string `json:"city"` // 城市
Province string `json:"province"` // 省 Province string `json:"province"` // 省
Country string `json:"country"` // 市 Country string `json:"country"` // 市
Deposit uint32 `json:"deposit"` // Deposit uint32 `json:"deposit"` // 押金
UserType uint8 `json:"user_type"` // 用户类型 1-普通用户 2-店员 UserType uint8 `json:"user_type"` // 用户类型 1-普通用户 2-店员
StoreId uint64 `json:"store_id"` // 门店id OpenMemberChannel string `json:"open_member_channel" ` // 开通会员渠道 -门店推广 -用户邀请 -兑换码
InviteCodeUrl string `json:"invite_code_url"` // 分享二维码 StoreId uint64 `json:"store_id"` // 门店id
LastLoginAt time.Time `json:"last_login_at"` // 最近登录时间 InviteCodeUrl string `json:"invite_code_url"` // 分享二维码
IP string `json:"-" gorm:"type:varchar(60)"` // ip LastLoginAt time.Time `json:"last_login_at"` // 最近登录时间
InBlack bool `json:"in_black"` // 是否在黑名单 IP string `json:"-" gorm:"type:varchar(60)"` // ip
StoreType uint8 `json:"store_type"` // 1-订单门店 InBlack bool `json:"in_black"` // 是否在黑名单
Version uint32 `json:"-"` StoreType uint8 `json:"store_type"` // 1-订单门店
UserVm *UserVm `json:"user_vm" gorm:"-"` // Version uint32 `json:"-"`
UserVm *UserVm `json:"user_vm" gorm:"-"` //
} }
func (o *User) TableName() string { func (o *User) TableName() string {
@ -54,7 +55,7 @@ const (
const ( const (
MemberLevelConsumer = 1 // 普通用户 MemberLevelConsumer = 1 // 普通用户
MemberLevelGold = 2 // 黄金会员 MemberLevelGold = 2 // 黄金会员
MemberLevelPeriod = 3 MemberLevelPeriod = 3 // 短期会员
MemberLevelPlatinum = 4 // 白金会员 MemberLevelPlatinum = 4 // 白金会员
MemberLevelBlackGold = 5 // 黑金会员 MemberLevelBlackGold = 5 // 黑金会员
) )
@ -63,6 +64,11 @@ const (
DateTimeFormat = "2006-01-02" DateTimeFormat = "2006-01-02"
TimeFormat = "2006-01-02 15:04:05" TimeFormat = "2006-01-02 15:04:05"
) )
const (
OpenMemberChannelStorePromotion = "store_promotion"
OpenMemberChannelUserInvite = "user_invite"
OpenMemberChannelRedeemCode = "redeem_code"
)
// gen:qs // gen:qs
type UserInvite struct { type UserInvite struct {