/// <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> 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 结束导入未设置结算价的金币支付订单"); }