lixiaojun
2024-03-26 3e14440cb203d28923ba9cfec39ceff15f2c35e7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
namespace Yw.LCache.Medis
{
    /// <summary>
    /// 
    /// </summary>
    public class RunRealLastRecordCacheHelper : IRunRealLastRecordCacheHelper
    {
 
        //Redis客户端辅助类对象
        private readonly MedisCacheHelper _medisHelper = new();
 
        //生成 HashKey
        private static string CreateHashKey()
        {
            return CacheKeyHelper.CreateKey(_flag);
        }
        private const string _flag = "run-real-last-record";
 
        //生成 HashField
        private static string CreateHashField(string ObjectType, long ObjectID)
        {
            return $"{ObjectType}{_split}{ObjectID}";
        }
 
        //生成 HashField
        private static string CreateHashField(string ObjectType)
        {
            return $"{ObjectType}{_split}";
        }
 
        //生成 HashField
        private static string CreateHashField(long ObjectID)
        {
            return $"{_split}{ObjectID}";
        }
        private const string _split = "-";
 
 
 
        /// <summary>
        /// 设置最后一条记录
        /// </summary>
        public bool SetLastRecord(Model.RunRealRecord record)
        {
            if (record == null)
            {
                return false;
            }
            var hashKey = CreateHashKey();
            var hashField = CreateHashField(record.ObjectType, record.ObjectID);
            _medisHelper.HashSet(hashKey, hashField, record);
            return true;
        }
 
        /// <summary>
        /// 设置最后一条记录
        /// </summary>
        public bool SetLastRecord(List<Model.RunRealRecord> list)
        {
            if (list == null || !list.Any())
            {
                return false;
            }
            foreach (var item in list)
            {
                var bol = SetLastRecord(item);
                if (!bol)
                {
                    return false;
                }
            }
            return true;
        }
 
        /// <summary>
        /// 获取最后一条记录
        /// </summary>
        public List<Model.RunRealRecord> GetLastRecord()
        {
            var hashKey = CreateHashKey();
            return _medisHelper.HashValues<Model.RunRealRecord>(hashKey);
        }
 
        /// <summary>
        /// 获取最后一条记录
        /// </summary>
        public List<Model.RunRealRecord> GetLastRecord(string ObjectType)
        {
            var hashKey = CreateHashKey();
            var hashField = CreateHashField(ObjectType);
            return _medisHelper.HashGetStartsWith<Model.RunRealRecord>(hashKey, hashField);
        }
 
        /// <summary>
        /// 获取最后一条记录
        /// </summary>
        public List<Model.RunRealRecord> GetLastRecord(long ObjectID)
        {
            var hashKey = CreateHashKey();
            var hashField = CreateHashField(ObjectID);
            return _medisHelper.HashGetEndsWith<Model.RunRealRecord>(hashKey, hashField);
        }
 
        /// <summary>
        /// 获取最后一条记录
        /// </summary>
        public Model.RunRealRecord GetLastRecord(string ObjectType, long ObjectID)
        {
            var hashKey = CreateHashKey();
            var hashField = CreateHashField(ObjectType, ObjectID);
            return _medisHelper.HashGet<Model.RunRealRecord>(hashKey, hashField);
        }
 
        /// <summary>
        /// 获取最后一条记录
        /// </summary>
        public List<Model.RunRealRecord> GetLastRecord(string ObjectType, IEnumerable<long> ObjectIds)
        {
            if (ObjectIds == null || !ObjectIds.Any())
            {
                return default;
            }
            return ObjectIds.Select(x => GetLastRecord(ObjectType, x)).Where(x => x != null).ToList();
        }
 
        /// <summary>
        /// 获取最后一条记录
        /// </summary>
        public List<Model.RunRealRecord> GetLastRecord(List<(string, long)> list)
        {
            if (list == null || !list.Any())
                return default;
            return list.Select(x => GetLastRecord(x.Item1, x.Item2)).Where(x => x != null).ToList();
        }
 
 
 
 
    }
}