예제 #1
0
 public int GetOrderCount(OrderSearchCondition condition)
 {
     var query = _orderRepository.Table;
     try
     {
         if (!string.IsNullOrEmpty(condition.OrderNum))
         {
             query = query.Where(q => q.OrderNum.Contains(condition.OrderNum));
         }
         if (condition.Status.HasValue)
         {
             query = query.Where(q => q.Status == condition.Status.Value);
         }
         if (condition.IsPrint.HasValue)
         {
             query = query.Where(q => q.IsPrint == condition.IsPrint.Value);
         }
         if (condition.Type.HasValue)
         {
             query = query.Where(q => q.Type == condition.Type.Value);
         }
         if (condition.PayType.HasValue)
         {
             query = query.Where(q => q.PayType == condition.PayType.Value);
         }
         if (condition.LocationX.HasValue)
         {
             query = query.Where(q => q.LocationX == condition.LocationX.Value);
         }
         if (condition.LocationY.HasValue)
         {
             query = query.Where(q => q.LocationY == condition.LocationY.Value);
         }
         if (!string.IsNullOrEmpty(condition.DeliveryAddress))
         {
             query = query.Where(q => q.DeliveryAddress.Contains(condition.DeliveryAddress));
         }
         if (!string.IsNullOrEmpty(condition.PhoneNumber))
         {
             query = query.Where(q => q.PhoneNumber.Contains(condition.PhoneNumber));
         }
         if (condition.Ids != null && condition.Ids.Any())
         {
             query = query.Where(q => condition.Ids.Contains(q.Id));
         }
         if (condition.AddTimeBegin.HasValue)
         {
             query = query.Where(q => q.Addtime >= condition.AddTimeBegin);
         }
         if (condition.AddTimeEnd.HasValue)
         {
             query = query.Where(q => q.Addtime < condition.AddTimeEnd);
         }
         return query.Count();
     }
     catch(Exception e)
     {
         _log.Error(e,"数据库操作出错");
         return -1;
     }
 }
예제 #2
0
 public string NotifyUurl()
 {
     //获取流
     Stream s = System.Web.HttpContext.Current.Request.InputStream;
     //转换成Byte数组
     byte[] b = new byte[s.Length];
     //读取流
     s.Read(b, 0, (int)s.Length);
     //转化成utf8编码
     string postStr = Encoding.UTF8.GetString(b);
     //XML
     XmlDocument xmlDoc = new XmlDocument();
     xmlDoc.LoadXml(postStr);
     var returnCode = xmlDoc.SelectSingleNode("/xml/return_code");
     var resultCode = xmlDoc.SelectSingleNode("/xml/result_code");
     if (returnCode.InnerText == "SUCCESS" && resultCode.InnerText == "SUCCESS")
     {
         var sign = xmlDoc.SelectSingleNode("/xml/sign").InnerText;
         var dic = FromXml(xmlDoc);
         if (!CheckSign(sign, dic))
         {
             var error = new SortedDictionary<string, string>
             {
                 {"return_code", "FAIL"},
                 {"return_msg", "签名验证失败"}
             };
             return _helper.ConvertToXml(error);
         }
         var orderNo = xmlDoc.SelectSingleNode("/xml/out_trade_no");
         var con = new OrderSearchCondition()
         {
             OrderNum = orderNo.InnerText
         };
         var order = _orderService.GetOrdersByCondition(con).FirstOrDefault();
         if (order != null)
         {
             //                    if (order.Status == EnumOrderStatus.)
             //                    {
             //                        var error = new SortedDictionary<string, string>
             //                        {
             //                             {"return_code", "FAIL"},
             //                             {"return_msg", "没有获取到PrepayId"}
             //                        };
             //                        return _wcHelper.ConvertToXml(error);
             //                    }
             if (order.Status == EnumOrderStatus.Payed)
             {
                 var successMsg = new SortedDictionary<string, string>
                     {
                         {"return_code", "SUCCESS"},
                         {"return_msg", "OK"}
                     };
                 return _helper.ConvertToXml(successMsg);
             }
             if (order.Status == EnumOrderStatus.Created)
             {
                 //更新本地订单状态
                 order.Status = EnumOrderStatus.Payed;
                 order.Updtime = DateTime.Now;
                 _orderService.Update(order);
                 var successMsg = new SortedDictionary<string, string>
                     {
                         {"return_code", "SUCCESS"},
                         {"return_msg", "OK"}
                     };
                 return _helper.ConvertToXml(successMsg);
             }
         }
         var msg = new SortedDictionary<string, string>
             {
                 {"return_code", "FAIL"},
                 {"return_msg", "本地不存在订单信息"}
             };
         return _helper.ConvertToXml(msg);
     }
     var errorMsg = new SortedDictionary<string, string>
     {
          {"return_code", "FAIL"},
          {"return_msg", "交易失败"}
     };
     return _helper.ConvertToXml(errorMsg);
 }
