diff --git a/business/jxcallback/orderman/orderman_ext.go b/business/jxcallback/orderman/orderman_ext.go index 9367d97e2..7507939b8 100644 --- a/business/jxcallback/orderman/orderman_ext.go +++ b/business/jxcallback/orderman/orderman_ext.go @@ -24,7 +24,6 @@ import ( "git.rosy.net.cn/jx-callback/business/partner" "git.rosy.net.cn/jx-callback/globals" "git.rosy.net.cn/jx-callback/globals/api/apimanager" - "github.com/astaxie/beego/client/orm" ) const ( @@ -163,28 +162,46 @@ func (c *OrderManager) GetOrderSkuInfo(ctx *jxcontext.Context, vendorOrderID str func (c *OrderManager) GetOrderInfo(ctx *jxcontext.Context, vendorOrderID string, vendorID int, isRefresh bool) (order *model.GoodsOrderExt, err error) { globals.SugarLogger.Debugf("GetOrderInfo orderID:%s", vendorOrderID) - db := orm.NewOrm() + db := dao.GetDB() orders := []*model.GoodsOrderExt{} - + rorder, _ := dao.GetSimpleOrder(db, vendorOrderID) + sqlParams := []interface{}{} // 这里用QueryRows而不用QueryRow的原因是用QueryRow在这种情况下不能将数据读出,很奇怪。大概的原因是QueryRow对于GoodsOrderExt这种有嵌入的struct处理有问题 - num, err := db.Raw(` - SELECT t3.*,ROUND(t3.shop_sum_price/t3.count) avg_price, t1.*, t2.status waybill_status, t2.courier_name, t2.courier_mobile, t2.desired_fee, - CAST(t1.consignee_lng AS DECIMAL(15,6))/1000000 float_lng, - CAST(t1.consignee_lat AS DECIMAL(15,6))/1000000 float_lat - FROM goods_order t1 - LEFT JOIN waybill t2 ON t1.vendor_waybill_id = t2.vendor_waybill_id AND t1.waybill_vendor_id = t2.waybill_vendor_id - JOIN ( - SELECT count(a.vendor_order_id) count,SUM(a.shop_price) - - IFNULL(SUM(c.sku_user_money+c.freight_user_money+c.afs_freight_money+c.box_money+c.tongcheng_freight_money+c.sku_box_money),0) shop_sum_price,a.vendor_user_id,count(d.score < 3 or NULL) bad_comment_count - FROM goods_order a - LEFT JOIN afs_order c ON a.vendor_order_id = c.vendor_order_id AND c.vendor_id = a.vendor_id - LEFT JOIN jx_bad_comments d ON d.order_id = a.vendor_order_id AND d.order_flag = a.vendor_id - WHERE a.vendor_user_id = (SELECT vendor_user_id FROM goods_order WHERE vendor_order_id = ?) - GROUP BY a.vendor_user_id - )t3 ON t3.vendor_user_id = t1.vendor_user_id - WHERE t1.vendor_order_id = ? AND vendor_id = ? - `, vendorOrderID, vendorOrderID, vendorID).QueryRows(&orders) - if err == nil && num > 0 { + sql := ` + SELECT + ` + if rorder.VendorUserID != "" { + sql += ` + t3.*,ROUND(t3.shop_sum_price/t3.count) avg_price, + ` + } + sql += ` + t1.*, t2.status waybill_status, t2.courier_name, t2.courier_mobile, t2.desired_fee, + CAST(t1.consignee_lng AS DECIMAL(15,6))/1000000 float_lng, + CAST(t1.consignee_lat AS DECIMAL(15,6))/1000000 float_lat + FROM goods_order t1 + LEFT JOIN waybill t2 ON t1.vendor_waybill_id = t2.vendor_waybill_id AND t1.waybill_vendor_id = t2.waybill_vendor_id + ` + if rorder.VendorUserID != "" { + sql += ` + JOIN ( + SELECT count(a.vendor_order_id) count,SUM(a.shop_price) - + IFNULL(SUM(c.sku_user_money+c.freight_user_money+c.afs_freight_money+c.box_money+c.tongcheng_freight_money+c.sku_box_money),0) shop_sum_price,a.vendor_user_id,count(d.score < 3 or NULL) bad_comment_count + FROM goods_order a + LEFT JOIN afs_order c ON a.vendor_order_id = c.vendor_order_id AND c.vendor_id = a.vendor_id + LEFT JOIN jx_bad_comments d ON d.order_id = a.vendor_order_id AND d.order_flag = a.vendor_id + WHERE a.vendor_user_id = (SELECT vendor_user_id FROM goods_order WHERE vendor_order_id = ?) + GROUP BY a.vendor_user_id + )t3 ON t3.vendor_user_id = t1.vendor_user_id + ` + sqlParams = append(sqlParams, vendorOrderID) + } + sql += ` + WHERE t1.vendor_order_id = ? AND vendor_id = ? + ` + sqlParams = append(sqlParams, vendorOrderID, vendorID) + err = dao.GetRows(db, &orders, sql, sqlParams) + if err == nil { order = orders[0] if isRefresh && vendorID == model.VendorIDJD { tmpOrder, err2 := partner.GetPurchaseOrderHandlerFromVendorID(vendorID).GetOrder(order.VendorOrgCode, vendorOrderID, order.VendorStoreID)