/// <summary> /// 构造函数 /// </summary> public BaseWcfService() { var httpContext = HttpContext.Current; if (httpContext != null) { var args = httpContext.Request.Url.Segments; for (var i = 0; i < args.Length; i++) { args[i] = ValidateUtility.CheckNull(args[i].Trim(new char[] { '/', '\\', ' ' })).ToString(); } if (args.Length >= 8) { SystemType = MCvHelper.To <SystemType>(args[3]); Token = MCvHelper.To <string>(args[4]); Guid = MCvHelper.To <string>(args[5]); UserId = MCvHelper.To <int>(args[6]); Uid = MCvHelper.To <string>(args[7]); } else { MLogManager.Error(MLogGroup.WcfService.构造函数, "", "wcf 服务基类 构造函数初始化 ,uri参数错误"); } } }
/// <summary> /// 获取商品图片列表 /// </summary> /// <param name="sid"></param> /// <param name="uid"></param> /// <param name="gid"></param> /// <returns></returns> public static MResultList <ProductImg> GetGoodsPicList(string sid, string uid, int gid) { var result = new MResultList <ProductImg>(true); try { var goods = DALFactory.Goods(); var list = goods.GetGoodsPicList(gid); list.ForEach(picInfo => { try { result.list.Add(new ProductImg { id = picInfo.intPicID, product_id = picInfo.intProductID, url = FormatProductPicUrl(picInfo.vchPicURL), position = MCvHelper.To <int>(picInfo.vchPicType, 0), created = picInfo.dtAddTime }); } catch { } }); result.status = MResultStatus.Success; } catch (Exception ex) { result.status = MResultStatus.ExecutionError; result.msg = "查询商品列表数据出错!"; } return(result); }
/// <summary> /// 检查null 值 /// </summary> /// <param name="obj"></param> /// <returns></returns> public static object CheckNull(object obj) { object result = obj; if (obj != null && obj is String) { try { var val = obj.ToString(); var iVal = MCvHelper.To <int>(val, -1); if (iVal == -1) { var verifyStrs = new string[] { "NULL", "_" }; if (!verifyStrs.Contains(val.ToUpper())) { result = val; } else { result = string.Empty; } } } catch { } } return(result); }
/// <summary> /// 订单汇总信息 /// </summary> /// <param name="norMalShoppingCart">购物车列表</param> /// <param name="channelId">区域ID</param> /// <param name="userId">用户id</param> /// <param name="payId">支付id</param> /// <param name="logisticsId">配送id</param> /// <param name="cityId">城市id</param> /// <returns></returns> public static OrderSumaryEntity SummaryOrderInfo(List <ShoppingCartEntity> norMalShoppingCart, int channelId, int userId, int payId, int logisticsId, int cityId) { var result = new OrderSumaryEntity(); try { result.TotalScore = norMalShoppingCart.Sum(c => c.intScore * c.intBuyCount); result.TotalGoodsFee = norMalShoppingCart.Sum(c => c.intBuyCount * c.numSalePrice); result.TotalWeight = norMalShoppingCart.Sum(c => c.intBuyCount * c.intWeight ?? 0); result.TotalOriginal = norMalShoppingCart.Sum(c => c.intBuyCount * c.numOrgPrice); result.TotalFreight = BaseDataBLL.GetLogisticsInfo( channelId, userId, MCvHelper.To <int>(cityId, 0), payId, logisticsId, result.TotalWeight, result.TotalGoodsFee).info; result.TotalDiscountFee = result.TotalGoodsFee - result.TotalOriginal; result.TotalOrderFee = result.TotalFreight + result.TotalGoodsFee - result.TotalDiscountFee; } catch (Exception ex) { MLogManager.Error(MLogGroup.Order.订单汇总信息, null, "", ex); } return(result); }
/// <summary> /// 同步订单信息到 BBHome /// </summary> /// <param name="orderCode"></param> /// <returns></returns> public bool SyncOrderInfoToBBHome(string orderCode) { using (var db = new HolycaEntities()) { var objectParameter = new ObjectParameter("result", DbType.Int32); db.Up_Syn_ToBBHome_Now(orderCode, objectParameter); return(MCvHelper.To <int>(objectParameter.Value, -1) != -1); } }
/// <summary> /// 合并购物车商品 /// </summary> /// <param name="guid"></param> /// <param name="channelId"></param> /// <param name="uid"></param> /// <param name="userID"></param> /// <returns></returns> public static bool MergeShoppingCartGoods(string guid, int channelId, string uid, int userID) { var result = false; var mergeSuccessGids = new List <int>(); var shoppingCart = DALFactory.ShoppingCartDal(); //guid 的 购物车数据 var guidList = shoppingCart.GetShoppingCartProductInfosByUserIDGuidChannelID(0, guid, channelId); //userId 的 购物车数据 var userIdList = shoppingCart.GetShoppingCartProductInfosByUserIDGuidChannelID(userID, "", channelId); if (guidList != null && guidList.Any()) { //userId 的 所有商品id var gidListByUserId = new List <int>(); //获取 userId 的 所有商品id userIdList.ForEach(item => gidListByUserId.Add(item.intProductID)); guidList.ForEach(item => { try { var insertResult = InsertShoppingCart(MCvHelper.To <int>(channelId), "", item.vchGuid, userID + "", uid, item.intAreaID + "", item.intProductID + "", item.intBuyCount + ""); //删除已经合并的 购物车商品 if (shoppingCart.DeleteShoppingCartByProductIdUserID(item.intShopCartID)) { mergeSuccessGids.Add(item.intProductID); } } catch { } }); } if (mergeSuccessGids.Count > 0) { result = true; } return(result); }
/// <summary> /// 计算运费 /// </summary> /// <param name="weight"></param> /// <param name="deliveId"></param> /// <param name="cityId"></param> /// <returns></returns> public decimal GetCarriage(long weight, int deliveId, int cityId) { using (var db = new HolycaEntities()) { decimal result = 0; var objectParams = new System.Data.Objects.ObjectParameter("intcarriage", DbType.Int32); var carriage = db.Up_ShopCart_GetCarriage((int)weight, deliveId, cityId, objectParams); var upOutPutValue = MCvHelper.To <int>(objectParams.Value, 0); if (upOutPutValue > 0) { result = upOutPutValue / 100; } return(result); } }
public MResultList <ItemRegion> GetRegionList(string sid, string token, string guid, string user_id, string uid, string parentid) { var result = new MResultList <ItemRegion>(); try { var parentId = MCvHelper.To <int>(parentid); result = BaseDataBLL.GetRegionList(parentId); } catch (Exception) { result.status = MResultStatus.ExceptionError; result.msg = "处理数据出错!"; } return(result); }
public MResult RemoveShoppingCartByScId(string sid, string token, string guid, string user_id, string uid, string shoppingcarid) { var result = new MResult(); try { var shoppcartId = MCvHelper.To <int>(shoppingcarid); result = ShoppingCartBll.DeleteShoppingCartByProductIdUserID(shoppcartId); } catch (Exception) { result.status = MResultStatus.ExceptionError; result.msg = "处理数据出错!"; } return(result); }
public MResult SetDefaultAddress(string sid, string token, string guid, string user_id, string uid, string address_id) { var result = new MResult(); try { var addressId = MCvHelper.To <int>(address_id); result = MemberBLL.SetDefaultAddress(UserId, addressId); } catch (Exception) { result.status = MResultStatus.ExceptionError; result.msg = "处理数据出错!"; } return(result); }
public MResult <AddressEntity> GetAddressInfo(string sid, string token, string guid, string user_id, string uid, string address_id) { var result = new MResult <AddressEntity>(); try { var addressId = MCvHelper.To <int>(address_id); result = MemberBLL.GetAddressInfo(addressId); } catch (Exception) { result.status = MResultStatus.ExceptionError; result.msg = "处理数据出错!"; } return(result); }
/// <summary> /// 递归商品分类 /// </summary> /// <param name="sType"> </param> /// <param name="pid"> </param> /// <param name="goodsCategoryList"></param> /// <returns></returns> public static List <ItemGoodsCategory> RecursiveGoodsCategory(SystemType sType, int pid, List <Web_Pdt_Type> goodsCategoryList) { var result = new List <ItemGoodsCategory>(); if (goodsCategoryList.Any()) { var level1List = goodsCategoryList.FindAll(item => item.intCateFather == pid); if (!level1List.Any()) { return(result); } foreach (var level1Info in level1List) { var level1Entity = new ItemGoodsCategory(); level1Entity.id = level1Info.intCateID; #region 判断系统 if (sType == SystemType.MobileWebSite) { level1Entity.name = level1Info.vchCateName; } else if (sType == SystemType.WebSite) { level1Entity.name = level1Info.vchWebShowName; } else { level1Entity.name = level1Info.vchCateName; } #endregion level1Entity.pid = MCvHelper.To <int>(level1Info.intCateFather, 0); var level2List = goodsCategoryList.FindAll(item => item.intCateFather == level1Info.intCateID); if (level2List.Any()) { level1Entity.child = RecursiveGoodsCategory(sType, level1Info.intCateID, goodsCategoryList); } result.Add(level1Entity); } } return(result); }
public MResultList <ItemPay> GetPayMentList(string sid, string token, string guid, string user_id, string uid, string regionid) { var result = new MResultList <ItemPay>(); try { var regionId = MCvHelper.To <int>(regionid); result = MCacheManager.UseCached <MResultList <ItemPay> >( string.Format("GetPayList_{0}_{1}", sid, regionid), MCaching.CacheGroup.BaseData, () => BaseDataBLL.GetPaymentList((int)SystemType, regionId)); } catch (Exception ex) { result.status = MResultStatus.ExceptionError; result.msg = "处理数据出错!"; } return(result); }
public MResult SetShoppingCartGoodsNum(string sid, string token, string guid, string user_id, string uid, string shoppingcarid, string gid, string num) { var result = new MResult(); try { var Gid = MCvHelper.To <int>(gid); var shoppcartId = MCvHelper.To <int>(shoppingcarid); var Num = MCvHelper.To <int>(num); result = ShoppingCartBll.SetShoppingCartGoodsNum(UserId, guid, shoppcartId, Gid, Num); } catch (Exception) { result.status = MResultStatus.ExceptionError; result.msg = "处理数据出错!"; } return(result); }
public MResultList <ItemPay> GetPayList(string sid, string token, string guid, string user_id, string uid, string paygroupid) { var result = new MResultList <ItemPay>(); try { var paygroupId = MCvHelper.To <int>(paygroupid); result = BaseDataBLL.GetPayList(SystemType, paygroupId); } catch (Exception ex) { result.status = MResultStatus.ExceptionError; result.msg = "处理数据出错!"; } return(result); }
public MResultList <ItemOrder> GetOrdersList(string sid, string token, string guid, string user_id, string uid, string begintime, string endtime) { var result = new MResultList <ItemOrder>(); try { var begimTime = MCvHelper.To <DateTime>(begintime, DateTime.Now.AddMonths(-1)); var endTime = MCvHelper.To <DateTime>(endtime, DateTime.Now); result = OrderBLL.GetOrdersList((int)SystemType, Uid, UserId, begimTime, endTime); } catch (Exception ex) { result.status = MResultStatus.ExceptionError; result.msg = "处理数据出错!"; } return(result); }
/// <summary> /// 更新订单所有状态 /// </summary> /// <param name="orderList"></param> public void UpdateOrderAllStatus(ref List <Sale_Order> orderList) { if (orderList != null && orderList.Any()) { try { var oCodes = new List <string>(); orderList.ForEach(item => oCodes.Add(item.vchOrderCode)); var orderStatusList = GetOrderAllStatusByOrderCodes(oCodes); orderList.ForEach(item => { var orderAllStatus = orderStatusList.Find(o => o.OrderCode == item.vchOrderCode); if (orderAllStatus != null && !string.IsNullOrEmpty(orderAllStatus.OrderCode)) { item.intPayState = MCvHelper.To(orderAllStatus.PayStatus, 0); item.intOrderState = MCvHelper.To(orderAllStatus.OrderStatus, 1); } }); } catch (Exception) { } } }
/// <summary> /// 获取 配置文件 AppSettings 节点的值 /// </summary> /// <param name="key">配置文件的Key</param> /// <param name="def">如果不存在</param> /// <returns></returns> public static T GetAppSettingsValue <T>(string key, params T[] def) { object val = null; try { if (Config.AppSettings.Settings.AllKeys.Contains(key)) { val = Config.AppSettings.Settings[key].Value; } else if (def.Length > 0) { if (AddAppSettings(key, def[0].ToString())) { val = def[0]; } } } catch (Exception ex) { MLogManager.Error(MLogGroup.Other.配置文件操作, null, string.Format("获取 配置文件 AppSettings 节点 {0}={1}", key, def[0]), ex); } return(MCvHelper.To <T>(val)); }
/// <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); }