예제 #3
0
        public IQueryable<OrderEntity> GetOrdersByCondition(OrderSearchCondition condition)
        {
            var query = _orderRepository.Table;
            try
            {
                if (!string.IsNullOrEmpty(condition.OrderNum))
                {
                    query = query.Where(q => q.OrderNum == condition.OrderNum);
                }
                if (condition.Status.HasValue)
                {
                    query = query.Where(q => q.Status == condition.Status.Value);
                }
                if (condition.IsPrint.HasValue)
                {
                    query = query.Where(q => q.IsPrint == condition.IsPrint.Value);
                }
                if (condition.Type.HasValue)
                {
                    query = query.Where(q => q.Type == condition.Type.Value);
                }
                if (condition.PayType.HasValue)
                {
                    query = query.Where(q => q.PayType == condition.PayType.Value);
                }
                if (condition.LocationX.HasValue)
                {
                    query = query.Where(q => q.LocationX == condition.LocationX.Value);
                }
                if (condition.LocationY.HasValue)
                {
                    query = query.Where(q => q.LocationY == condition.LocationY.Value);
                }
                if (!string.IsNullOrEmpty(condition.DeliveryAddress))
                {
                    query = query.Where(q => q.DeliveryAddress.Contains(condition.DeliveryAddress));
                }
                if (!string.IsNullOrEmpty(condition.PhoneNumber))
                {
                    query = query.Where(q => q.PhoneNumber.Contains(condition.PhoneNumber));
                }
                if (condition.Ids != null && condition.Ids.Any())
                {
                    query = query.Where(q => condition.Ids.Contains(q.Id));
                }
                if (condition.AddTimeBegin.HasValue)
                {
                    query = query.Where(q => q.Addtime >= condition.AddTimeBegin);
                }
                if (condition.AddTimeEnd.HasValue)
                {
                    query = query.Where(q => q.Addtime < condition.AddTimeEnd);
                }
                if(condition.OrderBy.HasValue)
                {
                    switch (condition.OrderBy.Value)
                    {
                        case EnumOrderSearchOrderBy.OrderById:
                            query = condition.IsDescending?query.OrderByDescending(q=>q.Id):query.OrderBy(q=>q.Id);
                            break;
                        case EnumOrderSearchOrderBy.OrderByOrderNum:
                            query = condition.IsDescending?query.OrderByDescending(q=>q.OrderNum):query.OrderBy(q=>q.OrderNum);
                            break;
                        case EnumOrderSearchOrderBy.OrderByTotalPrice:
                            query = condition.IsDescending?query.OrderByDescending(q=>q.TotalPrice):query.OrderBy(q=>q.TotalPrice);
                            break;
                        case EnumOrderSearchOrderBy.OrderByStatus:
                            query = condition.IsDescending?query.OrderByDescending(q=>q.Status):query.OrderBy(q=>q.Status);
                            break;
                        case EnumOrderSearchOrderBy.OrderByIsPrint:
                            query = condition.IsDescending?query.OrderByDescending(q=>q.IsPrint):query.OrderBy(q=>q.IsPrint);
                            break;
                        case EnumOrderSearchOrderBy.OrderByAddtime:
                            query = condition.IsDescending?query.OrderByDescending(q=>q.Addtime):query.OrderBy(q=>q.Addtime);
                            break;
                        case EnumOrderSearchOrderBy.OrderByUpdtime:
                            query = condition.IsDescending?query.OrderByDescending(q=>q.Updtime):query.OrderBy(q=>q.Updtime);
                            break;
                        case EnumOrderSearchOrderBy.OrderByType:
                            query = condition.IsDescending?query.OrderByDescending(q=>q.Type):query.OrderBy(q=>q.Type);
                            break;
                        case EnumOrderSearchOrderBy.OrderByPayType:
                            query = condition.IsDescending?query.OrderByDescending(q=>q.PayType):query.OrderBy(q=>q.PayType);
                            break;
                    }

                }
                else
                {
                    query = query.OrderByDescending(q => q.Id);
                }

                if (condition.Page.HasValue && condition.PageCount.HasValue)
                {
                    query = query.Skip((condition.Page.Value - 1)*condition.PageCount.Value).Take(condition.PageCount.Value);
                }
                return query;
            }
            catch(Exception e)
            {
                _log.Error(e,"数据库操作出错");
                return null;
            }
        }
