コード例 #1
0
        public static string ReadAccessToken(string appid = null, string secret = null)
        {
            var token = RedisReadHelper.StringGet("WECHA_ACCESS_TOKEN_BUS");

            if (string.IsNullOrEmpty(token))
            {
                token = Helper.WeiChat.Utility.GetAccessToken(appid, secret);
                RedisWriteHelper.SetString("WECHA_ACCESS_TOKEN_BUS", token, new TimeSpan(2, 0, 0));
            }
            return(token);
        }
コード例 #2
0
        public ResultObj <JsApiModel> GetJsApi(DtoKey inObj)
        {
            var reObj = new ResultObj <JsApiModel>();

            var token = Utility.ReadAccessToken(appConfig.WeiXin.Appid, appConfig.WeiXin.Secret);

            var jsapiTicket = RedisReadHelper.StringGet("WECHA_JSAPI_TICKET");;

            if (string.IsNullOrEmpty(jsapiTicket))
            {
                jsapiTicket = Helper.WeiChat.Utility.GetJsapiTicket(token);
                RedisWriteHelper.SetString("WECHA_JSAPI_TICKET", jsapiTicket, new TimeSpan(2, 0, 0));
            }
            reObj.data           = new JsApiModel();
            reObj.data.noncestr  = Guid.NewGuid().ToString("n").Substring(10);
            reObj.data.timestamp = TypeChange.DateToInt64().ToString().Substring(0, 10);
            reObj.data.url       = inObj.Key;
            reObj.data.appid     = appConfig.WeiXin.Appid;

            reObj.data.signature = CheckSignature.GetSignature(new List <string> {
                "noncestr=" + reObj.data.noncestr, "timestamp=" + reObj.data.timestamp, "url=" + reObj.data.url, "jsapi_ticket=" + jsapiTicket
            }, "&");
            return(reObj);
        }
