Beispiel #1
0
        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 <SetActivityMessageRP> pRequest)
        {
            var rd   = new EmptyResponseData();
            var para = pRequest.Parameters;
            var loggingSessionInfo = new SessionManager().CurrentUserLoginInfo;
            var ActivityMessageBLL = new C_ActivityMessageBLL(loggingSessionInfo);
            var ActivityBLL        = new C_ActivityBLL(loggingSessionInfo);
            //事物
            var pTran = ActivityMessageBLL.GetTran();

            using (pTran.Connection)
            {
                try
                {
                    //新增消息集合
                    var AddDataList = new List <C_ActivityMessageEntity>();
                    //编辑消息集合
                    var UpdateDataList = new List <C_ActivityMessageEntity>();
                    //删除消息集合
                    var DelList = new List <Guid>();
                    #region 数据处理
                    foreach (var item in para.ActivityMessageList)
                    {
                        //模板
                        //C_MessageTemplateEntity TemplateData = C_MessageTemplateBLL.GetByID(new Guid(item.TemplateID));

                        if (string.IsNullOrWhiteSpace(item.MessageID))
                        {
                            #region 新增
                            C_ActivityMessageEntity AddData = new C_ActivityMessageEntity();
                            //AddData.MessageID = System.Guid.NewGuid();
                            AddData.ActivityID  = new Guid(para.ActivityID);
                            AddData.TemplateID  = new Guid();
                            AddData.MessageType = item.MessageType.Trim();
                            AddData.Content     = item.Content == null ? "" : item.Content;
                            AddData.SendTime    = Convert.ToDateTime(item.SendTime);
                            AddData.CustomerID  = loggingSessionInfo.ClientID;
                            AddData.AdvanceDays = item.AdvanceDays;
                            AddData.SendAtHour  = item.SendAtHour;
                            AddDataList.Add(AddData);
                            #endregion
                        }
                        else
                        {
                            C_ActivityMessageEntity Data = ActivityMessageBLL.GetByID(item.MessageID);
                            if (Data == null)
                            {
                                throw new APIException("消息对象为NULL!")
                                      {
                                          ErrorCode = ERROR_CODES.INVALID_BUSINESS
                                      }
                            }
                            ;

                            if (item.IsEnable == 1)
                            {
                                //更新
                                Data.SendTime    = Convert.ToDateTime(item.SendTime);
                                Data.Content     = item.Content;
                                Data.TemplateID  = new Guid();
                                Data.AdvanceDays = item.AdvanceDays;
                                Data.SendAtHour  = item.SendAtHour;
                                UpdateDataList.Add(Data);
                            }
                            else
                            {
                                //删除
                                DelList.Add(Data.MessageID.Value);
                            }
                        }
                    }
                    #endregion

                    #region 执行
                    if (AddDataList.Count > 0)
                    {
                        //新增消息
                        foreach (var item in AddDataList)
                        {
                            ActivityMessageBLL.Create(item, pTran);
                        }
                    }

                    if (UpdateDataList.Count > 0)
                    {
                        //编辑消息
                        foreach (var item in UpdateDataList)
                        {
                            ActivityMessageBLL.Update(item, pTran);
                        }
                    }
                    if (DelList.Count > 0)
                    {
                        //删除消息
                        foreach (var item in DelList)
                        {
                            ActivityMessageBLL.Delete(item, pTran);
                        }
                    }

                    pTran.Commit();
                    #endregion

                    if (ActivityBLL.IsActivityValid(para.ActivityID))
                    {
                        var activity = ActivityBLL.GetByID(para.ActivityID);
                        if (activity != null)
                        {
                            activity.Status = 0;
                        }
                        ActivityBLL.Update(activity);
                    }
                }
                catch (APIException apiEx)
                {
                    pTran.Rollback();//回滚事物
                    throw new APIException(apiEx.ErrorCode, apiEx.Message);
                }
                catch (Exception ex)
                {
                    pTran.Rollback();//回滚事务
                    throw new APIException(ex.Message);
                }
            }
            return(rd);
        }
