价格统计
This commit is contained in:
@@ -1895,7 +1895,7 @@ func RefreshStoresSkuByVendor(ctx *jxcontext.Context, storeIDs []int, vendorID i
|
||||
return "", fmt.Errorf("此功能当前只支持京东到家平台")
|
||||
}
|
||||
db := dao.GetDB()
|
||||
storeMapList, err := dao.GetStoresMapList(db, nil, storeIDs, model.StoreStatusAll, model.StoreIsSyncAll, "")
|
||||
storeMapList, err := dao.GetStoresMapList(db, []int{vendorID}, storeIDs, model.StoreStatusAll, model.StoreIsSyncAll, "")
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
@@ -1912,13 +1912,13 @@ func RefreshStoresSkuByVendor(ctx *jxcontext.Context, storeIDs []int, vendorID i
|
||||
return "", err
|
||||
}
|
||||
}
|
||||
skuList, err := dao.GetSkus(db, nil, nil, nil, nil)
|
||||
skuList, err := dao.GetSkusWithVendor(db, []int{vendorID}, nil, nil, nil, false)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
skuNameMap := make(map[int]*model.SkuName)
|
||||
skuMap := make(map[int]*model.SkuAndName)
|
||||
var bareStoreSkuList []*partner.StoreSkuInfo
|
||||
skuMap := make(map[int]*dao.StoreSkuSyncInfo)
|
||||
bareStoreSkuMap := make(map[string][]*partner.StoreSkuInfo)
|
||||
for _, sku := range skuList {
|
||||
if skuNameMap[sku.NameID] == nil {
|
||||
skuNameMap[sku.NameID] = &model.SkuName{
|
||||
@@ -1927,9 +1927,9 @@ func RefreshStoresSkuByVendor(ctx *jxcontext.Context, storeIDs []int, vendorID i
|
||||
}
|
||||
skuMap[sku.ID] = sku
|
||||
|
||||
bareStoreSkuList = append(bareStoreSkuList, &partner.StoreSkuInfo{
|
||||
bareStoreSkuMap[sku.VendorOrgCode] = append(bareStoreSkuMap[sku.VendorOrgCode], &partner.StoreSkuInfo{
|
||||
SkuID: sku.ID,
|
||||
VendorSkuID: utils.Int64ToStr(sku.JdID),
|
||||
VendorSkuID: sku.VendorSkuID,
|
||||
})
|
||||
}
|
||||
|
||||
@@ -1942,7 +1942,7 @@ func RefreshStoresSkuByVendor(ctx *jxcontext.Context, storeIDs []int, vendorID i
|
||||
func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
||||
switch step {
|
||||
case 0:
|
||||
bareStoreSkuList, err2 := handler.GetStoreSkusBareInfo(ctx, oneStoreMap.VendorOrgCode, task, oneStoreMap.StoreID, oneStoreMap.VendorStoreID, bareStoreSkuList)
|
||||
bareStoreSkuList, err2 := handler.GetStoreSkusBareInfo(ctx, oneStoreMap.VendorOrgCode, task, oneStoreMap.StoreID, oneStoreMap.VendorStoreID, bareStoreSkuMap[oneStoreMap.VendorOrgCode])
|
||||
// globals.SugarLogger.Debug(utils.Format4Output(bareStoreSkuList, false))
|
||||
if err = err2; err == nil || len(bareStoreSkuList) > 0 {
|
||||
err = nil // todo 如果部分失败,强制忽略错误
|
||||
@@ -2629,15 +2629,15 @@ func GetVendorStoreSkuPrice(ctx *jxcontext.Context, vendorIDs []int, skuID int,
|
||||
outStoreSkuList []*partner.StoreSkuInfo
|
||||
)
|
||||
db := dao.GetDB()
|
||||
skuNameList, err := dao.GetSkus(db, []int{skuID}, nil, nil, nil)
|
||||
skuList, err := dao.GetSkusWithVendor(db, []int{vendorID}, []string{v}, nil, []int{skuID}, false)
|
||||
if err != nil {
|
||||
return retVal, err
|
||||
}
|
||||
if partner.IsMultiStore(vendorID) {
|
||||
multiHandler, _ := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.IMultipleStoresHandler)
|
||||
storeDetail, err = multiHandler.ReadStore(ctx, v, vendorStoreID)
|
||||
if len(skuNameList) > 0 {
|
||||
inStoreSku.VendorSkuID = utils.Int64ToStr(skuNameList[0].JdID)
|
||||
if len(skuList) > 0 {
|
||||
inStoreSku.VendorSkuID = skuList[0].VendorSkuID
|
||||
}
|
||||
} else {
|
||||
singleHandler, _ := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.ISingleStoreHandler)
|
||||
@@ -2657,7 +2657,7 @@ func GetVendorStoreSkuPrice(ctx *jxcontext.Context, vendorIDs []int, skuID int,
|
||||
StoreID: vendorStoreID,
|
||||
StoreName: storeDetail.Name,
|
||||
SkuID: skuID,
|
||||
SkuName: skuNameList[0].Name,
|
||||
SkuName: skuList[0].Name,
|
||||
VendorPrice: "",
|
||||
}
|
||||
retVal = []DataVendorStoreSkuPrice{data}
|
||||
@@ -2666,7 +2666,7 @@ func GetVendorStoreSkuPrice(ctx *jxcontext.Context, vendorIDs []int, skuID int,
|
||||
StoreID: vendorStoreID,
|
||||
StoreName: storeDetail.Name,
|
||||
SkuID: skuID,
|
||||
SkuName: skuNameList[0].Name,
|
||||
SkuName: skuList[0].Name,
|
||||
VendorPrice: utils.Float64ToStr(utils.Str2Float64(utils.Int64ToStr(outStoreSkuList[0].VendorPrice)) / 100),
|
||||
}
|
||||
retVal = []DataVendorStoreSkuPrice{data}
|
||||
@@ -3015,3 +3015,16 @@ func AutoFocusStoreSkusWithoutFocus(ctx *jxcontext.Context, skuIDs []int, isSync
|
||||
}
|
||||
return err
|
||||
}
|
||||
func UpdateStoreSkuNamePrice(ctx *jxcontext.Context, storeID, nameID, unitPrice int, isAsync bool) (hint string, err error) {
|
||||
// db := dao.GetDB()
|
||||
// skuList, err := dao.GetSkus(db, nil, []int{nameID}, nil, nil)
|
||||
// if err != nil || len(skuList) == 0 {
|
||||
// return "", err
|
||||
// }
|
||||
// var skuIDs []int
|
||||
// for _, v := range skuList {
|
||||
// skuIDs = append(skuIDs, v.ID)
|
||||
// }
|
||||
// actStoreSkuList, err :=dao.GetEffectiveActStoreSkuInfo(db, 0, nil, model.ActSkuDirectDown, []int{storeID}, skuIDs, time.Now(),time.Now())
|
||||
return hint, err
|
||||
}
|
||||
|
||||
@@ -41,8 +41,10 @@ var (
|
||||
OrderStatusUnlocked: "解锁",
|
||||
OrderStatusLocked: "锁定",
|
||||
// OrderStatusApplyRefund: "申请退款",
|
||||
OrderStatusUndoApplyCancel: "取消申请取消",
|
||||
OrderStatusApplyCancel: "申请取消",
|
||||
OrderStatusUndoApplyCancel: "取消申请取消",
|
||||
OrderStatusVendorRejectCancel: "拒绝取消",
|
||||
OrderStatusVendorAgreeCancel: "同意取消",
|
||||
OrderStatusApplyCancel: "申请取消",
|
||||
|
||||
OrderStatusUnknown: "一般事件",
|
||||
|
||||
|
||||
@@ -395,14 +395,8 @@ func GetEffectiveActStoreSkuInfo(db *DaoDB, actID int, vendorIDs []int, actType
|
||||
model.SyncFlagNewMask,
|
||||
model.ActSkuFake,
|
||||
|
||||
utils.DefaultTimeValue,
|
||||
model.SyncFlagNewMask,
|
||||
model.ActSkuFake,
|
||||
|
||||
utils.DefaultTimeValue,
|
||||
model.ActStatusCreated,
|
||||
endAt,
|
||||
beginAt,
|
||||
utils.DefaultTimeValue, model.SyncFlagNewMask, model.ActSkuFake,
|
||||
utils.DefaultTimeValue, model.ActStatusCreated, endAt, beginAt,
|
||||
}
|
||||
if len(vendorIDs) > 0 {
|
||||
sql += " AND (t1.vendor_mask & ?) <> 0 AND t3.vendor_id IN (" + GenQuestionMarks(len(vendorIDs)) + ")"
|
||||
|
||||
@@ -93,6 +93,7 @@ var (
|
||||
"鲜切",
|
||||
"进口",
|
||||
"冰镇",
|
||||
"预售",
|
||||
}
|
||||
|
||||
SpecialUnit = "份"
|
||||
|
||||
@@ -51,30 +51,34 @@ func GetCityShops(ctx *jxcontext.Context, parentTask tasksch.ITask, vendorIDs []
|
||||
func getStorePageInfo(ctx *jxcontext.Context, handler partner.IPurchasePlatformNetSpiderHandler, cityCode int, vendorStoreID string) (storePageInfo *model.PageShop, err error) {
|
||||
storePageInfo, err = handler.GetStorePageInfo(ctx, vendorStoreID)
|
||||
if err == nil && storePageInfo != nil {
|
||||
if !(storePageInfo.Lng != 0 && storePageInfo.Lat != 0) {
|
||||
storePageInfo.Lng, storePageInfo.Lat, storePageInfo.DistrictCode = api.AutonaviAPI.GetCoordinateFromAddress(storePageInfo.Address, utils.Int2Str(cityCode))
|
||||
if storePageInfo.DistrictCode == 0 && cityCode != 0 {
|
||||
if place, err := dao.GetPlaceByCode(dao.GetDB(), cityCode); err == nil {
|
||||
storePageInfo.Lng, storePageInfo.Lat, storePageInfo.DistrictCode = api.AutonaviAPI.GetCoordinateFromAddress(storePageInfo.Address, utils.Int2Str(place.ParentCode))
|
||||
}
|
||||
}
|
||||
} else if storePageInfo.DistrictCode == 0 {
|
||||
storePageInfo.DistrictCode = api.AutonaviAPI.GetCoordinateDistrictCode(storePageInfo.Lng, storePageInfo.Lat)
|
||||
}
|
||||
if storePageInfo.CityCode == 0 {
|
||||
if storePageInfo.DistrictCode != 0 {
|
||||
if place, err := dao.GetPlaceByCode(dao.GetDB(), storePageInfo.DistrictCode); err == nil {
|
||||
storePageInfo.CityCode = place.ParentCode
|
||||
}
|
||||
}
|
||||
if storePageInfo.CityCode == 0 {
|
||||
storePageInfo.CityCode = cityCode
|
||||
}
|
||||
}
|
||||
updatePageShopCityDistrictInfo(ctx, storePageInfo, cityCode)
|
||||
}
|
||||
return storePageInfo, err
|
||||
}
|
||||
|
||||
func updatePageShopCityDistrictInfo(ctx *jxcontext.Context, storePageInfo *model.PageShop, cityCode int) {
|
||||
if !(storePageInfo.Lng != 0 && storePageInfo.Lat != 0) {
|
||||
storePageInfo.Lng, storePageInfo.Lat, storePageInfo.DistrictCode = api.AutonaviAPI.GetCoordinateFromAddress(storePageInfo.Address, utils.Int2Str(cityCode))
|
||||
if storePageInfo.DistrictCode == 0 && cityCode != 0 {
|
||||
if place, err := dao.GetPlaceByCode(dao.GetDB(), cityCode); err == nil {
|
||||
storePageInfo.Lng, storePageInfo.Lat, storePageInfo.DistrictCode = api.AutonaviAPI.GetCoordinateFromAddress(storePageInfo.Address, utils.Int2Str(place.ParentCode))
|
||||
}
|
||||
}
|
||||
} else if storePageInfo.DistrictCode == 0 {
|
||||
storePageInfo.DistrictCode = api.AutonaviAPI.GetCoordinateDistrictCode(storePageInfo.Lng, storePageInfo.Lat)
|
||||
}
|
||||
if storePageInfo.CityCode == 0 {
|
||||
if storePageInfo.DistrictCode != 0 {
|
||||
if place, err := dao.GetPlaceByCode(dao.GetDB(), storePageInfo.DistrictCode); err == nil {
|
||||
storePageInfo.CityCode = place.ParentCode
|
||||
}
|
||||
}
|
||||
if storePageInfo.CityCode == 0 {
|
||||
storePageInfo.CityCode = cityCode
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func getStoreListByCoordinates(ctx *jxcontext.Context, parentTask tasksch.ITask, vendorID, cityCode int, coordList []*ditu.Coordinate) (storeList []*model.PageShop, err error) {
|
||||
if len(coordList) > 0 {
|
||||
if handler, _ := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.IPurchasePlatformNetSpiderHandler); handler != nil {
|
||||
@@ -230,28 +234,23 @@ func GetAndStoreCitiesShops(ctx *jxcontext.Context, vendorIDs []int, cityCodeLis
|
||||
return hint, err
|
||||
}
|
||||
|
||||
func RefreshPageStore(ctx *jxcontext.Context) (err error) {
|
||||
func RefreshPageShops(ctx *jxcontext.Context) (err error) {
|
||||
sql := `
|
||||
SELECT *
|
||||
FROM page_shop t1
|
||||
WHERE t1.vendor_id = 0
|
||||
`
|
||||
WHERE t1.district_code = 0 AND t1.lng != 0 AND t1.lat != 0`
|
||||
db := dao.GetDB()
|
||||
var shopList []*model.PageShop
|
||||
if err = dao.GetRows(db, &shopList, sql); err != nil {
|
||||
return err
|
||||
}
|
||||
for _, v := range shopList {
|
||||
if handler, _ := partner.GetPurchasePlatformFromVendorID(v.VendorID).(partner.IPurchasePlatformNetSpiderHandler); handler != nil {
|
||||
storePageInfo, err2 := getStorePageInfo(ctx, handler, v.CityCode, v.VendorStoreID)
|
||||
if err2 == nil {
|
||||
v.RecentOrderNum = storePageInfo.RecentOrderNum
|
||||
v.SkuCount = storePageInfo.SkuCount
|
||||
dao.UpdateEntity(db, v, "RecentOrderNum", "SkuCount")
|
||||
} else {
|
||||
globals.SugarLogger.Debugf("RefreshPageStore err:%v", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
task := tasksch.NewParallelTask(fmt.Sprintf("刷新网页门店信息:%d", len(shopList)), nil, ctx,
|
||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
pageShop := batchItemList[0].(*model.PageShop)
|
||||
updatePageShopCityDistrictInfo(ctx, pageShop, pageShop.CityCode)
|
||||
_, err = dao.UpdateEntity(db, pageShop, "CityCode", "DistrictCode", "Lng", "Lat")
|
||||
return retVal, err
|
||||
}, shopList)
|
||||
tasksch.HandleTask(task, nil, true).Run()
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -152,6 +152,7 @@ func (p *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName strin
|
||||
} else {
|
||||
storeParams.StationName = jxutils.ComposeStoreName(store.Name, model.VendorIDJD)
|
||||
}
|
||||
storeParams.StationName = utils.LimitUTF8StringLen(storeParams.StationName, jdapi.MaxStoreNameLen)
|
||||
}
|
||||
if store.SyncStatus&(model.SyncFlagNewMask|model.SyncFlagStoreAddress) != 0 {
|
||||
storeParams.StationAddress = store.Address
|
||||
|
||||
@@ -244,6 +244,23 @@ func (c *StoreSkuController) UpdateStoresSkusByBind() {
|
||||
})
|
||||
}
|
||||
|
||||
// @Title 修改门店SkuName价格
|
||||
// @Description 修改门店SkuName价格(支持活动中改价)
|
||||
// @Param token header string true "认证token"
|
||||
// @Param storeID formData int true "门店ID"
|
||||
// @Param nameID formData int true "SkuName ID"
|
||||
// @Param unitPrice formData int true "单价"
|
||||
// @Param isAsync formData bool false "是否异步操作"
|
||||
// @Success 200 {object} controllers.CallResult
|
||||
// @Failure 200 {object} controllers.CallResult
|
||||
// @router /UpdateStoreSkuNamePrice [put]
|
||||
func (c *StoreSkuController) UpdateStoreSkuNamePrice() {
|
||||
c.callUpdateStoreSkuNamePrice(func(params *tStoreSkuUpdateStoreSkuNamePriceParams) (retVal interface{}, errCode string, err error) {
|
||||
retVal, err = cms.UpdateStoreSkuNamePrice(params.Ctx, params.StoreID, params.NameID, params.UnitPrice, params.IsAsync)
|
||||
return retVal, "", err
|
||||
})
|
||||
}
|
||||
|
||||
// @Title 拷贝门店SKU信息
|
||||
// @Description 拷贝门店SKU信息(此函数当前只是本地数据操作,要同步到远端需要调用SyncStoresSkus)
|
||||
// @Param token header string true "认证token"
|
||||
|
||||
@@ -136,3 +136,16 @@ func (l PageShopList) Less(i, j int) bool {
|
||||
func (l PageShopList) Swap(i, j int) {
|
||||
l[i], l[j] = l[j], l[i]
|
||||
}
|
||||
|
||||
// @Title 刷新网页门店信息
|
||||
// @Description 刷新网页门店信息
|
||||
// @Param token header string true "认证token"
|
||||
// @Success 200 {object} controllers.CallResult
|
||||
// @Failure 200 {object} controllers.CallResult
|
||||
// @router /RefreshPageShops [post]
|
||||
func (c *NetSpiderController) RefreshPageShops() {
|
||||
c.callRefreshPageShops(func(params *tNetspiderRefreshPageShopsParams) (retVal interface{}, errCode string, err error) {
|
||||
err = netspider.RefreshPageShops(params.Ctx)
|
||||
return retVal, "", err
|
||||
})
|
||||
}
|
||||
|
||||
@@ -702,6 +702,15 @@ func init() {
|
||||
Filters: nil,
|
||||
Params: nil})
|
||||
|
||||
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:NetSpiderController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:NetSpiderController"],
|
||||
beego.ControllerComments{
|
||||
Method: "RefreshPageShops",
|
||||
Router: `/RefreshPageShops`,
|
||||
AllowHTTPMethods: []string{"post"},
|
||||
MethodParams: param.Make(),
|
||||
Filters: nil,
|
||||
Params: nil})
|
||||
|
||||
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:OrderController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:OrderController"],
|
||||
beego.ControllerComments{
|
||||
Method: "AcceptOrRefuseFailedGetOrder",
|
||||
@@ -1818,6 +1827,15 @@ func init() {
|
||||
Filters: nil,
|
||||
Params: nil})
|
||||
|
||||
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"],
|
||||
beego.ControllerComments{
|
||||
Method: "UpdateStoreSkuNamePrice",
|
||||
Router: `/UpdateStoreSkuNamePrice`,
|
||||
AllowHTTPMethods: []string{"put"},
|
||||
MethodParams: param.Make(),
|
||||
Filters: nil,
|
||||
Params: nil})
|
||||
|
||||
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"],
|
||||
beego.ControllerComments{
|
||||
Method: "UpdateStoreSkus",
|
||||
|
||||
Reference in New Issue
Block a user