diff --git a/business/model/dao/event.go b/business/model/dao/event.go index 1a2005a39..3ac394be5 100644 --- a/business/model/dao/event.go +++ b/business/model/dao/event.go @@ -87,18 +87,28 @@ func GetOperateEvents(db *DaoDB, name string, apiFunctions []string, operateType if err = GetRows(db, &operateEventExt, sql, sqlParams...); err == nil { totalCount = GetLastTotalRowCount(db) } + var ( + accessUUidList []string + details []*model.OperateEventDetail + detailMap = make(map[string][]*model.OperateEventDetail) + ) for _, v := range operateEventExt { - var details []*model.OperateEventDetail - sql := ` + accessUUidList = append(accessUUidList, v.AccessUUID) + } + sql2 := ` SELECT * FROM operate_event_detail - WHERE access_uuid = ? + WHERE access_uuid IN (` + GenQuestionMarks(len(accessUUidList)) + `) ` - sqlParams := []interface{}{ - v.AccessUUID, + sqlParams2 := []interface{}{accessUUidList} + err = GetRows(db, &details, sql2, sqlParams2...) + for _, v := range details { + detailMap[v.AccessUUID] = append(detailMap[v.AccessUUID], v) + } + for _, v := range operateEventExt { + if detailMap[v.AccessUUID] != nil { + v.Detail = detailMap[v.AccessUUID] } - err = GetRows(db, &details, sql, sqlParams...) - v.Detail = details } return operateEventExt, totalCount, err }