package controllers import ( "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxstore/cms" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model/dao" "github.com/astaxie/beego" ) type SkuController struct { beego.Controller } // @Title 得到厂商商品类别 // @Description 得到厂商商品类别(区别于商家SKU类别) // @Param token header string true "认证token" // @Param vendorID query int true "厂商ID" // @Param parentID query string false "父ID,-1表示所有,缺省为空" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /GetVendorCategories [get] func (c *SkuController) GetVendorCategories() { c.callGetVendorCategories(func(params *tSkuGetVendorCategoriesParams) (retVal interface{}, errCode string, err error) { retVal, err = cms.GetVendorCategories(params.Ctx, params.VendorID, params.ParentID) return retVal, "", err }) } // @Title 得到商品类别 // @Description 得到商品类别(区别于厂商家SKU类别) // @Param token header string true "认证token" // @Param parentID query int false "父ID,-1表示所有,缺省为-1" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /GetCategories [get] func (c *SkuController) GetCategories() { c.callGetCategories(func(params *tSkuGetCategoriesParams) (retVal interface{}, errCode string, err error) { if c.GetString("parentID") == "" { params.ParentID = -1 } retVal, err = cms.GetCategories(params.Ctx, params.ParentID) return retVal, "", err }) } // @Title 新增商品类别 // @Description 新增商品类别(区别于厂商家SKU类别) // @Param token header string true "认证token" // @Param payload formData string true "json数据,skuCategory对象()" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /AddCategory [post] func (c *SkuController) AddCategory() { c.callAddCategory(func(params *tSkuAddCategoryParams) (retVal interface{}, errCode string, err error) { cat := &model.SkuCategory{} if err = utils.UnmarshalUseNumber([]byte(params.Payload), cat); err == nil { retVal, err = cms.AddCategory(params.Ctx, cat, params.Ctx.GetUserName()) } return retVal, "", err }) } // @Title 修改商品类别 // @Description 修改商品类别(区别于厂商家SKU类别) // @Param token header string true "认证token" // @Param categoryID formData int true "类别ID,payload中的相应字段会被忽略" // @Param payload formData string true "json数据,skuCategory对象()" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /UpdateCategory [put] func (c *SkuController) UpdateCategory() { c.callUpdateCategory(func(params *tSkuUpdateCategoryParams) (retVal interface{}, errCode string, err error) { payload := make(map[string]interface{}) if err = utils.UnmarshalUseNumber([]byte(params.Payload), &payload); err == nil { retVal, err = cms.UpdateCategory(params.Ctx, params.CategoryID, payload, params.Ctx.GetUserName()) } return retVal, "", err }) } // @Title 商品类别重排序 // @Description 商品类别重排序(区别于厂商家SKU类别) // @Param token header string true "认证token" // @Param categoryID formData int true "父ID" // @Param categoryIDs formData string true "同一父类别下的所有子类别ID列表([1,2,3,4])" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /ReorderCategories [put] func (c *SkuController) ReorderCategories() { c.callReorderCategories(func(params *tSkuReorderCategoriesParams) (retVal interface{}, errCode string, err error) { var idList []int if err = utils.UnmarshalUseNumber([]byte(params.CategoryIDs), &idList); err == nil { err = cms.ReorderCategories(params.Ctx, params.CategoryID, idList, params.Ctx.GetUserName()) } return retVal, "", err }) } // @Title 删除商品类别 // @Description 删除商品类别,只有无商品且无子类别的才能删除 // @Param token header string true "认证token" // @Param categoryID query int true "商品类别ID" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /DeleteCategory [delete] func (c *SkuController) DeleteCategory() { c.callDeleteCategory(func(params *tSkuDeleteCategoryParams) (retVal interface{}, errCode string, err error) { retVal, err = cms.DeleteCategory(params.Ctx, params.CategoryID, params.Ctx.GetUserName()) return retVal, "", err }) } // @Title 同步商家SKU类别 // @Description 同步商家SKU类别 // @Param token header string true "认证token" // @Param categoryID query int true "SKU类别ID, -1表示所有" // @Param isAsync query bool false "是否异步" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /SyncCategory [put] func (c *SkuController) SyncCategory() { c.callSyncCategory(func(params *tSkuSyncCategoryParams) (retVal interface{}, errCode string, err error) { db := dao.GetDB() retVal, err = cms.CurVendorSync.SyncCategory(params.Ctx, db, params.CategoryID, params.IsAsync, params.Ctx.GetUserName()) return retVal, "", err }) } // @Title 得到商品信息 // @Description 得到商品信息,如下条件之间是与的关系 // @Param token header string true "认证token" // @Param keyword query string false "查询关键字(可以为空,为空表示不限制)" // @Param nameIDs query string false "SkuName IDs列表" // @Param skuIDs query string false "Sku ID列表" // @Param vendorSkuIDs query string false "厂商SKU ID列表" // @Param name query string false "商品名称(不要求完全一致)" // @Param prefix query string false "商品前缀(不要求完全一致)" // @Param placeCond query string false "查询地点的条件(如果此字段没有设置,placeCode与isGlobal无效),and:与,or:或,指的是placeCode,isGlobal这两个条件间的关系,这组条件与其它条件都是与的关系" // @Param placeCode query int false "可售地点Code" // @Param isGlobal query bool false "是否全球可售" // @Param categoryID query int false "商品名所属类别ID" // @Param skuCategoryID query int false "商品所属类别ID" // @Param unit query string false "商品单位" // @Param fromStatus query int false "查询起始状态(0:下架,1:正常)" // @Param toStatus query int false "查询起始状态(0:下架,1:正常)" // @Param offset query int false "门店列表起始序号(以0开始,缺省为0)" // @Param pageSize query int false "门店列表页大小(缺省为50,-1表示全部)" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /GetSkuNames [get] func (c *SkuController) GetSkuNames() { c.callGetSkuNames(func(params *tSkuGetSkuNamesParams) (retVal interface{}, errCode string, err error) { retVal, err = cms.GetSkuNames(params.Ctx, params.Keyword, params.MapData, params.Offset, params.PageSize) return retVal, "", err }) } // @Title 新增商品名(及商品)信息 // @Description 新增商品名(及商品)信息 // @Param token header string true "认证token" // @Param payload formData string true "json数据,SkuNameExt对象(),可传Skus及Places" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /AddSkuName [post] func (c *SkuController) AddSkuName() { c.callAddSkuName(func(params *tSkuAddSkuNameParams) (retVal interface{}, errCode string, err error) { skuName := &model.SkuNameExt{} if err = utils.UnmarshalUseNumber([]byte(params.Payload), skuName); err == nil { retVal, err = cms.AddSkuName(params.Ctx, skuName, params.Ctx.GetUserName()) } return retVal, "", err }) } // @Title 修改商品名信息 // @Description 修改商品名信息,注意:如果Places没有变动,不要传此字段,否则会导致不必要的删除与新增 // @Param token header string true "认证token" // @Param nameID formData int true "需要修改的商品名ID,payload中的相应数据会被忽略" // @Param payload formData string true "json数据,SkuNameExt对象(),Skus无效, Places有效" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /UpdateSkuName [put] func (c *SkuController) UpdateSkuName() { c.callUpdateSkuName(func(params *tSkuUpdateSkuNameParams) (retVal interface{}, errCode string, err error) { payload := make(map[string]interface{}) if err = utils.UnmarshalUseNumber([]byte(params.Payload), &payload); err == nil { retVal, err = cms.UpdateSkuName(params.Ctx, params.NameID, payload, params.Ctx.GetUserName()) } return retVal, "", err }) } // @Title 删除商品名 // @Description 此前商品名下的所有商品也会被级连删除 // @Param token header string true "认证token" // @Param nameID query int true "商品名ID" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /DeleteSkuName [delete] func (c *SkuController) DeleteSkuName() { c.callDeleteSkuName(func(params *tSkuDeleteSkuNameParams) (retVal interface{}, errCode string, err error) { retVal, err = cms.DeleteSkuName(params.Ctx, params.NameID, params.Ctx.GetUserName()) return retVal, "", err }) } // @Title 新增商品 // @Description 新增商品 // @Param token header string true "认证token" // @Param nameID formData int true "商品名ID, playload中的相应字段会被忽略" // @Param payload formData string true "json数据,Sku对象()" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /AddSku [post] func (c *SkuController) AddSku() { c.callAddSku(func(params *tSkuAddSkuParams) (retVal interface{}, errCode string, err error) { sku := &model.Sku{} if err = utils.UnmarshalUseNumber([]byte(params.Payload), sku); err == nil { retVal, err = cms.AddSku(params.Ctx, params.NameID, sku, params.Ctx.GetUserName()) } return retVal, "", err }) } // @Title 修改商品信息 // @Description 修改商品信息 // @Param token header string true "认证token" // @Param skuID formData int true "需要修改的商品名ID,payload中的相应数据会被忽略" // @Param payload formData string true "json数据,Sku对象" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /UpdateSku [put] func (c *SkuController) UpdateSku() { c.callUpdateSku(func(params *tSkuUpdateSkuParams) (retVal interface{}, errCode string, err error) { payload := make(map[string]interface{}) if err = utils.UnmarshalUseNumber([]byte(params.Payload), &payload); err == nil { retVal, err = cms.UpdateSku(params.Ctx, params.SkuID, payload, params.Ctx.GetUserName()) } return retVal, "", err }) } // @Title 删除商品 // @Description 删除商品 // @Param token header string true "认证token" // @Param skuID query int true "商品ID" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /DeleteSku [delete] func (c *SkuController) DeleteSku() { c.callDeleteSku(func(params *tSkuDeleteSkuParams) (retVal interface{}, errCode string, err error) { retVal, err = cms.DeleteSku(params.Ctx, params.SkuID, params.Ctx.GetUserName()) return retVal, "", err }) } // @Title 新增商品名可售地点绑定(不推荐使用) // @Description 新增商品名可售地点绑定(不推荐使用) // @Param token header string true "认证token" // @Param nameID formData int true "商品名ID" // @Param placeCode formData int true "地点代码" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /AddSkuNamePlace [post] func (c *SkuController) AddSkuNamePlace() { c.callAddSkuNamePlace(func(params *tSkuAddSkuNamePlaceParams) (retVal interface{}, errCode string, err error) { retVal, err = cms.AddSkuNamePlace(params.Ctx, params.NameID, params.PlaceCode, params.Ctx.GetUserName()) return retVal, "", err }) } // @Title 删除商品名可售地点绑定(不推荐使用) // @Description 删除商品名可售地点绑定(不推荐使用) // @Param token header string true "认证token" // @Param nameID query int true "商品名ID" // @Param placeCode query int true "地点代码" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /DeleteSkuNamePlace [delete] func (c *SkuController) DeleteSkuNamePlace() { c.callDeleteSkuNamePlace(func(params *tSkuDeleteSkuNamePlaceParams) (retVal interface{}, errCode string, err error) { retVal, err = cms.DeleteSkuNamePlace(params.Ctx, params.NameID, params.PlaceCode, params.Ctx.GetUserName()) return retVal, "", err }) } // @Title 远程查询厂商SKU信息 // @Description 远程查询厂商SKU信息,这个是实时调用API远程查询(不推荐使用) // @Param token header string true "认证token" // @Param vendorSkuID query string true "sku ID" // @Param vendorID query int true "门店所属的厂商ID" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /GetVendorSku [get] func (c *SkuController) GetVendorSku() { c.callGetVendorSku(func(params *tSkuGetVendorSkuParams) (retVal interface{}, errCode string, err error) { retVal, err = cms.GetVendorSku(params.Ctx, params.VendorID, params.VendorSkuID) return retVal, "", err }) } // @Title 同步商家SKU // @Description 同步商家SKU // @Param token header string true "认证token" // @Param nameID formData int true "name ID, -1表示所有" // @Param skuID formData int true "sku ID, -1表示所有" // @Param isAsync formData bool false "是否异步" // @Param isContinueWhenError formData bool false "单个同步失败是否继续,缺省false" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /SyncSku [put] func (c *SkuController) SyncSku() { c.callSyncSku(func(params *tSkuSyncSkuParams) (retVal interface{}, errCode string, err error) { db := dao.GetDB() retVal, err = cms.CurVendorSync.SyncSku(params.Ctx, db, params.NameID, params.SkuID, params.IsAsync, params.IsContinueWhenError, params.Ctx.GetUserName()) return retVal, "", err }) }