diff --git a/Infrastructure/AppSetting.cs b/Infrastructure/AppSetting.cs
index 698468e1..b695e52f 100644
--- a/Infrastructure/AppSetting.cs
+++ b/Infrastructure/AppSetting.cs
@@ -35,6 +35,11 @@
//identity授权的地址
public string IdentityServerUrl { get; set; }
+
+ ///
+ /// Redis服务器配置
+ ///
+ public string RedisConf { get; set; }
//是否是Identity授权方式
public bool IsIdentityAuth => !string.IsNullOrEmpty(IdentityServerUrl);
diff --git a/Infrastructure/Cache/RedisCacheContext.cs b/Infrastructure/Cache/RedisCacheContext.cs
new file mode 100644
index 00000000..d80ac073
--- /dev/null
+++ b/Infrastructure/Cache/RedisCacheContext.cs
@@ -0,0 +1,59 @@
+using System;
+using Enyim.Caching;
+using Enyim.Caching.Memcached;
+using Microsoft.Extensions.Options;
+using StackExchange.Redis;
+
+namespace Infrastructure.Cache
+{
+ ///
+ /// 缓存redis实现
+ ///
+ public sealed class RedisCacheContext : ICacheContext
+ {
+ private ConnectionMultiplexer _conn { get; set; }
+ private IDatabase iDatabase { get; set; }
+
+ private AppSetting _appSettings;
+ public RedisCacheContext(IOptions options)
+ {
+ _conn = ConnectionMultiplexer.Connect(options.Value.RedisConf);
+ iDatabase = _conn.GetDatabase();
+ }
+
+ public override T Get(string key)
+ {
+ RedisValue value = iDatabase.StringGet(key);
+ if (!value.HasValue)
+ {
+ return default(T);
+ }
+
+ if (typeof(T) == typeof(string))
+ {
+ return (T) Convert.ChangeType(value, typeof(T));
+ }
+ else
+ {
+ return JsonHelper.Instance.Deserialize(value);
+ }
+ }
+
+ public override bool Set(string key, T t, DateTime expire)
+ {
+ if (typeof(T) == typeof(string))
+ {
+ return iDatabase.StringSet(key, t.ToString(), expire-DateTime.Now);
+ }
+ else
+ {
+ return iDatabase.StringSet(key, JsonHelper.Instance.Serialize(t), expire - DateTime.Now);
+ }
+ }
+
+ public override bool Remove(string key)
+ {
+ return iDatabase.KeyDelete(key);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Infrastructure/Infrastructure.csproj b/Infrastructure/Infrastructure.csproj
index 1a26d828..050cdebb 100644
--- a/Infrastructure/Infrastructure.csproj
+++ b/Infrastructure/Infrastructure.csproj
@@ -19,6 +19,7 @@
+
diff --git a/OpenAuth.App/FlowInstanceApp.cs b/OpenAuth.App/FlowInstanceApp.cs
index c01a372c..e3b3870e 100644
--- a/OpenAuth.App/FlowInstanceApp.cs
+++ b/OpenAuth.App/FlowInstanceApp.cs
@@ -481,7 +481,7 @@ namespace OpenAuth.App
if (request.type == "wait") //待办事项
{
- Expression> waitExp = u => (u.MakerList == "1" || u.MakerList.Contains(user.User.Id)) && u.IsFinish == 0;
+ Expression> waitExp = u => (u.MakerList == "1" || u.MakerList.Contains(user.User.Id)) && (u.IsFinish == 0|| u.IsFinish==4);
// 加入搜索自定义标题
if (!string.IsNullOrEmpty(request.key))
diff --git a/OpenAuth.App/Test/TestBase.cs b/OpenAuth.App/Test/TestBase.cs
index 077f66de..bbba6f75 100644
--- a/OpenAuth.App/Test/TestBase.cs
+++ b/OpenAuth.App/Test/TestBase.cs
@@ -35,6 +35,7 @@ namespace OpenAuth.App.Test
.Build();
Console.WriteLine($"单元测试数据库信息:{config.GetSection("AppSetting")["DbType"]}/{config.GetSection("ConnectionStrings")["OpenAuthDBContext"]}");
+ serviceCollection.Configure(config.GetSection("AppSetting"));
//添加log4net
serviceCollection.AddLogging(builder =>
{
diff --git a/OpenAuth.App/Test/TestCache.cs b/OpenAuth.App/Test/TestCache.cs
new file mode 100644
index 00000000..3375c31e
--- /dev/null
+++ b/OpenAuth.App/Test/TestCache.cs
@@ -0,0 +1,77 @@
+using System;
+using System.Linq;
+using Infrastructure;
+using Infrastructure.Cache;
+using Microsoft.AspNetCore.Http;
+using NUnit.Framework;
+using Microsoft.Extensions.DependencyInjection;
+using Moq;
+using OpenAuth.App.Request;
+using OpenAuth.App.SSO;
+using OpenAuth.Repository.Domain;
+
+namespace OpenAuth.App.Test
+{
+ public class TestCache :TestBase
+ {
+ public override ServiceCollection GetService()
+ {
+ var services = new ServiceCollection();
+
+ var delservices = services.Where(u => u.ServiceType == typeof(ICacheContext)).ToList();
+ for (int i = 0; i < delservices.Count(); i++)
+ {
+ services.Remove(delservices[i]);
+ }
+ services.AddScoped(typeof(ICacheContext), typeof(RedisCacheContext));
+
+ return services;
+ }
+
+
+ ///
+ /// 测试字符串
+ ///
+ [Test]
+ public void SetString()
+ {
+ var app = _autofacServiceProvider.GetService();
+ app.Set("yubaolee", "ok", DateTime.Now.AddDays(1));
+
+ var result = app.Get("yubaolee");
+ Console.WriteLine($"redis结果:{result}");
+ }
+
+ ///
+ /// 测试对象
+ ///
+ [Test]
+ public void SetObj()
+ {
+ var app = _autofacServiceProvider.GetService();
+ app.Set("user:info", new User
+ {
+ Name = "测试",
+ Account ="Test",
+ BizCode = "0.1.1"
+ }, DateTime.Now.AddDays(1));
+
+ var result = app.Get("user:info");
+ Console.WriteLine($"redis结果:{JsonHelper.Instance.Serialize(result)}");
+ }
+
+ ///
+ /// 测试获取不存在的key
+ ///
+ [Test]
+ public void GetNoExistKey()
+ {
+ var app = _autofacServiceProvider.GetService();
+
+ var result = app.Get("noexistkey");
+ Console.WriteLine($"redis结果:{JsonHelper.Instance.Serialize(result)}");
+ }
+
+
+ }
+}
diff --git a/OpenAuth.WebApi/appsettings.Production.json b/OpenAuth.WebApi/appsettings.Production.json
index 9e1f30a5..656d8ba8 100644
--- a/OpenAuth.WebApi/appsettings.Production.json
+++ b/OpenAuth.WebApi/appsettings.Production.json
@@ -15,6 +15,7 @@
"IdentityServerUrl": "", //IdentityServer服务器地址。如果为空,则不启用OAuth认证
//"IdentityServerUrl": "http://demo.openauth.me:12796", //IdentityServer服务器地址。如果为空,则不启用OAuth认证
"DbType": "MySql", //数据库类型:SqlServer、MySql
- "UploadPath": "" //附件上传的路径,如果为空则保存在站点根目录
+ "UploadPath": "", //附件上传的路径,如果为空则保存在站点根目录
+ "RedisConf": "your_redis_server:6379,password=your_redis_password" //redis配置信息
}
}
diff --git a/OpenAuth.WebApi/appsettings.json b/OpenAuth.WebApi/appsettings.json
index 6d5aac86..a082b3bf 100644
--- a/OpenAuth.WebApi/appsettings.json
+++ b/OpenAuth.WebApi/appsettings.json
@@ -14,6 +14,7 @@
"IdentityServerUrl": "", //IdentityServer服务器地址。如果为空,则不启用OAuth认证
// "IdentityServerUrl": "http://localhost:12796", //IdentityServer服务器地址。如果为空,则不启用OAuth认证
"DbType": "SqlServer", //数据库类型:SqlServer、MySql
- "UploadPath": "" //附件上传的路径,如果为空则保存在站点根目录
+ "UploadPath": "", //附件上传的路径,如果为空则保存在站点根目录
+ "RedisConf": "redistest.cq-p.com.cn:8001,password=share_redis@123"
}
}