/// <summary> /// 获取配送方式 /// </summary> /// <param name="channelId"></param> /// <param name="regionId"></param> /// <param name="payGroupId"></param> /// <returns></returns> public static MResultList <ItemLogistics> GetDeliverList(int channelId, int regionId, int payGroupId) { var result = new MResultList <ItemLogistics>(true); try { var basedata = DALFactory.BaseData(); var list = basedata.GetDeliverList(channelId, regionId, payGroupId); list.ForEach(item => { try { result.list.Add(new ItemLogistics { id = item.intDeliverID, name = item.vchDeliverName, remark = item.vchDeliverDesc }); } catch { } }); result.status = MResultStatus.Success; } catch (Exception ex) { result.status = MResultStatus.ExecutionError; result.msg = "获取配送方式列表异常!"; } return(result); }
/// <summary> /// 获取区域列表数据 /// </summary> /// <param name="parentId"></param> /// <returns></returns> public static MResultList <ItemRegion> GetRegionList(int parentId) { var result = new MResultList <ItemRegion>(true); try { var basedata = DALFactory.BaseData(); var list = basedata.GetRegionList(parentId); list.ForEach(item => { try { var regionType = string.Empty; switch (item.intRegionType) { case 1: regionType = "国家"; break; case 2: regionType = "省/直辖市"; break; case 3: regionType = "地区"; break; case 4: regionType = "区县"; break; default: regionType = item.intRegionType + ""; break; } result.list.Add(new ItemRegion() { id = item.intRegionID, name = item.vchRegionName, zip = item.vchPostCode, code = item.vchShortSpell, pid = item.intFRegionID, type = regionType }); } catch { } }); result.status = MResultStatus.Success; } catch (Exception) { result.status = MResultStatus.ExceptionError; result.msg = "获取区域列表数据异常"; } return(result); }
/// <summary> /// 获取支付列表 /// </summary> /// <param name="sType"></param> /// <param name="paygroupId"></param> /// <returns></returns> public static MResultList <ItemPay> GetPayList(SystemType sType, int paygroupId) { var result = new MResultList <ItemPay>(true); try { var baseDataDal = DALFactory.BaseData(); List <Base_Pay_Type> payList = baseDataDal.GetPayList(sType, paygroupId); if (payList != null && payList.Any()) { payList.ForEach(item => { try { var payItem = new ItemPay { payid = item.intPayID, payname = item.vchPayName, paytype = item.intPayGroup, icon = string.IsNullOrWhiteSpace(item.vchPicAddr) ? "" : "http://muyingzhijia.com/" + item.vchPicAddr, payurl = item.vchPayURL, remark = item.vchPayDesc }; result.list.Add(payItem); } catch { } }); } if (paygroupId == 0) { result.data = "货到付款(送货上门后再付款,支持现金或POS机刷卡)"; } else if (paygroupId == 1) { result.data = "在线支付(支持绝大数银行借记卡及部分银行信息卡)"; } else if (paygroupId == 3) { result.data = "支付宝(手机)支付(支持支付宝)"; } result.status = MResultStatus.Success; } catch (Exception) { result.status = MResultStatus.ExceptionError; result.msg = "获取支付列表 异常"; } return(result); }
/// <summary> /// 获取支付方式 /// </summary> /// <param name="channelId"></param> /// <param name="regionId"> </param> /// <returns></returns> public static MResultList <ItemPay> GetPaymentList(int channelId, int regionId) { var result = new MResultList <ItemPay>(true); try { var basedata = DALFactory.BaseData(); result.list = basedata.GetPaymentList(channelId, regionId); result.status = MResultStatus.Success; } catch (Exception ex) { result.status = MResultStatus.ExceptionError; result.msg = "获取支付方式列表异常!"; } return(result); }
/// <summary> /// 获取订单信息 /// </summary> /// <param name="sid"></param> /// <param name="uid"></param> /// <param name="userId"></param> /// <param name="orderCode"></param> /// <returns></returns> public static MResult <ItemOrderDetails> GetOrderinfo(int sid, string uid, int userId, string orderCode) { var result = new MResult <ItemOrderDetails>(); try { #region 参数判断 if (userId <= 0) { result.status = MResultStatus.ParamsError; result.msg = "用户标识错误!"; } if (string.IsNullOrEmpty(orderCode)) { result.status = MResultStatus.ParamsError; result.msg = "订单标识错误!"; } #endregion var orderDal = DALFactory.Order(); var baseDataDal = DALFactory.BaseData(); var orderInfo = orderDal.GetOrderInfo(userId, orderCode); if (orderInfo != null && orderInfo.OrderNo > 0) { orderInfo.PayType = orderInfo.PayId == 0 ? "货到付款" : "在线支付"; orderInfo.InvoiceType = (int)(string.IsNullOrEmpty(orderInfo.InvoiceTitle) ? Invoice.TitleType.NoNeed : orderInfo.InvoiceTitle.StartsWith("个人") ? Invoice.TitleType.Personal : Invoice.TitleType.Company); orderInfo.PayStatus = orderInfo.PayStatusId == 2 ? "已付款" : "未付款"; #region 订单状态 string orderStatus; switch (orderInfo.OrderStatusId) { case 0: orderStatus = "付款未审核"; break; case 1: orderStatus = "未确定"; break; case 4: orderStatus = "客户已确认"; break; case 5: orderStatus = "生成配货单"; break; case 7: orderStatus = "已出库"; break; case 20: orderStatus = "完成"; break; default: orderStatus = "未知"; break; } #endregion orderInfo.OrderStatus = orderStatus; var invoiceCategory = MCvHelper.To <int>(orderInfo.InvoiceCategory, 0); result.info = new ItemOrderDetails { oid = orderInfo.OrderNo, ocode = orderInfo.OrderCode, status = orderInfo.OrderStatus, addr = orderInfo.AddressInfo, province = orderInfo.Provinces, city = orderInfo.City, county = orderInfo.County, contact_name = orderInfo.Consignee, invoicecategory = invoiceCategory, invoicetitle = orderInfo.InvoiceTitle, phone = orderInfo.Phone, titletype = orderInfo.InvoiceType, mobile = orderInfo.Mobile, paytype = orderInfo.PayType, paytypeid = orderInfo.PayId, statusid = orderInfo.OrderStatusId, zip = orderInfo.Zip, paystatus = orderInfo.PayStatus, paystatusid = orderInfo.PayStatusId, deliverytype = orderInfo.DeliveryType }; result.status = MResultStatus.Success; } else { result.status = MResultStatus.Undefined; result.msg = "没有数据!"; } } catch (Exception ex) { result.status = MResultStatus.ExecutionError; MLogManager.Error(MLogGroup.Order.获取订单信息, null, "获取订单信息", ex); } return(result); }
/// <summary> /// 创建订单 /// </summary> /// <param name="guid"></param> /// <param name="channelId"></param> /// <param name="uid"></param> /// <param name="userId"></param> /// <param name="orderEntity"></param> /// <returns></returns> public static MResult <ItemOrder> CreateOrder(string guid, int channelId, string uid, int userId, OrderEntity orderEntity) { var result = new MResult <ItemOrder>(true); try { var memberDal = DALFactory.Member(); var baseDataDal = DALFactory.BaseData(); var shoppingCartDal = DALFactory.ShoppingCartDal(); var orderDal = DALFactory.Order(); var payId = MCvHelper.To <int>(orderEntity.payid, -1); #region 验证数据 #region 用户是否登录 if (userId <= 0) { result.msg = "请登录后再操作!"; result.status = MResultStatus.ParamsError; return(result); } #endregion #region 收货地址 if (orderEntity.addressid <= 0) { result.msg = "请选择收货地址!"; result.status = MResultStatus.ParamsError; return(result); } #endregion #region 支付方式 if (payId < 0) { result.msg = "请选择支付方式!"; result.status = MResultStatus.ParamsError; return(result); } #endregion #region 配送方式 if (orderEntity.logisticsid <= 0) { result.msg = "请选择配送方式!"; result.status = MResultStatus.ParamsError; return(result); } #endregion #region 发票信息是否完整 if (orderEntity.titletype == null) { result.msg = "请选择发票类型!"; result.status = MResultStatus.ParamsError; return(result); } if (orderEntity.titletype != Entity.Enum.Invoice.TitleType.NoNeed) { if (orderEntity.invoicecategory == null) { result.msg = "请选择发票分类!"; result.status = MResultStatus.ParamsError; return(result); } if (orderEntity.titletype == Entity.Enum.Invoice.TitleType.Company && string.IsNullOrEmpty(orderEntity.invoicetitle)) { result.msg = "请填写发票抬头!"; result.status = MResultStatus.ParamsError; return(result); } } #endregion #endregion var memberInfo = memberDal.GetMemberInfo(uid); #region 验证用户是否存在 if (memberInfo == null || memberInfo.membNo <= 0) { result.msg = "该用户不存在!"; result.status = MResultStatus.ParamsError; return(result); } #endregion //购物车商品数据 List <ShoppingCartEntity> norMalShoppingCartList = null; #region 判断购物车是否有商品 var shoppingCartList = shoppingCartDal.GetShoppingCartProductInfosByUserIDGuidChannelID(userId, guid, channelId); if (shoppingCartList == null || !shoppingCartList.Any()) { result.msg = "购物车没有商品!"; result.status = MResultStatus.LogicError; return(result); } norMalShoppingCartList = (from a in shoppingCartList where a.intIsDelete == 0 select a).ToList(); if (!norMalShoppingCartList.Any()) { result.msg = "购物车没有商品!"; result.status = MResultStatus.LogicError; return(result); } #endregion #region 该用户是否是黑名单 var isExistBacklist = memberDal.CheckUserIdInBackList(userId); if (isExistBacklist) { result.msg = "您的用户出现异常,请联系我们的客服人员进行解决!"; result.status = MResultStatus.LogicError; return(result); } #endregion //收货地址信息 var addressInfo = memberDal.GetMemberAddressInfo(orderEntity.addressid); #region 验证收货地址 #region 是否存在 if (addressInfo == null || addressInfo.intAddressID <= 0 || addressInfo.intCityID <= 0 && payId <= 0 && orderEntity.logisticsid <= 0) { result.msg = "收货地址信息不正确!"; result.status = MResultStatus.ParamsError; return(result); } #endregion #endregion //配送方式 var deliverInfo = baseDataDal.GetDeliverInfo(orderEntity.logisticsid); #region 验证配送方式 if (deliverInfo == null || deliverInfo.intDeliverID == 0) { result.msg = "验证配送方式信息不正确!"; result.status = MResultStatus.ParamsError; return(result); } #endregion #region 检查商品销售区域 var checkGoodsSaleAreaState = CheckGoodsSaleArea(norMalShoppingCartList, userId, MCvHelper.To <int>(addressInfo.intCityID), channelId); if (checkGoodsSaleAreaState.Any()) { result.msg = "有部分商品不在您选择的区域内销售!"; result.status = MResultStatus.LogicError; result.data = String.Join(",", checkGoodsSaleAreaState.ToArray()); return(result); } #endregion var summaryOrderInfo = SummaryOrderInfo(norMalShoppingCartList, channelId, userId, payId, orderEntity.logisticsid, MCvHelper.To <int>(addressInfo.intCityID)); #region 开始创建订单 if (summaryOrderInfo != null && summaryOrderInfo.TotalGoodsFee > 0) { var order = new Sale_Order(); #region 订单主表信息 order.dtCreateDate = DateTime.Now; order.dtSendDate = CheckDateTime(orderEntity.posttimetype, orderEntity.logisticsid); //处理送货日期 order.intChannel = channelId; order.intCreaterID = 555; order.intDeliverID = orderEntity.logisticsid; order.intLogisticsID = 21; order.intOrderState = 1; order.intOrderType = 1; order.intPayID = payId; order.intPayState = 0; order.intStockID = 100; order.intTotalStars = summaryOrderInfo.TotalScore; order.intUserID = userId; order.numAddAmount = 0; order.numCarriage = summaryOrderInfo.TotalFreight; order.numChange = 0; order.numGoodsAmount = summaryOrderInfo.TotalGoodsFee; order.numCouponAmount = summaryOrderInfo.TotalDiscountFee; order.numReceAmount = summaryOrderInfo.TotalOrderFee; order.numWeight = summaryOrderInfo.TotalWeight; order.vchSendTime = order.dtSendDate.ToShortTimeString(); order.vchUserCode = memberInfo.userCode; order.vchOrderCode = GetOrderCode(); #endregion #region 配送信息 var deliver = new Sale_Order_Deliver(); deliver.intAddressID = addressInfo.intAddressID; deliver.intCityID = MCvHelper.To <int>(addressInfo.intCityID, 0); deliver.vchCityName = addressInfo.vchCityName; deliver.vchConsignee = addressInfo.vchConsignee; deliver.intCountyID = MCvHelper.To <int>(addressInfo.intCountyID, 0); deliver.vchCountyName = addressInfo.vchCountyName; deliver.vchDetailAddr = addressInfo.vchStateName + "," + addressInfo.vchCityName + "," + addressInfo.vchCountyName + "," + addressInfo.vchDetailAddr; deliver.vchHausnummer = addressInfo.vchHausnummer; deliver.vchMobile = addressInfo.vchMobile; deliver.vchPhone = addressInfo.vchPhone; deliver.vchPostCode = addressInfo.vchPostCode; deliver.vchRoadName = addressInfo.vchRoadName; deliver.intStateID = MCvHelper.To <int>(addressInfo.intStateID, 0); deliver.vchStateName = addressInfo.vchStateName; deliver.vchUserMemo = orderEntity.remark; deliver.vchOrderCode = order.vchOrderCode; #endregion #region 发票信息 var invoice = new Sale_Order_Invoice(); if (orderEntity.titletype != null && orderEntity.titletype != Invoice.TitleType.NoNeed) { if (orderEntity.titletype == Invoice.TitleType.Personal) { invoice.vchInvoicTitile = "个人"; } else if (orderEntity.titletype == Invoice.TitleType.Company) { invoice.vchInvoicTitile = orderEntity.invoicetitle; } invoice.intInvoiceType = (int)orderEntity.invoicecategory; invoice.intInvoiceKind = 1; invoice.numAmount = order.numReceAmount; invoice.dtBillingTime = DateTime.Now; invoice.dtCreateDate = DateTime.Now; invoice.intIsBilling = 1; invoice.intIsDetail = 0; invoice.vchOrderCode = order.vchOrderCode; invoice.vchPhone = addressInfo.vchPhone; invoice.intUserID = userId; } #endregion #region 保存订单 string message; result.info.oid = orderDal.SaveWebOrder(order, invoice, deliver, null, userId, guid, channelId, MCvHelper.To <int>(memberInfo.clusterId, 0), -1, out message); if (result.info.oid > 0) { #region 清空购物车 shoppingCartDal.ClearShoppingCart(userId); #endregion #region 步订单信息到 BBHome orderDal.SyncOrderInfoToBBHome(order.vchOrderCode); #endregion result.status = MResultStatus.Success; var payType = string.Empty; if (payId == 0) { payType = "货到付款"; } else if (payId == 1) { payType = "在线支付"; } var postTimetype = string.Empty; switch (orderEntity.posttimetype) { case 1: postTimetype = "工作日送货"; break; case 2: postTimetype = "工作日、双休日均可送货"; break; case 3: postTimetype = "只双休日送货"; break; } result.info.ocode = order.vchOrderCode; result.info.paytype = payType; result.info.logisticstype = deliverInfo.vchDeliverName; result.info.total_fee = order.numGoodsAmount; result.info.total_freight = order.numCarriage; result.info.total_order = order.numReceAmount; result.info.posttimetype = postTimetype; } #endregion } #endregion } catch (Exception ex) { result.status = MResultStatus.ExecutionError; MLogManager.Error(MLogGroup.Order.创建订单, null, "", ex); } return(result); }
/// <summary> /// 获取运费总额 /// </summary> /// <param name="channelId"></param> /// <param name="userId"> </param> /// <param name="cityId"></param> /// <param name="payId"></param> /// <param name="deliverId"> </param> /// <param name="totalWeight"></param> /// <param name="orderTotal"> </param> /// <returns></returns> public static MResult <decimal> GetLogisticsInfo(int channelId, int userId, int cityId, int payId, int deliverId, long totalWeight, decimal orderTotal) { var result = new MResult <decimal>(true); try { var baseDataDal = DALFactory.BaseData(); var deliveryInfo = baseDataDal.GetDeliverInfo(deliverId); if (MCvHelper.To <byte>(deliveryInfo.intIsCarriage, 0) == 1) { //上门自提,先不收运费 if (deliverId == 8) { result.info = 0; } else { //否则根据城市id 计算运费 result.info = baseDataDal.GetCarriage(totalWeight, deliverId, cityId); #region 中通满100元江浙免运费 /* * if (orderTotal >= 100 && deliverId == 3) * { * List<City> clist = CityArea.GetCities(10); * clist.AddRange(CityArea.GetCities(11)); * * if (clist.Any(c => c.RegionId == cityId)) * { * result.info = 0; * } * } */ #endregion } } else { var memberDal = DALFactory.Member(); var memberInfo = memberDal.GetMemberInfo(userId.ToString()); //选择不需要运费的送货方式则50元起送,不足50元则加5元运费 if (deliverId == 8) { result.info = 0; } if (orderTotal < 50 && deliverId == 1) { result.info = 5; } if (orderTotal < 100 && deliverId == 6) { result.info = 5; } //月亮太阳会员不收运费 if (memberInfo != null && (memberInfo.clusterId == 3 || memberInfo.clusterId == 4 || memberInfo.clusterId == 17 || memberInfo.clusterId == 18)) { result.info = 0; } } } catch (Exception ex) { result.status = MResultStatus.ExceptionError; result.msg = "获取运费总额 错误!"; } return(result); }
/// <summary> /// 获取全部区域列表数据 /// </summary> /// <returns></returns> public static MResult <List <ItemRegion>[]> GetAllRegionList() { var result = new MResult <List <ItemRegion>[]>(); try { var provinceList = new List <ItemRegion>(); var cityList = new List <ItemRegion>(); var countyList = new List <ItemRegion>(); var basedata = DALFactory.BaseData(); var list = basedata.GetAllRegionList(0); #region 处理地区数据 转换 list.ForEach(item => { try { var regionType = string.Empty; switch (item.intRegionType) { case 1: regionType = "国家"; break; case 2: regionType = "省/直辖市"; provinceList.Add(new ItemRegion() { id = item.intRegionID, name = item.vchRegionName, zip = item.vchPostCode, code = item.vchShortSpell, pid = item.intFRegionID, type = regionType }); break; case 3: regionType = "地区"; cityList.Add(new ItemRegion() { id = item.intRegionID, name = item.vchRegionName, zip = item.vchPostCode, code = item.vchShortSpell, pid = item.intFRegionID, type = regionType }); break; case 4: regionType = "区县"; countyList.Add(new ItemRegion() { id = item.intRegionID, name = item.vchRegionName, zip = item.vchPostCode, code = item.vchShortSpell, pid = item.intFRegionID, type = regionType }); break; default: regionType = item.intRegionType + ""; break; } } catch { } }); #endregion result.info = new[] { provinceList, cityList, countyList }; result.status = MResultStatus.Success; return(result); } catch (Exception) { result.status = MResultStatus.ExceptionError; result.msg = "获取区域列表数据异常"; } return(result); }
/// <summary> /// 订单支付 /// </summary> /// <param name="sType"></param> /// <param name="userId"></param> /// <param name="uid"></param> /// <param name="oCode"></param> /// <param name="payId"></param> /// <returns></returns> public static MResult <string> OrderPayment(SystemType sType, int userId, string uid, string oCode, int payId) { var result = new MResult <string>(); try { if (userId > 0 && !string.IsNullOrEmpty(oCode) && payId > 0) { var orderDal = DALFactory.Order(); var baseDataDal = DALFactory.BaseData(); var memberDal = DALFactory.Member(); var memberInfo = memberDal.GetMemberInfo(userId); #region 验证用户id if (memberInfo == null || memberInfo.membNo <= 0) { result.status = Core.Enums.MResultStatus.LogicError; result.msg = "用户不存在!"; return(result); } #endregion var orderInfo = orderDal.GetOrderInfo(oCode); //订单编码正确 if (orderInfo != null && orderInfo.orderNo > 0) { #region 验证订单创建用户 if (orderInfo.userCode != memberInfo.userCode) { result.status = Core.Enums.MResultStatus.LogicError; result.msg = "该订单不属于次用户!"; return(result); } #endregion #region 验正 订单状态 if (orderInfo.flowStatus < 0) { result.status = Core.Enums.MResultStatus.LogicError; result.msg = "订单状态错误!"; return(result); } #endregion #region 验证 订单支付状态 if (orderInfo.payStatus != 0) { result.status = Core.Enums.MResultStatus.LogicError; result.msg = "订单支付状态错误!"; return(result); } #endregion var payInfo = baseDataDal.GetPaymentInfo(payId); #region 验证支付信息 if (payInfo == null) { result.status = Core.Enums.MResultStatus.LogicError; result.msg = "支付方式错误!"; return(result); } #endregion var payCofnig = new PayConfigs() { OutTradeNo = string.Format("{0}-{1}", orderInfo.orderCode, orderInfo.userCode), OutUser = memberInfo.email, Subject = "母婴之家订单支付", RequestIdentity = string.Format("{0}_{1}", orderInfo.userCode, memberInfo.email), //TotalFee = MCvHelper.To(orderInfo.shouldPay, "0.00") //TODO: 测试支付的时候请取消注视 TotalFee = MCvHelper.To("0.01", "0.00") }; switch (payInfo.intPayID) { #region 支付宝(手机)支付 case 20049: { var paymentManage = new AlipayWapPayment(payCofnig); result.info = paymentManage.Init().CreateRequestUrl(); result.status = Core.Enums.MResultStatus.Success; break; } #endregion #region 默认值 default: result.status = Core.Enums.MResultStatus.LogicError; result.msg = "该支付方式wcf 不支持! 请联系客服!"; break; #endregion } } else { result.status = Core.Enums.MResultStatus.LogicError; result.msg = "订单编码错误!"; } } else { result.status = Core.Enums.MResultStatus.ParamsError; result.msg = "参数错误!"; } } catch (Exception) { result.status = Core.Enums.MResultStatus.ExceptionError; result.msg = "订单支付 执行出现异常!"; } return(result); }