public ActionResult CreateOrder(Orders order) { order.Id = Guid.NewGuid().ToString().Replace("-", ""); order.CreateTime = DateTime.Now; if (!entities.NimUser.Any(o => o.Username == order.UserName)) { return(Json(new { code = 200, desc = "指定用户不存在", info = order })); } //order = new StudyOnline.Models.Orders(); //order.Id = "123456789"; //order.Amount = 0.01; //order.Main = "ChineseChat充值"; //order.Body = "ChineseChat充值1000学币"; String orderString = OrderUtil.getOrderInfo(order); String sign = RSAFromPkcs8.sign(orderString, Config.Private_key, Config.Input_charset); //原始订单字符串+URL编码的签名+签名类型 String lastOrderString = orderString + "&sign=\"" + HttpUtility.UrlEncode(sign, Encoding.UTF8) + "\"&sign_type=\"" + Config.Sign_type + "\""; entities.Orders.Add(order); entities.SaveChanges(); return(Json(new { code = 200, desc = "订单创建成功", info = new { order.Id, LastOrderString = lastOrderString } })); }
public OrderDto CreatePreOrder(SysUser sysUser, [FromForm] ProductPo productPo) { //1.创建订单号 string orderSn = OrderUtil.GetOrderCode(); //2.计算总价 decimal itemTotalPrice = productPo.ProductCount * productPo.ProductPrice; //3.创建订单项 OrderItemDto orderItemDto = new OrderItemDto(); orderItemDto.OrderSn = orderSn; orderItemDto.ProductId = productPo.ProductId; orderItemDto.ItemCount = productPo.ProductCount; orderItemDto.ItemPrice = productPo.ProductPrice; orderItemDto.ItemTotalPrice = itemTotalPrice; //4.创建订单 OrderDto orderDto = new OrderDto(); orderDto.UserId = sysUser.UserId; orderDto.OrderItemDtos = new List <OrderItemDto>() { orderItemDto }; return(orderDto); }
public ActionResult SelectProduct(OrderModel.Product model) { try { _sessionId = Session[Const.Session.SESSION_ID].ToString(); _aspId = Session[Const.Session.ASP_ID].ToString(); if (model.ProductId != -1) { var orderProduct = (from mst_Price in _db.MST_Price join mst_Product in _db.MST_Product on mst_Price.ProductId equals mst_Product.ProductId where mst_Price.ASP_ID == _aspId && mst_Price.ProductId == model.ProductId select new OrderModel.Product { ProductId = mst_Price.ProductId, ProductName = mst_Product.ProductName, Price = (decimal)mst_Price.Price }).Single(); OrderManage order = new OrderManage() { SessionId = _sessionId, ProductId = orderProduct.ProductId, Price = orderProduct.Price }; _db.OrderManage.Add(order); _db.SaveChanges(); return(Redirect(Const.Redirect.ORDER_END)); } else { var orderProduct = from mst_Price in _db.MST_Price join mst_Product in _db.MST_Product on mst_Price.ProductId equals mst_Product.ProductId where mst_Price.ASP_ID == _aspId orderby mst_Product.ProductId select new OrderModel.Product { ProductId = mst_Price.ProductId, ProductName = mst_Product.ProductName }; List <OrderModel.Product> orderProductList = orderProduct.ToList(); ViewData[Const.ViewData.PRODUCT_DROPDOWN_LIST] = OrderUtil.MakeProductDropdownList(orderProductList); return(View(model)); } } catch (Exception ex) { throw; } }
public void Update() { if (!executing) { return; } if (currentOrder.Equals("")) { currentOrder = OrderUtil.GetNewOrder(ObjectUtil.GetFlowController()); Logger.Log("Getting new order"); } else { bool orderExists = false; foreach (string order in OrderUtil.GetOrders(ObjectUtil.GetFlowController())) { if (order.Equals(currentOrder)) { orderExists = true; break; } } if (!orderExists) { if (currentAction is IPausableAction cancellableCurrentAction) { cancellableCurrentAction.Pause(); } currentAction = null; currentOrder = OrderUtil.GetNewOrder(ObjectUtil.GetFlowController()); Logger.Log("Getting new order"); } } // We should have an order to work on if (currentAction == null) { currentAction = new HandleOrderAction(ObjectUtil.GetBotControls(), currentOrder); } if (currentAction.Update()) { currentAction.End(); currentAction = null; currentOrder = ""; } }
public PaymentDto CreateOrder(SysUser sysUser, [FromForm] OrderPo orderPo) { //1.创建订单号 string orderSn = OrderUtil.GetOrderCode(); //2.扣减库存 seckillsClient.SeckillSetStock(orderPo.ProductId, orderPo.ProductCount); //3.设置订单 var configuration = new MapperConfiguration(cfg => { cfg.CreateMap <OrderPo, Order>(); }); IMapper mapper = configuration.CreateMapper(); Order order = mapper.Map <OrderPo, Order>(orderPo); order.OrderSn = orderSn; order.UserId = sysUser.UserId; //4.设置订单项 OrderItem orderItem = new OrderItem(); orderItem.ItemCount = orderPo.ProductCount; orderItem.ItemPrice = orderPo.OrderTotalPrice; orderItem.ItemTotalPrice = orderPo.OrderTotalPrice; orderItem.ProductUrl = orderPo.ProductUrl; orderItem.ProductId = orderPo.ProductId; orderItem.OrderSn = orderSn; order.OrderItems = new List <OrderItem>() { orderItem }; //5.保存订单 order = orderClient.CreateOrder(order); //6.创建支付信息 PaymentDto paymentDto = new PaymentDto(); paymentDto.OrderSn = orderSn; paymentDto.UserId = sysUser.UserId; paymentDto.ProductId = orderPo.ProductId; paymentDto.ProductName = orderPo.ProductName; paymentDto.OrderTotalPrice = orderPo.OrderTotalPrice; return(paymentDto); }
private void PassOrdersLeft() { Excel.Range range = monthlyExcelFile.ordersRange; int length = ExcelUtil.GetLastRow(monthlyExcelFile.ordersRange.Worksheet); for (int row = 2; row < length; row++) { if (IsAnyCellContainsValue(range, row)) { OrderUtil.CheckOrderDesc(monthlyExcelFile.ordersRange, row); ErrorUtil.IsInvoiceNumberOk(monthlyExcelFile.ordersRange, row, ColumnsOrder.InvoiceNumber); ErrorUtil.CheckRecordType(monthlyExcelFile.ordersRange, row, RecordType.order); OrderUtil.CheckReceivedAmount(monthlyExcelFile.ordersRange, row); OrderUtil.CheckOrderNumber(monthlyExcelFile.ordersRange, row); } } }
/// <summary> /// 构建查询。 /// </summary> /// <param name="predicate">筛选表达式。</param> /// <param name="page">分页信息接口。</param> /// <param name="predicate">排序选择器数组。</param> /// <returns></returns> protected IQueryable <TRecord> BuildQueryable(Expression <Func <TRecord, bool> > predicate, IPage page, params OrderSelector <TRecord>[] orderSelectors) { IQueryable <TRecord> queryable = Queryable; if (predicate != null) { queryable = queryable.Where(predicate); } var hasPage = page != null; if (hasPage && orderSelectors.IsEmpty()) { //默认Id升序 orderSelectors = new OrderSelector <TRecord>[] { OrderUtil.Ascending <TRecord>(s => new { s.Id }) }; } queryable = OrderUtil.OrderBy(queryable, orderSelectors); if (hasPage) { queryable = queryable.Skip(page.PageSize.Value * (page.PageNumber.Value - 1)).Take(page.PageSize.Value); } return(queryable); }
// 2. public ActionResult SelectProduct() { _sessionId = Session[Const.Session.SESSION_ID].ToString(); _aspId = Session[Const.Session.ASP_ID].ToString(); var orderProduct = from mst_Price in _db.MST_Price join mst_Product in _db.MST_Product on mst_Price.ProductId equals mst_Product.ProductId where mst_Price.ASP_ID == _aspId orderby mst_Product.ProductId select new OrderModel.Product { ProductId = mst_Price.ProductId, ProductName = mst_Product.ProductName, Price = (decimal)mst_Price.Price }; List <OrderModel.Product> orderProductList = orderProduct.ToList(); ViewData[Const.ViewData.PRODUCT_DROPDOWN_LIST] = OrderUtil.MakeProductDropdownList(orderProductList); //private Method へのアクセス //string productName = OrderUtil.SelectProductName(0); //アクセスできない保護レベルになっている return(View(new OrderModel.Product())); }
private bool AddOrder(int row) { if (!OrderUtil.CheckOrderDesc(monthlyExcelFile.ordersRange, row)) { return(false); } Order order = new Order(); if (ErrorUtil.IsInvoiceNumberOk(monthlyExcelFile.ordersRange, row, ColumnsOrder.InvoiceNumber)) { order.InvoiceNumber = ExcelUtil.GetStringValue(monthlyExcelFile.ordersRange, row, ColumnsOrder.InvoiceNumber); } else { return(false); } if (ErrorUtil.CheckRecordType(monthlyExcelFile.ordersRange, row, RecordType.order)) { order.RecordType = ExcelUtil.GetStringValue(monthlyExcelFile.ordersRange, row, ColumnsOrder.RecordType); } if (OrderUtil.CheckReceivedAmount(monthlyExcelFile.ordersRange, row)) { order.ReceivedAmount = ExcelUtil.GetStringValue(monthlyExcelFile.ordersRange, row, ColumnsOrder.RecivedAmount); } if (OrderUtil.CheckOrderNumber(monthlyExcelFile.ordersRange, row)) { order.OrderNumber = ExcelUtil.GetStringValue(monthlyExcelFile.ordersRange, row, ColumnsOrder.OrderNumber); } order.StoreNumber = ExcelUtil.GetStringValue(monthlyExcelFile.ordersRange, row, ColumnsOrder.StoreNumber); order.Date = ExcelUtil.GetStringValue(monthlyExcelFile.ordersRange, row, ColumnsOrder.Date); order.EnteranceStampNum = ExcelUtil.GetStringValue(monthlyExcelFile.ordersRange, row, ColumnsOrder.EnteranceStampNum); order.Discount = ExcelUtil.GetStringValue(monthlyExcelFile.ordersRange, row, ColumnsOrder.Discount); order.DiscountPrecent = ExcelUtil.GetStringValue(monthlyExcelFile.ordersRange, row, ColumnsOrder.DiscountPrecent); order.SaleDiscount = ExcelUtil.GetStringValue(monthlyExcelFile.ordersRange, row, ColumnsOrder.SaleDiscount); order.SaleDiscountPrecent = ExcelUtil.GetStringValue(monthlyExcelFile.ordersRange, row, ColumnsOrder.SaleDiscountPrecent); order.DistrbutionDiscount = ExcelUtil.GetStringValue(monthlyExcelFile.ordersRange, row, ColumnsOrder.DistrbutionDiscount); order.DistrbutionDiscountPrecent = ExcelUtil.GetStringValue(monthlyExcelFile.ordersRange, row, ColumnsOrder.DistrbutionDiscountPrecent); Excel.Range cell = monthlyExcelFile.linesRange.Find(order.InvoiceNumber.TrimStart()); int cellRow; int nextsRow = 1; if (cell != null) { cellRow = cell.Row; if (ExcelUtil.GetStringValue(monthlyExcelFile.ordersRange, row, ColumnsOrder.OrderDesc).TrimStart() == ExcelUtil.GetStringValue(monthlyExcelFile.linesRange, cell.Row, ColumnsLines.OrderDesc).TrimStart()) { AddLine(order, cell.Row); } cell = monthlyExcelFile.linesRange.Find(order.InvoiceNumber.TrimStart()); nextsRow = cell.Row; while (cellRow != nextsRow) { cell = monthlyExcelFile.linesRange.FindNext(cell); if (cell != null) { nextsRow = cell.Row; if (ExcelUtil.GetStringValue(monthlyExcelFile.ordersRange, row, ColumnsOrder.OrderDesc).TrimStart() == ExcelUtil.GetStringValue(monthlyExcelFile.linesRange, cell.Row, ColumnsLines.OrderDesc).TrimStart()) { AddLine(order, cell.Row); } } } } if (order.Lines.Count < 1) { ErrorUtil.FinallizeErrorAndAdd(new Error { Issue = "לא נמצאו שורות להזמנה" }, row: 1, column: 1, range: monthlyExcelFile.linesRange); return(false); } Invoice.GetInstance().AddOrder(order); recordsToBeDeleted.Add(new RecordToBeDeleted { Record = row, Sheet = Sheets.OrdersSheetNumber }); return(true); }
public ActionResult VerifyAliPay(String orderId, String result) { Orders order = entities.Orders.Find(orderId); if (order == null) { return(Json(new { code = 201, desc = "指定订单不存在" })); } NimUser user = entities.NimUser.Single(o => o.Username == order.UserName); //如果异步通知成功,直接返回 if (order.TradeStatus == "TRADE_SUCCESS" || order.TradeStatus == "TRADE_FINISHED") { //平衡学币 user.NimUserEx.Coins = order.Coin + (user.NimUserEx.Coins ?? 0); order.IsBalance = 1; entities.SaveChanges(); return(Json(new { code = 200, desc = "支付成功", info = new { user.Username, Nickname = user.NimUserEx.Name, user.NimUserEx.Coins } })); } //如果服务端没有收到异步通知的时候,则要验证客户端发过来的同步通知(https://doc.open.alipay.com/doc2/detail.htm?spm=0.0.0.0.bsvyrx&treeId=59&articleId=103665&docType=1) //1、原始数据是否跟商户请求支付的原始数据一致(必须验证这个); //2、验证这个签名是否能通过。上述1、2通过后,在sign字段中success = true才是可信的。 //构建原始数据,并验证是否一致,比如如果订单号不存在,那么就会验证不成功 String orderString = OrderUtil.getOrderInfo(order); if (!result.Contains(orderString)) { return(Json(new { code = 201, desc = "数据验证不通过" })); } //验证数据的签名,以[&sign_type="RSA"&sign=]为界,前面的为(原始数据&支付结果),后面的为带双引号的签名结果,在验证签名时,记录把开头和结尾的引号trim掉 String[] a = result.Split(new String[] { "&sign_type=\"RSA\"&sign=" }, StringSplitOptions.None); bool isPass = RSAFromPkcs8.verify(a[0], a[1].Trim(new char[] { '"' }), Config.Public_key, Config.Input_charset); if (!isPass) { return(Json(new { code = 201, desc = "数据签名不相符" })); } //验证是否包含""这样的支付结果 if (!a[0].Contains("&success=\"true\"")) { return(Json(new { code = 201, desc = "支付失败" })); } order.TradeNo = ""; order.TradeStatus = "COMPLETED";//只说明是同步验证成功,应该尽量依靠服务器异步验证 if (order.IsBalance != 1) { user.NimUserEx.Coins = order.Coin + (user.NimUserEx.Coins ?? 0); order.IsBalance = 1; } entities.SaveChanges(); return(Json(new { code = 200, desc = "支付成功", info = new { user.Username, Nickname = user.NimUserEx.Name, user.NimUserEx.Coins } })); }
public void Query() { var repository = new UserRepository(); var orderSelector = OrderUtil.Ascending <User>(s => s.Name, s => s.Gender); var users = repository.Query(p => p.IsHappy, orderSelector); }