/// <summary> /// 指定用户发送微信消息 /// </summary> /// <param name="userIds"></param> /// <param name="msgtype"></param> /// <param name="mediaid"></param> /// <param name="msgcontent"></param> public static void SendWeiMessageByUserIds(long[] userIds, string msgtype, string mediaid = "", string msgcontent = "") { Himall.CommonModel.WXMsgType type; if (Enum.TryParse <Himall.CommonModel.WXMsgType>(msgtype, out type)) { var openIds = _iMemberService.GetOpenIdByUserIds(userIds); if (openIds.Count() != userIds.Length && openIds.Count() < 2) { throw new HimallException("有用户未关注公众号,发送失败!"); } var set = SiteSettingApplication.GetSiteSettings(); var result = WXMsgTemplateApplication.SendWXMsg(openIds, type, msgcontent, mediaid, set.WeixinAppId, set.WeixinAppSecret); if (result.errCode == "0" || result.errMsg.Contains("success")) { SendMessageRecordInfo sendRecord = new SendMessageRecordInfo() { ContentType = type, MessageType = MsgType.WeiXin, SendContent = msgcontent, SendTime = DateTime.Now, ToUserLabel = "会员分组", SendState = 1 }; WXMsgTemplateApplication.AddSendRecord(sendRecord); } else { throw new HimallException(result.errCode); } } }
/// <summary> /// 发送短信,根据搜索条件 /// </summary> /// <param name="query"></param> /// <param name="couponIds"></param> public static void SendMsg(MemberPowerQuery query, string sendCon, string labelinfos = "会员分组") { var messagePlugin = PluginsManagement.GetPlugin <IMessagePlugin>("Himall.Plugin.Message.SMS"); int result = 0; //循环执行发送 for (int i = 0; i < int.MaxValue; i++) { query.PageNo = i + 1; query.PageSize = 1000; var members = MemberApplication.GetPurchasingPowerMember(query); string[] dests = members.Models.Select(e => e.CellPhone).ToArray(); List <string> phones = new List <string>(); foreach (var dest in dests) { if (messagePlugin.Biz.CheckDestination(dest)) { phones.Add(dest); result++; } } messagePlugin.Biz.SendMessages(phones.ToArray(), sendCon); if (members.Models.Count == 0) { break; } } //记录发送历史 if (result > 0) { var sendRecord = new Himall.Model.SendMessageRecordInfo { ContentType = Himall.CommonModel.WXMsgType.wxcard, MessageType = Himall.CommonModel.MsgType.Coupon, SendContent = "", SendState = 1, SendTime = DateTime.Now, ToUserLabel = labelinfos //"会员分组" }; WXMsgTemplateApplication.AddSendRecord(sendRecord); } else { throw new HimallException("此标签下无符发送的会员;"); } }
/// <summary> /// 指定用户发送微信消息 /// </summary> /// <param name="userIds"></param> /// <param name="msgtype"></param> /// <param name="mediaid"></param> /// <param name="msgcontent"></param> public static void SendWeiMessage(MemberPowerQuery query, string msgtype, string mediaid = "", string msgcontent = "") { Himall.CommonModel.WXMsgType type; if (Enum.TryParse <Himall.CommonModel.WXMsgType>(msgtype, out type)) { List <string> allopenIds = new List <string>(); //循环执行发送 for (int i = 0; i < int.MaxValue; i++) { query.PageNo = i + 1; query.PageSize = 1000; var members = MemberApplication.GetPurchasingPowerMember(query); var userIds = members.Models.Select(p => p.Id).ToArray(); var openIds = _iMemberService.GetOpenIdByUserIds(userIds); foreach (var item in openIds) { allopenIds.Add(item); } if (members.Models.Count == 0) { break; } } var set = SiteSettingApplication.GetSiteSettings(); var result = WXMsgTemplateApplication.SendWXMsg(allopenIds, type, msgcontent, mediaid, set.WeixinAppId, set.WeixinAppSecret); if (result.errCode == "0" || result.errMsg.Contains("success")) { SendMessageRecordInfo sendRecord = new SendMessageRecordInfo() { ContentType = type, MessageType = MsgType.WeiXin, SendContent = msgcontent, SendTime = DateTime.Now, ToUserLabel = "会员分组", SendState = 1 }; WXMsgTemplateApplication.AddSendRecord(sendRecord); } else { throw new HimallException(result.errCode); } } }
/// <summary> /// 根据会员ID发送短信 /// </summary> /// <param name="userIds"></param> /// <param name="sendCon"></param> public static void SendMsgByUserIds(long[] userIds, string sendCon) { var messagePlugin = PluginsManagement.GetPlugin <IMessagePlugin>("Himall.Plugin.Message.SMS"); var members = _iMemberService.GetMembers(userIds); string[] dests = members.Select(e => e.CellPhone).ToArray(); List <string> phones = new List <string>(); foreach (var dest in dests) { if (messagePlugin.Biz.CheckDestination(dest)) { phones.Add(dest); } } if (phones.Count == 0) { throw new HimallException("可发送的对象未空!"); } var siteName = SiteSettingApplication.GetSiteSettings().SiteName; sendCon = sendCon + "【" + siteName + "】"; //【TODO使用队列】 foreach (var phone in phones) { messagePlugin.Biz.SendTestMessage(phone, sendCon); } var sendRecord = new Himall.Model.SendMessageRecordInfo { ContentType = Himall.CommonModel.WXMsgType.text, MessageType = Himall.CommonModel.MsgType.SMS, SendContent = sendCon == null ? "" : sendCon, SendState = 1, SendTime = DateTime.Now, ToUserLabel = "会员分组" }; WXMsgTemplateApplication.AddSendRecord(sendRecord); }
/// <summary> /// 发送优惠券,根据搜索条件 /// </summary> /// <param name="query"></param> /// <param name="couponIds"></param> public static void SendCoupon(MemberPowerQuery query, IEnumerable <long> couponIds, string labelinfos = "") { var siteName = SiteSettingApplication.GetSiteSettings().SiteName; decimal price = 0; string result = ""; //会员领取优惠券记录ID // List<long> memberCouponIds = new List<long>(); // dictResult = new Dictionary<string, int>(); query.PageSize = 500; query.PageNo = 1; var pageMode = MemberApplication.GetPurchasingPowerMember(query); if (pageMode.Total > 0) { var mUserMember = new List <MemberPurchasingPower>(); while (pageMode.Models.Count() > 0)//循环批量获取用户信息 { // string[] dests = pageMode.Models.Select(e => e.).ToArray(); foreach (var item in pageMode.Models) { mUserMember.Add(item); } query.PageNo += 1; pageMode = MemberApplication.GetPurchasingPowerMember(query); } var model = _iCouponService.GetCouponInfo(couponIds.ToArray());//获取所选优惠券集合 //查询优惠券领取状况 var mCouponRecord = _iCouponService.GetCouponRecordTotal(couponIds.ToArray()); List <SendmessagerecordCouponInfo> lsendInfo = new List <SendmessagerecordCouponInfo>(); //验证优惠券是否充足 foreach (var item in model) { price += item.Price; lsendInfo.Add(new SendmessagerecordCouponInfo() { CouponId = item.Id }); if ((item.Num - item.Himall_CouponRecord.Count()) < mUserMember.Count) { result = item.CouponName + "优惠券的数量不足,无法赠送"; break; } } if (result == "") { //发送优惠券 bool alTotal = false; for (int i = 0; i < mUserMember.Count; i++) { bool suTotal = false;//会员发送优惠券成功数 foreach (var item in model) { //判断会员领取限制,是否可领取此优惠券 bool isf = true; if (item.PerMax > 0) { int total = mCouponRecord.Where(p => p.UserId == mUserMember[i].Id && p.CouponId == item.Id).ToList().Count; if (item.PerMax <= total) { isf = false; } } if (isf) { suTotal = true; alTotal = true; CouponRecordInfo info = new CouponRecordInfo(); info.UserId = mUserMember[i].Id; info.UserName = mUserMember[i].UserName; info.ShopId = item.ShopId; info.CouponId = item.Id; _iCouponService.AddCouponRecord(info); } } if (suTotal) { MessageCouponInfo info = new MessageCouponInfo(); info.Money = price; info.SiteName = siteName; info.UserName = mUserMember[i].UserName; MessageApplication.SendMessageOnCouponSuccess(mUserMember[i].Id, info); } } Log.Debug("sendCoupon:" + alTotal); //查看成功发送会员数 if (alTotal) { //记录发送历史 var sendRecord = new Himall.Model.SendMessageRecordInfo { ContentType = WXMsgType.wxcard, MessageType = MsgType.Coupon, SendContent = "", SendState = 1, SendTime = DateTime.Now, ToUserLabel = labelinfos == null ? "" : labelinfos, Himall_SendmessagerecordCoupon = lsendInfo }; WXMsgTemplateApplication.AddSendRecord(sendRecord); } else { result = "此标签下无符合领取此优惠券的会员"; } } } else { result = "该标签下无任何会员"; } if (!string.IsNullOrWhiteSpace(result)) { throw new HimallException(result); } }
/// <summary> /// 发送优惠券,根据会员ID /// </summary> /// <param name="userIds">发送对象</param> /// <param name="couponIds">优惠券名称</param> public static void SendCouponByUserIds(IEnumerable <long> userIds, IEnumerable <long> couponIds) { var model = _iCouponService.GetCouponInfo(couponIds.ToArray()); var siteName = SiteSettingApplication.GetSiteSettings().SiteName; var mCouponRecord = _iCouponService.GetCouponRecordTotal(couponIds.ToArray()); var mUserMember = MemberApplication.GetMembers(userIds); decimal price = 0; string result = ""; List <SendmessagerecordCouponInfo> lsendInfo = new List <SendmessagerecordCouponInfo>(); //验证优惠券是否充足 foreach (var item in model) { price += item.Price; lsendInfo.Add(new SendmessagerecordCouponInfo() { CouponId = item.Id }); if ((item.Num - item.Himall_CouponRecord.Count()) < mUserMember.Count) { result = item.CouponName + "优惠券的数量不足,无法赠送"; break; } } if (result == "") { //发送优惠券 bool alTotal = false; for (int i = 0; i < mUserMember.Count; i++) { bool suTotal = false;//会员发送优惠券成功数 foreach (var item in model) { //判断会员领取限制,是否可领取此优惠券 bool isf = true; if (item.PerMax > 0) { int total = mCouponRecord.Where(p => p.UserId == mUserMember[i].Id && p.CouponId == item.Id).ToList().Count; if (item.PerMax <= total) { isf = false; } } if (isf) { suTotal = true; alTotal = true; CouponRecordInfo info = new CouponRecordInfo(); info.UserId = mUserMember[i].Id; info.UserName = mUserMember[i].UserName; info.ShopId = item.ShopId; info.CouponId = item.Id; _iCouponService.AddCouponRecord(info); } } if (suTotal) { MessageCouponInfo info = new MessageCouponInfo(); info.Money = price; info.SiteName = siteName; info.UserName = mUserMember[i].UserName; MessageApplication.SendMessageOnCouponSuccess(mUserMember[i].Id, info); } } Log.Debug("sendCoupon:" + alTotal); //查看成功发送会员数 if (alTotal) { //记录发送历史 var sendRecord = new Himall.Model.SendMessageRecordInfo { ContentType = WXMsgType.wxcard, MessageType = MsgType.Coupon, SendContent = "", SendState = 1, SendTime = DateTime.Now, ToUserLabel = "", Himall_SendmessagerecordCoupon = lsendInfo }; WXMsgTemplateApplication.AddSendRecord(sendRecord); } else { result = "无符合领取此优惠券的会员"; } } else { result = "该标签下无任何会员"; } if (!string.IsNullOrWhiteSpace(result)) { throw new HimallException(result); } }
/// <summary> /// 发送优惠券 /// </summary> /// <param name="labelids">发送标签</param> /// <param name="labelinfos">标签名称</param> /// <param name="couponIds">优惠券名称</param> /// <returns>-1:优惠券不足;-2:请选择发送的优惠券;-3:标签中用户数为0</returns> public static string SendCouponMsg(string labelids, string labelinfos, string couponIds, string url) { var messageEmali = PluginsManagement.GetPlugin <IMessagePlugin>("Himall.Plugin.Message.Email"); var messageSMS = PluginsManagement.GetPlugin <IMessagePlugin>("Himall.Plugin.Message.SMS"); string result = ""; if (!couponIds.TrimEnd(',').Equals("")) { //取出标签对应的会员信息 long[] lids = string.IsNullOrWhiteSpace(labelids) ? null : labelids.Split(',').Select(s => long.Parse(s)).ToArray(); int pageNo = 1, pageSize = 100; var pageMode = MemberApplication.GetMembers(new MemberQuery { LabelId = lids, PageNo = pageNo, PageSize = pageSize }); if (pageMode.Total > 0) { List <UserMemberInfo> mUserMember = new List <UserMemberInfo>(); while (pageMode.Models.Count() > 0)//循环批量获取用户信息 { string[] dests = pageMode.Models.Select(e => e.Email).ToArray(); foreach (var item in pageMode.Models) { mUserMember.Add(item); } pageNo += 1; pageMode = MemberApplication.GetMembers(new MemberQuery { LabelId = lids, PageNo = pageNo, PageSize = pageSize }); } string[] arrStr = couponIds.TrimEnd(',').Split(','); long[] arrcouponIds = arrStr.Select(a => long.Parse(a)).ToArray(); var model = _iCouponService.GetCouponInfo(arrcouponIds);//获取所选优惠券集合 //查询优惠券领取状况 var mCouponRecord = _iCouponService.GetCouponRecordTotal(arrcouponIds); decimal price = 0; List <SendmessagerecordCouponInfo> lsendInfo = new List <SendmessagerecordCouponInfo>(); List <SendmessagerecordCouponSNInfo> lsendSN = new List <SendmessagerecordCouponSNInfo>(); //验证优惠券是否充足 foreach (var item in model) { price += item.Price; lsendInfo.Add(new SendmessagerecordCouponInfo() { CouponId = item.Id }); if ((item.Num - item.Himall_CouponRecord.Count()) < mUserMember.Count) { result = item.CouponName + "优惠券的数量不足,无法赠送"; break; } } var siteName = ServiceProvider.Instance <ISiteSettingService> .Create.GetSiteSettings().SiteName; if (result == "") { //发送优惠券 bool alTotal = false; for (int i = 0; i < mUserMember.Count; i++) { bool suTotal = false;//会员发送优惠券成功数 foreach (var item in model) { //判断会员领取限制,是否可领取此优惠券 bool isf = true; if (item.PerMax > 0) { int total = mCouponRecord.Where(p => p.UserId == mUserMember[i].Id && p.CouponId == item.Id).ToList().Count; if (item.PerMax <= total) { isf = false; } } if (isf) { suTotal = true; alTotal = true; CouponRecordInfo info = new CouponRecordInfo(); info.UserId = mUserMember[i].Id; info.UserName = mUserMember[i].UserName; info.ShopId = item.ShopId; info.CouponId = item.Id; var couponRecord = _iCouponService.AddCouponRecord(info); lsendSN.Add(new SendmessagerecordCouponSNInfo() { CouponSN = couponRecord.CounponSN }); } } if (suTotal) { MessageCouponInfo info = new MessageCouponInfo(); info.Money = price; info.SiteName = siteName; info.UserName = mUserMember[i].UserName; MessageApplication.SendMessageOnCouponSuccess(mUserMember[i].Id, info); } } Log.Debug("sendCoupon:" + alTotal); //查看成功发送会员数 if (alTotal) { //记录发送历史 var sendRecord = new Himall.Model.SendMessageRecordInfo { ContentType = WXMsgType.wxcard, MessageType = MsgType.Coupon, SendContent = "", SendState = 1, SendTime = DateTime.Now, ToUserLabel = labelinfos == null ? "" : labelinfos, Himall_SendmessagerecordCoupon = lsendInfo }; var record = WXMsgTemplateApplication.AddSendRecordItem(sendRecord); foreach (var item in lsendSN) { item.MessageId = record.Id; } _iCouponService.AddSendmessagerecordCouponSN(lsendSN); } else { result = "此标签下无符合领取此优惠券的会员"; } } } else { result = "该标签下无任何会员"; } } else { result = "请选择发送的优惠券"; } return(result); }