shopping

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: 6 Imported by: 0

Documentation

Overview

*

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

*

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

*

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

Index

Constants

View Source
const (
	PaymentNotYet  = 0 // 订单尚未支付
	PaymentByBuyer = 1 // 购买者支付
	PaymentByCM    = 2 // 客服人工支付
)

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 ", "无法为购物车绑定订单")

	ErrBalanceNotEnough *domain.DomainError = domain.NewDomainError(
		"rtt_balance_not_enough ", "余额不足")

	ErrOrderPayed *domain.DomainError = domain.NewDomainError(
		"err_order_payed ", "订单已支付")

	ErrOrderNotPayed *domain.DomainError = domain.NewDomainError(
		"err_order_not_payed ", "订单未支付")
)

Functions

This section is empty.

Types

type ICart

type ICart interface {
	GetDomainId() int

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

	// 获取购物车中的商品
	GetCartGoods() []sale.IGoods

	// 结算数据持久化
	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, error)

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

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

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

	// 销毁购物车
	Destroy() error

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

	// 获取Json格式的商品数据
	GetJsonItems() []byte

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

type IOrder

type IOrder interface {
	GetDomainId() int

	// 获取订单号
	GetOrderNo() string

	// 获生成值
	GetValue() ValueOrder

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

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

	// 获取可用的促销,不包含优惠券
	GetAvailableOrderPromotions() []promotion.IPromotion

	// 获取最省的促销
	GetBestSavePromotion() (p promotion.IPromotion, saveFee float32, integral int)

	// 获取促销绑定
	GetPromotionBinds() []*OrderPromotionBind

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

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

	// 使用余额支付
	PaymentWithBalance() error

	// 客服使用余额支付
	CmPaymentWithBalance() error

	// 在线交易支付
	PaymentForOnlineTrade(serverProvider string, tradeNo string) error

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

	// 添加备注
	AddRemark(string)

	// 应用余额支付
	UseBalanceDiscount()

	// 提交订单,返回订单号。如有错误则返回
	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

	// 获取支付金额
	GetPaymentFee() float32

	// 完成订单
	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

	// 检查购物车
	CheckCart(cart ICart) error

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

	// 获取购物车
	GetShoppingCart(buyerId int, cartKey string) ICart

	// 获取没有结算的购物车
	GetCurrentCart(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, useBalanceDiscount bool) (string, error)

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

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

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

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

	// 智能确定订单
	SmartConfirmOrder(order IOrder) error
}

 购物聚合根

type IShoppingRep

type IShoppingRep interface {
	GetShopping(partnerId int) IShopping

	// 保存订单,返回订单编号
	SaveOrder(partnerId int, v *ValueOrder) (int, error)

	// 保存订单优惠券绑定
	SaveOrderCouponBind(*OrderCoupon) error

	// 获取订单的促销绑定
	GetOrderPromotionBinds(orderNo string) []*OrderPromotionBind

	// 保存订单的促销绑定
	SavePromotionBindForOrder(*OrderPromotionBind) (int, error)

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

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

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

	// 获取订单项
	GetOrderItems(orderId int) []*OrderItem

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

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

	// 获取最新的购物车
	GetLatestCart(buyerId int) (*ValueCart, error)

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

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

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

	// 清空购物车项
	EmptyCartItems(id int) error

	// 删除购物车
	DeleteCart(id 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.ICouponPromotion,
	orderId int, orderFee float32) *OrderCoupon

type OrderGoods

type OrderGoods struct {
	GoodsId    int    `json:"id"`
	GoodsImage string `json:"img"`
	Name       string `json:"name"`
	Quantity   int    `json:"qty"`
}

简单商品信息

type OrderItem

type OrderItem struct {
	Id         int     `db:"id" pk:"yes" auto:"yes" json:"id"`
	OrderId    int     `db:"order_id"`
	SnapshotId int     `db:"snapshot_id"`
	Quantity   int     `db:"quantity"`
	Sku        string  `db:"sku"`
	Fee        float32 `db:"fee"`
	UpdateTime int64   `db:"update_time"`
}

订单商品项

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 OrderPromotionBind

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

	// 促销编号
	PromotionId int `db:"promotion_id"`

	// 促销类型
	PromotionType int `db:"promotion_type"`

	// 订单号
	OrderNo string `db:"order_no"`

	// 标题
	Title string `db:"title"`

	// 节省金额
	SaveFee float32 `db:"save_fee"`

	// 赠送积分
	PresentIntegral int `db:"present_integral"`

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

	// 是否确认
	IsConfirm int `db:"is_confirm"`
}

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 ValueCartItem

type ValueCartItem struct {
	Id         int     `db:"id" pk:"yes" auto:"yes"`
	CartId     int     `db:"cart_id"`
	GoodsId    int     `db:"goods_id"`
	SnapshotId int     `db:"snap_id"`
	Quantity   int     `db:"quantity"`
	Sku        string  `db:"-"`
	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"`

	// 余额抵扣
	BalanceDiscount float32 `db:"balance_discount" json:"balaceDiscount"`

	//优惠券优惠金额
	CouponFee float32 `db:"coupon_fee" json:"couponFee"`

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

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

	// 是否为顾客付款
	PaymentSign int `db:"payment_sign" json:"paymentSign"`

	// 是否挂起,如遇到无法自动进行的时挂起,来提示人工确认。
	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"`

	// 订单项
	Items []*OrderItem `db:"-"`
}

Jump to

Keyboard shortcuts

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