Merge branch 'jdshop' of e.coding.net:rosydev/jx-callback into jdshop

This commit is contained in:
suyl
2020-11-11 21:10:39 +08:00
7 changed files with 160 additions and 36 deletions

View File

@@ -12,11 +12,7 @@ import (
"git.rosy.net.cn/jx-callback/business/jxstore/common" "git.rosy.net.cn/jx-callback/business/jxstore/common"
"git.rosy.net.cn/jx-callback/business/jxutils/ddmsg" "git.rosy.net.cn/jx-callback/business/jxutils/ddmsg"
"git.rosy.net.cn/jx-callback/business/jxutils/netprinter"
"git.rosy.net.cn/jx-callback/business/jxutils/smsmsg"
"git.rosy.net.cn/jx-callback/business/jxutils/tasksch" "git.rosy.net.cn/jx-callback/business/jxutils/tasksch"
"git.rosy.net.cn/jx-callback/business/jxutils/weixinmsg"
"git.rosy.net.cn/jx-callback/business/msghub"
"git.rosy.net.cn/jx-callback/business/partner/purchase/jdshop" "git.rosy.net.cn/jx-callback/business/partner/purchase/jdshop"
"git.rosy.net.cn/jx-callback/globals/api" "git.rosy.net.cn/jx-callback/globals/api"
@@ -142,7 +138,7 @@ func (c *OrderManager) OnOrderAdjust(order *model.GoodsOrder, orderStatus *model
// }, "OnAdjustOrder delete order_sku, orderID:%s", order.VendorOrderID) // }, "OnAdjustOrder delete order_sku, orderID:%s", order.VendorOrderID)
order.AdjustCount = adjustCount + 1 order.AdjustCount = adjustCount + 1
//扣点的订单需要修改订单的totalshopmoney //扣点的订单需要修改订单的totalshopmoney
if err == nil && order.EarningType == model.EarningTypePoints { if err == nil && order.OrderPayPercentage < 100 {
order2, _ := partner.GetPurchaseOrderHandlerFromVendorID(order.VendorID).GetOrder(order.VendorOrgCode, order.VendorOrderID) order2, _ := partner.GetPurchaseOrderHandlerFromVendorID(order.VendorID).GetOrder(order.VendorOrgCode, order.VendorOrderID)
order.TotalShopMoney = order2.TotalShopMoney order.TotalShopMoney = order2.TotalShopMoney
} }
@@ -364,9 +360,9 @@ func ModifyOrderSkusStock(db *dao.DaoDB, order *model.GoodsOrder, isAdd bool) (e
for _, sku := range skus { for _, sku := range skus {
storeSkus, _ := dao.GetStoresSkusInfo(db, []int{jxutils.GetSaleStoreIDFromOrder(order)}, []int{sku.SkuID}) storeSkus, _ := dao.GetStoresSkusInfo(db, []int{jxutils.GetSaleStoreIDFromOrder(order)}, []int{sku.SkuID})
if len(storeSkus) == 0 { if len(storeSkus) == 0 {
if !isAdd { // if !isAdd {
globals.SugarLogger.Warnf("此订单商品没得storsku%v,%v", order.VendorOrderID, sku.SkuID) // globals.SugarLogger.Warnf("此订单商品没得storsku%v,%v", order.VendorOrderID, sku.SkuID)
} // }
continue continue
} }
storeSku, stock := storeSkus[0], 0 storeSku, stock := storeSkus[0], 0
@@ -1845,11 +1841,11 @@ func AcceptOrRefuseOrder(ctx *jxcontext.Context, vendorOrderID string, vendorID
handler := partner.GetPurchaseOrderHandlerFromVendorID(vendorID) handler := partner.GetPurchaseOrderHandlerFromVendorID(vendorID)
err = handler.AcceptOrRefuseOrder(order, isAccept, ctx.GetUserName()) err = handler.AcceptOrRefuseOrder(order, isAccept, ctx.GetUserName())
if err == nil && isAccept && vendorID == model.VendorIDEBAI { if err == nil && isAccept && vendorID == model.VendorIDEBAI {
netprinter.PrintOrderByOrder(jxcontext.AdminCtx, order) // netprinter.PrintOrderByOrder(jxcontext.AdminCtx, order)
smsmsg.NotifyNewOrder(order) // smsmsg.NotifyNewOrder(order)
smsmsg.NotifyNewUserOrder(order) // smsmsg.NotifyNewUserOrder(order)
weixinmsg.NotifyNewOrder(order) // weixinmsg.NotifyNewOrder(order)
msghub.OnNewOrder(order) // msghub.OnNewOrder(order)
} }
return err return err
} }

View File

@@ -705,8 +705,15 @@ func (c *OrderManager) GetStoresOrderSaleInfoNew(ctx *jxcontext.Context, storeID
} }
saleInfoMap[index] = saleInfo saleInfoMap[index] = saleInfo
} }
if v.EarningType == model.EarningTypeQuote { //成都菜市
saleInfo.RealEarningPrice += v.ShopPrice * int64(v.Count) if beego.BConfig.RunMode == "prod" {
if v.EarningType == model.EarningTypeQuote && v.VendorID != model.VendorIDJD && v.CityCode != 510100 {
saleInfo.RealEarningPrice += v.ShopPrice * int64(v.Count)
}
} else {
if v.OrderPayPercentage == 100 {
saleInfo.RealEarningPrice += v.ShopPrice * int64(v.Count)
}
} }
saleInfo.ShopPrice += v.ShopPrice * int64(v.Count) saleInfo.ShopPrice += v.ShopPrice * int64(v.Count)
saleInfo.VendorPrice += v.VendorPrice * int64(v.Count) saleInfo.VendorPrice += v.VendorPrice * int64(v.Count)
@@ -715,15 +722,27 @@ func (c *OrderManager) GetStoresOrderSaleInfoNew(ctx *jxcontext.Context, storeID
if v.VendorOrderID == flagVendorOrderID { if v.VendorOrderID == flagVendorOrderID {
if k == 0 { if k == 0 {
saleInfo.EarningPrice = v.NewEarningPrice saleInfo.EarningPrice = v.NewEarningPrice
if v.EarningType == model.EarningTypePoints { if beego.BConfig.RunMode == "prod" {
saleInfo.RealEarningPrice += v.NewEarningPrice if v.EarningType == model.EarningTypePoints && v.VendorID != model.VendorIDJD && v.CityCode != 510100 {
saleInfo.RealEarningPrice += v.NewEarningPrice
}
} else {
if v.OrderPayPercentage < 100 {
saleInfo.RealEarningPrice += v.NewEarningPrice
}
} }
} }
} else { } else {
flagVendorOrderID = v.VendorOrderID flagVendorOrderID = v.VendorOrderID
saleInfo.EarningPrice += v.NewEarningPrice saleInfo.EarningPrice += v.NewEarningPrice
if v.EarningType == model.EarningTypePoints { if beego.BConfig.RunMode == "prod" {
saleInfo.RealEarningPrice += v.NewEarningPrice if v.EarningType == model.EarningTypePoints && v.VendorID != model.VendorIDJD && v.CityCode != 510100 {
saleInfo.RealEarningPrice += v.NewEarningPrice
}
} else {
if v.OrderPayPercentage < 100 {
saleInfo.RealEarningPrice += v.NewEarningPrice
}
} }
} }

View File

@@ -376,11 +376,27 @@ func (s *DefScheduler) OnOrderNew(order *model.GoodsOrder, isPending bool) (err
globals.SugarLogger.Debugf("OnOrderNew orderID:%s", order.VendorOrderID) globals.SugarLogger.Debugf("OnOrderNew orderID:%s", order.VendorOrderID)
savedOrderInfo := s.loadSavedOrderFromMap(model.Order2Status(order), false) savedOrderInfo := s.loadSavedOrderFromMap(model.Order2Status(order), false)
savedOrderInfo.SetOrder(order) savedOrderInfo.SetOrder(order)
if order.Status == model.OrderStatusWaitAccepted { if order.VendorID == model.VendorIDEBAI { //饿百订单待接单的时候就推所有东西
s.resetTimer(savedOrderInfo, nil, isPending) if order.Status == model.OrderStatusWaitAccepted || order.Status == model.OrderStatusFinishedPickup { //错序
// push.NotifyNewOrder(order) s.resetTimer(savedOrderInfo, nil, isPending)
s.notifyNewOrder(order) if order.Flag&model.OrderFlagMaskFake == 0 {
msghub.OnNewOrder(order) utils.CallFuncAsync(func() {
order = setFakeActualPayPrice(order)
netprinter.PrintOrderByOrder(jxcontext.AdminCtx, order)
//目前暂且认为AdjustCount > 0 就是调整单
if order.AdjustCount > 0 {
weixinmsg.NotifyAdjustOrder(order)
} else {
weixinmsg.NotifyNewOrder(order)
}
OrderProfitWarning(order)
smsmsg.NotifyNewOrder(order)
smsmsg.NotifyNewUserOrder(order)
push.NotifyNewOrder(order)
})
}
msghub.OnNewOrder(order)
}
} }
if order.Status >= model.OrderStatusNew { if order.Status >= model.OrderStatusNew {
s.resetTimer(savedOrderInfo, nil, isPending) s.resetTimer(savedOrderInfo, nil, isPending)
@@ -1459,7 +1475,7 @@ func setFakeActualPayPrice(order *model.GoodsOrder) (newOrder *model.GoodsOrder)
} }
func (s *DefScheduler) notifyNewOrder(order *model.GoodsOrder) { func (s *DefScheduler) notifyNewOrder(order *model.GoodsOrder) {
if order.Flag&model.OrderFlagMaskFake == 0 { if order.Flag&model.OrderFlagMaskFake == 0 && order.VendorID != model.VendorIDEBAI {
utils.CallFuncAsync(func() { utils.CallFuncAsync(func() {
order = setFakeActualPayPrice(order) order = setFakeActualPayPrice(order)
netprinter.PrintOrderByOrder(jxcontext.AdminCtx, order) netprinter.PrintOrderByOrder(jxcontext.AdminCtx, order)

View File

@@ -8,8 +8,6 @@ import (
"strings" "strings"
"time" "time"
"git.rosy.net.cn/jx-callback/business/authz/autils"
"git.rosy.net.cn/jx-callback/business/auth2/authprovider/weixin" "git.rosy.net.cn/jx-callback/business/auth2/authprovider/weixin"
"git.rosy.net.cn/jx-callback/business/partner/delivery" "git.rosy.net.cn/jx-callback/business/partner/delivery"
"github.com/360EntSecGroup-Skylar/excelize" "github.com/360EntSecGroup-Skylar/excelize"
@@ -1712,12 +1710,99 @@ func UploadJdsImage(ctx *jxcontext.Context) (err error) {
// cms.UpdateStoreSkus(ctx, 0, storeDetail.ID, skuBindInfos, true, true) // cms.UpdateStoreSkus(ctx, 0, storeDetail.ID, skuBindInfos, true, true)
// } // }
var ( var (
db = dao.GetDB() jdStoreIDs = []string{
"11734848",
"11734850",
"11734854",
"11734862",
"11734868",
"11734873",
"11734874",
"11734886",
"11748353",
"11890095",
"11800399",
"11738114",
"11857499",
"11873440",
"11883071",
"11734852",
"11886763",
"11874614",
"11734884",
"11926674",
"11929173",
"11894144",
"11734861",
"11951611",
"11800403",
"11913597",
"11980746",
"11981675",
"12011812",
"12007545",
"11734846",
"12005417",
"12005640",
"12005682",
"12006134",
"11982352",
"12007250",
"12007560",
"11982427",
"12008087",
"12035806",
"12008160",
"12008395",
"12009345",
"11940019",
"12010237",
"12010654",
"12011111",
"12006857",
"11734851",
"12030632",
"12050456",
}
jdStoreIDxipu = "11890095"
skuMap = make(map[string]*partner.StoreSkuInfo)
priceList []*pa
) )
stores, _ := dao.GetStoreList(db, nil, nil, nil, nil, "") StoreSkuFullList2BareFilter := func(storeSkuFull []*partner.SkuNameInfo) (bareStoreSkuList []*partner.StoreSkuInfo) {
for _, v := range stores { for _, v := range storeSkuFull {
cms.AddUsers4Role(jxcontext.AdminCtx, autils.NewRole("StoreBoss", v.ID), []string{"5CD3666C666711E9B19B525400E86DC0"}) for _, v2 := range v.SkuList {
if v2.Status > model.SkuStatusDontSale {
bareStoreSkuList = append(bareStoreSkuList, &v2.StoreSkuInfo)
}
}
}
return bareStoreSkuList
} }
handler := partner.GetPurchasePlatformFromVendorID(model.VendorIDJD).(partner.IPurchasePlatformStoreSkuHandler)
multiHandler := partner.GetPurchasePlatformFromVendorID(model.VendorIDJD).(partner.IMultipleStoresHandler)
allSkuNameInfoList, err := multiHandler.GetSkus(ctx, "320406", 0, "")
skuInfos := StoreSkuFullList2BareFilter(allSkuNameInfoList)
outStoreSkuList, err := handler.GetStoreSkusBareInfo(ctx, "320406", nil, 0, jdStoreIDxipu, skuInfos)
for _, v := range outStoreSkuList {
skuMap[v.VendorSkuID] = v
}
task := tasksch.NewParallelTask("初始化京东", tasksch.NewParallelConfig().SetIsContinueWhenError(true), ctx,
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
jdStoreID := batchItemList[0].(string)
outStoreSkuList2, err := handler.GetStoreSkusBareInfo(ctx, "320406", nil, 0, jdStoreID, skuInfos)
for _, v := range outStoreSkuList2 {
if skuMap[v.VendorSkuID] != nil {
continue
}
if skuMap[v.VendorSkuID].VendorPrice != v.VendorPrice {
v.VendorPrice = skuMap[v.VendorSkuID].VendorPrice
}
}
return retVal, err
}, jdStoreIDs)
tasksch.HandleTask(task, nil, true).Run()
task.GetID()
return err return err
} }

View File

@@ -45,9 +45,11 @@ type OrderSkuWithActualPayPrice struct {
StoreID int `orm:"column(store_id)" json:"storeID"` // 外部系统里记录的 jxstoreid StoreID int `orm:"column(store_id)" json:"storeID"` // 外部系统里记录的 jxstoreid
Status int `json:"status"` // 参见OrderStatus*相关的常量定义 Status int `json:"status"` // 参见OrderStatus*相关的常量定义
PayPercentage int `json:"payPercentage"` PayPercentage int `json:"payPercentage"`
NewEarningPrice int64 `json:"newEarningPrice"` OrderPayPercentage int `json:"orderPayPercentage"`
EarningType int `json:"earningType"` NewEarningPrice int64 `json:"newEarningPrice"`
EarningType int `json:"earningType"`
CityCode int `json:"cityCode"`
} }
type tGoodsAndOrder struct { type tGoodsAndOrder struct {
@@ -376,7 +378,7 @@ func GetStoreOrderSkuList(db *DaoDB, storeIDs []int, finishedAtBegin, finishedAt
sql := ` sql := `
SELECT t1.*, SELECT t1.*,
IF(t2.jx_store_id > 0, t2.jx_store_id, t2.store_id) store_id, t2.status, t2.actual_pay_price, t2.distance_freight_money, t2.waybill_tip_money, t2.new_earning_price, IF(t2.jx_store_id > 0, t2.jx_store_id, t2.store_id) store_id, t2.status, t2.actual_pay_price, t2.distance_freight_money, t2.waybill_tip_money, t2.new_earning_price,
t3.pay_percentage, t2.earning_type t3.pay_percentage, t2.earning_type, t2.order_pay_percentage, t3.city_code
FROM order_sku t1 FROM order_sku t1
JOIN goods_order t2 ON t2.vendor_order_id = t1.vendor_order_id AND t2.vendor_id = t1.vendor_id JOIN goods_order t2 ON t2.vendor_order_id = t1.vendor_order_id AND t2.vendor_id = t1.vendor_id
LEFT JOIN store t3 ON t3.id = IF(t2.jx_store_id > 0, t2.jx_store_id, t2.store_id) LEFT JOIN store t3 ON t3.id = IF(t2.jx_store_id > 0, t2.jx_store_id, t2.store_id)

View File

@@ -293,6 +293,7 @@ type Store struct {
AutoReplyType int8 `json:"autoReplyType"` // 订单评价自动回复类型 AutoReplyType int8 `json:"autoReplyType"` // 订单评价自动回复类型
LinkStoreID int `orm:"column(link_store_id);default(0);index" json:"linkStoreID"` // 关联门店ID LinkStoreID int `orm:"column(link_store_id);default(0);index" json:"linkStoreID"` // 关联门店ID
StoreLevel string `orm:"default(C);size(32)" json:"storeLevel"` // 门店等级(筛选用,京西的) StoreLevel string `orm:"default(C);size(32)" json:"storeLevel"` // 门店等级(筛选用,京西的)
Comment string `orm:"size(255)" json:"comment"` //门店备注
PrinterDisabled int8 `orm:"default(0)" json:"printerDisabled"` // 是否禁用网络打印机 PrinterDisabled int8 `orm:"default(0)" json:"printerDisabled"` // 是否禁用网络打印机
PrinterFontSize int8 `orm:"default(0)" json:"printerFontSize"` // 打印字体-10正常1 PrinterFontSize int8 `orm:"default(0)" json:"printerFontSize"` // 打印字体-10正常1

View File

@@ -248,6 +248,11 @@ func Map2Order(orderData map[string]interface{}) (order *model.GoodsOrder) {
if result[statusTimeField] == nil { // 814560888003021 orderPurchaseTime为空 if result[statusTimeField] == nil { // 814560888003021 orderPurchaseTime为空
statusTimeField = "orderStartTime" statusTimeField = "orderStartTime"
} }
//物竞天择订单备注改一下
comment := utils.TrimBlankChar(utils.Interface2String(result["orderBuyerRemark"]))
if strings.Contains(comment, "【JD】") {
comment += "【京东商城】"
}
order = &model.GoodsOrder{ order = &model.GoodsOrder{
VendorOrderID: orderID, VendorOrderID: orderID,
VendorID: model.VendorIDJD, VendorID: model.VendorIDJD,
@@ -259,7 +264,7 @@ func Map2Order(orderData map[string]interface{}) (order *model.GoodsOrder) {
ConsigneeMobile: jxutils.FormalizeMobile(utils.Interface2String(result["buyerMobile"])), ConsigneeMobile: jxutils.FormalizeMobile(utils.Interface2String(result["buyerMobile"])),
ConsigneeAddress: utils.Interface2String(result["buyerFullAddress"]), ConsigneeAddress: utils.Interface2String(result["buyerFullAddress"]),
CoordinateType: model.CoordinateTypeMars, CoordinateType: model.CoordinateTypeMars,
BuyerComment: utils.TrimBlankChar(utils.Interface2String(result["orderBuyerRemark"])), BuyerComment: comment,
ExpectedDeliveredTime: utils.Str2TimeWithDefault(utils.Interface2String(result["orderPreEndDeliveryTime"]), utils.DefaultTimeValue), ExpectedDeliveredTime: utils.Str2TimeWithDefault(utils.Interface2String(result["orderPreEndDeliveryTime"]), utils.DefaultTimeValue),
PickDeadline: utils.Str2TimeWithDefault(utils.Interface2String(result["pickDeadline"]), utils.DefaultTimeValue), // 813951615000022 pickDeadline为空 PickDeadline: utils.Str2TimeWithDefault(utils.Interface2String(result["pickDeadline"]), utils.DefaultTimeValue), // 813951615000022 pickDeadline为空
VendorStatus: utils.Int64ToStr(utils.MustInterface2Int64(result["orderStatus"])), VendorStatus: utils.Int64ToStr(utils.MustInterface2Int64(result["orderStatus"])),