1、商城列表接口优化;
2、租赁订单排序优化; 3、新增商城购物车接口(待完善);
This commit is contained in:
parent
c1803207bf
commit
8c0cd8e574
|
@ -17,6 +17,14 @@ import (
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// MallGoodsList 商品列表
|
||||||
|
// @Summary 商品列表
|
||||||
|
// @Tags 商城, V1.4.5
|
||||||
|
// @Produce json
|
||||||
|
// @Accept json
|
||||||
|
// @Param request body model.GoodsListReq true "新建商品列表模型"
|
||||||
|
// @Success 200 {object} model.GoodsListResp
|
||||||
|
// @Router /api/v1/mall/goods/list [post]
|
||||||
func MallGoodsList(c *gin.Context) {
|
func MallGoodsList(c *gin.Context) {
|
||||||
req := model.GoodsListReq{}
|
req := model.GoodsListReq{}
|
||||||
if err := c.ShouldBindJSON(&req); err != nil {
|
if err := c.ShouldBindJSON(&req); err != nil {
|
||||||
|
@ -49,10 +57,10 @@ func MallGoodsList(c *gin.Context) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ret := map[string]interface{}{
|
ret := model.GoodsListResp{
|
||||||
"list": list,
|
List: list,
|
||||||
"cur_page": req.PageIdx,
|
CurPage: req.PageIdx,
|
||||||
"total_page": total,
|
TotalPage: total,
|
||||||
}
|
}
|
||||||
|
|
||||||
RespOK(c, ret)
|
RespOK(c, ret)
|
||||||
|
|
|
@ -2052,7 +2052,7 @@ func NewGetGameCardList(sortType, page, pageSize int, gameTypeIds []uint64, stor
|
||||||
}
|
}
|
||||||
effectiveStoreListStr := fmt.Sprintf("(%s)", strings.Trim(strings.Join(strings.Fields(fmt.Sprint(effectiveStoreList)), ","), "[]"))
|
effectiveStoreListStr := fmt.Sprintf("(%s)", strings.Trim(strings.Join(strings.Fields(fmt.Sprint(effectiveStoreList)), ","), "[]"))
|
||||||
|
|
||||||
if homeCategoryInfo.AllFlag == 1 && homeCategoryInfo.OrderFlag != 1 {
|
if homeCategoryInfo.AllFlag == 1 {
|
||||||
if storeId != 0 {
|
if storeId != 0 {
|
||||||
var cardStocks []GameCardGoodsStock
|
var cardStocks []GameCardGoodsStock
|
||||||
cardStockSql1 := fmt.Sprintf("SELECT a.* FROM game_card_goods_stock a LEFT JOIN game_card b ON a.game_card_id=b.id WHERE a.store_id=%d AND a.store_id IN %s AND a.rent_stock>0 ORDER BY b.id ASC;", storeId, effectiveStoreListStr)
|
cardStockSql1 := fmt.Sprintf("SELECT a.* FROM game_card_goods_stock a LEFT JOIN game_card b ON a.game_card_id=b.id WHERE a.store_id=%d AND a.store_id IN %s AND a.rent_stock>0 ORDER BY b.id ASC;", storeId, effectiveStoreListStr)
|
||||||
|
|
|
@ -79,7 +79,7 @@ type Goods struct {
|
||||||
VersionId uint64 `json:"version_id"` // 乐观锁
|
VersionId uint64 `json:"version_id"` // 乐观锁
|
||||||
ShowDiscount int8 `json:"show_discount"` //
|
ShowDiscount int8 `json:"show_discount"` //
|
||||||
GoodsAccountNum uint32 `json:"goods_account_num"` // 收款账户编号
|
GoodsAccountNum uint32 `json:"goods_account_num"` // 收款账户编号
|
||||||
//Stock uint32 `json:"stock"` // 库存
|
ErpStock uint32 `json:"erp_stock" gorm:"-"` // erp库存
|
||||||
|
|
||||||
GoodsCat *GoodsCat `json:"goods_cat" gorm:"-"`
|
GoodsCat *GoodsCat `json:"goods_cat" gorm:"-"`
|
||||||
GoodsDiscount *GoodsDiscount `json:"goods_discount" gorm:"-"`
|
GoodsDiscount *GoodsDiscount `json:"goods_discount" gorm:"-"`
|
||||||
|
@ -203,6 +203,12 @@ type GoodsListReq struct {
|
||||||
PageSize int `json:"page_size"`
|
PageSize int `json:"page_size"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type GoodsListResp struct {
|
||||||
|
List []Goods `json:"list"`
|
||||||
|
CurPage int `json:"cur_page"`
|
||||||
|
TotalPage int `json:"total_page"`
|
||||||
|
}
|
||||||
|
|
||||||
func (m *GoodsListReq) GoodsList() ([]Goods, int, error) {
|
func (m *GoodsListReq) GoodsList() ([]Goods, int, error) {
|
||||||
page := m.PageIdx - 1
|
page := m.PageIdx - 1
|
||||||
if page < 0 {
|
if page < 0 {
|
||||||
|
@ -248,6 +254,51 @@ func (m *GoodsListReq) GoodsList() ([]Goods, int, error) {
|
||||||
return nil, 0, err
|
return nil, 0, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 处理ERP库存:批量查询
|
||||||
|
erpIDs := make([]uint32, 0)
|
||||||
|
for _, g := range goodsList {
|
||||||
|
if g.ErpCommodityId != 0 {
|
||||||
|
erpIDs = append(erpIDs, g.ErpCommodityId)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(erpIDs) > 0 {
|
||||||
|
type ErpStockData struct {
|
||||||
|
ErpCommodityId uint32
|
||||||
|
Stock uint32
|
||||||
|
}
|
||||||
|
var stocks []ErpStockData
|
||||||
|
db := DB.Table("erp_stock_commodity").
|
||||||
|
Select("erp_commodity_id, SUM(count) AS stock").
|
||||||
|
Where("state = ?", 1).
|
||||||
|
Group("erp_commodity_id")
|
||||||
|
|
||||||
|
// 根据数量区分使用 = 或 IN
|
||||||
|
if len(erpIDs) == 1 {
|
||||||
|
db = db.Where("erp_commodity_id = ?", erpIDs[0])
|
||||||
|
} else {
|
||||||
|
db = db.Where("erp_commodity_id IN ?", erpIDs)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := db.Find(&stocks).Error; err != nil {
|
||||||
|
logger.Error("err:", err)
|
||||||
|
return nil, 0, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// 构建映射
|
||||||
|
stockMap := make(map[uint32]uint32, len(stocks))
|
||||||
|
for _, s := range stocks {
|
||||||
|
stockMap[s.ErpCommodityId] = s.Stock
|
||||||
|
}
|
||||||
|
|
||||||
|
// 给商品赋值库存
|
||||||
|
for i := range goodsList {
|
||||||
|
if goodsList[i].ErpCommodityId != 0 {
|
||||||
|
goodsList[i].ErpStock = stockMap[goodsList[i].ErpCommodityId]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return goodsList, totalPage, nil
|
return goodsList, totalPage, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
12
model/mall_cart.go
Normal file
12
model/mall_cart.go
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
package model
|
||||||
|
|
||||||
|
//go:generate goqueryset -in mall_cart.go
|
||||||
|
type MallCart struct {
|
||||||
|
Model
|
||||||
|
|
||||||
|
Uid uint64 `json:"uid" gorm:"index"`
|
||||||
|
GameCardId uint64 `json:"game_card_id"` // 游戏卡id
|
||||||
|
Count uint32 `json:"count"` // 数量
|
||||||
|
|
||||||
|
GameCard GameCard `json:"game_card" gorm:"-"`
|
||||||
|
}
|
|
@ -206,14 +206,21 @@ func ConfigAppRouter(r gin.IRouter) {
|
||||||
mall.POST("order/refund_cancel", controller.MallOrderRefundCancel) // 订单-退货-取消
|
mall.POST("order/refund_cancel", controller.MallOrderRefundCancel) // 订单-退货-取消
|
||||||
mall.POST("order/refund_send", controller.MallOrderRefundSend) // 订单-退货-填物流
|
mall.POST("order/refund_send", controller.MallOrderRefundSend) // 订单-退货-填物流
|
||||||
}
|
}
|
||||||
shoppingCart := api.Group("shopping_cart") // 心愿单/购物车
|
|
||||||
{
|
|
||||||
|
|
||||||
|
mallCart := api.Group("mall_cart") // 商城购物车
|
||||||
|
{
|
||||||
|
mallCart.Use(auth.UserAccessAuth)
|
||||||
|
mallCart.POST("list", controller.ShoppingCartList) // 商城购物车列表
|
||||||
|
mallCart.POST("add", controller.ShoppingCartAdd) // 添加商品
|
||||||
|
mallCart.POST("del", controller.ShoppingCartDel) // 删除商品
|
||||||
|
}
|
||||||
|
|
||||||
|
shoppingCart := api.Group("shopping_cart") // 租卡心愿单/购物车
|
||||||
|
{
|
||||||
shoppingCart.Use(auth.UserAccessAuth)
|
shoppingCart.Use(auth.UserAccessAuth)
|
||||||
shoppingCart.POST("list", controller.ShoppingCartList) // 详情
|
shoppingCart.POST("list", controller.ShoppingCartList) // 详情
|
||||||
shoppingCart.POST("add", controller.ShoppingCartAdd) //
|
shoppingCart.POST("add", controller.ShoppingCartAdd) // 添加商品
|
||||||
shoppingCart.POST("del", controller.ShoppingCartDel) //
|
shoppingCart.POST("del", controller.ShoppingCartDel) // 删除商品
|
||||||
|
|
||||||
}
|
}
|
||||||
shareCard := api.Group("share_card")
|
shareCard := api.Group("share_card")
|
||||||
{
|
{
|
||||||
|
@ -322,5 +329,4 @@ func ConfigAppRouter(r gin.IRouter) {
|
||||||
lottery.POST("/today_draw_count", controller.GetTodayDrawCount) // 查询用户当天抽奖次数
|
lottery.POST("/today_draw_count", controller.GetTodayDrawCount) // 查询用户当天抽奖次数
|
||||||
lottery.POST("/prize_order/detail", controller.GetLotteryPrizeOrderDetail) // 查询抽奖订单详情
|
lottery.POST("/prize_order/detail", controller.GetLotteryPrizeOrderDetail) // 查询抽奖订单详情
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user