From 3d8f99d9ef5fb6e4e2417bfff754565d234c4f79 Mon Sep 17 00:00:00 2001 From: gazebo Date: Wed, 10 Jul 2019 14:59:41 +0800 Subject: [PATCH] =?UTF-8?q?-=20QueryActs=E6=B7=BB=E5=8A=A0=E5=8F=82?= =?UTF-8?q?=E6=95=B0createTypeList=20-=20doa.QueryActs=E5=9C=A8=E4=B8=8D?= =?UTF-8?q?=E5=88=86=E9=A1=B5=E6=97=B6=EF=BC=8C=E4=BC=98=E5=8C=96=E4=B8=BA?= =?UTF-8?q?=E5=8F=AA=E8=AF=BB=E5=8F=96=E4=B8=80=E6=AC=A1=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/model/dao/act.go | 99 +++++++++++++++++++++++++-------------- controllers/act.go | 9 ++-- 2 files changed, 68 insertions(+), 40 deletions(-) diff --git a/business/model/dao/act.go b/business/model/dao/act.go index fdd48d326..0d72647fa 100644 --- a/business/model/dao/act.go +++ b/business/model/dao/act.go @@ -137,17 +137,31 @@ func GetActStoreSkuVendorInfo(db *DaoDB, actID int, vendorIDs, storeIDs, skuIDs return actStoreSkuMap, err } -func QueryActs(db *DaoDB, actID int, offset, pageSize int, keyword string, vendorID int, statusList []int, actTypeList []int, storeID, skuID, cityCode int, beginAt, endAt, createdAtFrom, createdAtTo time.Time) (pagedInfo *PagedActListInfo, err error) { +func QueryActs(db *DaoDB, actID int, offset, pageSize int, keyword string, vendorID int, statusList, createTypeList []int, actTypeList []int, storeID, skuID, cityCode int, beginAt, endAt, createdAtFrom, createdAtTo time.Time) (pagedInfo *PagedActListInfo, err error) { if actID == 0 && utils.IsTimeZero(createdAtFrom) && utils.IsTimeZero(beginAt) { return nil, fmt.Errorf("actID,createdAtFrom和beginAt中,至少要指定一个条件") } + offset = FormalizePageOffset(offset) + pageSize = FormalizePageSize(pageSize) + isGetAll := offset == 0 && pageSize == model.UnlimitedPageSize + sql := ` SELECT SQL_CALC_FOUND_ROWS t1.id - FROM act t1 - WHERE 1 = 1 - ` + FROM act t1` sqlParams := []interface{}{} + if isGetAll { + sql = ` + SELECT + t1.*, + t2.id map_id, t2.vendor_id, t2.vendor_act_id, t2.sync_status, t2.remark map_remark + FROM act t1 + LEFT JOIN act_map t2 ON t2.act_id = t1.id AND t2.deleted_at = ?` + sqlParams = []interface{}{utils.DefaultTimeValue} + } + + sql += ` + WHERE 1 = 1` keywordInt := int64(0) if keyword != "" { keywordLike := "%" + keyword + "%" @@ -196,6 +210,10 @@ func QueryActs(db *DaoDB, actID int, offset, pageSize int, keyword string, vendo sql += " AND t1.type IN (" + GenQuestionMarks(len(actTypeList)) + ")" sqlParams = append(sqlParams, actTypeList) } + if len(createTypeList) > 0 { + sql += " AND t1.create_type IN (" + GenQuestionMarks(len(createTypeList)) + ")" + sqlParams = append(sqlParams, createTypeList) + } if !utils.IsTimeZero(beginAt) { sql += " AND t1.begin_at <= ?" sqlParams = append(sqlParams, beginAt) @@ -212,43 +230,49 @@ func QueryActs(db *DaoDB, actID int, offset, pageSize int, keyword string, vendo sql += " AND t1.created_at <= ?" sqlParams = append(sqlParams, createdAtTo) } - sql += ` - ORDER BY 1 DESC - LIMIT ? OFFSET ? - ` - sqlParams = append(sqlParams, FormalizePageSize(pageSize), FormalizePageOffset(offset)) - var idList []int pagedInfo = &PagedActListInfo{} - Begin(db) - defer func() { - if r := recover(); r != nil { - Rollback(db) - panic(r) - } - }() - if err = GetRows(db, &idList, sql, sqlParams...); err != nil || len(idList) == 0 { - Rollback(db) - return nil, err - } - pagedInfo.TotalCount = GetLastTotalRowCount(db) - Commit(db) + if isGetAll { + sql += ` + ORDER BY t1.id DESC, t2.vendor_id` + } else { + sql += ` + ORDER BY 1 DESC + LIMIT ? OFFSET ? + ` + sqlParams = append(sqlParams, pageSize, offset) + var idList []int - sql = ` - SELECT - t1.*, - t2.id map_id, t2.vendor_id, t2.vendor_act_id, t2.sync_status, t2.remark map_remark - FROM act t1 - LEFT JOIN act_map t2 ON t2.act_id = t1.id AND t2.deleted_at = ? - WHERE t1.id IN (` + GenQuestionMarks(len(idList)) + `) - ORDER BY t1.id DESC, t2.vendor_id - ` - sqlParams = []interface{}{ - utils.DefaultTimeValue, - idList, + Begin(db) + defer func() { + if r := recover(); r != nil { + Rollback(db) + panic(r) + } + }() + if err = GetRows(db, &idList, sql, sqlParams...); err != nil || len(idList) == 0 { + Rollback(db) + return pagedInfo, err + } + pagedInfo.TotalCount = GetLastTotalRowCount(db) + Commit(db) + + sql = ` + SELECT + t1.*, + t2.id map_id, t2.vendor_id, t2.vendor_act_id, t2.sync_status, t2.remark map_remark + FROM act t1 + LEFT JOIN act_map t2 ON t2.act_id = t1.id AND t2.deleted_at = ? + WHERE t1.id IN (` + GenQuestionMarks(len(idList)) + `) + ORDER BY t1.id DESC, t2.vendor_id + ` + sqlParams = []interface{}{ + utils.DefaultTimeValue, + idList, + } } var actList []*tActAndMap - if err = GetRows(db, &actList, sql, sqlParams...); err != nil || len(idList) == 0 { + if err = GetRows(db, &actList, sql, sqlParams...); err != nil { return nil, err } actMap := make(map[int]*ActVendorInfo) @@ -265,6 +289,9 @@ func QueryActs(db *DaoDB, actID int, offset, pageSize int, keyword string, vendo tmpAct.VendorList = append(tmpAct.VendorList, &v.ActMapPureInfo) } } + if isGetAll { + pagedInfo.TotalCount = len(pagedInfo.Data) + } return pagedInfo, err } diff --git a/controllers/act.go b/controllers/act.go index 2fc9cd364..6893f202a 100644 --- a/controllers/act.go +++ b/controllers/act.go @@ -125,6 +125,7 @@ func (c *ActController) CreateAct() { // @Param vendorID query int false "包含平台" // @Param typeList query string false "活动类型列表,3:直降,4:秒杀" // @Param statusList query string false "活动状态列表" +// @Param createTypeList query string false "创建方式列表" // @Param storeID query int false "包含门店" // @Param skuID query int false "包含sku" // @Param offset query int false "活动列表起始序号(以0开始,缺省为0)" @@ -136,13 +137,13 @@ func (c *ActController) QueryActs() { c.callQueryActs(func(params *tActQueryActsParams) (retVal interface{}, errCode string, err error) { timeList, err := jxutils.BatchStr2Time(params.CreatedAtFrom, params.CreatedAtTo, params.BeginAt, params.EndAt) if err == nil { - var typeList, statusList []int - if err = jxutils.Strings2Objs(params.TypeList, &typeList, params.StatusList, &statusList); err == nil { + var typeList, statusList, createTypeList []int + if err = jxutils.Strings2Objs(params.TypeList, &typeList, params.StatusList, &statusList, params.CreateTypeList, &createTypeList); err == nil { if params.MapData["vendorID"] == nil { params.VendorID = -1 } - retVal, err = act.QueryActs(params.Ctx, params.ActID, params.Offset, params.PageSize, params.Keyword, params.VendorID, statusList, typeList, - params.StoreID, params.SkuID, params.CityCode, timeList[2], timeList[3], timeList[0], timeList[1]) + retVal, err = act.QueryActs(params.Ctx, params.ActID, params.Offset, params.PageSize, params.Keyword, params.VendorID, + statusList, typeList, createTypeList, params.StoreID, params.SkuID, params.CityCode, timeList[2], timeList[3], timeList[0], timeList[1]) } } return retVal, "", err