购物车按添加时间排序

master
datang 3 years ago
parent 681913e9fb
commit 6f23ce0d5a

@ -53,112 +53,78 @@ type subShoppingChild struct {
SecKill SecKillDetail `json:"sec_kill"` SecKill SecKillDetail `json:"sec_kill"`
} }
// QueryShoppingTrolleyGoodsList @Title 购物车列表
func QueryShoppingTrolleyGoodsList(c *gin.Context) { func QueryShoppingTrolleyGoodsList(c *gin.Context) {
var p queryShoppingTrolleyListParam var p queryShoppingTrolleyListParam
if err := tools.ParseParams(&p, c); err != nil { if err := tools.ParseParams(&p, c); err != nil {
back.Fail(c, err.Error()) back.Fail(c, err.Error())
return return
} }
//p.UserID = 1
if p.UserID == 0 { if p.UserID == 0 {
back.Suc(c, "", make([]shoppingTrolleyResp, 0, 0)) back.Suc(c, "", make([]shoppingTrolleyResp, 0, 0))
return return
} }
var u user.Information var u user.Information
dbc.DB.First(&u, "id = ?", p.UserID) dbc.DB.First(&u, "id = ?", p.UserID)
var trolleyList []shopping_trolley.Information var trolleyList []shopping_trolley.Information
dbc.DB.Order("id desc").Find(&trolleyList, "user_id = ?", p.UserID) // 查询购物车商品
// 先把商品跟sku信息拿出来
subShoppingChildList := make([]subShoppingChild, 0, 0) subShoppingChildList := make([]subShoppingChild, 0, 0)
for _, v := range trolleyList { dbc.DB.Preload("Brand").Preload("Goods").Preload("Sku").Order("created_at desc").Find(&trolleyList, "user_id = ?", p.UserID)
var mainPhoto goods.MainPhoto //fmt.Printf("%v\n", trolleyList)
dbc.DB.Select("url").First(&mainPhoto, "goods_id = ? AND is_master = 1", v.GoodsID) recookGoodsInfoModel := &goods2.RecookGoodsInfoModel{}
valid := true
var goodsInfo goods.Information for _, t := range trolleyList {
dbc.DB.First(&goodsInfo, v.GoodsID) if t.Quantity > t.Sku.Inventory {
var sku goods.Sku
dbc.DB.First(&sku, v.SkuID)
inventory := sku.Inventory
salesVolume := sku.SalesVolume
discountPrice := sku.DiscountPrice
commission := sku.GetSelfProfit(u.Level)
valid := true
//rate1 := decimal.Zero
//rate2 := decimal.Zero
//rate3 := decimal.Zero
//if u.Level == 1 {
// rate1 = decimal.NewFromFloat32(0.4)
// rate2 = decimal.NewFromFloat32(0.1)
//}
//if u.Level == 2 {
// rate1 = decimal.NewFromFloat32(0.4)
// rate2 = decimal.NewFromFloat32(0.1)
// rate3 = decimal.NewFromFloat(0.2)
//}
//base := sku.GetBase()
//commission1 := base.Mul(rate1).Round(2)
//commission2 := base.Mul(rate2).Round(2)
//commission3 := base.Mul(rate3).Round(2)
//commission = commission1.Add(commission2).Add(commission3)
//
//if u.Level == 10 {
// commission = sku.GetBase().Mul(decimal.NewFromFloat(define.Coefficient))
//}
if v.Quantity > inventory {
valid = false valid = false
} }
recookGoodsInfoModel := &goods2.RecookGoodsInfoModel{}
subShoppingChildList = append(subShoppingChildList, subShoppingChild{ subShoppingChildList = append(subShoppingChildList, subShoppingChild{
ShoppingTrolleyID: v.ID, ShoppingTrolleyID: t.ID,
GoodsID: goodsInfo.ID, GoodsID: t.GoodsID,
BrandID: goodsInfo.BrandID, BrandID: t.BrandID,
GoodsName: goodsInfo.GoodsName, GoodsName: t.Goods.GoodsName,
Description: goodsInfo.Description, Description: t.Goods.Description,
SkuName: sku.Name, SkuName: t.Sku.Name,
Quantity: v.Quantity, Quantity: t.Quantity,
Inventory: inventory, Inventory: t.Sku.Inventory,
SalesVolume: salesVolume, SalesVolume: t.Sku.SalesVolume,
MainPhotoURL: mainPhoto.URL, MainPhotoURL: t.Sku.PicURL,
PromotionName: "", PromotionName: "",
OriginalPrice: sku.OriginalPrice, OriginalPrice: t.Sku.OriginalPrice,
Price: discountPrice, Price: t.Sku.DiscountPrice,
Commission: commission, Commission: t.Sku.Commission,
Valid: valid, Valid: valid,
Promotion: nil, Promotion: nil,
IsImport: goodsInfo.IsImport, IsImport: t.Goods.IsImport,
Storehouse: goodsInfo.Storehouse, Storehouse: t.Goods.Storehouse,
IsFerme: goodsInfo.IsFerme, IsFerme: t.Goods.IsFerme,
Ferme: sku.PurchasePrice.Mul(decimal.NewFromFloat(1.2)).Mul(decimal.NewFromFloat(0.091)).Truncate(2), Ferme: t.Sku.PurchasePrice.Mul(decimal.NewFromFloat(1.2)).Mul(decimal.NewFromFloat(0.091)).Truncate(2),
HasCoin: recookGoodsInfoModel.HasCoin(goodsInfo.Storehouse), HasCoin: recookGoodsInfoModel.HasCoin(t.Goods.Storehouse),
HasBalance: recookGoodsInfoModel.HasBalance(goodsInfo.Storehouse), HasBalance: recookGoodsInfoModel.HasBalance(t.Goods.Storehouse),
PublishStatus: goodsInfo.PublishStatus, PublishStatus: t.Goods.PublishStatus,
CountryIcon: "", CountryIcon: "",
GysId: goodsInfo.VendorID, GysId: t.Goods.VendorID,
}) })
} }
brandIdMap := map[uint]uint{}
for _, v := range subShoppingChildList {
brandIdMap[v.BrandID] = 1
}
var brandList []goods.Brand var brandList []goods.Brand
for k := range brandIdMap { for _, k := range subShoppingChildList {
var brand goods.Brand var brand goods.Brand
dbc.DB.Select("id,name,logo_url").First(&brand, k) var flag = true
brandList = append(brandList, brand) dbc.DB.Select("id,name,logo_url").First(&brand, k.BrandID)
for _, i2 := range brandList { //不添加已有brand
if i2.ID == brand.ID {
flag = false
break
}
}
if flag {
brandList = append(brandList, brand)
}
} }
//fmt.Printf("%v\n", brandList)
// 把商品按品归类 // 把商品按品归类
list := make([]shoppingTrolleyResp, 0, 0) list := make([]shoppingTrolleyResp, 0, 0)
for _, v1 := range brandList { for _, v1 := range brandList {
var children []subShoppingChild var children []subShoppingChild
for i2, v2 := range subShoppingChildList { for i2, v2 := range subShoppingChildList {
@ -173,6 +139,5 @@ func QueryShoppingTrolleyGoodsList(c *gin.Context) {
Children: children, Children: children,
}) })
} }
back.Suc(c, "操作成功", list) back.Suc(c, "操作成功", list)
} }

