feat: 批发购物车

master
howell 3 years ago
parent 4c64e7df1c
commit cda1b5fff1

@ -210,7 +210,7 @@ func GetGoodsRespByInfoList(goodsList []goods.Information, userID uint, isSale b
mysql2.Db.First(&u, "id = ?", userID)
//国家图标放入map结束
for _, v := range goodsList {
if isSale && !v.SalePublish {
if isSale && v.SalePublish != 1 {
continue
}
if v.PublishStatus == 0 {

@ -31,7 +31,7 @@ type Information struct {
Storehouse int `gorm:"column:storehouse" json:"storehouse"` //进口商品仓库
IsFerme int `gorm:"column:is_ferme" json:"isFerme"` //是否包税
Country uint `gorm:"column:country" json:"country"`
SalePublish bool `json:"column:sale_publish"`
SalePublish uint `json:"column:sale_publish"`
IsSale bool `json:"column:is_sale"`
}

@ -30,3 +30,16 @@ func (o Proxy) ShopCartEntries(c *gin.Context) {
res := jyy.Logic.ShopCartEntries(args)
back.Suc(c, "ok", res)
}
func (o Proxy) AddSku(c *gin.Context) {
var args jyy.ArgsAddSku
if err := tools.ParseParams(&args, c); err != nil {
back.Err(c, err.Error())
return
}
if err := jyy.Logic.ShopCartAddSku(args); err != nil {
back.Fail(c, err.Error())
} else {
back.Suc(c, "ok", "")
}
}

@ -1,6 +1,8 @@
package jyy
import (
"errors"
"fmt"
"github.com/shopspring/decimal"
"recook/internal/v2/model/jyy"
goods2 "recook/internal/v2/model/recook/goods"
@ -38,7 +40,7 @@ type ShopCartSku struct {
Quantity uint `json:"quantity"`
Limit int `json:"limit"`
Min int `json:"min"`
SkuName string `json:"skuName"`
SkuName string `json:"sku_name"`
}
type ShopCartEntry struct {
@ -97,3 +99,71 @@ func (o logic) ShopCartEntries(args ArgsEntryReq) (res []ShopCartEntry) {
return
}
type skuEntry struct {
SkuID uint `json:"sku_id"`
Quantity int `json:"quantity"`
}
type ArgsAddSku struct {
UserID uint `json:"user_id"`
SkuList []skuEntry `json:"sku_list" validate:"required,gte=1"`
}
func (o logic) ShopCartAddSku(args ArgsAddSku) (err error) {
var skuList []goods2.RecookGoodsSkuModel
ids := make([]uint, 0)
idMap := make(map[uint]int)
for _, v := range args.SkuList {
ids = append(ids, v.SkuID)
idMap[v.SkuID] = v.Quantity
}
mysql.Db.Preload("GoodsInfo").Find(&skuList, "id in (?)", ids)
if len(skuList) != len(ids) {
return errors.New("商品选择错误")
}
for _, v := range skuList {
if v.GoodsInfo.SalePublish != 1 {
return fmt.Errorf("%d商品下架", v.GoodsId)
}
if !v.GoodsInfo.IsSale {
return fmt.Errorf("%d商品不可批发", v.GoodsId)
}
if idMap[v.Id] < v.Min {
return fmt.Errorf("%s商品最低%d", v.Name, v.Min)
}
if idMap[v.Id]%v.Limit != 0 {
return fmt.Errorf("%s商品每手至少%d", v.Name, v.Min)
}
}
data := make([]jyy.ShopCartEntry, 0)
mysql.Db.Find(&data, "user_id = ?", args.UserID)
isUsed := make(map[uint]bool)
for _, v := range data {
if idMap[v.SkuID] != 0 {
v.Quantity += uint(idMap[v.SkuID])
mysql.Db.Save(v)
isUsed[v.SkuID] = true
}
}
res := make([]jyy.ShopCartEntry, 0)
for _, v := range skuList {
if isUsed[v.Id] {
continue
}
res = append(res, jyy.ShopCartEntry{
SkuID: v.Id,
GoodsID: v.GoodsId,
UserID: args.UserID,
Quantity: uint(idMap[v.Id]),
})
}
if len(res) == 0 {
return nil
}
if err = mysql.Db.Create(&res).Error; err != nil {
return err
}
return
}

@ -223,11 +223,12 @@ func routerApp(appRouter *gin.RouterGroup) {
activityRouter.POST("list", proxy.Activities)
}
}
ShopCartRouter := appRouter.Group("shop_cart")
ShopCartRouter := appRouter.Group("shop_cart", authorize)
{
proxy := jyy.Proxy{}
{
ShopCartRouter.POST("list", proxy.ShopCartEntries)
ShopCartRouter.POST("add", proxy.AddSku)
}
}

Loading…
Cancel
Save