shopping

package
v0.0.0-...-0eb9a37 Latest Latest
Warning

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

Go to latest
Published: May 19, 2015 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Overview

*

  • Copyright 2014 @ S1N1 Team.
  • name :
  • author : jarryliu
  • date : 2014-02-05 07:58
  • description :
  • history :

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrEmptyShoppingCart *domain.DomainError = domain.NewDomainError(
		"empty_shopping_cart", "购物车没有商品")

	ErrCartBuyerBinded *domain.DomainError = domain.NewDomainError(
		"cart_buyer_binded ", "购物车已绑定")

	ErrDisallowBindForCart *domain.DomainError = domain.NewDomainError(
		"cart_disallow_bind ", "无法为购物车绑定订单")
)

Functions

This section is empty.

Types

type ICart

type ICart interface {
	GetDomainId() int

	// 获取购物车值
	GetValue() ValueCart

	// 结算数据持久化
	SettlePersist(shopId, paymentOpt, deliverOpt, deliverId int) error

	// 获取结算数据
	GetSettleData() (s partner.IShop, d member.IDeliver, paymentOpt, deliverOpt int)

	// 设置购买会员
	SetBuyer(buyerId int) error

	// 添加项
	AddItem(goodsId, num int) *ValueCartItem

	// 移出项
	RemoveItem(goodsId, num int) error

	// 合并购物车,并返回新的购物车
	Combine(ICart) (ICart, error)

	// 保存购物车
	Save() (int, error)

	// 绑定订单
	BindOrder(orderNo string) error

	// 获取汇总信息
	GetSummary() string

	// 获取金额
	GetFee() (totalFee float32, orderFee float32)
}

type IOrder

type IOrder interface {
	GetDomainId() int

	// 获生成值
	GetValue() ValueOrder

	// 应用优惠券
	ApplyCoupon(coupon promotion.ICoupon) error

	// 获取应用的优惠券
	GetCoupons() []promotion.ICoupon

	// 设置Shop,如果不需要记录日志,则remark传递空
	SetShop(shopId int) error

	// 设置支付方式
	SetPayment(payment int)

	// 标记已支付
	SignPaid() error

	// 设置配送地址
	SetDeliver(deliverAddrId int) error

	// 添加备注
	AddRemark(string)

	// 提交订单,返回订单号。如有错误则返回
	Submit() (string, error)

	// 保存订单
	Save() (int, error)

	// 添加日志,system表示为系统日志
	AppendLog(t enum.OrderLogType, system bool, message string) error

	// 订单是否结束
	IsOver() bool

	// 处理订单
	Process() error

	// 确认订单
	Confirm() error

	// 配送订单
	Deliver() error

	// 挂起
	Suspend(reason string) error

	// 标记收货
	SignReceived() error

	// 完成订单
	Complete() error

	// 取消订单
	Cancel(reason string) error
}

type IShopping

type IShopping interface {
	GetAggregateRootId() int

	// 创建订单,如果为已存在的订单则没有Cart.
	// todo:需重构为单独的类型
	CreateOrder(*ValueOrder, ICart) IOrder

	//创建购物车
	// @buyerId 为购买会员ID,0表示匿名购物车
	NewCart(buyerId int) ICart

	// 根据数据获取购物车
	GetCart(key string) (ICart, error)

	// 获取没有结算的购物车
	GetNotBoughtCart(buyerId int) (ICart, error)

	// 绑定购物车会员编号
	BindCartBuyer(cartKey string, buyerId int) error

	// 将购物车转换为订单
	ParseShoppingCart(memberId int) (IOrder, member.IMember, ICart, error)

	// 组装订单
	BuildOrder(memberId int, couponCode string) (IOrder, ICart, error)

	// 提交订单
	SubmitOrder(memberId int, couponCode string) (string, error)

	// 获取可用的订单号
	GetFreeOrderNo() string

	// 根据订单号获取订单
	GetOrderByNo(orderNo string) (IOrder, error)

	// 自动设置订单
	OrderAutoSetup(f func(error))

	// 智能选择门店
	SmartChoiceShop(address string) (partner.IShop, error)
}

 购物聚合根

type IShoppingRep

type IShoppingRep interface {
	GetShopping(partnerId int) IShopping
	// 保存订单,返回订单编号
	SaveOrder(partnerId int, v *ValueOrder) (int, error)
	// 保存订单优惠券绑定
	SaveOrderCouponBind(*OrderCoupon) error
	// 获取可用的订单号
	GetFreeOrderNo(partnerId int) string

	// 根据订单号获取订单
	GetOrderByNo(partnerId int, orderNo string) (*ValueOrder, error)

	// 获取等待处理的订单
	GetWaitingSetupOrders(partnerId int) ([]*ValueOrder, error)

	// 保存订单日志
	SaveOrderLog(*OrderLog) error

	// 获取购物车
	GetShoppingCart(key string) (*ValueCart, error)

	// 获取未结算的购物车
	GetNotBoughtCart(buyerId int) (*ValueCart, error)

	// 保存购物车
	SaveShoppingCart(*ValueCart) (int, error)

	// 移出购物车项
	RemoveCartItem(int) error

	// 保存购物车项
	SaveCartItem(*ValueCartItem) (int, error)
}

