From 5c436326bf6032c12cfca501ce4df0c87e0dc009 Mon Sep 17 00:00:00 2001 From: gazebo Date: Wed, 15 May 2019 14:55:02 +0800 Subject: [PATCH] + GetAfsOrders + GetAfsOrderSkuInfo --- business/jxcallback/orderman/orderman_ext.go | 122 +++++++++++++++++++ business/jxutils/jxutils.go | 13 ++ controllers/jx_order.go | 48 ++++++++ routers/commentsRouter_controllers.go | 18 +++ 4 files changed, 201 insertions(+) diff --git a/business/jxcallback/orderman/orderman_ext.go b/business/jxcallback/orderman/orderman_ext.go index e17664008..fe42289df 100644 --- a/business/jxcallback/orderman/orderman_ext.go +++ b/business/jxcallback/orderman/orderman_ext.go @@ -648,3 +648,125 @@ func (c *OrderManager) GetStoresOrderSaleInfo(ctx *jxcontext.Context, storeIDLis err = dao.GetRows(dao.GetDB(), &saleInfoList, sql, sqlParams...) return saleInfoList, err } + +func (c *OrderManager) GetAfsOrders(ctx *jxcontext.Context, keyword, afsOrderID, vendorOrderID string, vendorIDList, appealTypeList, storeIDList, statusList []int, fromTime, toTime time.Time, offset, pageSize int) (pagedInfo *model.PagedInfo, err error) { + globals.SugarLogger.Debugf("GetAfsOrders") + + pageSize = jxutils.FormalizePageSize(pageSize) + if offset < 0 { + offset = 0 + } + sql := ` + SELECT SQL_CALC_FOUND_ROWS t1.* + FROM afs_order t1 + ` + var ( + sqlWhere string + sqlParams []interface{} + ) + // 如果搜索关键字可能为订单或售后单号,则当成订单或售后单查询 + if keyword != "" { + if jxutils.GetPossibleVendorIDFromAfsOrderID(keyword) > model.VendorIDUnknown && afsOrderID == "" { + afsOrderID = keyword + keyword = "" + } else if jxutils.GetPossibleVendorIDFromVendorOrderID(keyword) > model.VendorIDUnknown && vendorOrderID == "" { + vendorOrderID = keyword + keyword = "" + } + } + if vendorOrderID != "" || afsOrderID != "" { + if vendorOrderID != "" { + sqlWhere = " WHERE (t1.vendor_order_id = ? OR t1.vendor_order_id2 = ?)" + sqlParams = []interface{}{ + vendorOrderID, + vendorOrderID, + } + } else { + sqlWhere = " WHERE (t1.afs_order_id = ?)" + sqlParams = []interface{}{ + afsOrderID, + } + } + } else { + if toTime.Sub(fromTime) > 24*time.Hour*60 { + return nil, fmt.Errorf("GetAfsOrders查询时间不能超过60天") + } + sqlWhere = ` + WHERE t1.afs_created_at >= ? AND t1.afs_created_at <= ? + ` + sqlParams = []interface{}{ + fromTime, + toTime, + } + if keyword != "" { + keywordLike := "%" + keyword + "%" + sqlWhere += ` + AND (t1.vendor_order_id2 LIKE ? OR t1.vendor_order_id LIKE ? OR t1.afs_order_id LIKE ? + OR t1.vendor_store_id LIKE ? OR t1.reason_desc LIKE ? + ` + sqlParams = append(sqlParams, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike) + if keywordInt64 := utils.Str2Int64WithDefault(keyword, 0); keywordInt64 > 0 { + sqlWhere += " OR t1.store_id = ? OR t1.jx_store_id = ?" + sqlParams = append(sqlParams, keywordInt64, keywordInt64) + } + sqlWhere += ")" + } + if len(storeIDList) > 0 { + sqlWhere += " AND IF(t1.jx_store_id != 0, t1.jx_store_id, t1.store_id) IN (" + dao.GenQuestionMarks(len(storeIDList)) + ")" + sqlParams = append(sqlParams, storeIDList) + } + if len(statusList) > 0 { + sqlWhere += " AND t1.status IN (" + dao.GenQuestionMarks(len(statusList)) + ")" + sqlParams = append(sqlParams, statusList) + } + if len(appealTypeList) > 0 { + sqlWhere += " AND t1.appeal_type IN (" + dao.GenQuestionMarks(len(appealTypeList)) + ")" + sqlParams = append(sqlParams, appealTypeList) + } + } + if len(vendorIDList) > 0 { + sqlWhere += " AND t1.vendor_id IN (" + dao.GenQuestionMarks(len(vendorIDList)) + ")" + sqlParams = append(sqlParams, vendorIDList) + } + + sql += sqlWhere + sql += ` + ORDER BY t1.afs_created_at DESC + LIMIT ? OFFSET ? + ` + sqlParams = append(sqlParams, pageSize, offset) + + var orders []*model.AfsOrder + db := dao.GetDB() + dao.Begin(db) + defer func() { + if r := recover(); r != nil || err != nil { + dao.Rollback(db) + if r != nil { + panic(r) + } + } + }() + if err = dao.GetRows(db, &orders, sql, sqlParams...); err == nil { + pagedInfo = &model.PagedInfo{ + TotalCount: dao.GetLastTotalRowCount(db), + Data: orders, + } + dao.Commit(db) + } + return pagedInfo, err +} + +func (c *OrderManager) GetAfsOrderSkuInfo(ctx *jxcontext.Context, afsOrderID string, vendorID int) (skus []*model.OrderSkuFinancial, err error) { + sql := ` + SELECT t1.* + FROM order_sku_financial t1 + WHERE t1.afs_order_id = ? AND t1.vendor_id = ? + ` + sqlParams := []interface{}{ + afsOrderID, + vendorID, + } + err = dao.GetRows(dao.GetDB(), &skus, sql, sqlParams...) + return skus, err +} diff --git a/business/jxutils/jxutils.go b/business/jxutils/jxutils.go index 2100e0e80..10822cf43 100644 --- a/business/jxutils/jxutils.go +++ b/business/jxutils/jxutils.go @@ -129,6 +129,19 @@ func GetPossibleVendorIDFromVendorOrderID(vendorOrderID string) (vendorID int) { return vendorID } +func GetPossibleVendorIDFromAfsOrderID(afsOrderID string) (vendorID int) { + vendorID = model.VendorIDUnknown + if afsOrderIDInt64 := utils.Str2Int64WithDefault(afsOrderID, 0); afsOrderIDInt64 > 0 { + orderIDLen := len(afsOrderID) + if orderIDLen == len("22586438") { + vendorID = model.VendorIDJD + } else if orderIDLen == len("579557034") { + vendorID = model.VendorIDEBAI + } + } + return vendorID +} + func ComposeUniversalOrderID(orderID string, vendorID int) string { // return fmt.Sprintf("%s|%d", orderID, vendorID) return orderID // 当前用长度就能区分,先不加上vendorID diff --git a/controllers/jx_order.go b/controllers/jx_order.go index d75e10e69..d8660a329 100644 --- a/controllers/jx_order.go +++ b/controllers/jx_order.go @@ -284,6 +284,54 @@ func (c *OrderController) GetOrders() { }) } +// @Title 查询售后单 +// @Description 查询售后单 +// @Param token header string true "认证token" +// @Param afsOrderID query string false "售后单号,如果此项不为空,忽略其它所有查询条件" +// @Param vendorOrderID query string false "订单号,如果此项不为空,忽略其它所有查询条件" +// @Param vendorIDs query string false "订单所属厂商列表[1,2,3],缺省不限制" +// @Param appealTypes query string false "售后处理s方式列表" +// @Param storeIDs query string false "京西门店ID列表[1,2,3],缺省不限制" +// @Param statuss query string false "订单状态列表[1,2,3],缺省不限制" +// @Param keyword query string false "查询关键字" +// @Param fromTime query string false "开始时间,如果订单号为空此项必须要求" +// @Param toTime query string false "结束时间,如果订单号为空此项必须要求" +// @Param offset query int false "结果起始序号(以0开始,缺省为0)" +// @Param pageSize query int false "结果页大小(缺省为50,-1表示全部)" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /GetAfsOrders [get] +func (c *OrderController) GetAfsOrders() { + c.callGetAfsOrders(func(params *tOrderGetAfsOrdersParams) (retVal interface{}, errCode string, err error) { + timeList, err := jxutils.BatchStr2Time(params.FromTime, params.ToTime) + if err == nil { + var vendorIDList, appealTypeList, storeIDList, statusList []int + if err = jxutils.Strings2Objs(params.VendorIDs, &vendorIDList, params.AppealTypes, &appealTypeList, + params.StoreIDs, &storeIDList, params.Statuss, &statusList); err == nil { + retVal, err = orderman.FixedOrderManager.GetAfsOrders(params.Ctx, params.Keyword, params.AfsOrderID, + params.VendorOrderID, vendorIDList, appealTypeList, storeIDList, statusList, timeList[0], timeList[1], + params.Offset, params.PageSize) + } + } + return retVal, "", err + }) +} + +// @Title 得到售后单SKU信息 +// @Description 得到售后单SKU信息 +// @Param token header string true "认证token" +// @Param afsOrderID query string true "售后单ID" +// @Param vendorID query int true "售后单所属的厂商ID" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /GetAfsOrderSkuInfo [get] +func (c *OrderController) GetAfsOrderSkuInfo() { + c.callGetAfsOrderSkuInfo(func(params *tOrderGetAfsOrderSkuInfoParams) (retVal interface{}, errCode string, err error) { + retVal, err = orderman.FixedOrderManager.GetAfsOrderSkuInfo(params.Ctx, params.AfsOrderID, params.VendorID) + return retVal, "", err + }) +} + // @Title 查询运单 // @Description 查询运单 // @Param token header string true "认证token" diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index 4d06acffb..98d8fafde 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -628,6 +628,24 @@ 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: "GetAfsOrderSkuInfo", + Router: `/GetAfsOrderSkuInfo`, + AllowHTTPMethods: []string{"get"}, + 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: "GetAfsOrders", + Router: `/GetAfsOrders`, + AllowHTTPMethods: []string{"get"}, + 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: "GetOrderInfo",