Files
jx-callback/controllers/cms_sku.go

448 lines
20 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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/jxstore/misc"
"git.rosy.net.cn/jx-callback/business/jxutils"
"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 false "认证token"
// @Param parentID query int false "父ID-1表示所有缺省为-1"
// @Param isExd query bool false "是否要查饿鲜达分类"
// @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, params.IsExd)
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 "类别IDpayload中的相应字段会被忽略"
// @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])"
// @Param isExd query bool false "是否要查饿鲜达分类"
// @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(), params.IsExd)
}
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无效andor指的是placeCodeisGlobal这两个条件间的关系这组条件与其它条件都是与的关系"
// @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 isSpu query bool false "是否是SPU"
// @Param isExd query bool 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表示全部"
// @Param isBySku query bool false "是否将sku拆开缺省为false"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /GetSkuNames [get,post]
func (c *SkuController) GetSkuNames() {
c.callGetSkuNames(func(params *tSkuGetSkuNamesParams) (retVal interface{}, errCode string, err error) {
retVal, err = cms.GetSkuNames(params.Ctx, params.Keyword, params.IsBySku, 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 "需要修改的商品名IDpayload中的相应数据会被忽略"
// @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) {
// var payload map[string]interface{}
// dummySkuName := &model.SkuName{}
payload := make(map[string]interface{})
if err = utils.UnmarshalUseNumber([]byte(params.Payload), &payload); err == nil {
delete(payload, "exPrefix")
delete(payload, "exPrefixBegin")
delete(payload, "exPrefixEnd")
retVal, err = cms.UpdateSkuName(params.Ctx, params.NameID, payload)
}
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 "需要修改的商品名IDpayload中的相应数据会被忽略"
// @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)
}
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"
// // @Param vendorOrgCode query string false "厂商内组织代码"
// // @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.VendorOrgCode, 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
})
}
// @Title 获取敏感词列表
// @Description 获取敏感词列表
// @Param token header string true "认证token"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /GetSensitiveWordList [get]
func (c *SkuController) GetSensitiveWordList() {
c.callGetSensitiveWordList(func(params *tSkuGetSensitiveWordListParams) (retVal interface{}, errCode string, err error) {
sensitiveWordList, err := dao.GetSensitiveWordList()
var wordList []string
for _, value := range sensitiveWordList {
wordList = append(wordList, value.Word)
}
retVal = wordList
return retVal, "", err
})
}
// @Title 子分类下商品的重排序
// @Description 子分类下商品的重排序
// @Param token header string true "认证token"
// @Param catID formData int true "商品子分类"
// @Param skuIDs formData string true "商品子分类下商品列表"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /SortCategorySkus [post]
func (c *SkuController) SortCategorySkus() {
c.callSortCategorySkus(func(params *tSkuSortCategorySkusParams) (retVal interface{}, errCode string, err error) {
var skuIDList []int
if err = jxutils.Strings2Objs(params.SkuIDs, &skuIDList); err == nil {
err = cms.SortCategorySkus(params.Ctx, params.CatID, skuIDList)
}
return retVal, "", err
})
}
// @Title 按照当前城市近30天销量排序显示本店价格附近5公里平均价格差评数量本店销量情况本市总销量
// @Description 按照当前城市近30天销量排序显示本店价格附近5公里平均价格差评数量本店销量情况本市总销量
// @Param token header string true "认证token"
// @Param storeID query int true "京西门店ID"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /GetStoreSkuSalesInfo [get]
func (c *SkuController) GetStoreSkuSalesInfo() {
c.callGetStoreSkuSalesInfo(func(params *tSkuGetStoreSkuSalesInfoParams) (retVal interface{}, errCode string, err error) {
retVal, err = misc.GetStoreSkuSalesInfo(params.Ctx, params.StoreID)
return retVal, "", err
})
}
// @Title 根据名字查询京东商品UPC信息
// @Description 根据名字查询京东商品UPC信息
// @Param token header string true "认证token"
// @Param name query string false "商品名"
// @Param upcCode query string false "upcCode,不支持模糊"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /GetJdUpcCodeByName [get]
func (c *SkuController) GetJdUpcCodeByName() {
c.callGetJdUpcCodeByName(func(params *tSkuGetJdUpcCodeByNameParams) (retVal interface{}, errCode string, err error) {
retVal, err = cms.GetJdUpcCodeByName(params.Ctx, params.Name, params.UpcCode)
return retVal, "", err
})
}
// @Title 批量设置商品额外前缀
// @Description 批量设置商品额外前缀
// @Param token header string true "认证token"
// @Param nameIDs formData string true "商品nameIDs"
// @Param exPrefix formData string true "商品额外前缀"
// @Param fromDate formData string true "生效开始时间,格式 2006-01-01 "
// @Param toDate formData string true "生效结束时间,格式 2006-01-01 "
// @Param isAsync formData bool false "是否异步"
// @Param isContinueWhenError formData bool false "单个同步失败是否继续缺省false"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /UpdateSkuNamesExPrefix [put]
func (c *SkuController) UpdateSkuNamesExPrefix() {
c.callUpdateSkuNamesExPrefix(func(params *tSkuUpdateSkuNamesExPrefixParams) (retVal interface{}, errCode string, err error) {
var skuIDList []int
if err = jxutils.Strings2Objs(params.NameIDs, &skuIDList); err == nil {
retVal, err = cms.UpdateSkuNamesExPrefix(params.Ctx, skuIDList, params.ExPrefix, params.FromDate, params.ToDate, params.IsAsync, params.IsContinueWhenError)
}
return retVal, "", err
})
}
// @Title 合并饿鲜达商品库
// @Description 合并饿鲜达商品库
// @Param token header string true "认证token"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /SumExianDaDepot [put]
func (c *SkuController) SumExianDaDepot() {
c.callSumExianDaDepot(func(params *tSkuSumExianDaDepotParams) (retVal interface{}, errCode string, err error) {
err = cms.SumExianDaDepot(params.Ctx)
return retVal, "", err
})
}
// @Title 复制一个饿百的店的商品的价格到京西饿鲜达商品
// @Description 复制一个饿百的店的商品的价格到京西饿鲜达商品
// @Param token header string true "认证token"
// @Param baiduShopID formdata string true "饿百店ID"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /CopyEbaiSkuPriceToJx [post]
func (c *SkuController) CopyEbaiSkuPriceToJx() {
c.callCopyEbaiSkuPriceToJx(func(params *tSkuCopyEbaiSkuPriceToJxParams) (retVal interface{}, errCode string, err error) {
err = cms.CopyEbaiSkuPriceToJx(params.Ctx, params.BaiduShopID)
return retVal, "", err
})
}