private FsItemMtbl GetFsItemMtbl(FileSystemInfo fsInfo) { var fsItemMtbl = new FsItemMtbl { Uuid = Guid.NewGuid(), Name = fsInfo.Name, Path = fsInfo.FullName, IsDirectory = fsInfo is DirectoryInfo, CreationTime = fsInfo.CreationTime, CreationTimeStr = TimeStampHelper.TmStmp(fsInfo.CreationTime, true, TimeStamp.Seconds), LastAccessTime = fsInfo.LastAccessTime, LastAccessTimeStr = TimeStampHelper.TmStmp(fsInfo.LastAccessTime, true, TimeStamp.Seconds), LastWriteTime = fsInfo.LastWriteTime, LastWriteTimeStr = TimeStampHelper.TmStmp(fsInfo.LastWriteTime, true, TimeStamp.Seconds) }; if (!fsItemMtbl.IsDirectory) { fsItemMtbl.FileNameWithoutExtension = Path.GetFileNameWithoutExtension(fsItemMtbl.Name); fsItemMtbl.FileNameExtension = Path.GetExtension(fsItemMtbl.Name); fsItemMtbl.Label = fsItemMtbl.FileNameExtension; } return(fsItemMtbl); }
public string AddJobSchedule <T>(T job, DateTime triggerDatetime) { var id = BackgroundJob.Schedule( () => JobScheduleHandler.Trigger(job), triggerDatetime); using (var scope = Applibs.AutofacConfig.Container.BeginLifetimeScope()) { var jobName = job.GetType().Name; var repo = scope.Resolve <IJobScheduleRepository>(); var jobSchedule = new JobSchedule() { JobScheduleId = id, JobScheduleName = jobName, JobScheduleContent = JsonConvert.SerializeObject(job), CreateDateTimeStamp = TimeStampHelper.ToUtcTimeStamp(DateTime.Now) }; repo.Add(jobSchedule); Console.WriteLine($"{DateTime.Now}-JobScheduleService AddJobSchedule:{JsonConvert.SerializeObject(jobSchedule)}"); } return(id); }
public string AddRecurJobSchedule <T>(T job, string cronExpression) { var id = Guid.NewGuid().ToString(); RecurringJob.AddOrUpdate( id, () => JobScheduleHandler.Trigger(job), cronExpression); using (var scope = Applibs.AutofacConfig.Container.BeginLifetimeScope()) { var jobName = job.GetType().Name; var repo = scope.Resolve <IJobScheduleRepository>(); var jobSchedule = new JobSchedule() { JobScheduleId = id, JobScheduleName = jobName, JobScheduleContent = JsonConvert.SerializeObject(job), CreateDateTimeStamp = TimeStampHelper.ToUtcTimeStamp(DateTime.Now) }; repo.Add(jobSchedule); Console.WriteLine($"{DateTime.Now}-JobScheduleService AddJobSchedule:{JsonConvert.SerializeObject(jobSchedule)}"); } return(id); }
private static int SecondsUntilPatternConcluded(IWaveProvider reader, int targetFrequency1, int targetFrequency2) { var sampleProvider = reader.ToSampleProvider(); var toneDetector = new TonePatternDetector(targetFrequency1, targetFrequency2, sampleProvider.WaveFormat.SampleRate); var buffer = new float[BufferSize]; long sampleCount = 0; while (true) { var bytesRead = sampleProvider.Read(buffer, 0, buffer.Length); sampleCount += bytesRead; if (bytesRead < buffer.Length) { break; } if (toneDetector.Detected(buffer)) { return(TimeStampHelper.GetElapsedSeconds(sampleProvider.WaveFormat.SampleRate, sampleCount)); } } return(-1); }
public override void OnAuthorization(HttpActionContext actionContext) { if (SkipAuthorization(actionContext)) { return; } AuthenticationHeaderValue authRequest = actionContext.Request.Headers.Authorization; if (authRequest == null || authRequest.Scheme != "Bearer") { var body = ExceptionHelper.FormatExceptionMessage(new System.Exception("jwt auth error")); HttpResponseMessage responseMessage = actionContext.Request.CreateResponse(HttpStatusCode.OK, body); actionContext.Response = responseMessage; return; } string token = authRequest.Parameter; if (string.IsNullOrWhiteSpace(token)) { var body = ExceptionHelper.FormatExceptionMessage(new System.Exception("miss jwt token")); HttpResponseMessage responseMessage = actionContext.Request.CreateResponse(HttpStatusCode.OK, body); actionContext.Response = responseMessage; return; } try { JwtPayload payload = JsonConvert.DeserializeObject <JwtPayload>(JwtHelper.VerifyToken(token).ToString()); if (payload.Exp <= TimeStampHelper.ToTimeStamp(DateTime.Now)) { var body = ExceptionHelper.FormatExceptionMessage(new System.Exception("jwt token expired")); HttpResponseMessage responseMessage = actionContext.Request.CreateResponse(HttpStatusCode.OK, body); actionContext.Response = responseMessage; return; } else if (payload.Iss != JwtHelper.JwtIss || payload.Aud != JwtHelper.JwtAud) { var body = ExceptionHelper.FormatExceptionMessage(new System.Exception("jwt token illegal")); HttpResponseMessage responseMessage = actionContext.Request.CreateResponse(HttpStatusCode.OK, body); actionContext.Response = responseMessage; return; } else { } } catch (System.Exception) { var body = ExceptionHelper.FormatExceptionMessage(new System.Exception("jwt token illegal")); HttpResponseMessage responseMessage = actionContext.Request.CreateResponse(HttpStatusCode.OK, body); actionContext.Response = responseMessage; return; } base.OnAuthorization(actionContext); }
public void AddTest() { var addResult = this.repo.Add(new JobSchedule() { JobScheduleId = Guid.NewGuid().ToString(), JobScheduleName = "Test", JobScheduleContent = "TestContent", CreateDateTimeStamp = TimeStampHelper.ToUtcTimeStamp(DateTime.Now) }); Assert.IsTrue(addResult); }
public void LogEvent(ElevatorModel elevator, string subject) { if (elevator == null) { throw new ArgumentNullException(); } elevator.Events.Add(new ElevatorEvent { Subject = subject, TimeStamp = TimeStampHelper.GetCurrentTimeStamp() }); }
/// <summary> /// 从 Xml 转换 RequestMessage 对象的处理(只是创建实例,不填充数据) /// </summary> /// <param name="responseMsgType"></param> /// <param name="doc"></param> /// <returns></returns> public override IResponseMessageBase GetResponseEntityMappingResult(ResponseMsgType responseMsgType, XDocument doc) { var res = doc.ToString(); IResponseMessageBase resBase = new ResponseMessageBase { ToUserName = XmlHelper.GetXmlNode(res, "ToUserName").Trim(), FromUserName = XmlHelper.GetXmlNode(res, "FromUserName").Trim(), MsgType = responseMsgType, CreateTime = TimeStampHelper.GetDateTime(int.Parse(XmlHelper.GetXmlNode(res, "CreateTime").Trim())) }; return(resBase); }
/// <summary> /// 获取请求 Authorization 头部的授权字符串 /// </summary> /// <returns></returns> public string GetAuthorizationString() { var(startTime, endTme, timeStr) = TimeStampHelper.Get(); if (EndTime > startTime) { return(AuthorizationString); } EndTime = endTme; AuthorizationString = CreateAuthorizationString(SecretId, SecretKey, timeStr); return(AuthorizationString); }
/// <summary> /// 从 Xml 转换 RequestMessage 对象的处理(只是创建实例,不填充数据) /// </summary> /// <param name="requestMsgType"></param> /// <param name="doc"></param> /// <returns></returns> public override IRequestMessageBase GetRequestEntityMappingResult(RequestMsgType requestMsgType, XDocument doc) { var res = doc.ToString(); IRequestMessageBase reqBase = new RequestMessageBase { ToUserName = XmlHelper.GetXmlNode(res, "ToUserName").Trim(), FromUserName = XmlHelper.GetXmlNode(res, "FromUserName").Trim(), Encrypt = XmlHelper.GetXmlNode(res, "Encrypt").Trim(), MsgId = Int64.Parse(XmlHelper.GetXmlNode(res, "MsgId")), MsgType = requestMsgType, CreateTime = TimeStampHelper.GetDateTime(int.Parse(XmlHelper.GetXmlNode(res, "CreateTime").Trim())) }; //ApiLoghelper.Info("reqBase", JsonHelper.ObjectToJSON(reqBase)); return(reqBase); }
private async Task <TrmrkActionResult <DriveItemOp> > CreateMultipleEntriesAsync( string parentFolderId, List <Tuple <Func <string[], int, string, string>, string, Action <string> > > fileNameFactoriesList) { var actionResult = await ExecuteCoreAsync(async() => { var factoriesList = fileNameFactoriesList.Select( tuple => new Tuple <Func <string[], int, string, string>, string, Func <string, int, Task <DriveItemOp> > >( tuple.Item1, tuple.Item2, async(name, idx) => { string path = Path.Combine(parentFolderId, name); tuple.Item3(path); DateTime now = DateTime.Now; string nowStr = TimeStampHelper.TmStmp(now, true, TimeStamp.Seconds); return(new DriveItemOp { Id = path, Name = name, FileNameExtension = Path.GetExtension(name), CreationTimeStr = nowStr, LastAccessTimeStr = nowStr, LastWriteTimeStr = nowStr }); })).ToList(); var parentDirInfo = new DirectoryInfo(parentFolderId); var existingEntriesArr = parentDirInfo.EnumerateFileSystemInfos() .Select(ent => ent.Name).ToArray(); var result = await base.CreateMultipleEntriesAsync( existingEntriesArr, factoriesList); return(new TrmrkActionResult <DriveItemOp>(true, result)); }, exc => DriveItemDefaultExceptionHandler(exc).WithHelper( result => new TrmrkActionResult <DriveItemOp>( false, null, result.ErrorViewModel, result.HttpStatusCode))); return(actionResult); }
private Bill SaveBillToDrive() { var billObj = new Bill(); try { string googleDrivePath = ConfigManager.GetConfigValue("GoogleDrivePath"); string billSavePath = ConfigManager.GetConfigValue("BillSavePath"); _billSavePath = googleDrivePath + billSavePath + TimeStampHelper.GetDateStamp(); _fileName = "/" + TimeStampHelper.GetDateTimeStamp() + ".pdf"; if (!Directory.Exists(_billSavePath)) { Directory.CreateDirectory(_billSavePath); } FileStream flStrm = new FileStream(_billSavePath + _fileName, FileMode.Create); //Header iTextSharp.text.Image jpg = iTextSharp.text.Image.GetInstance(Directory.GetCurrentDirectory().Replace(@"bin\Debug", "") + @"\image\logo.jpg"); jpg.ScaleToFit(50f, 37f); jpg.SpacingBefore = 0f; jpg.SpacingAfter = 0f; jpg.Alignment = Element.ALIGN_CENTER; var para = new Paragraph(); para.MultipliedLeading = 1; para.SpacingBefore = 0; para.SpacingAfter = 0; if (_isShowLogoInBill) { para.Add(jpg); } para.Add(new Chunk(lblFpsDealer.Text + " || " + lblFPSCodeNo.Text + " || " + lblAddrLn1.Text + " || " + lblAddrLn2.Text + " || " + lblAddrLn3.Text + Environment.NewLine , CalculateFont(_billNotificationTxtSize))); //BillCounter PdfPTable billCounterTable = new PdfPTable(2) { WidthPercentage = 100 }; billCounterTable.SpacingBefore = 0f; billCounterTable.SpacingAfter = 0f; //billcounter _billObj.BillNumber = _totalBillCounter.ToString(); _billObj.BillSerialNumber = _dayBillCounterOrCount.ToString(); PdfPCell billCounterTableCell1 = new PdfPCell(new Phrase(lblBillNoText.Text + " " + lblCashMemoCounter.Text , CalculateFont(_billHeaderTxtSize))); //billCounterTableCell1.Colspan = 1; billCounterTableCell1.HorizontalAlignment = Element.ALIGN_LEFT; billCounterTableCell1.BorderWidth = 0f; //Serialnumber or DailyCounter PdfPCell billCounterTableCell2 = new PdfPCell(new Phrase(lblSerialText.Text + " " + lblSerialNumber.Text , CalculateFont(_billHeaderTxtSize))); //billCounterTableCell2.Colspan = 1; billCounterTableCell2.HorizontalAlignment = Element.ALIGN_RIGHT; billCounterTableCell2.BorderWidth = 0f; billCounterTable.Rows.Add(new PdfPRow(new PdfPCell[] { billCounterTableCell1, billCounterTableCell2 })); //Date PdfPCell billCounterTableCell3 = new PdfPCell(new Phrase(lblDt.Text , CalculateFont(_billHeaderTxtSize))); //billCounterTableCell3.Colspan = 1; billCounterTableCell3.HorizontalAlignment = Element.ALIGN_LEFT; billCounterTableCell3.BorderWidth = 0f; //Fortnight _billObj.Fortnight = TimeStampHelper.GetFortNight(lblDt.Text); PdfPCell billCounterTableCell4 = new PdfPCell(new Phrase("( " + TimeStampHelper.GetFortNightString(lblDt.Text) + " ) " , CalculateFont(_billHeaderTxtSize))); //billCounterTableCell3.Colspan = 1; billCounterTableCell4.HorizontalAlignment = Element.ALIGN_RIGHT; billCounterTableCell4.BorderWidth = 0f; billCounterTable.Rows.Add(new PdfPRow(new PdfPCell[] { billCounterTableCell3, billCounterTableCell4 })); billCounterTable.CompleteRow(); para.Add(billCounterTable); //Members _billObj.TotalCardServed = _memberCount; para.Add(new Chunk(Environment.NewLine + "Number of Unit : " + _memberCount , CalculateFont(_billPartHeadingTxtSize))); int totalCards = grdVwMembers.Rows.Count; int totalFamilyMember = grdVwMembers.Rows.Count; PdfPTable memberTable = new PdfPTable(1) { WidthPercentage = 100 }; memberTable.SpacingBefore = 0f; memberTable.SpacingAfter = 0f; //memberTable.TotalWidth = 226f; //memberTable.LockedWidth = true; string numbers = ""; foreach (DataGridViewRow item in grdVwMembers.Rows) { RationCardDetail lnItem = (RationCardDetail)item.DataBoundItem; numbers += ", " + lnItem.Number; } _billObj.RationcardNumbers = numbers.TrimStart(',', ' '); PdfPCell memberCell2 = new PdfPCell(new Phrase(numbers.TrimStart(',', ' ') + Environment.NewLine + Environment.NewLine , CalculateFont(_billTxtSize))); memberCell2.Colspan = 1; memberCell2.HorizontalAlignment = Element.ALIGN_LEFT; memberCell2.BorderWidth = 0f; memberTable.AddCell(memberCell2); para.Add(memberTable); //Items //para.Add(new Chunk(lblItemsText.Text // , new iTextSharp.text.Font(BaseFont.CreateFont(@"C:\Windows\Fonts\ARLRDBD.TTF", BaseFont.IDENTITY_H, // BaseFont.EMBEDDED), _billPartHeadingTxtSize))); PdfPTable itemTable = new PdfPTable(21) { WidthPercentage = 100 }; itemTable.SpacingBefore = 0f; itemTable.SpacingAfter = 0f; itemTable.TotalWidth = 226f; itemTable.LockedWidth = true; //HeaderCell PdfPCell headerCell0 = new PdfPCell(new Phrase("SlNo." , CalculateFont(_billTxtSize))); headerCell0.Colspan = 2; headerCell0.HorizontalAlignment = Element.ALIGN_LEFT; headerCell0.BorderWidth = 0f; itemTable.AddCell(headerCell0); PdfPCell headerCell1 = new PdfPCell(new Phrase("Commodity" , CalculateFont(_billTxtSize))); headerCell1.Colspan = 7; headerCell1.HorizontalAlignment = Element.ALIGN_LEFT; headerCell1.BorderWidth = 0f; itemTable.AddCell(headerCell1); PdfPCell headerCell2 = new PdfPCell(new Phrase("Quantity" , CalculateFont(_billTxtSize))); headerCell2.Colspan = 4; headerCell2.HorizontalAlignment = Element.ALIGN_LEFT; headerCell2.BorderWidth = 0f; itemTable.AddCell(headerCell2); PdfPCell headerCell3 = new PdfPCell(new Phrase("Rate" , CalculateFont(_billTxtSize))); headerCell3.Colspan = 4; headerCell3.HorizontalAlignment = Element.ALIGN_LEFT; headerCell3.BorderWidth = 0f; itemTable.AddCell(headerCell3); PdfPCell headerCell4 = new PdfPCell(new Phrase("Price" , CalculateFont(_billTxtSize))); headerCell4.Colspan = 4; headerCell4.HorizontalAlignment = Element.ALIGN_LEFT; headerCell4.BorderWidth = 0f; itemTable.AddCell(headerCell4); //PdfPCell headerCell5 = new PdfPCell(new Phrase("Discount" // , CalculateFont(_billTxtSize))); //headerCell5.Colspan = 2; //headerCell5.HorizontalAlignment = Element.ALIGN_LEFT; //headerCell5.BorderWidth = 0f; //itemTable.AddCell(headerCell5); int itemCount = 0; foreach (DataGridViewRow item in grdVwItems.Rows) { Product lnItem = (Product)item.DataBoundItem; //_billObj.BillDetails.Add(new BillDetails { ProductsSold = lnItem }); PdfPCell itemCell0 = new PdfPCell(new Phrase((itemCount + 1).ToString() , CalculateFont(_billTxtSize))); itemCell0.Colspan = 2; itemCell0.HorizontalAlignment = Element.ALIGN_LEFT; itemCell0.BorderWidth = 0f; itemTable.AddCell(itemCell0); PdfPCell itemCell1 = new PdfPCell(new Phrase(lnItem.Name , CalculateFont(_billTxtSize))); itemCell1.Colspan = 7; itemCell1.HorizontalAlignment = Element.ALIGN_LEFT; itemCell1.BorderWidth = 0f; itemTable.AddCell(itemCell1); PdfPCell itemCell2 = new PdfPCell(new Phrase(lnItem.ConsumptionQuantityToDisplay , CalculateFont(_billTxtSize))); itemCell2.Colspan = 4; itemCell2.HorizontalAlignment = Element.ALIGN_LEFT; itemCell2.BorderWidth = 0f; itemTable.AddCell(itemCell2); PdfPCell itemCell3 = new PdfPCell(new Phrase(lnItem.SellingRateInCurrentUomDisplay , CalculateFont(_billTxtSize))); itemCell3.Colspan = 4; itemCell3.HorizontalAlignment = Element.ALIGN_LEFT; itemCell3.BorderWidth = 0f; itemTable.AddCell(itemCell3); PdfPCell itemCell4 = new PdfPCell(new Phrase(lnItem.PriceToDisplay , CalculateFont(_billTxtSize))); itemCell4.Colspan = 4; itemCell4.HorizontalAlignment = Element.ALIGN_LEFT; itemCell4.BorderWidth = 0f; itemTable.AddCell(itemCell4); //PdfPCell itemCell5 = new PdfPCell(new Phrase(lnItem.DiscountToDisplay // , CalculateFont(_billTxtSize))); //itemCell5.Colspan = 2; //itemCell5.HorizontalAlignment = Element.ALIGN_LEFT; //itemCell5.BorderWidth = 0f; //itemTable.AddCell(itemCell5); itemCount++; } para.Add(itemTable); //Devider para.Add(new Chunk(" --------------------------------------------------------------------------------------------- " , CalculateFont(_billTxtSize))); float convertedNum = 0; //Total Price PdfPTable priceTable = new PdfPTable(2) { WidthPercentage = 80 }; priceTable.SpacingBefore = 0f; priceTable.SpacingAfter = 0f; //Total _billObj.TotalPrice = float.TryParse(lblCustomerToPayRs.Text, out convertedNum) ? convertedNum : 0; PdfPCell priceCell1 = new PdfPCell(new Phrase(lblTotal.Text , CalculateFont(_billPartHeadingTxtSize))); priceCell1.Colspan = 1; priceCell1.HorizontalAlignment = Element.ALIGN_LEFT; priceCell1.BorderWidth = 0f; PdfPCell priceCell2 = new PdfPCell(new Phrase(lblCustomerToPayRs.Text , CalculateFont(_billPartHeadingTxtSize))); priceCell2.Colspan = 1; priceCell2.HorizontalAlignment = Element.ALIGN_RIGHT; priceCell2.BorderWidth = 0f; priceTable.Rows.Add(new PdfPRow(new PdfPCell[] { priceCell1, priceCell2 })); //Total Roundedoff _billObj.TotalRoundedOff = float.TryParse(lblTotalRsRounded.Text, out convertedNum) ? convertedNum : 0; PdfPCell priceCell3 = new PdfPCell(new Phrase(lblTotalRoundedOff.Text , CalculateFont(_billPartHeadingTxtSize))); priceCell3.Colspan = 1; priceCell3.HorizontalAlignment = Element.ALIGN_LEFT; priceCell3.BorderWidth = 0f; PdfPCell priceCell4 = new PdfPCell(new Phrase(lblTotalRsRounded.Text , CalculateFont(_billPartHeadingTxtSize))); priceCell4.Colspan = 1; priceCell4.HorizontalAlignment = Element.ALIGN_RIGHT; priceCell4.BorderWidth = 0f; priceTable.Rows.Add(new PdfPRow(new PdfPCell[] { priceCell3, priceCell4 })); //Discount _billObj.TotalDiscount = float.TryParse(lblDiscount.Text, out convertedNum) ? convertedNum : 0; //PdfPCell priceCell5 = new PdfPCell(new Phrase(lblDiscountText.Text // , CalculateFont(_billPartHeadingTxtSize))); //priceCell5.Colspan = 1; //priceCell5.HorizontalAlignment = Element.ALIGN_LEFT; //priceCell5.BorderWidth = 0f; //PdfPCell priceCell6 = new PdfPCell(new Phrase(lblDiscount.Text // , CalculateFont(_billPartHeadingTxtSize))); //priceCell6.Colspan = 1; //priceCell6.HorizontalAlignment = Element.ALIGN_RIGHT; //priceCell6.BorderWidth = 0f; //priceTable.Rows.Add(new PdfPRow(new PdfPCell[] { priceCell5, priceCell6 })); //CustomerPaid _billObj.CustomerPaid = float.TryParse(txtCustPaid.Text, out convertedNum) ? convertedNum : 0; PdfPCell priceCell7 = new PdfPCell(new Phrase(lblCustomerPaid.Text , CalculateFont(_billPartHeadingTxtSize))); priceCell7.Colspan = 1; priceCell7.HorizontalAlignment = Element.ALIGN_LEFT; priceCell7.BorderWidth = 0f; PdfPCell priceCell8 = new PdfPCell(new Phrase(txtCustPaid.Text , CalculateFont(_billPartHeadingTxtSize))); priceCell8.Colspan = 1; priceCell8.HorizontalAlignment = Element.ALIGN_RIGHT; priceCell8.BorderWidth = 0f; priceTable.Rows.Add(new PdfPRow(new PdfPCell[] { priceCell7, priceCell8 })); //Balance _billObj.BalanceReturn = float.TryParse(lblBalRs.Text, out convertedNum) ? convertedNum : 0; PdfPCell priceCell9 = new PdfPCell(new Phrase(lblBalance.Text , CalculateFont(_billPartHeadingTxtSize))); priceCell9.Colspan = 1; priceCell9.HorizontalAlignment = Element.ALIGN_LEFT; priceCell9.BorderWidth = 0f; PdfPCell priceCell10 = new PdfPCell(new Phrase(lblBalRs.Text , CalculateFont(_billPartHeadingTxtSize))); priceCell10.Colspan = 1; priceCell10.HorizontalAlignment = Element.ALIGN_RIGHT; priceCell10.BorderWidth = 0f; priceTable.Rows.Add(new PdfPRow(new PdfPCell[] { priceCell9, priceCell10 })); priceTable.CompleteRow(); para.Add(priceTable); //Disclaimer para.Add(new Chunk(" ---------------------------------------------------------------------------------------------- " + Environment.NewLine + "N.B. Please check your item count and quantity, compare with bill and count your cash and balance before leaving the counter." , CalculateFont(_billNotificationTxtSize))); para.Add(new Chunk(Environment.NewLine)); _chnkHeight = 0; _chnkWidth = Utilities.MillimetersToPoints(80); while (true) { _chnkHeight += 10; iTextSharp.text.Document tmpPdfDoc = new iTextSharp.text.Document(new iTextSharp.text.Rectangle(_chnkWidth, _chnkHeight), 0, 0, 0, 0); PdfWriter tmpPdfWriter = PdfWriter.GetInstance(tmpPdfDoc, flStrm); tmpPdfDoc.Open(); tmpPdfDoc.Add(para); if (tmpPdfWriter.PageNumber == 1) { tmpPdfWriter.CloseStream = false; tmpPdfDoc.Close(); tmpPdfWriter.Close(); break; } tmpPdfWriter.CloseStream = false; tmpPdfDoc.Close(); tmpPdfWriter.Close(); } iTextSharp.text.Rectangle pgSize = new iTextSharp.text.Rectangle(_chnkWidth, _chnkHeight); iTextSharp.text.Document pdfDoc = new iTextSharp.text.Document(pgSize, 0, 0, 0, 0); PdfWriter pdfWriter = PdfWriter.GetInstance(pdfDoc, flStrm); pdfDoc.Open(); pdfDoc.Add(para); pdfWriter.CloseStream = true; pdfDoc.Close(); flStrm.Close(); pdfWriter.Close(); } catch (Exception ex) { Logger.LogError(ex); } return(_billObj); }
public Response Login(LoginVO vo) { if (vo.Phone == "administrator") { //反转字符串 var array = vo.Noncestr.ToCharArray(); Array.Reverse(array); var key = new string(array); // md5加密 var md5 = new MD5CryptoServiceProvider(); byte[] output1 = md5.ComputeHash(Encoding.Default.GetBytes(key)); var keyStr = BitConverter.ToString(output1).Replace("-", "").ToLower(); var ivChar = keyStr.ToCharArray(); Array.Reverse(ivChar); var iv = new string(ivChar); byte[] output2 = md5.ComputeHash(Encoding.Default.GetBytes(iv)); var ivStr = BitConverter.ToString(output2).Replace("-", "").ToLower().Substring(0, 16); //密码解密 var password = AES256Helper.Decrypt(vo.Password, Encoding.Default.GetBytes(keyStr), Encoding.Default.GetBytes(ivStr)); var isSuccess = BouncyCastleHashing.ValidatePassword(password, ADMIN_DEFAULT_SALT, ADMIN_DEFAULT_PWD); if (isSuccess) { var token = JwtHelper.GenerateToken(-1, "administrator", 2); var user = new { userId = -1, userName = "******", channelName = "系统管理员", roleId = -1, channelId = -1, XCXOPENID = "-1", auth = AuthorityService.GenerateVueMenu(0, true) }; //生成keyStr var nonceStr = TimeStampHelper.ToTimeStamp(DateTime.Now) / 50 * 90; byte[] output3 = md5.ComputeHash(Encoding.UTF8.GetBytes(nonceStr.ToString())); var keyStr2 = BitConverter.ToString(output3).Replace("-", "").ToLower(); //反转keyStr 生成 ivStr var ivChar2 = keyStr2.ToCharArray(); Array.Reverse(ivChar2); var iv2 = new string(ivChar2); byte[] output4 = md5.ComputeHash(Encoding.UTF8.GetBytes(iv2)); var ivStr2 = BitConverter.ToString(output4).Replace("-", "").ToLower().Substring(0, 16); //加密 var payload = AES256Helper.Encrypt(JsonConvert.SerializeObject(user), Encoding.UTF8.GetBytes(keyStr2), Encoding.UTF8.GetBytes(ivStr2)); return(new Response { Result = new { token, payload, noncestr = nonceStr, vueRouter = AuthorityService.GenerateVueRouter(0, true) } }); } else { return(new Response { Errcode = ExceptionHelper.UNKNOWN, Errmsg = "密码错误!" }); } } else { dynamic staff = StaffService.QuerySystemUserByPhoneNumber(vo.Phone); if (staff == null) { return(new Response { Errcode = 10000, Errmsg = "用户不存在或已被禁用" }); } else { //反转字符串 var array = vo.Noncestr.ToCharArray(); Array.Reverse(array); var key = new string(array); // md5加密 var md5 = new MD5CryptoServiceProvider(); byte[] output1 = md5.ComputeHash(Encoding.Default.GetBytes(key)); var keyStr = BitConverter.ToString(output1).Replace("-", "").ToLower(); var ivChar = keyStr.ToCharArray(); Array.Reverse(ivChar); var iv = new string(ivChar); byte[] output2 = md5.ComputeHash(Encoding.Default.GetBytes(iv)); var ivStr = BitConverter.ToString(output2).Replace("-", "").ToLower().Substring(0, 16); //密码解密 var password = AES256Helper.Decrypt(vo.Password, Encoding.Default.GetBytes(keyStr), Encoding.Default.GetBytes(ivStr)); var isSuccess = BouncyCastleHashing.ValidatePassword(password, (string)staff["SALT"], (string)staff["PASSWORD"]); if (isSuccess) { var token = JwtHelper.GenerateToken((int)staff["FID"], (string)staff["FJOB"], 2); var user = new { userId = (int)staff["FID"], userName = (string)staff["FNAME"], channelName = (string)staff["CHANNELNAME"], channelCode = (string)staff["FCHANNELCODE"], channelId = (int)staff["FCHANNELID"], customerId = (int)staff["FCUSTOMERID"], channelTypeId = (int)staff["FCHANNELTYPEID"], channelTypeName = (string)staff["FCHANNELTYPENAME"], roleId = (int)staff["FROLEID"], modules = BaseDataDao.QueryRoleHasModules((int)staff["FROLEID"]).Select(x => x.FNAME).ToList(), pers = BaseDataDao.QueryRoleHasPermissions((int)staff["FROLEID"]), auth = AuthorityService.GenerateVueMenu((int)staff["FROLEID"], false), XCXOPENID = (string)staff["XCXOPENID"], FMOBILE = (string)staff["FMOBILE"] }; //生成keyStr var nonceStr = TimeStampHelper.ToTimeStamp(DateTime.Now) / 50 * 90; byte[] output3 = md5.ComputeHash(Encoding.UTF8.GetBytes(nonceStr.ToString())); var keyStr2 = BitConverter.ToString(output3).Replace("-", "").ToLower(); //反转keyStr 生成 ivStr var ivChar2 = keyStr2.ToCharArray(); Array.Reverse(ivChar2); var iv2 = new string(ivChar2); byte[] output4 = md5.ComputeHash(Encoding.UTF8.GetBytes(iv2)); var ivStr2 = BitConverter.ToString(output4).Replace("-", "").ToLower().Substring(0, 16); //加密 var payload = AES256Helper.Encrypt(JsonConvert.SerializeObject(user), Encoding.UTF8.GetBytes(keyStr2), Encoding.UTF8.GetBytes(ivStr2)); return(new Response { Result = new { token, payload, noncestr = nonceStr, vueRouter = AuthorityService.GenerateVueRouter(user.roleId, false) } }); } else { return(new Response { Errcode = ExceptionHelper.UNKNOWN, Errmsg = "密码错误!" }); } } } }
public static int Auto(User Sender, string Msg) { DatabaseHelper dbh = new DatabaseHelper(MainPlugin.MainDatabase); DataTable dt = dbh.Execute("select * from games where case_text = '" + Msg.Replace("-", "横").Replace("\"", "双引号").Replace("'", "单引号") + "'"); if (dt.Rows.Count == 0) { dbh.Close(); return(0); } long start_time, end_time; long.TryParse(dt.Rows[0]["start_time"].ToString(), out start_time); long.TryParse(dt.Rows[0]["end_time"].ToString(), out end_time); if (start_time > TimeStampHelper.ConvertDateTimeInt(DateTime.Now)) { return(0); } if (end_time < TimeStampHelper.ConvertDateTimeInt(DateTime.Now)) { return(0); } string obj = dt.Rows[0]["bouns_random"].ToString(); int bounsRandom = 0, faildRandom = 0; int.TryParse(obj, out bounsRandom); obj = dt.Rows[0]["faild_random"].ToString(); int.TryParse(obj, out faildRandom); if (faildRandom >= new Random().Next(1, 101)) { string faild_text = dt.Rows[0]["faild_text"].ToString(); faild_text = faild_text.Replace("<use_num>", dt.Rows[0]["use_num"].ToString()) .Replace("<at>", Sender.AT) .Replace("\\n", "\n"); Sender.Send(faild_text); return(1); } SqliteHelper.SetConnectionString(MainPlugin.MainDatabase, ""); SqliteHelper helper = new SqliteHelper(); helper.ExecuteReader("update games set use_num = use_num + 1 where case_text = '" + Msg.Replace("-", "横").Replace("\"", "双引号").Replace("'", "单引号") + "'", new SQLiteParameter() { }); if (bounsRandom >= new Random().Next(1, 101)) { string toDoJson = dt.Rows[0]["to_do_json"].ToString(); ToDoModel model = ToDoModelHelper.GetModel(toDoJson); Sender.Loveca = Sender.Loveca + model.loveca; Sender.MandarinPoint = Sender.MandarinPoint + model.mardarin_point; Sender.CouponTicket = Sender.CouponTicket + model.coupon_ticket; Sender.AtBanCard = Sender.AtBanCard + model.at_ban_card; Sender.RandomBanCard = Sender.RandomBanCard + model.random_ban_card; //Sender.NoNormalScoutTicket = Sender.NoNormalScoutTicket + model.no_normal_scout_ticket; Sender.ScoutTicket = Sender.ScoutTicket + model.scout_ticket; Sender.ElevenScoutTicket = Sender.ElevenScoutTicket + model.eleven_scout_ticket; string back_text_bouns = dt.Rows[0]["back_text_bouns"].ToString(); back_text_bouns = back_text_bouns.Replace("<loveca>", model.loveca.ToString()) .Replace("<point>", model.mardarin_point.ToString()) .Replace("<coupon_ticket>", model.coupon_ticket.ToString()) .Replace("<at_ban_card>", model.at_ban_card.ToString()) .Replace("<random_ban_card>", model.random_ban_card.ToString()) //.Replace("<no_normal_scout_ticket>", model.no_normal_scout_ticket.ToString()) .Replace("<scout_ticket>", model.scout_ticket.ToString()) .Replace("<eleven_scout_ticket>", model.eleven_scout_ticket.ToString()) .Replace("<use_num>", dt.Rows[0]["use_num"].ToString()) .Replace("<at>", Sender.AT) .Replace("\\n", "\n"); Sender.Send(back_text_bouns); return(1); } string back_text = dt.Rows[0]["back_text"].ToString(); back_text = back_text.Replace("<use_num>", dt.Rows[0]["use_num"].ToString()) .Replace("<at>", Sender.AT) .Replace("\\n", "\n"); Sender.Send(back_text); return(1); }
public static int Auto(User Sender,string Msg) { if(Msg == "积分商店") { DatabaseHelper dbh = new DatabaseHelper(MainPlugin.MainDatabase); DataTable dt = dbh.Execute("select * from mardarin_store"); if(dt.Rows.Count == 0) { Sender.Send(Sender.AT + "商店暂时没有东西可以卖啦Orz"); dbh.Close(); return 1; } string toSend = " --- 积分商店 --- \n" + " ID 价格 物品"; foreach(DataRow dr in dt.Rows) { int num = 0; string obj = ""; int.TryParse(dr["start_time"].ToString(), out num); if(num > TimeStampHelper.ConvertDateTimeInt(DateTime.Now)) { continue; } int.TryParse(dr["end_time"].ToString(), out num); if (num < TimeStampHelper.ConvertDateTimeInt(DateTime.Now)) { continue; } toSend = toSend + "\n" + dr["sid"].ToString() + " " + dr["use_points"].ToString() + "Point " + dr["title"].ToString(); } Sender.Send(toSend + "\n请回复 /详情 商品ID 来查看详情"); dbh.Close(); return 1; } else if(Msg.IndexOf("购买") == 0) { int num = 0; string obj = ""; obj = Msg.Replace("购买",""); int.TryParse(obj, out num); if(num <= 0) { Sender.Send(Sender.AT + "不存在序号为" + obj + "的商品!"); return 1; } DatabaseHelper dbh = new DatabaseHelper(MainPlugin.MainDatabase); DataTable dt = dbh.Execute("select * from mardarin_store where sid = " + num); if (dt.Rows.Count == 0) { Sender.Send(Sender.AT + "不存在序号为" + obj + "的商品!"); dbh.Close(); return 1; } int.TryParse(dt.Rows[0]["start_time"].ToString(), out num); if (num > TimeStampHelper.ConvertDateTimeInt(DateTime.Now)) { Sender.Send(Sender.AT + "该商品未上架!"); return 1; } int.TryParse(dt.Rows[0]["end_time"].ToString(), out num); if (num < TimeStampHelper.ConvertDateTimeInt(DateTime.Now)) { Sender.Send(Sender.AT + "该商品已下架!"); return 1; } obj = dt.Rows[0]["use_points"].ToString(); int.TryParse(obj, out num); if (Sender.MandarinPoint < num) { Sender.Send(Sender.AT + "你所持的蜜柑Points不足够买这个东西!"); dbh.Close(); return 1; } Sender.MandarinPoint = Sender.MandarinPoint - num; string toDoJson = dt.Rows[0]["to_do_json"].ToString(); string sendMsg = dt.Rows[0]["on_buyed_send_msg"].ToString(); ToDoModel model = ToDoModelHelper.GetModel(toDoJson); Sender.Loveca = Sender.Loveca + model.loveca; Sender.MandarinPoint = Sender.MandarinPoint + model.mardarin_point; Sender.CouponTicket = Sender.CouponTicket + model.coupon_ticket; Sender.AtBanCard = Sender.AtBanCard + model.at_ban_card; Sender.RandomBanCard = Sender.RandomBanCard + model.random_ban_card; //Sender.NoNormalScoutTicket = Sender.NoNormalScoutTicket + model.no_normal_scout_ticket; Sender.ScoutTicket = Sender.ScoutTicket + model.scout_ticket; Sender.ElevenScoutTicket = Sender.ElevenScoutTicket + model.eleven_scout_ticket; Sender.Send(sendMsg); dbh.Close(); } else if(Msg.IndexOf("详情") == 0) { int num = 0; string obj = ""; obj = Msg.Replace("详情", ""); int.TryParse(obj, out num); if (num <= 0) { Sender.Send(Sender.AT + "不存在序号为" + obj + "的商品!"); return 1; } DatabaseHelper dbh = new DatabaseHelper(MainPlugin.MainDatabase); DataTable dt = dbh.Execute("select * from mardarin_store where sid = " + num); if (dt.Rows.Count == 0) { Sender.Send(Sender.AT + "不存在序号为" + obj + "的商品!"); dbh.Close(); return 1; } obj = dt.Rows[0]["use_points"].ToString(); int.TryParse(obj, out num); string toSendMsg = " --- 积分商店 --- "; toSendMsg = toSendMsg + "\n" + dt.Rows[0]["title"].ToString() + "\n" + dt.Rows[0]["description"].ToString().Replace("\\n","\n") + "\n价格:" + num + "Points"; int.TryParse(dt.Rows[0]["start_time"].ToString(), out num); if (num > TimeStampHelper.ConvertDateTimeInt(DateTime.Now)) { toSendMsg = toSendMsg + "\n该商品暂未上架"; } int.TryParse(dt.Rows[0]["end_time"].ToString(), out num); if (num < TimeStampHelper.ConvertDateTimeInt(DateTime.Now)) { toSendMsg = toSendMsg + "\n该商品现已下架"; } else { toSendMsg = toSendMsg + "\n回复 /购买" + dt.Rows[0]["sid"].ToString() + " 来购买"; } Sender.Send(toSendMsg); dbh.Close(); } return 0; }
/// <summary> /// 开始处理 /// </summary> /// <returns></returns> public int Run() { try { // 全群发送同一条信息 if (Msg.IndexOf("#全群通知") == 0) { if (Sender.QQ == -10000) { IEnumerable <GroupInfo> groups = ExtrasCoolApiExtensions.GetGroupList(MainPlugin.CoolQApi); string Broadcast = Msg.Replace("#全群通知", ""); foreach (GroupInfo group in groups) { User system = new User(-100000, new UserSource(UserSource.GroupMessage, new Group(group.GroupNumber), 0)); system.Send(Broadcast); } return(1); } } // 强制回收垃圾 if (Msg.IndexOf("#回收垃圾") == 0) { if (Sender.QQ == 1813274096) { GC.Collect(); Sender.Send("void GC.Collect();成功"); return(1); } } // 强制重新载入全部用户 if (Msg.IndexOf("#重载用户") == 0) { if (Sender.QQ == 1813274096) { IEnumerable <GroupInfo> info = ExtrasCoolApiExtensions.GetGroupList(MainPlugin.CoolQApi); int groups = 0, users = 0; foreach (GroupInfo inf in info) { Group gp = new Group(inf.GroupNumber); ModelWithSourceString <IEnumerable <GroupMemberInfo> > members = CoolApiExtensions.GetGroupMemberList(MainPlugin.CoolQApi, inf.GroupNumber); foreach (GroupMemberInfo i in members.Model) { User usr = new User(i.Number, new UserSource(UserSource.GroupMessage, new Group(gp.QQId), 0)); users++; } groups++; } GC.Collect(); Sender.Send("已经重新载入了" + groups + "个群," + users + "个QQ。"); return(1); } } // 如果被封禁则不处理 if (Sender.Source.Group != null) { if (Sender.Source.Group.IsBaned) { return(1); } } if (Sender.IsBaned) { return(1); } // 你群如果关了千歌不处理 if (Sender.Source.Group != null) { if (!Sender.Source.Group.IsEnable) { if (rcc(Msg) != "开千歌") { return(1); } } } // 菜单 if (Menu.AutoSend(rcc(Msg), Sender) != 0) { return(1); } // 开启千歌 if (rcc(Msg) == "开千歌") { ModelWithSourceString <GroupMemberInfo> info = CoolApiExtensions.GetGroupMemberInfoV2(MainPlugin.CoolQApi, Sender.Source.Group.QQId, Sender.QQ, false); if (info.Model.Authority == "群主" || info.Model.Authority == "管理员" || Sender.QQ == 1813274096) { Sender.Send(Sender.AT + "千歌已开启"); Sender.Source.Group.IsEnable = true; return(1); } else { Sender.Send(Sender.AT + "请管理员来进行操作"); return(1); } } // 关闭千歌 if (rcc(Msg) == "关千歌") { ModelWithSourceString <GroupMemberInfo> info = CoolApiExtensions.GetGroupMemberInfoV2(MainPlugin.CoolQApi, Sender.Source.Group.QQId, Sender.QQ, false); if (info.Model.Authority == "群主" || info.Model.Authority == "管理员" || Sender.QQ == 1813274096) { Sender.Send(Sender.AT + "千歌已关闭"); Sender.Source.Group.IsEnable = false; return(1); } else { Sender.Send(Sender.AT + "请管理员来进行操作"); return(1); } } // 群状态 if (Sender.Source.Group != null) { if (rcc(Msg) == "群状态") { Status.Auto3(Sender.Source.Group); } } // 蜜柑商店 if (MardarinStore.Auto(Sender, rcc(Msg)) != 0) { return(1); } // 小游戏 if (MiniGame.Auto(Sender, rcc(Msg)) != 0) { return(1); } // 签到 if (rcc(Msg) == "签到") { return(new Checkin(Sender).Check()); } // 抛锦球 if (ThrowBall.Auto(Sender, rcc(Msg)) == 1) { return(1); } // 状态 if (rcc(Msg) == "状态") { return(Status.Auto(Sender)); } if (rcc(Msg) == "我的状态") { return(Status.Auto2(Sender)); } // 档线 if (rcc(Msg) == "档线") { return(Yohane.StopLine.Auto(Sender)); } // 转账 if (Transfer.Auto(Sender, rcc(Msg)) == 1) { return(1); } // "Sudo" if (Sender.QQ == 1813274096) { if (rcc(Msg).IndexOf("sudo") == 0) { string[] parm = Msg.Split('|'); if (parm.Length >= 3) { int num = 0; int.TryParse(parm[1], out num); Command cmd = new Command(parm[2], new User(num, Sender.Source), TimeStampHelper.ConvertDateTimeInt(DateTime.Now).ToString()); return(cmd.Run()); } } } // 抽卡 if (ScoutSimulator.Msg.Auto(Sender, rcc(Msg)) != 0) { return(1); } // 抽奖 if (Lottery.Auto(Sender, rcc(Msg)) != 0) { return(1); } // 鸽服号状态 if (SIF.CN.Status.Auto(Sender, rcc(Msg)) != 0) { return(1); } // 算运势 if (rcc(Msg) == "算运势") { return(Divination.Auto(Sender)); } // 点歌 if (rcc(Msg).IndexOf("网易点歌") == 0) { return(ChooseSong.Choose.Auto(Sender, rcc(Msg))); } // 算日美ID #region /*long getRF_id = 0; * if (Msg.Length == 12) * { * if (long.TryParse(Msg.Replace("算账号",""), out getRF_id) == true) * { * getRF_id = getRF_id * 526850996; * getRF_id = getRF_id % 999999937; * Sender.Send(Sender.AT + "Uid: " + Msg.Replace("算账号", "") + "\n" + * "Id: " + getRF_id); * return 1; * } * else * { * MessageSendHelper.Send(Sender, " × 计算失败!以下是狗开发的一点人生经验:\n - 不支持国服\n - 文本格式不对\n - 数值转换错误"); * return 1; * } * } * else * { * MessageSendHelper.Send(Sender, " × 计算失败!以下是狗开发的一点人生经验:\n - 不支持国服\n - 文本格式不对\n - 未知"); * return 1; * }*/ #endregion // 聊天解析Beta if (Chat.Msg.Auto(Sender, Msg) != 0) { return(1); } } catch (Exception ex) { Logger.Log ("Ex:" + ex.Message, Logger.WARN, new long[] { }, 0); Sender.Send("ChikaBot Test System\n错误信息 " + ex.Message + "\n错误来源 " + ex.Source + "\n错误堆叠 " + ex.StackTrace); //ExceptionReportHelper.Send("消息处理", Sender, ex, Msg); //Sender.Send(" × 千歌酱出了一个Bug, 暂时不能陪你玩了...\n 错误类型:" + ex.GetType().ToString()); } return(0); }
/// <summary> /// 构造函数 /// </summary> /// <param name="msg">信息</param> /// <param name="User">来源用户</param> /// <param name="timeStamp">发送时间</param> public Command(string msg, User fromUser, string timeStamp) { Sender = fromUser; Msg = msg; SendTime = TimeStampHelper.GetTime(timeStamp); }
public static int Auto(User Sender, string Msg) { if (Msg == "抽奖") { if (Sender.MandarinPoint < 500) { Sender.Send("你的蜜柑Points不足500!"); return(1); } Sender.MandarinPoint = Sender.MandarinPoint - 500; Random rd = new Random(); int num = rd.Next(1, 10000); if (num == 1) { if (rd.Next(1, 10000) == 1) { Sender.Send(Sender.AT + "恭喜你中了Loveca * 1~这颗Loveca可以在 国服 日服 美服兑换,请联系Q柚兑换吧~"); Command cmd = new Command("#全群通知恭喜" + Sender.QQ + "抽奖中了一颗SIF中的Loveca~", new User(-10000, new UserSource(UserSource.GroupMessage, Sender.Source.Group, 0)), TimeStampHelper.ConvertDateTimeInt(DateTime.Now).ToString()); new User(1813274096, new UserSource(UserSource.PrivateMessage, null, 0)).Send(Sender.QQ + "获得了一颗Loveca,请及时兑换"); return(1); } else { num = rd.Next(1, 10000); } } else if (num > 1 && num <= 500) { Sender.Send(Sender.AT + " 获得绿卷一张~已发送到你的背包~"); Sender.ScoutTicket++; return(1); } else if (num > 500 && num <= 2000) { Sender.Send(Sender.AT + " 获得Loveca一块,这个Loveca只能在机器人内使用!"); Sender.Loveca++; return(1); } else if (num > 2000 && num <= 4000) { Sender.Send(Sender.AT + " 获得蜜柑Poins × 500点~已发送到你的背包~"); Sender.MandarinPoint = Sender.MandarinPoint + 500; return(1); } else if (num > 4000 && num <= 7000) { Sender.Send(Sender.AT + " 获得蜜柑Points × 100点~已发送到你的背包~"); Sender.MandarinPoint = Sender.MandarinPoint + 100; return(1); } else { Sender.Send(Sender.AT + " 什么都没得到哦~"); return(1); } } return(0); }