/// <summary> /// 发送验证码,认证管理员 /// </summary> /// <param name="pluginId">信息类别</param> /// <param name="destination">联系号码</param> /// <param name="UserName">会员账号</param> /// <param name="SiteName">站点设置</param> /// <returns></returns> public static Himall.CommonModel.SendMemberCodeReturn SendMemberCode(string pluginId, string destination, string UserName, string SiteName) { //判断号码是否绑定 if (MessageApplication.GetMemberContactsInfo(pluginId, destination, Himall.Model.MemberContactsInfo.UserTypes.General) != null) { return(Himall.CommonModel.SendMemberCodeReturn.repeat); } else { var timeout = CacheKeyCollection.MemberPluginReBindTime(UserName, pluginId); //验证码超时时间 if (Core.Cache.Get(timeout) != null) { return(Himall.CommonModel.SendMemberCodeReturn.limit); } var checkCode = new Random().Next(10000, 99999); Log.Debug("Code:" + checkCode); var cacheTimeout = DateTime.Now.AddMinutes(15); Core.Cache.Insert(CacheKeyCollection.MemberPluginCheck(UserName, pluginId + destination), checkCode, cacheTimeout); var user = new MessageUserInfo() { UserName = UserName, SiteName = SiteName, CheckCode = checkCode.ToString() }; MessageApplication.SendMessageCode(destination, pluginId, user); Core.Cache.Insert(CacheKeyCollection.MemberPluginReBindTime(UserName, pluginId), "0", DateTime.Now.AddSeconds(110));//验证码超时时间 return(Himall.CommonModel.SendMemberCodeReturn.success); } }
/// <summary> /// 更新插件信息 /// </summary> /// <param name="model"></param> public static void UpdateMemberContacts(Himall.DTO.MemberContacts model) { Mapper.CreateMap <Himall.DTO.MemberContacts, Himall.Model.MemberContactsInfo>(); var mm = Mapper.Map <Himall.DTO.MemberContacts, Himall.Model.MemberContactsInfo>(model); MessageApplication.UpdateMemberContacts(mm); }
/// <summary> /// 根据插件类型和ID和目标获取信息 /// </summary> /// <param name="pluginId"></param> /// <param name="contact"></param> /// <param name="type"></param> /// <returns></returns> public static Himall.DTO.MemberContacts GetMemberContactsInfo(string pluginId, string contact, Himall.Model.MemberContactsInfo.UserTypes type) { var model = MessageApplication.GetMemberContactsInfo(pluginId, contact, type); Mapper.CreateMap <Himall.Model.MemberContactsInfo, Himall.DTO.MemberContacts>(); return(Mapper.Map <Himall.Model.MemberContactsInfo, Himall.DTO.MemberContacts>(model)); }
/// <summary> /// 同意销售员申请 /// </summary> /// <param name="memberIds"></param> /// <param name="remark"></param> public static void AgreeDistributor(IEnumerable <long> memberIds, string remark) { _iDistributionService.AgreeDistributor(memberIds, remark); //发送短信通知 Task.Factory.StartNew(() => { foreach (var item in memberIds) { var uobj = MemberApplication.GetMember(item); MessageApplication.SendMessageOnDistributorAuditSuccess(item, uobj.UserName); } }); }
/// <summary> /// 申请成为销售员 /// </summary> /// <param name="memberId"></param> /// <param name="shopLogo"></param> /// <param name="shopName"></param> /// <returns></returns> public static DistributorInfo ApplyDistributor(long memberId, string shopLogo, string shopName) { DistributorInfo result = _iDistributionService.GetDistributor(memberId); bool isadd = false; if (result == null) { result = new DistributorInfo(); isadd = true; result.ProductCount = 0; result.OrderCount = 0; result.SettlementAmount = 0; } result.MemberId = memberId; result.ShopLogo = shopLogo; result.IsShowShopLogo = true; result.ShopName = shopName; result.ApplyTime = DateTime.Now; result.DistributionStatus = (int)DistributorStatus.UnAudit; if (!SiteSettingApplication.SiteSettings.DistributorNeedAudit) { result.DistributionStatus = (int)DistributorStatus.Audited; } var gradeId = GetDistributorGrades().OrderByDescending(d => d.Quota).FirstOrDefault(d => d.Quota <= result.SettlementAmount)?.Id; result.GradeId = gradeId ?? 0; if (isadd) { _iDistributionService.AddDistributor(result); } else { _iDistributionService.UpdateDistributor(result); } var uobj = MemberApplication.GetMember(result.MemberId); //发送短信通知 Task.Factory.StartNew(() => { MessageApplication.SendMessageOnDistributorApply(result.MemberId, uobj.UserName); if (result.DistributionStatus == (int)DistributorStatus.Audited) { MessageApplication.SendMessageOnDistributorAuditSuccess(result.MemberId, uobj.UserName); } }); return(result); }
/// <summary> /// 验证码验证,认证管理员 /// </summary> /// <param name="pluginId">信息类别</param> /// <param name="code">验证码</param> /// <param name="destination">联系号码</param> /// <param name="userId">会员ID</param> /// <returns></returns> public static int CheckShopCode(string pluginId, string code, string destination, long userId) { var member = MemberApplication.GetMembers(userId); int result = 0; var cache = CacheKeyCollection.MemberPluginCheck(member.UserName, pluginId + destination); var cacheCode = Core.Cache.Get <string>(cache); if (cacheCode != null && cacheCode == code) { if (MessageApplication.GetMemberContactsInfo(pluginId, destination, Entities.MemberContactInfo.UserTypes.General) != null) { result = -1; } else { if (pluginId.ToLower().Contains("email")) { member.Email = destination; } else if (pluginId.ToLower().Contains("sms")) { member.CellPhone = destination; } MemberApplication.UpdateMember(member); MessageApplication.UpdateMemberContacts(new Entities.MemberContactInfo() { Contact = destination, ServiceProvider = pluginId, UserId = userId, UserType = Entities.MemberContactInfo.UserTypes.General }); Core.Cache.Remove(CacheKeyCollection.MemberPluginCheck(member.UserName, pluginId)); Core.Cache.Remove(CacheKeyCollection.Member(userId));//移除用户缓存 Core.Cache.Remove("Rebind" + userId); result = 1; } } return(result); }
/// <summary> /// 发送验证码,认证管理员 /// </summary> /// <param name="pluginId">信息类别</param> /// <param name="destination">联系号码</param> /// <param name="UserName">会员账号</param> /// <param name="SiteName">站点设置</param> /// <returns></returns> public static bool SendShopCode(string pluginId, string destination, string UserName, string SiteName) { var timeout = CacheKeyCollection.MemberPluginReBindTime(UserName, pluginId); //验证码超时时间 if (Core.Cache.Exists(timeout)) { return(false); } var checkCode = new Random().Next(10000, 99999); var cacheTimeout = DateTime.Now.AddMinutes(15); Core.Cache.Insert(CacheKeyCollection.MemberPluginCheck(UserName, pluginId + destination), checkCode.ToString(), cacheTimeout); var user = new MessageUserInfo() { UserName = UserName, SiteName = SiteName, CheckCode = checkCode.ToString() }; MessageApplication.SendMessageCode(destination, pluginId, user); Core.Cache.Insert(CacheKeyCollection.MemberPluginReBindTime(UserName, pluginId), "0", DateTime.Now.AddSeconds(110));//验证码超时时间 return(true); }
/// <summary> /// 获取会员认证情况 /// </summary> /// <param name="UserId">会员ID</param> /// <returns></returns> public static Himall.DTO.MemberAccountSafety GetMemberAccountSafety(long UserId) { Himall.DTO.MemberAccountSafety model = new Himall.DTO.MemberAccountSafety(); model.UserId = UserId; List <Himall.Model.MemberContactsInfo> lmMemberContactsInfo = MessageApplication.GetMemberContactsInfo(UserId); foreach (Himall.Model.MemberContactsInfo item in lmMemberContactsInfo) { if (item.ServiceProvider.Contains("SMS")) { model.Phone = item.Contact; model.BindPhone = true; } else if (item.ServiceProvider.Contains("Email")) { model.Email = item.Contact; model.BindEmail = true; } } return(model); }
/// <summary> /// (绑定银行卡)发送验证码 /// </summary> /// <param name="pluginId">信息类别</param> /// <param name="destination">联系号码</param> /// <param name="userName">会员账号</param> /// <param name="SiteName">站点设置</param> /// <returns></returns> public static bool BindBankSendCode(string pluginId, string destination, string userName, string SiteName) { var timeout = CacheKeyCollection.ShopPluginBindBankTime(userName, pluginId); //验证码超时时间 if (Core.Cache.Get(timeout) != null) { return(false); } var checkCode = new Random().Next(10000, 99999); // Log.Debug("Code:" + checkCode); var cacheTimeout = DateTime.Now.AddMinutes(15); Core.Cache.Insert(CacheKeyCollection.ShopPluginBindBank(userName, pluginId + destination), checkCode, cacheTimeout); var user = new MessageUserInfo() { UserName = userName, SiteName = SiteName, CheckCode = checkCode.ToString() }; MessageApplication.SendMessageCode(destination, pluginId, user); Core.Cache.Insert(CacheKeyCollection.ShopPluginBindBankTime(userName, pluginId), "0", DateTime.Now.AddSeconds(110));//验证码超时时间 return(true); }
/// <summary> /// 获取店铺认证情况 /// </summary> /// <param name="ShopId">店铺ID</param> /// <returns></returns> public static MemberAccountSafety GetShopAccountSafety(long ShopId) { MemberAccountSafety model = new MemberAccountSafety(); long UserId = Service.GetShopManagers(ShopId); model.UserId = UserId; List <Entities.MemberContactInfo> lmMemberContactsInfo = MessageApplication.GetMemberContactsInfo(UserId); foreach (var item in lmMemberContactsInfo) { if (item.ServiceProvider.Contains("SMS")) { model.Phone = item.Contact; model.BindPhone = true; } else if (item.ServiceProvider.Contains("Email")) { model.Email = item.Contact; model.BindEmail = true; } } return(model); }
/// <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); }
/// <summary> /// 提现申请 /// </summary> /// <param name="apply"></param> public static void ApplyWithdraw(DistributionApplyWithdraw apply) { if (!MemberApplication.VerificationPayPwd(apply.MemberId, apply.Password)) { throw new HimallException("交易密码错误"); } if (apply.Amount > SiteSettingApplication.SiteSettings.DistributorWithdrawMaxLimit) { throw new HimallException("超过最大提现额限"); } if (apply.Amount < SiteSettingApplication.SiteSettings.DistributorWithdrawMinLimit) { throw new HimallException("小于最低提现额限"); } var distributor = Service.GetDistributor(apply.MemberId); if (apply.Amount > distributor.Balance) { throw new HimallException("超过最多提现金额"); } var settings = SiteSettingApplication.SiteSettings; if (apply.Type == DistributionWithdrawType.Alipay) { if (!settings.DistributorWithdrawTypes.ToLower().Contains("alipay")) { throw new HimallException("暂不支持支付宝提现"); } if (string.IsNullOrEmpty(apply.WithdrawAccount)) { throw new HimallException("支付宝账户不可为空"); } if (string.IsNullOrEmpty(apply.WithdrawName)) { throw new HimallException("真实姓名不可为空"); } } else if (apply.Type == DistributionWithdrawType.WeChat) { if (!settings.DistributorWithdrawTypes.ToLower().Contains("wechat")) { throw new HimallException("暂不支持微信提现"); } if (string.IsNullOrEmpty(apply.WithdrawAccount)) { throw new HimallException("尚未绑定微信,请先绑定微信账户"); } } var info = new DistributionWithdrawInfo { Amount = apply.Amount, WithdrawType = apply.Type, MemberId = apply.MemberId, WithdrawAccount = apply.WithdrawAccount, WithdrawName = apply.WithdrawName }; Service.ApplyWithdraw(info); //发送消息 var member = MemberApplication.GetMember(apply.MemberId); var message = new MessageWithDrawInfo(); message.UserName = member != null ? member.UserName : ""; message.Amount = info.Amount; message.ApplyType = info.WithdrawType.GetHashCode(); message.ApplyTime = info.ApplyTime; message.Remark = info.Remark; message.SiteName = SiteSettingApplication.SiteSettings.SiteName; Task.Factory.StartNew(() => MessageApplication.SendMessageOnDistributionMemberWithDrawApply(apply.MemberId, message)); //预付款提现,自动审核 if (info.WithdrawType == DistributionWithdrawType.Capital) { AuditingWithdraw(info.Id, "System", "预存款提现,自动审核"); } }