- QueryActs添加参数createTypeList
- doa.QueryActs在不分页时,优化为只读取一次数据库
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user