type OrderCoupon

type OrderCoupon struct {
	OrderId      int     `db:"order_id"`
	CouponId     int     `db:"coupon_id"`
	CouponCode   string  `db:"coupon_code"`
	Fee          float32 `db:"coupon_fee"`
	Describe     string  `db:"coupon_describe"`
	SendIntegral int     `db:"send_integral"`
}

应用到订单的优惠券

func (*OrderCoupon) Clone

func (this *OrderCoupon) Clone(coupon promotion.ICoupon,
	orderId int, orderFee float32) *OrderCoupon

type OrderLog

type OrderLog struct {
	//Id int `db:"id" auto:"yes" pk:"yes"`
	OrderId    int    `db:"order_id"`
	Type       int    `db:"type"`
	IsSystem   int    `db:"is_system"`
	Message    string `db:"message"`
	RecordTime int64  `db:"record_time"`
}

type ValueCart

type ValueCart struct {
	Id         int              `db:"id" pk:"yes" auto:"yes"`
	CartKey    string           `db:"cart_key"`
	BuyerId    int              `db:"buyer_id"`
	OrderNo    string           `db:"order_no"`
	IsBought   int              `db:"is_bought"`
	PaymentOpt int              `db:"payment_opt"`
	DeliverOpt int              `db:"deliver_opt"`
	DeliverId  int              `db:"deliver_id"`
	ShopId     int              `db:"shop_id"`
	CreateTime int64            `db:"create_time"`
	UpdateTime int64            `db:"update_time"`
	Items      []*ValueCartItem `db:"-"`
}

type ValueCart1

type ValueCart1 struct {
	//购物车商品
	Items []sale.IGoods
	//购物车商品数量
	Quantities map[int]int
	//客户端计算的金额
	ClientFee float32
}

type ValueCartItem

type ValueCartItem struct {
	Id         int     `db:"id" pk:"yes" auto:"yes"`
	CartId     int     `db:"cart_id"`
	GoodsId    int     `db:"goods_id"`
	Num        int     `db:"num"`
	Price      float32 `db:"-"`
	SalePrice  float32 `db:"-"`
	Name       string  `db:"-"`
	GoodsNo    string  `db:"-"`
	SmallTitle string  `db:"-"`
	Image      string  `db:"-"`
}

type ValueOrder

type ValueOrder struct {
	Id        int    `db:"id" pk:"yes" auto:"yes" json:"id"`
	OrderNo   string `db:"order_no" json:"orderNo"`
	MemberId  int    `db:"member_id" json:"memberId"`
	PartnerId int    `db:"partner_id" json:"partnerId"`
	ShopId    int    `db:"shop_id" json:"shopId"`
	ItemsInfo string `db:"items_info" json:"itemsInfo"`
	// 总金额
	TotalFee float32 `db:"total_fee" json:"totalFee"`
	// 实际金额
	Fee float32 `db:"fee" json:"fee"`
	// 支付金额
	PayFee float32 `db:"pay_fee" json:"payFee"`
	//减免金额(包含优惠券金额)
	DiscountFee float32 `db:"discount_fee" json:"discountFee"`
	//优惠券优惠金额
	CouponFee float32 `db:"coupon_fee" json:"couponFee"`

	PaymentOpt int `db:"payment_opt" json:"payMethod"`

	IsPaid int `db:"is_paid" json:"isPaid"`

	// 是否挂起,如遇到无法自动进行的时挂起,来提示人工确认。
	IsSuspend int `db:"is_suspend" json:"is_suspend"`

	Note string `db:"note" json:"note"`

	Remark string `db:"note" json:"remark"`

	// 支付时间
	PaidTime int64 `db:"paid_time" json:"paidTime"`

	DeliverName    string `db:"deliver_name" json:"deliverName"`
	DeliverPhone   string `db:"deliver_phone" json:"deliverPhone"`
	DeliverAddress string `db:"deliver_address" json:"deliverAddress"`
	DeliverTime    int64  `db:"deliver_time" json:"deliverTime"`
	CreateTime     int64  `db:"create_time" json:"createTime"`

	// 订单状态
	Status int `db:"status" json:"status"`

	UpdateTime int64 `db:"update_time" json:"updateTime"`
}

Jump to

Keyboard shortcuts

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