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

View File

@@ -705,8 +705,15 @@ func (c *OrderManager) GetStoresOrderSaleInfoNew(ctx *jxcontext.Context, storeID
}
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.VendorPrice += v.VendorPrice * int64(v.Count)
@@ -715,15 +722,27 @@ func (c *OrderManager) GetStoresOrderSaleInfoNew(ctx *jxcontext.Context, storeID
if v.VendorOrderID == flagVendorOrderID {
if k == 0 {
saleInfo.EarningPrice = v.NewEarningPrice
if v.EarningType == model.EarningTypePoints {
saleInfo.RealEarningPrice += v.NewEarningPrice
if beego.BConfig.RunMode == "prod" {
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 {
flagVendorOrderID = v.VendorOrderID
saleInfo.EarningPrice += v.NewEarningPrice
if v.EarningType == model.EarningTypePoints {
saleInfo.RealEarningPrice += v.NewEarningPrice
if beego.BConfig.RunMode == "prod" {
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)
savedOrderInfo := s.loadSavedOrderFromMap(model.Order2Status(order), false)
savedOrderInfo.SetOrder(order)
if order.Status == model.OrderStatusWaitAccepted {
s.resetTimer(savedOrderInfo, nil, isPending)
// push.NotifyNewOrder(order)
s.notifyNewOrder(order)
msghub.OnNewOrder(order)
if order.VendorID == model.VendorIDEBAI { //饿百订单待接单的时候就推所有东西
if order.Status == model.OrderStatusWaitAccepted || order.Status == model.OrderStatusFinishedPickup { //错序
s.resetTimer(savedOrderInfo, nil, isPending)
if order.Flag&model.OrderFlagMaskFake == 0 {
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 {
s.resetTimer(savedOrderInfo, nil, isPending)
@@ -1459,7 +1475,7 @@ func setFakeActualPayPrice(order *model.GoodsOrder) (newOrder *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() {
order = setFakeActualPayPrice(order)
netprinter.PrintOrderByOrder(jxcontext.AdminCtx, order)

View File

@@ -8,8 +8,6 @@ import (
"strings"
"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/partner/delivery"
"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)
// }
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, "")
for _, v := range stores {
cms.AddUsers4Role(jxcontext.AdminCtx, autils.NewRole("StoreBoss", v.ID), []string{"5CD3666C666711E9B19B525400E86DC0"})
StoreSkuFullList2BareFilter := func(storeSkuFull []*partner.SkuNameInfo) (bareStoreSkuList []*partner.StoreSkuInfo) {
for _, v := range storeSkuFull {
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
}

View File

@@ -45,9 +45,11 @@ type OrderSkuWithActualPayPrice struct {
StoreID int `orm:"column(store_id)" json:"storeID"` // 外部系统里记录的 jxstoreid
Status int `json:"status"` // 参见OrderStatus*相关的常量定义
PayPercentage int `json:"payPercentage"`
NewEarningPrice int64 `json:"newEarningPrice"`
EarningType int `json:"earningType"`
PayPercentage int `json:"payPercentage"`
OrderPayPercentage int `json:"orderPayPercentage"`
NewEarningPrice int64 `json:"newEarningPrice"`
EarningType int `json:"earningType"`
CityCode int `json:"cityCode"`
}
type tGoodsAndOrder struct {
@@ -376,7 +378,7 @@ func GetStoreOrderSkuList(db *DaoDB, storeIDs []int, finishedAtBegin, finishedAt
sql := `
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,
t3.pay_percentage, t2.earning_type
t3.pay_percentage, t2.earning_type, t2.order_pay_percentage, t3.city_code
FROM order_sku t1
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)

View File

@@ -293,6 +293,7 @@ type Store struct {
AutoReplyType int8 `json:"autoReplyType"` // 订单评价自动回复类型
LinkStoreID int `orm:"column(link_store_id);default(0);index" json:"linkStoreID"` // 关联门店ID
StoreLevel string `orm:"default(C);size(32)" json:"storeLevel"` // 门店等级(筛选用,京西的)
Comment string `orm:"size(255)" json:"comment"` //门店备注
PrinterDisabled int8 `orm:"default(0)" json:"printerDisabled"` // 是否禁用网络打印机
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为空
statusTimeField = "orderStartTime"
}
//物竞天择订单备注改一下
comment := utils.TrimBlankChar(utils.Interface2String(result["orderBuyerRemark"]))
if strings.Contains(comment, "【JD】") {
comment += "【京东商城】"
}
order = &model.GoodsOrder{
VendorOrderID: orderID,
VendorID: model.VendorIDJD,
@@ -259,7 +264,7 @@ func Map2Order(orderData map[string]interface{}) (order *model.GoodsOrder) {
ConsigneeMobile: jxutils.FormalizeMobile(utils.Interface2String(result["buyerMobile"])),
ConsigneeAddress: utils.Interface2String(result["buyerFullAddress"]),
CoordinateType: model.CoordinateTypeMars,
BuyerComment: utils.TrimBlankChar(utils.Interface2String(result["orderBuyerRemark"])),
BuyerComment: comment,
ExpectedDeliveredTime: utils.Str2TimeWithDefault(utils.Interface2String(result["orderPreEndDeliveryTime"]), utils.DefaultTimeValue),
PickDeadline: utils.Str2TimeWithDefault(utils.Interface2String(result["pickDeadline"]), utils.DefaultTimeValue), // 813951615000022 pickDeadline为空
VendorStatus: utils.Int64ToStr(utils.MustInterface2Int64(result["orderStatus"])),