From 467210e9af19c54e1d72bdc5187bdefb5a4335be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 28 Aug 2020 16:53:57 +0800 Subject: [PATCH 01/53] =?UTF-8?q?=E8=81=8A=E5=A4=A9=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E5=89=8D=E7=AB=AF=E8=87=AA=E5=B7=B1=E8=B0=83=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controllers/event.go | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/controllers/event.go b/controllers/event.go index 9be62c869..f106a6d5a 100644 --- a/controllers/event.go +++ b/controllers/event.go @@ -141,17 +141,17 @@ func (c *EventController) TestWebsocket() { } ws.WriteJSON(&msg) } - records, _ := dao.GetImMessageRecord(db, c.GetString("vendorOrderID"), "", 0, -1) - if len(records) > 0 { - // 把消息 写入通道 - broadcast <- records - } else { - broadcast <- []*model.ImMessageRecord{ - &model.ImMessageRecord{ - Content: "第一条", - }, - } - } + // records, _ := dao.GetImMessageRecord(db, c.GetString("vendorOrderID"), "", 0, -1) + // if len(records) > 0 { + // 把消息 写入通道 + // broadcast <- records + // } else { + // broadcast <- []*model.ImMessageRecord{ + // &model.ImMessageRecord{ + // Content: "第一条", + // }, + // } + // } c.EnableRender = false //Beego不启用渲染 From a0d46db775c9fd3b8c794f0755bdec7f1681a90e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 28 Aug 2020 17:06:21 +0800 Subject: [PATCH 02/53] =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=A2=9E=E5=8A=A0lastm?= =?UTF-8?q?inute?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/orderman/orderman_ext.go | 11 ++++++++--- controllers/jx_order.go | 3 ++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/business/jxcallback/orderman/orderman_ext.go b/business/jxcallback/orderman/orderman_ext.go index fc5ab3c29..5c7a53f64 100644 --- a/business/jxcallback/orderman/orderman_ext.go +++ b/business/jxcallback/orderman/orderman_ext.go @@ -64,11 +64,11 @@ type OrderCount struct { Flag bool `json:"flag"` //true表示可以买 } -func (c *OrderManager) GetStoreOrderCountInfo(ctx *jxcontext.Context, storeID, lastHours int, isIncludeFake bool) (countInfo []*model.GoodsOrderCountInfo, err error) { +func (c *OrderManager) GetStoreOrderCountInfo(ctx *jxcontext.Context, storeID, lastHours, lastMinutes int, isIncludeFake bool) (countInfo []*model.GoodsOrderCountInfo, err error) { globals.SugarLogger.Debugf("GetStoreOrderCountInfo storeID:%d", storeID) if lastHours > maxLastHours { lastHours = maxLastHours - } else if lastHours == 0 { + } else if lastHours == 0 && lastMinutes == 0 { lastHours = defLastHours } @@ -80,7 +80,12 @@ func (c *OrderManager) GetStoreOrderCountInfo(ctx *jxcontext.Context, storeID, l AND t1.order_created_at >= ?` sqlParams := []interface{}{ storeID, - time.Now().Add(-time.Duration(lastHours) * time.Hour), + // time.Now().Add(-time.Duration(lastHours) * time.Hour), + } + if lastMinutes != 0 { + sqlParams = append(sqlParams, time.Now().Add(-time.Duration(lastMinutes)*time.Minute)) + } else { + sqlParams = append(sqlParams, time.Now().Add(-time.Duration(lastMinutes)*time.Hour)) } if !isIncludeFake { sql += " AND (t1.flag & ?) = 0" diff --git a/controllers/jx_order.go b/controllers/jx_order.go index 2398e74e8..fcc814a48 100644 --- a/controllers/jx_order.go +++ b/controllers/jx_order.go @@ -172,13 +172,14 @@ func (c *OrderController) CancelWaybill() { // @Param token header string true "认证token" // @Param storeID query int true "京西门店ID" // @Param lastHours query int false "最近多少小时的信息(缺省为两天)" +// @Param lastMinutes query int false "最近多少分钟的信息(缺省为不传)" // @Param isIncludeFake query bool false "是否包括假订单" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /GetStoreOrderCountInfo [get] func (c *OrderController) GetStoreOrderCountInfo() { c.callGetStoreOrderCountInfo(func(params *tOrderGetStoreOrderCountInfoParams) (retVal interface{}, errCode string, err error) { - retVal, err = orderman.FixedOrderManager.GetStoreOrderCountInfo(params.Ctx, params.StoreID, params.LastHours, params.IsIncludeFake) + retVal, err = orderman.FixedOrderManager.GetStoreOrderCountInfo(params.Ctx, params.StoreID, params.LastHours, params.LastMinutes, params.IsIncludeFake) return retVal, "", err }) } From 4048dcb47ccb1c99ea534c8f41593338c4c73a23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 28 Aug 2020 17:09:29 +0800 Subject: [PATCH 03/53] =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=A2=9E=E5=8A=A0lastm?= =?UTF-8?q?inute?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/orderman/orderman_ext.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/jxcallback/orderman/orderman_ext.go b/business/jxcallback/orderman/orderman_ext.go index 5c7a53f64..3bf1bd679 100644 --- a/business/jxcallback/orderman/orderman_ext.go +++ b/business/jxcallback/orderman/orderman_ext.go @@ -85,7 +85,7 @@ func (c *OrderManager) GetStoreOrderCountInfo(ctx *jxcontext.Context, storeID, l if lastMinutes != 0 { sqlParams = append(sqlParams, time.Now().Add(-time.Duration(lastMinutes)*time.Minute)) } else { - sqlParams = append(sqlParams, time.Now().Add(-time.Duration(lastMinutes)*time.Hour)) + sqlParams = append(sqlParams, time.Now().Add(-time.Duration(lastHours)*time.Hour)) } if !isIncludeFake { sql += " AND (t1.flag & ?) = 0" From 7f90df02abfa590b8ae70504ee9ec8cada9d8627 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 28 Aug 2020 18:23:52 +0800 Subject: [PATCH 04/53] bug --- business/partner/purchase/jx/localjx/order.go | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/business/partner/purchase/jx/localjx/order.go b/business/partner/purchase/jx/localjx/order.go index 7deb9cb19..76b87e0cc 100644 --- a/business/partner/purchase/jx/localjx/order.go +++ b/business/partner/purchase/jx/localjx/order.go @@ -815,18 +815,20 @@ func generateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64 outJxOrder.FreightPrice = 500 // } //如果是守价的订单,需要查询本期中该用户是否已经守价过,如果守价过就只算一次运费 - priceDefendOrders, _ := dao.GetPriceDefendOrder(db, "", nil, nil, []int{jxutils.GetDefendPriceIssue()}, 0, -1, -1, 1, deliveryAddress.UserID, utils.ZeroTimeValue, utils.ZeroTimeValue, false) - if len(priceDefendOrders) > 0 { - flag2 := false - for _, v := range priceDefendOrders { - if v.StoreID != jxOrder.StoreID { - flag2 = true + if jxOrder.OrderType == model.OrderTypeDefendPrice { + priceDefendOrders, _ := dao.GetPriceDefendOrder(db, "", nil, nil, []int{jxutils.GetDefendPriceIssue()}, 0, -1, -1, 1, deliveryAddress.UserID, utils.ZeroTimeValue, utils.ZeroTimeValue, false) + if len(priceDefendOrders) > 0 { + flag2 := false + for _, v := range priceDefendOrders { + if v.StoreID != jxOrder.StoreID { + flag2 = true + } } + if flag2 { + return nil, nil, fmt.Errorf("同一期不允许相同用户在不同门店进行守价!") + } + outJxOrder.FreightPrice = 0 } - if flag2 { - return nil, nil, fmt.Errorf("同一期不允许相同用户在不同门店进行守价!") - } - outJxOrder.FreightPrice = 0 } } else { outJxOrder.FreightPrice = 0 From 6750c35ebdcddcb7c3d2f6d3d1cbae7cc1c2989f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Mon, 31 Aug 2020 11:40:55 +0800 Subject: [PATCH 05/53] =?UTF-8?q?=E6=96=B0=E6=8E=A5=E5=8F=A3=E5=90=88?= =?UTF-8?q?=E5=B9=B6=E8=AE=A2=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/orderman/order.go | 139 +++++++++++++++++- business/partner/purchase/jx/localjx/order.go | 14 ++ controllers/jx_order.go | 14 ++ routers/commentsRouter_controllers.go | 9 ++ 4 files changed, 172 insertions(+), 4 deletions(-) diff --git a/business/jxcallback/orderman/order.go b/business/jxcallback/orderman/order.go index 89bc4004b..bf62b7346 100644 --- a/business/jxcallback/orderman/order.go +++ b/business/jxcallback/orderman/order.go @@ -1321,6 +1321,139 @@ func setJdsOrderSeq(order *model.GoodsOrder) (err error) { return err } +func MergeJdsOrders(ctx *jxcontext.Context, vendorOrderIDs []string) (vendorOrderIDJds string, err error) { + globals.SugarLogger.Debugf("jds MergeJdsOrders vendorOrderIDs: %v", vendorOrderIDs) + var ( + db = dao.GetDB() + orders []*model.GoodsOrder + orderSkus []*model.OrderSku + orderIDs []string + storeDuplicate = make(map[int]int) + storeID int + ) + for _, vendorOrderID := range vendorOrderIDs { + order, _ := dao.GetSimpleOrder(db, vendorOrderID) + if err != nil || order == nil { + return "", fmt.Errorf("未查询到该订单!订单号:[%v]", vendorOrderID) + } + if order.Status >= model.OrderStatusDelivering && order.Status != model.OrderStatusCanceled { + return "", fmt.Errorf("暂不支持此状态的订单进行转移!订单号:[%v]", vendorOrderID) + } + if order.VendorID != model.VendorIDJDShop { + return "", fmt.Errorf("暂不支持非京狗的订单进行转移!订单号:[%v]", vendorOrderID) + } + storeDuplicate[jxutils.GetSaleStoreIDFromOrder(order)] = jxutils.GetSaleStoreIDFromOrder(order) + orders = append(orders, order) + + //订单商品 + skus, _ := dao.GetSimpleOrderSkus(db, order.VendorOrderID, nil) + orderSkus = append(orderSkus, skus...) + + orderIDs = append(orderIDs, vendorOrderID) + } + if len(storeDuplicate) > 1 { + return "", fmt.Errorf("只能选择相同门店的订单进行合并!") + } else { + storeID = jxutils.GetSaleStoreIDFromOrder(orders[0]) + } + for _, order := range orders { + var waybill *model.Waybill + //将订单和运单取消 + waybills, err := dao.GetWaybills(db, order.VendorOrderID) + if err != nil { + return "", err + } + if len(waybills) > 0 { + for _, v := range waybills { + if v.Status != model.WaybillStatusCanceled { + waybill = v + } + } + if waybill != nil { + if waybill.WaybillVendorID != model.VendorIDJDWL { + if handler := partner.GetDeliveryPlatformFromVendorID(waybill.WaybillVendorID); handler != nil { + err = handler.Handler.CancelWaybill(waybill, 0, "订单合并被取消") + } + } + } + } + if err = jdshop.ChangeOrderStatus(order.VendorOrderID, model.OrderStatusCanceled, "订单合并被取消"); err != nil { + return "", err + } + } + //重新构建order的数据 + storeMaps, err := dao.GetStoresMapList(db, []int{model.VendorIDJDShop}, []int{storeID}, nil, model.StoreStatusAll, model.StoreIsSyncAll, "", "") + if err != nil || len(storeMaps) == 0 { + return "", fmt.Errorf("该门店未绑定京狗平台,请先绑定后再转移!门店:[%v]", storeID) + } + stores, _ := dao.GetStoreList(db, []int{storeID}, nil, nil, nil, "") + store := stores[0] + order := &model.GoodsOrder{ + StoreID: storeID, + StoreName: store.Name, + VendorStoreID: storeMaps[0].VendorStoreID, + VendorOrderID: utils.Int64ToStr(utils.Str2Int64(orders[0].VendorOrderID2)*10000) + utils.Int2Str(99), + VendorOrderID2: strings.Join(orderIDs, ","), + Status: model.OrderStatusNew, + } + setJdsOrderSeq(order) + var ( + opentime1 = jxutils.JxOperationTime2TimeByDate(store.OpenTime1, time.Now()) + opentime2 = jxutils.JxOperationTime2TimeByDate(store.OpenTime2, time.Now()) + closetime1 = jxutils.JxOperationTime2TimeByDate(store.CloseTime1, time.Now()) + closetime2 = jxutils.JxOperationTime2TimeByDate(store.CloseTime2, time.Now()) + orderCreatedAt = time.Now() + ) + if store.OpenTime1 == 0 || store.CloseTime1 == 0 { + return "", fmt.Errorf("该门店没有营业时间,不能接单!门店:[%v]", storeID) + } + if !(orderCreatedAt.Sub(opentime1) >= 0 && orderCreatedAt.Sub(closetime1) <= 0) { + if store.OpenTime2 != 0 && store.CloseTime2 != 0 { + if !(orderCreatedAt.Sub(opentime2) >= 0 && orderCreatedAt.Sub(closetime2) <= 0) { + if orderCreatedAt.Sub(opentime1) < 0 { + order.ExpectedDeliveredTime = opentime1 + order.BusinessType = model.BusinessTypeDingshida + } else { + if orderCreatedAt.Sub(opentime2) < 0 { + order.ExpectedDeliveredTime = opentime2 + } else { + order.ExpectedDeliveredTime = opentime1.AddDate(0, 0, 1) + } + order.BusinessType = model.BusinessTypeDingshida + } + } + } else { + if orderCreatedAt.Sub(opentime1) < 0 { + order.ExpectedDeliveredTime = opentime1 + } else { + order.ExpectedDeliveredTime = opentime1.AddDate(0, 0, 1) + } + order.BusinessType = model.BusinessTypeDingshida + } + } else { + order.BusinessType = model.BusinessTypeImmediate + order.ExpectedDeliveredTime = time.Now().Add(time.Hour) + } + //结算类型 + if store.PayPercentage < 50 { + order.EarningType = model.EarningTypePoints + } else { + order.EarningType = model.EarningTypeQuote + } + if storeID != model.JdShopMainStoreID { + order.DeliveryFlag = model.NO + } + //skus + for _, sku := range orderSkus { + sku.VendorOrderID = order.VendorOrderID + sku.ID = 0 + } + order.Skus = orderSkus + err = partner.CurOrderManager.OnOrderNew(order, model.Order2Status(order)) + vendorOrderIDJds = order.VendorOrderID + return vendorOrderIDJds, err +} + func TransferJdsOrder(ctx *jxcontext.Context, vendorOrderID string, storeID int) (vendorOrderIDJds string, err error) { globals.SugarLogger.Debugf("jds TransferJdsOrder vendorOrderID: %v, storeID : %v", vendorOrderID, storeID) var ( @@ -1354,10 +1487,8 @@ func TransferJdsOrder(ctx *jxcontext.Context, vendorOrderID string, storeID int) } if waybill != nil { if waybill.WaybillVendorID != model.VendorIDJDWL { - handler := partner.DeliveryPlatformHandlers[waybill.WaybillVendorID] - err = handler.Handler.CancelWaybill(waybill, 0, "订单转移被取消") - if err != nil { - return "", err + if handler := partner.GetDeliveryPlatformFromVendorID(waybill.WaybillVendorID); handler != nil { + err = handler.Handler.CancelWaybill(waybill, 0, "订单转移被取消") } } } diff --git a/business/partner/purchase/jx/localjx/order.go b/business/partner/purchase/jx/localjx/order.go index 76b87e0cc..389ca3740 100644 --- a/business/partner/purchase/jx/localjx/order.go +++ b/business/partner/purchase/jx/localjx/order.go @@ -118,6 +118,7 @@ type JxOrderInfo struct { IsBuyNowPrice int `json:"isBuyNowPrice"` IsPriceDefend int `json:"isPriceDefend"` OrderID2 string `json:"-"` + UserID string `json:"userID"` } type DeliveryTimeItem struct { @@ -878,6 +879,9 @@ func generateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64 if jxOrder.OrderType == model.OrderTypeDefendPrice { outJxOrder.Skus[0].DefendPrice = jxOrder.Skus[0].DefendPrice } + if jxOrder.UserID != "" { + outJxOrder.UserID = jxOrder.UserID + } } else { outJxOrder = nil deliveryAddress = nil @@ -954,6 +958,12 @@ func jxOrder2GoodsOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, deliveryAd } order.OrderCreatedAt = order.StatusTime order.VendorUserID = order.UserID + if order.UserID == "" && order.VendorUserID == "" { + if jxOrder.UserID != "" { + order.UserID = jxOrder.UserID + order.VendorUserID = jxOrder.UserID + } + } if jxOrder.ExpectedDeliveredTimestamp != 0 { order.ExpectedDeliveredTime = utils.Timestamp2Time(jxOrder.ExpectedDeliveredTimestamp) order.BusinessType = model.BusinessTypeDingshida @@ -1963,6 +1973,8 @@ func CreateOrderByPriceDefend(ctx *jxcontext.Context) (err error) { userOrderMap[v.AddressID] = append(userOrderMap[v.AddressID], v) } for kk, vv := range userOrderMap { + addressList, _, _ := dao.QueryUserDeliveryAddress(db, kk, nil, 0, 0) + address := addressList[0] if len(vv) == 1 { jxOrder := &JxOrderInfo{ BuyerComment: "守价订单", @@ -1975,6 +1987,7 @@ func CreateOrderByPriceDefend(ctx *jxcontext.Context) (err error) { }, IsPriceDefend: model.YES, OrderID: utils.Str2Int64(vv[0].VendorOrderID), + UserID: address.UserID, } if _, err := CreateOrder(ctx, jxOrder, kk, OrderCreateTypeNormal, 0, false); err == nil { err = SettleDiscountActByPriceDefend(ctx, vv[0], false) @@ -1989,6 +2002,7 @@ func CreateOrderByPriceDefend(ctx *jxcontext.Context) (err error) { StoreID: vv[0].StoreID, IsPriceDefend: model.YES, OrderID: GenOrderNo(ctx), + UserID: address.UserID, } for _, priceDefend := range vv { sku := &JxSkuInfo{ diff --git a/controllers/jx_order.go b/controllers/jx_order.go index fcc814a48..b4367b17d 100644 --- a/controllers/jx_order.go +++ b/controllers/jx_order.go @@ -1077,6 +1077,20 @@ func (c *OrderController) TransferJdsOrder() { }) } +// @Title 合并订单(京东商城用) +// @Description 合并订单(京东商城用) +// @Param token header string true "认证token" +// @Param vendorOrderIDs formData string true "订单号s" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /MergeJdsOrders [post] +func (c *OrderController) MergeJdsOrders() { + c.callMergeJdsOrders(func(params *tOrderMergeJdsOrdersParams) (retVal interface{}, errCode string, err error) { + + return retVal, "", err + }) +} + // @Title 京东商城订单发送京东物流 // @Description 京东商城订单发送京东物流 // @Param token header string true "认证token" diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index fc918404a..cc4663135 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -1224,6 +1224,15 @@ func init() { 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: "MergeJdsOrders", + Router: `/MergeJdsOrders`, + 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: "PartRefundOrder", From 9fa65e15a16e5521f5463fdf94380ba67d52a54f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Mon, 31 Aug 2020 11:44:43 +0800 Subject: [PATCH 06/53] =?UTF-8?q?=E6=96=B0=E6=8E=A5=E5=8F=A3=E5=90=88?= =?UTF-8?q?=E5=B9=B6=E8=AE=A2=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/orderman/order.go | 72 +++++++++++++-------------- 1 file changed, 34 insertions(+), 38 deletions(-) diff --git a/business/jxcallback/orderman/order.go b/business/jxcallback/orderman/order.go index bf62b7346..5e1d6bd6c 100644 --- a/business/jxcallback/orderman/order.go +++ b/business/jxcallback/orderman/order.go @@ -1388,51 +1388,47 @@ func MergeJdsOrders(ctx *jxcontext.Context, vendorOrderIDs []string) (vendorOrde } stores, _ := dao.GetStoreList(db, []int{storeID}, nil, nil, nil, "") store := stores[0] - order := &model.GoodsOrder{ - StoreID: storeID, - StoreName: store.Name, - VendorStoreID: storeMaps[0].VendorStoreID, - VendorOrderID: utils.Int64ToStr(utils.Str2Int64(orders[0].VendorOrderID2)*10000) + utils.Int2Str(99), - VendorOrderID2: strings.Join(orderIDs, ","), - Status: model.OrderStatusNew, - } + order := orders[0] + order.ID = 0 + order.VendorOrderID = utils.Int64ToStr(utils.Str2Int64(orders[0].VendorOrderID2)*10000) + utils.Int2Str(99) + order.VendorOrderID2 = strings.Join(orderIDs, ",") + order.Status = model.OrderStatusNew setJdsOrderSeq(order) - var ( - opentime1 = jxutils.JxOperationTime2TimeByDate(store.OpenTime1, time.Now()) - opentime2 = jxutils.JxOperationTime2TimeByDate(store.OpenTime2, time.Now()) - closetime1 = jxutils.JxOperationTime2TimeByDate(store.CloseTime1, time.Now()) - closetime2 = jxutils.JxOperationTime2TimeByDate(store.CloseTime2, time.Now()) - orderCreatedAt = time.Now() - ) - if store.OpenTime1 == 0 || store.CloseTime1 == 0 { - return "", fmt.Errorf("该门店没有营业时间,不能接单!门店:[%v]", storeID) - } - if !(orderCreatedAt.Sub(opentime1) >= 0 && orderCreatedAt.Sub(closetime1) <= 0) { - if store.OpenTime2 != 0 && store.CloseTime2 != 0 { - if !(orderCreatedAt.Sub(opentime2) >= 0 && orderCreatedAt.Sub(closetime2) <= 0) { + if order.BusinessType == model.BusinessTypeImmediate { + var ( + opentime1 = jxutils.JxOperationTime2TimeByDate(store.OpenTime1, order.CreatedAt) + opentime2 = jxutils.JxOperationTime2TimeByDate(store.OpenTime2, order.CreatedAt) + closetime1 = jxutils.JxOperationTime2TimeByDate(store.CloseTime1, order.CreatedAt) + closetime2 = jxutils.JxOperationTime2TimeByDate(store.CloseTime2, order.CreatedAt) + orderCreatedAt = order.CreatedAt + ) + if store.OpenTime1 == 0 || store.CloseTime1 == 0 { + return "", fmt.Errorf("该门店没有营业时间,不能接单!门店:[%v]", storeID) + } + if !(orderCreatedAt.Sub(opentime1) >= 0 && orderCreatedAt.Sub(closetime1) <= 0) { + if store.OpenTime2 != 0 && store.CloseTime2 != 0 { + if !(orderCreatedAt.Sub(opentime2) >= 0 && orderCreatedAt.Sub(closetime2) <= 0) { + if orderCreatedAt.Sub(opentime1) < 0 { + order.ExpectedDeliveredTime = opentime1 + order.BusinessType = model.BusinessTypeDingshida + } else { + if orderCreatedAt.Sub(opentime2) < 0 { + order.ExpectedDeliveredTime = opentime2 + } else { + order.ExpectedDeliveredTime = opentime1.AddDate(0, 0, 1) + } + order.BusinessType = model.BusinessTypeDingshida + } + } + } else { if orderCreatedAt.Sub(opentime1) < 0 { order.ExpectedDeliveredTime = opentime1 - order.BusinessType = model.BusinessTypeDingshida } else { - if orderCreatedAt.Sub(opentime2) < 0 { - order.ExpectedDeliveredTime = opentime2 - } else { - order.ExpectedDeliveredTime = opentime1.AddDate(0, 0, 1) - } - order.BusinessType = model.BusinessTypeDingshida + order.ExpectedDeliveredTime = opentime1.AddDate(0, 0, 1) } + order.BusinessType = model.BusinessTypeDingshida } - } else { - if orderCreatedAt.Sub(opentime1) < 0 { - order.ExpectedDeliveredTime = opentime1 - } else { - order.ExpectedDeliveredTime = opentime1.AddDate(0, 0, 1) - } - order.BusinessType = model.BusinessTypeDingshida } - } else { - order.BusinessType = model.BusinessTypeImmediate - order.ExpectedDeliveredTime = time.Now().Add(time.Hour) } //结算类型 if store.PayPercentage < 50 { From 4e9f514b039e0ccdef6ecd5ac1a90ee090621434 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Mon, 31 Aug 2020 13:47:04 +0800 Subject: [PATCH 07/53] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BA=AC=E4=B8=9C?= =?UTF-8?q?=E5=95=86=E5=9F=8E=E9=97=A8=E5=BA=97=E5=BA=93=E5=AD=98=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=EF=BC=8C=E5=88=A0=E9=99=A4=E7=9A=84=E4=B9=9F=E4=B8=80?= =?UTF-8?q?=E8=B5=B7=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/sync.go | 61 ++++++++++++++++++++++++++++------- business/jxstore/misc/misc.go | 2 +- 2 files changed, 50 insertions(+), 13 deletions(-) diff --git a/business/jxstore/cms/sync.go b/business/jxstore/cms/sync.go index 4a89efbd7..61aa4846a 100644 --- a/business/jxstore/cms/sync.go +++ b/business/jxstore/cms/sync.go @@ -1098,7 +1098,7 @@ func (v *VendorSync) SyncJdsStoresSkus(ctx *jxcontext.Context, storeIDs []int, i var ( db = dao.GetDB() ) - storeSkus, _ := dao.GetStoresSkusInfo(db, []int{model.JdShopMainStoreID}, nil) + // storeSkus, _ := dao.GetStoresSkusInfo(db, []int{model.JdShopMainStoreID}, nil) _, hint, err = v.LoopStoresMap2(ctx, nil, db, fmt.Sprintf("同步京东商城门店的可售信息:%v", storeIDs), isAsync, true, []int{model.VendorIDJDShop}, storeIDs, false, func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (interface{}, error) { loopMapInfo := batchItemList[0].(*LoopStoreMapInfo) @@ -1107,7 +1107,7 @@ func (v *VendorSync) SyncJdsStoresSkus(ctx *jxcontext.Context, storeIDs []int, i if storeMap.Status > model.StoreStatusDisabled && storeMap.StoreID != model.JdShopMainStoreID && storeMap.SyncRule != 0 { err = syncJdsStoresSkus(ctx, db, t, storeMap, isAsync, isContinueWhenError) } - err = syncJdsStoreStock(ctx, db, t, storeSkus, storeMap, isAsync, isContinueWhenError) + // err = syncJdsStoreStock(ctx, db, t, storeSkus, storeMap, isAsync, isContinueWhenError) } } return nil, partner.AddVendorInfo2Err(err, loopMapInfo.VendorID) @@ -1116,15 +1116,6 @@ func (v *VendorSync) SyncJdsStoresSkus(ctx *jxcontext.Context, storeIDs []int, i } func syncJdsStoreStock(ctx *jxcontext.Context, db *dao.DaoDB, parentTask tasksch.ITask, storeSkus []*model.StoreSkuBind, storeMap *model.StoreMap, isAsync, isContinueWhenError bool) (err error) { - // storeMaps, err := dao.GetStoresMapList(db, []int{model.VendorIDJDShop}, nil, nil, model.StoreStatusAll, model.StoreIsSyncAll, "", "") - // if err != nil { - // return err - // } - // storeSkus, err := dao.GetStoresSkusInfo(db, []int{model.JdShopMainStoreID}, nil) - // if err != nil { - // return err - // } - // for _, storeMap := range storeMaps { task := tasksch.NewParallelTask("syncJdsStoreStock", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx, func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { storeSku := batchItemList[0].(*model.StoreSkuBind) @@ -1146,7 +1137,53 @@ func syncJdsStoreStock(ctx *jxcontext.Context, db *dao.DaoDB, parentTask tasksch }, storeSkus) tasksch.HandleTask(task, parentTask, true).Run() _, err = task.GetResult(0) - // } + return err +} + +func SyncJdsStoreStock(ctx *jxcontext.Context, isAsync, isContinueWhenError bool) (err error) { + var ( + db = dao.GetDB() + storeMaps []*model.StoreMap + ) + sql := ` + SELECT * FROM store_map WHERE vendor_id = ? AND vendor_store_id <> '' AND store_id <> ? + ` + sqlParams := []interface{}{ + model.VendorIDJDShop, model.JdShopMainStoreID, + } + err = dao.GetRows(db, &storeMaps, sql, sqlParams) + storeSkus, err := dao.GetStoresSkusInfo(db, []int{model.JdShopMainStoreID}, nil) + if err != nil { + return err + } + task1 := tasksch.NewParallelTask("syncJdsStoreStock1", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx, + func(task1 *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { + storeMap := batchItemList[0].(*model.StoreMap) + task2 := tasksch.NewParallelTask("syncJdsStoreStock2", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx, + func(task2 *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { + storeSku := batchItemList[0].(*model.StoreSkuBind) + stock := 0 + storeSku2, _ := dao.GetStoresSkusInfo(db, []int{storeMap.StoreID}, []int{storeSku.SkuID}) + if storeSku.JdsID != 0 { + if len(storeSku2) > 0 { + if storeSku2[0].Status == model.StoreSkuBindStatusNormal && storeSku.Status == model.StoreSkuBindStatusNormal { + stock = 9999 + } + if storeMap.VendorStoreID != "" { + err = api.JdShopAPI.UpdateSkuSiteStock(storeSku.JdsID, stock, utils.Str2Int(storeMap.VendorStoreID)) + } + } else { + err = api.JdShopAPI.UpdateSkuSiteStock(storeSku.JdsID, 0, utils.Str2Int(storeMap.VendorStoreID)) + } + } + return retVal, err + }, storeSkus) + tasksch.HandleTask(task2, task1, true).Run() + _, err = task2.GetResult(0) + return retVal, err + }, storeMaps) + tasksch.HandleTask(task1, nil, true).Run() + _, err = task1.GetResult(0) return err } diff --git a/business/jxstore/misc/misc.go b/business/jxstore/misc/misc.go index fcba3d309..9ae375825 100644 --- a/business/jxstore/misc/misc.go +++ b/business/jxstore/misc/misc.go @@ -414,7 +414,7 @@ func doDailyWork2() { //同步京东商城门店的商品 cms.CurVendorSync.SyncJdsStoresSkus(jxcontext.AdminCtx, nil, true, true) //刷新京东商城的门店库存 - // cms.SyncJdsStoreStock(jxcontext.AdminCtx, dao.GetDB(), nil, true, true) + cms.SyncJdsStoreStock(jxcontext.AdminCtx, true, true) } func doDailyWork() { From 04256ca1a307e76bf9874b0efd3f717b87d6882d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Mon, 31 Aug 2020 14:17:28 +0800 Subject: [PATCH 08/53] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E9=87=8D=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 33 +++++++++++++++++++++++++++++++ business/jxstore/tempop/tempop.go | 9 +-------- 2 files changed, 34 insertions(+), 8 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 7273ffd02..3bdeacc26 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4721,6 +4721,7 @@ func StoreSkuPriceAudit(ctx *jxcontext.Context, storeSkuAudits []*model.StoreSku } return storeSkuAudits2, "", err } + // deletedDuplicateWaitAuditData(ctx, db) task := tasksch.NewParallelTask("StoreSkuPriceAudit", tasksch.NewParallelConfig().SetParallelCount(5).SetIsContinueWhenError(isContinueWhenError), ctx, func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { storeAudit := batchItemList[0].(*model.StoreSkuAudit) @@ -4801,6 +4802,38 @@ func StoreSkuPriceAudit(ctx *jxcontext.Context, storeSkuAudits []*model.StoreSku return nil, hint, err } +func DeletedDuplicateWaitAuditData(ctx *jxcontext.Context, db *dao.DaoDB) { + var ( + duplicateDatas []*model.StoreSkuAudit + duplicateMaps = make(map[int]map[int][]*model.StoreSkuAudit) + ) + sql := ` + SELECT a.* + FROM store_sku_audit a , + ( + SELECT count(*), store_id ,name_id ,status, deleted_at + FROM store_sku_audit + WHERE status = 0 + AND deleted_at = ? + GROUP BY 2,3,4,5 + HAVING count(*) > 1 + ) b + WHERE a.store_id = b.store_id + AND a.name_id = b.name_id + AND a.status= b.status + AND a.deleted_at = b.deleted_at + ` + sqlParams := []interface{}{utils.DefaultTimeValue} + dao.GetRows(db, &duplicateDatas, sql, sqlParams) + for _, v := range duplicateDatas { + duplicateMaps[v.StoreID][v.NameID] = append(duplicateMaps[v.StoreID][v.NameID], v) + } + fmt.Println("test11111111111", utils.Format4Output(duplicateMaps, false)) + // for _, v := range duplicateMaps { + + // } +} + func GetSpecialtyStoreSkus(ctx *jxcontext.Context, storeIDs, vendorIDs []int) (err error) { type SpecialtyStoreSkus struct { StoreID int `json:"门店ID"` diff --git a/business/jxstore/tempop/tempop.go b/business/jxstore/tempop/tempop.go index d3fec4dc1..9c1b56a0c 100644 --- a/business/jxstore/tempop/tempop.go +++ b/business/jxstore/tempop/tempop.go @@ -1583,14 +1583,7 @@ func UploadJdsImage(ctx *jxcontext.Context) (err error) { // fmt.Println("addList2", addList) // fmt.Println("updateList2", utils.Format4Output(updateList, false)) // fmt.Println("deleteList2", deleteList) - var skuNames []model.SkuName - sql := ` - SELECT * FROM sku_name WHERE img = 'https://image.jxc4.com/noGoodsImg.jpg' AND deleted_at = '1970-01-01 00:00:00' - ` - dao.GetRows(dao.GetDB(), &skuNames, sql, nil) - for _, v := range skuNames { - cms.DeleteSkuName(ctx, v.ID, ctx.GetUserName()) - } + cms.DeletedDuplicateWaitAuditData(ctx, dao.GetDB()) return err } From 837f5bf7f24294b92f9f1bdb821d123aed68cf14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Mon, 31 Aug 2020 14:50:57 +0800 Subject: [PATCH 09/53] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E9=87=8D=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 3bdeacc26..8adc4eace 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4803,9 +4803,10 @@ func StoreSkuPriceAudit(ctx *jxcontext.Context, storeSkuAudits []*model.StoreSku } func DeletedDuplicateWaitAuditData(ctx *jxcontext.Context, db *dao.DaoDB) { + type duplicateMaps2 map[int][]*model.StoreSkuAudit var ( duplicateDatas []*model.StoreSkuAudit - duplicateMaps = make(map[int]map[int][]*model.StoreSkuAudit) + duplicateMaps = make(map[int]duplicateMaps2) ) sql := ` SELECT a.* From f6f05571506cd179826227ffe94d27233d0074a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Mon, 31 Aug 2020 15:04:45 +0800 Subject: [PATCH 10/53] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E9=87=8D=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 8adc4eace..26af4432a 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4803,10 +4803,10 @@ func StoreSkuPriceAudit(ctx *jxcontext.Context, storeSkuAudits []*model.StoreSku } func DeletedDuplicateWaitAuditData(ctx *jxcontext.Context, db *dao.DaoDB) { - type duplicateMaps2 map[int][]*model.StoreSkuAudit var ( duplicateDatas []*model.StoreSkuAudit - duplicateMaps = make(map[int]duplicateMaps2) + duplicateMaps = make(map[int]map[int][]*model.StoreSkuAudit) + duplicateStore = make(map[int][]*model.StoreSkuAudit) ) sql := ` SELECT a.* @@ -4827,7 +4827,14 @@ func DeletedDuplicateWaitAuditData(ctx *jxcontext.Context, db *dao.DaoDB) { sqlParams := []interface{}{utils.DefaultTimeValue} dao.GetRows(db, &duplicateDatas, sql, sqlParams) for _, v := range duplicateDatas { - duplicateMaps[v.StoreID][v.NameID] = append(duplicateMaps[v.StoreID][v.NameID], v) + duplicateStore[v.StoreID] = append(duplicateStore[v.StoreID], v) + } + for k, v := range duplicateStore { + duplicateSkuName := make(map[int][]*model.StoreSkuAudit) + for _, vv := range v { + duplicateSkuName[vv.NameID] = append(duplicateSkuName[vv.NameID], vv) + } + duplicateMaps[k] = duplicateSkuName } fmt.Println("test11111111111", utils.Format4Output(duplicateMaps, false)) // for _, v := range duplicateMaps { From c30d1ab17ac809f16acfc14031b4da4f4c49d30d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Mon, 31 Aug 2020 15:15:59 +0800 Subject: [PATCH 11/53] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E9=87=8D=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 26af4432a..f39b6511a 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4805,7 +4805,6 @@ func StoreSkuPriceAudit(ctx *jxcontext.Context, storeSkuAudits []*model.StoreSku func DeletedDuplicateWaitAuditData(ctx *jxcontext.Context, db *dao.DaoDB) { var ( duplicateDatas []*model.StoreSkuAudit - duplicateMaps = make(map[int]map[int][]*model.StoreSkuAudit) duplicateStore = make(map[int][]*model.StoreSkuAudit) ) sql := ` @@ -4829,17 +4828,17 @@ func DeletedDuplicateWaitAuditData(ctx *jxcontext.Context, db *dao.DaoDB) { for _, v := range duplicateDatas { duplicateStore[v.StoreID] = append(duplicateStore[v.StoreID], v) } - for k, v := range duplicateStore { + for _, v := range duplicateStore { duplicateSkuName := make(map[int][]*model.StoreSkuAudit) for _, vv := range v { duplicateSkuName[vv.NameID] = append(duplicateSkuName[vv.NameID], vv) } - duplicateMaps[k] = duplicateSkuName + for _, vv := range duplicateSkuName { + for i := 0; i < len(vv)-1; i++ { + dao.DeleteEntity(db, vv[i]) + } + } } - fmt.Println("test11111111111", utils.Format4Output(duplicateMaps, false)) - // for _, v := range duplicateMaps { - - // } } func GetSpecialtyStoreSkus(ctx *jxcontext.Context, storeIDs, vendorIDs []int) (err error) { From 94342d6dcd5225a5a1e0f4dc14b159accd4fd2cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Mon, 31 Aug 2020 15:22:08 +0800 Subject: [PATCH 12/53] =?UTF-8?q?=E5=AE=A1=E6=A0=B8=E6=97=B6=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E9=87=8D=E5=A4=8D=E7=9A=84=E5=BE=85=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 4 ++-- business/jxstore/tempop/tempop.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index f39b6511a..7ba20c673 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4721,7 +4721,7 @@ func StoreSkuPriceAudit(ctx *jxcontext.Context, storeSkuAudits []*model.StoreSku } return storeSkuAudits2, "", err } - // deletedDuplicateWaitAuditData(ctx, db) + deletedDuplicateWaitAuditData(ctx, db) task := tasksch.NewParallelTask("StoreSkuPriceAudit", tasksch.NewParallelConfig().SetParallelCount(5).SetIsContinueWhenError(isContinueWhenError), ctx, func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { storeAudit := batchItemList[0].(*model.StoreSkuAudit) @@ -4802,7 +4802,7 @@ func StoreSkuPriceAudit(ctx *jxcontext.Context, storeSkuAudits []*model.StoreSku return nil, hint, err } -func DeletedDuplicateWaitAuditData(ctx *jxcontext.Context, db *dao.DaoDB) { +func deletedDuplicateWaitAuditData(ctx *jxcontext.Context, db *dao.DaoDB) { var ( duplicateDatas []*model.StoreSkuAudit duplicateStore = make(map[int][]*model.StoreSkuAudit) diff --git a/business/jxstore/tempop/tempop.go b/business/jxstore/tempop/tempop.go index 9c1b56a0c..5528803ea 100644 --- a/business/jxstore/tempop/tempop.go +++ b/business/jxstore/tempop/tempop.go @@ -1583,7 +1583,7 @@ func UploadJdsImage(ctx *jxcontext.Context) (err error) { // fmt.Println("addList2", addList) // fmt.Println("updateList2", utils.Format4Output(updateList, false)) // fmt.Println("deleteList2", deleteList) - cms.DeletedDuplicateWaitAuditData(ctx, dao.GetDB()) + // cms.DeletedDuplicateWaitAuditData(ctx, dao.GetDB()) return err } From fe4219535531a6099c6240ba69a72838ef37a488 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Mon, 31 Aug 2020 16:19:11 +0800 Subject: [PATCH 13/53] =?UTF-8?q?=E4=BA=AC=E8=A5=BF=E5=94=AE=E5=90=8E?= =?UTF-8?q?=E5=8D=95=EF=BC=8C=E4=BF=AE=E6=94=B9totalshopmoney=E5=92=8Cnewe?= =?UTF-8?q?anring?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/partner/purchase/jx/order_afs.go | 26 ++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/business/partner/purchase/jx/order_afs.go b/business/partner/purchase/jx/order_afs.go index 10dcbce39..448dad754 100644 --- a/business/partner/purchase/jx/order_afs.go +++ b/business/partner/purchase/jx/order_afs.go @@ -5,6 +5,10 @@ import ( "strings" "time" + "git.rosy.net.cn/jx-callback/business/jxutils" + + "git.rosy.net.cn/baseapi/platformapi/jdshopapi" + "git.rosy.net.cn/jx-callback/globals" "git.rosy.net.cn/jx-callback/business/model/dao" @@ -73,6 +77,7 @@ func (c *PurchaseHandler) PartRefundOrder(ctx *jxcontext.Context, order *model.G skuMap = make(map[int]*model.OrderSku) appID = "" salePrice int64 + db = dao.GetDB() ) if time.Now().Sub(order.OrderCreatedAt) > 24*time.Hour { return fmt.Errorf("已超过售后申请时间,如有疑问请联系门店!") @@ -122,7 +127,7 @@ func (c *PurchaseHandler) PartRefundOrder(ctx *jxcontext.Context, order *model.G } if !isJxShop(appID) { - orderPays, err := dao.GetOrderPayList(dao.GetDB(), order.VendorOrderID, order.VendorID) + orderPays, err := dao.GetOrderPayList(db, order.VendorOrderID, order.VendorID) if err == nil { _, err = localjx.RefundOrderByTL(ctx, orderPays[0], order.VendorOrderID, int(salePrice), reason) if err != nil { @@ -136,6 +141,25 @@ func (c *PurchaseHandler) PartRefundOrder(ctx *jxcontext.Context, order *model.G } else { err = partner.CurOrderManager.OnAfsOrderNew(afsOrder, orderStatus) } + //如果是扣点的单需要修改totalShopMoney等 + if err == nil && order.EarningType == model.EarningTypePoints { + var diff int64 + origin := float64(order.TotalShopMoney) / jdshopapi.JdsPayPercentage + for _, sku := range refundSkuList { + if skuMap[sku.SkuID] != nil { + diff += skuMap[sku.SkuID].SalePrice * int64(sku.Count) + } + } + order.TotalShopMoney = utils.Float64TwoInt64((origin - float64(diff)) * jdshopapi.JdsPayPercentage) + storeDetail, _ := dao.GetStoreDetail(db, jxutils.GetSaleStoreIDFromOrder(order), order.VendorID) + wayBills, _ := dao.GetWaybills(db, order.VendorOrderID) + if len(wayBills) > 0 { + jxutils.RefreshOrderEarningPrice3(order, storeDetail.PayPercentage, wayBills[0]) + } else { + jxutils.RefreshOrderEarningPrice2(order, storeDetail.PayPercentage) + } + dao.UpdateEntity(db, order, "TotalShopMoney", "NewEarningPrice") + } return err } From 3320ff243828cc789d5cbac212685a680408ffb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Mon, 31 Aug 2020 17:53:19 +0800 Subject: [PATCH 14/53] =?UTF-8?q?=E8=81=8A=E5=A4=A9=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controllers/event.go | 68 +++++++++++++++++++++++++++----------------- 1 file changed, 42 insertions(+), 26 deletions(-) diff --git a/controllers/event.go b/controllers/event.go index f106a6d5a..6450a9853 100644 --- a/controllers/event.go +++ b/controllers/event.go @@ -29,10 +29,10 @@ type EventController struct { } //连接的客户端,吧每个客户端都放进来 -var clients = make(map[*websocket.Conn]bool) +var clients = make(map[string][]*websocket.Conn) //广播频道(通道) -var broadcast = make(chan []*model.ImMessageRecord) +var broadcast = make(chan map[string][]*model.ImMessageRecord) // 配置升级程序(升级为websocket) var upgrader = websocket.Upgrader{} @@ -129,9 +129,13 @@ func (c *EventController) TestWebsocket() { log.Fatal(err) } defer ws.Close() + var ( + vendorOrderID = c.GetString("vendorOrderID") + msgMap = make(map[string][]*model.ImMessageRecord) + ) //将当前客户端放入map中 - clients[ws] = true - //聊天记录 + clients[vendorOrderID] = append(clients[vendorOrderID], ws) + db := dao.GetDB() _, _, err = jxcontext.New(nil, c.GetString("token"), c.Ctx.ResponseWriter, c.Ctx.Request) if err != nil { @@ -141,17 +145,6 @@ func (c *EventController) TestWebsocket() { } ws.WriteJSON(&msg) } - // records, _ := dao.GetImMessageRecord(db, c.GetString("vendorOrderID"), "", 0, -1) - // if len(records) > 0 { - // 把消息 写入通道 - // broadcast <- records - // } else { - // broadcast <- []*model.ImMessageRecord{ - // &model.ImMessageRecord{ - // Content: "第一条", - // }, - // } - // } c.EnableRender = false //Beego不启用渲染 @@ -161,11 +154,22 @@ func (c *EventController) TestWebsocket() { err := ws.ReadJSON(&s) if err != nil { globals.SugarLogger.Debugf("页面可能断开啦 ws.ReadJSON error: %v", err.Error()) - delete(clients, ws) //删除map中的客户端 - break //结束循环 + index := 0 + for k, v := range clients[vendorOrderID] { + if v == ws { + index = k + } + } + wsList := clients[vendorOrderID] + clients[vendorOrderID] = clients[vendorOrderID][0:0] + clients[vendorOrderID] = append(clients[vendorOrderID], wsList[0:index]...) + clients[vendorOrderID] = append(clients[vendorOrderID], wsList[index+1:len(wsList)]...) + // delete(clients, ws) //删除map中的客户端 + break //结束循环 } else { //接受消息 业务逻辑 - broadcast <- s + msgMap[vendorOrderID] = append(msgMap[vendorOrderID], s...) + broadcast <- msgMap for _, v := range s { dao.WrapAddIDCULDEntity(v, "") dao.CreateEntity(db, v) @@ -186,14 +190,26 @@ func handleMessages() { msg := <-broadcast globals.SugarLogger.Debugf("clients len %v", len(clients)) //循环map客户端 - for client := range clients { - //把通道中的消息发送给客户端 - globals.SugarLogger.Debugf("msg %v", utils.Format4Output(msg, false)) - err := client.WriteJSON(msg) - if err != nil { - globals.SugarLogger.Debugf("client.WriteJSON error: %v", err) - client.Close() //关闭 - delete(clients, client) //删除map中的客户端 + for vendorOrderID, mmsg := range msg { + for _, client := range clients[vendorOrderID] { + //把通道中的消息发送给客户端 + globals.SugarLogger.Debugf("msg %v", utils.Format4Output(mmsg, false)) + err := client.WriteJSON(mmsg) + if err != nil { + globals.SugarLogger.Debugf("client.WriteJSON error: %v", err) + client.Close() //关闭 + index := 0 + for k, v := range clients[vendorOrderID] { + if v == client { + index = k + } + } + wsList := clients[vendorOrderID] + clients[vendorOrderID] = clients[vendorOrderID][0:0] + clients[vendorOrderID] = append(clients[vendorOrderID], wsList[0:index]...) + clients[vendorOrderID] = append(clients[vendorOrderID], wsList[index+1:len(wsList)]...) + // delete(clients, client) //删除map中的客户端 + } } } } From 3e3174760aa1630b5b8de2ecc6ac2649b2bce994 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Mon, 31 Aug 2020 18:13:08 +0800 Subject: [PATCH 15/53] =?UTF-8?q?=E5=90=88=E5=B9=B6=E8=AE=A2=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controllers/jx_order.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/controllers/jx_order.go b/controllers/jx_order.go index b4367b17d..3bcf028cc 100644 --- a/controllers/jx_order.go +++ b/controllers/jx_order.go @@ -1086,7 +1086,10 @@ func (c *OrderController) TransferJdsOrder() { // @router /MergeJdsOrders [post] func (c *OrderController) MergeJdsOrders() { c.callMergeJdsOrders(func(params *tOrderMergeJdsOrdersParams) (retVal interface{}, errCode string, err error) { - + var vendorOrderIDs []string + if err = jxutils.Strings2Objs(params.VendorOrderIDs, &vendorOrderIDs); err == nil { + retVal, err = orderman.MergeJdsOrders(params.Ctx, vendorOrderIDs) + } return retVal, "", err }) } From 9cdee81b213953fd4229c0d02b781bbb06941d5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Tue, 1 Sep 2020 09:10:50 +0800 Subject: [PATCH 16/53] =?UTF-8?q?=E5=B0=9D=E8=AF=95=E9=A5=BF=E7=99=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/partner/purchase/ebai/waybill.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/business/partner/purchase/ebai/waybill.go b/business/partner/purchase/ebai/waybill.go index b8c202914..ba25910dd 100644 --- a/business/partner/purchase/ebai/waybill.go +++ b/business/partner/purchase/ebai/waybill.go @@ -5,6 +5,7 @@ import ( "git.rosy.net.cn/baseapi/platformapi/ebaiapi" "git.rosy.net.cn/baseapi/utils" + "git.rosy.net.cn/jx-callback/business/jxcallback/scheduler" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/partner" "git.rosy.net.cn/jx-callback/globals" @@ -50,6 +51,13 @@ func (c *PurchaseHandler) onWaybillMsg(msg *ebaiapi.CallbackMsg) (retVal *ebaiap order.CourierName = utils.Interface2String(result["name"]) order.CourierMobile = utils.Interface2String(result["phone"]) } + if order.Status == model.WaybillStatusNew { + order2, _ := partner.CurOrderManager.LoadOrder(order.VendorOrderID, order.WaybillVendorID) + if order2.Status == model.OrderStatusWaitAccepted { + order2.Status = model.OrderStatusNew + scheduler.CurrentScheduler.OnOrderNew(order2, false) + } + } } else if order.Status == model.WaybillStatusCanceled { utils.AfterFuncWithRecover(timeout4WaybillCancel, func() { if localOrder, err2 := partner.CurOrderManager.LoadOrder(order.VendorOrderID, model.VendorIDEBAI); err2 == nil { From 9eb7a3b841f88c57ed527646bb64b3c259598316 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Tue, 1 Sep 2020 15:20:33 +0800 Subject: [PATCH 17/53] =?UTF-8?q?=E5=93=88=E5=93=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/tempop/tempop.go | 27 +++++++++++++++++++++++++++ business/jxutils/jxutils.go | 30 ++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) diff --git a/business/jxstore/tempop/tempop.go b/business/jxstore/tempop/tempop.go index 5528803ea..48d0f3b18 100644 --- a/business/jxstore/tempop/tempop.go +++ b/business/jxstore/tempop/tempop.go @@ -1584,6 +1584,33 @@ func UploadJdsImage(ctx *jxcontext.Context) (err error) { // fmt.Println("updateList2", utils.Format4Output(updateList, false)) // fmt.Println("deleteList2", deleteList) // cms.DeletedDuplicateWaitAuditData(ctx, dao.GetDB()) + type tmp struct { + jdID string + s float64 + } + var ( + ss []*tmp + ) + storeMaps, _ := dao.GetStoresMapList(dao.GetDB(), []int{model.VendorIDJD}, nil, nil, model.StoreStatusAll, model.StoreIsSyncAll, "", "") + for _, v := range storeMaps { + station, _ := jd.GetAPI("320406").GetDeliveryRangeByStationNo2(v.VendorStoreID) + if station.DeliveryRangeType == 2 { + ss = append(ss, &tmp{ + jdID: v.VendorStoreID, + s: jxutils.ComputeSignedArea(strings.Split(station.DeliveryRange, ";")), + }) + } + } + for i := 0; i < len(ss)-1; i++ { + for j := 0; j < len(ss)-1-i; j++ { + if ss[j].s > ss[j+1].s { + temp := ss[j] + ss[j] = ss[j+1] + ss[j+1] = temp + } + } + } + fmt.Println("111111111111111111111111111111111111111", utils.Format4Output(ss, false)) return err } diff --git a/business/jxutils/jxutils.go b/business/jxutils/jxutils.go index beb7601aa..a76972b8a 100644 --- a/business/jxutils/jxutils.go +++ b/business/jxutils/jxutils.go @@ -974,3 +974,33 @@ func GetDefendPriceIssue() (issue int) { func GetLastDefendPriceIssue() (issue int) { return utils.Str2Int(time.Now().AddDate(0, 0, 1).Format("20060102")) } + +//根据一堆坐标求面积 +//有待考证,不过暂时拿来用 +func ComputeSignedArea(path []string) (s float64) { + var ( + radius = 6371009 + len = len(path) + total float64 + prev = path[len-1] + ) + if len < 3 { + return + } + prevTanLat := math.Tan(((math.Pi/2 - utils.Str2Float64(strings.Split(prev, ",")[1])/180*math.Pi) / 2)) + prevLng := utils.Str2Float64(strings.Split(prev, ",")[0]) / 180 * math.Pi + for i := 0; i < len; i++ { + tanLat := math.Tan(((math.Pi/2 - utils.Str2Float64(strings.Split(path[i], ",")[1])/180*math.Pi) / 2)) + lng := utils.Str2Float64(strings.Split(path[i], ",")[0]) / 180 * math.Pi + total += polarTriangleArea(tanLat, lng, prevTanLat, prevLng) + prevTanLat = tanLat + prevLng = lng + } + return math.Abs(total * (float64(radius) * float64(radius))) +} + +func polarTriangleArea(tan1, lng1, tan2, lng2 float64) (s float64) { + deltaLng := lng1 - lng2 + t := tan1 * tan2 + return 2 * math.Atan2(t*math.Sin(deltaLng), 1+t*math.Cos(deltaLng)) +} From fe2be21561f93afd8ed882f71b5c23f42617b568 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Tue, 1 Sep 2020 15:31:58 +0800 Subject: [PATCH 18/53] =?UTF-8?q?jd=20beta=20token=20=E6=9B=B4=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- conf/app.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/app.conf b/conf/app.conf index f8891f18b..9df9a53e6 100644 --- a/conf/app.conf +++ b/conf/app.conf @@ -401,7 +401,7 @@ enableJdShopWrite = false jdOrgCode = "320406" jdLoginName = "jd_jxcs1223" -jdToken = "77e703b7-7997-441b-a12a-2e522efb117a" +jdToken = "29afd5a8-f93f-4d4c-9fce-a7297340af59" jdAppKey = "1dba76d40cac446ca500c0391a0b6c9d" jdSecret = "a88d031a1e7b462cb1579f12e97fe7f4" From d68eebfc8ba7368e0a784e1d65431c34949fafed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Tue, 1 Sep 2020 15:35:42 +0800 Subject: [PATCH 19/53] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=BA=AC=E4=B8=9C?= =?UTF-8?q?=E9=97=A8=E5=BA=97=E8=8C=83=E5=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/tempop/tempop.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/business/jxstore/tempop/tempop.go b/business/jxstore/tempop/tempop.go index 48d0f3b18..88765e272 100644 --- a/business/jxstore/tempop/tempop.go +++ b/business/jxstore/tempop/tempop.go @@ -1595,9 +1595,10 @@ func UploadJdsImage(ctx *jxcontext.Context) (err error) { for _, v := range storeMaps { station, _ := jd.GetAPI("320406").GetDeliveryRangeByStationNo2(v.VendorStoreID) if station.DeliveryRangeType == 2 { + strs := strings.Split(station.DeliveryRange, ";") ss = append(ss, &tmp{ jdID: v.VendorStoreID, - s: jxutils.ComputeSignedArea(strings.Split(station.DeliveryRange, ";")), + s: jxutils.ComputeSignedArea(strs[:len(strs)-1]), }) } } From 1e39e255343341b8d71971d1b238c30deefb77e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Tue, 1 Sep 2020 15:41:57 +0800 Subject: [PATCH 20/53] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=BA=AC=E4=B8=9C?= =?UTF-8?q?=E9=97=A8=E5=BA=97=E8=8C=83=E5=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/tempop/tempop.go | 1 + 1 file changed, 1 insertion(+) diff --git a/business/jxstore/tempop/tempop.go b/business/jxstore/tempop/tempop.go index 88765e272..dc72f963b 100644 --- a/business/jxstore/tempop/tempop.go +++ b/business/jxstore/tempop/tempop.go @@ -1593,6 +1593,7 @@ func UploadJdsImage(ctx *jxcontext.Context) (err error) { ) storeMaps, _ := dao.GetStoresMapList(dao.GetDB(), []int{model.VendorIDJD}, nil, nil, model.StoreStatusAll, model.StoreIsSyncAll, "", "") for _, v := range storeMaps { + time.Sleep(time.Second / 2) station, _ := jd.GetAPI("320406").GetDeliveryRangeByStationNo2(v.VendorStoreID) if station.DeliveryRangeType == 2 { strs := strings.Split(station.DeliveryRange, ";") From 04fc3813724f90189bfa6d8061f23985dc779e81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Tue, 1 Sep 2020 15:44:17 +0800 Subject: [PATCH 21/53] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=BA=AC=E4=B8=9C?= =?UTF-8?q?=E9=97=A8=E5=BA=97=E8=8C=83=E5=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/tempop/tempop.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/business/jxstore/tempop/tempop.go b/business/jxstore/tempop/tempop.go index dc72f963b..afa9c0662 100644 --- a/business/jxstore/tempop/tempop.go +++ b/business/jxstore/tempop/tempop.go @@ -1594,7 +1594,10 @@ func UploadJdsImage(ctx *jxcontext.Context) (err error) { storeMaps, _ := dao.GetStoresMapList(dao.GetDB(), []int{model.VendorIDJD}, nil, nil, model.StoreStatusAll, model.StoreIsSyncAll, "", "") for _, v := range storeMaps { time.Sleep(time.Second / 2) - station, _ := jd.GetAPI("320406").GetDeliveryRangeByStationNo2(v.VendorStoreID) + station, err := jd.GetAPI("320406").GetDeliveryRangeByStationNo2(v.VendorStoreID) + if err != nil { + continue + } if station.DeliveryRangeType == 2 { strs := strings.Split(station.DeliveryRange, ";") ss = append(ss, &tmp{ From 43c88322a627bbb5fd01a70a2a12f3d41ccd088a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Tue, 1 Sep 2020 16:01:33 +0800 Subject: [PATCH 22/53] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=BA=AC=E4=B8=9C?= =?UTF-8?q?=E9=97=A8=E5=BA=97=E8=8C=83=E5=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/tempop/tempop.go | 1 + 1 file changed, 1 insertion(+) diff --git a/business/jxstore/tempop/tempop.go b/business/jxstore/tempop/tempop.go index afa9c0662..85fa60e9b 100644 --- a/business/jxstore/tempop/tempop.go +++ b/business/jxstore/tempop/tempop.go @@ -1606,6 +1606,7 @@ func UploadJdsImage(ctx *jxcontext.Context) (err error) { }) } } + fmt.Println("2222222222222222222222222222222222222222", utils.Format4Output(ss, false)) for i := 0; i < len(ss)-1; i++ { for j := 0; j < len(ss)-1-i; j++ { if ss[j].s > ss[j+1].s { From 90b9a1c487673f17c5d5ade3c078df9e5b344f39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Tue, 1 Sep 2020 16:17:04 +0800 Subject: [PATCH 23/53] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=BA=AC=E4=B8=9C?= =?UTF-8?q?=E9=97=A8=E5=BA=97=E8=8C=83=E5=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/tempop/tempop.go | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/business/jxstore/tempop/tempop.go b/business/jxstore/tempop/tempop.go index 85fa60e9b..a13843fd1 100644 --- a/business/jxstore/tempop/tempop.go +++ b/business/jxstore/tempop/tempop.go @@ -1585,8 +1585,8 @@ func UploadJdsImage(ctx *jxcontext.Context) (err error) { // fmt.Println("deleteList2", deleteList) // cms.DeletedDuplicateWaitAuditData(ctx, dao.GetDB()) type tmp struct { - jdID string - s float64 + JdID string `json:"jdID"` + S float64 `json:"s"` } var ( ss []*tmp @@ -1601,15 +1601,14 @@ func UploadJdsImage(ctx *jxcontext.Context) (err error) { if station.DeliveryRangeType == 2 { strs := strings.Split(station.DeliveryRange, ";") ss = append(ss, &tmp{ - jdID: v.VendorStoreID, - s: jxutils.ComputeSignedArea(strs[:len(strs)-1]), + JdID: v.VendorStoreID, + S: jxutils.ComputeSignedArea(strs[:len(strs)-1]), }) } } - fmt.Println("2222222222222222222222222222222222222222", utils.Format4Output(ss, false)) for i := 0; i < len(ss)-1; i++ { for j := 0; j < len(ss)-1-i; j++ { - if ss[j].s > ss[j+1].s { + if ss[j].S > ss[j+1].S { temp := ss[j] ss[j] = ss[j+1] ss[j+1] = temp From 9b14e872498ba2883a890bef2dbe50105fe50514 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Tue, 1 Sep 2020 16:40:49 +0800 Subject: [PATCH 24/53] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=BA=AC=E4=B8=9C?= =?UTF-8?q?=E9=97=A8=E5=BA=97=E8=8C=83=E5=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/tempop/tempop.go | 47 +++++++++++++++++++++++++++++-- 1 file changed, 45 insertions(+), 2 deletions(-) diff --git a/business/jxstore/tempop/tempop.go b/business/jxstore/tempop/tempop.go index a13843fd1..ac15da539 100644 --- a/business/jxstore/tempop/tempop.go +++ b/business/jxstore/tempop/tempop.go @@ -8,17 +8,21 @@ import ( "strings" "time" + "git.rosy.net.cn/baseapi" "git.rosy.net.cn/jx-callback/business/auth2/authprovider/weixin" "git.rosy.net.cn/jx-callback/business/partner/delivery" "github.com/360EntSecGroup-Skylar/excelize" "github.com/qiniu/api.v7/storage" + "git.rosy.net.cn/baseapi/platformapi/dingdingapi" "git.rosy.net.cn/baseapi/platformapi/jdapi" "git.rosy.net.cn/baseapi/platformapi/mtwmapi" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/baseapi/utils/errlist" "git.rosy.net.cn/jx-callback/business/jxstore/cms" "git.rosy.net.cn/jx-callback/business/jxutils" + "git.rosy.net.cn/jx-callback/business/jxutils/ddmsg" + "git.rosy.net.cn/jx-callback/business/jxutils/excel" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/jxutils/tasksch" "git.rosy.net.cn/jx-callback/business/model" @@ -1588,8 +1592,21 @@ func UploadJdsImage(ctx *jxcontext.Context) (err error) { JdID string `json:"jdID"` S float64 `json:"s"` } + type SpecialtyStoreSkus struct { + StoreID int `json:"门店ID"` + StoreName string `json:"门店名"` + Area float64 `json:"面积"` + } var ( - ss []*tmp + ss []*tmp + excelTitle = []string{ + "门店ID", + "门店名", + "面积", + } + sheetList []*excel.Obj2ExcelSheetConfig + specialtyStoreSkus []*SpecialtyStoreSkus + downloadURL, fileName string ) storeMaps, _ := dao.GetStoresMapList(dao.GetDB(), []int{model.VendorIDJD}, nil, nil, model.StoreStatusAll, model.StoreIsSyncAll, "", "") for _, v := range storeMaps { @@ -1615,7 +1632,33 @@ func UploadJdsImage(ctx *jxcontext.Context) (err error) { } } } - fmt.Println("111111111111111111111111111111111111111", utils.Format4Output(ss, false)) + for _, v := range ss { + storeDetail, _ := dao.GetStoreDetailByVendorStoreID(dao.GetDB(), v.JdID, model.VendorIDJD) + specialtyStoreSku := &SpecialtyStoreSkus{ + StoreID: storeDetail.ID, + StoreName: storeDetail.Name, + Area: v.S, + } + specialtyStoreSkus = append(specialtyStoreSkus, specialtyStoreSku) + } + excelConf := &excel.Obj2ExcelSheetConfig{ + Title: "sheet1", + Data: specialtyStoreSkus, + CaptionList: excelTitle, + } + sheetList = append(sheetList, excelConf) + if excelConf != nil { + downloadURL, fileName, err = jxutils.UploadExeclAndPushMsg(sheetList, "面积") + } else { + baseapi.SugarLogger.Debug("WriteToExcel: dataSuccess is nil!") + } + if err != nil { + baseapi.SugarLogger.Errorf("WriteToExcel:upload %s , %s failed error:%v", fileName, err) + } else { + noticeMsg := fmt.Sprintf("[详情点我]%s/billshow/?normal=true&path=%s \n", globals.BackstageHost, downloadURL) + ddmsg.SendUserMessage(dingdingapi.MsgTyeText, ctx.GetUserID(), "异步任务完成", noticeMsg) + baseapi.SugarLogger.Debug("WriteToExcel: dataSuccess downloadURL: [%v]", downloadURL) + } return err } From c07a82018b20a1e3119fd30b2f619ad4748b8575 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Tue, 1 Sep 2020 16:53:44 +0800 Subject: [PATCH 25/53] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E5=89=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/orderman/order.go | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/business/jxcallback/orderman/order.go b/business/jxcallback/orderman/order.go index 5e1d6bd6c..a143656b7 100644 --- a/business/jxcallback/orderman/order.go +++ b/business/jxcallback/orderman/order.go @@ -1387,9 +1387,28 @@ func MergeJdsOrders(ctx *jxcontext.Context, vendorOrderIDs []string) (vendorOrde return "", fmt.Errorf("该门店未绑定京狗平台,请先绑定后再转移!门店:[%v]", storeID) } stores, _ := dao.GetStoreList(db, []int{storeID}, nil, nil, nil, "") + var ( + newEarningPrice int64 + actualPrice int64 + shopPrice int64 + salePrice int64 + totalShop int64 + ) + for _, v := range orders { + newEarningPrice += v.NewEarningPrice + actualPrice += v.ActualPayPrice + shopPrice += v.ShopPrice + salePrice += v.SalePrice + totalShop += v.TotalShopMoney + } store := stores[0] order := orders[0] order.ID = 0 + order.NewEarningPrice = newEarningPrice + order.ActualPayPrice = actualPrice + order.SalePrice = salePrice + order.ShopPrice = shopPrice + order.TotalShopMoney = totalShop order.VendorOrderID = utils.Int64ToStr(utils.Str2Int64(orders[0].VendorOrderID2)*10000) + utils.Int2Str(99) order.VendorOrderID2 = strings.Join(orderIDs, ",") order.Status = model.OrderStatusNew From d1e28ccd4e8de275831149b7aa87ac572c3e8f33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Tue, 1 Sep 2020 17:10:12 +0800 Subject: [PATCH 26/53] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E5=89=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/tempop/tempop.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/business/jxstore/tempop/tempop.go b/business/jxstore/tempop/tempop.go index ac15da539..86de6121f 100644 --- a/business/jxstore/tempop/tempop.go +++ b/business/jxstore/tempop/tempop.go @@ -4,6 +4,7 @@ import ( "bytes" "context" "fmt" + "math" "regexp" "strings" "time" @@ -1595,6 +1596,7 @@ func UploadJdsImage(ctx *jxcontext.Context) (err error) { type SpecialtyStoreSkus struct { StoreID int `json:"门店ID"` StoreName string `json:"门店名"` + City string `json:"城市"` Area float64 `json:"面积"` } var ( @@ -1602,6 +1604,7 @@ func UploadJdsImage(ctx *jxcontext.Context) (err error) { excelTitle = []string{ "门店ID", "门店名", + "城市", "面积", } sheetList []*excel.Obj2ExcelSheetConfig @@ -1619,7 +1622,7 @@ func UploadJdsImage(ctx *jxcontext.Context) (err error) { strs := strings.Split(station.DeliveryRange, ";") ss = append(ss, &tmp{ JdID: v.VendorStoreID, - S: jxutils.ComputeSignedArea(strs[:len(strs)-1]), + S: math.Round(jxutils.ComputeSignedArea(strs[:len(strs)-1])), }) } } @@ -1634,9 +1637,11 @@ func UploadJdsImage(ctx *jxcontext.Context) (err error) { } for _, v := range ss { storeDetail, _ := dao.GetStoreDetailByVendorStoreID(dao.GetDB(), v.JdID, model.VendorIDJD) + place, _ := dao.GetPlaceByCode(dao.GetDB(), storeDetail.CityCode) specialtyStoreSku := &SpecialtyStoreSkus{ StoreID: storeDetail.ID, StoreName: storeDetail.Name, + City: place.Name, Area: v.S, } specialtyStoreSkus = append(specialtyStoreSkus, specialtyStoreSku) From d69a91a02a7df77c57c923c6e306a0340508ee08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Tue, 1 Sep 2020 17:14:04 +0800 Subject: [PATCH 27/53] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E5=89=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/model/order.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/model/order.go b/business/model/order.go index 93fcfbd00..a8f841c35 100644 --- a/business/model/order.go +++ b/business/model/order.go @@ -58,7 +58,7 @@ type ModelTimeInfo struct { type GoodsOrder struct { ID int64 `orm:"column(id)" json:"id"` VendorOrderID string `orm:"column(vendor_order_id);size(48)" json:"vendorOrderID"` - VendorOrderID2 string `orm:"column(vendor_order_id2);size(48);index" json:"vendorOrderID2"` + VendorOrderID2 string `orm:"column(vendor_order_id2);size(200);index" json:"vendorOrderID2"` VendorID int `orm:"column(vendor_id)" json:"vendorID"` VendorStoreID string `orm:"column(vendor_store_id);size(48)" json:"vendorStoreID"` StoreID int `orm:"column(store_id)" json:"storeID"` // 外部系统里记录的 jxstoreid From 05b6df6700f402858a7705ed46f8251333a91ee8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Tue, 1 Sep 2020 17:29:20 +0800 Subject: [PATCH 28/53] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E5=89=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/tempop/tempop.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/business/jxstore/tempop/tempop.go b/business/jxstore/tempop/tempop.go index 86de6121f..8ff6b4b37 100644 --- a/business/jxstore/tempop/tempop.go +++ b/business/jxstore/tempop/tempop.go @@ -1590,14 +1590,14 @@ func UploadJdsImage(ctx *jxcontext.Context) (err error) { // fmt.Println("deleteList2", deleteList) // cms.DeletedDuplicateWaitAuditData(ctx, dao.GetDB()) type tmp struct { - JdID string `json:"jdID"` - S float64 `json:"s"` + JdID string `json:"jdID"` + S int `json:"s"` } type SpecialtyStoreSkus struct { - StoreID int `json:"门店ID"` - StoreName string `json:"门店名"` - City string `json:"城市"` - Area float64 `json:"面积"` + StoreID int `json:"门店ID"` + StoreName string `json:"门店名"` + City string `json:"城市"` + Area int `json:"面积"` } var ( ss []*tmp @@ -1622,7 +1622,7 @@ func UploadJdsImage(ctx *jxcontext.Context) (err error) { strs := strings.Split(station.DeliveryRange, ";") ss = append(ss, &tmp{ JdID: v.VendorStoreID, - S: math.Round(jxutils.ComputeSignedArea(strs[:len(strs)-1])), + S: utils.Float64TwoInt(math.Ceil((jxutils.ComputeSignedArea(strs[:len(strs)-1])))), }) } } From c9c5b7caae3a47c5c43a1ef74dea8c16658cef55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Tue, 1 Sep 2020 17:29:40 +0800 Subject: [PATCH 29/53] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E5=89=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/tempop/tempop.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/jxstore/tempop/tempop.go b/business/jxstore/tempop/tempop.go index 8ff6b4b37..4af35a9f7 100644 --- a/business/jxstore/tempop/tempop.go +++ b/business/jxstore/tempop/tempop.go @@ -1613,7 +1613,7 @@ func UploadJdsImage(ctx *jxcontext.Context) (err error) { ) storeMaps, _ := dao.GetStoresMapList(dao.GetDB(), []int{model.VendorIDJD}, nil, nil, model.StoreStatusAll, model.StoreIsSyncAll, "", "") for _, v := range storeMaps { - time.Sleep(time.Second / 2) + time.Sleep(time.Second / 3) station, err := jd.GetAPI("320406").GetDeliveryRangeByStationNo2(v.VendorStoreID) if err != nil { continue From 3dd65bc651708d255b7c0295803b3487c6ef32e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Wed, 2 Sep 2020 09:35:53 +0800 Subject: [PATCH 30/53] =?UTF-8?q?beta=E4=B8=8D=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controllers/event.go | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/controllers/event.go b/controllers/event.go index 6450a9853..968846e59 100644 --- a/controllers/event.go +++ b/controllers/event.go @@ -137,13 +137,15 @@ func (c *EventController) TestWebsocket() { clients[vendorOrderID] = append(clients[vendorOrderID], ws) db := dao.GetDB() - _, _, err = jxcontext.New(nil, c.GetString("token"), c.Ctx.ResponseWriter, c.Ctx.Request) - if err != nil { - msg := &CallResult{ - Code: model.ErrCodeGeneralFailed, - Desc: err.Error(), + if globals.IsProductEnv() { + _, _, err = jxcontext.New(nil, c.GetString("token"), c.Ctx.ResponseWriter, c.Ctx.Request) + if err != nil { + msg := &CallResult{ + Code: model.ErrCodeGeneralFailed, + Desc: err.Error(), + } + ws.WriteJSON(&msg) } - ws.WriteJSON(&msg) } c.EnableRender = false //Beego不启用渲染 From 58e483d3552e45bd53b7faeac4103bdc6d095b2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Wed, 2 Sep 2020 10:10:45 +0800 Subject: [PATCH 31/53] =?UTF-8?q?beta=E4=B8=8D=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controllers/event.go | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/controllers/event.go b/controllers/event.go index 968846e59..ce8349a14 100644 --- a/controllers/event.go +++ b/controllers/event.go @@ -32,7 +32,7 @@ type EventController struct { var clients = make(map[string][]*websocket.Conn) //广播频道(通道) -var broadcast = make(chan map[string][]*model.ImMessageRecord) +var broadcast = make(chan map[string]*model.ImMessageRecord) // 配置升级程序(升级为websocket) var upgrader = websocket.Upgrader{} @@ -131,7 +131,7 @@ func (c *EventController) TestWebsocket() { defer ws.Close() var ( vendorOrderID = c.GetString("vendorOrderID") - msgMap = make(map[string][]*model.ImMessageRecord) + msgMap = make(map[string]*model.ImMessageRecord) ) //将当前客户端放入map中 clients[vendorOrderID] = append(clients[vendorOrderID], ws) @@ -150,7 +150,7 @@ func (c *EventController) TestWebsocket() { c.EnableRender = false //Beego不启用渲染 - var s []*model.ImMessageRecord + var s *model.ImMessageRecord for { //接收客户端的消息 err := ws.ReadJSON(&s) @@ -170,12 +170,10 @@ func (c *EventController) TestWebsocket() { break //结束循环 } else { //接受消息 业务逻辑 - msgMap[vendorOrderID] = append(msgMap[vendorOrderID], s...) + msgMap[vendorOrderID] = s broadcast <- msgMap - for _, v := range s { - dao.WrapAddIDCULDEntity(v, "") - dao.CreateEntity(db, v) - } + dao.WrapAddIDCULDEntity(s, "") + dao.CreateEntity(db, s) // fmt.Println("接受到从页面上反馈回来的信息 ", utils.Format4Output(s, false)) } } From 051ba242027e2fe5c3a0c8ae26c25382d97a3cee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 3 Sep 2020 09:08:07 +0800 Subject: [PATCH 32/53] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E8=BD=AC=E7=A7=BB?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=8F=B7=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/orderman/order.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/business/jxcallback/orderman/order.go b/business/jxcallback/orderman/order.go index a143656b7..4f6b0c2b5 100644 --- a/business/jxcallback/orderman/order.go +++ b/business/jxcallback/orderman/order.go @@ -1586,6 +1586,9 @@ func TransferJdsOrder(ctx *jxcontext.Context, vendorOrderID string, storeID int) } suffix := utils.Str2Int(goodsOrders[0].VendorOrderID[12:len(goodsOrders[0].VendorOrderID)]) suffix++ + if len(order.VendorOrderID2) > 18 { + order.VendorOrderID2 = order.VendorOrderID2[0:12] + } order.VendorOrderID = utils.Int64ToStr(utils.Str2Int64(order.VendorOrderID2)*100000) + utils.Int2Str(suffix) } for _, sku := range skus { From 36dd9da2f98f8a24c4ba2a0b6784787f3cd0a5d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 3 Sep 2020 13:50:20 +0800 Subject: [PATCH 33/53] =?UTF-8?q?=E5=8F=96=E6=B6=88=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=97=B6=E5=8F=96=E6=B6=88=E8=BF=90=E5=8D=95=E4=B8=8D=E5=81=9A?= =?UTF-8?q?flag=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/scheduler/defsch/defsch.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/jxcallback/scheduler/defsch/defsch.go b/business/jxcallback/scheduler/defsch/defsch.go index 080bda43c..629ba16ff 100644 --- a/business/jxcallback/scheduler/defsch/defsch.go +++ b/business/jxcallback/scheduler/defsch/defsch.go @@ -422,7 +422,7 @@ func (s *DefScheduler) OnOrderStatusChanged(order *model.GoodsOrder, status *mod } } } - s.cancelOtherWaybillsCheckOrderDeliveryFlag(savedOrderInfo, curWaybill, partner.CancelWaybillReasonOther, partner.CancelWaybillReasonStrOrderAlreadyFinished) + s.cancelOtherWaybills(savedOrderInfo, curWaybill, partner.CancelWaybillReasonOther, partner.CancelWaybillReasonStrOrderAlreadyFinished) if status.Status >= model.OrderStatusEndBegin { s.orderMap.Delete(jxutils.GetUniversalOrderIDFromOrderStatus(status)) } From 87b248cc9099f41500d93d6d7275c24ddcbc8f94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 3 Sep 2020 14:52:17 +0800 Subject: [PATCH 34/53] =?UTF-8?q?=E5=94=AE=E5=89=8D=E5=94=AE=E5=90=8E?= =?UTF-8?q?=E6=89=A3=E7=82=B9=E8=AE=A2=E5=8D=95=E9=92=B1=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/orderman/order.go | 11 +++++++- business/jxcallback/orderman/order_afs.go | 25 +++++++++++++++++++ business/partner/purchase/jdshop/order_afs.go | 1 - business/partner/purchase/jx/order_afs.go | 19 -------------- 4 files changed, 35 insertions(+), 21 deletions(-) diff --git a/business/jxcallback/orderman/order.go b/business/jxcallback/orderman/order.go index 4f6b0c2b5..cb876dc82 100644 --- a/business/jxcallback/orderman/order.go +++ b/business/jxcallback/orderman/order.go @@ -131,6 +131,11 @@ func (c *OrderManager) OnOrderAdjust(order *model.GoodsOrder, orderStatus *model // return err // }, "OnAdjustOrder delete order_sku, orderID:%s", order.VendorOrderID) order.AdjustCount = adjustCount + 1 + //扣点的订单需要修改订单的totalshopmoney + if err == nil && order.EarningType == model.EarningTypePoints { + order2, _ := partner.GetPurchaseOrderHandlerFromVendorID(order.VendorID).GetOrder(order.VendorOrgCode, order.VendorOrderID) + order.TotalShopMoney = order2.TotalShopMoney + } isDuplicated, err = c.SaveOrder(order, true, db) } if err == nil { @@ -1702,7 +1707,10 @@ func AdjustJdsOrderSimple(ctx *jxcontext.Context, vendorOrderID string, skuID in ) orderSkus, err := dao.GetSimpleOrderSkus(db, vendorOrderID, []int{skuID}) order, err := dao.GetSimpleOrder(db, vendorOrderID) - + //如果不是商城模板店 + if jxutils.GetSaleStoreIDFromOrder(order) != model.JdShopMainStoreID { + return fmt.Errorf("目前只支持商城模板店的简单售前删除!") + } orderSkus2, err := dao.GetSimpleOrderSkus(db, vendorOrderID, nil) if len(orderSkus2) == 1 { return fmt.Errorf("这一单只剩这最后一个商品了,不允许删除!") @@ -1720,6 +1728,7 @@ func AdjustJdsOrderSimple(ctx *jxcontext.Context, vendorOrderID string, skuID in } else { _, err = dao.DeleteEntity(db, orderSku) } + return err } diff --git a/business/jxcallback/orderman/order_afs.go b/business/jxcallback/orderman/order_afs.go index 6cc91da54..f69731328 100644 --- a/business/jxcallback/orderman/order_afs.go +++ b/business/jxcallback/orderman/order_afs.go @@ -3,6 +3,7 @@ package orderman import ( "strings" + "git.rosy.net.cn/baseapi/platformapi/jdshopapi" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxcallback/scheduler" "git.rosy.net.cn/jx-callback/business/jxutils" @@ -60,6 +61,29 @@ func (c *OrderManager) onAfsOrderNew(afsOrder *model.AfsOrder, orderStatus *mode } } } + //如果是扣点的单需要修改totalShopMoney等 + skuMap := make(map[int]*model.OrderSku) + for _, sku := range order.Skus { + skuMap[sku.SkuID] = sku + } + if err == nil && order.EarningType == model.EarningTypePoints { + var diff int64 + origin := float64(order.TotalShopMoney) / jdshopapi.JdsPayPercentage + for _, sku := range afsOrder.Skus { + if skuMap[sku.SkuID] != nil { + diff += skuMap[sku.SkuID].SalePrice * int64(sku.Count) + } + } + order.TotalShopMoney = utils.Float64TwoInt64((origin - float64(diff)) * jdshopapi.JdsPayPercentage) + storeDetail, _ := dao.GetStoreDetail(db, jxutils.GetSaleStoreIDFromOrder(order), order.VendorID) + wayBills, _ := dao.GetWaybills(db, order.VendorOrderID) + if len(wayBills) > 0 { + jxutils.RefreshOrderEarningPrice3(order, storeDetail.PayPercentage, wayBills[0]) + } else { + jxutils.RefreshOrderEarningPrice2(order, storeDetail.PayPercentage) + } + dao.UpdateEntity(db, order, "TotalShopMoney", "NewEarningPrice") + } } // dao.Begin(db) @@ -100,6 +124,7 @@ func (c *OrderManager) onAfsOrderNew(afsOrder *model.AfsOrder, orderStatus *mode return err } } + dao.Commit(db) scheduler.CurrentScheduler.OnAfsOrderNew(afsOrder, false) return err diff --git a/business/partner/purchase/jdshop/order_afs.go b/business/partner/purchase/jdshop/order_afs.go index 7990066de..2c91fd63a 100644 --- a/business/partner/purchase/jdshop/order_afs.go +++ b/business/partner/purchase/jdshop/order_afs.go @@ -89,7 +89,6 @@ func (c *PurchaseHandler) PartRefundOrder(ctx *jxcontext.Context, order *model.G afsOrder.SkuUserMoney += orderSku.UserMoney afsOrder.Skus = append(afsOrder.Skus, orderSku) } - err = partner.CurOrderManager.OnAfsOrderNew(afsOrder, orderStatus) return err } diff --git a/business/partner/purchase/jx/order_afs.go b/business/partner/purchase/jx/order_afs.go index 448dad754..62f16cb60 100644 --- a/business/partner/purchase/jx/order_afs.go +++ b/business/partner/purchase/jx/order_afs.go @@ -141,25 +141,6 @@ func (c *PurchaseHandler) PartRefundOrder(ctx *jxcontext.Context, order *model.G } else { err = partner.CurOrderManager.OnAfsOrderNew(afsOrder, orderStatus) } - //如果是扣点的单需要修改totalShopMoney等 - if err == nil && order.EarningType == model.EarningTypePoints { - var diff int64 - origin := float64(order.TotalShopMoney) / jdshopapi.JdsPayPercentage - for _, sku := range refundSkuList { - if skuMap[sku.SkuID] != nil { - diff += skuMap[sku.SkuID].SalePrice * int64(sku.Count) - } - } - order.TotalShopMoney = utils.Float64TwoInt64((origin - float64(diff)) * jdshopapi.JdsPayPercentage) - storeDetail, _ := dao.GetStoreDetail(db, jxutils.GetSaleStoreIDFromOrder(order), order.VendorID) - wayBills, _ := dao.GetWaybills(db, order.VendorOrderID) - if len(wayBills) > 0 { - jxutils.RefreshOrderEarningPrice3(order, storeDetail.PayPercentage, wayBills[0]) - } else { - jxutils.RefreshOrderEarningPrice2(order, storeDetail.PayPercentage) - } - dao.UpdateEntity(db, order, "TotalShopMoney", "NewEarningPrice") - } return err } From a947dae65a73d7596ec907f8adc53be297a580a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 3 Sep 2020 14:54:39 +0800 Subject: [PATCH 35/53] =?UTF-8?q?=E5=94=AE=E5=89=8D=E5=94=AE=E5=90=8E?= =?UTF-8?q?=E6=89=A3=E7=82=B9=E8=AE=A2=E5=8D=95=E9=92=B1=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/partner/purchase/jx/order_afs.go | 4 ---- 1 file changed, 4 deletions(-) diff --git a/business/partner/purchase/jx/order_afs.go b/business/partner/purchase/jx/order_afs.go index 62f16cb60..757c6ec44 100644 --- a/business/partner/purchase/jx/order_afs.go +++ b/business/partner/purchase/jx/order_afs.go @@ -5,10 +5,6 @@ import ( "strings" "time" - "git.rosy.net.cn/jx-callback/business/jxutils" - - "git.rosy.net.cn/baseapi/platformapi/jdshopapi" - "git.rosy.net.cn/jx-callback/globals" "git.rosy.net.cn/jx-callback/business/model/dao" From df434b2c1ec769b26a038b6130a2d2652d7b7103 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 3 Sep 2020 15:11:18 +0800 Subject: [PATCH 36/53] =?UTF-8?q?=E5=85=88=E5=88=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/tempop/tempop.go | 158 +++++++++++++++--------------- 1 file changed, 78 insertions(+), 80 deletions(-) diff --git a/business/jxstore/tempop/tempop.go b/business/jxstore/tempop/tempop.go index 4af35a9f7..b249ae6e7 100644 --- a/business/jxstore/tempop/tempop.go +++ b/business/jxstore/tempop/tempop.go @@ -4,26 +4,22 @@ import ( "bytes" "context" "fmt" - "math" "regexp" "strings" "time" - "git.rosy.net.cn/baseapi" "git.rosy.net.cn/jx-callback/business/auth2/authprovider/weixin" + "git.rosy.net.cn/jx-callback/business/jxcallback/orderman" "git.rosy.net.cn/jx-callback/business/partner/delivery" "github.com/360EntSecGroup-Skylar/excelize" "github.com/qiniu/api.v7/storage" - "git.rosy.net.cn/baseapi/platformapi/dingdingapi" "git.rosy.net.cn/baseapi/platformapi/jdapi" "git.rosy.net.cn/baseapi/platformapi/mtwmapi" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/baseapi/utils/errlist" "git.rosy.net.cn/jx-callback/business/jxstore/cms" "git.rosy.net.cn/jx-callback/business/jxutils" - "git.rosy.net.cn/jx-callback/business/jxutils/ddmsg" - "git.rosy.net.cn/jx-callback/business/jxutils/excel" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/jxutils/tasksch" "git.rosy.net.cn/jx-callback/business/model" @@ -1589,81 +1585,83 @@ func UploadJdsImage(ctx *jxcontext.Context) (err error) { // fmt.Println("updateList2", utils.Format4Output(updateList, false)) // fmt.Println("deleteList2", deleteList) // cms.DeletedDuplicateWaitAuditData(ctx, dao.GetDB()) - type tmp struct { - JdID string `json:"jdID"` - S int `json:"s"` - } - type SpecialtyStoreSkus struct { - StoreID int `json:"门店ID"` - StoreName string `json:"门店名"` - City string `json:"城市"` - Area int `json:"面积"` - } - var ( - ss []*tmp - excelTitle = []string{ - "门店ID", - "门店名", - "城市", - "面积", - } - sheetList []*excel.Obj2ExcelSheetConfig - specialtyStoreSkus []*SpecialtyStoreSkus - downloadURL, fileName string - ) - storeMaps, _ := dao.GetStoresMapList(dao.GetDB(), []int{model.VendorIDJD}, nil, nil, model.StoreStatusAll, model.StoreIsSyncAll, "", "") - for _, v := range storeMaps { - time.Sleep(time.Second / 3) - station, err := jd.GetAPI("320406").GetDeliveryRangeByStationNo2(v.VendorStoreID) - if err != nil { - continue - } - if station.DeliveryRangeType == 2 { - strs := strings.Split(station.DeliveryRange, ";") - ss = append(ss, &tmp{ - JdID: v.VendorStoreID, - S: utils.Float64TwoInt(math.Ceil((jxutils.ComputeSignedArea(strs[:len(strs)-1])))), - }) - } - } - for i := 0; i < len(ss)-1; i++ { - for j := 0; j < len(ss)-1-i; j++ { - if ss[j].S > ss[j+1].S { - temp := ss[j] - ss[j] = ss[j+1] - ss[j+1] = temp - } - } - } - for _, v := range ss { - storeDetail, _ := dao.GetStoreDetailByVendorStoreID(dao.GetDB(), v.JdID, model.VendorIDJD) - place, _ := dao.GetPlaceByCode(dao.GetDB(), storeDetail.CityCode) - specialtyStoreSku := &SpecialtyStoreSkus{ - StoreID: storeDetail.ID, - StoreName: storeDetail.Name, - City: place.Name, - Area: v.S, - } - specialtyStoreSkus = append(specialtyStoreSkus, specialtyStoreSku) - } - excelConf := &excel.Obj2ExcelSheetConfig{ - Title: "sheet1", - Data: specialtyStoreSkus, - CaptionList: excelTitle, - } - sheetList = append(sheetList, excelConf) - if excelConf != nil { - downloadURL, fileName, err = jxutils.UploadExeclAndPushMsg(sheetList, "面积") - } else { - baseapi.SugarLogger.Debug("WriteToExcel: dataSuccess is nil!") - } - if err != nil { - baseapi.SugarLogger.Errorf("WriteToExcel:upload %s , %s failed error:%v", fileName, err) - } else { - noticeMsg := fmt.Sprintf("[详情点我]%s/billshow/?normal=true&path=%s \n", globals.BackstageHost, downloadURL) - ddmsg.SendUserMessage(dingdingapi.MsgTyeText, ctx.GetUserID(), "异步任务完成", noticeMsg) - baseapi.SugarLogger.Debug("WriteToExcel: dataSuccess downloadURL: [%v]", downloadURL) - } + // type tmp struct { + // JdID string `json:"jdID"` + // S int `json:"s"` + // } + // type SpecialtyStoreSkus struct { + // StoreID int `json:"门店ID"` + // StoreName string `json:"门店名"` + // City string `json:"城市"` + // Area int `json:"面积"` + // } + // var ( + // ss []*tmp + // excelTitle = []string{ + // "门店ID", + // "门店名", + // "城市", + // "面积", + // } + // sheetList []*excel.Obj2ExcelSheetConfig + // specialtyStoreSkus []*SpecialtyStoreSkus + // downloadURL, fileName string + // ) + // storeMaps, _ := dao.GetStoresMapList(dao.GetDB(), []int{model.VendorIDJD}, nil, nil, model.StoreStatusAll, model.StoreIsSyncAll, "", "") + // for _, v := range storeMaps { + // time.Sleep(time.Second / 3) + // station, err := jd.GetAPI("320406").GetDeliveryRangeByStationNo2(v.VendorStoreID) + // if err != nil { + // continue + // } + // if station.DeliveryRangeType == 2 { + // strs := strings.Split(station.DeliveryRange, ";") + // ss = append(ss, &tmp{ + // JdID: v.VendorStoreID, + // S: utils.Float64TwoInt(math.Ceil((jxutils.ComputeSignedArea(strs[:len(strs)-1])))), + // }) + // } + // } + // for i := 0; i < len(ss)-1; i++ { + // for j := 0; j < len(ss)-1-i; j++ { + // if ss[j].S > ss[j+1].S { + // temp := ss[j] + // ss[j] = ss[j+1] + // ss[j+1] = temp + // } + // } + // } + // for _, v := range ss { + // storeDetail, _ := dao.GetStoreDetailByVendorStoreID(dao.GetDB(), v.JdID, model.VendorIDJD) + // place, _ := dao.GetPlaceByCode(dao.GetDB(), storeDetail.CityCode) + // specialtyStoreSku := &SpecialtyStoreSkus{ + // StoreID: storeDetail.ID, + // StoreName: storeDetail.Name, + // City: place.Name, + // Area: v.S, + // } + // specialtyStoreSkus = append(specialtyStoreSkus, specialtyStoreSku) + // } + // excelConf := &excel.Obj2ExcelSheetConfig{ + // Title: "sheet1", + // Data: specialtyStoreSkus, + // CaptionList: excelTitle, + // } + // sheetList = append(sheetList, excelConf) + // if excelConf != nil { + // downloadURL, fileName, err = jxutils.UploadExeclAndPushMsg(sheetList, "面积") + // } else { + // baseapi.SugarLogger.Debug("WriteToExcel: dataSuccess is nil!") + // } + // if err != nil { + // baseapi.SugarLogger.Errorf("WriteToExcel:upload %s , %s failed error:%v", fileName, err) + // } else { + // noticeMsg := fmt.Sprintf("[详情点我]%s/billshow/?normal=true&path=%s \n", globals.BackstageHost, downloadURL) + // ddmsg.SendUserMessage(dingdingapi.MsgTyeText, ctx.GetUserID(), "异步任务完成", noticeMsg) + // baseapi.SugarLogger.Debug("WriteToExcel: dataSuccess downloadURL: [%v]", downloadURL) + // } + orderman.RefreshJdShopOrdersEarningPrice(jxcontext.AdminCtx, time.Now().AddDate(0, 0, -3).Format("20060102"), time.Now().Format("20060102")) + return err } From 6e5afe8799c4dd1221fb05a765c3b85b602feb2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 3 Sep 2020 15:20:49 +0800 Subject: [PATCH 37/53] =?UTF-8?q?=E5=85=88=E5=88=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/tempop/tempop.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/jxstore/tempop/tempop.go b/business/jxstore/tempop/tempop.go index b249ae6e7..175c81f03 100644 --- a/business/jxstore/tempop/tempop.go +++ b/business/jxstore/tempop/tempop.go @@ -1660,7 +1660,7 @@ func UploadJdsImage(ctx *jxcontext.Context) (err error) { // ddmsg.SendUserMessage(dingdingapi.MsgTyeText, ctx.GetUserID(), "异步任务完成", noticeMsg) // baseapi.SugarLogger.Debug("WriteToExcel: dataSuccess downloadURL: [%v]", downloadURL) // } - orderman.RefreshJdShopOrdersEarningPrice(jxcontext.AdminCtx, time.Now().AddDate(0, 0, -3).Format("20060102"), time.Now().Format("20060102")) + orderman.RefreshJdShopOrdersEarningPrice(jxcontext.AdminCtx, time.Now().AddDate(0, 0, -2).Format("20060102"), time.Now().Format("20060102")) return err } From ba0f74b86d0e9cf50861ce7aa83c5809b06f8a6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 3 Sep 2020 15:26:47 +0800 Subject: [PATCH 38/53] =?UTF-8?q?=E5=85=88=E5=88=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/misc/misc.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/jxstore/misc/misc.go b/business/jxstore/misc/misc.go index 9ae375825..39f79a2af 100644 --- a/business/jxstore/misc/misc.go +++ b/business/jxstore/misc/misc.go @@ -449,7 +449,7 @@ func doDailyWork() { //同步银豹到京西 // cms.CurVendorSync.SyncStoreSkusFromYb(jxcontext.AdminCtx, nil, true, true) //刷新京东商城订单结算价 - orderman.RefreshJdShopOrdersEarningPrice(jxcontext.AdminCtx, time.Now().AddDate(0, 0, -3).Format("20060102"), time.Now().Format("20060102")) + orderman.RefreshJdShopOrdersEarningPrice(jxcontext.AdminCtx, time.Now().AddDate(0, 0, -2).Format("20060102"), time.Now().Format("20060102")) //同步上架京东商城待售商品 cms.RefreshJdsSkusStatus(jxcontext.AdminCtx) //同步美团配送与否状态及美团门店是否存在 From ddabf4c7633c84345635c6521418e8382999c9bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 3 Sep 2020 15:45:25 +0800 Subject: [PATCH 39/53] =?UTF-8?q?=E6=96=B0=E6=8E=A5=E5=8F=A3=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E4=BA=AC=E4=B8=9C=E9=97=A8=E5=BA=97=E6=89=8B=E5=88=92?= =?UTF-8?q?=E8=8C=83=E5=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store.go | 79 +++++++++++++++++++++++++++ business/jxstore/tempop/tempop.go | 78 +------------------------- controllers/cms_store.go | 17 ++++++ routers/commentsRouter_controllers.go | 9 +++ 4 files changed, 106 insertions(+), 77 deletions(-) diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index f49997f1d..a0ce88a6d 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -3455,3 +3455,82 @@ func UpdateStorePricePack(ctx *jxcontext.Context, storeID, vendorID int, pricePa } return err } + +func GetJdDeliveryArea(ctx *jxcontext.Context, storeIDs []int) (err error) { + type tmp struct { + JdID string `json:"jdID"` + S int `json:"s"` + } + type SpecialtyStoreSkus struct { + StoreID int `json:"门店ID"` + StoreName string `json:"门店名"` + City string `json:"城市"` + Area int `json:"面积"` + } + var ( + ss []*tmp + excelTitle = []string{ + "门店ID", + "门店名", + "城市", + "面积", + } + sheetList []*excel.Obj2ExcelSheetConfig + specialtyStoreSkus []*SpecialtyStoreSkus + downloadURL, fileName string + ) + storeMaps, _ := dao.GetStoresMapList(dao.GetDB(), []int{model.VendorIDJD}, storeIDs, nil, model.StoreStatusAll, model.StoreIsSyncAll, "", "") + for _, v := range storeMaps { + time.Sleep(time.Second / 3) + station, err := jd.GetAPI("320406").GetDeliveryRangeByStationNo2(v.VendorStoreID) + if err != nil { + continue + } + if station.DeliveryRangeType == 2 { + strs := strings.Split(station.DeliveryRange, ";") + ss = append(ss, &tmp{ + JdID: v.VendorStoreID, + S: utils.Float64TwoInt(math.Ceil((jxutils.ComputeSignedArea(strs[:len(strs)-1])))), + }) + } + } + for i := 0; i < len(ss)-1; i++ { + for j := 0; j < len(ss)-1-i; j++ { + if ss[j].S > ss[j+1].S { + temp := ss[j] + ss[j] = ss[j+1] + ss[j+1] = temp + } + } + } + for _, v := range ss { + storeDetail, _ := dao.GetStoreDetailByVendorStoreID(dao.GetDB(), v.JdID, model.VendorIDJD) + place, _ := dao.GetPlaceByCode(dao.GetDB(), storeDetail.CityCode) + specialtyStoreSku := &SpecialtyStoreSkus{ + StoreID: storeDetail.ID, + StoreName: storeDetail.Name, + City: place.Name, + Area: v.S, + } + specialtyStoreSkus = append(specialtyStoreSkus, specialtyStoreSku) + } + excelConf := &excel.Obj2ExcelSheetConfig{ + Title: "sheet1", + Data: specialtyStoreSkus, + CaptionList: excelTitle, + } + sheetList = append(sheetList, excelConf) + if excelConf != nil { + downloadURL, fileName, err = jxutils.UploadExeclAndPushMsg(sheetList, "面积") + } else { + baseapi.SugarLogger.Debug("WriteToExcel: dataSuccess is nil!") + } + if err != nil { + baseapi.SugarLogger.Errorf("WriteToExcel:upload %s , %s failed error:%v", fileName, err) + } else { + noticeMsg := fmt.Sprintf("[详情点我]%s/billshow/?normal=true&path=%s \n", globals.BackstageHost, downloadURL) + ddmsg.SendUserMessage(dingdingapi.MsgTyeText, ctx.GetUserID(), "异步任务完成", noticeMsg) + baseapi.SugarLogger.Debug("WriteToExcel: dataSuccess downloadURL: [%v]", downloadURL) + } + return err +} diff --git a/business/jxstore/tempop/tempop.go b/business/jxstore/tempop/tempop.go index 175c81f03..f4df58aee 100644 --- a/business/jxstore/tempop/tempop.go +++ b/business/jxstore/tempop/tempop.go @@ -9,7 +9,6 @@ import ( "time" "git.rosy.net.cn/jx-callback/business/auth2/authprovider/weixin" - "git.rosy.net.cn/jx-callback/business/jxcallback/orderman" "git.rosy.net.cn/jx-callback/business/partner/delivery" "github.com/360EntSecGroup-Skylar/excelize" "github.com/qiniu/api.v7/storage" @@ -1585,82 +1584,7 @@ func UploadJdsImage(ctx *jxcontext.Context) (err error) { // fmt.Println("updateList2", utils.Format4Output(updateList, false)) // fmt.Println("deleteList2", deleteList) // cms.DeletedDuplicateWaitAuditData(ctx, dao.GetDB()) - // type tmp struct { - // JdID string `json:"jdID"` - // S int `json:"s"` - // } - // type SpecialtyStoreSkus struct { - // StoreID int `json:"门店ID"` - // StoreName string `json:"门店名"` - // City string `json:"城市"` - // Area int `json:"面积"` - // } - // var ( - // ss []*tmp - // excelTitle = []string{ - // "门店ID", - // "门店名", - // "城市", - // "面积", - // } - // sheetList []*excel.Obj2ExcelSheetConfig - // specialtyStoreSkus []*SpecialtyStoreSkus - // downloadURL, fileName string - // ) - // storeMaps, _ := dao.GetStoresMapList(dao.GetDB(), []int{model.VendorIDJD}, nil, nil, model.StoreStatusAll, model.StoreIsSyncAll, "", "") - // for _, v := range storeMaps { - // time.Sleep(time.Second / 3) - // station, err := jd.GetAPI("320406").GetDeliveryRangeByStationNo2(v.VendorStoreID) - // if err != nil { - // continue - // } - // if station.DeliveryRangeType == 2 { - // strs := strings.Split(station.DeliveryRange, ";") - // ss = append(ss, &tmp{ - // JdID: v.VendorStoreID, - // S: utils.Float64TwoInt(math.Ceil((jxutils.ComputeSignedArea(strs[:len(strs)-1])))), - // }) - // } - // } - // for i := 0; i < len(ss)-1; i++ { - // for j := 0; j < len(ss)-1-i; j++ { - // if ss[j].S > ss[j+1].S { - // temp := ss[j] - // ss[j] = ss[j+1] - // ss[j+1] = temp - // } - // } - // } - // for _, v := range ss { - // storeDetail, _ := dao.GetStoreDetailByVendorStoreID(dao.GetDB(), v.JdID, model.VendorIDJD) - // place, _ := dao.GetPlaceByCode(dao.GetDB(), storeDetail.CityCode) - // specialtyStoreSku := &SpecialtyStoreSkus{ - // StoreID: storeDetail.ID, - // StoreName: storeDetail.Name, - // City: place.Name, - // Area: v.S, - // } - // specialtyStoreSkus = append(specialtyStoreSkus, specialtyStoreSku) - // } - // excelConf := &excel.Obj2ExcelSheetConfig{ - // Title: "sheet1", - // Data: specialtyStoreSkus, - // CaptionList: excelTitle, - // } - // sheetList = append(sheetList, excelConf) - // if excelConf != nil { - // downloadURL, fileName, err = jxutils.UploadExeclAndPushMsg(sheetList, "面积") - // } else { - // baseapi.SugarLogger.Debug("WriteToExcel: dataSuccess is nil!") - // } - // if err != nil { - // baseapi.SugarLogger.Errorf("WriteToExcel:upload %s , %s failed error:%v", fileName, err) - // } else { - // noticeMsg := fmt.Sprintf("[详情点我]%s/billshow/?normal=true&path=%s \n", globals.BackstageHost, downloadURL) - // ddmsg.SendUserMessage(dingdingapi.MsgTyeText, ctx.GetUserID(), "异步任务完成", noticeMsg) - // baseapi.SugarLogger.Debug("WriteToExcel: dataSuccess downloadURL: [%v]", downloadURL) - // } - orderman.RefreshJdShopOrdersEarningPrice(jxcontext.AdminCtx, time.Now().AddDate(0, 0, -2).Format("20060102"), time.Now().Format("20060102")) + // orderman.RefreshJdShopOrdersEarningPrice(jxcontext.AdminCtx, time.Now().AddDate(0, 0, -2).Format("20060102"), time.Now().Format("20060102")) return err } diff --git a/controllers/cms_store.go b/controllers/cms_store.go index eb65996a1..58d4a15ef 100644 --- a/controllers/cms_store.go +++ b/controllers/cms_store.go @@ -808,3 +808,20 @@ func (c *StoreController) GetNearSupplyGoodsStoreByStoreID() { return retVal, "", err }) } + +// @Title 获取京东门店手动划的配送范围面积 +// @Description 获取京东门店手动划的配送范围面积 +// @Param token header string true "认证token" +// @Param storeIDs query int true "门店IDs" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /GetJdDeliveryArea [get] +func (c *StoreController) GetJdDeliveryArea() { + var storeIDs []int + c.callGetJdDeliveryArea(func(params *tStoreGetJdDeliveryAreaParams) (retVal interface{}, errCode string, err error) { + if jxutils.Strings2Objs(params.StoreIDs, &storeIDs); err == nil { + err = cms.GetJdDeliveryArea(params.Ctx, storeIDs) + } + return retVal, "", err + }) +} diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index cc4663135..20f774aea 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -1836,6 +1836,15 @@ func init() { Filters: nil, Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"], + beego.ControllerComments{ + Method: "GetJdDeliveryArea", + Router: `/GetJdDeliveryArea`, + AllowHTTPMethods: []string{"get"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"], beego.ControllerComments{ Method: "GetNearSupplyGoodsStoreByStoreID", From ee2b8019450b582e388d84b3794f302c54fe10e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 3 Sep 2020 17:27:41 +0800 Subject: [PATCH 40/53] =?UTF-8?q?=E5=98=BF=E5=98=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controllers/cms_store.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/controllers/cms_store.go b/controllers/cms_store.go index 58d4a15ef..c15db3963 100644 --- a/controllers/cms_store.go +++ b/controllers/cms_store.go @@ -812,7 +812,7 @@ func (c *StoreController) GetNearSupplyGoodsStoreByStoreID() { // @Title 获取京东门店手动划的配送范围面积 // @Description 获取京东门店手动划的配送范围面积 // @Param token header string true "认证token" -// @Param storeIDs query int true "门店IDs" +// @Param storeIDs query string true "门店IDs" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /GetJdDeliveryArea [get] From 1a1c49398bc5c1d026d309076b0154b6277c0fe1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 3 Sep 2020 18:09:26 +0800 Subject: [PATCH 41/53] =?UTF-8?q?=E6=8B=92=E7=BB=9D=E5=94=AE=E5=90=8E?= =?UTF-8?q?=E4=B8=8D=E5=8F=98=E9=92=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/orderman/order_afs.go | 24 ---------------- .../scheduler/basesch/basesch_ext.go | 28 +++++++++++++++++++ 2 files changed, 28 insertions(+), 24 deletions(-) diff --git a/business/jxcallback/orderman/order_afs.go b/business/jxcallback/orderman/order_afs.go index f69731328..2bc5f0b1b 100644 --- a/business/jxcallback/orderman/order_afs.go +++ b/business/jxcallback/orderman/order_afs.go @@ -3,7 +3,6 @@ package orderman import ( "strings" - "git.rosy.net.cn/baseapi/platformapi/jdshopapi" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxcallback/scheduler" "git.rosy.net.cn/jx-callback/business/jxutils" @@ -61,29 +60,6 @@ func (c *OrderManager) onAfsOrderNew(afsOrder *model.AfsOrder, orderStatus *mode } } } - //如果是扣点的单需要修改totalShopMoney等 - skuMap := make(map[int]*model.OrderSku) - for _, sku := range order.Skus { - skuMap[sku.SkuID] = sku - } - if err == nil && order.EarningType == model.EarningTypePoints { - var diff int64 - origin := float64(order.TotalShopMoney) / jdshopapi.JdsPayPercentage - for _, sku := range afsOrder.Skus { - if skuMap[sku.SkuID] != nil { - diff += skuMap[sku.SkuID].SalePrice * int64(sku.Count) - } - } - order.TotalShopMoney = utils.Float64TwoInt64((origin - float64(diff)) * jdshopapi.JdsPayPercentage) - storeDetail, _ := dao.GetStoreDetail(db, jxutils.GetSaleStoreIDFromOrder(order), order.VendorID) - wayBills, _ := dao.GetWaybills(db, order.VendorOrderID) - if len(wayBills) > 0 { - jxutils.RefreshOrderEarningPrice3(order, storeDetail.PayPercentage, wayBills[0]) - } else { - jxutils.RefreshOrderEarningPrice2(order, storeDetail.PayPercentage) - } - dao.UpdateEntity(db, order, "TotalShopMoney", "NewEarningPrice") - } } // dao.Begin(db) diff --git a/business/jxcallback/scheduler/basesch/basesch_ext.go b/business/jxcallback/scheduler/basesch/basesch_ext.go index c6668a142..1910c6492 100644 --- a/business/jxcallback/scheduler/basesch/basesch_ext.go +++ b/business/jxcallback/scheduler/basesch/basesch_ext.go @@ -6,6 +6,7 @@ import ( "time" "git.rosy.net.cn/baseapi/platformapi/dingdingapi" + "git.rosy.net.cn/baseapi/platformapi/jdshopapi" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/baseapi/utils/errlist" "git.rosy.net.cn/jx-callback/business/jxstore/cms" @@ -213,6 +214,33 @@ func (c *BaseScheduler) AgreeOrRefuseRefund(ctx *jxcontext.Context, afsOrderID s flag = model.AfsOrderFlagRefuseUserRefund afsOrder.RefuseReason = reason partner.CurOrderManager.UpdateAfsOrderFields(afsOrder, []string{"RefuseReason"}) + } else { + if order, _ := partner.CurOrderManager.LoadOrder(afsOrder.VendorOrderID, afsOrder.VendorID); order != nil { + //如果是扣点的单需要修改totalShopMoney等 + skuMap := make(map[int]*model.OrderSku) + db := dao.GetDB() + for _, sku := range order.Skus { + skuMap[sku.SkuID] = sku + } + if err == nil && order.EarningType == model.EarningTypePoints { + var diff int64 + origin := float64(order.TotalShopMoney) / jdshopapi.JdsPayPercentage + for _, sku := range afsOrder.Skus { + if skuMap[sku.SkuID] != nil { + diff += skuMap[sku.SkuID].SalePrice * int64(sku.Count) + } + } + order.TotalShopMoney = utils.Float64TwoInt64((origin - float64(diff)) * jdshopapi.JdsPayPercentage) + storeDetail, _ := dao.GetStoreDetail(db, jxutils.GetSaleStoreIDFromOrder(order), order.VendorID) + wayBills, _ := dao.GetWaybills(db, order.VendorOrderID) + if len(wayBills) > 0 { + jxutils.RefreshOrderEarningPrice3(order, storeDetail.PayPercentage, wayBills[0]) + } else { + jxutils.RefreshOrderEarningPrice2(order, storeDetail.PayPercentage) + } + dao.UpdateEntity(db, order, "TotalShopMoney", "NewEarningPrice") + } + } } dao.SetAfsOrderFlag(dao.GetDB(), ctx.GetUserName(), afsOrderID, vendorID, flag) } From da1b0b17522c8137d8f492a324941efd36429f3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 3 Sep 2020 18:15:03 +0800 Subject: [PATCH 42/53] =?UTF-8?q?=E5=85=88=E9=80=80=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scheduler/basesch/basesch_ext.go | 28 ------------------- 1 file changed, 28 deletions(-) diff --git a/business/jxcallback/scheduler/basesch/basesch_ext.go b/business/jxcallback/scheduler/basesch/basesch_ext.go index 1910c6492..c6668a142 100644 --- a/business/jxcallback/scheduler/basesch/basesch_ext.go +++ b/business/jxcallback/scheduler/basesch/basesch_ext.go @@ -6,7 +6,6 @@ import ( "time" "git.rosy.net.cn/baseapi/platformapi/dingdingapi" - "git.rosy.net.cn/baseapi/platformapi/jdshopapi" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/baseapi/utils/errlist" "git.rosy.net.cn/jx-callback/business/jxstore/cms" @@ -214,33 +213,6 @@ func (c *BaseScheduler) AgreeOrRefuseRefund(ctx *jxcontext.Context, afsOrderID s flag = model.AfsOrderFlagRefuseUserRefund afsOrder.RefuseReason = reason partner.CurOrderManager.UpdateAfsOrderFields(afsOrder, []string{"RefuseReason"}) - } else { - if order, _ := partner.CurOrderManager.LoadOrder(afsOrder.VendorOrderID, afsOrder.VendorID); order != nil { - //如果是扣点的单需要修改totalShopMoney等 - skuMap := make(map[int]*model.OrderSku) - db := dao.GetDB() - for _, sku := range order.Skus { - skuMap[sku.SkuID] = sku - } - if err == nil && order.EarningType == model.EarningTypePoints { - var diff int64 - origin := float64(order.TotalShopMoney) / jdshopapi.JdsPayPercentage - for _, sku := range afsOrder.Skus { - if skuMap[sku.SkuID] != nil { - diff += skuMap[sku.SkuID].SalePrice * int64(sku.Count) - } - } - order.TotalShopMoney = utils.Float64TwoInt64((origin - float64(diff)) * jdshopapi.JdsPayPercentage) - storeDetail, _ := dao.GetStoreDetail(db, jxutils.GetSaleStoreIDFromOrder(order), order.VendorID) - wayBills, _ := dao.GetWaybills(db, order.VendorOrderID) - if len(wayBills) > 0 { - jxutils.RefreshOrderEarningPrice3(order, storeDetail.PayPercentage, wayBills[0]) - } else { - jxutils.RefreshOrderEarningPrice2(order, storeDetail.PayPercentage) - } - dao.UpdateEntity(db, order, "TotalShopMoney", "NewEarningPrice") - } - } } dao.SetAfsOrderFlag(dao.GetDB(), ctx.GetUserName(), afsOrderID, vendorID, flag) } From 5838ef1eb7c4c0b6d43ff174b79a88ead582e518 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 4 Sep 2020 08:37:55 +0800 Subject: [PATCH 43/53] ai --- business/partner/purchase/jdshop/order_afs.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/business/partner/purchase/jdshop/order_afs.go b/business/partner/purchase/jdshop/order_afs.go index 2c91fd63a..da0530419 100644 --- a/business/partner/purchase/jdshop/order_afs.go +++ b/business/partner/purchase/jdshop/order_afs.go @@ -13,7 +13,7 @@ import ( "git.rosy.net.cn/jx-callback/globals" ) -func (c *PurchaseHandler) AgreeOrRefuseRefund(ctx *jxcontext.Context, order *model.AfsOrder, approveType int, reason string) (err error) { +func (c *PurchaseHandler) AgreeOrRefuseRefund(ctx *jxcontext.Context, afsOrder *model.AfsOrder, approveType int, reason string) (err error) { var status int if approveType == partner.AfsApproveTypeRefused { status = model.AfsOrderStatusFailed @@ -21,11 +21,11 @@ func (c *PurchaseHandler) AgreeOrRefuseRefund(ctx *jxcontext.Context, order *mod status = model.AfsOrderStatusFinished } orderStatus := &model.OrderStatus{ - VendorOrderID: order.AfsOrderID, // 是售后单ID,不是订单ID,订单ID在RefVendorOrderID中 - VendorID: order.VendorID, + VendorOrderID: afsOrder.AfsOrderID, // 是售后单ID,不是订单ID,订单ID在RefVendorOrderID中 + VendorID: afsOrder.VendorID, OrderType: model.OrderTypeAfsOrder, - RefVendorOrderID: order.VendorOrderID, - RefVendorID: order.VendorID, + RefVendorOrderID: afsOrder.VendorOrderID, + RefVendorID: afsOrder.VendorID, VendorStatus: utils.Int2Str(status), Status: status, StatusTime: time.Now(), From 2d640579114ae702ff7ce83d978b8bfa090af415 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 4 Sep 2020 09:05:17 +0800 Subject: [PATCH 44/53] =?UTF-8?q?jds=E5=88=9B=E5=BB=BA=E5=94=AE=E5=90=8E?= =?UTF-8?q?=E5=8D=95=EF=BC=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/partner/purchase/jdshop/order_afs.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/business/partner/purchase/jdshop/order_afs.go b/business/partner/purchase/jdshop/order_afs.go index da0530419..d0cb7b0ce 100644 --- a/business/partner/purchase/jdshop/order_afs.go +++ b/business/partner/purchase/jdshop/order_afs.go @@ -6,6 +6,8 @@ import ( "math" "time" + "git.rosy.net.cn/jx-callback/business/jxutils" + "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/model" @@ -19,6 +21,7 @@ func (c *PurchaseHandler) AgreeOrRefuseRefund(ctx *jxcontext.Context, afsOrder * status = model.AfsOrderStatusFailed } else { status = model.AfsOrderStatusFinished + } orderStatus := &model.OrderStatus{ VendorOrderID: afsOrder.AfsOrderID, // 是售后单ID,不是订单ID,订单ID在RefVendorOrderID中 @@ -63,7 +66,7 @@ func (c *PurchaseHandler) PartRefundOrder(ctx *jxcontext.Context, order *model.G AfsOrderID: orderStatus.VendorOrderID, VendorOrderID: orderStatus.RefVendorOrderID, VendorStoreID: order.VendorStoreID, - StoreID: order.StoreID, + StoreID: jxutils.GetSaleStoreIDFromOrder(order), AfsCreatedAt: time.Now(), VendorAppealType: "", AppealType: model.AfsAppealTypeRefund, @@ -89,6 +92,7 @@ func (c *PurchaseHandler) PartRefundOrder(ctx *jxcontext.Context, order *model.G afsOrder.SkuUserMoney += orderSku.UserMoney afsOrder.Skus = append(afsOrder.Skus, orderSku) } + err = partner.CurOrderManager.OnAfsOrderNew(afsOrder, orderStatus) return err } From 95022a1f3da78e04735a3693052612a9234d94c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 4 Sep 2020 09:28:38 +0800 Subject: [PATCH 45/53] =?UTF-8?q?=E4=BA=AC=E8=A5=BF=E4=BA=AC=E4=B8=9C?= =?UTF-8?q?=E5=95=86=E5=9F=8E=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scheduler/basesch/basesch_ext.go | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/business/jxcallback/scheduler/basesch/basesch_ext.go b/business/jxcallback/scheduler/basesch/basesch_ext.go index c6668a142..d4451d63f 100644 --- a/business/jxcallback/scheduler/basesch/basesch_ext.go +++ b/business/jxcallback/scheduler/basesch/basesch_ext.go @@ -5,6 +5,8 @@ import ( "strings" "time" + "git.rosy.net.cn/baseapi/platformapi/jdshopapi" + "git.rosy.net.cn/baseapi/platformapi/dingdingapi" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/baseapi/utils/errlist" @@ -213,6 +215,36 @@ func (c *BaseScheduler) AgreeOrRefuseRefund(ctx *jxcontext.Context, afsOrderID s flag = model.AfsOrderFlagRefuseUserRefund afsOrder.RefuseReason = reason partner.CurOrderManager.UpdateAfsOrderFields(afsOrder, []string{"RefuseReason"}) + } else { + if order, _ := partner.CurOrderManager.LoadOrder(afsOrder.VendorOrderID, afsOrder.VendorID); order != nil { + if order.EarningType == model.EarningTypePoints { + var ( + skuMap = make(map[int]*model.OrderSku) + diff int64 + db = dao.GetDB() + ) + for _, sku := range order.Skus { + skuMap[sku.SkuID] = sku + } + storeDetail, _ := dao.GetStoreDetail(db, jxutils.GetSaleStoreIDFromOrder(order), order.VendorID) + waybills, _ := dao.GetWaybills(db, order.VendorOrderID) + //京东商城和京西要重新算totalshopmoney等 + if vendorID == model.VendorIDJDShop || vendorID == model.VendorIDJX { + for _, v := range afsOrder.Skus { + if skuMap[v.SkuID] != nil { + diff += skuMap[v.SkuID].SalePrice * int64(v.Count) + } + } + order.TotalShopMoney = utils.Float64TwoInt64(float64(order.ActualPayPrice-diff) * jdshopapi.JdsPayPercentage) + if len(waybills) > 0 { + jxutils.RefreshOrderEarningPrice3(order, storeDetail.PayPercentage, waybills[0]) + } else { + jxutils.RefreshOrderEarningPrice2(order, storeDetail.PayPercentage) + } + dao.UpdateEntity(db, order, "TotalShopMoney", "NewEarningPrice") + } + } + } } dao.SetAfsOrderFlag(dao.GetDB(), ctx.GetUserName(), afsOrderID, vendorID, flag) } From f32c7be967b4beeff5de41af909da5574863effa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 4 Sep 2020 09:39:01 +0800 Subject: [PATCH 46/53] =?UTF-8?q?=E4=BA=AC=E8=A5=BF=E4=BA=AC=E4=B8=9C?= =?UTF-8?q?=E5=95=86=E5=9F=8E=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/scheduler/basesch/basesch_ext.go | 1 + 1 file changed, 1 insertion(+) diff --git a/business/jxcallback/scheduler/basesch/basesch_ext.go b/business/jxcallback/scheduler/basesch/basesch_ext.go index d4451d63f..5637aba22 100644 --- a/business/jxcallback/scheduler/basesch/basesch_ext.go +++ b/business/jxcallback/scheduler/basesch/basesch_ext.go @@ -216,6 +216,7 @@ func (c *BaseScheduler) AgreeOrRefuseRefund(ctx *jxcontext.Context, afsOrderID s afsOrder.RefuseReason = reason partner.CurOrderManager.UpdateAfsOrderFields(afsOrder, []string{"RefuseReason"}) } else { + globals.SugarLogger.Debugf("AgreeOrRefuseRefund test11111111111111111111111111111111111111") if order, _ := partner.CurOrderManager.LoadOrder(afsOrder.VendorOrderID, afsOrder.VendorID); order != nil { if order.EarningType == model.EarningTypePoints { var ( From baa7d3acfae47a66de6d3860995f642119f70e33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 4 Sep 2020 10:06:09 +0800 Subject: [PATCH 47/53] =?UTF-8?q?=E4=BA=AC=E8=A5=BF=E4=BA=AC=E4=B8=9C?= =?UTF-8?q?=E5=95=86=E5=9F=8E=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/orderman/order_afs.go | 8 +++++++- business/partner/purchase/jdshop/order_afs.go | 12 +++++------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/business/jxcallback/orderman/order_afs.go b/business/jxcallback/orderman/order_afs.go index 2bc5f0b1b..1c5ca6fbf 100644 --- a/business/jxcallback/orderman/order_afs.go +++ b/business/jxcallback/orderman/order_afs.go @@ -262,7 +262,13 @@ func (c *OrderManager) updateAfsOrderSkuOtherInfo(db *dao.DaoDB, order *model.Af } } if len(vendorSkuIDs) > 0 { - l, err := dao.GetStoreSkuPriceAndWeight(db, order.VendorStoreID, order.VendorID, vendorSkuIDs) + var vendorStoreID string + if order.VendorID == model.VendorIDJDShop { + vendorStoreID = model.JdShopMainVendorStoreID + } else { + vendorStoreID = order.VendorStoreID + } + l, err := dao.GetStoreSkuPriceAndWeight(db, vendorStoreID, order.VendorID, vendorSkuIDs) if err != nil { globals.SugarLogger.Warnf("updateAfsOrderSkuOtherInfo orderID:%s failed with err:%v", order.VendorOrderID, err) return err diff --git a/business/partner/purchase/jdshop/order_afs.go b/business/partner/purchase/jdshop/order_afs.go index d0cb7b0ce..529484e88 100644 --- a/business/partner/purchase/jdshop/order_afs.go +++ b/business/partner/purchase/jdshop/order_afs.go @@ -6,8 +6,6 @@ import ( "math" "time" - "git.rosy.net.cn/jx-callback/business/jxutils" - "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/model" @@ -62,11 +60,11 @@ func (c *PurchaseHandler) PartRefundOrder(ctx *jxcontext.Context, order *model.G } orderStatus := buildOrderStatus(ctx, order, reason) afsOrder := &model.AfsOrder{ - VendorID: order.VendorID, - AfsOrderID: orderStatus.VendorOrderID, - VendorOrderID: orderStatus.RefVendorOrderID, - VendorStoreID: order.VendorStoreID, - StoreID: jxutils.GetSaleStoreIDFromOrder(order), + VendorID: order.VendorID, + AfsOrderID: orderStatus.VendorOrderID, + VendorOrderID: orderStatus.RefVendorOrderID, + // VendorStoreID: order.VendorStoreID, + // StoreID: jxutils.GetSaleStoreIDFromOrder(order), AfsCreatedAt: time.Now(), VendorAppealType: "", AppealType: model.AfsAppealTypeRefund, From 6ced693fc82400868851f7aab78c8339fd3ed226 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 4 Sep 2020 10:25:03 +0800 Subject: [PATCH 48/53] =?UTF-8?q?=E4=BA=AC=E8=A5=BF=E4=BA=AC=E4=B8=9C?= =?UTF-8?q?=E5=95=86=E5=9F=8E=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/partner/purchase/jdshop/order_afs.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/business/partner/purchase/jdshop/order_afs.go b/business/partner/purchase/jdshop/order_afs.go index 529484e88..bc0c8ec51 100644 --- a/business/partner/purchase/jdshop/order_afs.go +++ b/business/partner/purchase/jdshop/order_afs.go @@ -6,6 +6,8 @@ import ( "math" "time" + "git.rosy.net.cn/jx-callback/business/model/dao" + "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/model" @@ -54,6 +56,7 @@ func (c *PurchaseHandler) PartRefundOrder(ctx *jxcontext.Context, order *model.G var ( skuMap = make(map[int]*model.OrderSku) salePrice int64 + db = dao.GetDB() ) for _, sku := range order.Skus { skuMap[sku.SkuID] = sku @@ -82,6 +85,10 @@ func (c *PurchaseHandler) PartRefundOrder(ctx *jxcontext.Context, order *model.G VendorSkuID: utils.Int2Str(sku.SkuID), SkuID: sku.SkuID, } + storeSkus, _ := dao.GetStoresSkusInfo(db, []int{model.JdShopMainStoreID}, []int{sku.SkuID}) + if len(storeSkus) > 0 { + orderSku.VendorSkuID = utils.Int64ToStr(storeSkus[0].JdsID) + } if skuMap[sku.SkuID] != nil { orderSku.Name = skuMap[sku.SkuID].SkuName orderSku.UserMoney = skuMap[sku.SkuID].SalePrice * int64(sku.Count) From 562d0eab4fa075637e6c789df5b5779f11885182 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 4 Sep 2020 10:42:40 +0800 Subject: [PATCH 49/53] =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E5=95=86=E5=9F=8E?= =?UTF-8?q?=E5=94=AE=E5=90=8E=E5=8D=95=E5=88=9B=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/partner/purchase/jdshop/callback.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/business/partner/purchase/jdshop/callback.go b/business/partner/purchase/jdshop/callback.go index 9f7b8736a..93a86a059 100644 --- a/business/partner/purchase/jdshop/callback.go +++ b/business/partner/purchase/jdshop/callback.go @@ -117,8 +117,6 @@ func result2Orders(msg *jdshopapi.CallBackResult) (order *model.GoodsOrder, err order.BusinessType = model.BusinessTypeDingshida // order.ExpectedDeliveredTime = utils.Str2Time(orderDetail.ExpectedDeliveredTime) order.PickDeadline = order.ExpectedDeliveredTime.Add(-time.Hour) - globals.SugarLogger.Warnf("来暂停的订单了!%v", msg.OrderID) - return nil, err } else if msg.OrderState == jdshopapi.OrderStatusWait { order.ExpectedDeliveredTime = order.OrderCreatedAt.Add(time.Hour) order.BusinessType = model.BusinessTypeImmediate From d5990b7e9ea78c3aa39f9862b20f140a269ffd29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 4 Sep 2020 11:11:40 +0800 Subject: [PATCH 50/53] =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E5=95=86=E5=9F=8E?= =?UTF-8?q?=E5=94=AE=E5=90=8E=E5=8D=95=E5=88=9B=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/scheduler/basesch/basesch_ext.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/business/jxcallback/scheduler/basesch/basesch_ext.go b/business/jxcallback/scheduler/basesch/basesch_ext.go index 5637aba22..f198eb3e4 100644 --- a/business/jxcallback/scheduler/basesch/basesch_ext.go +++ b/business/jxcallback/scheduler/basesch/basesch_ext.go @@ -216,9 +216,9 @@ func (c *BaseScheduler) AgreeOrRefuseRefund(ctx *jxcontext.Context, afsOrderID s afsOrder.RefuseReason = reason partner.CurOrderManager.UpdateAfsOrderFields(afsOrder, []string{"RefuseReason"}) } else { - globals.SugarLogger.Debugf("AgreeOrRefuseRefund test11111111111111111111111111111111111111") if order, _ := partner.CurOrderManager.LoadOrder(afsOrder.VendorOrderID, afsOrder.VendorID); order != nil { if order.EarningType == model.EarningTypePoints { + globals.SugarLogger.Debugf("AgreeOrRefuseRefund test11111111111111111111111111111111111111") var ( skuMap = make(map[int]*model.OrderSku) diff int64 @@ -230,18 +230,20 @@ func (c *BaseScheduler) AgreeOrRefuseRefund(ctx *jxcontext.Context, afsOrderID s storeDetail, _ := dao.GetStoreDetail(db, jxutils.GetSaleStoreIDFromOrder(order), order.VendorID) waybills, _ := dao.GetWaybills(db, order.VendorOrderID) //京东商城和京西要重新算totalshopmoney等 - if vendorID == model.VendorIDJDShop || vendorID == model.VendorIDJX { + if order.VendorID == model.VendorIDJDShop || order.VendorID == model.VendorIDJX { for _, v := range afsOrder.Skus { if skuMap[v.SkuID] != nil { diff += skuMap[v.SkuID].SalePrice * int64(v.Count) } } + globals.SugarLogger.Debugf("AgreeOrRefuseRefund test222222222222222222222222222222222222222222222222222222222222") order.TotalShopMoney = utils.Float64TwoInt64(float64(order.ActualPayPrice-diff) * jdshopapi.JdsPayPercentage) if len(waybills) > 0 { jxutils.RefreshOrderEarningPrice3(order, storeDetail.PayPercentage, waybills[0]) } else { jxutils.RefreshOrderEarningPrice2(order, storeDetail.PayPercentage) } + globals.SugarLogger.Debugf("AgreeOrRefuseRefund test3333333333333333333333333333333333333333333333333") dao.UpdateEntity(db, order, "TotalShopMoney", "NewEarningPrice") } } From 66454a2d094c0928a97d2e56270e55acdec87bc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 4 Sep 2020 11:16:59 +0800 Subject: [PATCH 51/53] =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E5=95=86=E5=9F=8E?= =?UTF-8?q?=E5=94=AE=E5=90=8E=E5=8D=95=E5=88=9B=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/scheduler/basesch/basesch_ext.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/business/jxcallback/scheduler/basesch/basesch_ext.go b/business/jxcallback/scheduler/basesch/basesch_ext.go index f198eb3e4..8bb1da977 100644 --- a/business/jxcallback/scheduler/basesch/basesch_ext.go +++ b/business/jxcallback/scheduler/basesch/basesch_ext.go @@ -218,7 +218,6 @@ func (c *BaseScheduler) AgreeOrRefuseRefund(ctx *jxcontext.Context, afsOrderID s } else { if order, _ := partner.CurOrderManager.LoadOrder(afsOrder.VendorOrderID, afsOrder.VendorID); order != nil { if order.EarningType == model.EarningTypePoints { - globals.SugarLogger.Debugf("AgreeOrRefuseRefund test11111111111111111111111111111111111111") var ( skuMap = make(map[int]*model.OrderSku) diff int64 @@ -236,14 +235,14 @@ func (c *BaseScheduler) AgreeOrRefuseRefund(ctx *jxcontext.Context, afsOrderID s diff += skuMap[v.SkuID].SalePrice * int64(v.Count) } } - globals.SugarLogger.Debugf("AgreeOrRefuseRefund test222222222222222222222222222222222222222222222222222222222222") + fmt.Println("1111111111111111111111111111111111111111111111111111111111111111111111111111111111111", diff) order.TotalShopMoney = utils.Float64TwoInt64(float64(order.ActualPayPrice-diff) * jdshopapi.JdsPayPercentage) if len(waybills) > 0 { jxutils.RefreshOrderEarningPrice3(order, storeDetail.PayPercentage, waybills[0]) } else { jxutils.RefreshOrderEarningPrice2(order, storeDetail.PayPercentage) } - globals.SugarLogger.Debugf("AgreeOrRefuseRefund test3333333333333333333333333333333333333333333333333") + fmt.Println("2222222222222222222222222222222222", utils.Format4Output(order, false)) dao.UpdateEntity(db, order, "TotalShopMoney", "NewEarningPrice") } } From 27814994989cc72cab5a75ceb47049000b703c83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 4 Sep 2020 11:22:03 +0800 Subject: [PATCH 52/53] =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E5=95=86=E5=9F=8E?= =?UTF-8?q?=E5=94=AE=E5=90=8E=E5=8D=95=E5=88=9B=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/scheduler/basesch/basesch_ext.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/business/jxcallback/scheduler/basesch/basesch_ext.go b/business/jxcallback/scheduler/basesch/basesch_ext.go index 8bb1da977..0817a644c 100644 --- a/business/jxcallback/scheduler/basesch/basesch_ext.go +++ b/business/jxcallback/scheduler/basesch/basesch_ext.go @@ -230,19 +230,18 @@ func (c *BaseScheduler) AgreeOrRefuseRefund(ctx *jxcontext.Context, afsOrderID s waybills, _ := dao.GetWaybills(db, order.VendorOrderID) //京东商城和京西要重新算totalshopmoney等 if order.VendorID == model.VendorIDJDShop || order.VendorID == model.VendorIDJX { - for _, v := range afsOrder.Skus { + skus, _ := dao.GetAfsOrderSkuInfo(db, order.VendorOrderID, afsOrderID, order.VendorID, false) + for _, v := range skus { if skuMap[v.SkuID] != nil { diff += skuMap[v.SkuID].SalePrice * int64(v.Count) } } - fmt.Println("1111111111111111111111111111111111111111111111111111111111111111111111111111111111111", diff) order.TotalShopMoney = utils.Float64TwoInt64(float64(order.ActualPayPrice-diff) * jdshopapi.JdsPayPercentage) if len(waybills) > 0 { jxutils.RefreshOrderEarningPrice3(order, storeDetail.PayPercentage, waybills[0]) } else { jxutils.RefreshOrderEarningPrice2(order, storeDetail.PayPercentage) } - fmt.Println("2222222222222222222222222222222222", utils.Format4Output(order, false)) dao.UpdateEntity(db, order, "TotalShopMoney", "NewEarningPrice") } } From 2c1d4888d7ab2b83855e8b233d16de65e0538d1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 4 Sep 2020 11:31:57 +0800 Subject: [PATCH 53/53] =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E5=95=86=E5=9F=8E?= =?UTF-8?q?=E5=94=AE=E5=90=8E=E5=8D=95=E5=88=9B=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/scheduler/basesch/basesch_ext.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/jxcallback/scheduler/basesch/basesch_ext.go b/business/jxcallback/scheduler/basesch/basesch_ext.go index 0817a644c..95e9f3328 100644 --- a/business/jxcallback/scheduler/basesch/basesch_ext.go +++ b/business/jxcallback/scheduler/basesch/basesch_ext.go @@ -236,7 +236,7 @@ func (c *BaseScheduler) AgreeOrRefuseRefund(ctx *jxcontext.Context, afsOrderID s diff += skuMap[v.SkuID].SalePrice * int64(v.Count) } } - order.TotalShopMoney = utils.Float64TwoInt64(float64(order.ActualPayPrice-diff) * jdshopapi.JdsPayPercentage) + order.TotalShopMoney = utils.Float64TwoInt64(float64(float64(order.TotalShopMoney)/jdshopapi.JdsPayPercentage-float64(diff)) * jdshopapi.JdsPayPercentage) if len(waybills) > 0 { jxutils.RefreshOrderEarningPrice3(order, storeDetail.PayPercentage, waybills[0]) } else {