/// <summary> /// 更新签核记录标记 /// </summary> /// <param name="item"></param> /// <param name="tag"></param> /// <returns></returns> public bool IsUpdateTags(int item, int tag) { using (var _context = BaseUtility.ContextFactory.ContextHelper) { try { FormSign formSign = _context.FormSigns.Find(item); formSign.Tag = tag; _context.Entry(formSign).State = EntityState.Modified; return(_context.SaveChanges() > 0); } catch { return(false); } } }
public ContentResult Pay(string Id, [FromServices] SessionManagerService sessionManager, [FromServices] OperationManagerService operationManager, [FromServices] FormManagerService formManager, [FromServices] PaymentSystemContext dbContext, [FromServices] FormDataCryptService cryptService) { try { var session = sessionManager.Get(Id); if (session.SessionType != SessionType.OneStep && session.SessionType != SessionType.TwoStep) { return(base.Content(formManager.GetErrorForm())); } var result = operationManager.CheckPaymentPossibility(session); var dictionary = new Dictionary <string, string>(); switch (result) { case PaymentPossibility.LimitExceeded: case PaymentPossibility.SessionExpired: return(base.Content(formManager.GetErrorForm())); case PaymentPossibility.AlreadyPaid: return(base.Content(formManager.GetSuccessForm())); default: var generationTime = DateTime.UtcNow; session.LastFormGenerationTime = generationTime; session.TryCount++; dbContext.SaveChanges(); var formSign = new FormSign { GenerationTime = generationTime, SessionId = session.Id }; dictionary.Add("sessionId", session.ExternalId); dictionary.Add("code", cryptService.Crypt(formSign)); return(base.Content(formManager.GetPaymentForm(dictionary))); } } catch (Exception) { return(base.Content(formManager.GetErrorForm())); } }
public string Crypt(FormSign formSign) { var plainData = JsonConvert.SerializeObject(formSign); return(CryptHelper.Encrypt(plainData, _secret)); }
/// <summary> /// //0:失败 //1:成功 //2签核完成 /// </summary> /// <param name="formNo"></param> /// <param name="item"></param> /// <param name="empNo"></param> /// <param name="nextEmpNo"></param> /// <param name="sourceEmpNo"></param> /// <param name="func"></param> /// <returns></returns> public bool Agree(string formNo, int item, string empNo, out string nextEmpNo, out string sourceEmpNo, Func <string, string, int, bool> func) { nextEmpNo = null; sourceEmpNo = null; using (var context = BaseUtility.ContextFactory.ContextHelper) { try { //如果被签记录号为0,则手动查找记录号 if (item == 0) { item = context.FormSigns.Single(c => c.FormNo == formNo && c.SignResult == (int)FormSign.SignResultEnum.Watting).RowId; } //确认记录是否存在 if (context.FormSigns.Single(c => c.FormNo == formNo && c.RowId == item && c.SignResult == (int)FormSign.SignResultEnum.Watting) == null) { return(false); } //将记录更改为签核完成 var signs = context.FormSigns.Where(c => c.FormNo == formNo && c.SignResult == (int)FormSign.SignResultEnum.Watting).ToList(); signs.ForEach(d => { d.SignResult = (int)FormSign.SignResultEnum.Agree; d.ActualSignEmpNo = empNo; d.SignTime = DateTime.Now; }); //查找表单实体 var formModel = context.Forms.Find(formNo); //查找还未产生的签核人 var noCheck = formModel.SignPath.Split(',').ToList(); noCheck.RemoveAll(string.IsNullOrEmpty); //还未产生的签核人 if (noCheck.Count > 0) { FormSign sign = (noCheck.First().Substring(0, 1) == "@") ? new FormSign() { FormNo = formNo, SignEmpNo = noCheck.First().Substring(1), SourceType = (int)FormSign.SourceTypeEnum.AddAfter, SourceEmpNo = formModel.SourceEmpNo, SourceReason = formModel.Reason, CreateTime = DateTime.Now, Grade = 0, Tag = 0, IsDel = false, } : new FormSign() { FormNo = formNo, SignEmpNo = noCheck.First(), SourceType = (int)FormSign.SourceTypeEnum.Auto, CreateTime = DateTime.Now, Grade = 0, Tag = 0, IsDel = false, }; context.FormSigns.Add(sign); //下位签核人 nextEmpNo = sign.SignEmpNo; //重组未签核顺序 noCheck.Remove(noCheck.First()); var sb = new StringBuilder(); noCheck.ForEach(k => sb.Append(k + ",")); formModel.SignPath = sb.ToString(); formModel.SourceEmpNo = null; formModel.Reason = null; context.Entry(formModel).State = EntityState.Modified; context.SaveChanges(); sourceEmpNo = sign.SourceEmpNo; return(true); } //没有签核人啦,将表单状态改为签核完成 //结案表单 if (!func(formNo, empNo, item)) { return(false); } //签核完成 formModel.FormStatus = (int)Form.StatusEnum.签核完成; formModel.CloseTime = DateTime.Now; context.SaveChanges(); return(true); } catch (Exception exception) { Console.Write(exception.Message); return(false); } } }