/// <summary> /// 验证收货地址是否合法 /// </summary> /// <param name="model">收货地址实体</param> /// <param name="message">消息</param> /// <returns></returns> /// <remarks>2013-12-2 黄波 创建</remarks> public bool ValidReceiveAddress(Model.CrReceiveAddress model, out string message) { message = ""; if (!VHelper.ValidatorRule(new Rule_NotAllowNull(model.Name, "必须添加收货人姓名!")).IsPass) { message = "必须添加收货人姓名!"; return(false); } if (!VHelper.ValidatorRule(new Rule_NotAllowNull(model.StreetAddress, "必须添加收货地址!")).IsPass) { message = "必须添加收货地址!"; return(false); } if (!VHelper.ValidatorRule(new Rule_Mobile(model.MobilePhoneNumber)).IsPass&& !VHelper.ValidatorRule(new Rule_Telephone(model.PhoneNumber)).IsPass) { message = "手机或固定号码必须填写一项!"; return(false); } if (Hyt.BLL.Basic.BasicAreaBo.Instance.GetArea(model.AreaSysNo) == null) { message = "请选择正确的所在地区!"; return(false); } return(true); }
/// <summary> /// 修改会员收货地址 /// </summary> /// <param name="address">收货地址实体</param> /// <returns>影响行数</returns> /// <remarks>2013-07-02 余勇 创建</remarks> public override int UpdateReceiveAddress(Model.CrReceiveAddress address) { //执行修改 return(Context.Update <Model.CrReceiveAddress>("CrReceiveAddress", address) .AutoMap(c => c.SysNo) .Where("SysNo", address.SysNo) .Execute()); }
/// <summary> /// 添加订单 /// </summary> /// <param name="stream">订单数据(json格式)</param> /// <returns></returns> /// <remarks>2016-9-7 杨浩 创建</remarks> public Result <string> AddOrder(Stream stream) { int exceptionPoint = 0; string data = ""; int dealerSysNo = 329; var result = new Result <string>() { Status = true, StatusCode = 0 }; try { var reader = new StreamReader(stream); data = reader.ReadToEnd(); exceptionPoint = 1; var orderInfo = Hyt.Util.Serialization.JsonUtil.ToObject <Order>(data); exceptionPoint = 2; var orderAssociationInfo = Hyt.BLL.Stores.DsOrderAssociationBo.Instance.GetOrderAssociationInfo(dealerSysNo, orderInfo.OrderNo); exceptionPoint = 3; if (orderAssociationInfo != null) { result.Status = false; result.Message = "订单已存在"; result.StatusCode = 1; return(result); } if (orderInfo.OnlinePayment == null) { result.Status = false; result.Message = "没有支付记录"; result.StatusCode = 2; return(result); } var onlinePayments = Hyt.BLL.Finance.FinanceBo.Instance.GetOnlinePaymentByVoucherNo(orderInfo.OnlinePayment.PaymentTypeSysNo, orderInfo.OnlinePayment.VoucherNo); if (onlinePayments != null) { result.Status = false; result.Message = "订单中的支付单已存在"; result.StatusCode = 3; return(result); } #region 订单信息 SoOrder so = new SoOrder(); so.OrderNo = BLL.Basic.ReceiptNumberBo.Instance.GetOrderNo(); so.OrderSource = (int)Hyt.Model.WorkflowStatus.OrderStatus.销售单来源.方商城; so.DealerSysNo = dealerSysNo; so.AuditorDate = (DateTime)SqlDateTime.MinValue; so.AuditorSysNo = 0; so.CancelDate = (DateTime)SqlDateTime.MinValue; so.CashPay = orderInfo.CashPay; so.CBLogisticsSendStatus = orderInfo.CBLogisticsSendStatus; so.CoinPay = orderInfo.CoinPay; so.ContactBeforeDelivery = orderInfo.ContactBeforeDelivery; so.CouponAmount = orderInfo.CouponAmount; so.CreateDate = DateTime.Now; so.CustomerMessage = orderInfo.CustomerMessage; so.CustomsPayStatus = orderInfo.CustomsPayStatus; so.CustomsStatus = orderInfo.CustomsStatus; so.DefaultWarehouseSysNo = 0; so.DeliveryRemarks = orderInfo.DeliveryRemarks; so.DeliveryTime = orderInfo.DeliveryTime; so.DeliveryTypeSysNo = orderInfo.DeliveryTypeSysNo; so.FreightAmount = orderInfo.FreightAmount; so.FreightChangeAmount = orderInfo.FreightChangeAmount; so.FreightDiscountAmount = orderInfo.FreightDiscountAmount; so.GZJCStatus = orderInfo.GZJCStatus; so.ImgFlag = orderInfo.ImgFlag; so.InternalRemarks = orderInfo.InternalRemarks; so.InvoiceSysNo = orderInfo.InvoiceSysNo; so.IsHiddenToCustomer = orderInfo.IsHiddenToCustomer; so.LastUpdateDate = (DateTime)SqlDateTime.MinValue; so.NsStatus = 0; so.OperatFee = 0; so.OrderAmount = orderInfo.OrderAmount; so.OrderCreatorSysNo = 0; so.OrderDiscountAmount = orderInfo.OrderDiscountAmount; so.PayStatus = orderInfo.PayStatus; so.PayTypeSysNo = orderInfo.PayTypeSysNo; so.ProductAmount = orderInfo.ProductAmount; so.ProductChangeAmount = orderInfo.ProductChangeAmount; so.ProductDiscountAmount = orderInfo.ProductDiscountAmount; so.RebateRtio = orderInfo.RebateRtio; so.Remarks = orderInfo.Remarks; so.SalesSysNo = orderInfo.SalesSysNo; so.SalesType = orderInfo.SalesType; so.SendStatus = orderInfo.SendStatus; so.Stamp = orderInfo.Stamp; so.Status = 10; so.TaxFee = orderInfo.TaxFee; so.UsedPromotions = ""; #endregion #region 订单明细 var soItems = new List <SoOrderItem>(); var soItem = new SoOrderItem(); var pager = new Pager <PdProduct>() { PageSize = 999999, CurrentPage = 1 }; pager = BLL.Product.PdProductBo.Instance.GetPdProductList(pager); var dealerInfo = BLL.Stores.StoresBo.Instance.GetStoreById(dealerSysNo); var dealerLevelInfo = BLL.Distribution.DsDealerLevelBo.Instance.GetDealerLevelByDealerSysNo(dealerInfo.LevelSysNo); //订单总价 decimal orderTotalPrice = orderInfo.OrderItemList.Sum(x => x.SalesUnitPrice * x.Quantity); if (orderTotalPrice != orderInfo.CashPay) { result.Status = false; result.Message = "订单明细中的商品总价和订单的支付金额不一致"; result.StatusCode = 4; return(result); } foreach (var item in orderInfo.OrderItemList) { var productInfo = pager.Rows.Where(x => x.ErpCode == item.ProductCode).FirstOrDefault(); if (productInfo == null) { result.Status = false; result.Message = "商品编码【" + item.ProductCode + "】在系统中不存在"; result.StatusCode = 5; return(result); } //价格下限 decimal lower = productInfo.TradePrice * (100 - dealerLevelInfo.SalePriceLower) * 0.01m; //价格上限 decimal upper = productInfo.TradePrice * (100 + dealerLevelInfo.SalePriceUpper) * 0.01m; //检查销售价格下限 if (lower > item.SalesUnitPrice) { result.Status = false; result.Message = "商品编码【" + item.ProductCode + "】的销售价不能低于¥" + lower; result.StatusCode = 6; return(result); } //检查销售价格上限 //if (upper<item.SalesUnitPrice) //{ // result.Status = false; // result.Message = "商品编码【" + item.ProductCode + "】的销售价不能高于¥" + upper; // result.StatusCode = 7; // return result; //} //返点=((销售价-批发价)*数量)*操作费 soItem.Catle = ((productInfo.TradePrice - item.SalesUnitPrice) * item.Quantity) * (1 - (dealerLevelInfo.OperatFee * 0.001m)); soItem.Catle = soItem.Catle < 0 ? 0 : soItem.Catle; soItem.ChangeAmount = 0; soItem.DiscountAmount = 0; soItem.GroupCode = ""; soItem.GroupName = ""; soItem.OriginalPrice = item.OriginalPrice; soItem.OriginalSalesUnitPrice = 0; soItem.ProductName = item.ProductName; soItem.ProductSalesType = 10; soItem.ProductSalesTypeSysNo = item.ProductSalesTypeSysNo; soItem.ProductSysNo = productInfo.SysNo; soItem.Quantity = item.Quantity; soItem.RealStockOutQuantity = 0; soItem.RebatesStatus = 0; soItem.SalesAmount = item.SalesAmount; soItem.SalesUnitPrice = item.SalesUnitPrice; soItem.UnitCatle = 0; soItem.UsedPromotions = ""; soItems.Add(soItem); } #endregion Hyt.Model.CrCustomer cr = null; var isNewUser = true; string strPassword = "******";//初始密码 var options = new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted, Timeout = TransactionManager.DefaultTimeout }; #region 会员 using (var trancustomer = new System.Transactions.TransactionScope(TransactionScopeOption.Required, options))//会员创建事物 { cr = Hyt.BLL.CRM.CrCustomerBo.Instance.GetCrCustomer(orderInfo.Customer.Account); exceptionPoint = 4; //var customerlst = Hyt.BLL.Order.SoOrderBo.Instance.SearchCustomer(); if (cr != null) { isNewUser = false; } else //创建会员 { cr = new Model.CrCustomer() { Account = orderInfo.Customer.Account, MobilePhoneNumber = orderInfo.Customer.MobilePhoneNumber, AreaSysNo = orderInfo.Customer.AreaSysNo, Gender = (int)Hyt.Model.WorkflowStatus.CustomerStatus.性别.保密, EmailStatus = (int)Hyt.Model.WorkflowStatus.CustomerStatus.邮箱状态.未验证, LevelSysNo = Hyt.Model.SystemPredefined.CustomerLevel.初级, Name = orderInfo.Customer.Name, NickName = orderInfo.Customer.NickName, RegisterDate = DateTime.Now, Password = strPassword, // Hyt.Util.EncryptionUtil.EncryptWithMd5AndSalt(strPassword), 余勇修改 2014-09-12 Status = (int)Hyt.Model.WorkflowStatus.CustomerStatus.会员状态.效, MobilePhoneStatus = (int)Hyt.Model.WorkflowStatus.CustomerStatus.手机状态.未验证, RegisterSource = (int)Hyt.Model.WorkflowStatus.CustomerStatus.注册来源.方商城, RegisterSourceSysNo = dealerSysNo.ToString(), StreetAddress = orderInfo.ReceiveAddress.StreetAddress, IsReceiveShortMessage = (int)CustomerStatus.是否接收短信.是, IsReceiveEmail = (int)CustomerStatus.是否接收邮件.是, LastLoginDate = DateTime.Now, Birthday = (DateTime)System.Data.SqlTypes.SqlDateTime.MinValue, CreatedDate = DateTime.Now, DealerSysNo = dealerSysNo, }; Hyt.Model.CrReceiveAddress crr = new Model.CrReceiveAddress() { AreaSysNo = orderInfo.ReceiveAddress.AreaSysNo, Name = orderInfo.ReceiveAddress.Name, MobilePhoneNumber = orderInfo.ReceiveAddress.MobilePhoneNumber, StreetAddress = orderInfo.ReceiveAddress.StreetAddress, IsDefault = 1 }; Hyt.BLL.Order.SoOrderBo.Instance.CreateCustomer(cr, crr); exceptionPoint = 5; } trancustomer.Complete();//会员创建事物 } if (cr == null || cr.SysNo < 1) { result.Status = false; result.Message = "会员信息读取失败"; return(result); } exceptionPoint = 6; #endregion #region 数据提交 so.CustomerSysNo = cr.SysNo; so.LevelSysNo = cr.LevelSysNo; so.PayTypeSysNo = 12;//易宝支付 using (var tran = new System.Transactions.TransactionScope(TransactionScopeOption.Required, options)) { var r = Hyt.BLL.Order.SoOrderBo.Instance.ImportSoOrder(so, orderInfo.ReceiveAddress, soItems.ToArray(), "系统", orderInfo.OnlinePayment, ref exceptionPoint); exceptionPoint = 7; if (r.StatusCode > 0) { var model = new DsOrderAssociation() { DealerOrderNo = orderInfo.OrderNo, DealerSysNo = dealerSysNo, OrderSysNo = r.StatusCode, }; Hyt.BLL.Stores.DsOrderAssociationBo.Instance.Add(model); exceptionPoint = 8; } exceptionPoint = 9; tran.Complete(); } #endregion } catch (Exception ex) { result.Status = false; result.Message = "接口异常"; result.StatusCode = -1; BLL.Log.LocalLogBo.Instance.Write(ex.Message + "----->exceptionPoint =" + exceptionPoint, "AddOrderExceptionLog"); } return(result); }
/// <summary> /// 添加会员收货地址 /// </summary> /// <param name="address">收货地址实体</param> /// <returns>收货地址系统编号</returns> /// <remarks>2013-07-02 余勇 创建</remarks> public abstract int InsertReceiveAddress(Model.CrReceiveAddress address);
/// <summary> /// 修改会员收货地址 /// </summary> /// <param name="address">收货地址实体</param> /// <returns>影响行数</returns> /// <remarks>2013-07-02 余勇 创建</remarks> public abstract int UpdateReceiveAddress(Model.CrReceiveAddress address);
/// <summary> /// 添加会员收货地址 /// </summary> /// <param name="address">收货地址实体</param> /// <returns>收货地址系统编号</returns> /// <remarks>2013-07-02 余勇 创建</remarks> public override int InsertReceiveAddress(Model.CrReceiveAddress address) { return(Context.Insert <Model.CrReceiveAddress>("CrReceiveAddress", address) .AutoMap(x => x.SysNo) .ExecuteReturnLastId <int>("SysNo")); }