package srv_acc import ( "context" "hkdj-web-server/pub/common/srvdef" "hkdj-web-server/pub/models/mwacc" "hkdj-web-server/pub/models/oplog" "go.mongodb.org/mongo-driver/bson" ) func GetOpLogs(ctx context.Context, logSearch *OpLogSearch) ( int64, OpLogInfoList, *srvdef.SrvErr) { //log.Info("GetOpLogs Test 1") filter, findOption := constructFilterAndOpts(logSearch) total, serr := oplog.CountOpLogs(ctx, filter) if serr != nil { return 0, nil, serr } list := make(OpLogInfoList, 0) if total == 0 { return 0, list, nil } //log.Info("GetOpLogs Test 2", log.Any("filter", filter), log.Any("findOption", findOption)) opLogs, serr := oplog.FindManyOpLogs(ctx, filter, findOption) if serr != nil { return 0, nil, serr } //log.Info("GetOpLogs Test 3") actIds := make([]int64, 0) for _, v := range opLogs { actIds = append(actIds, v.ActId) } accFilter := bson.M{mwacc.FN.MwAcc.Id: bson.M{"$in": actIds}} accs, serr := mwacc.FindManyAccByFilter(ctx, accFilter) if serr != nil { return 0, nil, serr } //log.Info("GetOpLogs Test 4") for _, opLog := range opLogs { olInfo := &OpLogInfo{ Path: opLog.Path, ActId: opLog.ActId, Action: opLog.Action, Param: opLog.RawData, CreatedAt: opLog.CreatedAt, } for _, acc := range accs { if acc.Id == olInfo.ActId { olInfo.ActName = acc.UserName break } } list = append(list, olInfo) } //log.Info("GetOpLogs Test 5") return total, list, nil }