diff --git a/business/jxcallback/orderman/orderman_ext.go b/business/jxcallback/orderman/orderman_ext.go index f8d6d83bd..c685b486a 100644 --- a/business/jxcallback/orderman/orderman_ext.go +++ b/business/jxcallback/orderman/orderman_ext.go @@ -876,7 +876,7 @@ func (c *OrderManager) GetStoresOrderSaleInfo(ctx *jxcontext.Context, storeIDLis return c.GetStoresOrderSaleInfoNew(ctx, storeIDList, fromTime, toTime, statusList) } -func (c *OrderManager) GetStoresOrderSaleInfo2(ctx *jxcontext.Context, fromTime time.Time, toTime time.Time, storeId int) (map[string]interface{}, error) { +func (c *OrderManager) GetStoresOrderSaleInfo2(ctx *jxcontext.Context, fromTime time.Time, toTime time.Time, storeId int, brandId, vendorId []int) (map[string]interface{}, error) { year, month, day := time.Now().Date() if fromTime.IsZero() { fromTime = time.Date(year, month, day, 0, 0, 0, 0, time.Local) @@ -887,19 +887,19 @@ func (c *OrderManager) GetStoresOrderSaleInfo2(ctx *jxcontext.Context, fromTime db := dao.GetDB() // 门店统计 - storeStatus, err := dao.StatisticsStoreInfo(db) + storeStatus, err := dao.StatisticsStoreInfo(db, brandId, vendorId) if err != nil { return nil, err } // 订单统计 - orderStatus, err := dao.StatisticsOrderInfo(db, fromTime, toTime, storeId) + orderStatus, err := dao.StatisticsOrderInfo(db, fromTime, toTime, storeId, brandId, vendorId) if err != nil { return nil, err } // 售后单统计 - afsOrderStatus, err := dao.StatisticsAfsOrderInfo(db, fromTime, toTime, storeId) + afsOrderStatus, err := dao.StatisticsAfsOrderInfo(db, fromTime, toTime, storeId, brandId, vendorId) if err != nil { return nil, err } diff --git a/business/model/dao/store.go b/business/model/dao/store.go index a1785a400..8470d2258 100644 --- a/business/model/dao/store.go +++ b/business/model/dao/store.go @@ -1698,11 +1698,23 @@ type StatisticsStore struct { } // StatisticsStoreInfo 统计所有的门店信息 -func StatisticsStoreInfo(db *DaoDB) ([]*StatisticsStore, error) { +func StatisticsStoreInfo(db *DaoDB, brandId []int, vendorId []int) ([]*StatisticsStore, error) { statistics := make([]*StatisticsStore, 0, 0) - sql := ` SELECT count(s.status) count, s.status FROM store s GROUP BY s.status ` - if err := GetRows(db, &statistics, sql, nil); err != nil { + sql := ` SELECT count(s.status) count, s.status FROM store s ` + param := make([]interface{}, 0, 0) + if len(vendorId) > model.NO { + sql += ` INNER JOIN store_map m ON s.id = m.store_id AND m.vendor_id IN (` + GenQuestionMarks(len(vendorId)) + `)` + param = append(param, vendorId) + } + sql += ` WHERE 1=1 ` + if len(brandId) > model.NO { + sql += ` AND s.brand_id IN (` + GenQuestionMarks(len(brandId)) + `)` + param = append(param, brandId) + } + + sql += ` GROUP BY s.status ` + if err := GetRows(db, &statistics, sql, param); err != nil { return nil, err } return statistics, nil @@ -1715,13 +1727,25 @@ type StatisticsOrder struct { } // StatisticsOrderInfo 统计订单信息 -func StatisticsOrderInfo(db *DaoDB, startTime, endTime time.Time, storeId int) ([]*StatisticsOrder, error) { - sql := ` SELECT count(g.vendor_order_id) count,g.status status ,sum(g.total_shop_money) total_shop_money FROM goods_order g WHERE g.order_created_at >= ? AND g.order_created_at <= ? ` - parma := []interface{}{startTime, endTime} +func StatisticsOrderInfo(db *DaoDB, startTime, endTime time.Time, storeId int, brandId, vendorId []int) ([]*StatisticsOrder, error) { + parma := []interface{}{} + sql := ` SELECT count(g.vendor_order_id) count,g.status status ,sum(g.total_shop_money) total_shop_money FROM goods_order g ` + + if len(brandId) > model.NO { + sql += ` INNER JOIN store s ON IF(g.store_id <> 0,g.store_id,g.jx_store_id) = s.id AND s.brand_id IN (` + GenQuestionMarks(len(brandId)) + `)` + parma = append(parma, brandId) + } + + sql += ` WHERE g.order_created_at >= ? AND g.order_created_at <= ?` + parma = append(parma, startTime, endTime) if storeId != model.NO { sql += ` AND IF(g.store_id <> 0,g.store_id,g.jx_store_id) = ?` parma = append(parma, storeId) } + if len(vendorId) > model.NO { + sql += ` AND g.vendor_id IN (` + GenQuestionMarks(len(vendorId)) + `)` + parma = append(parma, vendorId) + } sql += ` GROUP BY g.status ` orderStatistics := make([]*StatisticsOrder, 0, 0) if err := GetRows(GetDB(), &orderStatistics, sql, parma...); err != nil { @@ -1731,13 +1755,27 @@ func StatisticsOrderInfo(db *DaoDB, startTime, endTime time.Time, storeId int) ( } // StatisticsAfsOrderInfo 售后单信息统计 -func StatisticsAfsOrderInfo(db *DaoDB, startTime, endTime time.Time, storeId int) ([]*StatisticsOrder, error) { - sql := `SELECT count(a.vendor_order_id) count,a.status status ,sum(a.afs_total_shop_money) total_shop_money FROM afs_order a WHERE a.afs_created_at >= ? AND a.afs_created_at <= ? ` - parma := []interface{}{startTime, endTime} +func StatisticsAfsOrderInfo(db *DaoDB, startTime, endTime time.Time, storeId int, brandId, vendorId []int) ([]*StatisticsOrder, error) { + parma := []interface{}{} + sql := `SELECT count(a.vendor_order_id) count,a.status status ,sum(a.afs_total_shop_money) total_shop_money FROM afs_order a ` + + if len(brandId) > model.NO { + sql += ` INNER JOIN store s ON IF(a.store_id <> 0,a.store_id,a.jx_store_id) = s.id AND s.brand_id IN (` + GenQuestionMarks(len(brandId)) + `)` + parma = append(parma, brandId) + } + sql += ` WHERE a.afs_created_at >= ? AND a.afs_created_at <= ?` + parma = append(parma, startTime, endTime) + if storeId != model.NO { - sql += ` AND IF(a.store_id <> 0,a.store_id,a.jx_store_id) = 100743` + sql += ` AND IF(a.store_id <> 0,a.store_id,a.jx_store_id) = ?` parma = append(parma, storeId) } + + if len(vendorId) > 0 { + sql += ` AND a.vendor_id IN (` + GenQuestionMarks(len(vendorId)) + `)` + parma = append(parma, vendorId) + } + sql += ` GROUP BY a.status` orderStatistics := make([]*StatisticsOrder, 0, 0) if err := GetRows(GetDB(), &orderStatistics, sql, parma...); err != nil { diff --git a/controllers/jx_order.go b/controllers/jx_order.go index 9ff3adfa3..fa97393f5 100644 --- a/controllers/jx_order.go +++ b/controllers/jx_order.go @@ -484,16 +484,24 @@ func (c *OrderController) GetStoresOrderSaleInfo() { // @Param token header string true "认证token" // @Param fromTime query string true "起始时间" // @Param toTime query string true "结束时间" -// @Param storeIDs query int false "门店id" +// @Param brandIds query string false "品牌id" +// @Param vendorIds query string false "平台id" +// @Param storeID query int false "门店id" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /StaleIndexInfo [get] func (c *OrderController) StaleIndexInfo() { c.callStaleIndexInfo(func(params *tOrderStaleIndexInfoParams) (retVal interface{}, code string, err error) { timeList, err := jxutils.BatchStr2Time(params.FromTime, params.ToTime) - if err == nil { - retVal, err = orderman.FixedOrderManager.GetStoresOrderSaleInfo2(params.Ctx, timeList[0], timeList[1], params.StoreIDs) + if err != nil { + return nil, "", err } + var vendors []int + var brandIds []int + if err := jxutils.Strings2Objs(params.VendorIds, &vendors, params.BrandIds, &brandIds); err != nil { + return nil, "", err + } + retVal, err = orderman.FixedOrderManager.GetStoresOrderSaleInfo2(params.Ctx, timeList[0], timeList[1], params.StoreID, brandIds, vendors) return retVal, "", err }) }