diff --git a/business/jxstore/cms/user2.go b/business/jxstore/cms/user2.go index e97213b58..64b855f2f 100644 --- a/business/jxstore/cms/user2.go +++ b/business/jxstore/cms/user2.go @@ -633,3 +633,48 @@ func QueryMyDeliveryAddress(ctx *jxcontext.Context) (addressList []*dao.UserDeli addressList, _, err = dao.QueryUserDeliveryAddress(dao.GetDB(), []string{userID}, 0, model.UnlimitedPageSize) return addressList, err } + +func SaveUserCart(ctx *jxcontext.Context, userID string, storeID int, cartItems []*model.UserCartItem) (err error) { + if userID == "" || storeID == 0 { + return fmt.Errorf("用户与门店必须要指定") + } + for _, v := range cartItems { + v.UserID = userID + v.StoreID = storeID + dao.WrapAddIDCULEntity(v, userID) + } + db := dao.GetDB() + dao.Begin(db) + defer func() { + if r := recover(); r != nil || err != nil { + dao.Rollback(db) + if r != nil { + panic(r) + } + } + }() + _, err = dao.ExecuteSQL(db, ` + DELETE t1 + FROM user_cart_item t1 + WHERE t1.user_id = ? AND t1.store_id = ? + `, userID, storeID) + if err != nil { + return err + } + err = dao.CreateMultiEntities(dao.GetDB(), cartItems) + return err +} + +func LoadUserCart(ctx *jxcontext.Context, userID string, storeID int) (cartItems []*model.UserCartItem, err error) { + if userID == "" || storeID == 0 { + return nil, fmt.Errorf("用户与门店必须要指定") + } + sql := ` + SELECT t1.* + FROM user_cart_item t1 + WHERE t1.user_id = ? AND t1.store_id = ? + ORDER BY t1.sku_id + ` + err = dao.GetRows(dao.GetDB(), &cartItems, sql, userID, storeID) + return cartItems, err +} diff --git a/business/model/user.go b/business/model/user.go index cb2d01de7..3f475a3df 100644 --- a/business/model/user.go +++ b/business/model/user.go @@ -135,15 +135,18 @@ func (*UserDeliveryAddress) TableUnique() [][]string { } type UserCartItem struct { - ModelIDCUL + ID int64 `orm:"column(id)" json:"-"` + CreatedAt time.Time `orm:"auto_now_add;type(datetime)" json:"createdAt"` + UpdatedAt time.Time `orm:"auto_now;type(datetime)" json:"-"` + LastOperator string `orm:"size(32)" json:"-"` // 最后操作员 UserID string `orm:"size(48);column(user_id)" json:"userID"` StoreID int `orm:"column(store_id)" json:"storeID"` SkuID int `orm:"column(sku_id)"` ActID int `orm:"column(act_id)" json:"actID"` - Count int `json:"count"` - AddedAt time.Time `orm:"auto_now_add;type(datetime)" json:"addedAt"` + Count int `json:"count"` + Price int `json:"price"` } func (*UserCartItem) TableUnique() [][]string { diff --git a/controllers/cms_user2.go b/controllers/cms_user2.go index bad7de7fc..b14b869a6 100644 --- a/controllers/cms_user2.go +++ b/controllers/cms_user2.go @@ -324,3 +324,37 @@ func (c *User2Controller) QueryMyDeliveryAddress() { return retVal, "", err }) } + +// @Title 得到用户指定门店的购物车信息 +// @Description 得到用户指定门店的购物车信息 +// @Param token header string true "认证token" +// @Param storeID query int true "门店ID" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /LoadMyCart [get] +func (c *User2Controller) LoadMyCart() { + c.callLoadMyCart(func(params *tUser2LoadMyCartParams) (retVal interface{}, errCode string, err error) { + _, userID := params.Ctx.GetMobileAndUserID() + retVal, err = cms.LoadUserCart(params.Ctx, userID, params.StoreID) + return retVal, "", err + }) +} + +// @Title 存储用户指定门店的购物车信息 +// @Description 存储用户指定门店的购物车信息 +// @Param token header string true "认证token" +// @Param storeID formData int true "门店ID" +// @Param payload formData string true "完整的购物车商品列表" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /SaveMyCart [post] +func (c *User2Controller) SaveMyCart() { + c.callSaveMyCart(func(params *tUser2SaveMyCartParams) (retVal interface{}, errCode string, err error) { + var cartItems []*model.UserCartItem + _, userID := params.Ctx.GetMobileAndUserID() + if err = jxutils.Strings2Objs(params.Payload, &cartItems); err == nil { + err = cms.SaveUserCart(params.Ctx, userID, params.StoreID, cartItems) + } + return retVal, "", err + }) +} diff --git a/globals/beegodb/beegodb.go b/globals/beegodb/beegodb.go index f9b462331..a46fcf679 100644 --- a/globals/beegodb/beegodb.go +++ b/globals/beegodb/beegodb.go @@ -60,6 +60,7 @@ func Init() { orm.RegisterModel(&model.DataResource{}) orm.RegisterModel(&model.UserDeliveryAddress{}) + orm.RegisterModel(&model.UserCartItem{}) // create table orm.RunSyncdb("default", false, true) }