promotion

package
v0.0.0-...-33ecd2b Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 20, 2015 License: Apache-2.0 Imports: 2 Imported by: 0

Documentation

Overview

*

  • Copyright 2015 @ z3q.net.
  • name : cash_back
  • author : jarryliu
  • date : -- :
  • description :
  • history :

*

  • Copyright 2015 @ z3q.net.
  • name : cash_back_value
  • author : jarryliu
  • date : -- :
  • description :
  • history :

*

  • Copyright 2015 @ z3q.net.
  • name : flag
  • author : jarryliu
  • date : -- :
  • description :
  • history :

*

  • Copyright 2015 @ z3q.net.
  • name : value_promotion
  • author : jarryliu
  • date : -- :
  • description :
  • history :

Index

Constants

View Source
const (
	// 优惠券
	TypeFlagCoupon = 1 << 0

	// 返现
	TypeFlagCashBack = 1 << 1
)
View Source
const (
	// 应用订单
	ApplyForOrder = 1

	// 应用商品
	ApplyForGoods = 2
)
View Source
const (
	// 返现到账户余额
	BackToBalance = 1

	// 返现直接抵扣订单
	BackUseForOrder = 2
)

Variables

View Source
var (
	ErrCanNotApplied *domain.DomainError = domain.NewDomainError(
		"name_exists", "无法应用此优惠")

	ErrExistsSamePromotionFlag *domain.DomainError = domain.NewDomainError(
		"exists_same_promotion_flag", "已存在相同的促销")

	ErrNoSuchPromotion *domain.DomainError = domain.NewDomainError(
		"no_such_promotion", "促销不存在")

	ErrNoDetailsPromotion *domain.DomainError = domain.NewDomainError(
		"no_details_promotion", "促销信息不完整")
)

Functions

This section is empty.

Types

type ICashBackPromotion

type ICashBackPromotion interface {
	// 获取领域编号
	GetDomainId() int

	// 设置详细的促销信息
	SetDetailsValue(*ValueCashBack) error

	// 获取自定义数据
	GetDataTag() map[string]string
}

返现促销

type ICouponPromotion

type ICouponPromotion interface {
	GetDomainId() int

	// 获取促销内容
	GetDetailsValue() ValueCoupon

	// 设置促销内容
	SetDetailsValue(*ValueCoupon) error

	// 获取绑定
	GetBinds() []ValueCouponBind

	// 获取占用
	GetTakes() []ValueCouponTake

	// 保存
	Save() (id int, err error)

	// 获取优惠券描述
	GetDescribe() string

	// 获取优惠的金额
	GetCouponFee(orderFee float32) float32

	// 是否可用,传递会员及订单金额
	// error返回不适用的详细信息
	CanUse(member.IMember, float32) (bool, error)

	// 是否允许占用
	CanTake() bool

	// 获取占用
	GetTake(memberId int) (*ValueCouponTake, error)

	//占用
	Take(memberId int) error

	// 应用到订单
	ApplyTake(couponTakeId int) error

	// 绑定
	Bind(memberId int) error

	//获取绑定
	GetBind(memberId int) (*ValueCouponBind, error)

	//绑定
	Binds(memberIds []string) error

	//使用优惠券
	UseCoupon(couponBindId int) error
}

优惠券促销

type IPromotion

type IPromotion interface {
	// 获取聚合根编号
	GetAggregateRootId() int

	// 获取值
	GetValue() *ValuePromotion

	// 获取相关的值
	GetRelationValue() interface{}

	// 设置值
	SetValue(*ValuePromotion) error

	// 应用类型
	ApplyFor() int

	// 促销类型
	Type() int

	// 获取类型名称
	TypeName() string

	// 保存
	Save() (int, error)
}

促销聚合根

type IPromotionRep

