You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

177 lines
10 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package order
import (
"gorm.io/gorm"
"recook/internal/define"
"recook/internal/model/order_preview"
"recook/internal/v2/model/recook/goods"
"github.com/golangkit/formatime"
"github.com/shopspring/decimal"
)
type GoodsDetail struct {
ID uint `gorm:"column:id;primary_key" json:"goodsDetailId"`
OrderID uint `gorm:"column:order_id;" json:"orderId"`
AncestorID uint `gorm:"column:ancestor_id" json:"-"`
ParentID uint `gorm:"column:parent_id" json:"parentId"`
SharerID uint `gorm:"column:sharer_id" json:"sharerId"`
LiveId uint `gorm:"column:live_id" json:"liveId"`
UserID uint `gorm:"column:user_id" json:"userId"`
VendorID uint `gorm:"column:vendor_id" json:"vendorId"` // 供应商ID: 0表示自营
VendorName string `gorm:"column:vendor_name" json:"vendorName"`
BrandID uint `gorm:"column:brand_id" json:"brandId"` // 品牌
BrandName string `gorm:"column:brand_name" json:"brandName"` // 品牌名称
CategoryName string `gorm:"column:category_name" json:"cateName"`
GoodsID uint `gorm:"column:goods_id" json:"goodsId"` // 商品ID
GoodsName string `gorm:"column:goods_name" json:"goodsName"` // 商品名快照
IsJoinTeamPerformance uint `gorm:"column:is_join_team_performance" json:"-"` // 是否参与团队业绩计算
Hash string `gorm:"column:hash" json:"-"` // 商品哈希值如果商品信息更新了
SkuID uint `gorm:"column:sku_id" json:"skuId"` // 商品sku_id
SkuName string `gorm:"column:sku_name" json:"skuName"` // SKU名字组合起来
SkuCode string `gorm:"column:sku_code" json:"skuCode"` // 条形码或者编码
MainPhotoURL string `gorm:"column:main_photo_url" json:"mainPhotoUrl"` // 主图快照 先读sku 没有则读取主图
Quantity uint `gorm:"column:quantity" json:"quantity"` // 商品数量
FreightID uint `gorm:"column:freight_id" json:"-"` // 运费模板
Weight decimal.Decimal `gorm:"column:weight" json:"-"` // 重量
PromotionGoodsId uint `gorm:"column:promotion_goods_id" json:"-"`
PromotionSkuId uint `gorm:"column:promotion_sku_id" json:"-"` //
PromotionName string `gorm:"column:promotion_name" json:"promotionName"` // 活动名称
PromotionStartTime formatime.Second `gorm:"column:promotion_start_time" json:"-"`
PromotionEndTime formatime.Second `gorm:"column:promotion_end_time" json:"-"`
UnitPrice decimal.Decimal `gorm:"column:unit_price" json:"unitPrice"` // 单价
PurchasePrice decimal.Decimal `gorm:"column:purchase_price" json:"purchasePrice"` // 采购价
TotalCommission decimal.Decimal `gorm:"column:total_commission" json:"totalCommission"` // 提成总额
BrandCouponAmount decimal.Decimal `gorm:"column:brand_coupon_amount" json:"brandCouponAmount"` // 品牌优惠券抵扣金额
UniverseCouponAmount decimal.Decimal `gorm:"column:universe_coupon_amount" json:"universeBrandCouponAmount"` // 购物券抵扣金额
CoinAmount decimal.Decimal `gorm:"column:coin_amount" json:"coinAmount"` // 瑞币抵扣金额
GoodsAmount decimal.Decimal `gorm:"column:goods_amount" json:"goodsAmount"` // 商品总金额 单价x数量不含其他费用减除
ExpressFee decimal.Decimal `gorm:"column:express_fee" json:"expressFee"` // 快递费
ActualAmount decimal.Decimal `gorm:"column:actual_amount" json:"actualAmount"` // 实际支付的金额
StoreID uint `gorm:"column:store_id" json:"-"` // 门店id
BuyerMessage string `gorm:"column:buyer_message" json:"buyerMessage"` // 买家留言
OrderTime formatime.Second `gorm:"column:order_time" json:"orderTime"`
PayStatus uint `gorm:"column:pay_status" json:"payStatus"`
CreatedAt formatime.Second `gorm:"column:created_at" json:"createdAt"` // 创建时间
ExpressStatus uint `gorm:"column:express_status" json:"expressStatus"`
ExpressTime formatime.Second `gorm:"column:express_time" json:"expressTime"`
ExpressCompName string `gorm:"column:express_comp_name" json:"expressCompName"`
ExpressCompCode string `gorm:"column:express_comp_code" json:"expressCompCode"`
ExpressNo string `gorm:"column:express_no" json:"expressNo"`
AssType uint `gorm:"column:ass_type" json:"assType"`
RefundStatus uint `gorm:"column:refund_status" json:"refundStatus"`
Status uint `gorm:"column:status" json:"status"`
Addr Addr `gorm:"ForeignKey:OrderID;ASSOCIATION_FOREIGNKEY:OrderID"`
ShippingMethod int `gorm:"shipping_method"`
IsClosed int `gorm:"is_closed" json:"isClosed"`
RStatus string `gorm:"-" json:"rStatus"`
DetailInfo string
Bill int `gorm:"bill" json:"bill"` //是否开发票0代表未开1处理中2已成功3失败
Fpqqlsh string `gorm:"fpqqlsh" json:"fpqqlsh"` //流水号
IsExport int `gorm:"is_export" json:"is_export"` //舶茂的是否导出
BomaoNo string `gorm:"bomao_no" json:"bomao_no"` //舶茂的订单编号
EvaluatedId int `gorm:"evaluated_id" json:"evaluated_id"` //评价id
ReportMsg string `gorm:"report_msg" json:"reportMsg"`
Report int `gorm:"report" json:"report"`
IsImport int `gorm:"column:is_import" json:"isImport"` //是否进口商品
Storehouse int `gorm:"column:storehouse" json:"storehouse"` //进口商品仓库
IsFerme int `gorm:"column:is_ferme" json:"isFerme"` //是否包税
ActivityStatus uint `gorm:"column:activity_status" json:"activity_status"`
ActivityId uint `gorm:"column:activity_id" json:"activity_id"` //活动id
MakeUpStatus uint `json:"make_up_status"`
ExtraPrice decimal.Decimal `json:"-"`
Sku goods.RecookGoodsSkuModel `json:"-" gorm:"foreignKey:sku_id"`
Income decimal.Decimal `json:"income"`
Tax decimal.Decimal `json:"tax"`
DeletedAt gorm.DeletedAt
}
// TableName sets the insert table name for this struct type
func (r *GoodsDetail) TableName() string {
return "recook_order_goods_detail"
}
func (r *GoodsDetail) GetBase() decimal.Decimal {
cost := r.PurchasePrice.Mul(decimal.NewFromFloat(1.03))
if !r.ExtraPrice.IsZero() {
cost = r.PurchasePrice.Add(r.ExtraPrice)
}
base := r.UnitPrice.Sub(cost).Mul(decimal.NewFromFloat32(define.Coefficient))
return base.Round(2)
}
// 判断商品订单是否结束
func (r GoodsDetail) IsOrderGoodsEnd() bool {
// 成功
if r.AssType == 0 && r.ExpressStatus == 1 {
return true
}
// 售后成功
if r.RefundStatus == 2 {
return true
}
return false
}
// 判断商品是否销售完成
func (r GoodsDetail) IsFinished() bool {
// 成功
if r.AssType == 0 && r.ExpressStatus == 1 {
return true
}
return false
}
func (*GoodsDetail) Reflect(r *order_preview.GoodsDetail, o *Information) *GoodsDetail {
return &GoodsDetail{
OrderID: o.ID,
AncestorID: o.AncestorID,
ParentID: o.ParentID,
SharerID: o.SharerID,
LiveId: o.LiveId,
UserID: o.UserID,
VendorID: r.VendorID,
VendorName: r.VendorName,
BrandID: r.BrandID,
BrandName: r.BrandName,
CategoryName: r.CategoryName,
GoodsID: r.GoodsID,
GoodsName: r.GoodsName,
IsJoinTeamPerformance: r.IsJoinTeamPerformance,
Hash: r.Hash,
SkuID: r.SkuID,
SkuName: r.SkuName,
SkuCode: r.SkuCode,
MainPhotoURL: r.MainPhotoURL,
Quantity: r.Quantity,
FreightID: r.FreightID,
Weight: r.Weight,
PromotionGoodsId: r.PromotionGoodsId,
PromotionSkuId: r.PromotionSkuId,
PromotionName: r.PromotionName,
PromotionStartTime: r.PromotionStartTime,
PromotionEndTime: r.PromotionEndTime,
UnitPrice: r.UnitPrice,
PurchasePrice: r.PurchasePrice,
TotalCommission: r.TotalCommission,
ExpressFee: r.ExpressFee,
BrandCouponAmount: r.BrandCouponAmount,
UniverseCouponAmount: r.UniverseCouponAmount,
CoinAmount: r.CoinAmount,
GoodsAmount: r.GoodsAmount,
ActualAmount: r.ActualAmount,
StoreID: o.StoreID,
BuyerMessage: o.BuyerMessage,
OrderTime: o.CreatedAt,
ShippingMethod: int(o.ShippingMethod),
IsImport: r.IsImport,
Storehouse: r.Storehouse,
IsFerme: r.IsFerme,
ExtraPrice: r.ExtraPrice,
}
}
func (r GoodsDetail) isOrderDetail() bool {
return true
}