コード例 #3
0
        /// <summary>
        /// 将数据库数据插入到redis
        /// </summary>
        /// <param name="databaseTableList">所有基础表</param>
        private void ImportDataToRedis(List <DbTable> databaseTableList)
        {
            Task task = Task.Factory.StartNew(() =>
            {
                //try
                //{
                int dataTableCount = databaseTableList.Count;

                Assembly assembly           = Assembly.Load(@"XYHis.Model");
                Type[] classTableTypes      = assembly.GetTypes();           //所有的model类
                Assembly mapContextAssembly = Assembly.Load(@"XYHis.MapContext");
                Type[] mapContextTypes      = mapContextAssembly.GetTypes(); //所有的映射类
                XYHis.Framework.Services.DBServiceBase db = new XYHis.Framework.Services.DBServiceBase();
                RedisWriteExHelper redisExHelper          = new RedisWriteExHelper();
                int tableIndex  = 0;
                int recordCount = 0;
                DbConfiguration dbConfiguration = db.GetCurrentDBContext().DbConfiguration;//当前数据库上下文
                string tablename  = string.Empty;
                string tablename2 = string.Empty;
                foreach (DbTable dt in databaseTableList)
                {
                    //获取表记录大小
                    string sql  = string.Format("select count(*) from {0}", dt.Name);
                    recordCount = int.Parse(SqlHelper.ExecuteScalar(CommandType.Text, sql).ToString());//数据库记录数量
                    if (recordCount > 40000)
                    {
                        dataTableCount -= 1;
                        //MessageBox.Show("数据大于40000,暂不更新");
                        continue;
                    }
                    if (recordCount == 0)
                    {
                        dataTableCount -= 1;
                        //MessageBox.Show("数据大于40000,暂不更新");
                        continue;
                    }
                    tableIndex += 1;

                    var ss = DbRelationService.Instance.SetParentRelations(dt, databaseTableList);
                    string[] relationColumns = new string[dt.ParentRelations.Count];//表的所有外键
                    int k = 0;
                    foreach (DbRelation relation in dt.ParentRelations)
                    {
                        relationColumns[k] = relation.FK_Relation_Column;
                        k++;
                    }

                    List <Type> classTypeList = classTableTypes.Where(t => t.Name.ToUpper() == dt.Name).ToList();                    //model类
                    List <Type> mapTypeList   = mapContextTypes.Where(t => t.Name.ToUpper().Contains(dt.Name + "MAPPING")).ToList(); //映射类

                    if (classTypeList.Count > 0 && mapTypeList.Count > 0)
                    {                                                     //model类和映射类都有的情况才进行导入
                        Type currentClssType = classTypeList[0];
                        RedisWriteHelper.KeyDelete(currentClssType.Name); //导入前先删除已有的数据
                        try
                        {
                            dbConfiguration.GetClass(currentClssType);
                        }
                        catch
                        {
                            dataTableCount -= 1;
                            continue;
                        }
                        Type dbServiceBaseType = db.GetType();
                        MethodInfo mi          = dbServiceBaseType.GetMethod("GetAllListUseInDataImport", new Type[] { }).MakeGenericMethod(currentClssType);
                        object obj             = mi.Invoke(db, null);
                        Type redisExHelperType = redisExHelper.GetType();
                        mi = redisExHelperType.GetMethod("ImportDataToSet").MakeGenericMethod(currentClssType);
                        mi.Invoke(redisExHelper, new object[] { currentClssType.Name, obj, relationColumns, recordCount });
                        tablename2 = currentClssType.Name;
                        if (tableIndex <= 1)
                        {
                            tablename = currentClssType.Name;
                        }
                    }
                    else
                    {
                        dataTableCount -= 1;
                    }
                    if (tableIndex <= 1)
                    {
                        ThreadPool.QueueUserWorkItem(delegate
                        {
                            SynchronizationContext.SetSynchronizationContext(new
                                                                             DispatcherSynchronizationContext(System.Windows.Application.Current.Dispatcher));
                            SynchronizationContext.Current.Post(pl =>
                            {
                                //总数
                                Msg.Text += "【更新总数】 :" + dataTableCount.ToString() + " 张表信息" + "\n";
                                //this.allcountText.Text = dataTableCount.ToString() + " ";
                                //更新数
                                Msg.Text += "【已更新数】 :" + tableIndex.ToString() + " 张表信息" + "\n";
                                //this.currcount.Text = tableIndex.ToString() + " ";
                                //成功数
                                Msg.Text += "【状态信息】 :" + tablename2.ToString() + " " + "共 " + recordCount + " 行记录更新" + "\n";
                                //this.succcount.Text = tablename2.ToString() + " " + "" + recordCount;
                                //更新百分比
                                this.Lith.Value = Convert.ToDouble(tableIndex) / Convert.ToDouble(dataTableCount) * 100;
                                //this.Lith.Value = Convert.ToDouble(tableIndex) / Convert.ToDouble(dataTableCount) * 100;
                                //更新百分比数字
                                Msg.Text += "【状态信息】 :" + "已更新 " + Math.Round(this.Lith.Value).ToString() + " %" + "\n";
                                //this.LithText.Text = Math.Round(this.Lith.Value).ToString() + " %";
                                //消息
                                Msg.Text += "【状态信息】 :" + string.Format("成功更新 [{0}] 表", tablename) + "\n";
                                //this.msg.Text = string.Format("成功更新 [{0}] 表", tablename);
                            }, null);
                        });
                    }
                    else if (tableIndex == dataTableCount)
                    {
                    }
                    if (tableIndex != 1)
                    {
                        ThreadPool.QueueUserWorkItem(delegate
                        {
                            SynchronizationContext.SetSynchronizationContext(new
                                                                             DispatcherSynchronizationContext(System.Windows.Application.Current.Dispatcher));
                            SynchronizationContext.Current.Post(pl =>
                            {
                                //总数
                                Msg.Text += "【更新总数】 :" + dataTableCount.ToString() + " 张表信息" + "\n";
                                //this.allcountText.Text = dataTableCount.ToString() + " ";
                                //更新数
                                Msg.Text += "【已更新数】 :" + tableIndex.ToString() + " 张表信息" + "\n";
                                //this.currcount.Text = tableIndex.ToString() + " ";
                                //成功数
                                Msg.Text += "【状态信息】 :" + tablename2.ToString() + " " + "共 " + recordCount + " 行记录更新" + "\n";
                                //this.succcount.Text = tablename2.ToString() + " " + "" + recordCount;
                                //更新百分比
                                this.Lith.Value = Convert.ToDouble(tableIndex) / Convert.ToDouble(dataTableCount) * 100;
                                //this.Lith.Value = Convert.ToDouble(tableIndex) / Convert.ToDouble(dataTableCount) * 100;
                                //更新百分比数字
                                Msg.Text += "【状态信息】 :" + "已更新 " + Math.Round(this.Lith.Value).ToString() + " %" + "\n";
                                //this.LithText.Text = Math.Round(this.Lith.Value).ToString() + " %";
                                //消息
                                Msg.Text += "【状态信息】 :" + string.Format("成功更新 [{0}] 表", tablename) + "\n";
                                //this.msg.Text = string.Format("成功更新 [{0}] 表", tablename);
                            }, null);
                        });
                    }
                }
            });
        }