protected override GetVipAmountDetailRD ProcessRequest(DTO.Base.APIRequest <GetVipAmountDetailRP> pRequest) { var rd = new GetVipAmountDetailRD(); var para = pRequest.Parameters; VipAmountBLL vipAmountBLL = new VipAmountBLL(CurrentUserInfo); var vipAmountDetailBLL = new VipAmountDetailBLL(CurrentUserInfo); LoggingSessionInfo loggingSessionInfo = Default.GetBSLoggingSession(pRequest.CustomerID, pRequest.UserID); //查询参数 List <IWhereCondition> complexCondition = new List <IWhereCondition> { }; //商户条件 complexCondition.Add(new EqualsCondition() { FieldName = "a.VipID", Value = CurrentUserInfo.UserID }); complexCondition.Add(new EqualsCondition() { FieldName = "a.VipCardCode", Value = para.VipCardCode }); complexCondition.Add(new EqualsCondition() { FieldName = "a.CustomerId", Value = loggingSessionInfo.ClientID }); if (para.Type == 1) //余额 { complexCondition.Add(new DirectCondition(" a.AmountSourceId NOT IN (36,35,20) ")); complexCondition.Add(new DirectCondition(" a.AmountSourceId > 0 ")); } else if (para.Type == 2) //返现 { complexCondition.Add(new DirectCondition(" a.AmountSourceId in (2,3,13,16,22,24)")); } #region 正常余额 //排序参数 List <OrderBy> lstOrder = new List <OrderBy> { }; lstOrder.Add(new OrderBy() { FieldName = "a.CreateTime", Direction = OrderByDirections.Desc }); var tempList = vipAmountDetailBLL.GetVipAmountDetailList(complexCondition.ToArray(), lstOrder.ToArray(), para.PageSize, para.PageIndex + 1); rd.TotalCount = tempList.RowCount; rd.TotalPageCount = tempList.PageCount; rd.VipAmountDetailList = tempList.Entities.Select(t => new VipAmountDetailInfo() { AmountSourceName = t.AmountSourceName, Amount = t.Amount.Value, CreateTime = t.CreateTime.Value.ToString("yyyy-MM-dd") }).ToArray(); #endregion #region 统计信息 //查询当前余额/返现 rd.CurrentAmount = 0; //当前余额/返现(默认值) var vipAmountInfo = vipAmountBLL.QueryByEntity(new VipAmountEntity() { VipId = pRequest.UserID, VipCardCode = para.VipCardCode }, null).FirstOrDefault(); if (vipAmountInfo != null) { if (para.Type == 1) //当前余额 { rd.CurrentAmount = vipAmountInfo.EndAmount.Value; } else if (para.Type == 2) //返现 { rd.CurrentAmount = vipAmountInfo.ValidReturnAmount.Value; } decimal[] array = vipAmountBLL.GetVipSumAmountByCondition(pRequest.UserID, CurrentUserInfo.ClientID, false); rd.OutAmount = -Convert.ToDecimal(array[2]); //支出余额 } #endregion return(rd); }
/// <summary> /// 计算购卡分润 /// </summary> public void CalculateSalesVipCardOrderJob() { var numCount = 50; var customerIDs = CustomerBLL.Instance.GetCustomerList(); foreach (var customer in customerIDs) { string connString = customer.Value; var count = RedisOpenAPI.Instance.CCSalesCardOrder().GetSalesCardOrderLength(new CC_Order { CustomerID = customer.Key }); if (count.Code != ResponseCode.Success) { BaseService.WriteLog("从redis获取vipcard订单数据失败"); continue; } if (count.Result <= 0) { continue; } if (count.Result < numCount) { numCount = Convert.ToInt32(count.Result); } //DataTable dtAmountDetail = CreateTableAmountDetail(); //DataTable dtAmount = CreateTableAmount(); //DataTable dtSplitProfitRecord = CreateTableSplitProfitRecord(); for (var i = 0; i < numCount; i++) { var response = RedisOpenAPI.Instance.CCSalesCardOrder().GetSalesCardOrder(new CC_Order { CustomerID = customer.Key }); if (response.Code == ResponseCode.Success) { var orderInfo = response.Result.OrderInfo.JsonDeserialize <T_InoutEntity>(); var loggingSessionInfo = CustomerBLL.Instance.GetBSLoggingSession(customer.Key, "RedisSystem"); T_InoutBLL inoutBLL = new T_InoutBLL(loggingSessionInfo); if (orderInfo != null) { VipBLL bllVip = new VipBLL(loggingSessionInfo); T_Inout_DetailBLL bllInoutDetail = new T_Inout_DetailBLL(loggingSessionInfo); T_VirtualItemTypeSettingBLL bllVirtualItemTypeSetting = new T_VirtualItemTypeSettingBLL(loggingSessionInfo); VipCardUpgradeRuleBLL bllVipCardUpgradeRule = new VipCardUpgradeRuleBLL(loggingSessionInfo); VipAmountBLL bllVipAmount = new VipAmountBLL(loggingSessionInfo); VipAmountDetailBLL bllVipAmountDetail = new VipAmountDetailBLL(loggingSessionInfo); T_SplitProfitRecordBLL bllSplitProfitRecord = new T_SplitProfitRecordBLL(loggingSessionInfo); VipAmountEntity entityVipAmount = new VipAmountEntity(); VipAmountDetailEntity entityVipAmountDetail = new VipAmountDetailEntity(); T_SplitProfitRecordEntity entitySplitProfitRecord = new T_SplitProfitRecordEntity(); DataSet dsVipCardLevel = bllVip.GetVipCardLevel(orderInfo.vip_no, loggingSessionInfo.ClientID); var entityInoutDetail = bllInoutDetail.QueryByEntity(new T_Inout_DetailEntity() { order_id = orderInfo.order_id }, null).FirstOrDefault(); if (entityInoutDetail == null) { continue; } var vipCardType = bllVirtualItemTypeSetting.QueryByEntity(new T_VirtualItemTypeSettingEntity() { SkuId = entityInoutDetail.sku_id, IsDelete = 0 }, null).FirstOrDefault(); if (vipCardType != null) { int intVipCardTypeID = Convert.ToInt32(vipCardType.ObjecetTypeId); var entityVipCardUpgradeRule = bllVipCardUpgradeRule.QueryByEntity(new VipCardUpgradeRuleEntity() { VipCardTypeID = intVipCardTypeID, IsPurchaseUpgrade = 1, IsDelete = 0 }, null).SingleOrDefault(); if (entityVipCardUpgradeRule != null) { VipCardProfitRuleBLL bllVipCardProfitRule = new VipCardProfitRuleBLL(loggingSessionInfo); var entityVipCardProfitRule = bllVipCardProfitRule.QueryByEntity(new VipCardProfitRuleEntity() { VipCardTypeID = intVipCardTypeID, IsDelete = 0 }, null); foreach (var ProfitRule in entityVipCardProfitRule) { if (ProfitRule.IsApplyAllUnits == 0) { VipCardProfitRuleUnitMappingBLL bllVipCardProfitRuleUnitMapping = new VipCardProfitRuleUnitMappingBLL(loggingSessionInfo); var vipCardProfitRuleUnitMapping = bllVipCardProfitRuleUnitMapping.QueryByEntity(new VipCardProfitRuleUnitMappingEntity() { CardBuyToProfitRuleId = ProfitRule.CardBuyToProfitRuleId, UnitID = orderInfo.sales_unit_id, IsDelete = 0, CustomerID = loggingSessionInfo.ClientID }, null).SingleOrDefault(); if (vipCardProfitRuleUnitMapping == null) { continue; } } decimal amount = 0; string strAmountSourceId = string.Empty; string strVipId = string.Empty; string strUserType = string.Empty; if (ProfitRule.ProfitOwner == "Employee") { strAmountSourceId = "37"; strVipId = orderInfo.sales_user; strUserType = "User"; } if (ProfitRule.ProfitOwner == "Unit") { strAmountSourceId = "40"; strVipId = orderInfo.sales_unit_id; strUserType = "Unit"; } amount = (decimal)ProfitRule.FirstCardSalesProfitPct * (decimal)orderInfo.actual_amount * (decimal)0.01; var vipAmountDetail = bllVipAmountDetail.QueryByEntity(new VipAmountDetailEntity() { ObjectId = orderInfo.order_id, AmountSourceId = strAmountSourceId }, null); if (vipAmountDetail != null && vipAmountDetail.Length > 0) { continue; } if (amount > 0) { IDbTransaction tran = new JIT.CPOS.BS.DataAccess.Base.TransactionHelper(loggingSessionInfo).CreateTransaction(); try { // DataRow dr_SplitProfitRecord = dtSplitProfitRecord.NewRow(); // dr_SplitProfitRecord["Id"] = Guid.NewGuid(); // dr_SplitProfitRecord["SourceType"] = "Amount"; // dr_SplitProfitRecord["SourceId"] = strAmountSourceId; // dr_SplitProfitRecord["ObjectId"] = orderInfo.order_id; //dr_SplitProfitRecord["UserType"] = strUserType; // dr_SplitProfitRecord["UserId"] = orderInfo.sales_user; // dr_SplitProfitRecord["SplitAmount"] = amount; // dr_SplitProfitRecord["SplitSattus"] = "10"; // dr_SplitProfitRecord["CustomerId"] = loggingSessionInfo.ClientID; // dr_SplitProfitRecord["CreateTime"] = DateTime.Now; // dr_SplitProfitRecord["CreateBy"] = loggingSessionInfo.ClientID; // dr_SplitProfitRecord["LastUpdateTime"] = DateTime.Now; // dr_SplitProfitRecord["LastUpdateBy"] = loggingSessionInfo.ClientID; // dr_SplitProfitRecord["IsDelete"] = 0; // dtSplitProfitRecord.Rows.Add(dr_SplitProfitRecord); // DataRow dr_AmountDetail = dtAmountDetail.NewRow(); // dr_AmountDetail["VipAmountDetailId"] = Guid.NewGuid(); //dr_AmountDetail["VipId"] = strVipId; // dr_AmountDetail["VipCardCode"] = ""; // dr_AmountDetail["UnitID"] = ""; // dr_AmountDetail["UnitName"] = ""; // dr_AmountDetail["SalesAmount"] = 0; // dr_AmountDetail["Amount"] = amount; // dr_AmountDetail["UsedReturnAmount"] = 0; // dr_AmountDetail["Reason"] = "首次售卡分润"; // dr_AmountDetail["EffectiveDate"] = DateTime.Now; // dr_AmountDetail["DeadlineDate"] = Convert.ToDateTime("9999-12-31 23:59:59"); // dr_AmountDetail["AmountSourceId"] = strAmountSourceId; // dr_AmountDetail["ObjectId"] = orderInfo.order_id; // dr_AmountDetail["Remark"] = "首次售卡分润"; // dr_AmountDetail["IsValid"] = 0; // dr_AmountDetail["IsWithdrawCash"] = 0; // dr_AmountDetail["CustomerID"] = loggingSessionInfo.ClientID; // dr_AmountDetail["CreateTime"] = DateTime.Now; // dr_AmountDetail["CreateBy"] = loggingSessionInfo.ClientID; // dr_AmountDetail["LastUpdateBy"] = loggingSessionInfo.ClientID; // dr_AmountDetail["LastUpdateTime"] = DateTime.Now; // dr_AmountDetail["IsDelete"] = 0; // //dr_AmountDetail["IsCalculated"] = 1; // dtAmountDetail.Rows.Add(dr_AmountDetail); entitySplitProfitRecord = new T_SplitProfitRecordEntity() { ID = Guid.NewGuid().ToString(), SourceType = "Amount", SourceId = strAmountSourceId, ObjectId = orderInfo.order_id, UserType = strUserType, UserId = orderInfo.sales_user, SplitAmount = amount, SplitSattus = "10", CustomerID = loggingSessionInfo.ClientID }; bllSplitProfitRecord.Create(entitySplitProfitRecord, tran); entityVipAmountDetail = new VipAmountDetailEntity { VipAmountDetailId = Guid.NewGuid(), VipId = strVipId, Amount = amount, UsedReturnAmount = 0, EffectiveDate = DateTime.Now, DeadlineDate = Convert.ToDateTime("9999-12-31 23:59:59"), AmountSourceId = strAmountSourceId, ObjectId = orderInfo.order_id, CustomerID = loggingSessionInfo.ClientID, Reason = "首次售卡分润", Remark = "首次售卡分润", IsWithdrawCash = 0 }; bllVipAmountDetail.Create(entityVipAmountDetail, (SqlTransaction)tran); entityVipAmount = bllVipAmount.QueryByEntity(new VipAmountEntity() { VipId = orderInfo.sales_user, IsDelete = 0 }, null).SingleOrDefault(); if (entityVipAmount == null) { //DataRow dr_Amount = dtAmount.NewRow(); //dr_Amount["VipId"] = orderInfo.sales_user; //dr_Amount["VipCardCode"] = ""; //dr_Amount["BeginAmount"] = 0; //dr_Amount["InAmount"] = amount; //dr_Amount["OutAmount"] = 0; //dr_Amount["EndAmount"] = amount; //dr_Amount["TotalAmount"] = amount; //dr_Amount["BeginReturnAmount"] = 0; //dr_Amount["InReturnAmount"] = 0; //dr_Amount["OutReturnAmount"] = 0; //dr_Amount["ReturnAmount"] = 0; //dr_Amount["ImminentInvalidRAmount"] = 0; //dr_Amount["InvalidReturnAmount"] = 0; //dr_Amount["ValidReturnAmount"] = 0; //dr_Amount["TotalReturnAmount"] = 0; //dr_Amount["PayPassword"] = ""; //dr_Amount["IsLocking"] = 0; //dr_Amount["CustomerID"] = loggingSessionInfo.ClientID; //dr_Amount["CreateTime"] = DateTime.Now; //dr_Amount["CreateBy"] = loggingSessionInfo.ClientID; //dr_Amount["LastUpdateBy"] = loggingSessionInfo.ClientID; //dr_Amount["LastUpdateTime"] = DateTime.Now; //dr_Amount["IsDelete"] = 0; //dtAmount.Rows.Add(dr_Amount); entityVipAmount = new VipAmountEntity { VipId = strVipId, BeginAmount = 0, InAmount = amount, OutAmount = 0, EndAmount = amount, TotalAmount = amount, BeginReturnAmount = 0, InReturnAmount = 0, OutReturnAmount = 0, ReturnAmount = 0, ImminentInvalidRAmount = 0, InvalidReturnAmount = 0, ValidReturnAmount = 0, TotalReturnAmount = 0, IsLocking = 0, CustomerID = loggingSessionInfo.ClientID, VipCardCode = "" }; bllVipAmount.Create(entityVipAmount, tran); } else { entityVipAmount.InReturnAmount = (entityVipAmount.InReturnAmount == null ? 0 : entityVipAmount.InReturnAmount.Value) + amount; entityVipAmount.TotalReturnAmount = (entityVipAmount.TotalReturnAmount == null ? 0 : entityVipAmount.TotalReturnAmount.Value) + amount; entityVipAmount.ValidReturnAmount = (entityVipAmount.ValidReturnAmount == null ? 0 : entityVipAmount.ValidReturnAmount.Value) + amount; entityVipAmount.ReturnAmount = (entityVipAmount.ReturnAmount == null ? 0 : entityVipAmount.ReturnAmount.Value) + amount; bllVipAmount.Update(entityVipAmount); } tran.Commit(); } catch (Exception) { tran.Rollback(); throw; } } } } } } } } //if (dtAmount.Rows.Count > 0) //{ // Utils.SqlBulkCopy(connString, dtAmount, "VipAmount"); //} //if (dtAmountDetail.Rows.Count > 0 && dtSplitProfitRecord.Rows.Count > 0) //{ // Utils.SqlBulkCopy(connString, dtSplitProfitRecord, "T_SplitProfitRecord"); // Utils.SqlBulkCopy(connString, dtAmountDetail, "VipAmountDetail"); //} } }
protected override EmptyResponseData ProcessRequest(APIRequest <SetVipAmountRP> pRequest) { var rd = new EmptyResponseData(); var para = pRequest.Parameters; var loggingSessionInfo = new SessionManager().CurrentUserLoginInfo; //登录状态信息 var vipAmountBLL = new VipAmountBLL(loggingSessionInfo); var vipAmountDetailBLL = new VipAmountDetailBLL(loggingSessionInfo); var objectImagesBLL = new ObjectImagesBLL(loggingSessionInfo); //图片表业务对象实例化 var unitBLL = new t_unitBLL(loggingSessionInfo); var vipBLL = new VipBLL(loggingSessionInfo); var vipInfo = vipBLL.GetByID(para.VipID); var unitInfo = unitBLL.GetByID(loggingSessionInfo.CurrentUserRole.UnitId); var pTran = vipAmountBLL.GetTran(); //事务 var vipAmountEntity = vipAmountBLL.QueryByEntity(new VipAmountEntity() { VipId = vipInfo.VIPID, VipCardCode = vipInfo.VipCode }, null).FirstOrDefault(); using (pTran.Connection) { try { var amountDetail = new VipAmountDetailEntity() { Amount = para.Amount, AmountSourceId = para.AmountSourceID, ObjectId = "", Reason = para.Reason, Remark = para.Remark }; string vipAmountDetailId = string.Empty; if (para.AmountSourceID == "23") { //人工调整余额 vipAmountDetailId = vipAmountBLL.AddVipAmount(vipInfo, unitInfo, ref vipAmountEntity, amountDetail, pTran, loggingSessionInfo); if (!string.IsNullOrWhiteSpace(vipAmountDetailId)) {//发送微信账户余额变动模板消息 var CommonBLL = new CommonBLL(); CommonBLL.BalanceChangedMessage("人工调整", vipAmountEntity, amountDetail, vipInfo.WeiXinUserId, vipInfo.VIPID, loggingSessionInfo); } } else if (para.AmountSourceID == "24") { //人工调整返现 vipAmountDetailId = vipAmountBLL.AddReturnAmount(vipInfo, unitInfo, vipAmountEntity, ref amountDetail, pTran, loggingSessionInfo); if (!string.IsNullOrWhiteSpace(vipAmountDetailId)) {//发送返现到账通知微信模板消息 var CommonBLL = new CommonBLL(); CommonBLL.CashBackMessage("人工调整", amountDetail.Amount, vipInfo.WeiXinUserId, vipInfo.VIPID, loggingSessionInfo); } } //增加图片上传 if (!string.IsNullOrEmpty(para.ImageUrl)) { var objectImagesEntity = new ObjectImagesEntity() { ImageId = Guid.NewGuid().ToString(), ObjectId = vipAmountDetailId, ImageURL = para.ImageUrl }; objectImagesBLL.Create(objectImagesEntity); } pTran.Commit(); //提交事物 } catch (APIException apiEx) { pTran.Rollback();//回滚事物 throw new APIException(apiEx.ErrorCode, apiEx.Message); } catch (Exception ex) { pTran.Rollback();//回滚事物 throw new Exception(ex.Message); } } return(rd); }
protected override GetVipAmountDetailRD ProcessRequest(DTO.Base.APIRequest <GetVipAmountDetailRP> pRequest) { var rd = new GetVipAmountDetailRD(); var parameter = pRequest.Parameters; LoggingSessionInfo loggingSessionInfo = Default.GetBSLoggingSession(pRequest.CustomerID, pRequest.UserID); VipAmountBLL vipAmountBLL = new VipAmountBLL(loggingSessionInfo); var vipAmountDetailBLL = new VipAmountDetailBLL(loggingSessionInfo); //查询参数 List <IWhereCondition> Condition = new List <IWhereCondition> { }; Condition.Add(new EqualsCondition() { FieldName = "CustomerId", Value = loggingSessionInfo.ClientID }); List <OrderBy> Orders = new List <OrderBy> { }; //商户条件 if (parameter.DdividendType == 1) //全部=全部收入+提现明细 { Orders.Add(new OrderBy() { FieldName = "createTime", Direction = OrderByDirections.Asc }); Condition.Add(new DirectCondition(" (AmountSourceId = -1 OR AmountSourceId=35 OR AmountSourceId=36 OR AmountSourceId=20) ")); //全部收入+提现信息 } else if (parameter.DdividendType == 2) { Orders.Add(new OrderBy() { FieldName = "createTime", Direction = OrderByDirections.Asc }); Condition.Add(new DirectCondition(" AmountSourceId IN (36,35,20)")); //全部收入 Condition.Add(new DirectCondition(" TableType != 'VipWithdrawDepositApply'")); //去除提现 } else if (parameter.DdividendType == 3) { Orders.Add(new OrderBy() { FieldName = "createTime", Direction = OrderByDirections.Asc }); Condition.Add(new DirectCondition(" TableType = 'VipWithdrawDepositApply'")); //只获取提现 } //获取红利余额+提现记录 var tempList = vipAmountDetailBLL.GetVipAmountDetailAndWithdrawList(Condition.ToArray(), loggingSessionInfo.UserID, Orders.ToArray(), parameter.PageSize, parameter.PageIndex); rd.TotalCount = tempList.RowCount; rd.TotalPageCount = tempList.PageCount; rd.VipAmountDetailList = tempList.Entities.Select(t => new VipAmountDetailInfo() { AmountSourceName = t.AmountSourceName, Amount = t.Amount.Value, CreateTime = t.CreateTime.Value.ToString("yyyy-MM-dd"), Reason = t.Reason }).ToArray(); #region 统计信息 //查询 提现余额+当前余额+总收入 decimal[] array = vipAmountBLL.GetVipSumAmountByCondition(CurrentUserInfo.UserID, CurrentUserInfo.ClientID, true); rd.CurrentAmount = array[0]; //红利余额{总金额} rd.WithdrawAmount = array[1]; //支出余额 rd.InAmount = array[2]; //提现金额 #endregion return(rd); }
protected override SetReceiveAmountOrderRD ProcessRequest(APIRequest <SetReceiveAmountOrderRP> pRequest) { SetReceiveAmountOrderRP rp = pRequest.Parameters; SetReceiveAmountOrderRD rd = new SetReceiveAmountOrderRD(); var receiveAmountOrderBll = new ReceiveAmountOrderBLL(CurrentUserInfo); var sysVipCardGradeBLL = new SysVipCardGradeBLL(CurrentUserInfo); //获取折扣表 var vipBLL = new VipBLL(CurrentUserInfo); var unitBLL = new t_unitBLL(CurrentUserInfo); var vipInfo = vipBLL.GetByID(pRequest.UserID); //获取会员信息 if (vipInfo == null) { throw new APIException("没有会员信息") { ErrorCode = 101 }; } var unitInfo = unitBLL.GetByID(rp.UnitId); if (unitInfo == null) { throw new APIException("没有服务门店信息") { ErrorCode = 101 }; } decimal discountAmount = 0; //抵扣金额汇总 decimal couponAmount = 0; //优惠券抵用金额 decimal endAmount = rp.VipEndAmount; //余额 decimal integralAmount = rp.Integral; //获取订单号 TUnitExpandBLL serviceUnitExpand = new TUnitExpandBLL(CurrentUserInfo); string orderNo = serviceUnitExpand.GetUnitOrderNo(); //折扣 decimal discount = 1; if (rp.VipDiscount > 0) { discount = sysVipCardGradeBLL.GetVipDiscount() / 10;//会员折扣 } decimal tempAmount = Math.Round((discount == 0 ? 1 : discount) * rp.TotalAmount, 2, MidpointRounding.AwayFromZero); Guid orderId = Guid.NewGuid(); //积分处理 if (rp.IntegralFlag == 1) { //加入折扣金额 discountAmount = discountAmount + rp.IntegralAmount; } else { integralAmount = 0; } //使用优惠券 if (rp.CouponFlag == 1) { #region 判断优惠券是否是该会员的 var vipcouponMappingBll = new VipCouponMappingBLL(CurrentUserInfo); var vipcouponmappingList = vipcouponMappingBll.QueryByEntity(new VipCouponMappingEntity() { VIPID = vipInfo.VIPID, CouponID = rp.CouponId }, null); if (vipcouponmappingList == null || vipcouponmappingList.Length == 0) { throw new APIException("此张优惠券不是该会员的") { ErrorCode = 103 }; } #endregion #region 判断优惠券是否有效 var couponBll = new CouponBLL(CurrentUserInfo); var couponEntity = couponBll.GetByID(rp.CouponId); if (couponEntity == null) { throw new APIException("无效的优惠券") { ErrorCode = 103 }; } if (couponEntity.Status == 1) { throw new APIException("优惠券已使用") { ErrorCode = 103 }; } if (couponEntity.EndDate < DateTime.Now) { throw new APIException("优惠券已过期") { ErrorCode = 103 }; } var couponTypeBll = new CouponTypeBLL(CurrentUserInfo); var couponTypeEntity = couponTypeBll.GetByID(couponEntity.CouponTypeID); if (couponTypeEntity == null) { throw new APIException("无效的优惠券类型") { ErrorCode = 103 }; } #endregion discountAmount = discountAmount + couponTypeEntity.ParValue ?? 0; couponAmount = couponTypeEntity.ParValue ?? 0; //更新使用记录 var couponUseBll = new CouponUseBLL(CurrentUserInfo); var couponUseEntity = new CouponUseEntity() { CouponUseID = Guid.NewGuid(), CouponID = rp.CouponId, VipID = vipInfo.VIPID, UnitID = rp.UnitId, OrderID = orderId.ToString(), Comment = "商城使用电子券", CustomerID = CurrentUserInfo.ClientID, CreateBy = CurrentUserInfo.UserID, CreateTime = DateTime.Now, LastUpdateBy = CurrentUserInfo.UserID, LastUpdateTime = DateTime.Now, IsDelete = 0 }; couponUseBll.Create(couponUseEntity); //更新CouponType数量 var conponTypeBll = new CouponTypeBLL(CurrentUserInfo); var conponTypeEntity = conponTypeBll.QueryByEntity(new CouponTypeEntity() { CouponTypeID = new Guid(couponEntity.CouponTypeID), CustomerId = CurrentUserInfo.ClientID }, null).FirstOrDefault(); conponTypeEntity.IsVoucher += 1; conponTypeBll.Update(conponTypeEntity); //停用该优惠券 couponEntity.Status = 1; couponBll.Update(couponEntity); } //使用余额 if (rp.VipEndAmountFlag == 1) { var vipAmountBll = new VipAmountBLL(CurrentUserInfo); var vipAmountDetailBll = new VipAmountDetailBLL(CurrentUserInfo); var vipAmountEntity = vipAmountBll.QueryByEntity(new VipAmountEntity() { VipId = vipInfo.VIPID, VipCardCode = vipInfo.VipCode }, null).FirstOrDefault(); if (vipAmountEntity != null) { //判断该会员账户是否被冻结 if (vipAmountEntity.IsLocking == 1) { throw new APIException("账户已被冻结,请先解冻") { ErrorCode = 103 } } ; //判断该会员的账户余额是否大于本次使用的余额 if (vipAmountEntity.EndAmount < rp.VipEndAmount) { throw new APIException(string.Format("账户余额不足,当前余额为【{0}】", vipAmountEntity.EndAmount)) { ErrorCode = 103 } } ; //所剩余额大于商品价格,扣除余额的数量为商品价格 if (tempAmount < rp.VipEndAmount) { rp.VipEndAmount = endAmount = Convert.ToDecimal(tempAmount); } } } //不使用余额,余额为0 else { endAmount = 0; } //实付金额 decimal transAmount = tempAmount - discountAmount; //支付状态 string payStatus = "0"; //支付时间 DateTime?PayDatetTime = null; //实付金额全是由余额支付,支付状态和支付时间全部更新,积分扣减、余额扣减、优惠券使用 if (transAmount == endAmount || transAmount == 0) { payStatus = "10"; PayDatetTime = DateTime.Now; //处理积分抵扣 if (rp.IntegralFlag == 1) { var vipIntegralBll = new VipIntegralBLL(CurrentUserInfo); string sourceId = "20"; //积分抵扣 var IntegralDetail = new VipIntegralDetailEntity() { Integral = -Convert.ToInt32(rp.Integral), IntegralSourceID = sourceId, ObjectId = orderId.ToString() }; if (IntegralDetail.Integral != 0) { //变动前积分 string OldIntegral = (vipInfo.Integration ?? 0).ToString(); //变动积分 string ChangeIntegral = (IntegralDetail.Integral ?? 0).ToString(); var vipIntegralDetailId = vipIntegralBll.AddIntegral(ref vipInfo, unitInfo, IntegralDetail, CurrentUserInfo); //发送微信积分变动通知模板消息 if (!string.IsNullOrWhiteSpace(vipIntegralDetailId)) { var CommonBLL = new CommonBLL(); CommonBLL.PointsChangeMessage(OldIntegral, vipInfo, ChangeIntegral, vipInfo.WeiXinUserId, CurrentUserInfo); } } } //处理余额抵扣 if (rp.VipEndAmountFlag == 1) { var vipAmountBll = new VipAmountBLL(CurrentUserInfo); var vipAmountDetailBll = new VipAmountDetailBLL(CurrentUserInfo); var vipAmountEntity = vipAmountBll.QueryByEntity(new VipAmountEntity() { VipId = vipInfo.VIPID, VipCardCode = vipInfo.VipCode }, null).FirstOrDefault(); if (vipAmountEntity != null) { var detailInfo = new VipAmountDetailEntity() { Amount = -rp.VipEndAmount, AmountSourceId = "1", ObjectId = orderId.ToString() }; var vipAmountDetailId = vipAmountBll.AddVipAmount(vipInfo, unitInfo, ref vipAmountEntity, detailInfo, CurrentUserInfo); if (!string.IsNullOrWhiteSpace(vipAmountDetailId)) {//发送微信账户余额变动模板消息 var CommonBLL = new CommonBLL(); CommonBLL.BalanceChangedMessage(orderNo, vipAmountEntity, detailInfo, vipInfo.WeiXinUserId, vipInfo.VIPID, CurrentUserInfo); } } } } //收款订单 ReceiveAmountOrderEntity receiveAmountOrderEntity = new ReceiveAmountOrderEntity() { OrderId = orderId, OrderNo = orderNo, VipId = vipInfo.VIPID, ServiceUnitId = unitInfo.unit_id, ServiceUserId = rp.EmployeeID, TotalAmount = rp.TotalAmount, VipDiscount = discount * 100, TransAmount = transAmount, PayPoints = integralAmount, AmountFromPayPoints = rp.IntegralAmount, CouponUsePay = couponAmount, AmountAcctPay = endAmount, PayStatus = payStatus, TimeStamp = rp.TimeStamp, PayDatetTime = PayDatetTime, CustomerId = CurrentUserInfo.ClientID }; receiveAmountOrderBll.Create(receiveAmountOrderEntity); //订单奖励 if (transAmount == endAmount || transAmount == 0) { var vipIntegralBll = new VipIntegralBLL(CurrentUserInfo); vipIntegralBll.OrderReward(receiveAmountOrderEntity, null); } rd.orderId = orderId.ToString(); return(rd); } } }
/// <summary> /// api获取当前门店返利信息 /// </summary> protected override GetVipAmountdetailListRD ProcessRequest(DTO.Base.APIRequest <GetVipAmountdetailListRP> pRequest) { var rd = new GetVipAmountdetailListRD(); var para = pRequest.Parameters; var VipAmountdetailBLL = new VipAmountDetailBLL(CurrentUserInfo); var VipBLL = new VipBLL(CurrentUserInfo); var UserBLL = new T_UserBLL(CurrentUserInfo); //查询参数 List <IWhereCondition> complexCondition = new List <IWhereCondition> { }; #region 门店条件处理 string UnitId = ""; if (CurrentUserInfo.CurrentUserRole != null) { if (!string.IsNullOrWhiteSpace(CurrentUserInfo.CurrentUserRole.UnitId)) { UnitId = CurrentUserInfo.CurrentUserRole.UnitId; } } if (!string.IsNullOrWhiteSpace(UnitId)) { complexCondition.Add(new EqualsCondition() { FieldName = "UnitID", Value = CurrentUserInfo.CurrentUserRole.UnitId }); } else { return(rd); } #endregion //排序参数 List <OrderBy> lstOrder = new List <OrderBy> { }; lstOrder.Add(new OrderBy() { FieldName = "CreateTime", Direction = OrderByDirections.Desc }); var Result = VipAmountdetailBLL.PagedQuery(complexCondition.ToArray(), lstOrder.ToArray(), para.pageSize, para.pageIndex); rd.TotalPageCount = Result.PageCount; rd.TotalCount = Result.RowCount; rd.VipAmountdetailList = Result.Entities.Select(t => new VipAmountdetailData() { VipID = t.VipId, VipName = "", CreateTime = t.CreateTime.ToString(), SalesAmout = t.SalesAmount ?? 0, Amout = t.Amount ?? 0, CreateBy = t.CreateBy }).ToList(); foreach (var item in rd.VipAmountdetailList) { //会员名称 var VipData = VipBLL.GetByID(item.VipID); if (VipData != null) { item.VipName = VipData.VipName ?? ""; item.HeadImgUrl = VipData.HeadImgUrl ?? ""; } //服务人员名称 var UserData = UserBLL.GetByID(item.CreateBy); if (UserData != null) { item.CreateByName = UserData.user_name ?? ""; } } return(rd); }
//<summary> //Pos订单入库 //</summary> //<param name="pRequest"></param> //<returns></returns> protected override SetPosOrderRD ProcessRequest(APIRequest <SetPosOrderRP> pRequest) { //请求参数 var rp = pRequest.Parameters; //返回参数 var rd = new SetPosOrderRD(); //订单 var inoutBll = new T_InoutBLL(CurrentUserInfo); var inoutDetail = new T_Inout_DetailBLL(CurrentUserInfo); //商品 var itemCategoryBll = new T_Item_CategoryBLL(CurrentUserInfo); var itemBll = new T_ItemBLL(CurrentUserInfo); var porpBll = new T_PropBLL(CurrentUserInfo); var itemSkuPropBll = new T_ItemSkuPropBLL(CurrentUserInfo); var skuBll = new T_SkuBLL(CurrentUserInfo); var skuPriceBll = new T_Sku_PriceBLL(CurrentUserInfo); var skuProperty = new T_Sku_PropertyBLL(CurrentUserInfo); //获取会员信息 var vipBll = new VipBLL(CurrentUserInfo); var vipInfo = vipBll.GetByID(pRequest.UserID); var vipCardVipMappingBll = new VipCardVipMappingBLL(CurrentUserInfo); var vipCardBll = new VipCardBLL(CurrentUserInfo); var vipCardVipMappingEntity = vipCardVipMappingBll.QueryByEntity(new VipCardVipMappingEntity() { VIPID = vipInfo.VIPID, CustomerID = CurrentUserInfo.ClientID }, null).FirstOrDefault(); string VipCardTypeID = ""; //卡类型Id if (vipCardVipMappingEntity != null) { var vipCardEntity = vipCardBll.GetByID(vipCardVipMappingEntity.VipCardID); VipCardTypeID = vipCardEntity.VipCardTypeID.ToString(); } //员工 var userBll = new T_UserBLL(CurrentUserInfo); //获取门店信息 var unitBll = new t_unitBLL(CurrentUserInfo); t_unitEntity unitInfo = null; if (!string.IsNullOrEmpty(rp.UnitCode)) { unitInfo = unitBll.QueryByEntity(new t_unitEntity() { unit_code = rp.UnitCode, customer_id = CurrentUserInfo.ClientID }, null).FirstOrDefault(); if (unitInfo == null) { throw new APIException("请在正念商户后台录入相应门店") { ErrorCode = 100 }; } } else { throw new APIException("缺少请求参数:门店编码") { ErrorCode = 102 }; } //获取员工信息 T_UserEntity userEntity = null; if (!string.IsNullOrEmpty(rp.MobliePhone)) { userEntity = userBll.QueryByEntity(new T_UserEntity() { user_telephone = rp.MobliePhone, customer_id = CurrentUserInfo.ClientID }, null).FirstOrDefault(); //没有员工,新增默认员工(店员APP) if (userEntity == null) { var roleBll = new T_RoleBLL(CurrentUserInfo); var roleEntity = roleBll.QueryByEntity(new T_RoleEntity() { role_code = "clerkAPP", customer_id = CurrentUserInfo.ClientID }, null).FirstOrDefault(); if (roleEntity == null) { throw new APIException("请在正念商户后台录入相应角色") { ErrorCode = 100 }; } userEntity = new T_UserEntity(); userEntity.user_telephone = rp.MobliePhone; userEntity.user_code = rp.UserCode; userEntity.user_name = rp.UserCode; userEntity.user_birthday = rp.Birthday; userEntity.user_email = rp.EmailAddress; userEntity.user_address = rp.Address; userEntity.user_postcode = rp.Zip; userBll.AddUser(ref userEntity, unitInfo, roleEntity); } } else { throw new APIException("缺少请求参数:员工手机号") { ErrorCode = 102 }; } //获取会员折扣 var sysVipCardGradeBLL = new SysVipCardGradeBLL(CurrentUserInfo); decimal vipDiscount = sysVipCardGradeBLL.GetVipDiscount() * 10; //订单号 string orderId = BaseService.NewGuidPub(); T_InoutEntity tInoutEntity = new T_InoutEntity(); tInoutEntity.order_id = orderId; tInoutEntity.order_no = rp.OrderNo; //拼接ItemCodes //StringBuilder ItemCodes = new StringBuilder(); //for (int j = 0; j < pRequest.Parameters.OrderDetailList.Count(); j++) //{ // if (j != 0) // { // ItemCodes.Append(","); // } // ItemCodes.Append(string.Format("{0}", pRequest.Parameters.OrderDetailList[j].ItemCode)); //} ////通过itemCodes取出商品价格 //SkuPriceService skuPriceService = new SkuPriceService(CurrentUserInfo); //List<SkuPrice> skuPriceList = skuPriceService.GetPriceListByItemCodes(ItemCodes.ToString(), CurrentUserInfo.ClientID); //if(skuPriceList.Count == 0) //{ // throw new APIException("未找到商品") { ErrorCode = 100 }; //} //订单总金额 decimal totalAmount = rp.TotalAmount; //订单实付金额 decimal ActualAmount = rp.DiscountAmount; //订单折扣后金额 decimal DiscountAmount = rp.DiscountAmount; //订单明细显示顺序 int i = 1; //商品价格重新计算 foreach (var item in pRequest.Parameters.OrderDetailList) { T_ItemEntity itemEntity = null; //商品 T_SkuEntity skuEntity = null; //sku if (!string.IsNullOrEmpty(item.ItemCode)) { itemEntity = itemBll.QueryByEntity(new T_ItemEntity() { item_code = item.ItemCode, CustomerId = CurrentUserInfo.ClientID }, null).FirstOrDefault(); if (itemEntity == null) { if (string.IsNullOrEmpty(item.ItemCategoryCode)) { throw new APIException("缺少参数:商品类别名称") { ErrorCode = 200 }; } itemEntity = new T_ItemEntity(); itemEntity.item_code = item.ItemCode; itemEntity.item_name = item.ItemName; itemBll.AddItem(itemEntity, out skuEntity, item.ItemCategoryName, item.ItemCategoryCode, item.SkuOriginPrice, item.SkuSalesPrice); } else { skuEntity = skuBll.QueryByEntity(new T_SkuEntity() { item_id = itemEntity.item_id }, null).FirstOrDefault(); } } else { throw new APIException("缺少参数:商品编码") { ErrorCode = 300 }; } //订单明细相关处理 T_Inout_DetailBLL inoutDetailBll = new T_Inout_DetailBLL(CurrentUserInfo); T_Inout_DetailEntity inoutDetailEntity = new T_Inout_DetailEntity() { order_detail_id = BaseService.NewGuidPub(), order_id = orderId, //订单Id sku_id = skuEntity.sku_id, //skuId unit_id = unitInfo.unit_id, //门店Id order_qty = item.Qty, //订单qty enter_qty = item.Qty, //实际qty enter_price = item.price, //折扣价 enter_amount = item.price * item.Qty, //折扣价 std_price = item.price, //原价 discount_rate = vipDiscount, //折扣 retail_price = item.price * item.Qty, //零售价 retail_amount = item.price * item.Qty, //零售价 order_detail_status = "1", display_index = i, if_flag = 0 }; inoutDetailBll.Create(inoutDetailEntity); i++; } //优惠券使用 if (!string.IsNullOrEmpty(rp.CouponId)) { #region 判断优惠券是否是该会员的 var vipcouponMappingBll = new VipCouponMappingBLL(CurrentUserInfo); var vipcouponmappingList = vipcouponMappingBll.QueryByEntity(new VipCouponMappingEntity() { VIPID = pRequest.UserID, CouponID = rp.CouponId }, null); if (vipcouponmappingList == null || vipcouponmappingList.Length == 0) { throw new APIException("此张优惠券不是该会员的") { ErrorCode = 103 }; } #endregion #region 判断优惠券是否有效 var couponBll = new CouponBLL(CurrentUserInfo); var couponEntity = couponBll.GetByID(rp.CouponId); if (couponEntity == null) { throw new APIException("无效的优惠券") { ErrorCode = 103 }; } if (couponEntity.Status == 1) { throw new APIException("优惠券已使用") { ErrorCode = 103 }; } if (couponEntity.EndDate < DateTime.Now) { throw new APIException("优惠券已过期") { ErrorCode = 103 }; } var couponTypeBll = new CouponTypeBLL(CurrentUserInfo); var couponTypeEntity = couponTypeBll.GetByID(couponEntity.CouponTypeID); if (couponTypeEntity == null) { throw new APIException("无效的优惠券类型") { ErrorCode = 103 }; } #endregion #region 优惠券核销 var couponUseBll = new CouponUseBLL(CurrentUserInfo); var couponUseEntity = new CouponUseEntity() { CouponUseID = Guid.NewGuid(), CouponID = rp.CouponId, VipID = pRequest.UserID, UnitID = unitInfo.unit_id, OrderID = orderId, Comment = "商城使用电子券", CustomerID = pRequest.CustomerID, CreateBy = pRequest.UserID, CreateTime = DateTime.Now, LastUpdateBy = pRequest.UserID, LastUpdateTime = DateTime.Now, IsDelete = 0 }; couponUseBll.Create(couponUseEntity); #endregion #region 更新CouponType数量 var conponTypeBll = new CouponTypeBLL(CurrentUserInfo); var conponTypeEntity = conponTypeBll.QueryByEntity(new CouponTypeEntity() { CouponTypeID = new Guid(couponEntity.CouponTypeID), CustomerId = pRequest.CustomerID }, null).FirstOrDefault(); conponTypeEntity.IsVoucher += 1; conponTypeBll.Update(conponTypeEntity); #endregion #region 更新优惠券状态 couponEntity.Status = 1; couponBll.Update(couponEntity); #endregion ActualAmount -= couponTypeEntity.ParValue ?? 0; } #region 使用积分 //使用积分 if (rp.IntegralFlag == 1) { var vipIntegralBll = new VipIntegralBLL(CurrentUserInfo); string sourceId = "20"; //积分抵扣 var IntegralDetail = new VipIntegralDetailEntity() { Integral = -Convert.ToInt32(rp.Integral), IntegralSourceID = sourceId, ObjectId = orderId }; if (IntegralDetail.Integral != 0) { //变动前积分 string OldIntegral = (vipInfo.Integration ?? 0).ToString(); //变动积分 string ChangeIntegral = (IntegralDetail.Integral ?? 0).ToString(); var vipIntegralDetailId = vipIntegralBll.AddIntegral(ref vipInfo, unitInfo, IntegralDetail, CurrentUserInfo); //发送微信积分变动通知模板消息 if (!string.IsNullOrWhiteSpace(vipIntegralDetailId)) { var CommonBLL = new CommonBLL(); CommonBLL.PointsChangeMessage(OldIntegral, vipInfo, ChangeIntegral, vipInfo.WeiXinUserId, CurrentUserInfo); } } tInoutEntity.pay_points = rp.Integral; tInoutEntity.receive_points = rp.Integral; ActualAmount -= rp.IntegralAmount; } #endregion #region 余额和返现修改 var vipAmountBll = new VipAmountBLL(CurrentUserInfo); var vipAmountDetailBll = new VipAmountDetailBLL(CurrentUserInfo); var vipAmountEntity = vipAmountBll.QueryByEntity(new VipAmountEntity() { VipId = pRequest.UserID, VipCardCode = vipInfo.VipCode }, null).FirstOrDefault(); if (vipAmountEntity != null) { //判断该会员账户是否被冻结 if (vipAmountEntity.IsLocking == 1) { throw new APIException("账户已被冻结,请先解冻") { ErrorCode = 103 } } ; //判断该会员的账户余额是否大于本次使用的余额 if (vipAmountEntity.EndAmount < rp.EndAmount) { throw new APIException(string.Format("账户余额不足,当前余额为【{0}】", vipAmountEntity.EndAmount)) { ErrorCode = 103 } } ; } //使用余额 if (rp.EndAmountFlag == 1) { var detailInfo = new VipAmountDetailEntity() { Amount = -rp.EndAmount, AmountSourceId = "1", ObjectId = orderId }; var vipAmountDetailId = vipAmountBll.AddVipAmount(vipInfo, unitInfo, ref vipAmountEntity, detailInfo, CurrentUserInfo); if (!string.IsNullOrWhiteSpace(vipAmountDetailId)) {//发送微信账户余额变动模板消息 var CommonBLL = new CommonBLL(); CommonBLL.BalanceChangedMessage(tInoutEntity.order_no, vipAmountEntity, detailInfo, vipInfo.WeiXinUserId, vipInfo.VIPID, CurrentUserInfo); } tInoutEntity.Field3 = rp.EndAmount.ToString(); } #endregion //订单主表更新 tInoutEntity.VipCardCode = vipInfo.VipCardCode;//会员卡号 tInoutEntity.order_reason_id = "2F6891A2194A4BBAB6F17B4C99A6C6F5"; tInoutEntity.order_type_id = "1F0A100C42484454BAEA211D4C14B80F"; tInoutEntity.warehouse_id = "67bb4c12785c42d4912aff7d34606592"; tInoutEntity.data_from_id = ""; tInoutEntity.red_flag = "1"; tInoutEntity.order_date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); //订单时间 tInoutEntity.create_unit_id = unitInfo.unit_id; //门店 tInoutEntity.unit_id = unitInfo.unit_id; //门店 tInoutEntity.sales_unit_id = unitInfo.unit_id; //门店 tInoutEntity.purchase_unit_id = unitInfo.unit_id; tInoutEntity.sales_user = userEntity.user_id; tInoutEntity.total_amount = totalAmount; //订单金额 tInoutEntity.discount_rate = vipDiscount; //会员折扣 tInoutEntity.actual_amount = ActualAmount; //实付金额 tInoutEntity.total_qty = rp.qty; tInoutEntity.total_retail = totalAmount; //订单金额 tInoutEntity.vip_no = vipInfo.VIPID; tInoutEntity.Field6 = vipInfo.Phone; tInoutEntity.Field14 = vipInfo.VipName; tInoutEntity.Field17 = VipCardTypeID; tInoutEntity.Field12 = DiscountAmount.ToString(); tInoutEntity.Field11 = "知行易"; tInoutEntity.customer_id = CurrentUserInfo.ClientID; tInoutEntity.Field1 = "1"; //支付完成 tInoutEntity.Field7 = "700"; //已完成 tInoutEntity.status = "700"; //已完成 tInoutEntity.status_desc = "已完成"; tInoutEntity.Field10 = "已完成"; rd.Amount = ActualAmount - rp.EndAmount; inoutBll.Create(tInoutEntity); //订单奖励 new SendOrderRewardMsgBLL().OrderReward(tInoutEntity, this.CurrentUserInfo, null);//存入到缓存 rd.orderId = orderId; return(rd); } } }
public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; var OrderID = context.Request["OrderID"]; var OrderStatus = context.Request["OrderStatus"]; var CustomerID = context.Request["CustomerID"]; var UserID = context.Request["UserID"]; var ChannelID = context.Request["ChannelID"]; var SerialPay = context.Request["SerialPay"]; try { if (string.IsNullOrEmpty(OrderID) || string.IsNullOrEmpty(OrderStatus) || string.IsNullOrEmpty(CustomerID) || string.IsNullOrEmpty(UserID) || string.IsNullOrEmpty(ChannelID)) { throw new Exception("参数不全:OrderID,OrderStatus,CustomerID,UserID"); } else { if (OrderStatus == "2") { //支付成功,更新卡的支付状态 //OrderID就是VIPCardID // //var rp = pRequest.DeserializeJSONTo<APIRequest<SetVipCardRP>>(); //if (string.IsNullOrEmpty(rp.Parameters.PayID)) //{ // throw new APIException("缺少参数【PayID】或参数值为空") { ErrorCode = 135 }; //} var loggingSessionInfo = Default.GetBSLoggingSession(CustomerID, UserID); //会员 var vipBll = new VipBLL(loggingSessionInfo); var vipAmountBll = new VipAmountBLL(loggingSessionInfo); var vipCardVipMappingBll = new VipCardVipMappingBLL(loggingSessionInfo); //支付 var tPaymentTypeCustomerMappingBll = new TPaymentTypeCustomerMappingBLL(loggingSessionInfo); var tPaymentTypeBll = new T_Payment_TypeBLL(loggingSessionInfo); var paymentDetailBll = new T_Payment_detailBLL(loggingSessionInfo); //门店 var unitBLL = new t_unitBLL(loggingSessionInfo); //商品订单支付 //更新积分和状态 //var loggingSessionInfo = Default.GetBSLoggingSession(CustomerID, "1"); var inoutBll = new T_InoutBLL(loggingSessionInfo);//订单业务对象实例化 var trrBll = new T_RewardRecordBLL(loggingSessionInfo); //辨别打赏订单 var rewardOrderPrefix = "REWARD|"; if (OrderID.Contains(rewardOrderPrefix)) { OrderID = OrderID.Substring(rewardOrderPrefix.Length, OrderID.Length - rewardOrderPrefix.Length); var trrEntity = trrBll.GetByID(OrderID); trrEntity.PayStatus = 2; trrEntity.LastUpdateTime = DateTime.Now; trrEntity.LastUpdateBy = loggingSessionInfo.UserID; trrBll.Update(trrEntity); #region 员工余额变更--需要独立出来处理 var userAmountBll = new VipAmountBLL(loggingSessionInfo); //作为员工余额使用 var employeeId = trrEntity.RewardedOP; var rewardAmount = trrEntity.RewardAmount == null ? 0 : (decimal)trrEntity.RewardAmount; //转为非null的decimal类型 //门店 var unitService = new UnitService(loggingSessionInfo); var unitInfo = unitService.GetUnitByUser(CustomerID, employeeId).FirstOrDefault();//获取员工所属门店 var tran = userAmountBll.GetTran(); using (tran.Connection)//事务 { try { var userAmountEntity = userAmountBll.GetByID(trrEntity.RewardedOP); if (userAmountEntity == null) { //创建 userAmountEntity = new VipAmountEntity { VipId = employeeId,//员工ID VipCardCode = string.Empty, BeginAmount = 0, InAmount = rewardAmount, OutAmount = 0, EndAmount = rewardAmount, TotalAmount = rewardAmount, BeginReturnAmount = 0, InReturnAmount = 0, OutReturnAmount = 0, ReturnAmount = 0, ImminentInvalidRAmount = 0, InvalidReturnAmount = 0, ValidReturnAmount = 0, TotalReturnAmount = 0, IsLocking = 0, CustomerID = CustomerID }; userAmountBll.Create(userAmountEntity, tran);//创建员工余额表 } else { //修改 if (rewardAmount > 0) { userAmountEntity.InAmount = (userAmountEntity.InAmount == null ? 0 : userAmountEntity.InAmount.Value) + rewardAmount; userAmountEntity.TotalAmount = (userAmountEntity.TotalAmount == null ? 0 : userAmountEntity.TotalAmount.Value) + rewardAmount; } else { userAmountEntity.OutAmount = (userAmountEntity.OutAmount == null ? 0 : userAmountEntity.OutAmount.Value) + Math.Abs(rewardAmount); } userAmountEntity.EndAmount = (userAmountEntity.EndAmount == null ? 0 : userAmountEntity.EndAmount.Value) + rewardAmount; userAmountBll.Update(userAmountEntity, tran);//更新余额 } var vipamountDetailBll = new VipAmountDetailBLL(loggingSessionInfo); var vipAmountDetailEntity = new VipAmountDetailEntity { VipAmountDetailId = Guid.NewGuid(), VipCardCode = string.Empty, VipId = employeeId,//员工ID UnitID = unitInfo != null ? unitInfo.unit_id : string.Empty, UnitName = unitInfo != null ? unitInfo.Name : string.Empty, Amount = rewardAmount, UsedReturnAmount = 0, EffectiveDate = DateTime.Now, DeadlineDate = Convert.ToDateTime("9999-12-31 23:59:59"), AmountSourceId = "26", Reason = "Reward", CustomerID = CustomerID }; vipamountDetailBll.Create(vipAmountDetailEntity, tran); //创建余额详情 tran.Commit(); //提交事务 } catch (Exception ex) { tran.Rollback(); Loggers.Debug(new DebugLogInfo() { Message = "异常-->支付成功回调时更新会员打赏金额出错(PayNotify.ashx):" + ex }); } } #endregion if (trrEntity != null) { context.Response.Write("SUCCESS"); } else { context.Response.Write("FAIL"); } return; } //获取会员信息 var vipInfo = vipBll.GetByID(loggingSessionInfo.UserID); //支付信息 Bear //var tPaymentTypeCustomerMappingEntity = tPaymentTypeCustomerMappingBll.QueryByEntity(new TPaymentTypeCustomerMappingEntity(){ChannelId = ChannelID,CustomerId = loggingSessionInfo.ClientID },null).FirstOrDefault(); var paymentTypeList = tPaymentTypeBll.GetAll(); var tPaymentType = paymentTypeList.ToList() .Find(t => t.Payment_Type_Code == "WXJS"); //var tPaymentType = tPaymentTypeBll.GetByID(tPaymentTypeCustomerMappingEntity.PaymentTypeID); //获取订单信息 var inoutInfo = inoutBll.GetByID(OrderID); if (inoutInfo != null) { var bll = new TInOutStatusNodeBLL(loggingSessionInfo); string msg; if (!bll.SetOrderPayment(OrderID, out msg, ChannelID, SerialPay)) //if (!bll.SetOrderPayment(OrderID, out msg, ChannelID)) { throw new Exception(msg); } else if (string.IsNullOrEmpty(inoutInfo.Field17) && string.IsNullOrEmpty(inoutInfo.Field18)) { #region 发送订单支付成功微信模板消息 var SuccessCommonBLL = new CommonBLL(); //SuccessCommonBLL.SentPaymentMessage(inoutInfo, vipInfo.WeiXinUserId,vipInfo.VIPID, loggingSessionInfo); new SendOrderPaySuccessMsgBLL().SentPaymentMessage(inoutInfo, vipInfo.WeiXinUserId, vipInfo.VIPID, loggingSessionInfo); #endregion Loggers.Debug(new DebugLogInfo() { Message = "调用SetOrderPayment方法更新订单成功" }); } //获取订单信息,根据Field3==1判断,如果是ALD订单,则调用ALD接口更新ALD订单的状态 #region 更新ALD状态 //var orderbll = new InoutService(loggingSessionInfo); //var orderInfo = orderbll.GetInoutInfoById(OrderID); //if (orderInfo.Field3 == "1") //{ // Loggers.Debug(new DebugLogInfo() { Message = string.Format("更新O2OMarketing订单状态成功[OrderID={0}].", OrderID) }); // //更新阿拉丁的订单状态 // JIT.CPOS.Web.OnlineShopping.data.DataOnlineShoppingHandler.ALDChangeOrderStatus aldChangeOrder = new data.DataOnlineShoppingHandler.ALDChangeOrderStatus(); // if (string.IsNullOrEmpty(orderInfo.vip_no)) // throw new Exception("会员ID不能为空,OrderID:" + OrderID); // aldChangeOrder.MemberID = new Guid(orderInfo.vip_no); // aldChangeOrder.SourceOrdersID = OrderID; // aldChangeOrder.Status = int.Parse(orderInfo.status); // aldChangeOrder.IsPaid = true; // JIT.CPOS.Web.OnlineShopping.data.DataOnlineShoppingHandler.ALDChangeOrderStatusRequest aldRequest = new data.DataOnlineShoppingHandler.ALDChangeOrderStatusRequest(); // aldRequest.BusinessZoneID = 1;//写死 // aldRequest.Locale = 1; // aldRequest.UserID = new Guid(orderInfo.vip_no); // aldRequest.Parameters = aldChangeOrder; // var url = ConfigurationManager.AppSettings["ALDGatewayURL"]; // var postContent = string.Format("Action=ChangeOrderStatus&ReqContent={0}", aldRequest.ToJSON()); // Loggers.Debug(new DebugLogInfo() { Message = "通知ALD更改状态:" + postContent }); // var strAldRsp = HttpWebClient.DoHttpRequest(url, postContent); // var aldRsp = strAldRsp.DeserializeJSONTo<JIT.CPOS.Web.OnlineShopping.data.DataOnlineShoppingHandler.ALDResponse>(); // if (!aldRsp.IsSuccess()) // { // Loggers.Debug(new DebugLogInfo() { Message = string.Format("更新阿拉丁订单状态失败[Request ={0}][Response={1}]", aldRequest.ToJSON(), strAldRsp) }); // } //} #endregion #region 格力推送通知 //try //{ // GLServiceOrderBLL glsobll = new GLServiceOrderBLL(loggingSessionInfo); // if (glsobll.ValidateGree(CustomerID, "cpos_bs_lj"))//先写死 // glsobll.GreePushPaymentOorder(CustomerID, OrderID, loggingSessionInfo); //} //catch (Exception ex) //{ // Loggers.Debug(new DebugLogInfo() { Message = string.Format("付款推送评价师傅链接失败[OrderID={0}].", OrderID) }); //} #endregion #region ALD生活服务处理 //var rechargeBll = new RechargeStrategyBLL(loggingSessionInfo); //var vipAmountBll = new VipAmountBLL(loggingSessionInfo); //var couponBll = new CouponBLL(loggingSessionInfo); //var vipCouponMappingBll = new VipCouponMappingBLL(loggingSessionInfo); //var unitBll = new UnitBLL(loggingSessionInfo); //DataSet dsOrderInfo = rechargeBll.GetInoutOrderItems(OrderID); //int itemSort = 0; //商品业务分类 //string skuId = string.Empty; //商品SkuId //string vipId = string.Empty; //会员ID //string itemId = string.Empty;//商品ID //string couponId = string.Empty;//优惠券ID //if (dsOrderInfo.Tables[0].Rows.Count > 0) //{ // //if (dsOrderInfo.Tables[0].Rows[0]["ItemSort"] != DBNull.Value && Convert.ToString(dsOrderInfo.Tables[0].Rows[0]["ItemSort"]) != "0") // itemSort = int.Parse(dsOrderInfo.Tables[0].Rows[0]["ItemSort"].ToString()); // switch (itemSort) // { // case 2://充 // #region 充值金额处理 // VipAmountDetailBLL vipAmountDetailBll = new VipAmountDetailBLL(loggingSessionInfo); // List<IWhereCondition> complexCondition = new List<IWhereCondition> { }; // complexCondition.Add(new EqualsCondition() { FieldName = "ObjectId", Value = OrderID }); // var vipAmountDetal = vipAmountDetailBll.Query(complexCondition.ToArray(), null); // if (vipAmountDetal.Count() == 0)//确认没有多次执行回调 // { // ////查询 // //RechargeStrategyEntity[] rechargeList = rechargeBll.Query(complexCondition.ToArray(), lstOrder.ToArray()); // skuId = dsOrderInfo.Tables[0].Rows[0]["SkuId"].ToString(); // //RechargeStrategyEntity rechargeEntity = rechargeBll.GetByID(skuId); // DataSet dsSkuPirce = unitBll.GetSkuPirce(skuId); // decimal salePrice = 0;//购买金额 // decimal returnCash = 0;//奖励金额 // if (dsSkuPirce.Tables[0].Rows.Count > 0) // { // salePrice = Convert.ToDecimal(dsSkuPirce.Tables[0].Rows[0]["SalesPrice"].ToString()); // returnCash = Convert.ToDecimal(dsSkuPirce.Tables[0].Rows[0]["ReturnCash"].ToString()); // InoutService server = new InoutService(loggingSessionInfo); // #region 充值金额 // var tran = server.GetTran(); // using (tran.Connection)//事物 // { // try // { // //充值金额 // vipAmountBll.AddVipEndAmount(UserID, salePrice, tran, "4", OrderID, loggingSessionInfo);//4=充值 // tran.Commit(); // } // catch (Exception) // { // tran.Rollback(); // throw; // } // } // #endregion // #region 奖励金额 // var tran2 = server.GetTran(); // using (tran2.Connection)//事物 // { // try // { // //奖励金额 // vipAmountBll.AddVipEndAmount(UserID, returnCash, tran2, "6", OrderID, loggingSessionInfo);//6=奖励金额 // tran2.Commit(); // } // catch (Exception) // { // tran2.Rollback(); // throw; // } // } // #endregion // } // } // #endregion // break; // case 3://券 // #region 券类商品绑定到会员 // itemId = dsOrderInfo.Tables[0].Rows[0]["ItemId"].ToString(); // vipId = dsOrderInfo.Tables[0].Rows[0]["VipId"].ToString(); // couponId = couponBll.GetCouponByItemId(itemId); // if (!string.IsNullOrEmpty(couponId)) // { // VipCouponMappingEntity coupon = new VipCouponMappingEntity // { // VIPID = vipId, // CouponID = couponId, // }; // vipCouponMappingBll.Create(coupon); // } // #endregion // break; // default: // break; // } //} #endregion #region 订单与分润关系处理 add by Henry 2014-10-10 //var orderSubBll = new OrderOrderSubRunObjectMappingBLL(loggingSessionInfo); //dynamic o = orderSubBll.SetOrderSub(CustomerID, OrderID); //Type t = o.GetType(); //var Desc = t.GetProperty("Desc").GetValue(o, null).ToString(); //var IsSuccess = t.GetProperty("IsSuccess").GetValue(o, null).ToString(); //if (int.Parse(IsSuccess.ToString()) == 0) //失败 // Loggers.Debug(new DebugLogInfo() { Message = string.Format("订单与分润关系处理失败:{0}", Desc) }); #endregion CustomerBasicSettingBLL customerBasicSettingBll = new CustomerBasicSettingBLL(loggingSessionInfo); string AfterPaySetStock = customerBasicSettingBll.GetSettingValueByCode("AfterPaySetStock"); if (AfterPaySetStock == "1") { var inoutServiceBLL = new InoutService(loggingSessionInfo); var inoutDetailList = inoutServiceBLL.GetInoutDetailInfoByOrderId(OrderID); inoutBll.SetStock(OrderID, inoutDetailList, 1, loggingSessionInfo); } ///超级分销商订单入队列 if (inoutInfo.data_from_id == "35" || inoutInfo.data_from_id == "36") { BS.BLL.RedisOperationBLL.Order.SuperRetailTraderOrderBLL bllSuperRetailTraderOrder = new BS.BLL.RedisOperationBLL.Order.SuperRetailTraderOrderBLL(); bllSuperRetailTraderOrder.SetRedisToSuperRetailTraderOrder(loggingSessionInfo, inoutInfo); } //购卡 if (!string.IsNullOrEmpty(inoutInfo.Field17) && !string.IsNullOrEmpty(inoutInfo.Field18)) { //更新订单状态 inoutInfo = inoutBll.GetByID(OrderID); inoutInfo.Field7 = "700"; inoutInfo.status = "700"; inoutInfo.status_desc = "已完成"; inoutInfo.Field10 = "已完成"; inoutBll.Update(inoutInfo); //会员卡升级 vipCardVipMappingBll.BindVirtualItem(vipInfo.VIPID, vipInfo.VipCode, inoutInfo.sales_unit_id, Convert.ToInt32(inoutInfo.Field18), orderId: inoutInfo.order_id); //分润计算 RedisSalesVipCardOrderBLL redisSalesVipCardOrderBll = new RedisSalesVipCardOrderBLL(); redisSalesVipCardOrderBll.SetRedisSalesVipCardOrder(loggingSessionInfo, inoutInfo); //售卡处理积分、返现、佣金[完成订单] new SendOrderRewardMsgBLL().OrderReward(inoutInfo, loggingSessionInfo, null);//存入到缓存 } else { //订单入队列 RedisCalculateVipConsumeForUpgrade redisCalculateVipConsumeForUpgrade = new RedisCalculateVipConsumeForUpgrade(); redisCalculateVipConsumeForUpgrade.SetVipConsumeForUpgradeList(loggingSessionInfo, inoutInfo); } // add by liangx 2016-09-27 获取订单中的虚拟商品 start CouponTypeBLL couponTypeBLL = new CouponTypeBLL(loggingSessionInfo); RedisVipMappingCouponBLL redisVipMappingCouponBLL = new RedisVipMappingCouponBLL(); var couponTypes = couponTypeBLL.GetVirtualItemCouponTypes(inoutInfo.order_id); if (couponTypes.Any()) { redisVipMappingCouponBLL.SetVipMappingCoupon(couponTypes, "", couponTypes.FirstOrDefault().VipId, "PayVirtualItem"); } // add by liangx 2016-09-27 获取订单中的虚拟商品 end //获取门店信息 t_unitEntity unitInfo = null; if (!string.IsNullOrEmpty(inoutInfo.sales_unit_id)) { unitInfo = unitBLL.GetByID(inoutInfo.sales_unit_id); } //入支付明细表 var paymentDetail = new T_Payment_detailEntity() { Payment_Id = Guid.NewGuid().ToString(), Inout_Id = inoutInfo.order_id, UnitCode = unitInfo == null ? "" : unitInfo.unit_code, Payment_Type_Id = tPaymentType.Payment_Type_Id, Payment_Type_Code = tPaymentType.Payment_Type_Code, Payment_Type_Name = tPaymentType.Payment_Type_Name, Price = inoutInfo.actual_amount, Total_Amount = inoutInfo.total_amount, Pay_Points = inoutInfo.pay_points, CustomerId = loggingSessionInfo.ClientID }; paymentDetailBll.Create(paymentDetail); List <IWhereCondition> complexCondition = new List <IWhereCondition> { }; complexCondition.Add(new EqualsCondition() { FieldName = "Inout_Id", Value = inoutInfo.order_id }); var paymentDetailList = paymentDetailBll.Query(complexCondition.ToArray(), null); try { var msgRabbitMQ = new EventContract { Operation = OptEnum.Create, EntityType = EntityTypeEnum.Order, Id = inoutInfo.order_id }; var service = new EventService(); service.PublishMsg(msgRabbitMQ); foreach (var detail in paymentDetailList) { var paymentMQ = new EventContract { Operation = OptEnum.Create, EntityType = EntityTypeEnum.OrderPayment, Id = detail.Payment_Id }; service.PublishMsg(paymentMQ); } } catch (Exception) { throw new Exception("RabbitMQ Error"); } } else//充值订单 { var rechargeOrderBll = new RechargeOrderBLL(loggingSessionInfo); var vipamountDetailBll = new VipAmountDetailBLL(loggingSessionInfo); var rechargeOrderInfo = rechargeOrderBll.GetByID(OrderID); if (rechargeOrderInfo != null) { //获取门店信息 t_unitEntity unitInfo = null; if (!string.IsNullOrEmpty(rechargeOrderInfo.UnitId)) { unitInfo = unitBLL.GetByID(rechargeOrderInfo.UnitId); } //充值 rechargeOrderBll.Recharge(rechargeOrderInfo, vipInfo, unitInfo, tPaymentType.Payment_Type_Id); //入支付明细表 var paymentDetail = new T_Payment_detailEntity() { Payment_Id = Guid.NewGuid().ToString(), Inout_Id = rechargeOrderInfo.OrderID.ToString(), UnitCode = unitInfo == null ? "" : unitInfo.unit_code, Payment_Type_Id = tPaymentType.Payment_Type_Id, Payment_Type_Code = tPaymentType.Payment_Type_Code, Payment_Type_Name = tPaymentType.Payment_Type_Name, Price = rechargeOrderInfo.ActuallyPaid, Total_Amount = rechargeOrderInfo.TotalAmount, Pay_Points = rechargeOrderInfo.PayPoints, CustomerId = loggingSessionInfo.ClientID }; paymentDetailBll.Create(paymentDetail); } else { var receiveAmountOrderBll = new ReceiveAmountOrderBLL(loggingSessionInfo); var receiveAmountOrderEntity = receiveAmountOrderBll.GetByID(OrderID); //更新订单状态 if (receiveAmountOrderEntity != null) { VipIntegralBLL vipIntegralBll = new VipIntegralBLL(loggingSessionInfo); //更新订单 receiveAmountOrderEntity.PayStatus = "10"; // Bear //receiveAmountOrderEntity.PayTypeId = tPaymentTypeCustomerMappingEntity.PaymentTypeID; receiveAmountOrderEntity.PayTypeId = tPaymentType.Payment_Type_Id; receiveAmountOrderEntity.PayDatetTime = DateTime.Now; receiveAmountOrderBll.Update(receiveAmountOrderEntity); //获取门店信息 t_unitEntity unitInfo = null; if (!string.IsNullOrEmpty(receiveAmountOrderEntity.ServiceUnitId)) { unitInfo = unitBLL.GetByID(receiveAmountOrderEntity.ServiceUnitId); } //使用过积分,处理积分 if (receiveAmountOrderEntity.PayPoints != 0 && receiveAmountOrderEntity.PayPoints != null) { string sourceId = "20"; //积分抵扣 var IntegralDetail = new VipIntegralDetailEntity() { Integral = -Convert.ToInt32(receiveAmountOrderEntity.PayPoints), IntegralSourceID = sourceId, ObjectId = receiveAmountOrderEntity.OrderId.ToString() }; if (IntegralDetail.Integral != 0) { //变动前积分 string OldIntegral = (vipInfo.Integration ?? 0).ToString(); //变动积分 string ChangeIntegral = (IntegralDetail.Integral ?? 0).ToString(); var vipIntegralDetailId = vipIntegralBll.AddIntegral(ref vipInfo, unitInfo, IntegralDetail, loggingSessionInfo); //发送微信积分变动通知模板消息 if (!string.IsNullOrWhiteSpace(vipIntegralDetailId)) { var CommonBLL = new CommonBLL(); CommonBLL.PointsChangeMessage(OldIntegral, vipInfo, ChangeIntegral, vipInfo.WeiXinUserId, loggingSessionInfo); } } } //if (receiveAmountOrderEntity.CouponUsePay != 0 || receiveAmountOrderEntity.CouponUsePay != null) //{ // //更新使用记录 // var couponUseBll = new CouponUseBLL(loggingSessionInfo); // var couponUseEntity = new CouponUseEntity() // { // CouponUseID = Guid.NewGuid(), // CouponID = rp.CouponId, // VipID = vipInfo.VIPID, // UnitID = rp.UnitId, // OrderID = orderId.ToString(), // Comment = "商城使用电子券", // CustomerID = CurrentUserInfo.ClientID, // CreateBy = CurrentUserInfo.UserID, // CreateTime = DateTime.Now, // LastUpdateBy = CurrentUserInfo.UserID, // LastUpdateTime = DateTime.Now, // IsDelete = 0 // }; // couponUseBll.Create(couponUseEntity); // var couponBll = new CouponBLL(CurrentUserInfo); // var couponEntity = couponBll.GetByID(rp.CouponId); // //更新CouponType数量 // var conponTypeBll = new CouponTypeBLL(CurrentUserInfo); // var conponTypeEntity = conponTypeBll.QueryByEntity(new CouponTypeEntity() { CouponTypeID = new Guid(couponEntity.CouponTypeID), CustomerId = CurrentUserInfo.ClientID }, null).FirstOrDefault(); // conponTypeEntity.IsVoucher += 1; // conponTypeBll.Update(conponTypeEntity); // //停用该优惠券 // couponEntity.Status = 1; // couponBll.Update(couponEntity); //} //处理余额 if (receiveAmountOrderEntity.AmountAcctPay != null && receiveAmountOrderEntity.AmountAcctPay != 0) { var vipAmountDetailBll = new VipAmountDetailBLL(loggingSessionInfo); var vipAmountEntity = vipAmountBll.QueryByEntity(new VipAmountEntity() { VipId = vipInfo.VIPID, VipCardCode = vipInfo.VipCode }, null).FirstOrDefault(); if (vipAmountEntity != null) { var detailInfo = new VipAmountDetailEntity() { Amount = -receiveAmountOrderEntity.AmountAcctPay, AmountSourceId = "1", ObjectId = receiveAmountOrderEntity.OrderId.ToString() }; var vipAmountDetailId = vipAmountBll.AddVipAmount(vipInfo, unitInfo, ref vipAmountEntity, detailInfo, loggingSessionInfo); if (!string.IsNullOrWhiteSpace(vipAmountDetailId)) {//发送微信账户余额变动模板消息 var CommonBLL = new CommonBLL(); CommonBLL.BalanceChangedMessage(receiveAmountOrderEntity.OrderNo, vipAmountEntity, detailInfo, vipInfo.WeiXinUserId, vipInfo.VIPID, loggingSessionInfo); } } } //收款订单积分奖励 vipIntegralBll.OrderReward(receiveAmountOrderEntity, null); var paymentDetail = new T_Payment_detailEntity() { Payment_Id = Guid.NewGuid().ToString(), Inout_Id = receiveAmountOrderEntity.OrderId.ToString(), UnitCode = unitInfo == null ? "" : unitInfo.unit_code, Payment_Type_Id = tPaymentType.Payment_Type_Id, Payment_Type_Code = tPaymentType.Payment_Type_Code, Payment_Type_Name = tPaymentType.Payment_Type_Name, Price = receiveAmountOrderEntity.TransAmount, Total_Amount = receiveAmountOrderEntity.TotalAmount, Pay_Points = receiveAmountOrderEntity.PayPoints, CustomerId = loggingSessionInfo.ClientID }; paymentDetailBll.Create(paymentDetail); } } } context.Response.Write("SUCCESS"); } } } catch (Exception ex) { Loggers.Exception(new ExceptionLogInfo(ex)); context.Response.Write("ERROR:" + ex.Message); } }
protected override EmptyResponseData ProcessRequest(DTO.Base.APIRequest <GetRefundOrderDetailRP> pRequest) { var rd = new EmptyResponseData(); var para = pRequest.Parameters; var loggingSessionInfo = new SessionManager().CurrentUserLoginInfo; var salesReturnBLL = new T_SalesReturnBLL(loggingSessionInfo); var historyBLL = new T_SalesReturnHistoryBLL(loggingSessionInfo); var refundOrderBLL = new T_RefundOrderBLL(loggingSessionInfo); var vipAmountBLL = new VipAmountBLL(loggingSessionInfo); //余额返现BLL实例化 var vipAmountDetailBLL = new VipAmountDetailBLL(loggingSessionInfo); //余额返现BLL实例化 var pTran = salesReturnBLL.GetTran();//事务 T_SalesReturnEntity salesReturnEntity = null; T_SalesReturnHistoryEntity historyEntity = null; T_RefundOrderEntity refundEntity = null; var vipBll = new VipBLL(loggingSessionInfo); //会员BLL实例化 var userBll = new T_UserBLL(loggingSessionInfo); //店员BLL实例化 T_UserEntity userEntity = null; //店员信息 var unitBLL = new t_unitBLL(loggingSessionInfo); refundEntity = refundOrderBLL.GetByID(para.RefundID); userEntity = userBll.GetByID(loggingSessionInfo.UserID); using (pTran.Connection) { try { if (refundEntity != null) { //获取会员信息 var vipInfo = vipBll.GetByID(refundEntity.VipID); //获取会员的会员上线 VipEntity userInfo = vipBll.GetByID(vipInfo.HigherVipID); if (userInfo == null) { //获取会员的员工上线 var tempUser = userBll.GetByID(vipInfo.SetoffUserId); if (tempUser != null) { userInfo = new VipEntity(); userInfo.VIPID = tempUser.user_id; } } //获取门店信息 t_unitEntity unitInfo = null; if (!string.IsNullOrEmpty(refundEntity.UnitID)) { unitInfo = unitBLL.GetByID(refundEntity.UnitID); } userEntity = userBll.GetByID(loggingSessionInfo.UserID); refundEntity.Status = 2;//已退款 refundOrderBLL.Update(refundEntity, pTran); salesReturnEntity = salesReturnBLL.GetByID(refundEntity.SalesReturnID); if (salesReturnEntity != null) { salesReturnEntity.Status = 7;//已完成 salesReturnBLL.Update(salesReturnEntity, pTran); historyEntity = new T_SalesReturnHistoryEntity() { SalesReturnID = salesReturnEntity.SalesReturnID, OperationType = 7, OperationDesc = "退款", OperatorID = loggingSessionInfo.UserID, HisRemark = "您的服务单财务已退款,请注意查收", OperatorName = userEntity.user_name, OperatorType = 1 }; historyBLL.Create(historyEntity, pTran); } #region 退回集客订单分润 //上线员工和线上会员不为空 if (userInfo != null) { var vipAmountEntity = vipAmountBLL.QueryByEntity(new VipAmountEntity() { VipId = userInfo.VIPID, VipCardCode = userInfo.VipCode }, null).FirstOrDefault(); var vipAmountDetail = vipAmountDetailBLL.QueryByEntity(new VipAmountDetailEntity() { ObjectId = refundEntity.OrderID, AmountSourceId = "20" }, null).FirstOrDefault(); if (vipAmountDetail != null) { var detailInfo = new VipAmountDetailEntity() { Amount = -vipAmountDetail.Amount.Value, ObjectId = refundEntity.RefundID.ToString(), AmountSourceId = "25" }; var vipAmountDetailId = vipAmountBLL.AddVipAmount(userInfo, unitInfo, ref vipAmountEntity, detailInfo, pTran, loggingSessionInfo); } } #endregion } pTran.Commit(); //提交事物 } catch (Exception ex) { pTran.Rollback();//回滚事务 throw new APIException(ex.Message); } } return(rd); }
/// <summary> /// 计算超级分销商佣金,分润用到的批处理 /// </summary> public void CalculateSuperRetailTraderOrderJob() { var numCount = 50; var customerIDs = CustomerBLL.Instance.GetCustomerList(); foreach (var customer in customerIDs) { string connString = customer.Value; var count = RedisOpenAPI.Instance.CCSuperRetailTraderOrder().GetSuperRetailTraderOrderLength(new CC_Order { CustomerID = customer.Key }); if (count.Code != ResponseCode.Success) { BaseService.WriteLog("从redis获取待绑定优惠券数量失败"); continue; } if (count.Result <= 0) { continue; } if (count.Result < numCount) { numCount = Convert.ToInt32(count.Result); } DataTable dtProfitDetail = CreateTableProfitDetail(); DataTable dtAmountDetail = CreateTableAmountDetail(); DataTable dtAmount = CreateTableAmount(); for (var i = 0; i < numCount; i++) { var response = RedisOpenAPI.Instance.CCSuperRetailTraderOrder().GetSuperRetailTraderOrder(new CC_Order { CustomerID = customer.Key }); if (response.Code == ResponseCode.Success) { var orderInfo = response.Result.OrderInfo.JsonDeserialize <T_InoutEntity>(); //var loggingSessionInfo = response.Result.LogSession.JsonDeserialize<LoggingSessionInfo>(); var loggingSessionInfo = CustomerBLL.Instance.GetBSLoggingSession(customer.Key, "1"); T_InoutBLL inoutBLL = new T_InoutBLL(loggingSessionInfo); //inoutBLL.CalculateSuperRetailTraderOrder(loggingSessionInfo, orderInfo); if (orderInfo != null) { if (orderInfo.data_from_id == "35" || orderInfo.data_from_id == "36") { T_SuperRetailTraderBLL bllSuperRetailTrader = new T_SuperRetailTraderBLL(loggingSessionInfo); DataSet dsAllFather = bllSuperRetailTrader.GetAllFather(orderInfo.sales_user); if (dsAllFather != null && dsAllFather.Tables.Count > 0 && dsAllFather.Tables[0].Rows.Count > 0) { T_SuperRetailTraderProfitConfigBLL bllSuperRetailTraderProfitConfig = new T_SuperRetailTraderProfitConfigBLL(loggingSessionInfo); T_SuperRetailTraderConfigBLL bllSuperRetailTraderConfig = new T_SuperRetailTraderConfigBLL(loggingSessionInfo); T_SuperRetailTraderProfitDetailBLL bllSuperRetailTraderProfitDetail = new T_SuperRetailTraderProfitDetailBLL(loggingSessionInfo); VipAmountBLL bllVipAmount = new VipAmountBLL(loggingSessionInfo); VipAmountDetailBLL bllVipAmountDetail = new VipAmountDetailBLL(loggingSessionInfo); var entitySuperRetailTraderProfitConfig = bllSuperRetailTraderProfitConfig.QueryByEntity(new T_SuperRetailTraderProfitConfigEntity() { CustomerId = loggingSessionInfo.ClientID, IsDelete = 0, Status = "10" }, null); var entityConfig = bllSuperRetailTraderConfig.QueryByEntity(new T_SuperRetailTraderConfigEntity() { CustomerId = loggingSessionInfo.ClientID, IsDelete = 0 }, null).SingleOrDefault(); if (entityConfig != null && entitySuperRetailTraderProfitConfig != null) { //佣金比列 decimal SkuCommission = Convert.ToDecimal(entityConfig.SkuCommission) * Convert.ToDecimal(0.01); //商品分润比列 decimal DistributionProfit = Convert.ToDecimal(entityConfig.DistributionProfit) * Convert.ToDecimal(0.01); foreach (DataRow dr in dsAllFather.Tables[0].Rows) { decimal amount = 0; string strAmountSourceId = string.Empty; T_SuperRetailTraderProfitConfigEntity singlProfitConfig = new T_SuperRetailTraderProfitConfigEntity(); if (dr["level"].ToString() == "1") //佣金 { strAmountSourceId = "34"; singlProfitConfig = entitySuperRetailTraderProfitConfig.Where(a => a.Level == Convert.ToInt16(dr["level"].ToString())).SingleOrDefault(); if (singlProfitConfig != null) { if (singlProfitConfig.ProfitType == "Percent") { amount = Convert.ToDecimal(orderInfo.actual_amount) * SkuCommission; } } } else //分润 { strAmountSourceId = "33"; singlProfitConfig = entitySuperRetailTraderProfitConfig.Where(a => a.Level == Convert.ToInt16(dr["level"].ToString())).SingleOrDefault(); if (singlProfitConfig != null) { if (singlProfitConfig.ProfitType == "Percent") { //amount = Convert.ToDecimal(orderInfo.actual_amount) * DistributionProfit * Convert.ToDecimal(singlProfitConfig.Profit) * Convert.ToDecimal(0.01); amount = Convert.ToDecimal(orderInfo.actual_amount) * Convert.ToDecimal(singlProfitConfig.Profit) * Convert.ToDecimal(0.01); } } } var vipAmountDetail = bllVipAmountDetail.QueryByEntity(new VipAmountDetailEntity() { ObjectId = orderInfo.order_id, AmountSourceId = strAmountSourceId }, null); if (vipAmountDetail != null && vipAmountDetail.Length > 0) { continue; } if (amount > 0) { IDbTransaction tran = new JIT.CPOS.BS.DataAccess.Base.TransactionHelper(loggingSessionInfo).CreateTransaction(); try { T_SuperRetailTraderProfitDetailEntity entitySuperRetailTraderProfitDetail = new T_SuperRetailTraderProfitDetailEntity() { SuperRetailTraderProfitConfigId = singlProfitConfig.SuperRetailTraderProfitConfigId, SuperRetailTraderID = new Guid(dr["SuperRetailTraderID"].ToString()), Level = Convert.ToInt16(dr["level"].ToString()), ProfitType = "Cash", Profit = amount, OrderType = "Order", OrderId = orderInfo.order_id, OrderDate = Convert.ToDateTime(orderInfo.order_date), VipId = orderInfo.vip_no, OrderActualAmount = orderInfo.actual_amount, SalesId = new Guid(orderInfo.sales_user), OrderNo = orderInfo.order_no, CustomerId = loggingSessionInfo.ClientID }; bllSuperRetailTraderProfitDetail.Create(entitySuperRetailTraderProfitDetail, (SqlTransaction)tran); VipAmountEntity entityVipAmount = new VipAmountEntity(); VipAmountDetailEntity entityVipAmountDetail = new VipAmountDetailEntity(); entityVipAmountDetail = new VipAmountDetailEntity { VipAmountDetailId = Guid.NewGuid(), VipId = dr["SuperRetailTraderID"].ToString(), Amount = amount, UsedReturnAmount = 0, EffectiveDate = DateTime.Now, DeadlineDate = Convert.ToDateTime("9999-12-31 23:59:59"), AmountSourceId = strAmountSourceId, ObjectId = orderInfo.order_id, CustomerID = loggingSessionInfo.ClientID, Reason = "超级分销商", IsWithdrawCash = 0 }; bllVipAmountDetail.Create(entityVipAmountDetail, (SqlTransaction)tran); //DataRow dr_ProfitDetail = dtProfitDetail.NewRow(); //dr_ProfitDetail["Id"] = Guid.NewGuid(); //dr_ProfitDetail["SuperRetailTraderProfitConfigId"] = new Guid(singlProfitConfig.SuperRetailTraderProfitConfigId.ToString()); //dr_ProfitDetail["SuperRetailTraderID"] = new Guid(dr["SuperRetailTraderID"].ToString()); //dr_ProfitDetail["Level"] = Convert.ToInt16(dr["level"].ToString()); //dr_ProfitDetail["ProfitType"] = "Cash"; //dr_ProfitDetail["Profit"] = amount; //dr_ProfitDetail["OrderType"] = "Order"; //dr_ProfitDetail["OrderId"] = orderInfo.order_id; //dr_ProfitDetail["OrderNo"] = orderInfo.order_no; //dr_ProfitDetail["OrderDate"] = Convert.ToDateTime(orderInfo.order_date); //dr_ProfitDetail["OrderActualAmount"] = orderInfo.actual_amount; //dr_ProfitDetail["SalesId"] = new Guid(orderInfo.sales_user); //dr_ProfitDetail["VipId"] = orderInfo.vip_no; //dr_ProfitDetail["CreateBy"] = loggingSessionInfo.ClientID; //dr_ProfitDetail["CreateTime"] = DateTime.Now; //dr_ProfitDetail["LastUpdateBy"] = loggingSessionInfo.ClientID; //dr_ProfitDetail["LastUpdateTime"] = DateTime.Now; //dr_ProfitDetail["CustomerId"] = loggingSessionInfo.ClientID; //dr_ProfitDetail["IsDelete"] = 0; //dtProfitDetail.Rows.Add(dr_ProfitDetail); //DataRow dr_AmountDetail = dtAmountDetail.NewRow(); //dr_AmountDetail["VipAmountDetailId"] = Guid.NewGuid(); //dr_AmountDetail["VipId"] = dr["SuperRetailTraderID"].ToString(); //dr_AmountDetail["VipCardCode"] = ""; //dr_AmountDetail["UnitID"] = ""; //dr_AmountDetail["UnitName"] = ""; //dr_AmountDetail["SalesAmount"] = 0; //dr_AmountDetail["Amount"] = amount; //dr_AmountDetail["UsedReturnAmount"] = 0; //dr_AmountDetail["Reason"] = "超级分销商"; //dr_AmountDetail["EffectiveDate"] = DateTime.Now; //dr_AmountDetail["DeadlineDate"] = Convert.ToDateTime("9999-12-31 23:59:59"); //dr_AmountDetail["AmountSourceId"] = strAmountSourceId; //dr_AmountDetail["ObjectId"] = orderInfo.order_id; //dr_AmountDetail["Remark"] = "超级分销商"; //dr_AmountDetail["IsValid"] = 0; //dr_AmountDetail["IsWithdrawCash"] = 0; //dr_AmountDetail["CustomerID"] = loggingSessionInfo.ClientID; //dr_AmountDetail["CreateTime"] = DateTime.Now; //dr_AmountDetail["CreateBy"] = loggingSessionInfo.ClientID; //dr_AmountDetail["LastUpdateBy"] = loggingSessionInfo.ClientID; //dr_AmountDetail["LastUpdateTime"] = DateTime.Now; //dr_AmountDetail["IsDelete"] = 0; ////dr_AmountDetail["IsCalculated"] = 1; //dtAmountDetail.Rows.Add(dr_AmountDetail); entityVipAmount = bllVipAmount.QueryByEntity(new VipAmountEntity() { VipId = dr["SuperRetailTraderID"].ToString(), IsDelete = 0 }, null).SingleOrDefault(); if (entityVipAmount == null) { entityVipAmount = new VipAmountEntity { VipId = dr["SuperRetailTraderID"].ToString(), BeginAmount = 0, InAmount = amount, OutAmount = 0, EndAmount = amount, TotalAmount = amount, BeginReturnAmount = 0, InReturnAmount = 0, OutReturnAmount = 0, ReturnAmount = 0, ImminentInvalidRAmount = 0, InvalidReturnAmount = 0, ValidReturnAmount = 0, TotalReturnAmount = 0, IsLocking = 0, CustomerID = loggingSessionInfo.ClientID, VipCardCode = "" }; bllVipAmount.Create(entityVipAmount, tran); //DataRow dr_Amount = dtAmount.NewRow(); //dr_Amount["VipId"] = dr["SuperRetailTraderID"].ToString(); //dr_Amount["VipCardCode"] = ""; //dr_Amount["BeginAmount"] = 0; //dr_Amount["InAmount"] = amount; //dr_Amount["OutAmount"] = 0; //dr_Amount["EndAmount"] = amount; //dr_Amount["TotalAmount"] = amount; //dr_Amount["BeginReturnAmount"] = 0; //dr_Amount["InReturnAmount"] = 0; //dr_Amount["OutReturnAmount"] = 0; //dr_Amount["ReturnAmount"] = 0; //dr_Amount["ImminentInvalidRAmount"] = 0; //dr_Amount["InvalidReturnAmount"] = 0; //dr_Amount["ValidReturnAmount"] = 0; //dr_Amount["TotalReturnAmount"] = 0; //dr_Amount["PayPassword"] = ""; //dr_Amount["IsLocking"] = 0; //dr_Amount["CustomerID"] = loggingSessionInfo.ClientID; //dr_Amount["CreateTime"] = DateTime.Now; //dr_Amount["CreateBy"] = loggingSessionInfo.ClientID; //dr_Amount["LastUpdateBy"] =loggingSessionInfo.ClientID; //dr_Amount["LastUpdateTime"] = DateTime.Now; //dr_Amount["IsDelete"] = 0; //dtAmount.Rows.Add(dr_Amount); } else { entityVipAmount.InReturnAmount = (entityVipAmount.InReturnAmount == null ? 0 : entityVipAmount.InReturnAmount.Value) + amount; entityVipAmount.TotalReturnAmount = (entityVipAmount.TotalReturnAmount == null ? 0 : entityVipAmount.TotalReturnAmount.Value) + amount; entityVipAmount.ValidReturnAmount = (entityVipAmount.ValidReturnAmount == null ? 0 : entityVipAmount.ValidReturnAmount.Value) + amount; entityVipAmount.ReturnAmount = (entityVipAmount.ReturnAmount == null ? 0 : entityVipAmount.ReturnAmount.Value) + amount; bllVipAmount.Update(entityVipAmount); } tran.Commit(); } catch (Exception) { tran.Rollback(); throw; } } } } } } } } } //if (dtAmount.Rows.Count > 0) //{ // Utils.SqlBulkCopy(connString, dtAmount, "VipAmount"); //} //if (dtAmountDetail.Rows.Count>0 && dtProfitDetail.Rows.Count>0) //{ // Utils.SqlBulkCopy(connString, dtProfitDetail, "T_SuperRetailTraderProfitDetail"); // Utils.SqlBulkCopy(connString, dtAmountDetail, "VipAmountDetail"); //} } }
protected override GetVipAmountDetailRD ProcessRequest(DTO.Base.APIRequest <GetVipAmountDetailRP> pRequest) { var rd = new GetVipAmountDetailRD(); var para = pRequest.Parameters; var loggingSessionInfo = new SessionManager().CurrentUserLoginInfo; //登录状态信息 var vipAmountBLL = new VipAmountBLL(loggingSessionInfo); var vipAmountDetailBLL = new VipAmountDetailBLL(loggingSessionInfo); //查询参数 List <IWhereCondition> complexCondition = new List <IWhereCondition> { }; //商户条件 complexCondition.Add(new EqualsCondition() { FieldName = "a.VipID", Value = para.VipId }); complexCondition.Add(new EqualsCondition() { FieldName = "a.VipCardCode", Value = para.VipCardCode }); if (para.Type == 1) //余额 { complexCondition.Add(new DirectCondition(" a.AmountSourceId in (1,4,6,10,17,20,21,23) ")); } else if (para.Type == 2) //返现 { complexCondition.Add(new DirectCondition(" a.AmountSourceId in (2,3,13,16,22,24)")); } //排序参数 List <OrderBy> lstOrder = new List <OrderBy> { }; lstOrder.Add(new OrderBy() { FieldName = "a.CreateTime", Direction = OrderByDirections.Desc }); var tempList = vipAmountDetailBLL.GetVipAmountDetailList(complexCondition.ToArray(), lstOrder.ToArray(), para.PageSize, para.PageIndex); rd.TotalCount = tempList.RowCount; rd.TotalPageCount = tempList.PageCount; rd.VipAmountDetailList = tempList.Entities.Select(t => new VipAmountDetailInfo() { UnitName = t.UnitName, AmountSourceName = t.AmountSourceName, Amount = t.Amount.Value, CreateTime = t.CreateTime.Value.ToString("yyyy-MM-dd HH:mm"), Reason = t.Reason == null ? "" : t.Reason, Remark = t.Remark == null ? "" : t.Remark, ImageUrl = t.ImageUrl, CreateByName = t.CreateByName, }).ToArray(); //查询当前余额/返现 rd.CurrentAmount = 0; //当前余额/返现(默认值) var vipAmountInfo = vipAmountBLL.QueryByEntity(new VipAmountEntity() { VipId = para.VipId, VipCardCode = para.VipCardCode }, null).FirstOrDefault(); if (vipAmountInfo != null) { if (para.Type == 1) //余额 { rd.CurrentAmount = vipAmountInfo.EndAmount.Value; } else { rd.CurrentAmount = vipAmountInfo.ValidReturnAmount.Value; } } return(rd); }
protected override ProcessActionRD ProcessRequest(APIRequest <ProcessActionRP> pRequest) { #region 错误码 const int ERROR_ORDER_NOTEXISTS = 301; const int ERROR_ORDER_PROCESSED = 302; #endregion ProcessActionRD rd = new ProcessActionRD(); T_InoutBLL _TInoutbll = new T_InoutBLL(this.CurrentUserInfo); //订单表 TInoutStatusBLL _TInoutStatusBLL = new TInoutStatusBLL(this.CurrentUserInfo); //日志表 VipIntegralBLL vipIntegralBLL = new VipIntegralBLL(this.CurrentUserInfo); //会员业务对象实例化 var UserBLL = new T_UserBLL(this.CurrentUserInfo); //员工实例 string OrderID = pRequest.Parameters.OrderID; //订单ID string ActionCode = pRequest.Parameters.ActionCode; //订单操作码(当前订单状态码作为操作码) string ActionParameter = pRequest.Parameters.ActionParameter; //订单操作参数,可为空 string DeliverCompany = pRequest.Parameters.DeliverCompany; //快递公司 string DeliverOrder = pRequest.Parameters.DeliverOrder; //快递单号 string VipID = pRequest.UserID; if (pRequest.ChannelId != "2") { VipID = pRequest.Parameters.VipID; } var tran = _TInoutbll.GetTran(); using (tran.Connection)//事物 { try { #region 1.根据订单ID,订单操作码更新订单表中订单状态和状态描述 var entity = _TInoutbll.GetInoutInfo(OrderID, this.CurrentUserInfo); //根据标识获取新的实例 if (entity.status == ActionCode) //判断是否重复操作 { throw new APIException("操作已处理") { ErrorCode = ERROR_ORDER_PROCESSED } } ; #region 当状态为完成时,返现,返积分 if (ActionCode == "700" && entity.status != "700") { //确认收货时处理积分、返现、佣金[完成订单] // vipIntegralBLL.OrderReward(entity, tran); new SendOrderRewardMsgBLL().OrderReward(entity, this.CurrentUserInfo, tran);//存入到缓存 } #endregion if (entity == null) { throw new APIException(string.Format("未找到OrderID:{0}订单", pRequest.Parameters.OrderID)) { ErrorCode = ERROR_ORDER_NOTEXISTS } } ; if (entity.status == ActionCode) //如果状态以及国内是要提交的状态了,就不要再提交了 { return(rd); } string Updatebeforestatus = entity.status_desc; //更新之前的订单状态描述 entity.status = ActionCode; //输入的状态码 entity.Field7 = ActionCode; entity.status_desc = GetStatusDesc(ActionCode); //输入的状态码对应的状态描述 entity.Field10 = GetStatusDesc(ActionCode); //Field10=status_desc状态描述 entity.modify_time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); //修改时间 entity.modify_user_id = pRequest.UserID; //修改人 if (ActionCode == "600" || !string.IsNullOrEmpty(DeliverOrder) || !string.IsNullOrEmpty(DeliverCompany)) { entity.Field9 = DateTime.Now.ToSQLFormatString(); entity.Field2 = DeliverOrder; //快递单号 entity.carrier_id = DeliverCompany; //快递单号 //更新订单配送商及配送单号 } if (ActionCode == "700" && pRequest.ChannelId != "2") { if (string.IsNullOrEmpty(entity.sales_user)) { entity.sales_user = pRequest.UserID;//把当前用户作为服务人员。****!! } //更新订单支付状态 entity.Field1 = "1"; entity.accpect_time = DateTime.Now.ToString(); #region 提货,订单明细修改 T_Inout_DetailBLL inoutDetailBll = new T_Inout_DetailBLL(CurrentUserInfo); VipAmountDetailBLL vipAmountDetailBll = new VipAmountDetailBLL(CurrentUserInfo); if (pRequest.Parameters.OrderItemInfoList != null) { foreach (var item in pRequest.Parameters.OrderItemInfoList) { T_Inout_DetailEntity inoutDetailEntity = inoutDetailBll.QueryByEntity(new T_Inout_DetailEntity() { order_id = OrderID, sku_id = item.SkuId }, null).FirstOrDefault(); var vipAmountDetailEntity = vipAmountDetailBll.QueryByEntity(new VipAmountDetailEntity() { ObjectId = OrderID, AmountSourceId = "1" }, null).FirstOrDefault(); //将提货金额 + 余额 = SumPrice if (vipAmountDetailEntity != null) { item.SumPrice += Math.Abs(Convert.ToDecimal(vipAmountDetailEntity.Amount)); } inoutDetailEntity.enter_qty = item.EnterQty; inoutDetailEntity.Field9 = "kg"; inoutDetailEntity.enter_amount = item.SumPrice; inoutDetailEntity.enter_price = Convert.ToDecimal(Math.Round(item.SumPrice / item.EnterQty, 2)); entity.total_amount = entity.total_amount + Math.Round(Convert.ToDecimal(item.SumPrice / (entity.discount_rate / 100)), 2) - inoutDetailEntity.retail_amount; entity.total_retail = entity.total_amount; entity.actual_amount = entity.actual_amount + Math.Round(Convert.ToDecimal(item.SumPrice / (entity.discount_rate / 100)), 2) - inoutDetailEntity.retail_amount; inoutDetailBll.Update(inoutDetailEntity, tran); } } #endregion } entity.accpect_time = DateTime.Now.ToString(); _TInoutbll.Update(entity, tran); //用事物更新订单表(T_Inout) #endregion #region 2.根据订单ID更新订单日志表中数据 string CreateName = ""; if (pRequest.ChannelId != "2") { var UserData = UserBLL.GetByID(this.CurrentUserInfo.CurrentUser.User_Id); CreateName = string.Format("[操作人:{0}]", (UserData == null ? "" : UserData.user_name)); } else { CreateName = "[操作人:客户]"; } var _TInoutStatusEntity = new TInoutStatusEntity() { InoutStatusID = Guid.NewGuid(), OrderID = OrderID, //订单ID OrderStatus = Convert.ToInt32(ActionCode), //状态码 //StatusRemark = "订单状态从" + Updatebeforestatus + "变为" + GetStatusDesc(ActionCode) + "[操作人:" + CurrentUserInfo.CurrentUser.User_Name + "]", //状态更新描述 StatusRemark = "订单状态从" + Updatebeforestatus + "变为" + GetStatusDesc(ActionCode) + CreateName, //状态更新描述 CustomerID = CurrentUserInfo.ClientID //客户ID }; _TInoutStatusBLL.Create(_TInoutStatusEntity, tran); //用事物更新,向日志表(TInoutStatus)中插入一条数据 #endregion tran.Commit(); if (ActionCode == "600") { #region 处理订单发货发送微信模板消息 //获取会员信息 var vipBll = new VipBLL(CurrentUserInfo); var vipInfo = vipBll.GetByID(entity.vip_no); var inoutService = new Inout3Service(CurrentUserInfo); //物流公司 string LogisticsName = inoutService.GetCompanyName(entity.carrier_id); var InoutInfo = new InoutInfo() { order_no = entity.order_no, carrier_name = LogisticsName, vipId = entity.vip_no, Field2 = entity.Field2 }; // var CommonBLL = new CommonBLL(); // CommonBLL.SentShipMessage(InoutInfo, vipInfo.WeiXinUserId, InoutInfo.vip_no, CurrentUserInfo); new SendOrderSendMsgBLL().SentShipMessage(InoutInfo, vipInfo.WeiXinUserId, InoutInfo.vip_no, CurrentUserInfo); #endregion } } catch (Exception ex) { tran.Rollback(); throw new APIException(ex.Message) { ErrorCode = ERROR_ORDER_NOTEXISTS }; } } return(rd); }
/// <summary> /// 充值订单循环队列计算 /// </summary> public void CalculateRechargeOrderJob() { var numCount = 50; var customerIDs = CustomerBLL.Instance.GetCustomerList(); foreach (var customer in customerIDs) { string connString = customer.Value; var count = RedisOpenAPI.Instance.CCRechargeOrder().GetRechargeOrderLength(new CC_Order { CustomerID = customer.Key }); if (count.Code != ResponseCode.Success) { BaseService.WriteLog("从redis获取充值订单数据失败"); continue; } if (count.Result <= 0) { continue; } if (count.Result < numCount) { numCount = Convert.ToInt32(count.Result); } var loggingSessionInfo = CustomerBLL.Instance.GetBSLoggingSession(customer.Key, "RedisSystem"); VipCardProfitRuleBLL bllVipCardProfitRule = new VipCardProfitRuleBLL(loggingSessionInfo); VipCardProfitRuleEntity[] entityVipCardProfitRule = null; var bllVipCardGradeChangeLog = new VipCardGradeChangeLogBLL(loggingSessionInfo); VipAmountBLL bllVipAmount = new VipAmountBLL(loggingSessionInfo); VipAmountDetailBLL bllVipAmountDetail = new VipAmountDetailBLL(loggingSessionInfo); T_SplitProfitRecordBLL bllSplitProfitRecord = new T_SplitProfitRecordBLL(loggingSessionInfo); for (var i = 0; i < numCount; i++) { var response = RedisOpenAPI.Instance.CCRechargeOrder().GetRechargeOrder(new CC_Order { CustomerID = customer.Key }); if (response.Code == ResponseCode.Success) { var rechargeOrderInfo = response.Result.OrderInfo.JsonDeserialize <RechargeOrderEntity>(); entityVipCardProfitRule = bllVipCardProfitRule.QueryByEntity(new VipCardProfitRuleEntity() { VipCardTypeID = rechargeOrderInfo.VipCardTypeId, IsDelete = 0 }, null); if (entityVipCardProfitRule != null) { //DataTable dtAmountDetail = CreateTableAmountDetail(); //DataTable dtAmount = CreateTableAmount(); //DataTable dtSplitProfitRecord = CreateTableSplitProfitRecord(); VipAmountEntity entityVipAmount = new VipAmountEntity(); VipAmountDetailEntity entityVipAmountDetail = new VipAmountDetailEntity(); T_SplitProfitRecordEntity entitySplitProfitRecord = new T_SplitProfitRecordEntity(); foreach (var ProfitRule in entityVipCardProfitRule) { decimal amount = 0; string strAmountSourceId = string.Empty; string strVipId = string.Empty; string strUserType = string.Empty; if (ProfitRule.IsApplyAllUnits == 0) { VipCardProfitRuleUnitMappingBLL bllVipCardProfitRuleUnitMapping = new VipCardProfitRuleUnitMappingBLL(loggingSessionInfo); var vipCardProfitRuleUnitMapping = bllVipCardProfitRuleUnitMapping.QueryByEntity(new VipCardProfitRuleUnitMappingEntity() { CardBuyToProfitRuleId = ProfitRule.CardBuyToProfitRuleId, UnitID = rechargeOrderInfo.UnitId, IsDelete = 0, CustomerID = loggingSessionInfo.ClientID }, null).SingleOrDefault(); if (vipCardProfitRuleUnitMapping == null) { continue; } } if (ProfitRule.ProfitOwner == "Employee") { strAmountSourceId = "38"; strVipId = rechargeOrderInfo.UserId; strUserType = "User"; } if (ProfitRule.ProfitOwner == "Unit") { strAmountSourceId = "42"; strVipId = rechargeOrderInfo.UnitId; strUserType = "Unit"; } var vipAmountDetail = bllVipAmountDetail.QueryByEntity(new VipAmountDetailEntity() { ObjectId = rechargeOrderInfo.OrderID.ToString(), AmountSourceId = strAmountSourceId }, null); if (vipAmountDetail != null && vipAmountDetail.Length > 0) { continue; } if (rechargeOrderInfo.OrderDesc == "Upgrade") //首充 { amount = (decimal)ProfitRule.FirstRechargeProfitPct * (decimal)rechargeOrderInfo.ActuallyPaid * (decimal)0.01; } if (rechargeOrderInfo.OrderDesc == "ReRecharge")//续充 { VipCardReRechargeProfitRuleBLL bllVipCardReRechargeProfitRule = new VipCardReRechargeProfitRuleBLL(loggingSessionInfo); var entityVipCardReRechargeProfitRule = bllVipCardReRechargeProfitRule.QueryByEntity(new VipCardReRechargeProfitRuleEntity() { VipCardTypeID = rechargeOrderInfo.VipCardTypeId, CardBuyToProfitRuleId = ProfitRule.CardBuyToProfitRuleId, IsDelete = 0 }, null); if (entityVipCardReRechargeProfitRule != null) { decimal discount = 0; foreach (var ReRechargeProfitRule in entityVipCardReRechargeProfitRule.OrderByDescending(a => a.LimitAmount)) { if (ReRechargeProfitRule.ProfitType == "Superposition") { discount = (decimal)(ReRechargeProfitRule.LimitAmount * ReRechargeProfitRule.ProfitPct) * (decimal)0.01; amount = (decimal)(rechargeOrderInfo.ActuallyPaid / ReRechargeProfitRule.LimitAmount) * discount; } if (ReRechargeProfitRule.ProfitType == "Step") { if (rechargeOrderInfo.ActuallyPaid >= ReRechargeProfitRule.LimitAmount) { if (discount == 0) { discount = (decimal)ReRechargeProfitRule.ProfitPct * (decimal)0.01; amount = (decimal)rechargeOrderInfo.ActuallyPaid * discount; } } } } } } //入库 if (amount > 0) { IDbTransaction tran = new JIT.CPOS.BS.DataAccess.Base.TransactionHelper(loggingSessionInfo).CreateTransaction(); try { // DataRow dr_AmountDetail = dtAmountDetail.NewRow(); // dr_AmountDetail["VipAmountDetailId"] = Guid.NewGuid(); // dr_AmountDetail["VipId"] = strVipId; // dr_AmountDetail["VipCardCode"] = ""; // dr_AmountDetail["UnitID"] = ""; // dr_AmountDetail["UnitName"] = ""; // dr_AmountDetail["SalesAmount"] = 0; // dr_AmountDetail["Amount"] = amount; // dr_AmountDetail["UsedReturnAmount"] = 0; // dr_AmountDetail["Reason"] = "充值"; // dr_AmountDetail["EffectiveDate"] = DateTime.Now; // dr_AmountDetail["DeadlineDate"] = Convert.ToDateTime("9999-12-31 23:59:59"); // dr_AmountDetail["AmountSourceId"] = strAmountSourceId; // dr_AmountDetail["ObjectId"] = rechargeOrderInfo.OrderID.ToString(); // dr_AmountDetail["Remark"] = "充值"; // dr_AmountDetail["IsValid"] = 0; // dr_AmountDetail["IsWithdrawCash"] = 0; // dr_AmountDetail["CustomerID"] = loggingSessionInfo.ClientID; // dr_AmountDetail["CreateTime"] = DateTime.Now; // dr_AmountDetail["CreateBy"] = loggingSessionInfo.ClientID; // dr_AmountDetail["LastUpdateBy"] = loggingSessionInfo.ClientID; // dr_AmountDetail["LastUpdateTime"] = DateTime.Now; // dr_AmountDetail["IsDelete"] = 0; // //dr_AmountDetail["IsCalculated"] = 1; // dtAmountDetail.Rows.Add(dr_AmountDetail); //DataRow dr_SplitProfitRecord = dtSplitProfitRecord.NewRow(); //dr_SplitProfitRecord["Id"] = Guid.NewGuid(); //dr_SplitProfitRecord["SourceType"] = "Amount"; //dr_SplitProfitRecord["SourceId"] = strAmountSourceId; //dr_SplitProfitRecord["ObjectId"] = rechargeOrderInfo.OrderID.ToString(); //dr_SplitProfitRecord["UserType"] = strUserType; //dr_SplitProfitRecord["UserId"] = rechargeOrderInfo.UserId; //dr_SplitProfitRecord["SplitAmount"] = amount; //dr_SplitProfitRecord["SplitSattus"] = "10"; //dr_SplitProfitRecord["CustomerId"] = loggingSessionInfo.ClientID; //dr_SplitProfitRecord["CreateTime"] = DateTime.Now; //dr_SplitProfitRecord["CreateBy"] = loggingSessionInfo.ClientID; //dr_SplitProfitRecord["LastUpdateTime"] = DateTime.Now; //dr_SplitProfitRecord["LastUpdateBy"] = loggingSessionInfo.ClientID; //dr_SplitProfitRecord["IsDelete"] = 0; //dtSplitProfitRecord.Rows.Add(dr_SplitProfitRecord); entitySplitProfitRecord = new T_SplitProfitRecordEntity() { ID = Guid.NewGuid().ToString(), SourceType = "Amount", SourceId = strAmountSourceId, ObjectId = rechargeOrderInfo.OrderID.ToString(), UserType = strUserType, UserId = rechargeOrderInfo.UserId, SplitAmount = amount, SplitSattus = "10", CustomerID = loggingSessionInfo.ClientID }; bllSplitProfitRecord.Create(entitySplitProfitRecord, tran); entityVipAmountDetail = new VipAmountDetailEntity { VipAmountDetailId = Guid.NewGuid(), VipId = strVipId, Amount = amount, UsedReturnAmount = 0, EffectiveDate = DateTime.Now, DeadlineDate = Convert.ToDateTime("9999-12-31 23:59:59"), AmountSourceId = strAmountSourceId, ObjectId = rechargeOrderInfo.OrderID.ToString(), CustomerID = loggingSessionInfo.ClientID, Reason = "充值", IsWithdrawCash = 0 }; bllVipAmountDetail.Create(entityVipAmountDetail, (SqlTransaction)tran); entityVipAmount = bllVipAmount.QueryByEntity(new VipAmountEntity() { VipId = strVipId, IsDelete = 0 }, null).SingleOrDefault(); if (entityVipAmount == null) { entityVipAmount = new VipAmountEntity { VipId = strVipId, BeginAmount = 0, InAmount = amount, OutAmount = 0, EndAmount = amount, TotalAmount = amount, BeginReturnAmount = 0, InReturnAmount = 0, OutReturnAmount = 0, ReturnAmount = 0, ImminentInvalidRAmount = 0, InvalidReturnAmount = 0, ValidReturnAmount = 0, TotalReturnAmount = 0, IsLocking = 0, CustomerID = loggingSessionInfo.ClientID, VipCardCode = "" }; bllVipAmount.Create(entityVipAmount, tran); //DataRow dr_Amount = dtAmount.NewRow(); //dr_Amount["VipId"] = strVipId; //dr_Amount["VipCardCode"] = ""; //dr_Amount["BeginAmount"] = 0; //dr_Amount["InAmount"] = amount; //dr_Amount["OutAmount"] = 0; //dr_Amount["EndAmount"] = amount; //dr_Amount["TotalAmount"] = amount; //dr_Amount["BeginReturnAmount"] = 0; //dr_Amount["InReturnAmount"] = 0; //dr_Amount["OutReturnAmount"] = 0; //dr_Amount["ReturnAmount"] = 0; //dr_Amount["ImminentInvalidRAmount"] = 0; //dr_Amount["InvalidReturnAmount"] = 0; //dr_Amount["ValidReturnAmount"] = 0; //dr_Amount["TotalReturnAmount"] = 0; //dr_Amount["PayPassword"] = ""; //dr_Amount["IsLocking"] = 0; //dr_Amount["CustomerID"] = loggingSessionInfo.ClientID; //dr_Amount["CreateTime"] = DateTime.Now; //dr_Amount["CreateBy"] = loggingSessionInfo.ClientID; //dr_Amount["LastUpdateBy"] = loggingSessionInfo.ClientID; //dr_Amount["LastUpdateTime"] = DateTime.Now; //dr_Amount["IsDelete"] = 0; //dtAmount.Rows.Add(dr_Amount); } else { entityVipAmount.InReturnAmount = (entityVipAmount.InReturnAmount == null ? 0 : entityVipAmount.InReturnAmount.Value) + amount; entityVipAmount.TotalReturnAmount = (entityVipAmount.TotalReturnAmount == null ? 0 : entityVipAmount.TotalReturnAmount.Value) + amount; entityVipAmount.ValidReturnAmount = (entityVipAmount.ValidReturnAmount == null ? 0 : entityVipAmount.ValidReturnAmount.Value) + amount; entityVipAmount.ReturnAmount = (entityVipAmount.ReturnAmount == null ? 0 : entityVipAmount.ReturnAmount.Value) + amount; bllVipAmount.Update(entityVipAmount); } tran.Commit(); } catch (Exception) { tran.Rollback(); throw; } } } //if (dtAmount.Rows.Count > 0 && dtAmountDetail.Rows.Count == dtAmount.Rows.Count) //{ // Utils.SqlBulkCopy(connString, dtAmount, "VipAmount"); //} //if (dtAmountDetail.Rows.Count > 0 && dtSplitProfitRecord.Rows.Count > 0) //{ // Utils.SqlBulkCopy(connString, dtSplitProfitRecord, "T_SplitProfitRecord"); // Utils.SqlBulkCopy(connString, dtAmountDetail, "VipAmountDetail"); //} } } } } }
protected override GetOrderDetailRD ProcessRequest(DTO.Base.APIRequest <GetOrderDetailRP> pRequest) { GetOrderDetailRD rd = new GetOrderDetailRD(); string orderId = pRequest.Parameters.OrderId; rd.OrderListInfo = new OrderListInfo(); #region 获取订单列表 T_InoutBLL orderBll = new T_InoutBLL(this.CurrentUserInfo); var orderList = orderBll.QueryByEntity(new T_InoutEntity() { order_id = orderId }, null); #endregion #region 获取会员信息 string vipNo = orderList[0].vip_no; VipBLL vipBll = new VipBLL(this.CurrentUserInfo); var vipList = vipBll.QueryByEntity(new VipEntity() { VIPID = vipNo }, null); #endregion #region 获取配方式 //Bear 20160928 注释 更具商品信息获取对应配送 string deliveryId = orderList[0].Field8; DeliveryBLL deliverBll = new DeliveryBLL(this.CurrentUserInfo); var deliverList = deliverBll.QueryByEntity(new DeliveryEntity() { DeliveryId = deliveryId }, null); #endregion #region 获取门店信息 string storeId = orderList[0].sales_unit_id; if (!string.IsNullOrEmpty(orderList[0].purchase_unit_id))//如果有发货门店,则显示发货门店信息 { storeId = orderList[0].purchase_unit_id; } TInoutBLL tInoutBll = new TInoutBLL(this.CurrentUserInfo); //string storeName = tInoutBll.GetStoreName(storeId); DataSet storeDs = tInoutBll.GetStoreInfo(storeId); rd.OrderListInfo.StoreID = storeId; #endregion //配送商 string carrierId = orderList[0].carrier_id; //DataSet carrierDs = tInoutBll.GetStoreInfo(carrierId); //if (carrierDs.Tables[0].Rows.Count > 0) //{ // rd.OrderListInfo.CarrierID = carrierId; // rd.OrderListInfo.CarrierName = carrierDs.Tables[0].Rows[0]["unit_name"].ToString(); //} if (!string.IsNullOrEmpty(carrierId)) { //配送方式 1.送货到家;2.到店提货 if (deliveryId == "1") { var logisticsCompanyBLL = new T_LogisticsCompanyBLL(this.CurrentUserInfo); Guid m_carrierId = Guid.Parse(carrierId); var logCompInfo = logisticsCompanyBLL.GetByID(m_carrierId); if (logCompInfo != null) { rd.OrderListInfo.CarrierID = carrierId; rd.OrderListInfo.CarrierName = logCompInfo.LogisticsName; } } else if (deliveryId == "2") { var unitBLL = new t_unitBLL(this.CurrentUserInfo); var unitInfo = unitBLL.GetByID(carrierId); if (unitInfo != null) { rd.OrderListInfo.CarrierID = carrierId; rd.OrderListInfo.CarrierName = unitInfo.unit_name; } } else if (deliveryId == "4") { var unitBLL = new t_unitBLL(this.CurrentUserInfo); var unitInfo = unitBLL.GetByID(carrierId); if (unitInfo != null) { rd.OrderListInfo.CarrierID = carrierId; rd.OrderListInfo.CarrierName = unitInfo.unit_name; } } } rd.OrderListInfo.CourierNumber = orderList[0].Field2; //配送单号 rd.OrderListInfo.Invoice = orderList[0].Field19 == null ? "" : orderList[0].Field19; //发票信息 if (vipList.Count() > 0) { rd.OrderListInfo.VipID = vipList[0].VIPID; rd.OrderListInfo.Phone = vipList[0].Phone; rd.OrderListInfo.UserName = vipList[0].VipName; rd.OrderListInfo.VipRealName = vipList[0].VipRealName; rd.OrderListInfo.VipLevelDesc = vipList[0].VipLevelDesc; rd.OrderListInfo.VipCode = vipList[0].VipCode; rd.OrderListInfo.Email = vipList[0].Email; rd.OrderListInfo.VipLevel = Convert.ToInt32(vipList[0].VipLevel); } if (storeDs.Tables[0].Rows.Count > 0) { rd.OrderListInfo.StoreName = storeDs.Tables[0].Rows[0]["unit_name"].ToString(); rd.OrderListInfo.StoreAddress = storeDs.Tables[0].Rows[0]["unit_address"].ToString(); rd.OrderListInfo.StoreTel = storeDs.Tables[0].Rows[0]["unit_tel"].ToString(); } if (orderList.Count() > 0) { rd.OrderListInfo.discount_rate = orderList[0].discount_rate ?? 100;//订单折扣 rd.OrderListInfo.OrderID = orderList[0].order_id; rd.OrderListInfo.OrderCode = orderList[0].order_no; rd.OrderListInfo.OrderDate = orderList[0].order_date; rd.OrderListInfo.ReceiverName = orderList[0].Field14; //收件人 rd.OrderListInfo.TotalQty = Convert.ToDecimal(orderList[0].total_qty); string TotalAmount = String.Format("{0:F}", orderList[0].total_amount ?? 0); rd.OrderListInfo.TotalAmount = TotalAmount; rd.OrderListInfo.Total_Retail = Convert.ToDecimal(orderList[0].total_retail); rd.OrderListInfo.Remark = orderList[0].remark; rd.OrderListInfo.Status = orderList[0].status; rd.OrderListInfo.OrderStatus = int.Parse(orderList[0].Field7); rd.OrderListInfo.StatusDesc = orderList[0].status_desc; rd.OrderListInfo.DeliveryAddress = orderList[0].Field4; rd.OrderListInfo.DeliveryTime = orderList[0].Field9; rd.OrderListInfo.ClinchTime = orderList[0].create_time; rd.OrderListInfo.ReceiptTime = orderList[0].accpect_time; rd.OrderListInfo.CouponsPrompt = orderList[0].Field16; rd.OrderListInfo.DeliveryID = orderList[0].Field8; rd.OrderListInfo.IsPayment = orderList[0].Field1; rd.OrderListInfo.ReceivePoints = orderList[0].receive_points; rd.OrderListInfo.PaymentTime = orderList[0].Field1 == "1" ? orderList[0].complete_date : null; rd.OrderListInfo.OrderReasonTypeId = orderList[0].order_reason_id; rd.OrderListInfo.ActualDecimal = orderList[0].actual_amount ?? 0; rd.OrderListInfo.PaymentTypeCode = orderList[0].Payment_Type_Code; rd.OrderListInfo.PaymentTypeName = orderList[0].Payment_Type_Name; rd.OrderListInfo.ReserveTime = orderList[0].reserveDay + " " + orderList[0].reserveQuantum; var deliveryBll = new TOrderCustomerDeliveryStrategyMappingBLL(this.CurrentUserInfo); rd.OrderListInfo.DeliveryAmount = deliveryBll.GetDeliverAmount(orderId); //配送费 add by henry*** if (!string.IsNullOrEmpty(orderList[0].Field15) && orderList[0].Field15 != "0") //是否是团购商品 add by Henry 2014-12-22 { rd.OrderListInfo.IsEvent = 1; //团购商品 } else { rd.OrderListInfo.IsEvent = 0; //普通商品 } #region update by changjian.tian rd.OrderListInfo.Mobile = orderList[0].Field6; //配送联系电话 rd.OrderListInfo.DeliveryRemark = orderList[0].remark; rd.OrderListInfo.IsEvaluation = orderList[0].IsEvaluation == null ? 0 : orderList[0].IsEvaluation.Value;//评论 #endregion } if (deliverList.Count() > 0) { rd.OrderListInfo.DeliveryName = deliverList[0].DeliveryName; } T_Inout_DetailBLL orderDetailBll = new T_Inout_DetailBLL(this.CurrentUserInfo); //退换货Bll实例化 T_SalesReturnBLL salesReturnBll = new T_SalesReturnBLL(this.CurrentUserInfo); var orderDetailList = orderDetailBll.QueryByEntity(new T_Inout_DetailEntity() { order_id = orderId }, null); var inoutService = new InoutService(this.CurrentUserInfo); #region 根据订单ID获取订单明细 var ds = inoutService.GetOrderDetailByOrderId(orderId); #endregion #region 获取订单详细列表中的商品规格 var ggDs = inoutService.GetInoutDetailGgByOrderId(orderId); #endregion if (ds.Tables[0].Rows.Count > 0) { string ItemIdList = ds.Tables[0].AsEnumerable().Aggregate("", (x, j) => { x += string.Format("'{0}',", j["item_id"].ToString()); return(x); }).Trim(','); TInoutDetailBLL tInoutDetailBll = new TInoutDetailBLL(this.CurrentUserInfo); //获取商品的图片 DataSet imageDs = tInoutDetailBll.GetOrderDetailImageList(ItemIdList); var tmp = ds.Tables[0].AsEnumerable().Select(t => new OrderDetailEntity() { ItemID = t["item_id"].ToString(), ItemName = t["item_name"].ToString(), SkuID = t["sku_id"].ToString(), SalesReturnFlag = salesReturnBll.CheckSalesReturn(orderId, t["sku_id"].ToString()),//是否可申请退换货 //GG = t["prop_1_detail_name"].ToString()+t["prop_2_detail_name"].ToString()+t["prop_3_detail_name"].ToString() //+t["prop_4_detail_name"].ToString()+t["prop_5_detail_name"].ToString(), Field9 = t["Field9"].ToString(), isGB = Convert.ToInt32(t["isGB"]), GG = ggDs.Tables[0].AsEnumerable() .Where(tt => tt["sku_id"].ToString() == t["sku_id"].ToString()) .Select(tt => new GuiGeInfo { PropName1 = tt["prop_1_name"].ToString(), PropDetailName1 = tt["prop_1_detail_name"].ToString(), PropName2 = tt["prop_2_name"].ToString(), PropDetailName2 = tt["prop_2_detail_name"].ToString(), PropName3 = tt["prop_3_name"].ToString(), PropDetailName3 = tt["prop_3_detail_name"].ToString(), PropName4 = tt["prop_4_name"].ToString(), PropDetailName4 = tt["prop_4_detail_name"].ToString(), PropName5 = tt["prop_5_name"].ToString(), PropDetailName5 = tt["prop_5_detail_name"].ToString() }).FirstOrDefault(), SalesPrice = Convert.ToDecimal(t["enter_price"]), //DiscountRate = Convert.ToDecimal(t["discount_rate"]), DiscountRate = Convert.ToDecimal(t["order_discount_rate"]), ItemCategoryName = t["itemCategoryName"].ToString(), BeginDate = t["Field1"].ToString(), EndDate = t["Field2"].ToString(), DayCount = Convert.ToInt32(t["DayCount"]), Qty = Convert.ToDecimal(t["enter_qty"]), ImageInfo = imageDs.Tables[0].AsEnumerable() .Where(c => c["ObjectId"].ToString() == t["item_id"].ToString()) .OrderBy(c => c["displayIndex"]) .Select(c => new OrderDetailImage { ImageID = c["imageId"].ToString(), ImageUrl = ImagePathUtil.GetImagePathStr(c["imageUrl"].ToString(), "240") }).ToArray(), IfService = Convert.ToInt32(t["IfService"]) }); int tempCount = 0; foreach (var i in tmp) { if (i.IfService == 0) { tempCount++; } } if (tempCount == 0) { rd.OrderListInfo.IsAllService = 3; // 3-全部为虚拟商品 } else if (tempCount == tmp.Count()) { rd.OrderListInfo.IsAllService = 1; // 1-全部为实物商品 } else { rd.OrderListInfo.IsAllService = 2; // 2-包含实物商品和虚拟商品 } #region 根据商品获取配送方式 var deliveryIds = new List <int?>(); if (rd.OrderListInfo.IsAllService == 3) { deliveryIds.Add(1); deliveryIds.Add(2); deliveryIds.Add(4); rd.OrderListInfo.CanUseDeliveryIDs = deliveryIds; } else { T_Item_Delivery_MappingBLL mappingBll = new T_Item_Delivery_MappingBLL(this.CurrentUserInfo); var complexCondition = new List <IWhereCondition> { }; var itemIdArray = ItemIdList.Replace("'", "").Split(','); complexCondition.Add(new InCondition <string>() { FieldName = "Item_Id", Values = itemIdArray }); var itemDeliveryList = mappingBll.Query(complexCondition.ToArray(), null); bool needAddDelivery4 = false; bool needAddDelivery2 = false; if (itemDeliveryList.ToList().Find(d => d.DeliveryId == 4) != null) { needAddDelivery4 = true; } else { if (itemDeliveryList.ToList().Find(d => d.DeliveryId == 2) != null) { needAddDelivery2 = true; } } var itemDeliveryGroupList = itemDeliveryList.GroupBy(d => d.Item_Id); var index = 0; foreach (var info in itemDeliveryGroupList) { var tmpList = info.ToList <T_Item_Delivery_MappingEntity>(); //分组后的集合 if (index == 0) { deliveryIds.AddRange(tmpList.Select(d => d.DeliveryId)); index++; continue; } deliveryIds = deliveryIds.Intersect(tmpList.Select(d => d.DeliveryId)).ToList(); if (deliveryIds.Count <= 0) { break; // 后面的不用求了 } index++; } if (!deliveryIds.Contains(4) && needAddDelivery4) { deliveryIds.Add(4); } if (!deliveryIds.Contains(2) && needAddDelivery2) { deliveryIds.Add(2); } rd.OrderListInfo.CanUseDeliveryIDs = deliveryIds.OrderBy(t => t.Value).ToList(); } #endregion rd.OrderListInfo.OrderDetailInfo = tmp.ToArray(); } var vipIntegralDetailBll = new VipIntegralDetailBLL(this.CurrentUserInfo); // var integral = vipIntegralDetailBll.GetVipIntegralByOrder(orderId, pRequest.UserID); //使用积分 rd.OrderListInfo.OrderIntegral = Math.Abs(vipIntegralDetailBll.GetVipIntegralByOrder(orderId, vipNo)); //积分抵扣金额 add by Henry 2014-10-8 //decimal integralAmountPre = vipBll.GetIntegralAmountPre(this.CurrentUserInfo.ClientID);//获取积分金额比例 //rd.OrderListInfo.UseIntegralToAmount =rd.OrderListInfo.OrderIntegral*(integralAmountPre>0?integralAmountPre:0.01M); rd.OrderListInfo.UseIntegralToAmount = vipBll.GetAmountByIntegralPer(CurrentUserInfo.ClientID, rd.OrderListInfo.OrderIntegral); var couponUseBll = new CouponUseBLL(this.CurrentUserInfo); var couponParValue = couponUseBll.GetCouponParValue(orderId); rd.OrderListInfo.CouponAmount = couponParValue; var vipAmountDetailBll = new VipAmountDetailBLL(this.CurrentUserInfo); //使用的账户余额 rd.OrderListInfo.VipEndAmount = Math.Abs(vipAmountDetailBll.GetVipAmountByOrderId(orderId, vipNo, 1)); //使用余额,将余额从实付款中分开 if (rd.OrderListInfo.VipEndAmount != 0) { rd.OrderListInfo.ActualDecimal = rd.OrderListInfo.ActualDecimal - rd.OrderListInfo.VipEndAmount; } //使用的返现金额 rd.OrderListInfo.ReturnAmount = Math.Abs(vipAmountDetailBll.GetVipAmountByOrderId(orderId, vipNo, 13)); //使用阿拉币和阿拉币抵扣 add by Henry 2014-10-13 if (pRequest.ChannelId == "4")//阿拉丁APP调用 { decimal aldAmount = Math.Abs(vipAmountDetailBll.GetVipAmountByOrderId(orderId, vipNo, 11)); rd.OrderListInfo.ALDAmount = aldAmount; rd.OrderListInfo.ALDAmountMoney = aldAmount * 0.01M; } #region 获取订单积分,优惠券金额,使用余额 //var vipIntegralDetailBll = new VipIntegralDetailBLL(this.CurrentUserInfo); //var vipIntegralList = vipIntegralDetailBll.QueryByEntity(new VipIntegralDetailEntity() //{ // VIPID = pRequest.UserID, // ObjectId = orderId //}, null); //if (vipIntegralList != null && vipIntegralList.Length > 0) //{ // rd.OrderListInfo.OrderIntegral = Math.Abs(vipIntegralList[0].Integral??0); //} //var tOrderCouponMappingBll = new TOrderCouponMappingBLL(this.CurrentUserInfo); //var tOrderCouponMappingList = tOrderCouponMappingBll.QueryByEntity(new TOrderCouponMappingEntity() //{ // OrderId = orderId //}, null); //if (tOrderCouponMappingList != null && tOrderCouponMappingList.Length > 0) //{ // var couponId = tOrderCouponMappingList[0].CouponId; // var couponBll = new CouponBLL(this.CurrentUserInfo); // var couponEntity = couponBll.GetByID(couponId); // if (couponEntity != null) // { // var couponTypeId = couponEntity.CouponTypeID; // var couponTypeBll = new CouponTypeBLL(this.CurrentUserInfo); // var couponTypeEntity = couponTypeBll.GetByID(couponTypeId); // if (couponTypeEntity != null) // { // rd.OrderListInfo.CouponAmount = couponTypeEntity.ParValue ?? 0; // } // } //} //var vipAmountDetailBll = new VipAmountDetailBLL(this.CurrentUserInfo); //var vipAmountDetailList = vipAmountDetailBll.QueryByEntity(new VipAmountDetailEntity() //{ // VipId = pRequest.UserID, // ObjectId = orderId //}, null); //if (vipAmountDetailList != null && vipAmountDetailList.Length > 0) //{ // rd.OrderListInfo.VipEndAmount = Math.Abs(vipAmountDetailList[0].Amount ?? 0); //} #endregion return(rd); }