public string Join(string userName, T session) { lock (sessions) { //remove session with same user name; var list = sessions.Where(s => s.Value.UserName == userName).ToArray(); if (list.Count() > 0) { foreach (var pair in list) { sessions.Remove(pair.Key); System.Diagnostics.Debug.WriteLine("SessionHolder: Remove " + pair.Key); } } //generate new token string token = RandomStr.GetRndStrOfAll(TokenLength); while (sessions.ContainsKey(token)) { token = RandomStr.GetRndStrOfAll(TokenLength); } //register session session.UserName = userName; session.Token = token; session.LastVisit = DateTime.Now; sessions.Add(token, session); System.Diagnostics.Debug.WriteLine("SessionHolder: Add " + token); return(token); } }
/// <summary> /// 获取考勤记录。 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnGetARResult_Click(object sender, EventArgs e) { V_Work_Schedule v_W_S = new V_Work_Schedule(); v_W_S.WORK_AND_REST_DATE = YearAndMonthStr; /* * if (!v_W_S.ifExistsWS()) { * return; * } */ ARResult aRResult = new ARResult(YearAndMonthStr); string randomStr = RandomStr.GetRandomString(40, true, true, true, false, ""); if (aRResult.updateARResult(randomStr) == 0) { this.dgv.DataSource = MESSAGES.getMSG(randomStr); DGVHelper.AutoSizeForDGV(dgv); ShowResult.show(lblResult, "异常!", false); timerRestoreTheLblResult.Enabled = true; return; } ShowResult.show(lblResult, "完成!", true); //显示结果 AttendanceR aR = new AttendanceR(); this.dgv.DataSource = aR.getARByYearAndMonth(aRResult.Year_And_Month_str); DGVHelper.AutoSizeForDGV(dgv); }
public void Play_Sound() { tok = gettoken(); text = HttpUtility.UrlEncode(text, Encoding.UTF8); text = HttpUtility.UrlEncode(text, Encoding.UTF8); string strUpdateData = string.Format(rest, text, cuid, tok, spd, pit); string texmd5 = EncryptWithMD5(text) + RandomStr.CreateRadNum(5, true); DownFile("http://tsn.baidu.com/text2audio?" + strUpdateData, "D:\\", texmd5 + ".wav"); this.fileName = "D:\\" + texmd5 + ".wav"; FileStream fs = new FileStream(this.fileName, FileMode.Open, FileAccess.Read); int nBytes = (int)fs.Length; //计算流的长度 byte[] byteArray = new byte[nBytes]; //初始化用于MemoryStream的Buffer int nBytesRead = fs.Read(byteArray, 0, nBytes); //将File里的内容一次性的全部读到byteArray中去 using (MemoryStream ms = new MemoryStream(byteArray)) //初始化MemoryStream,并将Buffer指向FileStream的读取结果数组 { SoundPlayer player = new SoundPlayer(); ms.Position = 0; player.Stream = null; player.Stream = ms; player.Load(); player.PlaySync(); } }
public async Task <ActionResult <string> > PostTransaction([FromBody] float amount) { var sessionId = Guid.NewGuid(); var url = appSettings.Server + $"sessions/{sessionId}/transaction?async=true"; var request = new ApiRequest <EFTTransactionRequest>() { Request = new EFTTransactionRequest() { TxnType = "P", TxnRef = RandomStr.RandomString(TRX_RND_STR_LENGTH), AmtPurchase = (int)(amount * DOLLAR_TO_CENT), Merchant = appSettings.Merchant, Application = appSettings.Application, PosName = appSettings.PosName, PosVersion = appSettings.PosVersion }, Notification = new Notification { Uri = appSettings.NotificationUri } }; if (string.IsNullOrEmpty(token)) { token = GetToken().Result?.Token; } var apiClient = clients.GetAPIClient(); apiClient.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); apiClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token); HttpContent content = new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json"); try { var activeTxn = new ActiveSession() { SessionId = sessionId.ToString(), Expire = DateTime.Now.AddMinutes(TRX_EXPIRATION_MINS).Ticks }; await sessionRepository.AddSession(activeTxn); var response = await apiClient.PostAsync(url, content); if (response.IsSuccessStatusCode) { return(Accepted(value: JsonConvert.SerializeObject(sessionId))); } } catch { } return(BadRequest()); }
/// <summary> /// 导出策略 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ExportToolStripMenuItem_Click(object sender, EventArgs e) { if (dgv.Rows.Count == 1) { return; } string dir = Environment.CurrentDirectory + "\\个人考勤记录"; DirectoryHelper.createDirecotry(dir); string xlsFilePath = dir + "\\" + RandomStr.getTimeStamp() + ".xls"; ExcelHelper.saveDtToExcel((System.Data.DataTable)dgv.DataSource, xlsFilePath); ShowResult.show(lblResult, "记录存于" + dir, true); timerRestoreTheLblResult.Enabled = true; }
/// <summary> /// 生成验证码 /// </summary> /// <param name="type"></param> /// <param name="length"></param> public static void Render(ValidateCodeType type, int length) { string code = string.Empty; switch (type) { case ValidateCodeType.Char: { code = CharCode.GetRandomChar(length); break; } case ValidateCodeType.Chinese: { code = ChineseCode.GetChinese(length); break; } case ValidateCodeType.Num: { code = RandomStr.GetRandomNum(length); break; } } System.Web.HttpContext.Current.Session[CodeName] = code; ImagesHelper images = new ImagesHelper(); images.Width = 100; images.Height = 31; images.Text = code; images.LineNoise = ImagesHelper.LineNoiseLevel.Extreme; images.BackgroundNoise = ImagesHelper.BackgroundNoiseLevel.Extreme; images.FontWarp = ImagesHelper.FontWarpFactor.Extreme; images.CreateImage(); }
public async Task <ActionResult <EFTTransactionResponse> > PostTransactionAsync([FromBody] float amount) { var sessionId = Guid.NewGuid(); var url = appSettings.Server + $"sessions/{sessionId}/transaction"; var request = new ApiRequest <EFTTransactionRequest>() { Request = new EFTTransactionRequest() { TxnType = "P", TxnRef = RandomStr.RandomString(TRX_RND_STR_LENGTH), AmtPurchase = Convert.ToInt32(amount * DOLLAR_TO_CENT), Merchant = appSettings.Merchant, Application = appSettings.Application }, Notification = new Notification { Uri = appSettings.NotificationUri } }; if (string.IsNullOrEmpty(token)) { token = (await GetTokenAsync())?.Token; } apiClient.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); apiClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token); HttpContent content = new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json"); try { var response = await apiClient.PostAsync(url, content); if (response != null && response.IsSuccessStatusCode) { var apiResponse = await response.Content.ReadAsAsync <ApiResponse <EFTTransactionResponse> >(); if (apiResponse != null && apiResponse.Response != null) { return(apiResponse.Response); } } } catch { using (var s = new TimedHostedService(sessionId, apiClient, token)) { using (var cts = new CancellationTokenSource(TRX_EXPIRATION_MINS)) { await s.StartAsync(cts.Token); EFTTransactionResponse txn = null; while (txn == null) { txn = s.GetTransaction(); await Task.Delay(WAIT_PERIOD_SEC); if (cts.IsCancellationRequested) { await s.StopAsync(cts.Token); } } await s.StopAsync(cts.Token); if (txn == null || !txn.Success) { return(BadRequest()); } return(txn); } } } return(BadRequest()); }
public async Task <ActionResult <EFTTransactionResponse> > PostTransactionAsync([FromBody] TransactionRequest transaction) { if (transaction == null || transaction.Amount <= 0 || string.IsNullOrEmpty(transaction.TxnType)) { return(BadRequest()); } var sessionId = Guid.NewGuid(); var url = appSettings.Server + $"sessions/{sessionId}/transaction"; var request = new ApiRequest <EFTTransactionRequest>(); var application = "00"; if (!string.IsNullOrEmpty(transaction.Merchant) && transaction.Merchant != "00") { application = "02"; } request.Request = new EFTTransactionRequest() { TxnType = string.IsNullOrEmpty(transaction.TxnType) ? "P" : transaction.TxnType, ReceiptAutoPrint = "0", TxnRef = RandomStr.RandomString(TRX_RND_STR_LENGTH), AmtPurchase = Convert.ToInt32(transaction.Amount * DOLLAR_TO_CENT), Merchant = string.IsNullOrEmpty(transaction.Merchant) ? appSettings.Merchant : transaction.Merchant, Application = application }; request.Notification = new Notification { Uri = appSettings.NotificationUri }; // if refund if (string.Equals(transaction.TxnType, "R")) { int.TryParse(transaction.Merchant, out int merchant); if (merchant > 0) // Means the refund is going through TPP extension { if (!string.IsNullOrEmpty(transaction.RefundReference)) { dynamic purchaseData = new Newtonsoft.Json.Linq.JObject(); purchaseData.REF = transaction.RefundReference; request.Request.PurchaseAnalysisData = purchaseData; } else { return(BadRequest()); } } } if (string.IsNullOrEmpty(token)) { token = (await GetTokenAsync())?.Token; } if (string.IsNullOrEmpty(token)) { return(Unauthorized()); } apiClient.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); apiClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token); HttpContent content = new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json"); try { var response = await apiClient.PostAsync(url, content); if (response.IsSuccessStatusCode) { var apiResponse = await response.Content.ReadAsAsync <ApiResponse <EFTTransactionResponse> >(); if (apiResponse?.Response != null) { return(apiResponse.Response); } } } catch { //Start timer for background service using (var s = new TimedHostedService(sessionId, apiClient, token)) { using (var cts = new CancellationTokenSource(TimeSpan.FromMinutes(3))) { await s.StartAsync(cts.Token); EFTTransactionResponse txn = null; while (txn == null) { txn = s.GetTransaction(); await Task.Delay(TimeSpan.FromSeconds(WAIT_PERIOD_SEC)); if (cts.IsCancellationRequested) { await s.StopAsync(cts.Token); } } await s.StopAsync(cts.Token); if (txn == null || !txn.Success) { return(BadRequest()); } return(txn); } } } return(BadRequest()); }
private void btnImportRestDay_Click(object sender, EventArgs e) { randomStr = RandomStr.GetRandomString(33, true, true, true, false, ""); xlsFilePath = FileNameDialog.getSelectedFilePathWithDefaultDir("请选择考勤记录:", "*.xls|*.xls", defaultDir); tbRestDayPath.Text = xlsFilePath; //*********************************************************** List <TheDaysOfOvertime> restDayList = new List <TheDaysOfOvertime>(); ApplicationClass app = new ApplicationClass(); app.Visible = false; Workbook wBook = null; //用于确定本月最后一天. //行最大值. int rowsMaxCount = 0; int colsMaxCount = 0; try { wBook = app.Workbooks.Open(xlsFilePath, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); } catch (Exception ex) { MessageBox.Show(ex.ToString()); if (wBook != null) { wBook.Close(true, xlsFilePath, Type.Missing); } //退出excel app.Quit(); //释放资源 if (wBook != null) { System.Runtime.InteropServices.Marshal.ReleaseComObject(wBook); } System.Runtime.InteropServices.Marshal.ReleaseComObject(app); //调用GC的垃圾回收方法 GC.Collect(); GC.WaitForPendingFinalizers(); return; } Worksheet ws = (Worksheet)(wBook.Worksheets.Item[1]); //行;列最大值 赋值. rowsMaxCount = ws.UsedRange.Rows.Count; colsMaxCount = ws.UsedRange.Columns.Count; //判断首行是否为 考勤记录表;以此判断此表是否为考勤记录表. //检查日期列的值是否符合规范。 string temp = string.Empty; string[] tempArray = { }; for (int rowIndex = 2; rowIndex <= rowsMaxCount; rowIndex++) { temp = ((Range)ws.Cells[rowIndex, 2]).Text.ToString().Trim(); DateTime dt; if (!DateTime.TryParse(temp, out dt)) { ShowResult.show(lblResult, temp + ": 非时间格式!", false); timerRestoreTheLblResult.Enabled = true; return; } //先判断是否含有"/"或者"-" if (!temp.Contains("/") && !temp.Contains("-")) { ShowResult.show(lblResult, "此内容非时间格式: yyyy/MM/dd 或 yyyy-MM-dd!", false); timerRestoreTheLblResult.Enabled = true; return; } tempArray = temp.Split(new char[] { '/', '-' }); string year = tempArray[0]; if (!CheckString.checkYear(year)) { ShowResult.show(lblResult, "前4位非年份!", false); timerRestoreTheLblResult.Enabled = true; return; } string month = tempArray[1]; if (!CheckString.checkMonth(month)) { ShowResult.show(lblResult, "第6,7位非月份!", false); timerRestoreTheLblResult.Enabled = true; return; } string day = tempArray[2]; if (!CheckString.checkDay(day)) { ShowResult.show(lblResult, "第9,10位非天数!", false); timerRestoreTheLblResult.Enabled = true; return; } } string dateStr = string.Empty; string name = string.Empty; //精诚所至,金石为开。 for (int rowIndex = 2; rowIndex <= rowsMaxCount; rowIndex++) { dateStr = ((Range)ws.Cells[rowIndex, 2]).Text.ToString().Trim(); name = ((Range)ws.Cells[rowIndex, 1]).Text.ToString().Trim(); TheDaysOfOvertime restDay = new TheDaysOfOvertime(name, dateStr); restDay.addRestDay(); } //释放对象 int hwndOfApp = app.Hwnd; Tools.CmdHelper.killProcessByHwnd(hwndOfApp); //**************************************************************** tempArray = dateStr.Split(new char[] { '/', '-' }); this.dgv.DataSource = TheDaysOfOvertime.getRestDays(tempArray[0] + "-" + tempArray[1]); DGVHelper.AutoSizeForDGV(dgv); }
/// <summary> /// Make transaction /// </summary> /// <param name="amount">Amount of transaction</param> public async Task OnPostDoTransactionAsync(string amount) { var sessionId = Guid.NewGuid(); var actualAmount = float.Parse(amount); var url = appSettings.Server + $"sessions/{sessionId}/transaction?async=true"; // Create a sample json 'basket' object which is sent as part of transaction request JObject basket = JObject.FromObject( new { id = (Guid.NewGuid()).ToString(), amt = 18700, tax = 1760, dis = 650, sur = 374, items = new dynamic[] { new { id = "t39kq002", sku = "k24086723", qty = 2, amt = 2145, tax = 200, dis = 50, name = "XData USB Drive" }, new { id = "t39kq003", sku = "s23475697", qty = 1, amt = 8910, tax = 810, name = "MSoft OSuite", srl = "ms7843k346j23" }, new { id = "t39kq004", sku = "m47060855", qty = 5, amt = 1100, tax = 110, dis = 110, name = "A4 Notepad" } } } ); var request = new ApiRequest <EFTTransactionRequest>() { Request = new EFTTransactionRequest() { TxnType = "P", TxnRef = RandomStr.RandomString(TRX_RND_STR_LENGTH), AmtPurchase = Convert.ToInt32(actualAmount * DOLLAR_TO_CENT), Merchant = appSettings.Merchant, Application = appSettings.Application, Basket = basket }, Notification = new Notification { Uri = appSettings.NotificationUri } }; if (string.IsNullOrEmpty(token)) { token = (await GetTokenAsync())?.Token; } var apiClient = clients.GetAPIClient(); apiClient.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); apiClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token); HttpContent content = new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json"); try { var activeTxn = new ActiveSession() { SessionId = sessionId.ToString(), Expire = DateTime.Now.AddMinutes(TRX_EXPIRATION_MINS).Ticks }; await sessionRepository.AddSessionAsync(activeTxn); var response = await apiClient.PostAsync(url, content); } catch { } }
/// <summary> /// 下载文件到指定文件夹 /// </summary> /// <param name="strSourceMainUrl">源资源的主地址</param> /// <param name="strSourceSiteUrl">相对于主地址的站点目录地址,如果主地址已经表达完整则为空</param> /// <param name="strLocalFolder">本地下载主目录</param> /// <param name="intFileNameType">文件命名方式,1保持原文件名,2原文件名之后附加文件名,3随机重命名</param> /// <param name="strPlusName">文件命名方式为2时,本参数附在源文件名之后</param> /// <param name="blnKeepDirTree">是否保持同源资源目录结构</param> /// <param name="strReturnFileName">返回文件命名</param> /// <returns>下载成功返回true,否则返回false</returns> public static Boolean DownFile(string strSourceMainUrl, string strSourceSiteUrl, string strLocalFolder, int intFileNameType, string strPlusName, Boolean blnKeepDirTree, out string strReturnFileName) { try { string strSource = strSourceMainUrl + strSourceSiteUrl; Uri u = new Uri(strSource); HttpWebRequest mRequest = (HttpWebRequest)WebRequest.Create(u); mRequest.Timeout = 300000; mRequest.Method = "GET"; mRequest.ContentType = "application/x-www-form-urlencoded"; mRequest.KeepAlive = false; HttpWebResponse wr = (HttpWebResponse)mRequest.GetResponse(); Stream sIn = wr.GetResponseStream(); //得到源文件名称 string sFileName = ""; string[] arrTemp = strSourceSiteUrl.Split(new string[1] { "/" }, StringSplitOptions.RemoveEmptyEntries); sFileName = arrTemp[arrTemp.Length - 1]; if (blnKeepDirTree) { //得到源文件相对主目录的文件夹 string sSubDir = ""; if (sFileName != strSourceSiteUrl) { sSubDir = strSourceSiteUrl.Substring(0, strSourceSiteUrl.Length - sFileName.Length - 1); } strLocalFolder = strLocalFolder + "\\" + sSubDir; } if (!Directory.Exists(strLocalFolder)) { Directory.CreateDirectory(strLocalFolder); } //附加重命名 if (intFileNameType == 2) { arrTemp = sFileName.Split(new string[1] { "." }, StringSplitOptions.RemoveEmptyEntries); sFileName = string.Join(strPlusName + ".", arrTemp); } //随机重命名 if (intFileNameType == 3) { //文件后缀 arrTemp = sFileName.Split(new string[1] { "." }, StringSplitOptions.RemoveEmptyEntries); string sFileType = "." + arrTemp[arrTemp.Length - 1]; //生成文件名 sFileName = RandomStr.GetRndStrOnlyFor(10, true, true) + sFileType; //Console.WriteLine(strLocalFolder + "\\" + sFileName); while (File.Exists(strLocalFolder + "\\" + sFileName)) { sFileName = RandomStr.GetRndStrOnlyFor(10, true, true) + sFileType; } } strLocalFolder = strLocalFolder + "\\" + sFileName; FileStream fs = new FileStream(strLocalFolder, FileMode.Create, FileAccess.Write); long length = wr.ContentLength; int i = 0; long j = 0; byte[] buffer = new byte[1024]; while ((i = sIn.Read(buffer, 0, buffer.Length)) > 0) { j += i; fs.Write(buffer, 0, i); } sIn.Close(); wr.Close(); fs.Close(); strReturnFileName = sFileName; return(true); } catch (Exception exDF) { //Console.WriteLine(exDF.Message); MyErrMsg = exDF.Message; strReturnFileName = ""; return(false); //throw exDF; } }