cart

package
v0.4.0 Latest Latest
Warning

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

Go to latest
Published: Dec 15, 2021 License: GPL-2.0 Imports: 4 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// 手工创建
	FlagManualCreate = 1
	// 是否可改价
	FlagPriceEditable = 2
)

Variables

View Source
var (
	ErrNoSuchCart = domain.NewError(
		"empty_shopping_no_such_cart", "购物车无法使用")

	ErrKindNotMatch = domain.NewError(
		"err_cart_kind_not_match", "购物车类型不匹配")

	ErrEmptyShoppingCart = domain.NewError(
		"empty_shopping_cart", "购物车没有商品")

	ErrNoChecked = domain.NewError(
		"empty_shopping_cart_no_checked", "购物车没有结算的商品")

	ErrCartNoBuyer = domain.NewError(
		"err_cart_no_buyer", "购物车未绑定")

	ErrItemNoSku = domain.NewError(
		"err_cart_item_no_sku", "请选择商品规格")

	ErrNoMatchItem = domain.NewError(
		"err_cart_no_match_item", "购物车不存在该商品")
)

Functions

This section is empty.

Types

type ICart

type ICart interface {
	// 获取聚合根编号
	GetAggregateRootId() int32
	// 购物车种类
	Kind() Kind
	// 克隆
	Clone() ICart
	// 获取购物车编码
	Code() string
	// 获取买家编号
	BuyerId() int64
	// 预先准备购物车
	Prepare() error
	// 标记商品结算
	SignItemChecked(items []*ItemPair) error
	// 获取勾选的商品,checked:为商品与商品SKU数据
	CheckedItems(checked map[int64][]int64) []*ItemPair

	// 添加商品到购物车,如商品没有SKU,则skuId传入0
	// todo: 这里有问题、如果是线下店的购物车,如何实现?
	// 暂时以店铺区分,2017-02-28考虑单独的购物车或子系统
	Put(itemId, skuId int64, quantity int32) error
	// 更新商品数量,如数量为0,则删除
	Update(itemId, skuId int64, quantity int32) error
	// 移出项
	Remove(itemId, skuId int64, quantity int32) error
	// 保存购物车
	Save() (int32, error)
	// 释放购物车,如果购物车的商品全部结算,则返回true
	Release(checked map[int64][]int64) bool
	// 销毁购物车
	Destroy() error

	// 结算数据持久化
	SettlePersist(shopId, paymentOpt, deliverOpt int32, addressId int64) error
	// 获取结算数据
	GetSettleData() (s shop.IShop, d member.IDeliverAddress, paymentOpt int32)

	// 设置购买会员收货地址
	SetBuyerAddress(addressId int64) error
}

购物车

type ICartRepo

type ICartRepo interface {
	// 获取买家的购物车
	GetMyCart(buyerId int64, k Kind) ICart
	// 创建一个购物车
	NewNormalCart(code string) ICart
	// 创建一个普通购物车
	CreateNormalCart(r *NormalCart) ICart
	// 获取购物车
	GetNormalCart(id int32) ICart

	// 获取购物车
	GetShoppingCartByKey(key string) ICart
	// 获取购物车
	GetShoppingCart(key string) *NormalCart
	// 获取最新的购物车
	GetLatestCart(buyerId int64) *NormalCart
	// 保存购物车
	SaveShoppingCart(*NormalCart) (int32, error)
	// 移出购物车项
	RemoveCartItem(id int32) error
	// 保存购物车项
	SaveCartItem(*NormalCartItem) (int32, error)
	// 清空购物车项
	EmptyCartItems(cartId int32) error
	// 删除购物车
	DeleteCart(cartId int32) error

	// Select SaleCartItem
	SelectNormalCartItem(where string, v ...interface{}) []*NormalCartItem
	// Save SaleCart
	SaveNormalCart(v *NormalCart) (int, error)
	// Delete SaleCart
	DeleteNormalCart(primary interface{}) error

	// Save WsCart
	SaveWsCart(v *WsCart) (int, error)
	// Delete WsCart
	DeleteWsCart(primary interface{}) error
	// Select WsCartItem
	SelectWsCartItem(where string, v ...interface{}) []*WsCartItem
	// Save WsCartItem
	SaveWsCartItem(v *WsCartItem) (int, error)
	// Batch Delete WsCartItem
	BatchDeleteWsCartItem(where string, v ...interface{}) (int64, error)
}