@ -1,15 +1,21 @@
package shopping_trolley package shopping_trolley
import "github.com/golangkit/formatime" import (
"github.com/golangkit/formatime"
"recook/internal/model/goods"
)
type Information struct { type Information struct {
ID uint `gorm:"column:id;primary_key" json:"id"` ID uint `gorm:"column:id;primary_key" json:"id"`
UserID uint `gorm:"column:user_id" json:"-"` UserID uint `gorm:"column:user_id" json:"-"`
BrandID uint `gorm:"column:brand_id" json:"-"` BrandID uint `gorm:"column:brand_id" json:"-"`
GoodsID uint `gorm:"column:goods_id" json:"goodsId"` Brand goods.Brand `gorm:"foreignKey:BrandID"`
SkuID uint `gorm:"column:sku_id" json:"skuId"` GoodsID uint `gorm:"column:goods_id" json:"goodsId"`
Quantity uint `gorm:"column:quantity" json:"quantity"` Goods goods.Information `gorm:"foreignKey:GoodsID"`
CreatedAt formatime.Second `gorm:"column:created_at" json:"-"` SkuID uint `gorm:"column:sku_id" json:"skuId"`
Sku goods.Sku `gorm:"foreignKey:SkuID"`
Quantity uint `gorm:"column:quantity" json:"quantity"`
CreatedAt formatime.Second `gorm:"column:created_at" json:"-"`
} }
// TableName sets the insert table name for this struct type // TableName sets the insert table name for this struct type

Loading…
Cancel
Save