package models import ( "go.mongodb.org/mongo-driver/bson/primitive" "time" ) type PromoCode struct { ID primitive.ObjectID `json:"id" bson:"_id"` Codeword string `json:"codeword" bson:"codeword"` // то, что будет вводить пользователь, чтобы получить плюшки Description string `json:"description" bson:"description"` // описание, необходимое менеджеру в админке Greetings string `json:"greetings" bson:"greetings"` // текст, выдаваемый пользователю в ответ на активацию промокода DueTo int64 `json:"dueTo" bson:"dueTo"` // таймштамп времени окончания работы активации промокода ActivationCount int64 `json:"activationCount" bson:"activationCount"` // предел количества активаций промокода Bonus struct { Privilege struct { PrivilegeID string `json:"privilegeID" bson:"privilegeID"` // айдишник привилегии, которая будет выдаваться Amount uint64 `json:"amount" bson:"amount"` // количество } `json:"privilege" bson:"privilege"` Discount struct { Layer int `json:"layer" bson:"layer"` // 1|2 Factor float64 `json:"factor" bson:"factor"` // процент скидки, вернее множитель, при котором достигается этот процент скидки Target string `json:"target" bson:"target"` // PrivilegeID или ServiceKey в зависимости от слоя Threshold int64 `json:"threshold" bson:"threshold"` // граничное значение, при пересечении которого применяется эта скидка } `json:"discount" bson:"discount"` } `json:"bonus" bson:"bonus"` Outdated bool `json:"outdated" bson:"outdated"` OffLimit bool `json:"offLimit" bson:"offLimit"` Delete bool `json:"delete" bson:"delete"` CreatedAt time.Time `json:"createdAt" bson:"createdAt"` } type ReqEditPromoCode struct { ID string `json:"id" bson:"_id"` //айдишник промокода, который обновляем Description *string `json:"description,omitempty" bson:"description"` // описание, необходимое менеджеру в админке Greetings *string `json:"greetings,omitempty" bson:"greetings"` // текст, выдаваемый пользователю в ответ на активацию промокода DueTo *int64 `json:"dueTo,omitempty" bson:"dueTo"` // таймштамп времени окончания работы активации промокода ActivationCount *int64 `json:"activationCount,omitempty" bson:"activationCount"` // предел количества активаций промокода Delete *bool `json:"delete,omitempty" bson:"delete"` }