/// <summary> /// 获取应用统计信息 /// </summary> /// <param name="appId">AppId</param> /// <returns>结果</returns> public AppStatisticsDTO GetAppStatisticsExt(System.Guid appId) { AppStatisticsDTO model = new AppStatisticsDTO(); try { var order = CommodityOrder.ObjectSet().Where(p => p.EsAppId == appId && !new[] { 0, 4, 5, 6, 11, 17, 19, 21 }.Contains(p.State)).Select(p => new { RealPrice = p.RealPrice ?? 0, }).ToList(); var orderCount = order.Count(); var totalMoney = (int)order.Sum(p => p.RealPrice) * 100; var query = new ZPH.Deploy.CustomDTO.QueryPavilionAppParam { Id = appId, pageIndex = 1, pageSize = int.MaxValue }; var appIdList = ZPHSV.Instance.GetPavilionApp(query).Data.Select(t => t.appId).ToList(); var commodityCount = Commodity.ObjectSet().Count(p => appIdList.Contains(p.AppId)); model.msg_salesvolume = totalMoney.ToString(); model.msg_ordernumber = orderCount.ToString(); model.msg_productquantity = commodityCount.ToString(); } catch (Exception ex) { LogHelper.Error("获取应用统计信息AppExtensionBP.GetAppStatisticsExt异常," + appId, ex); model = null; } return(model); }
public static bool RefundCoupon(ContextSession contextSession, CommodityOrder commodityOrder) { var result = Instance.RefundCoupon(new SpendCouponRequestDTO { EsAppId = commodityOrder.EsAppId ?? Guid.Empty, ShopID = commodityOrder.AppId, OrderID = commodityOrder.Id, UserID = commodityOrder.UserId }); if (result.IsSuccess) { return(result.IsSuccess); } LogHelper.Error(string.Format("取消订单时回退优惠券失败。OrderId:{0},", commodityOrder.Id)); ErrorCommodityOrder errorOrder = new ErrorCommodityOrder { Id = Guid.NewGuid(), ErrorOrderId = commodityOrder.Id, ResourceType = 8, Description = "取消订单时回退优惠券失败", Source = commodityOrder.State, State = 0, AppId = commodityOrder.EsAppId.HasValue ? commodityOrder.EsAppId.Value : commodityOrder.AppId, UserId = commodityOrder.UserId, OrderCode = commodityOrder.Code, CouponId = Guid.Empty, SubTime = DateTime.Now, ModifiedOn = DateTime.Now, EntityState = System.Data.EntityState.Added }; contextSession.SaveObject(errorOrder); return(result.IsSuccess); }
/// <summary> /// 获取极光数据 /// </summary> /// <param name="orderExpressRoute"></param> /// <returns></returns> private string GetWuliuJson(string ExpOrderNo) { string sappids = CustomConfig.SappIds; List <string> Sappidlist = null; if (!string.IsNullOrEmpty(sappids)) { Sappidlist = sappids.Split(new char[] { ',' }).ToList(); } string appkey = CustomConfig.zshappkey; string json = null; string url = null; Guid AppId = Guid.Empty; var commodityOrder = CommodityOrder.ObjectSet().FirstOrDefault(p => p.ExpOrderNo == ExpOrderNo); if (commodityOrder != null) { AppId = commodityOrder.AppId; } if (Sappidlist.Contains(AppId.ToString().ToUpper())) { var orderExpressRoute = OrderExpressRoute.ObjectSet().FirstOrDefault(p => p.ExpOrderNo == ExpOrderNo); //苏宁易购 url = string.Format("http://api.jisuapi.com/express/query?appkey={0}&type={1}&number={2}", appkey, orderExpressRoute.ShipperCode, ExpOrderNo); } else { //中石化 url = string.Format("http://api.jisuapi.com/express/query?appkey={0}&type={1}&number={2}", appkey, "auto", ExpOrderNo); } json = WebRequestHelper.SendGetRequest(url); return(json.ToString()); }
private static string FangZheng_Order_Confirm(string Name, CommodityOrder OrderInfo) { string ReutnValue = string.Empty; if (",北京市,天津市,上海市,重庆市,".IndexOf(OrderInfo.Province.Trim()) > 0) { switch (Name) { case "省": ReutnValue = OrderInfo.Province; break; case "市": ReutnValue = OrderInfo.Province; break; case "区": ReutnValue = OrderInfo.City; break; } } else { switch (Name) { case "省": ReutnValue = OrderInfo.Province; break; case "市": ReutnValue = OrderInfo.City; break; case "区": ReutnValue = OrderInfo.District; break; } } return(ReutnValue); }
public static DataTable ImportOrder() { var startDate = new DateTime(2018, 4, 10); var endDate = new DateTime(2018, 5, 10); var orderItems = OrderItem.ObjectSet().Where(_ => _.SubTime > startDate && _.SubTime < endDate && _.YJCouponPrice > 0).ToList(); var orderIds = orderItems.Select(_ => _.CommodityOrderId).ToList(); var orders = CommodityOrder.ObjectSet().Where(_ => orderIds.Contains(_.Id) && _.State != 5).OrderBy(_ => _.SubTime).ToList(); DataTable dt = new DataTable(); dt.Columns.Add("APP名称", typeof(string)); dt.Columns.Add("订单编号", typeof(string)); dt.Columns.Add("订单金额", typeof(decimal)); dt.Columns.Add("支付金额", typeof(decimal)); dt.Columns.Add("运费金额 ", typeof(decimal)); dt.Columns.Add("抵用券金额 ", typeof(decimal)); foreach (var d in orders) { var yjcouponPrice = orderItems.Where(_ => _.CommodityOrderId == d.Id).Sum(_ => _.YJCouponPrice); var payPrice = d.Price - yjcouponPrice; if (d.RealPrice > (payPrice < 0 ? 0 : payPrice) + d.Freight) { dt.Rows.Add(d.AppName, d.Code, d.Price, d.RealPrice, d.Freight, yjcouponPrice); } } return(dt); }
public Jinher.AMP.BTP.Deploy.CustomDTO.ResultDTO <List <KeyValuePair <Guid, string> > > GetOrderInfoByCouponIdExt(Guid couponId) { var returnDto = new ResultDTO <List <KeyValuePair <Guid, string> > >() { isSuccess = true, Data = new List <KeyValuePair <Guid, string> >() }; try { var listOrder = OrderPayDetail.ObjectSet().Where(o => o.ObjectId == couponId && o.ObjectType == 1).Select(o => o.OrderId); //获取OrderId var orderInfo = CommodityOrder.ObjectSet().Where(o => listOrder.Contains(o.Id)).Select(o => new { o.Id, o.Code }); foreach (var item in orderInfo) { returnDto.Data.Add(new KeyValuePair <Guid, string>(item.Id, item.Code)); } } catch (Exception ex) { LogHelper.Error("CouponRefundBP.GetOrderInfoByCouponIdExt 异常", ex); returnDto.isSuccess = false; } return(returnDto); }
/// <summary> /// 取消订单时,回退用户易捷币 /// </summary> public static ResultDTO CancelOrder(ContextSession contextSession, CommodityOrder commodityOrder) { if (commodityOrder.EsAppId != Jinher.AMP.YJB.Deploy.CustomDTO.YJBConsts.YJAppId) { return(ResultDTO.Successed); } decimal yjbMoney = OrderPayDetail.ObjectSet() .Where(t => t.OrderId == commodityOrder.Id && (t.ObjectType == 10 || t.ObjectType == 15) && t.Amount > 0) .Select(t => t.Amount).FirstOrDefault(); if (yjbMoney <= 0) { return(ResultDTO.Successed); } var result = YJBSV.RefundAllOrderJournal(commodityOrder.Id); if (!result.IsSuccess) { if (result.Code != "OrderNotFound") { LogHelper.Error("取消订单时,回退用户易捷币失败,订单ID:" + commodityOrder.Id + ",错误内容:" + result.Message); LogOrderErrorInfo(contextSession, commodityOrder, "取消订单时,回退用户易捷币失败"); } } return(result); }
/// <summary> /// 售后退货时,记录退款金额 /// </summary> public static void OrderRefund(ContextSession contextSession, CommodityOrder commodityOrder, OrderRefundAfterSales orderRefundAfterSales) { if (orderRefundAfterSales.IsFullRefund.HasValue && orderRefundAfterSales.IsFullRefund == 1) { CancelOrder(contextSession, commodityOrder); } else { LogHelper.Info("结算单记录售后退款信息,订单ID:" + commodityOrder.Id + ",退款:" + orderRefundAfterSales.RefundMoney); try { var sad = SettleAccountsDetails.FindByID(commodityOrder.Id); if (sad != null) { if (sad.OrderRefundAmount == 0) { sad.OrderRefundAmount = orderRefundAfterSales.RefundMoney; sad.SellerAmount -= orderRefundAfterSales.RefundMoney; } sad.EntityState = EntityState.Modified; contextSession.SaveObject(sad); } } catch (Exception ex) { LogHelper.Error("结算单记录售后退款信息,订单ID:" + commodityOrder.Id + ",退款:" + orderRefundAfterSales.RefundMoney + ",异常:", ex); } } }
/// <summary> /// 严选物流绑单回调补偿机制 /// </summary> public static void AutoDeliverOrder() { var yesterday = DateTime.Now.AddDays(-5); var ComOrders = (from co in CommodityOrder.ObjectSet() join yo in YXOrder.ObjectSet() on co.Id equals yo.OrderId where CustomConfig.YxAppIdList.Contains(co.AppId) && co.State == 1 && co.PaymentTime >= yesterday select co.Id).ToList(); LogHelper.Info("YXJob.AutoDeliverOrder 严选物流绑单回调补偿机制订单Id:" + string.Join(",", ComOrders.Select(c => c.ToString()).ToArray())); ComOrders.ForEach(p => { string jsonstr = string.Empty; var orderOut = YXSV.GetPaidOrder(p.ToString(), ref jsonstr); if (orderOut == null || orderOut.orderPackages == null) { return; } var orderPackages = orderOut.orderPackages.Select(o => new JobOrderPackage { orderId = p.ToString(), packageId = long.Parse(o.packageId), expressDetailInfos = o.expressDetailInfos, expCreateTime = ConvertDataTimeToLong(Convert.ToDateTime(o.expCreateTime)) }).ToList(); orderPackages.ForEach(op => { var package = SerializationHelper.JsonSerialize(op); YXOrderHelper.DeliverOrder(new YXSign(), package, true); }); }); }
/// <summary> /// 订单支付成功时调用 /// </summary> /// <param name="order"></param> public static void OnOrderPaySuccess(CommodityOrder order) { LogHelper.Info("进入OrderEventHelper.OnOrderPaySuccess-" + order.Code + ",OrderId:" + order.Id + ",OrderState:" + order.State); // 拼图支付成功时不触发 if (order.State != 1) { return; } // 发送消息 var requestPar = "{\"project\":\"btp\",\"topic\":\"btporder-0x0001\",\"data\":\""; var data = "{\"orderId\": \"" + order.Id + "\",\"userId\": \"" + order.UserId + "\",\"appId\": \"" + order.AppId + "\"}"; requestPar += System.Web.HttpUtility.UrlEncode(data, Encoding.GetEncoding("gbk")) + "\"}"; var requestUrl = msgUrl + "?" + System.Web.HttpUtility.UrlEncode(requestPar, Encoding.GetEncoding("gbk")); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(requestUrl); request.Method = "GET"; request.ContentType = "text/html;charset=UTF-8"; try { using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { if (response.StatusCode == HttpStatusCode.OK) { LogHelper.Info("OrderEventHelper.OnOrderPaySuccess 发送消息成功, RequestUrl: " + requestUrl); } else { LogHelper.Error("OrderEventHelper.OnOrderPaySuccess 发送消息失败, RequestUrl: " + requestUrl + " \r\nResponseCode: " + response.StatusCode); } } } catch (Exception ex) { LogHelper.Error("OrderEventHelper.OnOrderPaySuccess 发送消息异常, RequestUrl: " + requestUrl, ex); } switch (ThirdECommerceHelper.GetAppThirdECommerceType(order.AppId)) { case Deploy.Enum.ThirdECommerceTypeEnum.JingDongDaKeHu: // 更新京东订单 JdOrderHelper.UpdateJdorder(order.Id); break; case Deploy.Enum.ThirdECommerceTypeEnum.SuNingYiGou: // 确认苏宁预占 SuningSV.suning_govbus_confirmorder_add(order.Id, false); break; case Deploy.Enum.ThirdECommerceTypeEnum.FangZheng: // 方正电商订单 FangZhengSV.FangZheng_Order_Confirm(order.Id, false); break; } }
/// <summary> /// 支付成功时时,解冻用户易捷币和易捷抵现劵 /// </summary> public static ResultDTO PayOrder(CommodityOrder order) { LogHelper.Info("YJBHelper.PayOrder, OrderId: " + order.Id); if (order.EsAppId.HasValue && order.EsAppId.Value == YJBConsts.YJAppId) { return(YJBSV.PayOrderJournal(order)); } return(ResultDTO.Successed); }
/// <summary> /// 取消整单退款时调用(售后) /// </summary> public static ResultDTO OnCancelOrderRefundAfterSales(CommodityOrder order, OrderRefundAfterSales refund) { // 判断严选订单 if (ThirdECommerceHelper.IsWangYiYanXuan(order.AppId)) { } return(new ResultDTO { isSuccess = true }); }
/// <summary> /// 待自提订单数量 /// </summary> /// <param name="userId">自提点管理员</param> /// <returns>待自提订单数量</returns> public ResultDTO <int> GetSelfTakeManagerExt(Guid userId) { try { // 返回 是否管理员,待自提订单数量 if (userId == Guid.Empty) { return new ResultDTO <int> { Data = 0, ResultCode = 1, Message = "管理员用户ID非法." } } ; var managerInfo = (from p in AppStsManager.ObjectSet() join r in AppSelfTakeStation.ObjectSet() on p.SelfTakeStationId equals r.Id where p.UserId == userId && p.IsDel == false && r.IsDel == false select p.SelfTakeStationId ).Distinct(); if (!managerInfo.Any()) { LogHelper.Info(string.Format("该用户不是自提点管理员或没有与自提点绑定,userId:{0}", userId)); return(new ResultDTO <int> { Data = 0, ResultCode = -1, Message = "抱歉,您暂时没有权限查看此信息" }); } IQueryable <CommodityOrder> query = CommodityOrder.ObjectSet().Where(n => (n.State == 1 || n.State == 11) && n.IsDel != 1 && n.IsDel != 3); var commodityorderListCount = (from r in managerInfo join t in AppOrderPickUp.ObjectSet() on r equals t.SelfTakeStationId join p in query on t.Id equals p.Id select t.Id).Count(); if (commodityorderListCount != 0) { return(new ResultDTO <int> { Data = commodityorderListCount, ResultCode = 0, Message = "sucess" }); } else { return new ResultDTO <int> { Data = 0, ResultCode = -2, Message = "订单数量为0" } }; } catch (Exception ex) { LogHelper.Error(string.Format("BTPUserSV.GetSelfTakeManagerExt获取待自提订单数量异常。userId:{0},ex:{1}", userId, ex)); return(new ResultDTO <int> { Data = 0, ResultCode = -3, Message = "Exception" }); } }
/// <summary> /// 整单退款时调用 /// </summary> /// <param name="order"></param> /// <param name="oldState"></param> /// <param name="refund"></param> public static ResultDTO OnOrderRefund(CommodityOrder order, int oldState, OrderRefund refund) { // 网易严选和其他第三方电商只有在未发货时支持整单退款 if (oldState == 1) { return(ThirdECommerceHelper.CancelOrder(order)); } return(new ResultDTO { isSuccess = true }); }
public static bool CheckPayType(CommodityOrder commodityOrder) { var paySources = PaySource.GetPaymentByTradeType(0); if (paySources.Contains(commodityOrder.Payment)) { return(true); } LogHelper.Warn("担保交易(金币)支付,生成结算单失败,该订单:[" + commodityOrder.Id + "]非担保交易。"); return(false); }
/// <summary> /// 售中退款时,回退用户易捷币和易捷抵用券 /// </summary> public static ResultDTO OrderRefund(ContextSession contextSession, CommodityOrder commodityOrder, OrderRefund orderRefund, decimal commodityPrice, Guid useryjcouponid) { if (commodityOrder.EsAppId != Jinher.AMP.YJB.Deploy.CustomDTO.YJBConsts.YJAppId) { return(ResultDTO.Successed); } //var result = YJBSV.RefundAllOrderJournal(commodityOrder.Id); //if (!result.IsSuccess) //{ // LogHelper.Error("售中退款时,回退用户易捷币失败,订单ID:" + commodityOrder.Id + ",错误内容:" + result.Message); // LogOrderErrorInfo(contextSession, commodityOrder, "售中退款时,回退用回退用户易捷币失败户易捷币"); //} //return result; #region 记录抵用券退款明细表 var orderitemorder = (from i in OrderItem.ObjectSet() where commodityOrder.Id == i.CommodityOrderId select i).ToList(); var user = CBCSV.GetUserNameAndCode(commodityOrder.UserId); foreach (var item in orderitemorder) { CouponRefundDetail couponRefundDetailDTO = new CouponRefundDetail(); couponRefundDetailDTO.Id = Guid.NewGuid(); couponRefundDetailDTO.SubTime = DateTime.Now; couponRefundDetailDTO.ModifiedOn = DateTime.Now; couponRefundDetailDTO.RefundTime = DateTime.Now; couponRefundDetailDTO.ReceiveAccount = user != null ? user.Item2 : ""; couponRefundDetailDTO.ReceiveName = user != null ? user.Item1 : ""; couponRefundDetailDTO.CommodityCouponMoney = commodityPrice; couponRefundDetailDTO.FreightCouponMoney = 0; couponRefundDetailDTO.CommodityRefundMoney = orderRefund.RefundMoney; couponRefundDetailDTO.FreightRefundMoney = orderRefund.RefundFreightPrice; couponRefundDetailDTO.RefundTotalMoney = commodityPrice + orderRefund.RefundMoney + orderRefund.RefundFreightPrice; couponRefundDetailDTO.ShopName = commodityOrder.AppName; couponRefundDetailDTO.OrderNo = commodityOrder.Code; couponRefundDetailDTO.CommoidtyName = item.Name; couponRefundDetailDTO.ReceivePhone = commodityOrder.ReceiptPhone; couponRefundDetailDTO.ConsigneeName = commodityOrder.ReceiptUserName; couponRefundDetailDTO.Remark = ""; couponRefundDetailDTO.EntityState = System.Data.EntityState.Added; contextSession.SaveObject(couponRefundDetailDTO); } contextSession.SaveChanges(); #endregion var mobile = user != null ? user.Item2 : ""; var result = YJBSV.RefundOrderJournal(commodityOrder.Id, orderRefund.RefundYJBMoney, commodityPrice, mobile, commodityOrder.UserId, useryjcouponid); if (!result.IsSuccess) { LogHelper.Error("售中退款时,回退用户易捷币失败,订单ID:" + commodityOrder.Id + ",错误内容:" + result.Message); LogOrderErrorInfo(contextSession, commodityOrder, "售中退款时,回退用回退用户易捷币失败户易捷币"); } return(result); }
/// <summary> /// 获取发票历史数据 /// </summary> /// <param name="appId"></param> /// <param name="userId"></param> /// <param name="category">发票类型 1:增值税专用发票,2:电子发票,4:增值税专用发票</param> /// <returns></returns> public Deploy.CustomDTO.ResultDTO <List <InvoiceInfoDTO> > GetInvoiceInfoListExt(Guid appId, Guid userId, int category) { LogHelper.Debug("开始进入获取发票历史数据接口GetInvoiceInfoList:appId:" + appId + ",userId:" + userId + ",category:" + category); if (appId == null || userId == null || userId == Guid.Empty || appId == Guid.Empty) { return new ResultDTO <List <InvoiceInfoDTO> >() { isSuccess = false, Message = "参数为空" } } ; //判断appId是否是馆 是的话获取所有的入驻app集合 不是的话只获取当前app下的发票集合 var appids = TPS.ZPHSV.Instance.GetAppIdlist(new List <Guid>() { appId }).Select(t => t.AppId).ToList(); appids.Add(appId); List <InvoiceInfoDTO> resultDto = new List <InvoiceInfoDTO>(); var temp = (from c in CommodityOrder.ObjectSet() join i in Invoice.ObjectSet() on c.Id equals i.CommodityOrderId where appids.Contains(c.AppId) && i.SubId == userId && i.Category == category && i.InvoiceType == 2 orderby i.SubTime descending select i).Distinct(); LogHelper.Debug("开始进入获取发票历史数据接口GetInvoiceInfoList:temp:" + JsonHelper.JsSerializer(temp)); foreach (var invoice in temp) { InvoiceInfoDTO rInfoDto = new InvoiceInfoDTO { Id = invoice.Id, InvoiceTitle = invoice.InvoiceTitle, Code = invoice.Code, SubTime = invoice.SubTime }; var tem = resultDto.Where(t => t.InvoiceTitle == invoice.InvoiceTitle && t.Code == invoice.Code); if (!tem.Any()) { resultDto.Add(rInfoDto); } } return(new ResultDTO <List <InvoiceInfoDTO> > { isSuccess = true, Data = resultDto.OrderByDescending(t => t.SubTime).ToList() }); } }
public async Task <IActionResult> CommditiesOrderCreate(CommoditiesOrderViewModel commoditiesorder) { var commodities = _context.Commoditys.Single(x => x.Id == commoditiesorder.commoditiesid); var commoditiesorders = new CommodityOrder { Commoditys = commodities, Name = commoditiesorder.Name, Number = commoditiesorder.Number, Remarks = commoditiesorder.Remarks, SaleStates = commoditiesorder.SaleStates, CommoditysId = commodities.Id, OrderStatus = true }; _context.CommodityOrders.Add(commoditiesorders); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); }
/// <summary> /// 整单退款时调用(售后) /// </summary> /// <param name="order"></param> /// <param name="orderItrefundem"></param> public static ResultDTO OnOrderRefundAfterSales(CommodityOrder order, OrderRefundAfterSales refund) { // 判断严选订单 if (ThirdECommerceHelper.IsWangYiYanXuan(order.AppId)) { return(new ResultDTO { isSuccess = false, ResultCode = 1, Message = "该订单不支持整单退款,请选择单品退款~" }); } return(new ResultDTO { isSuccess = true }); }
/// <summary> /// 单品退款时调用(售前) /// </summary> /// <param name="order"></param> /// <param name="orderItem"></param> /// <param name="refund"></param> public static ResultDTO OnOrderItemRefund(CommodityOrder order, OrderItem orderItem, OrderRefund refund) { // 判断严选订单 if (ThirdECommerceHelper.IsWangYiYanXuan(order.AppId)) { return(new ResultDTO { isSuccess = false, ResultCode = 1, Message = "确认收货后才能申请售后~" }); } return(new ResultDTO { isSuccess = true }); }
/// <summary> /// 取消整单退款时调用 /// </summary> /// <param name="order"></param> /// <param name="refund"></param> public static ResultDTO OnCancelOrderRefund(CommodityOrder order, OrderRefund refund) { // 判断严选订单 if (ThirdECommerceHelper.IsWangYiYanXuan(order.AppId)) { return(new ResultDTO { ResultCode = 1, Message = "不支持整单取消退款。" }); } return(new ResultDTO { isSuccess = true }); }
/// <summary> /// 获取众销统计信息 /// </summary> /// <param name="search">查询类</param> /// <returns>结果</returns> public Jinher.AMP.BTP.Deploy.CustomDTO.ShareOrderMoneySumDTO GetShareOrderMoneySumInfoExt(Jinher.AMP.BTP.Deploy.CustomDTO.ShareOrderMoneySumSearchDTO search) { if (search == null || search.UseId == Guid.Empty || search.AppId == Guid.Empty) { return(null); } Jinher.AMP.BTP.Deploy.CustomDTO.ShareOrderMoneySumDTO result = new ShareOrderMoneySumDTO(); //售中待收益 var orderStates = new List <int>() { 1, 2, 8, 9, 10, 12, 13, 14 }; //售后待收益 var orderAfterStates = new List <int>() { 3, 5, 10, 12, 13 }; //佣金总数(已收益佣金) var sumInfo = (from orderShare in OrderShare.ObjectSet() join order in CommodityOrder.ObjectSet() on orderShare.OrderId equals order.Id join dataS in CommodityOrderService.ObjectSet() on orderShare.OrderId equals dataS.Id into tempS from orderService in tempS.DefaultIfEmpty() where orderShare.PayeeId == search.UseId && orderShare.PayeeType == search.PayeeType && orderShare.Commission > 0 && order.EsAppId == search.AppId && order.State == 3 && orderService.State == 15 select orderShare.Commission).ToList().Sum(); //待收益佣金总数 var sumUnPayInfo = (from orderShare in OrderShare.ObjectSet() join order in CommodityOrder.ObjectSet() on orderShare.OrderId equals order.Id join dataS in CommodityOrderService.ObjectSet() on orderShare.OrderId equals dataS.Id into tempS from orderService in tempS.DefaultIfEmpty() where orderShare.PayeeId == search.UseId && orderShare.PayeeType == search.PayeeType && orderShare.Commission > 0 && order.EsAppId == search.AppId && (orderStates.Contains(order.State) || order.State == 3 && orderService.State != null && orderAfterStates.Contains(orderService.State)) select orderShare.Commission).ToList().Sum(); result.CommissionAmount = sumInfo; result.CommmissionUnPay = sumUnPayInfo; return(result); }
/// <summary> /// 售后完成渠道打积分 /// </summary> /// <param name="contextSession"></param> /// <param name="commodityOrder"></param> /// <param name="commodityOrderService"></param> /// <returns></returns> public static bool ChannelShareSaleGiveScore(ContextSession contextSession, CommodityOrder commodityOrder, CommodityOrderService commodityOrderService) { if (!commodityOrder.EsAppId.HasValue) { return(true); } //使用了积分 if (commodityOrder.ChannelShareMoney > 0) { //取商货众销的收款人 var shareModel = OrderShare.ObjectSet().FirstOrDefault(t => t.OrderId == commodityOrder.Id && t.PayeeType == 12); //没有收款人 if (shareModel == null || shareModel.PayeeId == Guid.Empty) { LogHelper.Error(string.Format("售后完成渠道打积,找不到收款人。OrderId:{0}", commodityOrder.Id)); return(false); } //获取当时的积分比例 CostScoreInfoDTO scoreCostDto; if (new ScoreSV().GetScoreCost(commodityOrder.EsAppId.Value, out scoreCostDto, commodityOrder.SubTime)) { int srore = (int)(commodityOrder.ChannelShareMoney * scoreCostDto.Cost); bool refundScoreResult = Instance.GiveScoreBtpShare(shareModel.PayeeId, commodityOrder.EsAppId.Value, srore, commodityOrder.Id, commodityOrder.Code, ScoringType.BtpChannelBrokerage, commodityOrder.ChannelShareMoney, scoreCostDto.Cost, scoreCostDto.ScoreType); if (!refundScoreResult) { LogHelper.Error(string.Format("售后完成渠道打积分失败。UserId:{0},AppId:{1},srore:{2},OrderId:{3}", shareModel.PayeeId, commodityOrder.AppId, srore, commodityOrder.Id)); ErrorCommodityOrder errorOrder = new ErrorCommodityOrder { Id = Guid.NewGuid(), ErrorOrderId = commodityOrder.Id, ResourceType = 6, Source = 3, State = 0, AppId = commodityOrder.EsAppId.Value, UserId = shareModel.PayeeId, OrderCode = commodityOrder.Code, CouponId = Guid.Empty, Score = srore, SubTime = DateTime.Now, ModifiedOn = DateTime.Now, ScoreType = (int)scoreCostDto.ScoreType, EntityState = System.Data.EntityState.Added }; contextSession.SaveObject(errorOrder); } return(refundScoreResult); } } return(true); }
/// <summary> /// 取消订单时回退积分 /// </summary> /// <param name="contextSession"></param> /// <param name="commodityOrder"></param> /// <returns></returns> public static bool CommodityOrderCancelSrore(ContextSession contextSession, CommodityOrder commodityOrder) { if (!commodityOrder.EsAppId.HasValue) { return(true); } //获取下订单时用的积分金额 var sroreMoney = OrderPayDetail.ObjectSet().Where(t => t.OrderId == commodityOrder.Id && t.ObjectType == 2 && t.Amount > 0).Select(t => t.Amount).FirstOrDefault(); if (sroreMoney <= 0) { return(true); } //获取当时的积分汇率 CostScoreInfoDTO scoreCostDto; bool isscsc = new ScoreSV().GetScoreCost(commodityOrder.EsAppId.Value, out scoreCostDto, commodityOrder.SubTime); if (!isscsc) { return(true); } int srore = (int)(sroreMoney * scoreCostDto.Cost); bool refundScoreResult = Instance.RefundScore(commodityOrder.UserId, commodityOrder.EsAppId.Value, srore, commodityOrder.Id, commodityOrder.Code, scoreCostDto.ScoreType); if (refundScoreResult) { return(refundScoreResult); } LogHelper.Error(string.Format("取消订单时回退积分失败。UserId:{0},EsAppId:{1},srore:{2}", commodityOrder.UserId, commodityOrder.EsAppId.Value, srore)); ErrorCommodityOrder errorOrder = new ErrorCommodityOrder(); errorOrder.Id = Guid.NewGuid(); errorOrder.ErrorOrderId = commodityOrder.Id; errorOrder.ResourceType = 1; errorOrder.Source = commodityOrder.State; errorOrder.State = 0; errorOrder.AppId = commodityOrder.EsAppId.Value; errorOrder.UserId = commodityOrder.UserId; errorOrder.OrderCode = commodityOrder.Code; errorOrder.CouponId = Guid.Empty; errorOrder.Score = srore; errorOrder.SubTime = DateTime.Now; errorOrder.ModifiedOn = DateTime.Now; errorOrder.ScoreType = (int)scoreCostDto.ScoreType; errorOrder.EntityState = System.Data.EntityState.Added; contextSession.SaveObject(errorOrder); return(refundScoreResult); }
/// <summary> /// 保存打印发货单 /// </summary> /// <param name="orders"></param> public ResultDTO SavePrintInvoiceOrdersExt(UpdatePrintDTO orders) { try { if (orders == null || orders.Orders == null || orders.Orders.Count == 0) { return new ResultDTO() { ResultCode = 1, Message = "参数错误,参数不能为空!" } } ; var tempOrderIds = orders.Orders.Select(r => r.OrderId).ToList(); var newOrders = (from n in CommodityOrder.ObjectSet() join o in tempOrderIds on n.Id equals o select n).ToList(); if (newOrders == null || newOrders.Count == 0) { return new ResultDTO() { ResultCode = 1, Message = "数据错误" } } ; //记录打印日志,延迟提交库 RecordPrintLog(newOrders, orders); if (ContextFactory.CurrentThreadContext.SaveChanges() > 0) { return new ResultDTO() { ResultCode = 0, Message = "保存成功" } } ; } catch (Exception ex) { LogHelper.Error(string.Format("保存打印发货单。SavePrintInvoiceOrdersExt:{0}", JsonHelper.JsonSerializer(orders)), ex); } return(new ResultDTO() { ResultCode = 1, Message = "保存失败" }); }
/// <summary> /// 创建订单失败时,回退用户易捷币 /// </summary> public static ResultDTO CreateOrderFail(ContextSession contextSession, CommodityOrder commodityOrder) { if (commodityOrder.EsAppId != Jinher.AMP.YJB.Deploy.CustomDTO.YJBConsts.YJAppId) { return(ResultDTO.Successed); } var result = YJBSV.CancelOrderJournal(commodityOrder.Id); if (!result.IsSuccess) { LogHelper.Error("创建订单失败时,回退用户易捷币失败,订单ID:" + commodityOrder.Id + ",错误内容:" + result.Message); LogOrderErrorInfo(contextSession, commodityOrder, "创建订单失败时,回退用户易捷币"); } return(result); }
/// <summary> /// 添加退货物流信息时调用(售后) /// </summary> public static ResultDTO OnOrderRefundOfferExpress(CommodityOrder order, OrderRefundAfterSales refund, string trackingCompany, string trackingNum) { // 判断严选订单 if (ThirdECommerceHelper.IsWangYiYanXuan(order.AppId)) { return(YXSV.ExpressOfferRefundOrder(refund.ApplyId, new List <ExpressInfo> { new ExpressInfo { trackingCompany = trackingCompany, trackingNum = trackingNum } })); } return(new ResultDTO { isSuccess = true }); }
/// <summary> /// 第三方电商取消订单申请 /// </summary> /// <param name="order"></param> /// <returns></returns> public static ResultDTO CancelOrder(CommodityOrder order) { var type = GetAppThirdECommerceType(order.AppId); if (type == ThirdECommerceTypeEnum.WangYiYanXuan && YXOrderHelper.IsYXOrder(order.Id)) { return(YXOrderRefundHelper.CancelPaidOrder(order)); } else if (type == ThirdECommerceTypeEnum.ByBiaoZhunJieKou && ThirdECommerceOrderHelper.IsThirdECOrder(order.Id)) { return(ThirdECommerceOrderHelper.CancelOrder(order.Id)); } return(new ResultDTO { isSuccess = true }); }
/// <summary> /// 第三方电商取消售后服务申请 /// </summary> /// <param name="order"></param> /// <param name="orderItem"></param> /// <param name="refund"></param> /// <returns></returns> public static ResultDTO CancelService(CommodityOrder order, OrderItem orderItem, OrderRefundAfterSales refund) { var type = GetAppThirdECommerceType(order.AppId); if (type == ThirdECommerceTypeEnum.WangYiYanXuan) { return(YXSV.CancelRefundOrder(refund.ApplyId)); } else if (type == ThirdECommerceTypeEnum.ByBiaoZhunJieKou) { return(ThirdECommerceServiceHelper.CancelService(order.AppId, order.Id, refund.Id)); } return(new ResultDTO { isSuccess = true }); }
/// <summary> /// 妥投后自动确认收货 /// </summary> /// <param name="orderId"></param> private void ConfirmOrder(Guid orderId) { var order = CommodityOrder.ObjectSet().FirstOrDefault(p => p.Id == orderId); if (order == null) { LogHelper.Error("进销存-妥投后自动确认收货:未找到订单,入参:" + orderId); return; } var result = new CommodityOrderSV().UpdateCommodityOrderExt(3, orderId, order.SubId, order.AppId, order.Payment, string.Empty, string.Empty); if (result.ResultCode != 0) { LogHelper.Error("进销存-妥投后自动确认收货失败:" + result.Message + ",入参:" + orderId); } }