216 lines
10 KiB
Go
216 lines
10 KiB
Go
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
|
||
})
|
||
}
|