yl
2024-01-18 8024ec8c0300dcffa0caf4e2a030e068a9051bc2
1.ServiceStack.Redis 依赖包变更为StackExchange.Redis
已添加1个文件
已修改21个文件
447 ■■■■■ 文件已修改
VueWebCoreApi/Controllers/AppAnalyticsController.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Controllers/AppPersonalController.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Controllers/BasicSettingController.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Controllers/DeviceManagerController.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Controllers/ErpSyncMesController.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Controllers/GeneralBasicDataController.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Controllers/GridReportController.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Controllers/KanBanManagerentController.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Controllers/LoginController.cs 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Controllers/MouldManagerController.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Controllers/ProductModelController.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Controllers/QualityManagementController.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Controllers/ReportManagerController.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Controllers/SystemSettingController.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Controllers/WorkOrderController.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/BLL/WorkOrderBLL.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/DAL/LoginDAL.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/DAL/WorkOrderDAL.cs 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Tools/ChannelActionFilterAttribute.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Tools/ChannelActionFilterAttributeApp.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Tools/RedisCommon.cs 309 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/VueWebCoreApi.csproj 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Controllers/AppAnalyticsController.cs
@@ -16,7 +16,7 @@
    {
        //定义全局信息返回变量
        ToMessage mes = new ToMessage();
        RedisHelper redis = new RedisHelper();
        RedisCommon redis = new RedisCommon();
        #region[App生产看板]
        /// <summary>
VueWebCoreApi/Controllers/AppPersonalController.cs
@@ -16,7 +16,7 @@
    {
        //定义全局信息返回变量
        ToMessage mes = new ToMessage();
        RedisHelper redis = new RedisHelper();
        RedisCommon redis = new RedisCommon();
        #region[App个人计件工资]
        /// <summary>
VueWebCoreApi/Controllers/BasicSettingController.cs
@@ -23,7 +23,7 @@
    {
        //定义全局信息返回变量
        ToMessage mes = new ToMessage();
        RedisHelper redis = new RedisHelper();
        RedisCommon redis = new RedisCommon();
        #region[组织架构,查询组织信息]
        /// <summary>
VueWebCoreApi/Controllers/DeviceManagerController.cs
@@ -18,7 +18,7 @@
    {
        //定义全局信息返回变量
        ToMessage mes = new ToMessage();
        RedisHelper redis = new RedisHelper();
        RedisCommon redis = new RedisCommon();
        #region[设备类型查询]
        /// <summary>
VueWebCoreApi/Controllers/ErpSyncMesController.cs
@@ -17,7 +17,7 @@
    {
        //定义全局信息返回变量
        ToMessage mes = new ToMessage();
        RedisHelper redis = new RedisHelper();
        RedisCommon redis = new RedisCommon();
        #region[物料管理:计量单位同步]
        /// <summary>
VueWebCoreApi/Controllers/GeneralBasicDataController.cs
@@ -15,7 +15,7 @@
    {
        //定义全局信息返回变量
        ToMessage mes = new ToMessage();
        RedisHelper redis = new RedisHelper();
        RedisCommon redis = new RedisCommon();
        #region[组织架构基础资料]
        /// <summary>
VueWebCoreApi/Controllers/GridReportController.cs
@@ -18,7 +18,7 @@
    {
        //定义全局信息返回变量
        ToMessage mes = new ToMessage();
        RedisHelper redis = new RedisHelper();
        RedisCommon redis = new RedisCommon();
        #region[MES工单打印1]
        /// <summary>
VueWebCoreApi/Controllers/KanBanManagerentController.cs
@@ -15,7 +15,7 @@
    {
        //定义全局信息返回变量
        ToMessage mes = new ToMessage();
        RedisHelper redis = new RedisHelper();
        RedisCommon redis = new RedisCommon();
        #region[车间看板,上生产信息]
        /// <summary>
VueWebCoreApi/Controllers/LoginController.cs
@@ -19,7 +19,7 @@
    {
        //定义全局信息返回变量
        ToMessage mes = new ToMessage();
        RedisHelper redis = new RedisHelper();
        RedisCommon redis = new RedisCommon();
        //获取企业配置Enterprise
        private static readonly string Enterprise = AppSetting.GetAppSetting("Enterprise");
@@ -73,10 +73,10 @@
                    User loginUser = JsonConvert.DeserializeObject<User>(JsonConvert.SerializeObject(ms));
                    //如果redis登录用户中不存在当前用户
                    if (redis.Get<User>(ms.rediskey, 0) == null)
                    if (redis.GetStringKey<User>(ms.rediskey) == null)
                    {
                        //写入redis(注意:redis类里面的失效时间必须在key创建完成之后才生效)
                        redis.Set<User>(ms.rediskey, ms, redis.secondsTimeOut, 0);
                        redis.SetStringKey<User>(ms.rediskey, ms, TimeSpan.FromSeconds(redis.secondsTimeOut));
                        //写入登录操作记录 
                        LogHelper.DbOperateLog(ms.usercode, "登录", "登录了系统", ms.usertype);
                        mes.code = "200";
@@ -86,7 +86,7 @@
                    else //如果存在
                    {
                        //获取redis中当前用户信息
                        User r_loginUser = redis.Get<User>(ms.rediskey, 0);
                        User r_loginUser = redis.GetStringKey<User>(ms.rediskey);
                        //如果session中的用户usercode和redis中的用户usercode匹配
                        if ((r_loginUser.rediskey).Equals(loginUser.rediskey))
                        {
@@ -97,7 +97,7 @@
                        else
                        {
                            //重置过期时间(注意:redis类里面的失效时间必须在key创建完成之后才生效)
                            redis.Set<User>(loginUser.rediskey, loginUser, redis.secondsTimeOut, 0);
                            redis.SetStringKey<User>(loginUser.rediskey, loginUser, TimeSpan.FromSeconds(redis.secondsTimeOut));
                            //写入登录操作记录
                            LogHelper.DbOperateLog(ms.usercode, "登录", "登录了系统", ms.usertype);
                            mes.data = ms;
@@ -150,13 +150,13 @@
                        }
                    });
                    bool aa = DapperHelper.DoTransaction(list);
                    redis.Remove(us.rediskey, 0);//删除redis
                    redis.Set<User>(us.rediskey, us, redis.secondsTimeOut, 0);//写入redis
                    redis.KeyDelete(us.rediskey);//删除redis
                    redis.SetStringKey<User>(us.rediskey, us, TimeSpan.FromSeconds(redis.secondsTimeOut));//写入redis
                }
                else
                {
                    redis.Remove(us.rediskey, 0);//删除redis
                    redis.Set<User>(us.rediskey, us, redis.secondsTimeOut, 0);//写入redis
                    redis.KeyDelete(us.rediskey);//删除redis
                    redis.SetStringKey<User>(us.rediskey, us, TimeSpan.FromSeconds(redis.secondsTimeOut));//写入redis
                }
                //写入日志
                LogHelper.DbOperateLog(us.usercode, "强制下线", "被强制下线了", us.usertype);
@@ -288,10 +288,10 @@
                    User loginUser = JsonConvert.DeserializeObject<User>(JsonConvert.SerializeObject(ms));
                    //如果redis登录用户中不存在当前用户
                    if (redis.Get<User>(ms.rediskey, 0) == null)
                    if (redis.GetStringKey<User>(ms.rediskey) == null)
                    {
                        //写入redis(注意:redis类里面的失效时间必须在key创建完成之后才生效)
                        redis.Set<User>(ms.rediskey, ms, redis.secondsTimeOut, 0);
                        redis.SetStringKey<User>(ms.rediskey, ms, TimeSpan.FromSeconds(redis.secondsTimeOut));
                        //写入登录操作记录 
                        LogHelper.DbOperateLog(ms.usercode, "登录", "登录了系统", ms.usertype);
                        mes.code = "200";
@@ -301,17 +301,17 @@
                    else //如果存在
                    {
                        //获取redis中当前用户信息
                        User r_loginUser = redis.Get<User>(ms.rediskey, 0);
                        User r_loginUser = redis.GetStringKey<User>(ms.rediskey);
                        //如果session中的用户usercode和redis中的用户usercode匹配
                        if ((r_loginUser.rediskey).Equals(loginUser.rediskey))
                        {
                            redis.Remove(loginUser.rediskey, 0);//删除redis
                            redis.Set<User>(loginUser.rediskey, ms, redis.secondsTimeOut, 0);//写入redis
                            redis.KeyDelete(loginUser.rediskey);//删除redis
                            redis.SetStringKey<User>(loginUser.rediskey, ms, TimeSpan.FromSeconds(redis.secondsTimeOut));//写入redis
                        }
                        else
                        {
                            //重置过期时间(注意:redis类里面的失效时间必须在key创建完成之后才生效)
                            redis.Set<User>(loginUser.rediskey, loginUser, redis.secondsTimeOut, 0);
                            redis.SetStringKey<User>(loginUser.rediskey, loginUser, TimeSpan.FromSeconds(redis.secondsTimeOut));
                            //写入登录操作记录
                            LogHelper.DbOperateLog(ms.usercode, "登录", "登录了系统", ms.usertype);
                            mes.data = ms;
VueWebCoreApi/Controllers/MouldManagerController.cs
@@ -20,7 +20,7 @@
    {
        //定义全局信息返回变量
        ToMessage mes = new ToMessage();
        RedisHelper redis = new RedisHelper();
        RedisCommon redis = new RedisCommon();
        #region[模具清单列表查询]
        /// <summary>
VueWebCoreApi/Controllers/ProductModelController.cs
@@ -19,7 +19,7 @@
    {
        //定义全局信息返回变量
        ToMessage mes = new ToMessage();
        RedisHelper redis = new RedisHelper();
        RedisCommon redis = new RedisCommon();
        #region[计量单位组信息]
        /// <summary>
VueWebCoreApi/Controllers/QualityManagementController.cs
@@ -18,7 +18,7 @@
    {
        //定义全局信息返回变量
        ToMessage mes = new ToMessage();
        RedisHelper redis = new RedisHelper();
        RedisCommon redis = new RedisCommon();
        #region[质量管理,缺陷定义查询列表]
        /// <summary>
VueWebCoreApi/Controllers/ReportManagerController.cs
@@ -17,7 +17,7 @@
    {
        //定义全局信息返回变量
        ToMessage mes = new ToMessage();
        RedisHelper redis = new RedisHelper();
        RedisCommon redis = new RedisCommon();
        #region[生产进度报表]
        /// <summary>
VueWebCoreApi/Controllers/SystemSettingController.cs
@@ -18,7 +18,7 @@
    {
        //定义全局信息返回变量
        ToMessage mes = new ToMessage();
        RedisHelper redis = new RedisHelper();
        RedisCommon redis = new RedisCommon();
        #region[编码规则获取可设置的功能菜单信息]
        /// <summary>
VueWebCoreApi/Controllers/WorkOrderController.cs
@@ -24,7 +24,7 @@
    {
        //定义全局信息返回变量
        ToMessage mes = new ToMessage();
        RedisHelper redis = new RedisHelper();
        RedisCommon redis = new RedisCommon();
        #region[ERP订单查询]
        /// <summary>
@@ -282,6 +282,24 @@
        }
        #endregion
        #region[MES工单查找历史引用最新工序信息]
        /// <summary>
        /// MES工单查找历史引用最新工序信息
        /// </summary>
        /// <param name="wkshopcode">车间编码</param>
        /// <param name="partcode">产品编码</param>
        /// <returns></returns>
        [Route(template: "MesOrderNewStepContent")]
        [HttpPost]
        public JsonResult MesOrderNewStepContent(string wkshopcode, string partcode)
        {
            var token = HttpContext.Request.Headers["Token"].ToString();
            User us = JwtTools.Denocode(token.ToString());
            mes = WorkOrderBLL.MesOrderNewStepContent(wkshopcode, partcode, us);
            return Json(mes);
        }
        #endregion
        #region[MES工单派发提交]
        /// <summary>
VueWebCoreApi/DLL/BLL/WorkOrderBLL.cs
@@ -95,6 +95,13 @@
        }
        #endregion
        #region[MES工单查找历史引用最新工序信息]
        public static ToMessage MesOrderNewStepContent(string wkshopcode, string partcode, User us)
        {
            return WorkOrderDAL.MesOrderNewStepContent(wkshopcode, partcode, us);
        }
        #endregion
        #region[MES工单派发提交]
        public static ToMessage MesOrderDistribution(string[] wocodelist, User us)
VueWebCoreApi/DLL/DAL/LoginDAL.cs
@@ -384,11 +384,11 @@
        #region[登出]
        public static ToMessage LoginOut(User us)
        {
            RedisHelper redis = new RedisHelper();
            RedisCommon redis = new RedisCommon();
            try
            {
                //删除redis
                redis.Remove(Enterprise + "LoginUserID" + us.usertype + us.usercode, 0);
                redis.KeyDelete(Enterprise + "LoginUserID" + us.usertype + us.usercode);
                //写入日志
                LogHelper.DbOperateLog(us.usercode, "退出", "退出了系统", us.usertype);
                mes.code = "200";
VueWebCoreApi/DLL/DAL/WorkOrderDAL.cs
@@ -27,7 +27,7 @@
        #region[ERP订单查询]
        public static ToMessage ErpOrderSearch(string erporderstus,string wkshopcode, string erpordercode, string saleordercode, string partcode, string partname, string partspec, int startNum, string paydatestartdate, string paydateenddate, string paydatestartdate1, string paydateenddate2, string creatuser, int endNum, string prop, string order)
        public static ToMessage ErpOrderSearch(string erporderstus, string wkshopcode, string erpordercode, string saleordercode, string partcode, string partname, string partspec, int startNum, string paydatestartdate, string paydateenddate, string paydatestartdate1, string paydateenddate2, string creatuser, int endNum, string prop, string order)
        {
            var dynamicParams = new DynamicParameters();
            string search = "";
@@ -510,7 +510,7 @@
        #region[MES工单查询]
        public static ToMessage MesOrderSearch(string mesorderstus,string wkshopcode, string mesordercode, string sourceorder, string saleordercode, string ordertype, string partcode, string partname, string partspec, int startNum, string creatuser, string createdate, int endNum, string prop, string order)
        public static ToMessage MesOrderSearch(string mesorderstus, string wkshopcode, string mesordercode, string sourceorder, string saleordercode, string ordertype, string partcode, string partname, string partspec, int startNum, string creatuser, string createdate, int endNum, string prop, string order)
        {
            var dynamicParams = new DynamicParameters();
            string search = "";
@@ -1034,6 +1034,40 @@
        }
        #endregion
        #region[MES工单查找历史引用最新工序信息]
        public static ToMessage MesOrderNewStepContent(string wkshopcode, string partcode, User us)
        {
            var sql = "";
            List<object> list = new List<object>();
            var dynamicParams = new DynamicParameters();
            try
            {
                //MES工单查找历史引用最新工序信息
                sql = @"select S.wo_code,S.seq,S.step_code,S.stepprice,isbott,isend   from (
                        select top 1 wo_code   from TK_Wrk_Man
                        where wkshp_code=@wkshopcode and materiel_code=@partcode
                        order by lm_date desc
                        ) as A
                        inner join TK_Wrk_Step S on A.wo_code=S.wo_code";
                dynamicParams.Add("@wkshopcode", wkshopcode);
                dynamicParams.Add("@partcode", partcode);
                var data = DapperHelper.selectdata(sql, dynamicParams);
                mes.code = "200";
                mes.count = data.Rows.Count;
                mes.data = data;
                mes.message = "查询成功!";
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[MES工单派发提交]
        public static ToMessage MesOrderDistribution(string[] wocodelist, User us)
@@ -1096,7 +1130,7 @@
        #region[工单关闭列表查询]
        public static ToMessage MesOrderClosedSearch(string mesorderstus,string wkshopcode, string mesordercode, string sourceorder, string saleordercode, string ordertype, string partcode, string partname, string partspec, int startNum, string creatuser, string createdate, int endNum, string prop, string order)
        public static ToMessage MesOrderClosedSearch(string mesorderstus, string wkshopcode, string mesordercode, string sourceorder, string saleordercode, string ordertype, string partcode, string partname, string partspec, int startNum, string creatuser, string createdate, int endNum, string prop, string order)
        {
            var dynamicParams = new DynamicParameters();
            string search = "";
VueWebCoreApi/Tools/ChannelActionFilterAttribute.cs
@@ -15,7 +15,7 @@
    public class ChannelActionFilterAttribute: ActionFilterAttribute
    {
        ToMessage mes = new ToMessage();
        RedisHelper redis = new RedisHelper();
        RedisCommon redis = new RedisCommon();
        /// <summary>
        /// åœ¨Action执行前执行
@@ -30,10 +30,10 @@
                User us = JwtTools.Denocode(token.ToString());
                base.OnActionExecuting(context);
                //如果存在          
                if (redis.Get<User>(us.rediskey, 0) !=null)
                if (redis.GetStringKey<User>(us.rediskey) !=null)
                {
                    //获取redis中当前用户信息
                    User r_loginUser = redis.Get<User>(us.rediskey, 0);
                    User r_loginUser = redis.GetStringKey<User>(us.rediskey);
                    if (token != r_loginUser.token)
                    {
                        mes.code = "303";
@@ -44,7 +44,7 @@
                    else 
                    {
                        //重置过期时间
                        redis.KeyExpire(us.rediskey, redis.secondsTimeOut);
                        redis.SetExpire(us.rediskey, redis.secondsTimeOut);
                    }
                }
                else //如果redis登录用户中不存在当前用户
VueWebCoreApi/Tools/ChannelActionFilterAttributeApp.cs
@@ -11,7 +11,7 @@
    public class ChannelActionFilterAttributeApp : ActionFilterAttribute
    {
        ToMessage mes = new ToMessage();
        RedisHelper redis = new RedisHelper();
        RedisCommon redis = new RedisCommon();
        /// <summary>
        /// åœ¨Action执行前执行
VueWebCoreApi/Tools/RedisCommon.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,309 @@
using Newtonsoft.Json;
using StackExchange.Redis;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace VueWebCoreApi.Tools
{
    public class RedisCommon
    {
        //public static ILogger Log = UtilLogger<RedisCommon>.Log;//日志记录
        //redis数据库连接字符串
        private static readonly string RedisIpConnString = AppSetting.GetAppSetting("RedisConnIp");
        private static readonly string RedisPortConnString = AppSetting.GetAppSetting("RedisConnPort");
        private static readonly string RedisKeyTimeCont = AppSetting.GetAppSetting("RedisKeyTimeCont");
        private string _conn = RedisIpConnString+":"+RedisPortConnString;
        private int _db = 0;
        //默认缓存过期时间单位秒
        public int secondsTimeOut = Convert.ToInt32(RedisKeyTimeCont);
        //静态变量 ä¿è¯å„模块使用的是不同实例的相同链接
        private static ConnectionMultiplexer connection;
        public RedisCommon() { }
        /// <summary>
        /// æž„造函数
        /// </summary>
        /// <param name="db"></param>
        /// <param name="connectStr"></param>
        public RedisCommon(int db, string connectStr)
        {
            _conn = connectStr;
            _db = db;
        }
        /// <summary>
        /// ç¼“存数据库,数据库连接
        /// </summary>
        public ConnectionMultiplexer CacheConnection
        {
            get
            {
                try
                {
                    if (connection == null || !connection.IsConnected)
                    {
                        connection = new Lazy<ConnectionMultiplexer>(() => ConnectionMultiplexer.Connect(_conn)).Value;
                    }
                }
                catch (Exception ex)
                {
                    //Log.LogError("RedisHelper->CacheConnection å‡ºé”™\r\n" + ex.ToString());
                    return null;
                }
                return connection;
            }
        }
        /// <summary>
        /// ç¼“存数据库
        /// </summary>
        public IDatabase CacheRedis => CacheConnection.GetDatabase(_db);
        #region --KEY/VALUE存取--
        /// <summary>
        /// å•条存值
        /// </summary>
        /// <param name="key">key</param>
        /// <param name="value">The value.</param>
        /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
        public bool StringSet(string key, string value)
        {
            return CacheRedis.StringSet(key, value);
        }
        /// <summary>
        /// ä¿å­˜å•个key value
        /// </summary>
        /// <param name="key">Redis Key</param>
        /// <param name="value">保存的值</param>
        /// <param name="expiry">过期时间</param>
        /// <returns></returns>
        public bool StringSet(string key, string value, TimeSpan? expiry = default(TimeSpan?))
        {
            return CacheRedis.StringSet(key, value, expiry);
        }
        /// <summary>
        /// ä¿å­˜å¤šä¸ªkey value
        /// </summary>
        /// <param name="arr">key</param>
        /// <returns></returns>
        public bool StringSet(KeyValuePair<RedisKey, RedisValue>[] arr)
        {
            return CacheRedis.StringSet(arr);
        }
        /// <summary>
        /// æ‰¹é‡å­˜å€¼
        /// </summary>
        /// <param name="keysStr">key</param>
        /// <param name="valuesStr">The value.</param>
        /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
        public bool StringSetMany(string[] keysStr, string[] valuesStr)
        {
            var count = keysStr.Length;
            var keyValuePair = new KeyValuePair<RedisKey, RedisValue>[count];
            for (int i = 0; i < count; i++)
            {
                keyValuePair[i] = new KeyValuePair<RedisKey, RedisValue>(keysStr[i], valuesStr[i]);
            }
            return CacheRedis.StringSet(keyValuePair);
        }
        /// <summary>
        /// ä¿å­˜ä¸€ä¸ªå¯¹è±¡
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="key"></param>
        /// <param name="obj"></param>
        /// <returns></returns>
        public bool SetStringKey<T>(string key, T obj, TimeSpan? expiry = default(TimeSpan?))
        {
            string json = JsonConvert.SerializeObject(obj);
            return CacheRedis.StringSet(key, json, expiry);
        }
        /// <summary>
        /// è¿½åР值
        /// </summary>
        /// <param name="key"></param>
        /// <param name="value"></param>
        public void StringAppend(string key, string value)
        {
            ////追加值,返回追加后长度
            long appendlong = CacheRedis.StringAppend(key, value);
        }
        /// <summary>
        /// èŽ·å–å•ä¸ªkey的值
        /// </summary>
        /// <param name="key">Redis Key</param>
        /// <returns></returns>
        public RedisValue GetStringKey(string key)
        {
            return CacheRedis.StringGet(key);
        }
        /// <summary>
        /// æ ¹æ®Key获取值
        /// </summary>
        /// <param name="key">键值</param>
        /// <returns>System.String.</returns>
        public string StringGet(string key)
        {
            try
            {
                return CacheRedis.StringGet(key);
            }
            catch (Exception ex)
            {
                //Log.LogError("RedisHelper->StringGet å‡ºé”™\r\n" + ex.ToString());
                return null;
            }
        }
        /// <summary>
        /// èŽ·å–å¤šä¸ªKey
        /// </summary>
        /// <param name="listKey">Redis Key集合</param>
        /// <returns></returns>
        public RedisValue[] GetStringKey(List<RedisKey> listKey)
        {
            return CacheRedis.StringGet(listKey.ToArray());
        }
        /// <summary>
        /// æ‰¹é‡èŽ·å–å€¼
        /// </summary>
        public string[] StringGetMany(string[] keyStrs)
        {
            var count = keyStrs.Length;
            var keys = new RedisKey[count];
            var addrs = new string[count];
            for (var i = 0; i < count; i++)
            {
                keys[i] = keyStrs[i];
            }
            try
            {
                var values = CacheRedis.StringGet(keys);
                for (var i = 0; i < values.Length; i++)
                {
                    addrs[i] = values[i];
                }
                return addrs;
            }
            catch (Exception ex)
            {
                //Log.LogError("RedisHelper->StringGetMany å‡ºé”™\r\n" + ex.ToString());
                return null;
            }
        }
        /// <summary>
        /// èŽ·å–ä¸€ä¸ªkey的对象
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="key"></param>
        /// <returns></returns>
        public T GetStringKey<T>(string key)
        {
            try
            {
                return JsonConvert.DeserializeObject<T>(CacheRedis.StringGet(key));
            }
            catch (Exception ex)
            {
                //return new T();
                return default(T);
            }
        }
        #endregion
        #region --删除设置过期--
        /// <summary>
        /// åˆ é™¤å•个key
        /// </summary>
        /// <param name="key">redis key</param>
        /// <returns>是否删除成功</returns>
        public bool KeyDelete(string key)
        {
            return CacheRedis.KeyDelete(key);
        }
        /// <summary>
        /// åˆ é™¤å¤šä¸ªkey
        /// </summary>
        /// <param name="keys">rediskey</param>
        /// <returns>成功删除的个数</returns>
        public long KeyDelete(RedisKey[] keys)
        {
            return CacheRedis.KeyDelete(keys);
        }
        /// <summary>
        /// åˆ¤æ–­key是否存储
        /// </summary>
        /// <param name="key">redis key</param>
        /// <returns></returns>
        public bool KeyExists(string key)
        {
            return CacheRedis.KeyExists(key);
        }
        /// <summary>
        /// é‡æ–°å‘½åkey
        /// </summary>
        /// <param name="key">就的redis key</param>
        /// <param name="newKey">新的redis key</param>
        /// <returns></returns>
        public bool KeyRename(string key, string newKey)
        {
            return CacheRedis.KeyRename(key, newKey);
        }
        /// <summary>
        /// åˆ é™¤hasekey
        /// </summary>
        /// <param name="key"></param>
        /// <param name="hashField"></param>
        /// <returns></returns>
        public bool HaseDelete(RedisKey key, RedisValue hashField)
        {
            return CacheRedis.HashDelete(key, hashField);
        }
        /// <summary>
        /// ç§»é™¤hash中的某值
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="key"></param>
        /// <param name="dataKey"></param>
        /// <returns></returns>
        public bool HashRemove(string key, string dataKey)
        {
            return CacheRedis.HashDelete(key, dataKey);
        }
        /// <summary>
        /// è®¾ç½®ç¼“存过期
        /// </summary>
        /// <param name="key"></param>
        /// <param name="datetime"></param>
        public void SetExpire(string key, int datetime)
        {
            CacheRedis.KeyExpire(key, DateTime.Now.AddSeconds(datetime));
        }
        #endregion
    }
}
VueWebCoreApi/VueWebCoreApi.csproj
@@ -42,6 +42,7 @@
        <PackageReference Include="NPOI" Version="2.5.6" />
        <PackageReference Include="Quartz" Version="3.3.3" />
        <PackageReference Include="ServiceStack.Redis" Version="5.0.0" />
        <PackageReference Include="StackExchange.Redis" Version="2.7.10" />
        <PackageReference Include="Swashbuckle.AspNetCore" Version="5.0.0" />
        <PackageReference Include="System.Data.OleDb" Version="4.6.0" />
        <PackageReference Include="System.Data.SqlClient" Version="4.5.0" />