价格统计

This commit is contained in:
苏尹岚
2020-01-02 15:32:24 +08:00
9 changed files with 115 additions and 57 deletions

View File

@@ -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
}

View File

@@ -41,8 +41,10 @@ var (
OrderStatusUnlocked: "解锁",
OrderStatusLocked: "锁定",
// OrderStatusApplyRefund: "申请退款",
OrderStatusUndoApplyCancel: "取消申请取消",
OrderStatusApplyCancel: "申请取消",
OrderStatusUndoApplyCancel: "取消申请取消",
OrderStatusVendorRejectCancel: "拒绝取消",
OrderStatusVendorAgreeCancel: "同意取消",
OrderStatusApplyCancel: "申请取消",
OrderStatusUnknown: "一般事件",

View File

@@ -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)) + ")"

View File

@@ -93,6 +93,7 @@ var (
"鲜切",
"进口",
"冰镇",
"预售",
}
SpecialUnit = "份"

View File

@@ -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
}

View File

@@ -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

View File

@@ -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"

View File

@@ -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
})
}

View File

@@ -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",