Exemplo n.º 1
0
        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 } }));
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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;
            }
        }
Exemplo n.º 4
0
        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  = "";
            }
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
                }
            }
        }
Exemplo n.º 7
0
        /// <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);
        }
Exemplo n.º 8
0
        // 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()));
        }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
        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 } }));
        }
Exemplo n.º 11
0
 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);
 }