From 90d4476f0fb4fa75dbf0a55dd11cfe129c2936fd Mon Sep 17 00:00:00 2001 From: gazebo Date: Wed, 13 Feb 2019 10:07:39 +0800 Subject: [PATCH] - CreateOrderFromOriginal --- business/jxstore/tempop/tempop.go | 76 +++++++++++++++++++++++++++ controllers/temp_op.go | 12 ++--- routers/commentsRouter_controllers.go | 16 +++--- 3 files changed, 90 insertions(+), 14 deletions(-) diff --git a/business/jxstore/tempop/tempop.go b/business/jxstore/tempop/tempop.go index 31927618c..f383f8da6 100644 --- a/business/jxstore/tempop/tempop.go +++ b/business/jxstore/tempop/tempop.go @@ -8,6 +8,7 @@ import ( "git.rosy.net.cn/baseapi/platformapi/jdapi" "git.rosy.net.cn/baseapi/utils" + "git.rosy.net.cn/jx-callback/business/jxcallback/orderman" "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/jxcontext" @@ -15,8 +16,10 @@ import ( "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model/dao" "git.rosy.net.cn/jx-callback/business/model/legacymodel2" + "git.rosy.net.cn/jx-callback/business/partner" "git.rosy.net.cn/jx-callback/globals" "git.rosy.net.cn/jx-callback/globals/api" + "github.com/astaxie/beego/orm" ) func Convert2JDSPU(ctx *jxcontext.Context, count int, isAsync, isContinueWhenError bool) (hint string, err error) { @@ -569,3 +572,76 @@ func DeleteWrongSpu(ctx *jxcontext.Context, isAsync, isContinueWhenError bool) ( } return hint, err } + +type GoodsOrderOriginalEx struct { + model.GoodsOrderOriginal + OrderStatus int +} + +func CreateOrderFromOriginal(ctx *jxcontext.Context, isAsync, isContinueWhenError bool) (hint string, err error) { + sqlBatchCount := 10000 + rootTask := tasksch.NewSeqTask("CreateOrderFromOriginal", ctx.GetUserName(), func(rootTask *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) { + sql := ` + SELECT t1.*, t3.order_status + FROM goods_order_original t1 + LEFT JOIN goods_order t2 ON t2.vendor_order_id = t1.vendor_order_id + LEFT JOIN jxorder t3 ON t3.order_id = t1.vendor_order_id + WHERE t2.id IS NULL + LIMIT ?; + ` + rawDB := orm.NewOrm() + db := dao.WrapDB(rawDB) + var orderList []*GoodsOrderOriginalEx + if err = dao.GetRows(db, &orderList, sql, sqlBatchCount); err != nil { + return nil, err + } + if len(orderList) > 0 { + task := tasksch.NewParallelTask("TransferLegacyJdOrder2", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError).SetParallelCount(1), ctx.GetUserName(), func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { + orderOriginal := batchItemList[0].(*GoodsOrderOriginalEx) + if handler := partner.GetPurchasePlatformFromVendorID(orderOriginal.VendorID); handler != nil { + var detail map[string]interface{} + if err = utils.UnmarshalUseNumber([]byte(strings.Replace(strings.Replace(orderOriginal.OriginalData, "\n", "", -1), "\r", "", -1)), &detail); err != nil { + globals.SugarLogger.Debugf("CreateOrderFromOriginal abnormal orderID:%s, error:%v", orderOriginal.VendorOrderID, err) + return nil, err + } + order := handler.Map2Order(detail) + if order.Status < model.OrderStatusEndBegin { + if orderOriginal.OrderStatus == 3 { + order.Status = model.OrderStatusFinished + } else if orderOriginal.OrderStatus == 7 { + order.Status = model.OrderStatusCanceled + } else { + order2, err2 := handler.GetOrder(order.VendorOrderID) + if err = err2; err == nil { + order.Status = order2.Status + } + } + } + if true { // ignore error, err == nil { + if _, err = orderman.FixedOrderManager.SaveOrder(order, false, rawDB); err != nil { + globals.SugarLogger.Debugf("CreateOrderFromOriginal abnormal orderID:%s, error:%v", orderOriginal.VendorOrderID, err) + } + } else { + globals.SugarLogger.Debugf("CreateOrderFromOriginal abnormal orderID:%s, error:%v", orderOriginal.VendorOrderID, err) + } + } else { + globals.SugarLogger.Debugf("CreateOrderFromOriginal abnormal orderID:%s", orderOriginal.VendorOrderID) + } + return nil, err + }, orderList) + // rootTask.AddChild(task).Run() + task.Run() + _, err = task.GetResult(0) + } else { + rootTask.Cancel() + } + return nil, err + }, math.MaxInt32) + tasksch.ManageTask(rootTask).Run() + if !isAsync { + _, err = rootTask.GetResult(0) + } else { + hint = rootTask.ID + } + return hint, err +} diff --git a/controllers/temp_op.go b/controllers/temp_op.go index 836c5acec..e7dde60e5 100644 --- a/controllers/temp_op.go +++ b/controllers/temp_op.go @@ -56,17 +56,17 @@ func (c *InitDataController) TransferLegacyJdOrder() { }) } -// @Title 将遗留ELM订单合并 -// @Description 将遗留ELM订单合并 +// @Title 将goods_order中缺失的订单从goods_order_original中恢复 +// @Description 将goods_order中缺失的订单从goods_order_original中恢复 // @Param token header string true "认证token" // @Param isAsync formData bool false "是否异步操作" // @Param isContinueWhenError formData bool false "单个同步失败是否继续,缺省false" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult -// @router /TransferLegacyElmOrder [post] -func (c *InitDataController) TransferLegacyElmOrder() { - c.callTransferLegacyElmOrder(func(params *tInitdataTransferLegacyElmOrderParams) (retVal interface{}, errCode string, err error) { - retVal, err = tempop.TransferLegacyElmOrder(params.Ctx, params.IsAsync, params.IsContinueWhenError) +// @router /CreateOrderFromOriginal [post] +func (c *InitDataController) CreateOrderFromOriginal() { + c.callCreateOrderFromOriginal(func(params *tInitdataCreateOrderFromOriginalParams) (retVal interface{}, errCode string, err error) { + retVal, err = tempop.CreateOrderFromOriginal(params.Ctx, params.IsAsync, params.IsContinueWhenError) return retVal, "", err }) } diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index 3917a2969..8ef8a3425 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -199,6 +199,14 @@ func init() { MethodParams: param.Make(), Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:InitDataController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:InitDataController"], + beego.ControllerComments{ + Method: "CreateOrderFromOriginal", + Router: `/CreateOrderFromOriginal`, + AllowHTTPMethods: []string{"post"}, + MethodParams: param.Make(), + Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:InitDataController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:InitDataController"], beego.ControllerComments{ Method: "DeleteWrongSpu", @@ -239,14 +247,6 @@ func init() { MethodParams: param.Make(), Params: nil}) - beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:InitDataController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:InitDataController"], - beego.ControllerComments{ - Method: "TransferLegacyElmOrder", - Router: `/TransferLegacyElmOrder`, - AllowHTTPMethods: []string{"post"}, - MethodParams: param.Make(), - Params: nil}) - beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:InitDataController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:InitDataController"], beego.ControllerComments{ Method: "TransferLegacyJdOrder",