package dao import ( "fmt" "strconv" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/model" ) type StatisticsReportForOrdersList struct { storeID int `orm:"size(255)" json:"storeID"` orderCounts int `orm:"size(255)" json:"orderCounts"` salePrice int64 `orm:"size(255)" json:"salePrice"` actualPayPrice int64 `orm:"size(255)" json:"actualPayPrice"` shopPrice int64 `orm:"size(255)" json:"shopPrice"` discountMoney int64 `orm:"size(255)" json:"discountMoney"` desiredFee int64 `orm:"size(255)" json:"desiredFee"` distanceFreightMoney int64 `orm:"size(255)" json:"distanceFreightMoney"` waybillTipMoney int64 `orm:"size(255)" json:"waybillTipMoney"` totalShopMoney int64 `orm:"size(255)" json:"totalShopMoney"` pmSubsidyMoney int64 `orm:"size(255)" json:"pmSubsidyMoney"` earningPrice int64 `orm:"size(255)" json:"earningPrice"` totalGrossProfit int64 `orm:"size(255)" json:"totalGrossProfit"` comGrossProfit float32 `orm:"size(255)" json:"comGrossProfit"` cityManagerGrossProfit float32 `orm:"size(255)" json:"cityManagerGrossProfit"` } func GetStatisticsReportForOrders(db *DaoDB, storeIDs []int, fromDate string, toDate string) (statisticsReportForOrdersList []*StatisticsReportForOrdersList, err error) { //排除已取消的订单 status := strconv.Itoa(model.OrderStatusCanceled) sql := ` SELECT s.*, (totalGrossProfit*c.jx_brand_fee_factor)/(c.jx_brand_fee_factor+market_add_fee_factor) comGrossProfit, (totalGrossProfit*c.market_add_fee_factor)/(c.jx_brand_fee_factor+market_add_fee_factor) cityManagerGrossProfit FROM store c,( SELECT a.store_id storeID, count(*) orderCounts, sum(sale_price) salePrice, sum(actual_pay_price) actualPayPrice, sum(shop_price) shopPrice, sum(discount_money) discountMoney, sum(desired_fee) desiredFee, sum(distance_freight_money) distanceFreightMoney, sum(waybill_tip_money) waybillTipMoney, sum(total_shop_money) totalShopMoney, sum(pm_subsidy_money) pmSubsidyMoney, sum(earning_price) EarningPrice, sum(total_shop_money-earning_price-desired_fee-distance_freight_money-waybill_tip_money-80) totalGrossProfit FROM goods_order a LEFT JOIN waybill b on if(a.waybill_vendor_id = -1,a.vendor_order_id,a.vendor_waybill_id) = b.vendor_waybill_id WHERE a.status != ` + status + ` ` sqlParams := []interface{}{} if fromDate != "" { sql += "AND a.order_created_at >= date_format(?,'YYYY-MM-DD HH:MM:SS')" sqlParams = append(sqlParams, utils.Str2Time(fromDate)) } if toDate != "" { sql += "AND a.order_created_at <= date_format(?,'YYYY-MM-DD HH:MM:SS')" sqlParams = append(sqlParams, utils.Str2Time(toDate)) } if len(storeIDs) > 0 { sql += "AND a.store_id in(" + GenQuestionMarks(len(storeIDs)) + ")" sqlParams = append(sqlParams, storeIDs) } sql += ` GROUP BY a.store_id )s WHERE s.storeID = c.id ` fmt.Println(sql) if err = GetRows(db, &statisticsReportForOrdersList, sql, sqlParams...); err == nil { return statisticsReportForOrdersList, nil } return nil, err }