protected override SetRechargeOrderRD ProcessRequest(APIRequest <SetRechargeOrderRP> pRequest) { SetRechargeOrderRP rp = pRequest.Parameters; SetRechargeOrderRD rd = new SetRechargeOrderRD(); var rechargeOrderBll = new RechargeOrderBLL(CurrentUserInfo); TUnitExpandBLL serviceUnitExpandBll = new TUnitExpandBLL(CurrentUserInfo); var vipBll = new VipBLL(CurrentUserInfo); var vipCardVipMappingBll = new VipCardVipMappingBLL(CurrentUserInfo); var vipCardBll = new VipCardBLL(CurrentUserInfo); var sysVipCardTypeBll = new SysVipCardTypeBLL(CurrentUserInfo); var vipCardUpgradeRuleBll = new VipCardUpgradeRuleBLL(CurrentUserInfo); //获取会员信息 VipEntity vipInfo; string userId = ""; //微信 if (pRequest.ChannelId == "2") { vipInfo = vipBll.GetByID(pRequest.UserID); UnitService unitServer = new UnitService(CurrentUserInfo); rp.UnitId = unitServer.GetUnitByUnitTypeForWX("OnlineShopping", null).Id; //获取在线商城的门店标识 } //掌柜App else { vipInfo = vipBll.GetByID(rp.VipId); userId = pRequest.UserID; } string OrderDesc = "ReRecharge"; //"升级","充值" int? VipCardTypeId = null; //会员卡类型 decimal returnAmount = 0; //赠送金额 //会员卡类型条件 List <IWhereCondition> complexConditionOne = new List <IWhereCondition> { }; //获取会员与会员卡关系表 var vipCardVipMappingEntity = vipCardVipMappingBll.QueryByEntity(new VipCardVipMappingEntity() { CustomerID = CurrentUserInfo.ClientID, VIPID = vipInfo.VIPID }, null).FirstOrDefault(); //该会员有会员卡 if (vipCardVipMappingEntity != null) { //获取该会员会员卡信息 var vipCardEntity = vipCardBll.QueryByEntity(new VipCardEntity() { CustomerID = CurrentUserInfo.ClientID, VipCardID = vipCardVipMappingEntity.VipCardID }, null).FirstOrDefault(); //获取该会员卡类型 var sysVipCardTypeEntity = sysVipCardTypeBll.GetByID(vipCardEntity.VipCardTypeID); VipCardTypeId = vipCardEntity.VipCardTypeID; //获取会员卡的会员活动 var rechargeStrategyBLL = new RechargeStrategyBLL(CurrentUserInfo); var RechargeActivityDS = rechargeStrategyBLL.GetRechargeActivityList(CurrentUserInfo.ClientID, VipCardTypeId.ToString(), 3); var RechargeStrategy = new RechargeStrategyInfo(); if (RechargeActivityDS != null && RechargeActivityDS.Tables[0].Rows.Count > 0) { var RechargeStrategyList = DataTableToObject.ConvertToList <RechargeStrategyInfo>(RechargeActivityDS.Tables[0]); //获取与充值金额最接近的活动 RechargeStrategy = RechargeStrategyList.Where(n => n.RechargeAmount <= rp.ActuallyPaid).OrderByDescending(n => n.RechargeAmount).FirstOrDefault(); if (RechargeStrategy != null) { //梯度 if (RechargeStrategy.RuleType == "Step") { //赠送金额 = 会员活动梯度设置赠送金额 returnAmount = RechargeStrategy.GiftAmount; } //叠加 if (RechargeStrategy.RuleType == "Superposition") { //赠送金额与满赠条件金额比例 decimal discount = RechargeStrategy.GiftAmount / RechargeStrategy.RechargeAmount; //赠送金额 = 充值金额 * (设置赠送金额 / 设置满赠条件金额) returnAmount = rp.ActuallyPaid * RechargeStrategy.GiftAmount / RechargeStrategy.RechargeAmount; } } } //获取等级高的会员卡类型条件 complexConditionOne.Add(new MoreThanCondition() { FieldName = "VipCardLevel", Value = sysVipCardTypeEntity.VipCardLevel, IncludeEquals = false }); complexConditionOne.Add(new EqualsCondition() { FieldName = "CustomerID", Value = CurrentUserInfo.ClientID }); } //该会员没有会员卡 else { //获取所有的会员卡类型条件 complexConditionOne.Add(new EqualsCondition() { FieldName = "CustomerID", Value = CurrentUserInfo.ClientID }); } var sysVipCardTypeList = sysVipCardTypeBll.Query(complexConditionOne.ToArray(), null).ToList(); if (sysVipCardTypeList == null) { throw new APIException("没有建立会员体系") { ErrorCode = 200 }; } //获取会员卡类型升级规则 List <IWhereCondition> complexConditionTwo = new List <IWhereCondition> { }; complexConditionTwo.Add(new EqualsCondition() { FieldName = "CustomerID", Value = CurrentUserInfo.ClientID }); complexConditionTwo.Add(new EqualsCondition() { FieldName = "IsRecharge", Value = 1 }); var vipCardUpgradeRuleList = vipCardUpgradeRuleBll.Query(complexConditionTwo.ToArray(), null); //将升级卡规则和可升级的会员卡匹配 var vipCardTypeDetailList = vipCardUpgradeRuleList.Join(sysVipCardTypeList, n => n.VipCardTypeID, m => m.VipCardTypeID, (n, m) => new { n, m }).OrderByDescending(t => t.m.VipCardLevel).ToList(); //判断是否满充值条件 bool isUpgrade = false; for (int i = 0; i < vipCardTypeDetailList.Count; i++) { //实付金额 >= 可升级金额 if (vipCardTypeDetailList[i].n.OnceRechargeAmount <= rp.ActuallyPaid) { isUpgrade = true; VipCardTypeId = vipCardTypeDetailList[i].n.VipCardTypeID ?? 0; break; } } if (isUpgrade) { OrderDesc = "Upgrade"; //升级 } //充值订单 var rechargeOrderEntity = new RechargeOrderEntity() { OrderID = Guid.NewGuid(), OrderNo = serviceUnitExpandBll.GetUnitOrderNo(), OrderDesc = OrderDesc, VipID = vipInfo.VIPID, VipCardNo = vipInfo.VipCode, UnitId = rp.UnitId, UserId = userId, TotalAmount = rp.ActuallyPaid, ActuallyPaid = rp.ActuallyPaid, PosSourceName = rp.PosSourceName, ReturnAmount = returnAmount, PayerID = vipInfo.VIPID, Status = 0, CustomerID = CurrentUserInfo.ClientID, VipCardTypeId = VipCardTypeId }; rechargeOrderBll.Create(rechargeOrderEntity); rd.orderId = rechargeOrderEntity.OrderID.ToString(); //支付完成 if (rp.PayStatus == 1) { //获取门店信息 t_unitBLL unitBLL = new t_unitBLL(CurrentUserInfo); t_unitEntity unitInfo = null; if (!string.IsNullOrEmpty(rechargeOrderEntity.UnitId)) { unitInfo = unitBLL.GetByID(rechargeOrderEntity.UnitId); } //充值 rechargeOrderBll.Recharge(rechargeOrderEntity, vipInfo, unitInfo, ""); } return(rd); }
protected override EmptyResponseData ProcessRequest(DTO.Base.APIRequest <GetActivityDeatilRP> pRequest) { var rd = new EmptyResponseData(); var para = pRequest.Parameters; var loggingSessionInfo = new SessionManager().CurrentUserLoginInfo; var ActivityBLL = new C_ActivityBLL(loggingSessionInfo); var ActivityMessageBLL = new C_ActivityMessageBLL(loggingSessionInfo); var ActivityTargetGroupBLL = new C_TargetGroupBLL(loggingSessionInfo); var ActivityPrizesBLL = new C_PrizesBLL(loggingSessionInfo); var ActivityPrizesDetailBLL = new C_PrizesDetailBLL(loggingSessionInfo); var ActivityRechargeStrategyBLL = new RechargeStrategyBLL(loggingSessionInfo); var pTran = ActivityBLL.GetTran(); using (pTran.Connection) { try { //删除 C_ActivityEntity DelData = ActivityBLL.GetByID(para.ActivityID); if (DelData == null) { throw new APIException("会员活动对象为NULL!") { ErrorCode = ERROR_CODES.INVALID_BUSINESS }; } //执行 List <IWhereCondition> complexCondition = new List <IWhereCondition> { }; complexCondition.Add(new EqualsCondition() { FieldName = "ActivityID", Value = para.ActivityID }); ActivityMessageBLL.Delete(ActivityMessageBLL.Query(complexCondition.ToArray(), null), pTran); ActivityTargetGroupBLL.Delete(ActivityTargetGroupBLL.Query(complexCondition.ToArray(), null), pTran); ActivityRechargeStrategyBLL.Delete(ActivityRechargeStrategyBLL.Query(complexCondition.ToArray(), null), pTran); var prize = ActivityPrizesBLL.Query(complexCondition.ToArray(), null).FirstOrDefault(); if (prize != null) { if (!string.IsNullOrWhiteSpace(prize.PrizesID.ToString())) { List <IWhereCondition> cCondition = new List <IWhereCondition> { }; cCondition.Add(new EqualsCondition() { FieldName = "PrizesID", Value = prize.PrizesID }); ActivityPrizesDetailBLL.Delete(ActivityPrizesDetailBLL.Query(cCondition.ToArray(), null), pTran); } ActivityPrizesBLL.Delete(ActivityPrizesBLL.Query(complexCondition.ToArray(), null), pTran); } ActivityBLL.Delete(DelData, pTran); pTran.Commit(); } catch (APIException apiEx) { pTran.Rollback(); throw new APIException(apiEx.ErrorCode, apiEx.Message); } } return(rd); }
protected override EmptyResponseData ProcessRequest(DTO.Base.APIRequest <SetRechargeStrategyRP> pRequest) { var rd = new EmptyResponseData(); var para = pRequest.Parameters; var loggingSessionInfo = new SessionManager().CurrentUserLoginInfo; var rechargeStrategyBll = new RechargeStrategyBLL(loggingSessionInfo); //事物 var pTran = rechargeStrategyBll.GetTran(); using (pTran.Connection) { try { //新增充值策略集合 var AddDataList = new List <RechargeStrategyEntity>(); //编辑充值策略集合 var UpdateDataList = new List <RechargeStrategyEntity>(); //删除充值策略集合 var DelList = new List <Guid>(); #region 数据处理 foreach (var item in para.RechargeStrategyInfoList) { if (string.IsNullOrWhiteSpace(item.RechargeStrategyId)) { #region 新增 RechargeStrategyEntity AddData = new RechargeStrategyEntity(); AddData.ActivityID = new Guid(para.ActivityID); AddData.RuleType = item.RuleType; AddData.RechargeAmount = item.RechargeAmount; AddData.GiftAmount = item.GiftAmount; AddData.CustomerId = loggingSessionInfo.ClientID; AddDataList.Add(AddData); #endregion } else { RechargeStrategyEntity Data = rechargeStrategyBll.GetByID(item.RechargeStrategyId); if (Data == null) { throw new APIException("充值策略对象为NULL!") { ErrorCode = ERROR_CODES.INVALID_BUSINESS } } ; if (item.IsEnable == 1) { //更新 Data.RechargeAmount = item.RechargeAmount; Data.GiftAmount = item.GiftAmount; Data.RuleType = item.RuleType; UpdateDataList.Add(Data); } else { //删除 DelList.Add(Data.RechargeStrategyId.Value); } } } #endregion #region 执行 if (AddDataList.Count > 0) { //新增 foreach (var item in AddDataList) { rechargeStrategyBll.Create(item, pTran); } } if (UpdateDataList.Count > 0) { //编辑 foreach (var item in UpdateDataList) { rechargeStrategyBll.Update(item, pTran); } } if (DelList.Count > 0) { //删除 foreach (var item in DelList) { rechargeStrategyBll.Delete(item, pTran); } } pTran.Commit(); #endregion } catch (APIException apiEx) { pTran.Rollback();//回滚事物 throw new APIException(apiEx.ErrorCode, apiEx.Message); } catch (Exception ex) { pTran.Rollback();//回滚事务 throw new APIException(ex.Message); } } return(rd); }
protected override GetRechargeActivityListRD ProcessRequest(DTO.Base.APIRequest <GetRechargeActivityListRP> pRequest) { var rd = new GetRechargeActivityListRD(); var para = pRequest.Parameters; LoggingSessionInfo loggingSessionInfo = Default.GetBSLoggingSession(pRequest.CustomerID, pRequest.UserID); var vipBLL = new VipBLL(loggingSessionInfo); var vipIntegralBLL = new VipIntegralBLL(loggingSessionInfo); var sysVipCardTypeBLL = new SysVipCardTypeBLL(loggingSessionInfo); var vipCardVipMappingBLL = new VipCardVipMappingBLL(loggingSessionInfo); var vipCardBLL = new VipCardBLL(loggingSessionInfo); var vipCardRuleBLL = new VipCardRuleBLL(loggingSessionInfo); var vipAmountBLL = new VipAmountBLL(loggingSessionInfo); //获取当前会员卡等级 VipEntity VipInfo = null; int? CurVipCardLevel = 0; VipInfo = vipBLL.GetByID(para.VipID); if (VipInfo != null) { rd.HeadImgUrl = VipInfo.HeadImgUrl == null ? "" : VipInfo.HeadImgUrl; rd.VipName = VipInfo.VipName != null ? VipInfo.VipName : VipInfo.VipRealName != null ? VipInfo.VipRealName : ""; //获取当前会员积分信息 //var vipIntegralInfo = vipIntegralBLL.QueryByEntity(new VipIntegralEntity() { VipID = para.VipID, VipCardCode = VipInfo.VipCode }, null).FirstOrDefault(); //if (vipIntegralInfo != null) //{ // rd.Integration = vipIntegralInfo.ValidIntegral != null ? vipIntegralInfo.ValidIntegral.Value : 0; //} //获取当前会员余额信息 var vipAmountInfo = vipAmountBLL.QueryByEntity(new VipAmountEntity() { VipId = para.VipID, VipCardCode = VipInfo.VipCode }, null).FirstOrDefault(); if (vipAmountInfo != null) { rd.VipAmount = vipAmountInfo.EndAmount != null ? vipAmountInfo.EndAmount : 0; } else { rd.VipAmount = 0; } //获取当前关联信息 var vipCardMappingInfo = vipCardVipMappingBLL.QueryByEntity(new VipCardVipMappingEntity() { VIPID = para.VipID, CustomerID = loggingSessionInfo.ClientID }, new OrderBy[] { new OrderBy() { FieldName = "CreateTime", Direction = OrderByDirections.Desc } }).FirstOrDefault(); if (vipCardMappingInfo != null) { //获取卡等级主标识信息 var vipCardInfo = vipCardBLL.QueryByEntity(new VipCardEntity() { VipCardID = vipCardMappingInfo.VipCardID, VipCardStatusId = 1 }, null).FirstOrDefault(); if (vipCardInfo != null) { //获取卡等级信息 var vipCardTypeInfo = sysVipCardTypeBLL.QueryByEntity(new SysVipCardTypeEntity() { VipCardTypeID = vipCardInfo.VipCardTypeID }, null).FirstOrDefault(); if (vipCardTypeInfo != null) { rd.VipCardTypeName = vipCardTypeInfo.VipCardTypeName != null ? vipCardTypeInfo.VipCardTypeName : ""; CurVipCardLevel = vipCardTypeInfo.VipCardLevel; } //获取充值活动列表 var rechargeStrategyBLL = new RechargeStrategyBLL(loggingSessionInfo); var RechargeActivityInfo = rechargeStrategyBLL.GetRechargeActivityList(loggingSessionInfo.ClientID, vipCardInfo.VipCardTypeID.ToString(), 3); if (RechargeActivityInfo != null && RechargeActivityInfo.Tables[0].Rows.Count > 0) { rd.RechargeStrategyList = DataTableToObject.ConvertToList <RechargeStrategyInfo>(RechargeActivityInfo.Tables[0]); } } } } return(rd); }
protected override GetActivityDeatilRD ProcessRequest(DTO.Base.APIRequest <GetActivityDeatilRP> pRequest) { var rd = new GetActivityDeatilRD(); var para = pRequest.Parameters; var loggingSessionInfo = new SessionManager().CurrentUserLoginInfo; var activityBll = new C_ActivityBLL(loggingSessionInfo); var prizesBll = new C_PrizesBLL(loggingSessionInfo); var prizesDetailBll = new C_PrizesDetailBLL(loggingSessionInfo); var activityMessageBll = new C_ActivityMessageBLL(loggingSessionInfo); var targetGroupBll = new C_TargetGroupBLL(loggingSessionInfo); var rechargeStrategyBll = new RechargeStrategyBLL(loggingSessionInfo); if (!string.IsNullOrWhiteSpace(para.ActivityID)) { #region 基础信息 C_ActivityEntity activityData = activityBll.GetByID(para.ActivityID); if (activityData != null) { rd.ActivityID = activityData.ActivityID.ToString(); rd.ActivityType = activityData.ActivityType ?? 2; rd.ActivityName = activityData.ActivityName; rd.StartTime = activityData.StartTime == null ? "" : activityData.StartTime.Value.ToString("yyyy-MM-dd"); rd.EndTime = activityData.EndTime == null ? "" : activityData.EndTime.Value.ToString("yyyy-MM-dd"); rd.IsLongTime = activityData.IsLongTime == null ? "0" : activityData.IsLongTime.Value.ToString(); rd.IsAllCardType = activityData.IsAllVipCardType ?? 0; rd.VipCardTypeID = activityBll.GetTargetGroupId(rd.IsAllCardType, rd.ActivityID); rd.HolderCardCount = activityBll.GetTargetCount(rd.VipCardTypeID, rd.ActivityType, rd.StartTime, rd.EndTime, activityData.IsLongTime.Value); rd.Status = activityData.Status.Value; } #endregion #region 奖品 var PrizesList = prizesBll.Query(new IWhereCondition[] { new EqualsCondition() { FieldName = "ActivityID", Value = para.ActivityID }, new EqualsCondition() { FieldName = "CustomerID", Value = loggingSessionInfo.ClientID } }, null).ToList(); if (PrizesList.Count > 0) { //奖品集合赋值 rd.PrizesInfoList = (from u in PrizesList select new PrizesInfo() { PrizesID = Convert.ToString(u.PrizesID), PrizesType = u.PrizesType.Value }).ToList(); foreach (var item in rd.PrizesInfoList) { item.PrizesDetailList = new List <PrizesDetailInfo>(); //奖品明细 var PrizesDetailList = prizesDetailBll.GetPrizesDetailList(item.PrizesID); if (PrizesDetailList.Count > 0) { CouponTypeBLL ctbll = new CouponTypeBLL(CurrentUserInfo); foreach (var itemes in PrizesDetailList) { PrizesDetailInfo m = new PrizesDetailInfo(); m.PrizesDetailID = Convert.ToString(itemes.PrizesDetailID); m.CouponTypeID = Convert.ToString(itemes.CouponTypeID); m.CouponTypeName = itemes.CouponTypeName; m.NumLimit = itemes.NumLimit.Value; m.CouponTypeDesc = itemes.CouponTypeDesc; //ValidityPeriod = t.BeginTime == null ? ("领取后" + (t.ServiceLife == 0 ? "1天内有效" : t.ServiceLife.ToString() + "天内有效")) : (t.BeginTime.Value.ToString("yyyy-MM-dd") + "至" + t.EndTime.Value.ToString("yyyy-MM-dd")), var t = ctbll.GetByID(m.CouponTypeID); m.ValidityPeriod = t.BeginTime == null ? ("领取后" + (t.ServiceLife == 0 ? "1天内有效" : t.ServiceLife.ToString() + "天内有效")) : (t.BeginTime.Value.ToString("yyyy-MM-dd") + "至" + t.EndTime.Value.ToString("yyyy-MM-dd")); //奖品明细集合额赋值 item.PrizesDetailList.Add(m); } } } } #endregion #region 消息 var ActivityMessageList = activityMessageBll.Query(new IWhereCondition[] { new EqualsCondition() { FieldName = "ActivityID", Value = para.ActivityID }, new EqualsCondition() { FieldName = "CustomerID", Value = loggingSessionInfo.ClientID } }, null).ToList(); if (ActivityMessageList.Count > 0) { //消息赋值 rd.ActivityMessageInfoList = (from u in ActivityMessageList select new ActivityMessageInfo() { MessageID = u.MessageID.Value.ToString(), MessageType = u.MessageType.Trim(), Content = u.Content, SendTime = u.SendTime == null ? "" : u.SendTime.Value.ToString(), AdvanceDays = u.AdvanceDays, SendAtHour = u.SendAtHour }).ToList(); } #endregion #region 充值策略 var rechargeStrategyInfoList = rechargeStrategyBll.Query(new IWhereCondition[] { new EqualsCondition() { FieldName = "ActivityID", Value = para.ActivityID }, new EqualsCondition() { FieldName = "CustomerId", Value = loggingSessionInfo.ClientID } }, new[] { new OrderBy() { FieldName = "RechargeAmount", Direction = OrderByDirections.Asc } }).ToList(); if (rechargeStrategyInfoList.Count > 0) { //消息赋值 rd.RechargeStrategyInfoList = (from u in rechargeStrategyInfoList select new RechargeStrategyInfo() { RechargeStrategyId = u.RechargeStrategyId.ToString(), RuleType = u.RuleType, RechargeAmount = u.RechargeAmount, GiftAmount = u.GiftAmount.Value }).ToList(); } #endregion } return(rd); }