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); try { C_ActivityEntity Data = ActivityBLL.GetByID(para.ActivityID); if (Data == null) { throw new APIException("营销活动对象为NULL!") { ErrorCode = ERROR_CODES.INVALID_BUSINESS } } ; if (Data.Status == 0) { Data.Status = 1; } else { Data.Status = 0; } ActivityBLL.Update(Data); } catch (APIException apiEx) { throw new APIException(apiEx.ErrorCode, apiEx.Message); } return(rd); }
protected override GetCardholderCountRD ProcessRequest(DTO.Base.APIRequest <GetCardholderCountRP> pRequest) { var rd = new GetCardholderCountRD(); var para = pRequest.Parameters; var loggingSessionInfo = new SessionManager().CurrentUserLoginInfo; var ActivityBLL = new C_ActivityBLL(loggingSessionInfo); rd.Count = ActivityBLL.GetTargetCount(para.VipCardTypeIDList, para.ActivityType, para.StartTime, para.EndTime, para.IsLongTime); return(rd); }
protected override EmptyResponseData ProcessRequest(DTO.Base.APIRequest <DelPrizesDetailRP> pRequest) { var rd = new EmptyResponseData(); var para = pRequest.Parameters; var loggingSessionInfo = new SessionManager().CurrentUserLoginInfo; var PrizesDetailBLL = new C_PrizesDetailBLL(loggingSessionInfo); var ActivityBLL = new C_ActivityBLL(loggingSessionInfo); try { //删除 C_PrizesDetailEntity DelData = PrizesDetailBLL.GetByID(para.PrizesDetailID); if (DelData == null) { throw new APIException("奖品明细对象为NULL!") { ErrorCode = ERROR_CODES.INVALID_BUSINESS }; } //执行 PrizesDetailBLL.Delete(DelData); if (ActivityBLL.IsActivityValid(para.ActivityID)) { var activity = ActivityBLL.GetByID(para.ActivityID); if (activity != null) { activity.Status = 0; } ActivityBLL.Update(activity); } } catch (APIException apiEx) { throw new APIException(apiEx.ErrorCode, apiEx.Message); } 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 <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); }
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 GetActivityListRD ProcessRequest(DTO.Base.APIRequest <GetActivityListRP> pRequest) { var rd = new GetActivityListRD(); var para = pRequest.Parameters; var loggingSessionInfo = new SessionManager().CurrentUserLoginInfo; var ActivityBLL = new C_ActivityBLL(loggingSessionInfo); //条件参数 List <IWhereCondition> complexCondition = new List <IWhereCondition> { }; complexCondition.Add(new EqualsCondition() { FieldName = "CustomerID", Value = loggingSessionInfo.ClientID }); if (!string.IsNullOrEmpty(para.ActivityType)) { complexCondition.Add(new EqualsCondition() { FieldName = "ActivityType", Value = para.ActivityType }); } if (!string.IsNullOrEmpty(para.ActivityName)) { complexCondition.Add(new LikeCondition() { FieldName = "ActivityName", Value = "%" + para.ActivityName + "%" }); } if (!string.IsNullOrEmpty(para.Status)) { if (para.Status.Equals("1") || para.Status.Equals("5")) { //暂停或不完整 complexCondition.Add(new EqualsCondition() { FieldName = "Status", Value = para.Status }); } else { DateTime m_Date = DateTime.Now.Date; //正常状态 complexCondition.Add(new DirectCondition("Status=0 ")); switch (para.Status) { case "2": //未开始 complexCondition.Add(new DirectCondition("StartTime>'" + m_Date + "' ")); break; case "3": //运行中 complexCondition.Add( new DirectCondition("((StartTime<='" + m_Date + "' and EndTime>='" + m_Date + "') or (IsLongTime=1 and StartTime<='" + m_Date + "')) ")); break; case "4": //结束 complexCondition.Add(new DirectCondition("EndTime<'" + m_Date + "' ")); break; default: break; } } } //排序参数 List <OrderBy> lstOrder = new List <OrderBy> { }; lstOrder.Add(new OrderBy() { FieldName = "CreateTime", Direction = OrderByDirections.Desc }); //获取数据集 var tempList = ActivityBLL.PagedQuery(complexCondition.ToArray(), lstOrder.ToArray(), para.PageSize, para.PageIndex); rd.TotalPageCount = tempList.PageCount; rd.TotalCount = tempList.RowCount; rd.ActivityList = tempList.Entities.Select(t => new ActivityInfo() { ActivityID = t.ActivityID.ToString(), ActivityType = t.ActivityType.Value, ActivityName = t.ActivityName, IsAllCardType = t.IsAllVipCardType ?? 0, TargetGroups = ActivityBLL.GetTargetGroups(t.IsAllVipCardType ?? 0, t.ActivityID.ToString()), BeginEndData = (t.StartTime == null ? "" : t.StartTime.Value.ToString("yyyy-MM-dd至")) + (t.EndTime == null ? "" : t.EndTime.Value.ToString("yyyy-MM-dd")), Status = t.Status.Value, SendCouponQty = t.SendCouponQty == null ? 0 : t.SendCouponQty.Value, IsLongTime = t.IsLongTime == null ? 0 : t.IsLongTime.Value, StartTime = t.StartTime == null ? "" : t.StartTime.Value.ToString("yyyy-MM-dd"), EndTime = t.EndTime == null ? "" : t.EndTime.Value.ToString("yyyy-MM-dd"), TargetCount = ActivityBLL.GetTargetCount(ActivityBLL.GetTargetGroupId(t.IsAllVipCardType ?? 0, t.ActivityID.ToString()), t.ActivityType.Value, t.StartTime == null ? "" : t.StartTime.Value.ToString("yyyy-MM-dd"), t.EndTime == null ? "" : t.EndTime.Value.ToString("yyyy-MM-dd"), t.IsAllVipCardType ?? 0) }).ToList(); foreach (var item in rd.ActivityList) { if (item.Status == 0) { //当前活动不是长期 DateTime NowData = DateTime.Now.Date; if (item.IsLongTime == 1) { //长期 if (!string.IsNullOrWhiteSpace(item.StartTime)) { if (NowData < Convert.ToDateTime(item.StartTime).Date) { item.Status = 2; } else { item.Status = 3; } } } else { //不是长期 if (!string.IsNullOrWhiteSpace(item.StartTime) && !string.IsNullOrWhiteSpace(item.EndTime)) { if (NowData < Convert.ToDateTime(item.StartTime).Date) { item.Status = 2; } else if (NowData <= Convert.ToDateTime(item.EndTime).Date) { item.Status = 3; } else { item.Status = 4; } } } } if (item.IsLongTime == 1) { int i = item.BeginEndData.IndexOf("至"); if (i > 0) { item.BeginEndData = item.BeginEndData.Substring(0, (i + 1)) + "长期"; } } } return(rd); }
protected override EmptyResponseData ProcessRequest(DTO.Base.APIRequest <SetPrizesRP> pRequest) { var rd = new EmptyResponseData(); 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 pTran = ActivityBLL.GetTran(); using (pTran.Connection) { try { if (string.IsNullOrWhiteSpace(para.ActivityID)) { throw new APIException("必须输入活动编号!") { ErrorCode = ERROR_CODES.INVALID_BUSINESS } } ; if (string.IsNullOrWhiteSpace(para.PrizesID)) {//新增 C_PrizesEntity AddPrizesData = new C_PrizesEntity(); AddPrizesData.ActivityID = new Guid(para.ActivityID); AddPrizesData.PrizesType = para.PrizesType; AddPrizesData.PrizesName = para.PrizesDetailList.FirstOrDefault().CouponTypeName; AddPrizesData.CustomerID = loggingSessionInfo.ClientID; AddPrizesData.SendDate = DateTime.Now; List <IWhereCondition> complexCondition = new List <IWhereCondition> { }; complexCondition.Add(new EqualsCondition() { FieldName = "ActivityID", Value = para.ActivityID }); if (PrizesBLL.Query(complexCondition.ToArray(), null).ToList().Count > 0) { throw new APIException("不能重复创建奖品!") { ErrorCode = ERROR_CODES.INVALID_BUSINESS } } ; PrizesBLL.Create(AddPrizesData); Guid?PrizesID = PrizesBLL.Query(complexCondition.ToArray(), null).ToList().FirstOrDefault().PrizesID; foreach (var itemes in para.PrizesDetailList) { C_PrizesDetailEntity AddDetailData = new C_PrizesDetailEntity(); AddDetailData.PrizesID = PrizesID; AddDetailData.CouponTypeID = new Guid(itemes.CouponTypeID); AddDetailData.CustomerID = loggingSessionInfo.ClientID; AddDetailData.NumLimit = itemes.NumLimit; AddDetailData.CouponTypeName = itemes.CouponTypeName; AddDetailData.CouponTypeDesc = itemes.CouponTypeDesc; PrizesDetailBLL.Create(AddDetailData, pTran); } } else {//编辑奖品明细 foreach (var itemes in para.PrizesDetailList) { C_PrizesDetailEntity AddDetailData = new C_PrizesDetailEntity(); AddDetailData.PrizesID = new Guid(para.PrizesID); AddDetailData.CouponTypeID = new Guid(itemes.CouponTypeID); AddDetailData.CustomerID = loggingSessionInfo.ClientID; AddDetailData.NumLimit = itemes.NumLimit; AddDetailData.CouponTypeName = itemes.CouponTypeName; AddDetailData.CouponTypeDesc = itemes.CouponTypeDesc; if (string.IsNullOrWhiteSpace(itemes.PrizesDetailID)) { PrizesDetailBLL.Create(AddDetailData, pTran); } else { AddDetailData.PrizesDetailID = new Guid(itemes.PrizesDetailID); if (itemes.IsEnable == 1) { PrizesDetailBLL.Update(AddDetailData, pTran); } else { PrizesDetailBLL.Delete(AddDetailData, pTran); } } } } pTran.Commit(); 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); } } 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 } }