- 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
|
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) {
|
if actID == 0 && utils.IsTimeZero(createdAtFrom) && utils.IsTimeZero(beginAt) {
|
||||||
return nil, fmt.Errorf("actID,createdAtFrom和beginAt中,至少要指定一个条件")
|
return nil, fmt.Errorf("actID,createdAtFrom和beginAt中,至少要指定一个条件")
|
||||||
}
|
}
|
||||||
|
offset = FormalizePageOffset(offset)
|
||||||
|
pageSize = FormalizePageSize(pageSize)
|
||||||
|
isGetAll := offset == 0 && pageSize == model.UnlimitedPageSize
|
||||||
|
|
||||||
sql := `
|
sql := `
|
||||||
SELECT SQL_CALC_FOUND_ROWS
|
SELECT SQL_CALC_FOUND_ROWS
|
||||||
t1.id
|
t1.id
|
||||||
FROM act t1
|
FROM act t1`
|
||||||
WHERE 1 = 1
|
|
||||||
`
|
|
||||||
sqlParams := []interface{}{}
|
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)
|
keywordInt := int64(0)
|
||||||
if keyword != "" {
|
if keyword != "" {
|
||||||
keywordLike := "%" + 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)) + ")"
|
sql += " AND t1.type IN (" + GenQuestionMarks(len(actTypeList)) + ")"
|
||||||
sqlParams = append(sqlParams, 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) {
|
if !utils.IsTimeZero(beginAt) {
|
||||||
sql += " AND t1.begin_at <= ?"
|
sql += " AND t1.begin_at <= ?"
|
||||||
sqlParams = append(sqlParams, beginAt)
|
sqlParams = append(sqlParams, beginAt)
|
||||||
@@ -212,14 +230,19 @@ func QueryActs(db *DaoDB, actID int, offset, pageSize int, keyword string, vendo
|
|||||||
sql += " AND t1.created_at <= ?"
|
sql += " AND t1.created_at <= ?"
|
||||||
sqlParams = append(sqlParams, createdAtTo)
|
sqlParams = append(sqlParams, createdAtTo)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pagedInfo = &PagedActListInfo{}
|
||||||
|
if isGetAll {
|
||||||
|
sql += `
|
||||||
|
ORDER BY t1.id DESC, t2.vendor_id`
|
||||||
|
} else {
|
||||||
sql += `
|
sql += `
|
||||||
ORDER BY 1 DESC
|
ORDER BY 1 DESC
|
||||||
LIMIT ? OFFSET ?
|
LIMIT ? OFFSET ?
|
||||||
`
|
`
|
||||||
sqlParams = append(sqlParams, FormalizePageSize(pageSize), FormalizePageOffset(offset))
|
sqlParams = append(sqlParams, pageSize, offset)
|
||||||
var idList []int
|
var idList []int
|
||||||
|
|
||||||
pagedInfo = &PagedActListInfo{}
|
|
||||||
Begin(db)
|
Begin(db)
|
||||||
defer func() {
|
defer func() {
|
||||||
if r := recover(); r != nil {
|
if r := recover(); r != nil {
|
||||||
@@ -229,7 +252,7 @@ func QueryActs(db *DaoDB, actID int, offset, pageSize int, keyword string, vendo
|
|||||||
}()
|
}()
|
||||||
if err = GetRows(db, &idList, sql, sqlParams...); err != nil || len(idList) == 0 {
|
if err = GetRows(db, &idList, sql, sqlParams...); err != nil || len(idList) == 0 {
|
||||||
Rollback(db)
|
Rollback(db)
|
||||||
return nil, err
|
return pagedInfo, err
|
||||||
}
|
}
|
||||||
pagedInfo.TotalCount = GetLastTotalRowCount(db)
|
pagedInfo.TotalCount = GetLastTotalRowCount(db)
|
||||||
Commit(db)
|
Commit(db)
|
||||||
@@ -247,8 +270,9 @@ func QueryActs(db *DaoDB, actID int, offset, pageSize int, keyword string, vendo
|
|||||||
utils.DefaultTimeValue,
|
utils.DefaultTimeValue,
|
||||||
idList,
|
idList,
|
||||||
}
|
}
|
||||||
|
}
|
||||||
var actList []*tActAndMap
|
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
|
return nil, err
|
||||||
}
|
}
|
||||||
actMap := make(map[int]*ActVendorInfo)
|
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)
|
tmpAct.VendorList = append(tmpAct.VendorList, &v.ActMapPureInfo)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if isGetAll {
|
||||||
|
pagedInfo.TotalCount = len(pagedInfo.Data)
|
||||||
|
}
|
||||||
return pagedInfo, err
|
return pagedInfo, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -125,6 +125,7 @@ func (c *ActController) CreateAct() {
|
|||||||
// @Param vendorID query int false "包含平台"
|
// @Param vendorID query int false "包含平台"
|
||||||
// @Param typeList query string false "活动类型列表,3:直降,4:秒杀"
|
// @Param typeList query string false "活动类型列表,3:直降,4:秒杀"
|
||||||
// @Param statusList query string false "活动状态列表"
|
// @Param statusList query string false "活动状态列表"
|
||||||
|
// @Param createTypeList query string false "创建方式列表"
|
||||||
// @Param storeID query int false "包含门店"
|
// @Param storeID query int false "包含门店"
|
||||||
// @Param skuID query int false "包含sku"
|
// @Param skuID query int false "包含sku"
|
||||||
// @Param offset query int false "活动列表起始序号(以0开始,缺省为0)"
|
// @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) {
|
c.callQueryActs(func(params *tActQueryActsParams) (retVal interface{}, errCode string, err error) {
|
||||||
timeList, err := jxutils.BatchStr2Time(params.CreatedAtFrom, params.CreatedAtTo, params.BeginAt, params.EndAt)
|
timeList, err := jxutils.BatchStr2Time(params.CreatedAtFrom, params.CreatedAtTo, params.BeginAt, params.EndAt)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
var typeList, statusList []int
|
var typeList, statusList, createTypeList []int
|
||||||
if err = jxutils.Strings2Objs(params.TypeList, &typeList, params.StatusList, &statusList); err == nil {
|
if err = jxutils.Strings2Objs(params.TypeList, &typeList, params.StatusList, &statusList, params.CreateTypeList, &createTypeList); err == nil {
|
||||||
if params.MapData["vendorID"] == nil {
|
if params.MapData["vendorID"] == nil {
|
||||||
params.VendorID = -1
|
params.VendorID = -1
|
||||||
}
|
}
|
||||||
retVal, err = act.QueryActs(params.Ctx, params.ActID, params.Offset, params.PageSize, params.Keyword, params.VendorID, statusList, typeList,
|
retVal, err = act.QueryActs(params.Ctx, params.ActID, params.Offset, params.PageSize, params.Keyword, params.VendorID,
|
||||||
params.StoreID, params.SkuID, params.CityCode, timeList[2], timeList[3], timeList[0], timeList[1])
|
statusList, typeList, createTypeList, params.StoreID, params.SkuID, params.CityCode, timeList[2], timeList[3], timeList[0], timeList[1])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return retVal, "", err
|
return retVal, "", err
|
||||||
|
|||||||
Reference in New Issue
Block a user