type IPromotionRep interface {
	// 获取促销
	GetPromotion(id int) IPromotion

	// 获取促销
	CreatePromotion(v *ValuePromotion) IPromotion

	// 获取促销
	GetValuePromotion(id int) *ValuePromotion

	// 保存促销
	SaveValuePromotion(*ValuePromotion) (int, error)

	// 删除促销
	DeletePromotion(id int) error

	// 保存返现促销
	SaveValueCashBack(v *ValueCashBack, create bool) (int, error)

	// 获取返现促销
	GetValueCashBack(int) *ValueCashBack

	// 删除现金返现促销
	DeleteValueCashBack(id int) error

	// 获取商品的促销编号
	GetGoodsPromotionId(goodsId int, promFlag int) int

	// 获取商品可用的促销
	GetPromotionOfGoods(goodsId int) []*ValuePromotion

	// 获取商户订单可用的促销
	GetPromotionOfPartnerOrder(partnerId int) []*ValuePromotion

	// 获取优惠券
	GetValueCoupon(id int) *ValueCoupon

	// 保存优惠券值
	SaveValueCoupon(v *ValueCoupon, isCreate bool) (id int, err error)

	// 删除优惠券
	DeleteValueCoupon(id int) error

	GetCouponTake(couponId, takeId int) *ValueCouponTake

	SaveCouponTake(*ValueCouponTake) error

	GetCouponTakes(couponId int) []ValueCouponTake

	GetCouponBind(couponId, bindId int) *ValueCouponBind

	SaveCouponBind(*ValueCouponBind) error

	GetCouponBinds(couponId int) []ValueCouponBind

	// 根据优惠券代码获取优惠券
	GetValueCouponByCode(partnerId int, couponCode string) *ValueCoupon

	// 根据代码获取优惠券
	GetCouponByCode(partnerId int, code string) IPromotion

	// 获取会员的优惠券绑定
	GetCouponBindByMemberId(couponId, memberId int) (*ValueCouponBind, error)

	// 获取会员的优惠券占用
	GetCouponTakeByMemberId(couponId, memberId int) (*ValueCouponTake, error)
}

type ValueCashBack

type ValueCashBack struct {
	// 编号
	Id int `db:"id" pk:"yes"`

	// 最低金额要求
	MinFee int `db:"min_fee"`

	// 返还金额
	BackFee int `db:"back_fee"`

	// 返还方式,1:充值到余额 2:直接抵扣订单
	BackType int `db:"back_type"`

	// 自定义数据,用于分析处理自定义的数据
	DataTag string `db:"data_tag"`
}

type ValueCoupon

type ValueCoupon struct {
	// 优惠券编号
	Id int `db:"id" pk:"yes"`

	//优惠码
	Code string `db:"code"`

	// 优惠码可用数量
	Amount int `db:"amount"`

	// 优惠码数量
	TotalAmount int `db:"total_amount"`

	//优惠金额
	Fee int `db:"fee"`

	//赠送积分
	Integral int `db:"integral"`

	//订单折扣(不打折为100)
	Discount int `db:"discount"`

	//等级限制
	MinLevel int `db:"min_level"`

	//订单金额限制
	MinFee int `db:"min_fee"`

	BeginTime int64 `db:"begin_time"`
	OverTime  int64 `db:"over_time"`

	//是否需要绑定。反之可以直接使用
	NeedBind int `db:"need_bind"`

	CreateTime int64 `db:"create_time"`
}

type ValueCouponBind

type ValueCouponBind struct {
	Id int `db:"id" auto:"yes" pk:"yes"`

	//会员编号
	MemberId int `db:"member_id"`

	//优惠券编号
	CouponId int `db:"coupon_id"`

	//绑定时间
	BindTime int64 `db:"bind_time"`

	//是否使用
	IsUsed int `db:"is_used"`

	//使用时间
	UseTime int64 `db:"use_time"`
}

优惠券绑定

type ValueCouponTake

type ValueCouponTake struct {
	Id int `db:"id" auto:"yes" pk:"yes"`

	//会员编号
	MemberId int `db:"member_id"`

	//优惠券编号
	CouponId int `db:"coupon_id"`

	//占用时间
	TakeTime int64 `db:"take_time"`

	//释放时间,超过该时间,优惠券释放
	ExtraTime int64 `db:"extra_time"`

	//是否应用到订单
	IsApply int `db:"is_apply"`

	//更新时间
	ApplyTime int64 `db:"apply_time"`
}

type ValuePromotion

type ValuePromotion struct {
	// 促销编号
	Id int `db:"id" pk:"yes" auto:"yes"`

	// 商户编号
	PartnerId int `db:"partner_id"`

	// 促销简称
	ShortName string `db:"short_name"`

	// 促销描述
	Description string `db:"description"`

	// 类型位值
	TypeFlag int `db:"type_flag"`

	// 商品编号(为0则应用订单)
	GoodsId int `db:"goods_id"`

	// 是否启用
	Enabled int `db:"enabled"`

	// 修改时间
	UpdateTime int64 `db:"update_time"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL