package controllers import ( "math" "time" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxstore/cms" "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/model/dao" "github.com/astaxie/beego" ) type StoreSkuController struct { beego.Controller } // @Title 得到商家商品信息 // @Description 得到商家商品信息,如下条件之间是与的关系。对于没有认领的商品,按城市限制。但对于已经认领的商品就不限制了,因为已经在平台上可售,可以操作(改价等等) // @Param token header string true "认证token" // @Param storeID query int true "门店ID" // @Param isFocus query bool true "是否已关注(认领)" // @Param keyword query string false "查询关键字(可以为空,为空表示不限制)" // @Param nameID query int false "SkuName ID" // @Param skuID query int false "Sku ID" // @Param name query string false "商品名称(不要求完全一致)" // @Param prefix query string false "商品前缀(不要求完全一致)" // @Param categoryID query int false "商品所属类别ID" // @Param unit query string false "商品单位" // @Param jdID query int false "商品京东ID" // @Param fromStatus query int false "查询起始状态(0:不可售,1:可售)" // @Param toStatus query int false "查询结束状态(0:不可售,1:可售)" // @Param stFromTime query string false "统计SKU开始时间" // @Param stToTime query string false "统计SKU结束时间" // @Param stFromCount query int false "统计SKU,结果集起始数量(包括)" // @Param stToCount query int false "统计SKU,结果集结束数量(包括)" // @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 /GetStoreSkus [get] func (c *StoreSkuController) GetStoreSkus() { c.callGetStoreSkus(func(params *tStoreSkuGetStoreSkusParams) (retVal interface{}, errCode string, err error) { retVal, err = cms.GetStoreSkus(params.Ctx, params.StoreID, params.IsFocus, params.Keyword, params.MapData, params.Offset, params.PageSize) return retVal, "", err }) } // @Title 修改商家商品绑定 // @Description 修改商家商品绑定,请换用UpdateStoresSkus // @Param token header string true "认证token" // @Param storeID formData int true 门店ID" // @Param payload formData string true "json数据,StoreSkuBindInfo对象" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /UpdateStoreSku [put] func (c *StoreSkuController) UpdateStoreSku() { c.callUpdateStoreSku(func(params *tStoreSkuUpdateStoreSkuParams) (retVal interface{}, errCode string, err error) { var skuBindInfo cms.StoreSkuBindInfo if err = utils.UnmarshalUseNumber([]byte(params.Payload), &skuBindInfo); err == nil { retVal, err = cms.UpdateStoreSku(params.Ctx, params.StoreID, &skuBindInfo) } return retVal, "", err }) } // @Title 批量修改商家商品绑定 // @Description 批量修改商家商品绑定,请换用UpdateStoresSkus // @Param token header string true "认证token" // @Param storeID formData int true "门店ID" // @Param payload formData string true "json数据,StoreSkuBindInfo对象数组" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /UpdateStoreSkus [put] func (c *StoreSkuController) UpdateStoreSkus() { c.callUpdateStoreSkus(func(params *tStoreSkuUpdateStoreSkusParams) (retVal interface{}, errCode string, err error) { var skuBindInfos []*cms.StoreSkuBindInfo if err = utils.UnmarshalUseNumber([]byte(params.Payload), &skuBindInfos); err == nil { retVal, err = cms.UpdateStoreSkus(params.Ctx, params.StoreID, skuBindInfos) } return retVal, "", err }) } // @Title 同步商家商品信息 // @Description 同步商家商品信息 // @Param token header string true "认证token" // @Param storeIDs formData string true "门店ID列表" // @Param vendorIDs formData string true "厂商ID列表" // @Param isAsync formData bool true "是否异步操作" // @Param skuIDs formData string false "SKU ID列表,缺省为全部" // @Param isContinueWhenError formData bool false "单个同步失败是否继续,缺省false" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /SyncStoresSkus [put] func (c *StoreSkuController) SyncStoresSkus() { c.callSyncStoresSkus(func(params *tStoreSkuSyncStoresSkusParams) (retVal interface{}, errCode string, err error) { db := dao.GetDB() var storeIDs []int var skuIDs []int var vendorIDs []int if err = utils.UnmarshalUseNumber([]byte(params.StoreIDs), &storeIDs); err != nil { return retVal, "", err } if err = utils.UnmarshalUseNumber([]byte(params.VendorIDs), &vendorIDs); err != nil { return retVal, "", err } if params.SkuIDs != "" { if err = utils.UnmarshalUseNumber([]byte(params.SkuIDs), &skuIDs); err != nil { return retVal, "", err } } retVal, err = cms.CurVendorSync.SyncStoresSkus(params.Ctx, db, vendorIDs, storeIDs, skuIDs, params.IsAsync, params.IsContinueWhenError) return retVal, "", err }) } // @Title 批量修改多商家商品绑定 // @Description 批量修改多商家商品绑定 // @Param token header string true "认证token" // @Param storeIDs formData string true "门店ID列表" // @Param payload formData string true "json数据,StoreSkuBindInfo对象数组" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /UpdateStoresSkus [put] func (c *StoreSkuController) UpdateStoresSkus() { c.callUpdateStoresSkus(func(params *tStoreSkuUpdateStoresSkusParams) (retVal interface{}, errCode string, err error) { var storeIDs []int var skuBindInfos []*cms.StoreSkuBindInfo if err = utils.UnmarshalUseNumber([]byte(params.StoreIDs), &storeIDs); err == nil { if err = utils.UnmarshalUseNumber([]byte(params.Payload), &skuBindInfos); err == nil { retVal, err = cms.UpdateStoresSkus(params.Ctx, storeIDs, skuBindInfos) } } return retVal, "", err }) } // @Title 拷贝门店SKU信息 // @Description 拷贝门店SKU信息(此函数当前只是本地数据操作,要同步到远端需要调用SyncStoresSkus) // @Param token header string true "认证token" // @Param fromStoreID formData int true "源门店ID" // @Param toStoreID formData int true "目标门店ID" // @Param copyMode formData string true "拷贝模式,fresh:目标门店数据全部清除后拷贝,update:确保指定的源数据全部拷贝,已有的忽略" // @Param pricePercentage formData int false "价格调整百分比,缺省为100%" // @Param categoryIDs formData string false "json数据,skuName所属的类别,[1,2,3]" // @Param skuIDs formData string false "json数据,skuID列表,[1,2,3]" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /CopyStoreSkus [post] func (c *StoreSkuController) CopyStoreSkus() { c.callCopyStoreSkus(func(params *tStoreSkuCopyStoreSkusParams) (retVal interface{}, errCode string, err error) { retVal, err = cms.CopyStoreSkus(params.Ctx, params.FromStoreID, params.ToStoreID, params.CopyMode, params.MapData, params.Ctx.GetUserName()) return retVal, "", err }) } // @Title 批量修改多商家商品可售状态 // @Description 批量修改多商家商品可售状态 // @Param token header string true "认证token" // @Param storeIDs formData string true "门店ID列表" // @Param payload formData string true "json数据,StoreSkuBindSkuInfo对象数组" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /UpdateStoresSkusSale [put] func (c *StoreSkuController) UpdateStoresSkusSale() { c.callUpdateStoresSkusSale(func(params *tStoreSkuUpdateStoresSkusSaleParams) (retVal interface{}, errCode string, err error) { var storeIDs []int var skuBindSkuInfos []*cms.StoreSkuBindSkuInfo if err = utils.UnmarshalUseNumber([]byte(params.StoreIDs), &storeIDs); err == nil { if err = utils.UnmarshalUseNumber([]byte(params.Payload), &skuBindSkuInfos); err == nil { retVal, err = cms.UpdateStoresSkusSale(params.Ctx, storeIDs, skuBindSkuInfos, params.Ctx.GetUserName()) } } return retVal, "", err }) } // @Title 得到商家商品销售情况 // @Description 得到商家商品销售情况 // @Param token header string true "认证token" // @Param storeIDs query string true "门店ID列表" // @Param skuIDs query string true "Sku ID列表" // @Param stFromTime query string true "统计SKU开始时间" // @Param stToTime query string false "统计SKU结束时间" // @Param stFromCount query int false "统计SKU,结果集起始数量(包括)" // @Param stToCount query int false "统计SKU,结果集结束数量(包括)" // @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 /GetStoresSkusSaleInfo [get] func (c *StoreSkuController) GetStoresSkusSaleInfo() { c.callGetStoresSkusSaleInfo(func(params *tStoreSkuGetStoresSkusSaleInfoParams) (retVal interface{}, errCode string, err error) { var ( storeIDs []int skuIDs []int timeList []time.Time ) if err = utils.UnmarshalUseNumber([]byte(params.StoreIDs), &storeIDs); err != nil { return retVal, "", err } if err = utils.UnmarshalUseNumber([]byte(params.SkuIDs), &skuIDs); err != nil { return retVal, "", err } if timeList, err = jxutils.BatchStr2Time(params.StFromTime, params.StToTime); err != nil { return retVal, "", err } if params.MapData["stToToCount"] == nil { params.StToCount = math.MaxInt32 } retVal, err = cms.GetStoresSkusSaleInfo(params.Ctx, storeIDs, skuIDs, timeList[0], timeList[1], params.StFromCount, params.StToCount) return retVal, "", err }) }