feat: implement coupon management and receive flow
This commit is contained in:
339
backend/pkg/consts/coupon.gen.go
Normal file
339
backend/pkg/consts/coupon.gen.go
Normal file
@@ -0,0 +1,339 @@
|
||||
// Code generated by go-enum DO NOT EDIT.
|
||||
// Version: -
|
||||
// Revision: -
|
||||
// Build Date: -
|
||||
// Built By: -
|
||||
|
||||
package consts
|
||||
|
||||
import (
|
||||
"database/sql/driver"
|
||||
"errors"
|
||||
"fmt"
|
||||
"strings"
|
||||
)
|
||||
|
||||
const (
|
||||
// CouponTypeFixAmount is a CouponType of type fix_amount.
|
||||
CouponTypeFixAmount CouponType = "fix_amount"
|
||||
// CouponTypeDiscount is a CouponType of type discount.
|
||||
CouponTypeDiscount CouponType = "discount"
|
||||
)
|
||||
|
||||
var ErrInvalidCouponType = fmt.Errorf("not a valid CouponType, try [%s]", strings.Join(_CouponTypeNames, ", "))
|
||||
|
||||
var _CouponTypeNames = []string{
|
||||
string(CouponTypeFixAmount),
|
||||
string(CouponTypeDiscount),
|
||||
}
|
||||
|
||||
// CouponTypeNames returns a list of possible string values of CouponType.
|
||||
func CouponTypeNames() []string {
|
||||
tmp := make([]string, len(_CouponTypeNames))
|
||||
copy(tmp, _CouponTypeNames)
|
||||
return tmp
|
||||
}
|
||||
|
||||
// CouponTypeValues returns a list of the values for CouponType
|
||||
func CouponTypeValues() []CouponType {
|
||||
return []CouponType{
|
||||
CouponTypeFixAmount,
|
||||
CouponTypeDiscount,
|
||||
}
|
||||
}
|
||||
|
||||
// String implements the Stringer interface.
|
||||
func (x CouponType) String() string {
|
||||
return string(x)
|
||||
}
|
||||
|
||||
// IsValid provides a quick way to determine if the typed value is
|
||||
// part of the allowed enumerated values
|
||||
func (x CouponType) IsValid() bool {
|
||||
_, err := ParseCouponType(string(x))
|
||||
return err == nil
|
||||
}
|
||||
|
||||
var _CouponTypeValue = map[string]CouponType{
|
||||
"fix_amount": CouponTypeFixAmount,
|
||||
"discount": CouponTypeDiscount,
|
||||
}
|
||||
|
||||
// ParseCouponType attempts to convert a string to a CouponType.
|
||||
func ParseCouponType(name string) (CouponType, error) {
|
||||
if x, ok := _CouponTypeValue[name]; ok {
|
||||
return x, nil
|
||||
}
|
||||
return CouponType(""), fmt.Errorf("%s is %w", name, ErrInvalidCouponType)
|
||||
}
|
||||
|
||||
var errCouponTypeNilPtr = errors.New("value pointer is nil") // one per type for package clashes
|
||||
|
||||
// Scan implements the Scanner interface.
|
||||
func (x *CouponType) Scan(value interface{}) (err error) {
|
||||
if value == nil {
|
||||
*x = CouponType("")
|
||||
return
|
||||
}
|
||||
|
||||
// A wider range of scannable types.
|
||||
// driver.Value values at the top of the list for expediency
|
||||
switch v := value.(type) {
|
||||
case string:
|
||||
*x, err = ParseCouponType(v)
|
||||
case []byte:
|
||||
*x, err = ParseCouponType(string(v))
|
||||
case CouponType:
|
||||
*x = v
|
||||
case *CouponType:
|
||||
if v == nil {
|
||||
return errCouponTypeNilPtr
|
||||
}
|
||||
*x = *v
|
||||
case *string:
|
||||
if v == nil {
|
||||
return errCouponTypeNilPtr
|
||||
}
|
||||
*x, err = ParseCouponType(*v)
|
||||
default:
|
||||
return errors.New("invalid type for CouponType")
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// Value implements the driver Valuer interface.
|
||||
func (x CouponType) Value() (driver.Value, error) {
|
||||
return x.String(), nil
|
||||
}
|
||||
|
||||
// Set implements the Golang flag.Value interface func.
|
||||
func (x *CouponType) Set(val string) error {
|
||||
v, err := ParseCouponType(val)
|
||||
*x = v
|
||||
return err
|
||||
}
|
||||
|
||||
// Get implements the Golang flag.Getter interface func.
|
||||
func (x *CouponType) Get() interface{} {
|
||||
return *x
|
||||
}
|
||||
|
||||
// Type implements the github.com/spf13/pFlag Value interface.
|
||||
func (x *CouponType) Type() string {
|
||||
return "CouponType"
|
||||
}
|
||||
|
||||
type NullCouponType struct {
|
||||
CouponType CouponType
|
||||
Valid bool
|
||||
}
|
||||
|
||||
func NewNullCouponType(val interface{}) (x NullCouponType) {
|
||||
err := x.Scan(val) // yes, we ignore this error, it will just be an invalid value.
|
||||
_ = err // make any errcheck linters happy
|
||||
return
|
||||
}
|
||||
|
||||
// Scan implements the Scanner interface.
|
||||
func (x *NullCouponType) Scan(value interface{}) (err error) {
|
||||
if value == nil {
|
||||
x.CouponType, x.Valid = CouponType(""), false
|
||||
return
|
||||
}
|
||||
|
||||
err = x.CouponType.Scan(value)
|
||||
x.Valid = (err == nil)
|
||||
return
|
||||
}
|
||||
|
||||
// Value implements the driver Valuer interface.
|
||||
func (x NullCouponType) Value() (driver.Value, error) {
|
||||
if !x.Valid {
|
||||
return nil, nil
|
||||
}
|
||||
// driver.Value accepts int64 for int values.
|
||||
return string(x.CouponType), nil
|
||||
}
|
||||
|
||||
type NullCouponTypeStr struct {
|
||||
NullCouponType
|
||||
}
|
||||
|
||||
func NewNullCouponTypeStr(val interface{}) (x NullCouponTypeStr) {
|
||||
x.Scan(val) // yes, we ignore this error, it will just be an invalid value.
|
||||
return
|
||||
}
|
||||
|
||||
// Value implements the driver Valuer interface.
|
||||
func (x NullCouponTypeStr) Value() (driver.Value, error) {
|
||||
if !x.Valid {
|
||||
return nil, nil
|
||||
}
|
||||
return x.CouponType.String(), nil
|
||||
}
|
||||
|
||||
const (
|
||||
// UserCouponStatusUnused is a UserCouponStatus of type unused.
|
||||
UserCouponStatusUnused UserCouponStatus = "unused"
|
||||
// UserCouponStatusUsed is a UserCouponStatus of type used.
|
||||
UserCouponStatusUsed UserCouponStatus = "used"
|
||||
// UserCouponStatusExpired is a UserCouponStatus of type expired.
|
||||
UserCouponStatusExpired UserCouponStatus = "expired"
|
||||
)
|
||||
|
||||
var ErrInvalidUserCouponStatus = fmt.Errorf("not a valid UserCouponStatus, try [%s]", strings.Join(_UserCouponStatusNames, ", "))
|
||||
|
||||
var _UserCouponStatusNames = []string{
|
||||
string(UserCouponStatusUnused),
|
||||
string(UserCouponStatusUsed),
|
||||
string(UserCouponStatusExpired),
|
||||
}
|
||||
|
||||
// UserCouponStatusNames returns a list of possible string values of UserCouponStatus.
|
||||
func UserCouponStatusNames() []string {
|
||||
tmp := make([]string, len(_UserCouponStatusNames))
|
||||
copy(tmp, _UserCouponStatusNames)
|
||||
return tmp
|
||||
}
|
||||
|
||||
// UserCouponStatusValues returns a list of the values for UserCouponStatus
|
||||
func UserCouponStatusValues() []UserCouponStatus {
|
||||
return []UserCouponStatus{
|
||||
UserCouponStatusUnused,
|
||||
UserCouponStatusUsed,
|
||||
UserCouponStatusExpired,
|
||||
}
|
||||
}
|
||||
|
||||
// String implements the Stringer interface.
|
||||
func (x UserCouponStatus) String() string {
|
||||
return string(x)
|
||||
}
|
||||
|
||||
// IsValid provides a quick way to determine if the typed value is
|
||||
// part of the allowed enumerated values
|
||||
func (x UserCouponStatus) IsValid() bool {
|
||||
_, err := ParseUserCouponStatus(string(x))
|
||||
return err == nil
|
||||
}
|
||||
|
||||
var _UserCouponStatusValue = map[string]UserCouponStatus{
|
||||
"unused": UserCouponStatusUnused,
|
||||
"used": UserCouponStatusUsed,
|
||||
"expired": UserCouponStatusExpired,
|
||||
}
|
||||
|
||||
// ParseUserCouponStatus attempts to convert a string to a UserCouponStatus.
|
||||
func ParseUserCouponStatus(name string) (UserCouponStatus, error) {
|
||||
if x, ok := _UserCouponStatusValue[name]; ok {
|
||||
return x, nil
|
||||
}
|
||||
return UserCouponStatus(""), fmt.Errorf("%s is %w", name, ErrInvalidUserCouponStatus)
|
||||
}
|
||||
|
||||
var errUserCouponStatusNilPtr = errors.New("value pointer is nil") // one per type for package clashes
|
||||
|
||||
// Scan implements the Scanner interface.
|
||||
func (x *UserCouponStatus) Scan(value interface{}) (err error) {
|
||||
if value == nil {
|
||||
*x = UserCouponStatus("")
|
||||
return
|
||||
}
|
||||
|
||||
// A wider range of scannable types.
|
||||
// driver.Value values at the top of the list for expediency
|
||||
switch v := value.(type) {
|
||||
case string:
|
||||
*x, err = ParseUserCouponStatus(v)
|
||||
case []byte:
|
||||
*x, err = ParseUserCouponStatus(string(v))
|
||||
case UserCouponStatus:
|
||||
*x = v
|
||||
case *UserCouponStatus:
|
||||
if v == nil {
|
||||
return errUserCouponStatusNilPtr
|
||||
}
|
||||
*x = *v
|
||||
case *string:
|
||||
if v == nil {
|
||||
return errUserCouponStatusNilPtr
|
||||
}
|
||||
*x, err = ParseUserCouponStatus(*v)
|
||||
default:
|
||||
return errors.New("invalid type for UserCouponStatus")
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// Value implements the driver Valuer interface.
|
||||
func (x UserCouponStatus) Value() (driver.Value, error) {
|
||||
return x.String(), nil
|
||||
}
|
||||
|
||||
// Set implements the Golang flag.Value interface func.
|
||||
func (x *UserCouponStatus) Set(val string) error {
|
||||
v, err := ParseUserCouponStatus(val)
|
||||
*x = v
|
||||
return err
|
||||
}
|
||||
|
||||
// Get implements the Golang flag.Getter interface func.
|
||||
func (x *UserCouponStatus) Get() interface{} {
|
||||
return *x
|
||||
}
|
||||
|
||||
// Type implements the github.com/spf13/pFlag Value interface.
|
||||
func (x *UserCouponStatus) Type() string {
|
||||
return "UserCouponStatus"
|
||||
}
|
||||
|
||||
type NullUserCouponStatus struct {
|
||||
UserCouponStatus UserCouponStatus
|
||||
Valid bool
|
||||
}
|
||||
|
||||
func NewNullUserCouponStatus(val interface{}) (x NullUserCouponStatus) {
|
||||
err := x.Scan(val) // yes, we ignore this error, it will just be an invalid value.
|
||||
_ = err // make any errcheck linters happy
|
||||
return
|
||||
}
|
||||
|
||||
// Scan implements the Scanner interface.
|
||||
func (x *NullUserCouponStatus) Scan(value interface{}) (err error) {
|
||||
if value == nil {
|
||||
x.UserCouponStatus, x.Valid = UserCouponStatus(""), false
|
||||
return
|
||||
}
|
||||
|
||||
err = x.UserCouponStatus.Scan(value)
|
||||
x.Valid = (err == nil)
|
||||
return
|
||||
}
|
||||
|
||||
// Value implements the driver Valuer interface.
|
||||
func (x NullUserCouponStatus) Value() (driver.Value, error) {
|
||||
if !x.Valid {
|
||||
return nil, nil
|
||||
}
|
||||
// driver.Value accepts int64 for int values.
|
||||
return string(x.UserCouponStatus), nil
|
||||
}
|
||||
|
||||
type NullUserCouponStatusStr struct {
|
||||
NullUserCouponStatus
|
||||
}
|
||||
|
||||
func NewNullUserCouponStatusStr(val interface{}) (x NullUserCouponStatusStr) {
|
||||
x.Scan(val) // yes, we ignore this error, it will just be an invalid value.
|
||||
return
|
||||
}
|
||||
|
||||
// Value implements the driver Valuer interface.
|
||||
func (x NullUserCouponStatusStr) Value() (driver.Value, error) {
|
||||
if !x.Valid {
|
||||
return nil, nil
|
||||
}
|
||||
return x.UserCouponStatus.String(), nil
|
||||
}
|
||||
57
backend/pkg/consts/coupon.go
Normal file
57
backend/pkg/consts/coupon.go
Normal file
@@ -0,0 +1,57 @@
|
||||
package consts
|
||||
|
||||
import "quyun/v2/app/requests"
|
||||
|
||||
// swagger:enum CouponType
|
||||
// ENUM( fix_amount, discount )
|
||||
type CouponType string
|
||||
|
||||
// Description returns the Chinese label for the specific enum value.
|
||||
func (t CouponType) Description() string {
|
||||
switch t {
|
||||
case CouponTypeFixAmount:
|
||||
return "满减"
|
||||
case CouponTypeDiscount:
|
||||
return "折扣"
|
||||
default:
|
||||
return "未知类型"
|
||||
}
|
||||
}
|
||||
|
||||
// CouponTypeItems returns the KV list for FE dropdowns.
|
||||
func CouponTypeItems() []requests.KV {
|
||||
values := CouponTypeValues()
|
||||
items := make([]requests.KV, 0, len(values))
|
||||
for _, v := range values {
|
||||
items = append(items, requests.NewKV(string(v), v.Description()))
|
||||
}
|
||||
return items
|
||||
}
|
||||
|
||||
// swagger:enum UserCouponStatus
|
||||
// ENUM( unused, used, expired )
|
||||
type UserCouponStatus string
|
||||
|
||||
// Description returns the Chinese label for the specific enum value.
|
||||
func (t UserCouponStatus) Description() string {
|
||||
switch t {
|
||||
case UserCouponStatusUnused:
|
||||
return "未使用"
|
||||
case UserCouponStatusUsed:
|
||||
return "已使用"
|
||||
case UserCouponStatusExpired:
|
||||
return "已过期"
|
||||
default:
|
||||
return "未知状态"
|
||||
}
|
||||
}
|
||||
|
||||
// UserCouponStatusItems returns the KV list for FE dropdowns.
|
||||
func UserCouponStatusItems() []requests.KV {
|
||||
values := UserCouponStatusValues()
|
||||
items := make([]requests.KV, 0, len(values))
|
||||
for _, v := range values {
|
||||
items = append(items, requests.NewKV(string(v), v.Description()))
|
||||
}
|
||||
return items
|
||||
}
|
||||
Reference in New Issue
Block a user