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 // 设置订单值 SetValue(*ValueOrder) error // 应用优惠券 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(spId int, spNo string) 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, subject string, couponCode string) (IOrder, ICart, error) // 提交订单 SubmitOrder(memberId int, subject string, 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 // 根据编号获取订单 GetOrderById(id int) *ValueOrder // 根据订单号获取订单 GetOrderByNo(partnerId int, orderNo string) (*ValueOrder, error) // 根据订单号获取订单 GetValueOrderByNo(orderNo string) *ValueOrder // 获取等待处理的订单 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 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"` // 订单标题 Subject string `db:"subject" json:"subject"` 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:"-"` }
Click to show internal directories.
Click to hide internal directories.