예제 #4
0
 private string GetNewOrderNum()
 {
     var now = DateTime.Today;
     var condition = new OrderSearchCondition
     {
         AddTimeBegin = now,
         AddTimeEnd = now.AddDays(1)
     };
     var count = _OrderService.GetOrderCount(condition);
     return DateTime.Now.ToString("yyyyMMddHHmmss") + count.ToString("000000");
 }
예제 #5
0
 public string GetTodayOrderNumber()
 {
     OrderSearchCondition OSC = new OrderSearchCondition()
     {
         OrderNum = DateTime.Now.ToString("yyyyMMdd")
     };
     return "" + _OrderService.GetOrderCount(OSC);
 }
예제 #6
0
 public HttpResponseMessage GetCount(int? page = 1,
     int? pageCount = 10,
     string ids = "",
     bool isDescending = false,
     string orderNum = "",
     EnumOrderStatus? status = null,
     string deliveryAddress = "",
     bool? isPrint = null,
     string phoneNumber = "",
     EnumOrderType? type = null,
     EnumPayType? payType = null,
     decimal? locationX = null,
     decimal? locationY = null,
     DateTime? addTimeBegin = null,
     DateTime? addTimeEnd = null,
     EnumOrderSearchOrderBy orderBy = EnumOrderSearchOrderBy.OrderById)
 {
     var condition = new OrderSearchCondition
     {
         AddTimeBegin = addTimeBegin,
         AddTimeEnd = addTimeEnd,
         DeliveryAddress = deliveryAddress,
         Ids = string.IsNullOrEmpty(ids) ? null : ids.Split(',').Select(int.Parse).ToArray(),
         IsDescending = isDescending,
         IsPrint = isPrint,
         LocationX = locationX,
         LocationY = locationY,
         OrderBy = orderBy,
         OrderNum = orderNum,
         Page = page,
         PageCount = pageCount,
         PayType = payType,
         PhoneNumber = phoneNumber,
         Type = type,
         Status = status
     };
     var count = _OrderService.GetOrderCount(condition);
     return PageHelper.toJson(new { TotalCount = count, Condition = condition });
 }
예제 #7
0
        public HttpResponseMessage GetByCondition(int? page = 1,
                                                    int? pageCount = 10,
                                                    string ids ="",
                                                    bool isDescending = false,
                                                    string orderNum = "",
                                                    EnumOrderStatus? status = null,
                                                    string deliveryAddress = "",
                                                    bool? isPrint = null,
                                                    string phoneNumber = "",
                                                    EnumOrderType? type = null,
                                                    EnumPayType? payType = null,
                                                    decimal? locationX = null,
                                                    decimal? locationY = null,
                                                    DateTime? addTimeBegin = null,
                                                    DateTime? addTimeEnd = null,
                                                    EnumOrderSearchOrderBy orderBy = EnumOrderSearchOrderBy.OrderById)
        {
            var condition = new OrderSearchCondition
            {
                AddTimeBegin = addTimeBegin,
                AddTimeEnd = addTimeEnd,
                DeliveryAddress = deliveryAddress,
                Ids = string.IsNullOrEmpty(ids)?null:ids.Split(',').Select(int.Parse).ToArray(),
                IsDescending = isDescending,
                IsPrint = isPrint,
                LocationX = locationX,
                LocationY = locationY,
                OrderBy = orderBy,
                OrderNum = orderNum,
                Page = page,
                PageCount = pageCount,
                PayType = payType,
                PhoneNumber = phoneNumber,
                Type = type,
                Status = status
            };
            var model = _OrderService.GetOrdersByCondition(condition).Select(c => new OrderModel
            {

                Id = c.Id,

                OrderNum = c.OrderNum,

                TotalPrice = c.TotalPrice,

                TransCost = c.TransCost,

                ProductCost = c.ProductCost,

                Discount = c.Discount,

                Status = c.Status,

                DeliveryAddress = c.DeliveryAddress,

                IsPrint = c.IsPrint,

                PhoneNumber = c.PhoneNumber,

                Adduser = new UserModel{Id = c.Adduser.Id,UserName = c.Adduser.UserName},

                Addtime = c.Addtime,

                Upduser = new UserModel { Id = c.Upduser.Id, UserName = c.Upduser.UserName },

                Updtime = c.Updtime,

                //				Details = c.Details,

                //				Coupon = c.Coupon,

                Type = c.Type,

                PayType = c.PayType,

                LocationX = c.LocationX,

                LocationY = c.LocationY,
                Details = c.Details.Select(d => new OrderDetailModel()
                {
                    Count = d.Count,
                    Id = d.Id,
                    ProductId = d.Product.Id,
                    ProductName = d.Product.Name,
                    TotalPrice = d.TotalPrice,
                    UnitPrice = d.Product.Price,
                    Remark=d.Remark
                }).ToList()

            }).ToList();
            return PageHelper.toJson(new { List = model });
        }