public static List<Entities.OrderInfo> GetOrders() { List<Entities.OrderInfo> orderInfos = new List<Entities.OrderInfo>(); for (int i = 0; i < 1000; i++) { Entities.OrderInfo orderInfo = new Entities.OrderInfo { OrderId = i, OrderDate = new System.DateTime(), CustomerInfo = new Entities.CustomerInfo { CompanyName = "bingo", ContactName = "bongo" }, ProductInfos = new List<Entities.ProductInfo>() }; for (int j = 0; i < 5; i++) { orderInfo.ProductInfos.Add(new Entities.ProductInfo { CategoryName = "categoryname", ProductName = "productName" }); } orderInfos.Add(orderInfo); } return orderInfos; }
public void MapOrderInfoModelToEntity(Models.OrderInfo orderInfoMod, Entities.OrderInfo orderInfoEnt) { var mapper = new MapperConfiguration(configure => configure.CreateMap <Models.OrderInfo, Entities.OrderInfo>()) .CreateMapper(); mapper.Map(orderInfoMod, orderInfoEnt); }
/// <summary> /// 检测订单信息 /// </summary> /// <param name="data"></param> private void CheckOrderInfo(Entities.OrderInfo data) { if (data == null) { throw new HimallApiException(OpenApiErrorCode.Trade_not_Exists, "tid"); } if (data.ShopId != shopId) { throw new HimallApiException(OpenApiErrorCode.Trade_is_Invalid, "app_key"); } }
public object GetExpressInfo(long orderId) { CheckUserLogin(); var orderService = ServiceProvider.Instance <IOrderService> .Create; Entities.OrderInfo order = orderService.GetOrder(orderId, CurrentUser.Id); //订单信息是否正常 if (order == null) { return(Json(ErrorResult <dynamic>("订单号不存在"))); } List <object> TracesList = new List <object>(); //取订单物流信息 if (!string.IsNullOrWhiteSpace(order.ShipOrderNumber)) { var expressData = ServiceProvider.Instance <IExpressService> .Create.GetExpressData(order.ExpressCompanyName, order.ShipOrderNumber); if (expressData.Success) { expressData.ExpressDataItems = expressData.ExpressDataItems.OrderByDescending(item => item.Time);//按时间逆序排列 foreach (var item in expressData.ExpressDataItems) { var traces = new { acceptStation = item.Content, acceptTime = item.Time.ToString("yyyy-MM-dd HH:mm:ss") }; TracesList.Add(traces); } } } var data = new { LogisticsData = new { success = TracesList.Count > 0, traces = TracesList }, ExpressCompanyName = order.DeliveryType == DeliveryType.ShopStore ? "门店店员配送" : order.ExpressCompanyName, ShipOrderNumber = order.DeliveryType == DeliveryType.ShopStore ? "" : order.ShipOrderNumber, ShipTo = order.ShipTo, CellPhone = order.CellPhone, Address = order.RegionFullName + order.Address }; return(Json(data: data)); }
/// <summary> /// 发货 /// </summary> /// <param name="context"></param> /// <returns></returns> public string Send(HttpContext context) { string bizcontent = context.Request["bizcontent"]; JObject jo = (JObject)JsonConvert.DeserializeObject(bizcontent); string SendType = GetJObjectValue <string>(jo, "SendType"); string LogisticName = GetJObjectValue <string>(jo, "LogisticName"); string LogisticType = GetJObjectValue <string>(jo, "LogisticType"); string LogisticNo = GetJObjectValue <string>(jo, "LogisticNo"); long OrderId = GetJObjectValue <long>(jo, "PlatOrderNo"); int? IsSplit = GetJObjectValue <int?>(jo, "IsSplit"); string SenderName = GetJObjectValue <string>(jo, "SenderName"); string SenderTel = GetJObjectValue <string>(jo, "SenderTel"); string SenderAddress = GetJObjectValue <string>(jo, "SenderAddress"); int IsHwgFlag = GetJObjectValue <int>(jo, "IsHwgFlag"); if (OrderId <= 0) { throw new HimallApiException("订单号错误"); } Entities.OrderInfo order = OrderApplication.GetOrderInfo(OrderId); if (order == null) { throw new HimallApiException("未找到此订单"); } if (order.OrderStatus != Entities.OrderInfo.OrderOperateStatus.WaitDelivery) { throw new HimallApiException("当前订单状态没有付款或不是等待发货的订单,所以不能发货!"); } if (string.IsNullOrEmpty(LogisticNo)) { throw new HimallApiException("运单号码不能为空!"); } OrderApplication.SellerSendGood(OrderId, "网店管家", LogisticName, LogisticNo); StringBuilder sb = new StringBuilder(); sb.Append("{"); sb.Append("\"code\":" + "\"10000\""); sb.Append(",\"message\":" + "\"SUCCESS\""); sb.Append("}"); return(sb.ToString()); }
/// <summary> /// 订单信息转换 /// </summary> /// <param name="data"></param> /// <returns></returns> private trade_list_model OrderInfoMapChange(Entities.OrderInfo data) { #region 基础信息初始化 var UserInfo = _iMemberService.GetMemberByName(data.UserName); string state = "", city = "", district = "", town = ""; if (!string.IsNullOrWhiteSpace(data.RegionFullName)) { string[] adressArray = data.RegionFullName.Split(new string[] { " ", ",", "," }, StringSplitOptions.RemoveEmptyEntries); if (adressArray != null && adressArray.Length > 1) { state = adressArray[0]; city = adressArray[1]; district = adressArray[2]; if (adressArray.Length == 4) { town = adressArray[3]; } else { town = string.Empty; } } } string status = string.Empty; switch (data.OrderStatus) { case Entities.OrderInfo.OrderOperateStatus.Close: status = "TRADE_CLOSED"; break; case Entities.OrderInfo.OrderOperateStatus.Finish: status = "TRADE_FINISHED"; break; case Entities.OrderInfo.OrderOperateStatus.WaitDelivery: status = "WAIT_SELLER_SEND_GOODS"; //拼团订单信息修正 if (data.OrderType == Entities.OrderInfo.OrderTypes.FightGroup) { var fgord = _iFightGroupService.GetOrder(data.Id); if (fgord != null) { if (fgord.GetJoinStatus != FightGroupOrderJoinStatus.BuildSuccess) { //未拼团成功的订单为待付款状态返回 status = "WAIT_BUYER_PAY"; } } } break; case Entities.OrderInfo.OrderOperateStatus.WaitPay: status = "WAIT_BUYER_PAY"; break; case Entities.OrderInfo.OrderOperateStatus.WaitReceiving: status = "WAIT_BUYER_CONFIRM_GOODS"; break; default: status = string.Empty; break; } #endregion trade_list_model result = new trade_list_model(); result.tid = data.Id.ToString(); result.buyer_memo = data.PayRemark; result.seller_memo = data.SellerRemark; result.seller_flag = ""; result.discount_fee = data.DiscountAmount; result.status = status; result.close_memo = data.CloseReason; result.created = data.OrderDate; result.modified = data.OrderDate; result.pay_time = data.PayDate; result.consign_time = data.ShippingDate; result.end_time = data.FinishDate; result.buyer_uname = data.UserName; result.buyer_email = UserInfo.Email; result.buyer_nick = UserInfo.Nick; result.buyer_area = regionService.GetFullName(UserInfo.RegionId, ""); result.receiver_name = data.ShipTo; result.receiver_state = state; result.receiver_city = city; result.receiver_district = district; result.receiver_town = town; result.receiver_address = data.Address; result.receiver_zip = ""; //无邮编 result.receiver_mobile = data.CellPhone; result.seller_id = data.ShopId.ToString(); result.seller_name = data.ShopName; result.seller_mobile = data.SellerPhone; result.invoice_fee = data.Tax; result.invoice_title = ""; //data.InvoiceTitle; result.payment = data.ProductTotalAmount; result.storeId = "0"; //无门店功能,云商城有 result.orders = new List <trade_itme_model>(); #region 子订单装配 var orderitems = _iOrderService.GetOrderItemsByOrderId(data.Id); foreach (var orderitem in orderitems) { Entities.TypeInfo typeInfo = _iTypeService.GetTypeByProductId(orderitem.ProductId); var productInfo = Himall.Application.ProductManagerApplication.GetProduct(orderitem.ProductId); string colorAlias = (typeInfo == null || string.IsNullOrEmpty(typeInfo.ColorAlias)) ? SpecificationType.Color.ToDescription() : typeInfo.ColorAlias; string sizeAlias = (typeInfo == null || string.IsNullOrEmpty(typeInfo.SizeAlias)) ? SpecificationType.Size.ToDescription() : typeInfo.SizeAlias; string versionAlias = (typeInfo == null || string.IsNullOrEmpty(typeInfo.VersionAlias)) ? SpecificationType.Version.ToDescription() : typeInfo.VersionAlias; if (productInfo != null) { colorAlias = !string.IsNullOrWhiteSpace(productInfo.ColorAlias) ? productInfo.ColorAlias : colorAlias; sizeAlias = !string.IsNullOrWhiteSpace(productInfo.SizeAlias) ? productInfo.SizeAlias : sizeAlias; versionAlias = !string.IsNullOrWhiteSpace(productInfo.VersionAlias) ? productInfo.VersionAlias : versionAlias; } trade_itme_model tradesItem = new trade_itme_model(); tradesItem.sku_id = orderitem.SkuId; //tradesItem.num_id = orderitem.SKU; tradesItem.outer_sku_id = orderitem.SKU; tradesItem.title = orderitem.ProductName; string skuFullName = ""; if (!string.IsNullOrEmpty(orderitem.Color)) { skuFullName = colorAlias + ":" + orderitem.Color + ";"; } //skuFullName = "颜色:" + orderitem.Color + ";"; if (!string.IsNullOrEmpty(orderitem.Size)) { skuFullName = sizeAlias + ":" + orderitem.Size + ";"; } //skuFullName = "尺码:" + orderitem.Size + ";"; if (!string.IsNullOrEmpty(orderitem.Version)) { skuFullName = versionAlias + ":" + orderitem.Version + ";"; } //skuFullName = "版本:" + orderitem.Version + ";"; if (!string.IsNullOrEmpty(skuFullName)) { skuFullName = skuFullName.TrimEnd(';'); } tradesItem.sku_properties_name = skuFullName; tradesItem.price = orderitem.SalePrice; tradesItem.num = (int)orderitem.Quantity; tradesItem.pic_path = OpenAPIHelper.HostUrl + orderitem.ThumbnailsUrl; tradesItem.refund_status = status; result.orders.Add(tradesItem); } #endregion return(result); }
public Models.OrderInfo OrderInfoEntityToModel(Entities.OrderInfo orderInfo) => new MapperConfiguration(cfg => cfg.CreateMap <Entities.OrderInfo, Models.OrderInfo>()) .CreateMapper() .Map <Models.OrderInfo>(orderInfo);
//判断是否给父用户返现 //本过程应该用事务处理 void ParentUserOrderCash(Entities.UserInfo user, Entities.OrderInfo order) { if (order.couponid <= 0) { return; } var dbh = Common.CommonService.Resolve <Common.DB.IDBHelper>(); var coupon = dbh.GetData("select pid from [user.coupon] where id=@0", order.couponid); //判断该代金券是不是别人送的 int pid = ConvertHelper.ToInt32(coupon["pid"]); if (pid <= 0) { return; } //用户不可以自己给自己返现 if (pid == user.id) { return; } //判断该笔订单是否已经返现 object exists_cash_obj = dbh.ExecuteScalar <object>("select top 1 1 from [user.cash] where orderno=@0", order.orderno); bool exists_cash = ConvertHelper.ToInt32(exists_cash_obj) > 0; if (exists_cash) { return; } var config = dbh.GetData("select top 1 [userpercentLimitAmount],[userpercentAmount] from [sys.config] where [enabled]=1"); int userpercentLimitAmount = Convert.ToInt32(config["userpercentLimitAmount"]); int userpercentAmount = Convert.ToInt32(config["userpercentAmount"]); //订单金额小于最小返现金额 if (order.amount < userpercentLimitAmount) { throw new Exception("订单金额小于最小返现金额"); return; } //达到返现最低消费 int percentamt = Convert.ToInt32((decimal)order.amount * ((decimal)userpercentAmount / 100m)); if (percentamt <= 0) { throw new Exception("达到返现最低消费"); return; } var now = DateTime.Now; var conn = dbh.GetConnection(); System.Data.Common.DbTransaction tran = null; try { conn.Open(); tran = conn.BeginTransaction(); var amountCmd = dbh.CreateCommand(); amountCmd.Connection = conn; amountCmd.Transaction = tran; amountCmd.CommandText = "select top 1 amountNow,amountTotal from [user.cashnow] where userid=@userid"; amountCmd.Parameters.Add(dbh.CreateParameter("@userid", pid)); //查询流水 int amountNow = 0; int amountTotal = 0; using (var reader = amountCmd.ExecuteReader()) { if (reader.Read()) { amountNow = reader.GetInt32(0); amountTotal = reader.GetInt32(1); } } int amountNext = amountNow + percentamt; var cmdExe = dbh.CreateCommand(); cmdExe.Transaction = tran; cmdExe.Connection = conn; cmdExe.CommandText = "insert into [user.cash] ([userid],[orderno],[amount],[date],[datets],[amountNow],[amountPrev],[amountTotal],[type],[info]) values (@userid,@orderno,@amount,@date,@datets,@amountNow,@amountPrev,@amountTotal,@type,@info) select @@identity"; cmdExe.Parameters.Add(dbh.CreateParameter("@userid", pid)); cmdExe.Parameters.Add(dbh.CreateParameter("@orderno", order.orderno)); cmdExe.Parameters.Add(dbh.CreateParameter("@amount", percentamt)); cmdExe.Parameters.Add(dbh.CreateParameter("@date", now)); cmdExe.Parameters.Add(dbh.CreateParameter("@datets", Common.Helpers.TimeHelper.GetTimeStamp(now, 10))); //amountNext, amountNow, amountTotal + percentamt cmdExe.Parameters.Add(dbh.CreateParameter("@amountNow", amountNext)); cmdExe.Parameters.Add(dbh.CreateParameter("@amountPrev", amountNow)); cmdExe.Parameters.Add(dbh.CreateParameter("@amountTotal", amountTotal + percentamt)); cmdExe.Parameters.Add(dbh.CreateParameter("@type", "give")); cmdExe.Parameters.Add(dbh.CreateParameter("@info", "好友" + user.name + "到店消费")); object idobj = cmdExe.ExecuteScalar(); int cashid = 0; if (idobj != null && idobj != DBNull.Value) { cashid = Convert.ToInt32(idobj); } var cmdUpdate = dbh.CreateCommand(); cmdUpdate.Transaction = tran; cmdUpdate.Connection = conn; cmdUpdate.CommandText = "update [user.cashnow] set amountNow=@amountNow,amountPrev=@amountPrev,amountTotal=@amountTotal,[date]=@date where userid=@userid"; cmdUpdate.Parameters.Add(dbh.CreateParameter("@userid", pid)); cmdUpdate.Parameters.Add(dbh.CreateParameter("@amountNow", amountNext)); cmdUpdate.Parameters.Add(dbh.CreateParameter("@amountPrev", amountNow)); cmdUpdate.Parameters.Add(dbh.CreateParameter("@amountTotal", amountTotal + percentamt)); cmdUpdate.Parameters.Add(dbh.CreateParameter("@date", now)); int cmdUN = cmdUpdate.ExecuteNonQuery(); if (cmdUN == 0) { var cmdInsert = dbh.CreateCommand(); cmdInsert.Transaction = tran; cmdInsert.Connection = conn; cmdInsert.CommandText = "insert into [user.cashnow] (userid,amountNow,amountPrev,amountTotal,[date]) values (@userid,@amountNow,@amountPrev,@amountTotal,@date)"; cmdInsert.Parameters.Add(dbh.CreateParameter("@userid", pid)); cmdInsert.Parameters.Add(dbh.CreateParameter("@amountNow", amountNext)); cmdInsert.Parameters.Add(dbh.CreateParameter("@amountPrev", amountNow)); cmdInsert.Parameters.Add(dbh.CreateParameter("@amountTotal", amountTotal + percentamt)); cmdInsert.Parameters.Add(dbh.CreateParameter("@date", now)); cmdInsert.ExecuteNonQuery(); } tran.Commit(); new Thread(() => { SendCashMessage(pid, cashid, percentamt, amountNow); }).Start(); } catch (Exception e) { tran.Rollback(); throw e; } finally { if (tran != null) { tran.Dispose(); } if (conn != null) { if (conn.State == System.Data.ConnectionState.Open) { conn.Close(); } conn.Dispose(); } } //var cash = dbh.GetData("select top 1 amountNow,amountTotal from [user.cashnow] where userid=@0", pid); //if (cash != null) //{ // amountNow = Convert.ToInt32(cash["amountNow"]); // amountTotal = Convert.ToInt32(cash["amountTotal"]); //} //var cashid = dbh.ExecuteScalar<int>("insert into [user.cash] ([userid],[orderno],[amount],[date],[datets],[amountNow],[amountPrev],[amountTotal],[type],[info]) values (@0,@1,@2,@3,@4,@5,@6,@7,@8,@9) select @@identity", pid, order.orderno, percentamt, DateTime.Now, Common.Helpers.TimeHelper.GetTimeStamp(DateTime.Now, 10), amountNext, amountNow, amountTotal + percentamt, "give", "好友" + user.name + "到店消费"); //if (dbh.ExecuteNoneQuery("update [user.cashnow] set amountNow=@0,amountPrev=@1,amountTotal=@2,[date]=@3 where userid=@4", amountnext, amountNow, amountTotal + percentamt, DateTime.Now, pid) == 0) //{ // dbh.ExecuteNoneQuery("insert into [user.cashnow] (userid,amountNow,amountPrev,amountTotal,[date]) values (@0,@1,@2,@3,@4)", pid, amountnext, amountNow, amountTotal + percentamt, DateTime.Now); //} }
//判断是否给用户赠送代金券 //本过程应该用事务处理 void GiveCoupon(Entities.OrderInfo order) { var dbh = Common.CommonService.Resolve <Common.DB.IDBHelper>(); //判断是否达到消费金额 var couponRule = dbh.GetData("select top 1 id,amount,daysBegin,daysEnd from [sys.couponRule] where amountMin<=@0 and amountMax>=@0 and [type]='normal' and [status]=1", order.amount); if (couponRule == null) { return; } int ruleid = ConvertHelper.ToInt32(couponRule["id"]); int ruleAmount = ConvertHelper.ToInt32(couponRule["amount"]); int daysBegin = ConvertHelper.ToInt32(couponRule["daysBegin"]); int daysEnd = ConvertHelper.ToInt32(couponRule["daysEnd"]); DateTime now = DateTime.Now; var conn = dbh.GetConnection(); System.Data.Common.DbTransaction tran = null; try { conn.Open(); tran = conn.BeginTransaction(); var cmdExists = dbh.CreateCommand(); cmdExists.Connection = conn; cmdExists.Transaction = tran; cmdExists.CommandText = "select top 1 1 from [user.coupon] where orderno=@orderno"; cmdExists.Parameters.Add(dbh.CreateParameter("@orderno", order.orderno)); object exo = cmdExists.ExecuteScalar(); if (exo != null && exo != DBNull.Value) { tran.Commit(); } else { var cmdInsert = dbh.CreateCommand(); cmdInsert.Connection = conn; cmdInsert.Transaction = tran; cmdInsert.CommandText = "insert into [user.coupon] (userid,ruleid,amount,type,date,dateBegin,dateEnd,status,statusdate,pid,orderno) values (@userid,@ruleid,@amount,@type,@date,@dateBegin,@dateEnd,@status,@statusdate,@pid,@orderno);"; cmdInsert.Parameters.Add(dbh.CreateParameter("@userid", order.userid)); cmdInsert.Parameters.Add(dbh.CreateParameter("@ruleid", ruleid)); cmdInsert.Parameters.Add(dbh.CreateParameter("@amount", ruleAmount)); cmdInsert.Parameters.Add(dbh.CreateParameter("@type", Constant.CouponType.Order.GetHashCode())); cmdInsert.Parameters.Add(dbh.CreateParameter("@date", now)); cmdInsert.Parameters.Add(dbh.CreateParameter("@dateBegin", now.AddDays(daysBegin))); cmdInsert.Parameters.Add(dbh.CreateParameter("@dateEnd", now.AddDays(daysEnd))); cmdInsert.Parameters.Add(dbh.CreateParameter("@status", Constant.CouponStatus.Enabled.GetHashCode())); cmdInsert.Parameters.Add(dbh.CreateParameter("@statusdate", now)); cmdInsert.Parameters.Add(dbh.CreateParameter("@pid", 0)); cmdInsert.Parameters.Add(dbh.CreateParameter("@orderno", order.orderno)); int rnum = cmdInsert.ExecuteNonQuery(); tran.Commit(); } } catch (Exception ex) { tran.Rollback(); throw ex; } finally { if (tran != null) { tran.Dispose(); } if (conn != null) { if (conn.State == System.Data.ConnectionState.Open) { conn.Close(); } conn.Dispose(); } } //判断该订单是否赠送过代金券 //if (Convert.ToInt32(dbh.ExecuteScalar<object>("select top 1 1 from [user.coupon] where orderno=@0", order.orderno)) != 1) //{ // dbh.ExecuteNoneQuery("insert into [user.coupon] (userid,ruleid,amount,type,date,dateBegin,dateEnd,status,statusdate,pid,orderno) values (@0,@1,@2,@3,@4,@5,@6,@7,@8,@9,@10);", order.userid, couponRule["id"], couponRule["amount"], Constant.CouponType.Order.GetHashCode(), DateTime.Now, DateTime.Now, DateTime.Now.AddDays(30), Constant.CouponStatus.Enabled.GetHashCode(), DateTime.Now, 0, order.orderno); //} }
public object GetOrderDetail(long id) { CheckUserLogin(); long shopid = CurrentShopBranch.ShopId; long sbid = CurrentUser.ShopBranchId; var ordser = ServiceProvider.Instance <IOrderService> .Create; Entities.OrderInfo order = ordser.GetOrder(id); if (order == null || order.ShopBranchId != sbid) { throw new HimallApiException("错误的订单编号"); } var bonusService = ServiceProvider.Instance <IShopBonusService> .Create; var orderRefundService = ServiceProvider.Instance <IRefundService> .Create; var shopService = ServiceProvider.Instance <IShopService> .Create; var productService = ServiceProvider.Instance <IProductService> .Create; var vshop = ServiceProvider.Instance <IVShopService> .Create.GetVShopByShopId(order.ShopId); var orderitems = OrderApplication.GetOrderItems(order.Id); bool isCanApply = false; //获取订单商品项数据 var orderDetail = new { ShopName = shopService.GetShop(order.ShopId).ShopName, ShopId = order.ShopId, OrderItems = orderitems.Select(item => { var productinfo = productService.GetProduct(item.ProductId); if (order.OrderStatus == Entities.OrderInfo.OrderOperateStatus.WaitDelivery) { isCanApply = orderRefundService.CanApplyRefund(id, item.Id); } else { isCanApply = orderRefundService.CanApplyRefund(id, item.Id, false); } Entities.TypeInfo typeInfo = ServiceProvider.Instance <ITypeService> .Create.GetType(productinfo.TypeId); string colorAlias = (typeInfo == null || string.IsNullOrEmpty(typeInfo.ColorAlias)) ? SpecificationType.Color.ToDescription() : typeInfo.ColorAlias; string sizeAlias = (typeInfo == null || string.IsNullOrEmpty(typeInfo.SizeAlias)) ? SpecificationType.Size.ToDescription() : typeInfo.SizeAlias; string versionAlias = (typeInfo == null || string.IsNullOrEmpty(typeInfo.VersionAlias)) ? SpecificationType.Version.ToDescription() : typeInfo.VersionAlias; if (productinfo != null) { colorAlias = !string.IsNullOrWhiteSpace(productinfo.ColorAlias) ? productinfo.ColorAlias : colorAlias; sizeAlias = !string.IsNullOrWhiteSpace(productinfo.SizeAlias) ? productinfo.SizeAlias : sizeAlias; versionAlias = !string.IsNullOrWhiteSpace(productinfo.VersionAlias) ? productinfo.VersionAlias : versionAlias; } return(new { ItemId = item.Id, ProductId = item.ProductId, ProductName = item.ProductName, Count = item.Quantity, Price = item.SalePrice, //ProductImage = "http://" + Url.Request.RequestUri.Host + productService.GetProduct(item.ProductId).GetImage(ProductInfo.ImageSize.Size_100), ProductImage = Core.HimallIO.GetRomoteProductSizeImage(productService.GetProduct(item.ProductId).RelativePath, 1, (int)Himall.CommonModel.ImageSize.Size_100), color = item.Color, size = item.Size, version = item.Version, IsCanRefund = isCanApply, ColorAlias = colorAlias, SizeAlias = sizeAlias, VersionAlias = versionAlias }); }) }; VirtualProductInfo virtualProductInfo = null; List <dynamic> codes = null; List <dynamic> virtualItems = null; int validityType = 0; string startDate = string.Empty, endDate = string.Empty; if (order.OrderType == OrderInfo.OrderTypes.Virtual && orderDetail.OrderItems != null) { virtualProductInfo = ProductManagerApplication.GetVirtualProductInfoByProductId(orderDetail.OrderItems.FirstOrDefault().ProductId); if (virtualProductInfo != null) { validityType = virtualProductInfo.ValidityType ? 1 : 0; if (validityType == 1) { startDate = virtualProductInfo.StartDate.Value.ToString("yyyy-MM-dd"); endDate = virtualProductInfo.EndDate.Value.ToString("yyyy-MM-dd"); } } var verificationCodes = OrderApplication.GetOrderVerificationCodeInfosByOrderIds(new List <long>() { order.Id }); if (verificationCodes != null) { verificationCodes.ForEach(a => { if (a.Status == OrderInfo.VerificationCodeStatus.WaitVerification || a.Status == OrderInfo.VerificationCodeStatus.Refund) { a.VerificationCode = System.Text.RegularExpressions.Regex.Replace(a.VerificationCode, "(\\d{4})\\d{4}(\\d{4})", "$1****$2"); } a.VerificationCode = System.Text.RegularExpressions.Regex.Replace(a.VerificationCode, @"(\d{4})", "$1 "); }); } codes = verificationCodes.Select(p => { return(new { VerificationCode = p.VerificationCode, Status = p.Status, StatusText = p.Status.ToDescription() }); }).ToList <dynamic>(); var virtualOrderItems = OrderApplication.GetVirtualOrderItemInfosByOrderId(order.Id); virtualItems = virtualOrderItems.Select(p => { return(new { VirtualProductItemName = p.VirtualProductItemName, VirtualProductItemType = p.VirtualProductItemType, Content = ReplaceImage(p.Content, p.VirtualProductItemType) }); }).ToList <dynamic>(); } var orderModel = new { Id = order.Id, OrderType = order.OrderType, OrderTypeName = order.OrderType.ToDescription(), Status = order.OrderStatus.ToDescription(), ShipTo = order.ShipTo, Phone = order.CellPhone, Address = order.RegionFullName + " " + order.Address, HasExpressStatus = !string.IsNullOrWhiteSpace(order.ShipOrderNumber), ExpressCompanyName = order.ExpressCompanyName, Freight = order.Freight, Tax = order.Tax, IntegralDiscount = order.IntegralDiscount, RealTotalAmount = order.OrderTotalAmount - order.RefundTotalAmount, CapitalAmount = order.CapitalAmount, RefundTotalAmount = order.RefundTotalAmount, ProductTotalAmount = order.ProductTotalAmount, OrderDate = order.OrderDate.ToString("yyyy-MM-dd HH:mm:ss"), ShopName = order.ShopName, ShopBranchName = CurrentShopBranch.ShopBranchName, VShopId = vshop == null ? 0 : vshop.Id, commentCount = OrderApplication.GetOrderCommentCount(order.Id), ShopId = order.ShopId, orderStatus = (int)order.OrderStatus, //Invoice = order.InvoiceType.ToDescription(), //InvoiceValue = (int)order.InvoiceType, //InvoiceContext = order.InvoiceContext, //InvoiceTitle = order.InvoiceTitle, PaymentType = order.PaymentType.ToDescription(), PaymentTypeValue = (int)order.PaymentType, PaymentTypeDesc = order.PaymentTypeDesc, OrderPayAmount = order.OrderPayAmount, PaymentTypeName = PaymentApplication.GetPaymentTypeDescById(order.PaymentTypeGateway) ?? order.PaymentTypeName, FullDiscount = order.FullDiscount, DiscountAmount = order.DiscountAmount, OrderRemarks = order.OrderRemarks, DeliveryType = order.DeliveryType, //InvoiceCode = order.InvoiceCode, OrderInvoice = OrderApplication.GetOrderInvoiceInfo(order.Id) }; return(new { success = true, Order = orderModel, OrderItem = orderDetail.OrderItems, VerificationCodes = codes, VirtualOrderItems = virtualItems, StartDate = startDate, EndDate = endDate, ValidityType = validityType }); }