This commit is contained in:
苏尹岚
2021-04-13 09:02:36 +08:00
parent 812432837d
commit 9dbca78044

View File

@@ -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)