/// <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> public static void AfterSalesEndOrder(ContextSession contextSession, CommodityOrderService commodityOrderService) { try { LogHelper.Info("结算单记录售后完成,订单ID:" + commodityOrderService.Id); var sad = SettleAccountsDetails.FindByID(commodityOrderService.Id); if (sad != null) { sad.AfterSalesEndTime = commodityOrderService.EndTime.Value; sad.EntityState = EntityState.Modified; contextSession.SaveObject(sad); } } catch (Exception ex) { LogHelper.Error("结算单记录售后完成,订单ID:" + commodityOrderService.Id + ",错误:", ex); } }
/// <summary> /// 导入自营商家未设置结算价时的结算订单 /// </summary> public static void ImportNotSettleOrder() { LogHelper.Info("SettleAccountHelper.ImportNotSettleOrder 开始导入未设置结算价的订单"); try { ContextSession contextSession = ContextFactory.CurrentThreadContext; // 查询商城下APP var mallQuery = MallApply.ObjectSet().Where(m => m.Type == 0 && (m.State.Value == 2 || m.State.Value == 4)); var startDate = new DateTime(2017, 9, 1); var hadAddOrderQuery = SettleAccountsDetails.ObjectSet().AsQueryable(); foreach (var mall in mallQuery.ToList()) { var orderQuery = CommodityOrder.ObjectSet().Where(o => o.AppId == mall.AppId && o.EsAppId == mall.EsAppId && o.PaymentTime > startDate && o.Payment != 0); var orders = orderQuery.Join(CommodityOrderService.ObjectSet() .Where(s => (s.State == 3 || s.State == 7 || s.State == 15)), o => o.Id, s => s.Id, (o, s) => new { s.State, o }) .Where(so => !hadAddOrderQuery.Where(h => h.EsAppId == mall.EsAppId && h.AppId == mall.AppId && h.OrderId == so.o.Id) .Any(h => h.Id == so.o.Id)) .ToList(); if (orders.Count > 0) { // 生成结算项 foreach (var so in orders) { SettleAccountHelper.CreateSettleAccountDetails(contextSession, so.o, mall, so.State); } } } contextSession.SaveChanges(); } catch (Exception ex) { LogHelper.Error(string.Format("SettleAccountHelper.ImportNotSettleOrder 异常", ex)); } LogHelper.Info("SettleAccountHelper.ImportNotSettleOrder 结束导入未设置结算价的订单"); ImportNotSettleGoldOrder(); }
/// <summary> /// 获取众销入账信息 /// </summary> /// <param name="search">查询类</param> /// <returns>结果</returns> public Jinher.AMP.BTP.Deploy.CustomDTO.ShareOrderMoneyResultDTO GetShareOrderMoneyInfoExt(Jinher.AMP.BTP.Deploy.CustomDTO.ShareOrderMoneySearchDTO search) { Jinher.AMP.BTP.Deploy.CustomDTO.ShareOrderMoneyResultDTO result = new ShareOrderMoneyResultDTO(); if (search == null || search.UseId == Guid.Empty || search.AppId == Guid.Empty || search.PageIndex < 1 || search.PageSize < 1) { return(result); } //售中待收益 var orderStates = new List <int>() { 1, 2, 8, 9, 10, 12, 13, 14 }; //售后待收益 var orderAfterStates = new List <int>() { 3, 5, 10, 12, 13 }; //已收益 if (search.SearchType == 1) { var query = 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 new ShareOrderMoneyDTO { SortTime = orderService.EndTime.Value, Money = orderShare.Commission, State = 0, SrcType = order.SrcType }; result.Count = query.Count(); result.ShareOrderMoneyList = query.OrderByDescending(n => n.SortTime).Skip((search.PageIndex - 1) * search.PageSize).Take(search.PageSize).ToList(); } //待收益 else if (search.SearchType == 2) { var query = 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 new ShareOrderMoneyDTO { SortTime = order.PaymentTime.Value, Money = orderShare.Commission, State = 1, SrcType = order.SrcType }; result.Count = query.Count(); result.ShareOrderMoneyList = query.OrderByDescending(n => n.SortTime) .Skip((search.PageIndex - 1) * search.PageSize) .Take(search.PageSize) .ToList(); } else { } return(result); }
/// <summary> /// 导入自营商家未设置结算价时的金币支付订单 /// </summary> public static void ImportNotSettleGoldOrder() { LogHelper.Info("SettleAccountHelper.ImportNotSettleGoldOrder 开始导入未设置结算价的金币支付订单"); try { ContextSession contextSession = ContextFactory.CurrentThreadContext; // 查询商城下APP var mallQuery = MallApply.ObjectSet().Where(m => m.Type == 0 && (m.State.Value == 2 || m.State.Value == 4)); //var startDate = new DateTime(2017, 9, 1); var hadAddOrderQuery = SettleAccountsDetails.ObjectSet().AsQueryable(); ContextDTO contextDTO = AuthorizeHelper.CoinInitAuthorizeInfo(); // 生成结算项 List <object> saveList = new List <object>(); foreach (var mall in mallQuery.ToList()) { var orderQuery = CommodityOrder.ObjectSet().Where(o => o.AppId == mall.AppId && o.EsAppId == mall.EsAppId && o.PaymentTime > mall.SubTime && o.Payment == 0); var orders = orderQuery.Join(CommodityOrderService.ObjectSet() .Where(s => (s.State == 15)), o => o.Id, s => s.Id, (o, s) => o) .Where(o => !hadAddOrderQuery.Where(h => h.EsAppId == mall.EsAppId && h.AppId == mall.AppId && h.OrderId == o.Id) .Any(h => h.Id == o.Id)) .ToList(); if (orders.Count > 0) { foreach (var o in orders) { LogHelper.Info("ImportNotSettleGoldOrder,导入自营商家未设置结算价时的金币支付订单,开始生成结算单,OrderId:" + o.Id); var sa = SettleAccountHelper.CreateSettleAccount(contextSession, o, mall); if (sa != null) { Jinher.AMP.App.Deploy.CustomDTO.AppIdOwnerIdTypeDTO applicationDTO = APPSV.Instance.GetAppOwnerInfo(o.AppId, contextDTO); // 打款 var confirmDto = OrderSV.BuildConfirmPayDTOAfterSales(contextSession, o, out saveList, applicationDTO, isSaveObject: false); LogHelper.Info("导入自营商家未设置结算价时的金币支付订单,开始打款,OrderId:" + o.Id + "ConfirmPayDTO: " + JsonHelper.JsonSerializer(confirmDto)); var goldPayResult = Jinher.AMP.BTP.TPS.FSPSV.Instance.ConfirmPay(confirmDto); if (goldPayResult.Code != 0) { // 打款失败 sa.IsPaySuccess = false; LogHelper.Info("导入自营商家未设置结算价时的金币支付订单,结束打款,失败,OrderId:" + o.Id); var errorInfo = JsonHelper.JsonSerializer(goldPayResult); LogHelper.Error("OrderSV.CreateSettleAccount 生成结算单,打款异常,OrderId: " + o.Id + " ReturnInfoDTO: " + errorInfo); SettleAccountsException exception = new SettleAccountsException(); exception.Id = sa.Id; exception.OrderId = o.Id; exception.OrderCode = o.Code; exception.OrderRealPrice = o.RealPrice; exception.ClearingPrice = sa.SellerAmount; exception.ExceptionInfo = errorInfo; exception.AppId = sa.AppId; exception.AppName = sa.AppName; exception.EntityState = EntityState.Added; contextSession.SaveObject(exception); } else { // 打款成功 sa.IsPaySuccess = true; LogHelper.Info("导入自营商家未设置结算价时的金币支付订单,结束打款,成功,OrderId:" + o.Id); } LogHelper.Info("ImportNotSettleGoldOrder,导入自营商家未设置结算价时的金币支付订单,结束生成结算单,OrderId:" + o.Id); } } } } if (saveList != null && saveList.Any()) { foreach (var o in saveList) { contextSession.SaveObject(o); } } contextSession.SaveChanges(); } catch (Exception ex) { LogHelper.Error(string.Format("SettleAccountHelper.ImportNotSettleGoldOrder 异常", ex)); } LogHelper.Info("SettleAccountHelper.ImportNotSettleGoldOrder 结束导入未设置结算价的金币支付订单"); }
/// <summary> /// 售后完成三级分销打积分 /// </summary> /// <param name="contextSession"></param> /// <param name="commodityOrder"></param> /// <param name="commodityOrderService"></param> /// <returns></returns> public static bool DistributeSaleGiveScore(ContextSession contextSession, CommodityOrder commodityOrder, CommodityOrderService commodityOrderService) { if (!commodityOrder.EsAppId.HasValue) { return(true); } List <int> payeeTypeList = new List <int>() { 9, 10, 11 }; //取得三级分销应分的积分记录 var osQuery = OrderShare.ObjectSet() .Where( t => t.OrderId == commodityOrder.Id && t.Commission > 0 && payeeTypeList.Contains(t.PayeeType)) .ToList(); //使用了积分 if (osQuery.Any()) { //获取当时的积分比例 CostScoreInfoDTO scoreCostDto; if (new ScoreSV().GetScoreCost(commodityOrder.EsAppId.Value, out scoreCostDto, commodityOrder.SubTime)) { bool isAllSuccess = true; foreach (var orderShare in osQuery) { int srore = (int)(orderShare.Commission * scoreCostDto.Cost); bool refundScoreResult = SignSV.Instance.GiveScoreBtpShare(orderShare.PayeeId, commodityOrder.AppId, srore, commodityOrder.Id, commodityOrder.Code, Jinher.AMP.Sign.Deploy.Enum.ScoringType.BtpDistributeSale, orderShare.Commission, scoreCostDto.Cost, scoreCostDto.ScoreType); if (!refundScoreResult) { isAllSuccess = false; LogHelper.Error(string.Format("售售后完成三级分销打积分失败。UserId:{0},AppId:{1},srore:{2},OrderId:{3}", orderShare.PayeeId, commodityOrder.AppId, srore, commodityOrder.Id)); ErrorCommodityOrder errorOrder = new ErrorCommodityOrder(); errorOrder.Id = Guid.NewGuid(); errorOrder.ErrorOrderId = commodityOrder.Id; if (orderShare.PayeeType == 9) { errorOrder.ResourceType = 2; } else if (orderShare.PayeeType == 10) { errorOrder.ResourceType = 3; } else if (orderShare.PayeeType == 11) { errorOrder.ResourceType = 4; } errorOrder.Source = 3; errorOrder.State = 0; errorOrder.AppId = commodityOrder.AppId; errorOrder.UserId = orderShare.PayeeId; 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(isAllSuccess); } } return(true); }
/// <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); }
public ResultDTO CreateExt(Guid orderId) { try { var order = CommodityOrder.ObjectSet().FirstOrDefault(p => p.Id == orderId); if (order == null) { return new ResultDTO { isSuccess = false, Message = "未找到订单" } } ; if (order.EsAppId != YJB.Deploy.CustomDTO.YJBConsts.YJAppId) { return new ResultDTO { isSuccess = false, Message = "非易捷北京订单" } } ; if (order.OrderType != 3) { return new ResultDTO { isSuccess = false, Message = "非易捷卡密订单" } } ; if (order.State == 7) { return new ResultDTO { isSuccess = false, Message = "订单已退款" } } ; if (YJBJCard.ObjectSet().Any(p => p.OrderId == orderId && p.Status == 2)) { return new ResultDTO { isSuccess = false, Message = "已获取卡信息" } } ; var yjUserId = TPS.CBCSV.GetYJUserId(order.UserId); if (string.IsNullOrEmpty(yjUserId)) { return new ResultDTO { isSuccess = false, Message = "非易捷北京会员用户" } } ; var isNoPhoneAccount = yjUserId == "NoPhoneAccount"; //var yjUserId = "77fca49d080d4bcba3eca52e715e37f6"; var orderItemList = OrderItem.ObjectSet() .Where(p => p.CommodityOrderId == orderId && p.Type == 1).Select(p => new { p.Id, p.CommodityId, p.Number, p.YJCouponActivityId, p.YJCouponType, }).ToList() .Where(p => !string.IsNullOrEmpty(p.YJCouponActivityId) && !string.IsNullOrEmpty(p.YJCouponType)).ToList(); if (orderItemList.Count == 0) { return new ResultDTO { isSuccess = false, Message = "未找到易捷卡密订单项" } } ; orderItemList.ForEach(p => { var list = isNoPhoneAccount ? new List <YJBJCard>() : CreateYingKeCoupon(p.YJCouponActivityId, p.YJCouponType, p.Number, yjUserId); if (list.Count == 0)//接口调用失败后再调用一次 { list = isNoPhoneAccount ? new List <YJBJCard>() : CreateYingKeCoupon(p.YJCouponActivityId, p.YJCouponType, p.Number, yjUserId); #region 接口二次调用失败 if (list.Count == 0) { list.Add(new YJBJCard { CardName = string.Empty, CardNo = string.Empty, CheckCode = string.Empty, CouponUrl = string.Empty, EndTime = DateTime.MaxValue, Status = isNoPhoneAccount ? 1 : 0, Message = isNoPhoneAccount ? "用户未绑定手机号" : "失败", EntityState = EntityState.Added }); } #endregion } list.ForEach(x => { x.Id = Guid.NewGuid(); x.UserId = order.UserId; x.AppId = order.AppId; x.EsAppId = (Guid)order.EsAppId; x.OrderId = order.Id; x.OrderCode = order.Code; x.OrderItemId = p.Id; x.CommodityId = p.CommodityId; x.SubTime = DateTime.Now; ContextFactory.CurrentThreadContext.SaveObject(x); }); }); DateTime now = DateTime.Now; #region CommodityOrderService var commodityOrderService = CommodityOrderService.FindByID(order.Id); if (commodityOrderService == null) { commodityOrderService = new CommodityOrderService { Id = order.Id, Name = order.Name, Code = order.Code, State = 3, SubId = order.UserId, SubTime = now, ModifiedOn = now, EntityState = EntityState.Added }; ContextFactory.CurrentThreadContext.SaveObject(commodityOrderService); } #endregion #region Journal var journal = new Journal { Id = Guid.NewGuid(), Name = "易捷卡密成功获取卡信息", Code = order.Code, SubId = order.UserId, SubTime = now, Details = "订单状态由" + order.State + "变为3", StateFrom = order.State, StateTo = 3, IsPush = false, OrderType = order.OrderType, CommodityOrderId = order.Id, EntityState = EntityState.Added }; ContextFactory.CurrentThreadContext.SaveObject(journal); #endregion #region CommodityOrder order.State = 3; order.ModifiedOn = now; #endregion int count = ContextFactory.CurrentThreadContext.SaveChanges(); return(count == 0 ? new ResultDTO { isSuccess = false, Message = "数据库保存0行" } : new ResultDTO { isSuccess = true, Message = "成功" }); } catch (Exception ex) { LogHelper.Error(string.Format("YJBJCardBP.CreateExt异常,orderId={0}", orderId), ex); return(new ResultDTO { isSuccess = false, Message = "异常" }); } }
/// <summary> /// 获取分销商佣金入账信息 /// </summary> /// <param name="distributeMoneySearch"></param> /// <returns></returns> public Jinher.AMP.BTP.Deploy.CustomDTO.DistributorMoneyResultDTO GetDistributorMoneyInfoExt(Jinher.AMP.BTP.Deploy.CustomDTO.DistributeMoneySearch distributeMoneySearch) { Jinher.AMP.BTP.Deploy.CustomDTO.DistributorMoneyResultDTO result = new DistributorMoneyResultDTO(); if (distributeMoneySearch == null || distributeMoneySearch.DistributorId == Guid.Empty || distributeMoneySearch.PageIndex < 0 || distributeMoneySearch.PageSize < 1) { return(result); } var payeeType = new List <int>() { 9, 10, 11 }; var orderStates = new List <int>() { 1, 2, 8, 9, 10, 12, 13, 14 }; var orderAfterStates = new List <int>() { 3, 5, 10, 12, 13 }; var distributorId = distributeMoneySearch.DistributorId.ToString(); //佣金累计 查已收益佣金 if (distributeMoneySearch.SearchType == 1) { var query = from os in OrderShare.ObjectSet() join orderService in CommodityOrderService.ObjectSet() on os.OrderId equals orderService.Id where payeeType.Contains(os.PayeeType) && os.ShareKey == distributorId && os.Commission > 0 && orderService.State == 15 select new DistributorMoneyDTO { DistributorId = distributeMoneySearch.DistributorId, SortTime = orderService.EndTime.Value, Money = os.Commission, State = 0 }; result.Count = query.Count(); result.DistributorMoneyList = query.OrderByDescending(n => n.SortTime).Skip((distributeMoneySearch.PageIndex - 1) * distributeMoneySearch.PageSize).Take(distributeMoneySearch.PageSize).ToList(); } //待收益 else if (distributeMoneySearch.SearchType == 2) { var query = from os in OrderShare.ObjectSet() join order in CommodityOrder.ObjectSet() on os.OrderId equals order.Id join dataS in CommodityOrderService.ObjectSet() on os.OrderId equals dataS.Id into tempS from orderService in tempS.DefaultIfEmpty() where payeeType.Contains(os.PayeeType) && os.ShareKey == distributorId && os.Commission > 0 && (orderStates.Contains(order.State) || (order.State == 3 && orderService.State != null && orderAfterStates.Contains(orderService.State))) select new DistributorMoneyDTO { DistributorId = distributeMoneySearch.DistributorId, SortTime = order.PaymentTime.Value, Money = os.Commission, State = 1 }; result.Count = query.Count(); result.DistributorMoneyList = query.OrderByDescending(n => n.SortTime).Skip((distributeMoneySearch.PageIndex - 1) * distributeMoneySearch.PageSize).Take(distributeMoneySearch.PageSize).ToList(); } else { // } return(result); }
/// <summary> /// 查询分销统计信息 /// </summary> /// <param name="search">查询类</param> /// <returns>结果</returns> public Jinher.AMP.BTP.Deploy.CustomDTO.DistributorProfitsResultDTO GetDistributorProfitsExt(Jinher.AMP.BTP.Deploy.CustomDTO.DistributorProfitsSearchDTO search) { Jinher.AMP.BTP.Deploy.CustomDTO.DistributorProfitsResultDTO result = new Deploy.CustomDTO.DistributorProfitsResultDTO(); if (search == null) { return(result); } //查询等级。0:本人;1:一级;2:二级 if (search.SearchType == 0) { var getResult = DSSBP.Instance.GetDistributorProfits(search); if (getResult != null && getResult.ResultCode == 200 && getResult.Data != null) { result = getResult.Data; } if (result.DistributorProfitsInfoList == null || !result.DistributorProfitsInfoList.Any()) { result.DistributorProfitsInfoList = new List <DistributorProfitsInfoDTO>(); result.DistributorProfitsInfoList.Add(new DistributorProfitsInfoDTO()); } //待收益佣金、已收益佣金改为btp实时计算 //本人只返回一条数据,这里只处理第一条数据 result.DistributorProfitsInfoList.First().CommmissionUnPay = (from orderShare in OrderShare.ObjectSet() join order in CommodityOrder.ObjectSet() on orderShare.OrderId equals order.Id join os in CommodityOrderService.ObjectSet() on orderShare.OrderId equals os.Id into tmp from orderService in tmp.DefaultIfEmpty() where new[] { 9, 10, 11 }.Contains(orderShare.PayeeType) && ( new[] { 1, 2, 8, 9, 10, 12, 13, 14 }.Contains(order.State) || ( order.State == 3 && new[] { 3, 5, 10, 12, 13 }.Contains(orderService.State) ) ) && orderShare.PayeeId == search.UserId && order.AppId == search.AppId select orderShare.Commission).ToList().Sum(); result.DistributorProfitsInfoList.First().CommissionAmount = (from orderShare in OrderShare.ObjectSet() join order in CommodityOrder.ObjectSet() on orderShare.OrderId equals order.Id join os in CommodityOrderService.ObjectSet() on orderShare.OrderId equals os.Id into tmp from orderService in tmp.DefaultIfEmpty() where new[] { 9, 10, 11 }.Contains(orderShare.PayeeType) && order.State == 3 && ( orderService.Id == null || orderService.State == 15 ) && orderShare.PayeeId == search.UserId && order.AppId == search.AppId select orderShare.Commission).ToList().Sum(); } else if (search.SearchType == 1) { var getResult = DSSBP.Instance.GetDistributorList(search); if (getResult != null && getResult.ResultCode == 200 && getResult.Data != null) { result = getResult.Data; } } else if (search.SearchType == 2) { var getResult = DSSBP.Instance.GetDistributorList(search); if (getResult != null && getResult.ResultCode == 200 && getResult.Data != null) { result = getResult.Data; } } return(result); }
/// <summary> /// 获取导出的电子发票的详细数据 /// </summary> public List <ElectronicInvoiceDTO> GetInvoiceExportDetailExt(Jinher.AMP.BTP.Deploy.CustomDTO.InvoiceSearchDTO search) { var query = from t1 in Invoice.ObjectSet() join t2 in CommodityOrder.ObjectSet() on t1.CommodityOrderId equals t2.Id join dataS in CommodityOrderService.ObjectSet() on t1.CommodityOrderId equals dataS.Id into tempS from tbS in tempS.DefaultIfEmpty() where t2.AppId == search.AppId && t2.State > 0 && t1.State > 0 && t2.State != 16 && t2.State != 17 && t2.IsDel != 2 && t2.IsDel != 3 select new { t1, t2.Id, CommodityOrder = new InvoiceCommodityOrderInfo() { State = t2.State, Code = t2.Code, PaymentTime = t2.PaymentTime.Value, ReceiptUserName = t2.ReceiptUserName, ReceiptPhone = t2.ReceiptPhone, ReceiptAddress = t2.ReceiptAddress, RealPrice = t2.RealPrice.Value, Payment = t2.Payment, GoldPrice = t2.GoldPrice, GoldCoupon = t2.GoldCoupon, Province = t2.Province, City = t2.City, District = t2.District, StateAfterSales = tbS.State == null ? -1 : tbS.State, SelfTakeFlag = t2.SelfTakeFlag }, model = new ElectronicInvoiceDTO() { AppId = t2.AppId, Code = t2.Code, ReceiptEmail = t1.ReceiptEmail, ReceiptPhone = t1.ReceiptPhone, InvoiceTitle = t1.InvoiceTitle, BuyerCode = t1.Code, ReceiptAddress = (t2.Province + t2.City + t2.District + t2.ReceiptAddress), RealPrice = t2.RealPrice, Freight = t2.Freight } }; if (search.Category > -1) { query = query.Where(p => p.t1.Category == search.Category); } if (search.State > -1) { query = query.Where(p => p.t1.State == search.State); } if (!string.IsNullOrWhiteSpace(search.CommodityOrderState) && search.CommodityOrderState != "null" && search.CommodityOrderState != "-1") { if (search.CommodityOrderState.Contains(",")) { if (search.CommodityOrderState == "8,9,10,12,14") //退款中 { List <int> beforeState = new List <int>() { 8, 9, 10, 12, 14 }; List <int> afterState = new List <int>() { 5, 10, 12 }; query = query.Where(p => beforeState.Contains(p.CommodityOrder.State) || afterState.Contains(p.CommodityOrder.StateAfterSales)); } else { int[] arrystate = Array.ConvertAll <string, int>(search.CommodityOrderState.Split(','), s => int.Parse(s)); //等发货且自提 if (arrystate.Contains(1) && arrystate.Contains(99)) { int[] exceptTmp = new int[] { 99 }; int[] arrystateTmp = arrystate.Except(exceptTmp).ToArray(); query = query.Where(a => arrystateTmp.Contains(a.CommodityOrder.State)); } else if (arrystate.Contains(1)) { if (arrystate.Contains(11)) { int[] exceptTmp = new int[] { 1, 11 }; int[] arrystateTmp = arrystate.Except(exceptTmp).ToArray(); query = query.Where(a => arrystateTmp.Contains(a.CommodityOrder.State) || ((a.CommodityOrder.State == 1 || a.CommodityOrder.State == 11) && a.CommodityOrder.SelfTakeFlag == 0)); } else { int[] exceptTmp = new int[] { 1 }; int[] arrystateTmp = arrystate.Except(exceptTmp).ToArray(); query = query.Where(a => arrystateTmp.Contains(a.CommodityOrder.State) || (a.CommodityOrder.State == 1 && a.CommodityOrder.SelfTakeFlag == 0)); } } else if (arrystate.Contains(99)) { int[] exceptTmp = new int[] { 99 }; int[] arrystateTmp = arrystate.Except(exceptTmp).ToArray(); query = query.Where(a => arrystateTmp.Contains(a.CommodityOrder.State) || ((a.CommodityOrder.State == 1 || a.CommodityOrder.State == 11) && a.CommodityOrder.SelfTakeFlag == 1)); } else { query = query.Where(a => arrystate.Contains(a.CommodityOrder.State)); } } } else { if (search.CommodityOrderState != "-1" && search.CommodityOrderState != null && search.CommodityOrderState != "") { int _state = int.Parse(search.CommodityOrderState); //待发货的 if (_state == 1) { query = query.Where(n => n.CommodityOrder.State == _state && n.CommodityOrder.SelfTakeFlag == 0); } //待自提的 else if (_state == 99) { query = query.Where(n => (n.CommodityOrder.State == 1 || n.CommodityOrder.State == 11) && n.CommodityOrder.SelfTakeFlag == 1); } else if (search.CommodityOrderState == "3") //交易成功 { query = query.Where(n => n.CommodityOrder.State == 3 && (n.CommodityOrder.StateAfterSales == 3 || n.CommodityOrder.StateAfterSales == 15 || n.CommodityOrder.StateAfterSales == -1)); } else if (search.CommodityOrderState == "7") { query = query.Where(n => n.CommodityOrder.State == 7 || n.CommodityOrder.StateAfterSales == 7); } else { query = query.Where(n => n.CommodityOrder.State == _state); } } } } if (!string.IsNullOrWhiteSpace(search.SeacrhContent)) { query = query.Where(p => (p.CommodityOrder.Code.Contains(search.SeacrhContent) || p.CommodityOrder.ReceiptPhone.Contains(search.SeacrhContent) || p.CommodityOrder.ReceiptUserName.Contains(search.SeacrhContent) || p.t1.InvoiceTitle.Contains(search.SeacrhContent))); } List <ElectronicInvoiceDTO> objlist = new List <ElectronicInvoiceDTO>(); foreach (var item in query) { var serarch = from t1 in OrderItem.ObjectSet() join t2 in Commodity.ObjectSet() on t1.CommodityId equals t2.Id where (t1.CommodityOrderId == item.Id) select new { t1.RealPrice, t1.Name, t1.Number, t2.TaxClassCode, t2.No_Code, t2.CostPrice, t2.TaxRate, t2.InputRax }; ElectronicInvoiceDTO model = new ElectronicInvoiceDTO(); if (!string.IsNullOrEmpty(item.model.Code)) { model.Code = "jh" + item.model.Code; } else { model.Code = null; } model.AppId = item.model.AppId; model.ReceiptEmail = item.model.ReceiptEmail; model.ReceiptPhone = item.model.ReceiptPhone; model.InvoiceTitle = item.model.InvoiceTitle; model.BuyerCode = item.model.BuyerCode; model.ReceiptAddress = item.model.ReceiptAddress; model.BuyerPhone = item.model.BuyerPhone; model.BuyerBankNumber = item.model.BuyerBankNumber; model.Specifications = item.model.Specifications; model.ProjectUnit = item.model.ProjectUnit; model.TallageMark = 1; //含税标志固定为1 model.RealPrice = item.model.RealPrice; model.TaxRate = 0.16; //税率固定为0.17 model.Remark = item.model.Remark; model.InvoicelineProperty = 0; //发票行性质国定为0 model.PolicyMark = 0; //优惠政策国定为0 model.ZeroTaxRateMark = item.model.ZeroTaxRateMark; model.SpecialParticular = item.model.SpecialParticular; model.Freight = item.model.Freight; if (serarch.Count() > 0) { List <SmallInvoiceDTO> objInvoice = new List <SmallInvoiceDTO>(); foreach (var _item in serarch.ToList()) { SmallInvoiceDTO entity = new SmallInvoiceDTO(); entity.Price = _item.RealPrice; entity.Name = _item.Name; entity.Number = _item.Number; entity.TaxClassCode = _item.TaxClassCode; //如果商品编号不为空截取0前面的数据 if (!string.IsNullOrWhiteSpace(_item.TaxClassCode)) { entity.No_Code = _item.TaxClassCode.TrimEnd(new char[] { '0' }); } if (string.IsNullOrWhiteSpace(_item.CostPrice.ToString())) { entity.CostPrice = 0; entity.TaxRate = _item.TaxRate; } else { entity.CostPrice = _item.CostPrice; } objInvoice.Add(entity); } model.SmallInvoice = objInvoice; } objlist.Add(model); } return(objlist); }
/// <summary> /// 查询发票信息 /// </summary> /// <param name="search">查询类</param> /// <returns>结果</returns> public Jinher.AMP.BTP.Deploy.CustomDTO.ResultDTO <Jinher.AMP.BTP.Deploy.CustomDTO.InvoiceResultDTO> GetInvoiceInfoListExt(Jinher.AMP.BTP.Deploy.CustomDTO.InvoiceSearchDTO search) { if (search == null || search.AppId == Guid.Empty || search.PageIndex < 0 || search.PageSize < 0) { return(new ResultDTO <InvoiceResultDTO>() { ResultCode = 1, Message = "参数不能为空" }); } var result = new ResultDTO <InvoiceResultDTO>(); result.Data = new InvoiceResultDTO(); var query = from invoice in Invoice.ObjectSet() join commodityOrder in CommodityOrder.ObjectSet() on invoice.CommodityOrderId equals commodityOrder.Id join dataS in CommodityOrderService.ObjectSet() on invoice.CommodityOrderId equals dataS.Id into tempS from tbS in tempS.DefaultIfEmpty() where commodityOrder.AppId == search.AppId && commodityOrder.State > 0 && invoice.State > 0 && commodityOrder.State != 16 && commodityOrder.State != 17 && commodityOrder.IsDel != 2 && commodityOrder.IsDel != 3 select new { Invoice = invoice, CommodityOrder = new InvoiceCommodityOrderInfo() { State = commodityOrder.State, Code = commodityOrder.Code, PaymentTime = commodityOrder.PaymentTime.Value, ReceiptUserName = commodityOrder.ReceiptUserName, ReceiptPhone = commodityOrder.ReceiptPhone, ReceiptAddress = commodityOrder.ReceiptAddress, RealPrice = commodityOrder.RealPrice.Value, Payment = commodityOrder.Payment, GoldPrice = commodityOrder.GoldPrice, GoldCoupon = commodityOrder.GoldCoupon, Province = commodityOrder.Province, City = commodityOrder.City, District = commodityOrder.District, StateAfterSales = tbS.State == null ? -1 : tbS.State, SelfTakeFlag = commodityOrder.SelfTakeFlag } }; if (search.Category > -1) { query = query.Where(t => t.Invoice.Category == search.Category); } if (search.State > -1) { query = query.Where(t => t.Invoice.State == search.State); } if (!string.IsNullOrWhiteSpace(search.CommodityOrderState) && search.CommodityOrderState != "null" && search.CommodityOrderState != "-1") { if (search.CommodityOrderState.Contains(",")) { if (search.CommodityOrderState == "8,9,10,12,14") //退款中 { List <int> beforeState = new List <int>() { 8, 9, 10, 12, 14 }; List <int> afterState = new List <int>() { 5, 10, 12 }; query = query.Where(n => beforeState.Contains(n.CommodityOrder.State) || afterState.Contains(n.CommodityOrder.StateAfterSales)); } else { int[] arrystate = Array.ConvertAll <string, int>(search.CommodityOrderState.Split(','), s => int.Parse(s)); //等发货且自提 if (arrystate.Contains(1) && arrystate.Contains(99)) { int[] exceptTmp = new int[] { 99 }; int[] arrystateTmp = arrystate.Except(exceptTmp).ToArray(); query = query.Where(a => arrystateTmp.Contains(a.CommodityOrder.State)); } else if (arrystate.Contains(1)) { if (arrystate.Contains(11)) { int[] exceptTmp = new int[] { 1, 11 }; int[] arrystateTmp = arrystate.Except(exceptTmp).ToArray(); query = query.Where(a => arrystateTmp.Contains(a.CommodityOrder.State) || ((a.CommodityOrder.State == 1 || a.CommodityOrder.State == 11) && a.CommodityOrder.SelfTakeFlag == 0)); } else { int[] exceptTmp = new int[] { 1 }; int[] arrystateTmp = arrystate.Except(exceptTmp).ToArray(); query = query.Where(a => arrystateTmp.Contains(a.CommodityOrder.State) || (a.CommodityOrder.State == 1 && a.CommodityOrder.SelfTakeFlag == 0)); } } else if (arrystate.Contains(99)) { int[] exceptTmp = new int[] { 99 }; int[] arrystateTmp = arrystate.Except(exceptTmp).ToArray(); query = query.Where(a => arrystateTmp.Contains(a.CommodityOrder.State) || ((a.CommodityOrder.State == 1 || a.CommodityOrder.State == 11) && a.CommodityOrder.SelfTakeFlag == 1)); } else { query = query.Where(a => arrystate.Contains(a.CommodityOrder.State)); } } } else { if (search.CommodityOrderState != "-1" && search.CommodityOrderState != null && search.CommodityOrderState != "") { int _state = int.Parse(search.CommodityOrderState); //待发货的 if (_state == 1) { query = query.Where(n => n.CommodityOrder.State == _state && n.CommodityOrder.SelfTakeFlag == 0); } //待自提的 else if (_state == 99) { query = query.Where(n => (n.CommodityOrder.State == 1 || n.CommodityOrder.State == 11) && n.CommodityOrder.SelfTakeFlag == 1); } else if (search.CommodityOrderState == "3") //交易成功 { query = query.Where(n => n.CommodityOrder.State == 3 && (n.CommodityOrder.StateAfterSales == 3 || n.CommodityOrder.StateAfterSales == 15 || n.CommodityOrder.StateAfterSales == -1)); } else if (search.CommodityOrderState == "7") { query = query.Where(n => n.CommodityOrder.State == 7 || n.CommodityOrder.StateAfterSales == 7); } else { query = query.Where(n => n.CommodityOrder.State == _state); } //countquery = countquery.Where(n => n.State == _state); } } } if (!string.IsNullOrWhiteSpace(search.SeacrhContent)) { //if (System.Text.RegularExpressions.Regex.IsMatch(search.SeacrhContent, "^[0-9]+$")) //{ // if (search.SeacrhContent.Length>11) // { // query = query.Where(p => p.CommodityOrder.Code.Contains(search.SeacrhContent)); // } // else // { // query = query.Where(p => p.CommodityOrder.ReceiptPhone.Contains(search.SeacrhContent)); // } //} //else //{ // query = query.Where(p => p.CommodityOrder.ReceiptUserName.Contains(search.SeacrhContent)); //} query = query.Where(p => (p.CommodityOrder.Code.Contains(search.SeacrhContent) || p.CommodityOrder.ReceiptPhone.Contains(search.SeacrhContent) || p.CommodityOrder.ReceiptUserName.Contains(search.SeacrhContent) || p.Invoice.InvoiceTitle.Contains(search.SeacrhContent))); } result.Data.Count = query.Count(); var searchResult = query.OrderByDescending(n => n.CommodityOrder.PaymentTime).Skip((search.PageIndex - 1) * search.PageSize).Take(search.PageSize).ToList(); //地址附值 if (searchResult.Any()) { foreach (var item in searchResult) { item.CommodityOrder.Address = string.Format("{0}{1}{2}{3}", item.CommodityOrder.Province, item.CommodityOrder.City, item.CommodityOrder.District, item.CommodityOrder.ReceiptAddress); } } //由于优惠券与积分存在另一表,所以单独取 if (searchResult.Any()) { var orderIds = searchResult.Select(t => t.Invoice.CommodityOrderId).ToList(); //优惠券与花费积分抵现金额 CouponValue SpendScoreCost var orderPayDetail = OrderPayDetail.ObjectSet().Where(t => orderIds.Contains(t.OrderId)).ToList(); if (orderPayDetail.Count > 0) { foreach (var item in searchResult) { var couponValue = orderPayDetail.Where(t => t.OrderId == item.Invoice.CommodityOrderId && t.ObjectType == 1).Select(t => t.Amount).FirstOrDefault(); item.CommodityOrder.CouponValue = couponValue; var spendScoreMoney = orderPayDetail.Where(t => t.OrderId == item.Invoice.CommodityOrderId && t.ObjectType == 2).Select(t => t.Amount).FirstOrDefault(); item.CommodityOrder.SpendScoreMoney = spendScoreMoney; } } } result.Data.InvoiceInfoList = new List <InvoiceInfoDTO>(); foreach (var item in searchResult) { InvoiceInfoDTO model = new InvoiceInfoDTO(); model.Id = item.Invoice.Id; model.CommodityOrderId = item.Invoice.CommodityOrderId; model.InvoiceTitle = item.Invoice.InvoiceTitle; model.InvoiceContent = item.Invoice.InvoiceContent; model.InvoiceType = item.Invoice.InvoiceType; model.SubTime = item.Invoice.SubTime; model.ModifiedOn = item.Invoice.ModifiedOn; model.ReceiptPhone = item.Invoice.ReceiptPhone; model.ReceiptEmail = item.Invoice.ReceiptEmail; model.State = item.Invoice.State; model.Remark = item.Invoice.Remark; model.Category = item.Invoice.Category; model.SubId = item.Invoice.SubId; model.Code = item.Invoice.Code; InvoiceCommodityOrderInfo orderInfo = new InvoiceCommodityOrderInfo(); orderInfo.Code = item.CommodityOrder.Code; orderInfo.Payment = item.CommodityOrder.Payment; orderInfo.CouponValue = item.CommodityOrder.CouponValue; orderInfo.GoldPrice = item.CommodityOrder.GoldPrice; orderInfo.GoldCoupon = item.CommodityOrder.GoldCoupon; orderInfo.PaymentTime = item.CommodityOrder.PaymentTime; orderInfo.RealPrice = item.CommodityOrder.RealPrice; orderInfo.ReceiptAddress = item.CommodityOrder.ReceiptAddress; orderInfo.ReceiptPhone = item.CommodityOrder.ReceiptPhone; orderInfo.ReceiptUserName = item.CommodityOrder.ReceiptUserName; orderInfo.Province = item.CommodityOrder.Province; orderInfo.City = item.CommodityOrder.City; orderInfo.District = item.CommodityOrder.District; orderInfo.Address = item.CommodityOrder.Address; orderInfo.State = item.CommodityOrder.State; orderInfo.StateAfterSales = item.CommodityOrder.StateAfterSales; orderInfo.SelfTakeFlag = item.CommodityOrder.SelfTakeFlag; model.commodityOrderInfo = orderInfo; result.Data.InvoiceInfoList.Add(model); } result.ResultCode = 0; result.Message = "Success"; return(result); }