根据数据获取购物车, 如果member的cart与key不一致,则合并购物车; 如果会员没有购物车,则绑定为key的购物车 如果都没有,则创建一个购物车

type INormalCart

type INormalCart interface {
	// 获取购物车值
	Value() NormalCart
	// 获取商品集合
	Items() []*NormalCartItem
	// 合并购物车,并返回新的购物车
	Combine(ICart) ICart
	// 获取项
	GetItem(itemId, skuId int64) *NormalCartItem
}

商品普通购物车,未登陆时以code标识,登陆后以买家编号标识

type IRetailCart

type IRetailCart interface {
	// 设置买家编号
	SetBuyer(buyerId int) error
	// 重置项目
	ResetItems(items []RetailCartItem) error
	// 获取购物车值
	Value() RetailCart
	// 获取商品集合
	Items() []RetailCartItem
}

零售购物车

type IWholesaleCart

type IWholesaleCart interface {
	// 获取购物车值
	GetValue() WsCart
	// 获取商品集合
	Items() []*WsCartItem
	// Jdo数据
	JdoData(checkout bool, checked map[int64][]int64) *WCartJdo
	// 简单Jdo数据,max为最多数量
	QuickJdoData(max int) string
}

商品批发购物车

type ItemPair

type ItemPair struct {
	// 商品编号
	ItemId int64
	// SKU编号
	SkuId int64
	// 卖家编号
	SellerId int64
	// 数量
	Quantity int32
	// 是否勾选结算
	Checked int32
}

购物车商品

type Kind

type Kind int

购物车类型

const (
	// 普通(B2C)购物车
	KNormal Kind = 1
	// 零售(B2C-线下)购物车
	KRetail Kind = 2
	// 批发(B2B)购物车
	KWholesale Kind = 3
)

type NormalCart

type NormalCart struct {
	Id         int32  `db:"id" pk:"yes" auto:"yes"`
	CartCode   string `db:"code"`
	BuyerId    int64  `db:"buyer_id"`
	PaymentOpt int32  `db:"payment_opt"`
	//todo: del???
	DeliverId  int64             `db:"deliver_id"`
	CreateTime int64             `db:"create_time"`
	UpdateTime int64             `db:"update_time"`
	Items      []*NormalCartItem `db:"-"`
}

购物车

type NormalCartItem

type NormalCartItem struct {
	// 编号
	Id int32 `db:"id" pk:"yes" auto:"yes"`
	// 购物车编号
	CartId int32 `db:"cart_id"`
	// 运营商编号
	VendorId int64 `db:"vendor_id"`
	// 店铺编号
	ShopId int64 `db:"shop_id"`
	// 商品编号
	ItemId int64 `db:"item_id"`
	// SKU编号
	SkuId int64 `db:"sku_id"`
	// 数量
	Quantity int32 `db:"quantity"`
	// 是否勾选结算
	Checked int32 `db:"checked"`
	// 订单依赖的SKU媒介
	Sku *item.SkuMedia `db:"-"`
}

购物车项

type RetailCart

type RetailCart struct {
	// 编号
	ID int64 `db:"id" pk:"yes" auto:"yes"`
	// 购物车编码
	Code string `db:"code"`
	// 运营商编号
	VendorId int64 `db:"vendor_id"`
	// 店铺编号
	ShopId int64 `db:"shop_id"`
	// 买家编号
	BuyerId int64 `db:"buyer_id"`
	// 买家姓名
	BuyerName string `db:"buyer_name"`
	// 购物车标志
	CartFlag int64 `db:"cart_flag"`
	// 优先级
	Priority int `db:"priority"`
	// 购物车序号
	SortNum int `db:"sort_num"`
	// 购物车金额
	TotalAmount int64 `db:"total_amount"`
	// 购物车描述
	CartDesc string `db:"cart_desc"`
	// 客位编号
	PlaceId int64 `db:"place_id"`
	// 创建时间
	CreateTime int64 `db:"create_time"`
	// 修改时间
	UpdateTime int64 `db:"update_time"`
}