Beispiel #3
0
        protected override SetActivityRD ProcessRequest(DTO.Base.APIRequest <SetActivityRP> pRequest)
        {
            var rd   = new SetActivityRD();
            var para = pRequest.Parameters;
            var loggingSessionInfo = new SessionManager().CurrentUserLoginInfo;

            var ActivityBLL          = new C_ActivityBLL(loggingSessionInfo);
            var C_TargetGroupBLL     = new C_TargetGroupBLL(loggingSessionInfo);
            var C_ActivityMessageBLL = new C_ActivityMessageBLL(loggingSessionInfo);

            if (string.IsNullOrWhiteSpace(para.StartTime))
            {
                throw new APIException("请输入活动开始日期!")
                      {
                          ErrorCode = ERROR_CODES.INVALID_BUSINESS
                      }
            }
            ;
            //卡
            if (para.VipCardTypeIDList == null || para.VipCardTypeIDList.Count == 0)
            {
                //throw new APIException("请选择目标人群!") { ErrorCode = ERROR_CODES.INVALID_BUSINESS };
            }
            //对充值活动,不允许时间重叠
            if (ActivityBLL.IsActivityOverlap(loggingSessionInfo.ClientID, para.ActivityID, para.ActivityType, para.StartTime, para.EndTime, para.VipCardTypeIDList))
            {
                throw new APIException("与已有活动时间重叠!")
                      {
                          ErrorCode = ERROR_CODES.INVALID_BUSINESS
                      }
            }
            ;

            //事务
            var pTran = ActivityBLL.GetTran();

            using (pTran.Connection)
            {
                try
                {
                    if (!string.IsNullOrWhiteSpace(para.ActivityID))
                    {
                        //编辑
                        C_ActivityEntity ChangeData = ActivityBLL.GetByID(para.ActivityID);
                        if (ChangeData == null)
                        {
                            throw new APIException("活动对象为NULL!")
                                  {
                                      ErrorCode = ERROR_CODES.INVALID_BUSINESS
                                  };
                        }

                        string m_OldStarTime = ChangeData.StartTime.Value.ToString("yyyy-MM-dd");

                        ChangeData.ActivityName = para.ActivityName;
                        if (para.IsAllCardType != null)
                        {
                            ChangeData.IsAllVipCardType = int.Parse(para.IsAllCardType);
                        }
                        ChangeData.ActivityType = para.ActivityType;
                        ChangeData.StartTime    = Convert.ToDateTime(para.StartTime);
                        if (!string.IsNullOrWhiteSpace(para.EndTime))
                        {
                            ChangeData.EndTime = Convert.ToDateTime(para.EndTime + " 23:59:59");
                        }
                        else
                        {
                            ChangeData.EndTime = DateTime.Parse("2099-01-01 23:59:59");
                        }
                        ChangeData.IsLongTime  = para.IsLongTime;
                        ChangeData.CustomerID  = loggingSessionInfo.ClientID;
                        ChangeData.TargetCount = 0;
                        //执行
                        ActivityBLL.Update(ChangeData, pTran);

                        #region 更新活动消息发送时间
                        List <C_ActivityMessageEntity> m_MessageList = C_ActivityMessageBLL.QueryByEntity(new C_ActivityMessageEntity()
                        {
                            ActivityID = new Guid(para.ActivityID)
                        }, null).ToList();
                        if (m_MessageList.Count > 0)
                        {
                            if (!m_OldStarTime.Equals(para.StartTime))
                            {
                                DateTime dt1 = Convert.ToDateTime(m_OldStarTime);
                                DateTime dt2 = Convert.ToDateTime(para.StartTime);
                                TimeSpan ts  = (TimeSpan)(dt2 - dt1);
                                int      s   = Convert.ToInt32(ts.TotalDays);

                                foreach (var item in m_MessageList)
                                {
                                    item.SendTime = item.SendTime.Value.AddDays(s);
                                    C_ActivityMessageBLL.Update(item, pTran);
                                }
                            }
                        }
                        #endregion

                        #region 目标群日信息
                        //卡
                        List <C_TargetGroupEntity> UpdateData = C_TargetGroupBLL.QueryByEntity(new C_TargetGroupEntity()
                        {
                            ActivityID = new Guid(para.ActivityID), GroupType = 1
                        }, null).ToList();
                        foreach (var i in UpdateData)
                        {
                            C_TargetGroupBLL.Delete(i, pTran);
                        }
                        if (para.VipCardTypeIDList != null)
                        {
                            foreach (var i in para.VipCardTypeIDList)
                            {
                                C_TargetGroupEntity AddTargetGroupData = new C_TargetGroupEntity();
                                AddTargetGroupData.ActivityID = ChangeData.ActivityID;
                                AddTargetGroupData.GroupType  = 1;
                                AddTargetGroupData.ObjectID   = i;
                                AddTargetGroupData.CustomerID = loggingSessionInfo.ClientID;
                                C_TargetGroupBLL.Create(AddTargetGroupData);
                            }
                        }
                        #endregion
                        rd.ActivityID = ChangeData.ActivityID.ToString();
                    }
                    else
                    {
                        //新增
                        if (!ActivityBLL.IsActivityNameValid(para.ActivityName))
                        {
                            throw new APIException("名称重复!")
                                  {
                                      ErrorCode = ERROR_CODES.INVALID_BUSINESS
                                  };
                        }
                        C_ActivityEntity AddData = new C_ActivityEntity();
                        AddData.ActivityID   = System.Guid.NewGuid();
                        AddData.ActivityType = para.ActivityType;
                        AddData.ActivityName = para.ActivityName;
                        AddData.StartTime    = Convert.ToDateTime(para.StartTime);
                        if (!string.IsNullOrWhiteSpace(para.EndTime))
                        {
                            AddData.EndTime = Convert.ToDateTime(para.EndTime + " 23:59:59");
                        }
                        else
                        {
                            AddData.EndTime = DateTime.Parse("2099-01-01 23:59:59");
                        }
                        AddData.IsLongTime       = para.IsLongTime;
                        AddData.IsAllVipCardType = int.Parse(para.IsAllCardType);
                        AddData.SendCouponQty    = 0;
                        AddData.Status           = 5;
                        AddData.CustomerID       = loggingSessionInfo.ClientID;
                        AddData.TargetCount      = 0;
                        //执行
                        ActivityBLL.Create(AddData);
                        #region 新增目标群日信息
                        foreach (var i in para.VipCardTypeIDList)
                        {
                            C_TargetGroupEntity AddTargetGroupData = new C_TargetGroupEntity();
                            AddTargetGroupData.ActivityID = AddData.ActivityID;
                            AddTargetGroupData.GroupType  = 1;
                            AddTargetGroupData.ObjectID   = i;
                            AddTargetGroupData.CustomerID = loggingSessionInfo.ClientID;
                            C_TargetGroupBLL.Create(AddTargetGroupData, pTran);
                        }
                        #endregion

                        rd.ActivityID = AddData.ActivityID.ToString();
                    }
                    pTran.Commit();
                }
                catch (APIException apiEx)
                {
                    pTran.Rollback();
                    throw new APIException(apiEx.ErrorCode, apiEx.Message);
                }
            }
            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);
        }
        /// <summary>
        /// 活动服务送券业务方法
        /// </summary>
        private void ActivitySendCoupon()
        {
            #region 业务对象
            var activityBLL        = new C_ActivityBLL(c_loggingSessionInfo);
            var targetGroupBLL     = new C_TargetGroupBLL(c_loggingSessionInfo);
            var prizesBLL          = new C_PrizesBLL(c_loggingSessionInfo);
            var prizesDetailBLL    = new C_PrizesDetailBLL(c_loggingSessionInfo);
            var CouponTypeBLL      = new CouponTypeBLL(c_loggingSessionInfo);
            var ActivityMessageBLL = new C_ActivityMessageBLL(c_loggingSessionInfo);
            #endregion


            #region 获取当前商户活动集合
            List <IWhereCondition> complexCondition = new List <IWhereCondition> {
            };
            complexCondition.Add(new EqualsCondition()
            {
                FieldName = "CustomerID", Value = c_loggingSessionInfo.ClientID
            });
            //complexCondition.Add(new DirectCondition(" ((IsLongTime=1 and GETDATE()>=StartTime) OR (GETDATE()>=StartTime AND GETDATE()<=EndTime)) AND STATUS=0 and IsDelete=0 "));
            complexCondition.Add(new DirectCondition(" (IsLongTime=1 or (IsLongTime=0 and GETDATE()<=EndTime)) and STATUS=0 and IsDelete=0 "));
            var ActivityList = activityBLL.Query(complexCondition.ToArray(), null);//营销活动

            #endregion
            #region 轮循活动,送券业务处理
            foreach (var activity in ActivityList)
            {
                Loggers.Debug(new DebugLogInfo()
                {
                    Message = "轮循营销活动"
                });
                #region 获取卡类型ID(目标卡人群)
                var targetGroupInfo = targetGroupBLL.QueryByEntity(new C_TargetGroupEntity()
                {
                    ActivityID = activity.ActivityID, GroupType = 1
                }, null).FirstOrDefault();
                int VipCardTypeID = targetGroupInfo == null ? -1 : int.Parse(targetGroupInfo.ObjectID);//卡类型ID
                #endregion



                #region 活动是否设置奖品控制
                //获取赠送礼券奖品
                var prizesData = prizesBLL.QueryByEntity(new C_PrizesEntity()
                {
                    ActivityID = activity.ActivityID, PrizesType = 1
                }, null).FirstOrDefault();
                //当前活动消息类型集合
                var ActivityMessageLsit = ActivityMessageBLL.QueryByEntity(new C_ActivityMessageEntity()
                {
                    ActivityID = activity.ActivityID
                }, null).ToList();

                List <IWhereCondition> PrizeDetailCondition = new List <IWhereCondition> {
                };
                if (prizesData != null)
                {
                    PrizeDetailCondition.Add(new DirectCondition(" PrizesID='" + prizesData.PrizesID + "' "));
                }
                var PrizeDetailList = prizesDetailBLL.Query(PrizeDetailCondition.ToArray(), null).ToList();
                #endregion

                #region 当前活动券处理

                #region 获取活动会员人数
                int SumVipCount = 0;//会员数
                if (activity.IsAllVipCardType == 0)
                {
                    SumVipCount = activityBLL.GetholderCardCount(VipCardTypeID.ToString(), null);//当前卡类型会员数
                }
                else
                {
                    SumVipCount = activityBLL.GetholderCardCount(null, null);//所有会员数
                }
                #endregion

                #region 获取当前活动送券集合
                List <IWhereCondition> CouponTypeCondition = new List <IWhereCondition> {
                };
                StringBuilder strWhere    = new StringBuilder();
                string        NewStrWhere = "";
                foreach (var itemPrizeDetail in PrizeDetailList)
                {
                    strWhere.Append("couponTypeID='" + itemPrizeDetail.CouponTypeID + "' or ");
                }
                if (PrizeDetailList.Count > 0)
                {
                    NewStrWhere = ((strWhere.ToString().TrimEnd()).TrimEnd('r')).Trim('o');
                }
                if (!string.IsNullOrWhiteSpace(NewStrWhere))
                {
                    CouponTypeCondition.Add(new DirectCondition(NewStrWhere));
                }
                //券集合
                var ActivityCouponTypeList = CouponTypeBLL.Query(CouponTypeCondition.ToArray(), null);
                #endregion

                #region 判断当前券数量是否充足,不充足:计算出缺省券数量,充足获取券数最少的一种券

                //券种数量集合
                List <int> CouponNumList = new List <int>();
                bool       CouponFlag    = true;
                string     Remark        = "";
                foreach (var CouponTypeitem in ActivityCouponTypeList)
                {
                    if (CouponTypeitem.IsVoucher >= CouponTypeitem.IssuedQty)
                    {
                        if (SumVipCount > activity.SendCouponQty)
                        {
                            int Math = SumVipCount - (activity.SendCouponQty ?? 0);//目标数-使用数
                            // Loggers.Debug(new DebugLogInfo() { Message = CouponTypeitem.CouponTypeName + "券数量库存不足!" + DateTime.Now });
                            Remark    += string.Format("{1}都已发完还少{0}张,", Math, CouponTypeitem.CouponTypeName);
                            CouponFlag = false;
                        }
                    }
                    else
                    {
                        CouponNumList.Add((CouponTypeitem.IssuedQty ?? 0) - (CouponTypeitem.IsVoucher ?? 0));
                    }
                }
                if (CouponFlag == false)
                {
                    Remark += "请追加券数量!";
                    //activity.Remark = Remark;
                    activityBLL.Update(activity);//更新当前活动备注
                    continue;
                }
                int MinCouponNum = 0;
                if (CouponNumList.Count > 0)
                {
                    MinCouponNum = CouponNumList.Min();//当前活动奖品券种数量最少的券数
                }
                if (MinCouponNum == 0)
                {
                    continue;
                }
                #endregion


                #endregion

                #region 批量新增券关系,修改券数量
                int    ResultConunt      = 0;
                string CouponTypeNameStr = "";//所有券名称
                foreach (var CouponTypeitem in ActivityCouponTypeList)
                {
                    CouponTypeNameStr += CouponTypeitem.CouponTypeName + ",";
                    ResultConunt       = BatchAddSendCoupon(MinCouponNum, activity.ActivityID.Value.ToString(), activity.ActivityType.Value, CouponTypeitem.CouponTypeID.Value.ToString(), VipCardTypeID);
                    System.Threading.Thread.Sleep(2000);//沉睡2秒
                }
                #endregion

                if (ResultConunt > 0)
                {
                    #region 修改活动领券人数
                    activity.SendCouponQty = activity.SendCouponQty + ResultConunt;
                    activityBLL.Update(activity);

                    #endregion

                    #region 批量新增活动获赠奖品预发送消息
                    //CouponTypeNameStr = CouponTypeNameStr.TrimEnd(',');
                    foreach (var ActMessageitem in ActivityMessageLsit)
                    {
                        string Content = ActMessageitem.Content + "," + CouponTypeNameStr; //消息内容
                        BatchAddMessageSend(ResultConunt, activity.ActivityID.Value.ToString(), VipCardTypeID, ActMessageitem.MessageID.Value.ToString(), ActMessageitem.MessageType, Content, ActMessageitem.SendTime.Value, activity.ActivityType ?? 2);
                        System.Threading.Thread.Sleep(2000);                               //沉睡2秒
                    }
                    #endregion

                    #region 批量新增获赠信息
                    BatchAddPrizeReceive(ResultConunt, activity.ActivityID.Value.ToString(), VipCardTypeID, activity.ActivityType ?? 2);
                    System.Threading.Thread.Sleep(2000);//沉睡2秒
                    #endregion
                }
            }

            #endregion
        }
        /// <summary>
        /// 发送消息业务(短信,微信)
        /// </summary>
        private void ActivitySendMessige()
        {
            #region Business Object
            var ActivityBLL        = new C_ActivityBLL(c_loggingSessionInfo);
            var MessageSendBLL     = new C_MessageSendBLL(c_loggingSessionInfo);
            var ActivityMessageBLL = new C_ActivityMessageBLL(c_loggingSessionInfo);
            var CommonBLL          = new CommonBLL();
            #endregion

            #region 获取所有营销活动
            List <IWhereCondition> complexCondition = new List <IWhereCondition> {
            };
            complexCondition.Add(new EqualsCondition()
            {
                FieldName = "CustomerID", Value = c_loggingSessionInfo.ClientID
            });
            //complexCondition.Add(new DirectCondition(" ((IsLongTime=1 and GETDATE()>=StartTime) OR (GETDATE()>=StartTime AND GETDATE()<=EndTime)) AND STATUS=0 and IsDelete=0 "));
            complexCondition.Add(new DirectCondition(" (IsLongTime=1 or (IsLongTime=0 and GETDATE()<=EndTime)) and STATUS=0 and IsDelete=0 "));
            var ActivityList = ActivityBLL.Query(complexCondition.ToArray(), null);//营销活动
            #endregion

            //轮循活动获取到当前活动与发送短信,微信消息集合
            foreach (var item in ActivityList)
            {
                //预发送消息源
                var ActivityMessageList = ActivityMessageBLL.QueryByEntity(new C_ActivityMessageEntity()
                {
                    ActivityID = item.ActivityID
                }, null).ToList();
                var ActivitySMSMessageList    = new List <C_ActivityMessageEntity>(); //短信消息集合
                var ActivityWeChatMessageList = new List <C_ActivityMessageEntity>(); //微信消息集合

                ActivitySMSMessageList    = ActivityMessageList.Where(m => m.MessageType.Trim().Equals("SMS")).ToList();
                ActivityWeChatMessageList = ActivityMessageList.Where(m => m.MessageType.Trim().Equals("WeChat")).ToList();



                //遍历消息集合,调用发送消息方法
                #region 发送短信
                string content = "";
                string mobile  = "";
                foreach (var SMSMessage in ActivitySMSMessageList)
                {
                    List <IWhereCondition> MessageCondition = new List <IWhereCondition> {
                    };
                    //获取未发送的信息
                    MessageCondition.Add(new DirectCondition("MessageID='" + SMSMessage.MessageID + "' and IsSend <>2 order by Priority desc "));
                    var           MessageSendList = MessageSendBLL.Query(MessageCondition.ToArray(), null).ToList().Take(5000).ToList();
                    StringBuilder PhoneStr        = new StringBuilder();
                    //群发短信接口对象
                    api api1 = new api();
                    if (MessageSendList.Count > 100)
                    {
                        #region 大于一百条
                        foreach (var MessageSend in MessageSendList)
                        {
                            if (MessageSend.SendTime <= DateTime.Now)
                            {
                                PhoneStr.Append(MessageSend.Phone + ",");//手机号
                            }
                            if (string.IsNullOrWhiteSpace(content))
                            {
                                content = "尊敬的会员," + SMSMessage.Content + "回TD退订【连锁掌柜】"; //消息内容
                            }
                            mobile = PhoneStr.ToString();                                //手机号
                        }
                        mobile = mobile.TrimEnd(',');

                        //调用群发发送短信接口
                        SendSmsResult SendSmsResult1 = api1.SendSms("hy_znxx", "znxx", content, mobile, "", "17");
                        //事物对象
                        var pTran = ActivityBLL.GetTran();
                        using (pTran.Connection)
                        {
                            try
                            {
                                if (SendSmsResult1.code == 2)
                                {//发送成功
                                    foreach (var updateItem in MessageSendList)
                                    {
                                        updateItem.ActualSendTime = DateTime.Now;
                                        updateItem.IsSend         = 2;
                                        updateItem.SendNumber++;
                                        MessageSendBLL.Update(updateItem, pTran);
                                    }
                                }
                                else
                                {//失败
                                    foreach (var updateItem in MessageSendList)
                                    {
                                        updateItem.SendNumber++;
                                        updateItem.Priority = 1;
                                        MessageSendBLL.Update(updateItem, pTran);
                                    }
                                }
                                //提交
                                pTran.Commit();
                                System.Threading.Thread.Sleep(2000);   // 1秒为单位
                            }
                            catch (Exception ex)
                            {
                                pTran.Rollback();

                                throw ex;
                            }
                        }
                        #endregion
                    }
                    //else
                    //{
                    #region 单发
                    //    foreach (var MessageSend in MessageSendList)
                    //    {
                    //        if (MessageSend.SendTime < DateTime.Now)
                    //        {
                    //            //移动手机号不能单发
                    //            string yidong = @"^1(34[0-8]|(3[5-9]|5[017-9]|8[278])\\d)\\d{7}$";
                    //            Regex YD = new Regex(yidong);
                    //            if (YD.IsMatch(MessageSend.Phone))
                    //                continue;

                    //            string NewContent = "尊敬的会员," + MessageSend.Content + "回TD退订【连锁掌柜】";
                    //            //调用群发发送短信接口
                    //            SendSmsResult SendSmsResult2 = api1.SendSms("hy_znxx", "znxx", NewContent, MessageSend.Phone, "", "17");
                    //            if (SendSmsResult2.code == 2)
                    //            {//发送成功
                    //                MessageSend.ActualSendTime = DateTime.Now;
                    //                MessageSend.IsSend = 2;
                    //                MessageSend.SendNumber++;
                    //                MessageSendBLL.Update(MessageSend);
                    //            }
                    //            else
                    //            {//失败
                    //                MessageSend.SendNumber++;
                    //                MessageSend.Priority = 1;
                    //                MessageSendBLL.Update(MessageSend);
                    //            }
                    //        }
                    //    }
                    #endregion

                    //}
                }

                #endregion
                #region 发送微信
                foreach (var Weitem in ActivityWeChatMessageList)
                {
                    List <IWhereCondition> WeMessageCondition = new List <IWhereCondition> {
                    };
                    //获取预发送的微信
                    WeMessageCondition.Add(new DirectCondition("MessageID='" + Weitem.MessageID + "' and IsSend =0 order by Priority desc "));
                    var           WeMessageSendList = MessageSendBLL.Query(WeMessageCondition.ToArray(), null).ToList().Take(10000);
                    List <string> OpenIDList        = new List <string>();
                    string        WXcontent         = "";
                    foreach (var WeMessageSend in WeMessageSendList)
                    {
                        if (WeMessageSend.SendTime <= DateTime.Now)
                        {
                            OpenIDList.Add(WeMessageSend.OpenID);
                        }
                        if (string.IsNullOrWhiteSpace(WXcontent))
                        {
                            WXcontent = WeMessageSend.Content;
                        }
                    }
                    if (OpenIDList.Count > 1)
                    {
                        //调用
                        string Json = CommonBLL.BulkSendWXTemplateMessage(OpenIDList.ToArray(), WXcontent, c_loggingSessionInfo);
                        if (!string.IsNullOrWhiteSpace(Json))
                        {
                            var Data = JsonHelper.JsonDeserialize <Result>(Json);
                            //事物对象
                            var pTranWX = ActivityBLL.GetTran();
                            using (pTranWX.Connection)
                            {
                                try
                                {
                                    if (Data.errcode == 0)
                                    {
                                        foreach (var WXUpdateitem in WeMessageSendList)
                                        {
                                            WXUpdateitem.ActualSendTime = DateTime.Now;
                                            WXUpdateitem.IsSend         = 2;
                                            WXUpdateitem.SendNumber++;
                                            MessageSendBLL.Update(WXUpdateitem, pTranWX);
                                        }
                                    }
                                    else
                                    {//失败
                                        foreach (var WXUpdateitem in WeMessageSendList)
                                        {
                                            WXUpdateitem.SendNumber++;
                                            WXUpdateitem.Priority = 1;
                                            WXUpdateitem.IsSend   = 3;
                                            MessageSendBLL.Update(WXUpdateitem, pTranWX);
                                        }
                                    }
                                    //提交
                                    pTranWX.Commit();
                                    System.Threading.Thread.Sleep(2000);   // 5秒为单位
                                }
                                catch (Exception ex)
                                {
                                    pTranWX.Rollback();
                                    throw ex;
                                }
                            }
                        }
                    }
                }
                #endregion
                #region 发送邮件

                #endregion
            }
        }