package dao import ( "strconv" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/model" ) type StatisticsReportForOrdersList struct { StoreID int `orm:"column(storeID)" json:"storeID"` OrderCounts int `orm:"column(orderCounts)" json:"orderCounts"` SalePrice int `orm:"column(salePrice)" json:"salePrice"` ActualPayPrice int `orm:"column(actualPayPrice)" json:"actualPayPrice"` ShopPrice int `orm:"column(shopPrice)" json:"shopPrice"` DiscountMoney int `orm:"column(discountMoney)" json:"discountMoney"` DesiredFee int `orm:"column(desiredFee)" json:"desiredFee"` DistanceFreightMoney int `orm:"column(distanceFreightMoney)" json:"distanceFreightMoney"` WaybillTipMoney int `orm:"column(waybillTipMoney)" json:"waybillTipMoney"` TotalShopMoney int `orm:"column(totalShopMoney)" json:"totalShopMoney"` PmSubsidyMoney int `orm:"column(pmSubsidyMoney)" json:"pmSubsidyMoney"` EarningPrice int `orm:"column(earningPrice)" json:"earningPrice"` TotalGrossProfit int `orm:"column(totalGrossProfit)" json:"totalGrossProfit"` ComGrossProfit float32 `orm:"column(comGrossProfit)" json:"comGrossProfit"` CityManagerGrossProfit float32 `orm:"column(cityManagerGrossProfit)" 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 ` if err = GetRows(db, &statisticsReportForOrdersList, sql, sqlParams...); err == nil { return statisticsReportForOrdersList, nil } return nil, err }