零售购物车

type RetailCartAward

type RetailCartAward struct {
	// 编号
	ID int64 `db:"id" pk:"yes" auto:"yes"`
	// 购物车编号
	CartId int64 `db:"cart_id"`
	// 购物车项目编号
	CartItemId int64 `db:"cart_item_id"`
	// 提成人员编号
	OperatorId int64 `db:"operator_id"`
	// 提成金额
	AwardValue int64 `db:"award_value"`
}

零售购物车提成

type RetailCartItem

type RetailCartItem struct {
	// 编号
	ID int64 `db:"id" pk:"yes" auto:"yes"`
	// 购物车编号
	CartId int64 `db:"cart_id"`
	// 商品编号
	ItemId int64 `db:"item_id"`
	// 商品种类
	ItemKind int `db:"item_kind"`
	// 商品标题
	ItemTitle string `db:"item_title"`
	// SKU编号
	SkuId int64 `db:"sku_id"`
	// SKU文本
	SkuText string `db:"sku_text"`
	// 卡编号
	CardId int64 `db:"card_id"`
	// 卡项目编号
	CardItemId int64 `db:"card_item_id"`
	// 数量
	Quantity int `db:"quantity"`
	// 商品单价金额
	UnitPrice int `db:"unit_price"`
	// 商品实际金额
	FinalPrice int `db:"final_price"`
	// 调整金额
	AdjustAmount int64 `db:"adjust_amount"`
	// 最终价
	FinalFee int64 `db:"final_fee"`
	// 是否勾选结算
	Checked int `db:"checked"`
}

零售购物车项目

type WCartItemJdo

type WCartItemJdo struct {
	// 商品编号
	ItemId int64
	// 商品标题
	ItemName string
	// 商品图片
	ItemImage string
	// SKU列表
	Sku []WCartSkuJdo
	// 其他数据
	Data map[string]string
}

批发购物车商品JSON数据对象

type WCartJdo

type WCartJdo struct {
	Seller []WCartSellerJdo
	Data   map[string]string
}

批发购物车JSON数据对象

type WCartSellerJdo

type WCartSellerJdo struct {
	// 运营商编号
	SellerId int64
	// 购物车商品
	Item []WCartItemJdo
	// 其他数据
	Data map[string]string
}

批发购物车卖家JSON数据对象

type WCartSkuJdo

type WCartSkuJdo struct {
	// SKU编号
	SkuId int64
	// SKU编码
	SkuCode string
	// SKU图片
	SkuImage string
	// 规格文本
	SpecWord string
	// 数量
	Quantity int32
	// 价格
	Price int64
	// 折扣价
	DiscountPrice int64
	// 可售数量
	CanSalesQuantity int32
	// 数据JSON表示
	JData string
}

批发购物车规格JSON数据对象

type WsCart

type WsCart struct {
	// 编号
	ID int32 `db:"id" pk:"yes" auto:"yes"`
	// 购物车编码
	Code string `db:"code"`
	// 买家编号
	BuyerId int64 `db:"buyer_id"`
	// 送货地址
	DeliverId int64 `db:"deliver_id"`
	// 创建时间
	CreateTime int64 `db:"create_time"`
	// 修改时间
	UpdateTime int64 `db:"update_time"`
	// 商品项
	Items []*WsCartItem `db:"-"`
}

商品批发购物车

type WsCartItem

type WsCartItem struct {
	// 编号
	ID int32 `db:"id" pk:"yes" auto:"yes"`
	// 购物车编号
	CartId int32 `db:"cart_id"`
	// 运营商编号
	SellerId int64 `db:"vendor_id"`
	// 店铺编号
	ShopId int64 `db:"shop_id"`
	// 商品编号
	ItemId int64 `db:"item_id"`
	// SKU编号
	SkuId int64 `db:"sku_id"`
	// 数量
	Quantity int32 `db:"quantity"`
	// 订单依赖的SKU媒介
	Sku *item.SkuMedia `db:"-"`
}

批发购物车商品项

Jump to

Keyboard shortcuts

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