Exemplo n.º 1
0
        /// <summary>
        /// 发送微信模板消息
        /// </summary>
        /// <param name="data"></param>
        /// <param name="openId"></param>
        public void GetSuccessSendWXMessage(BonusReceiveInfo data, string openId)
        {
            var member = DbFactory.Default.Get <MemberInfo>().Where(p => p.Id == data.UserId).FirstOrDefault();

            #region 发送模板消息
            //TODO:DZY[150914]此处功能需要整理,暂时只是实现功能
            var msgdata = new WX_MsgTemplateSendDataModel();
            var bouns   = Get(data.BonusId);
            msgdata.first.value    = "恭喜红包领取成功!";
            msgdata.first.color    = "#000000";
            msgdata.keyword1.value = data.Price.ToString() + "元红包";// user != null ? user.Nick : "微信会员";
            msgdata.keyword1.color = "#000000";
            msgdata.keyword2.value = data.ReceiveTime.Value.ToString("yyyy-MM-dd HH:mm");
            msgdata.keyword2.color = "#FF0000";
            msgdata.keyword3.value = bouns.EndTime.ToString("yyyy-MM-dd HH:mm");
            msgdata.keyword3.color = "#FF0000";
            msgdata.remark.value   = "红包已成功领取,请在规定时间内使用,过期作废哦!";
            msgdata.remark.color   = "#000000";

            //处理url
            //var _iwxtser = Mall.ServiceProvider.Instance<IWXMsgTemplateService>.Create;
            //string url = _iwxtser.GetMessageTemplateShowUrl(Mall.Core.Plugins.Message.MessageTypeEnum.ReceiveBonus);
            //var wxmsgtmpl = _iwxtser.GetWeiXinMsgTemplate(Mall.Core.Plugins.Message.MessageTypeEnum.ReceiveBonus);

            //var siteSetting = SiteSettingApplication.SiteSettings;
            //if (wxmsgtmpl != null)
            //{
            //    if (!string.IsNullOrWhiteSpace(wxmsgtmpl.TemplateId) && wxmsgtmpl.IsOpen)
            //    {
            //        _iwxtser.SendMessageByTemplate(Core.Plugins.Message.MessageTypeEnum.ReceiveBonus, data.UserId.HasValue ? data.UserId.Value : 0, msgdata, url, openId);
            //        //Mall.ServiceProvider.Instance<IWXApiService>.Create.SendMessageByTemplate(siteSetting.WeixinAppId, siteSetting.WeixinAppSecret, openId, wxmsgtmpl.TemplateId, "#000000", url, msgdata);
            //    }
            //}
            #endregion
        }
Exemplo n.º 2
0
        public void AddRemind(long flashSaleId, string openId)
        {
#if DEBUG
            Log.Info("限时购 - 添加订阅用户");
#endif
            if (DbFactory.Default.Get <FlashSaleRemindInfo>().Where(p => p.FlashSaleId == flashSaleId && p.OpenId == openId).Exist())
            {
                return;
            }

            FlashSaleRemindInfo model = new FlashSaleRemindInfo();
            model.FlashSaleId = flashSaleId;
            model.OpenId      = openId;
            model.RecordDate  = DateTime.Now;
            DbFactory.Default.Add(model);

            var    flashSale = DbFactory.Default.Get <FlashSaleInfo>().Where(p => p.Id == flashSaleId).FirstOrDefault();
            var    product   = ProductManagerApplication.GetProduct(flashSale.ProductId);
            string openid    = openId;
            var    msgdata   = new WX_MsgTemplateSendDataModel();
            msgdata.first.value    = "亲爱的用户,您已经成功设置限时购订阅提醒!";
            msgdata.first.color    = "#000000";
            msgdata.keyword1.value = product.ProductName;
            msgdata.keyword1.color = "#FF0000";
            msgdata.keyword2.value = flashSale.MinPrice.ToString();
            msgdata.keyword2.color = "#FF0000";
            msgdata.keyword3.value = model.RecordDate.ToString("yyyy-MM-dd HH:mm");
            msgdata.keyword3.color = "#000000";
            msgdata.remark.value   = "活动开始时将自动提醒您,请关注您的微信消息。";
            msgdata.remark.color   = "#000000";
            //处理url
            var _iwxtser = Mall.ServiceProvider.Instance <IWXMsgTemplateService> .Create;
            //string url = _iwxtser.GetMessageTemplateShowUrl(MessageTypeEnum.SubscribeLimitTimeBuy);
            //Task.Factory.StartNew(() => ServiceProvider.Instance<IWXMsgTemplateService>.Create.SendMessageByTemplate(MessageTypeEnum.SubscribeLimitTimeBuy, 0, msgdata, url, openid));
        }
Exemplo n.º 3
0
        /// <summary>
        /// 诊所有新预约单
        /// </summary>
        /// <param name="destination"></param>
        /// <param name="info"></param>
        public void SendMessageOnShopHasNewOrder(long shopId, MessageOrderInfo info)
        {
            #region 发送模板消息
            //诊所收信息
            var shopinfo = Context.ManagerInfo.FirstOrDefault(d => d.ShopId == shopId);
            if (shopinfo != null)
            {
                var sellerinfo = Context.UserMemberInfo.FirstOrDefault(d => d.UserName == shopinfo.UserName);
                if (sellerinfo != null)
                {
                    var msgdata = new WX_MsgTemplateSendDataModel();

#if DEBUG
                    Core.Log.Info("[模板消息]诊所新预约单用户编号:" + sellerinfo.Id.ToString());
#endif
                    msgdata                = new WX_MsgTemplateSendDataModel();
                    msgdata.first.value    = "您的诊所有新的预约单生成。";
                    msgdata.first.color    = "#000000";
                    msgdata.keyword1.value = info.ShopName;
                    msgdata.keyword1.color = "#000000";
                    msgdata.keyword2.value = info.ProductName.ToString() + "等...";
                    msgdata.keyword2.color = "#000000";
                    msgdata.keyword3.value = info.OrderTime.ToString();
                    msgdata.keyword3.color = "#000000";
                    msgdata.keyword4.value = info.TotalMoney.ToString();
                    msgdata.keyword4.color = "#FF0000";
                    msgdata.keyword5.value = "已付款(" + info.PaymentType + ")";
                    msgdata.keyword5.color = "#000000";
                    msgdata.remark.value   = "感谢您的使用,祝您生意兴荣。";
                    msgdata.remark.color   = "#000000";

#if DEBUG
                    Core.Log.Info("[模板消息]诊所新预约单开始前:" + sellerinfo.Id.ToString() + "_" + info.OrderId.ToString());
#endif
                    var _iwxtser = Himall.ServiceProvider.Instance <IWXMsgTemplateService> .Create;
                    _iwxtser.SendMessageByTemplate(MessageTypeEnum.ShopHaveNewOrder, sellerinfo.Id, msgdata);
                }
            }
            #endregion
        }
 /// <summary>
 /// 发送模板消息
 /// </summary>
 /// <param name="type"></param>
 /// <param name="userId">为0时使用openid</param>
 /// <param name="data">信息数据</param>
 /// <param name="url"></param>
 /// <param name="openid">与userid配合使用,userid为0时使用此字段</param>
 public static void SendMessageByTemplate(Himall.Core.Plugins.Message.MessageTypeEnum type, long userId, WX_MsgTemplateSendDataModel data, string url = "", string wxopenid = "")
 {
     _iWXMsgTemplateService.SendMessageByTemplate(type, userId, data, url, wxopenid);
 }
Exemplo n.º 5
0
        /// <summary>
        /// 发货通知
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="info"></param>
        public void SendMessageOnOrderShipping(long userId, MessageOrderInfo info)
        {
            var message = PluginsManagement.GetPlugins <IMessagePlugin>().ToList();

            foreach (var msg in message)
            {
                if (msg.Biz.GetStatus(MessageTypeEnum.OrderShipping) == StatusEnum.Open)
                {
                    string destination = GetDestination(userId, msg.PluginInfo.PluginId, MemberContactsInfo.UserTypes.General);
                    if (!msg.Biz.CheckDestination(destination))
                    {
                        throw new HimallException(msg.Biz.ShortName + "错误");
                    }
                    var content = msg.Biz.SendMessageOnOrderShipping(destination, info);
                    if (msg.Biz.EnableLog)
                    {
                        Context.MessageLog.Add(new MessageLog()
                        {
                            SendTime = DateTime.Now, ShopId = info.ShopId, MessageContent = content, TypeId = "短信"
                        });
                        Context.SaveChanges();
                    }
                }
            }
            #region 发送模板消息
            if (info.MsgOrderType == MessageOrderType.Normal)
            {
                var userinfo = Context.UserMemberInfo.FirstOrDefault(d => d.Id == userId);
                if (userinfo != null)
                {
                    var msgdata = new WX_MsgTemplateSendDataModel();
                    msgdata.first.value    = "嗖嗖,您的预约单已发货,正加速送到您的手上。";
                    msgdata.first.color    = "#000000";
                    msgdata.keyword1.value = info.ProductName + "等...";
                    msgdata.keyword1.color = "#000000";
                    msgdata.keyword2.value = info.ShippingCompany.ToString();
                    msgdata.keyword2.color = "#000000";
                    msgdata.keyword3.value = info.ShippingNumber.ToString();
                    msgdata.keyword3.color = "#FF0000";
                    msgdata.keyword4.value = info.ShipTo;
                    msgdata.keyword4.color = "#000000";
                    msgdata.remark.value   = "请您耐心等候";
                    msgdata.remark.color   = "#000000";
                    var    _iwxtser = Himall.ServiceProvider.Instance <IWXMsgTemplateService> .Create;
                    string url      = _iwxtser.GetMessageTemplateShowUrl(MessageTypeEnum.OrderShipping);
                    url = url.Replace("{id}", info.OrderId.ToString());
                    _iwxtser.SendMessageByTemplate(MessageTypeEnum.OrderShipping, userId, msgdata);
                }
            }
            #endregion
            #region 小程序模版
            else
            {
                var userinfo = Context.UserMemberInfo.FirstOrDefault(d => d.Id == userId);
                if (userinfo != null)
                {
                    var msgdata = new WX_MsgTemplateSendDataModel();
                    msgdata.keyword1.value = info.ShippingCompany; //快递公司
                    msgdata.keyword1.color = "#173177";
                    msgdata.keyword2.value = info.ShippingNumber;  //快递单号
                    msgdata.keyword2.color = "#173177";
                    msgdata.keyword3.value = info.OrderTime.ToString("yyyy-MM-dd HH:mm:ss");
                    msgdata.keyword3.color = "#173177";
                    msgdata.keyword4.value = info.ProductName + "等...";
                    msgdata.keyword4.color = "#173177";
                    msgdata.keyword5.value = info.ShipTo;
                    msgdata.keyword5.color = "#173177";

                    //处理url
                    var    _iwxtser   = Himall.ServiceProvider.Instance <IWXMsgTemplateService> .Create;
                    var    _iwxmember = Himall.ServiceProvider.Instance <IMemberService> .Create;
                    string page       = _iwxtser.GetWXAppletMessageTemplateShowUrl(MessageTypeEnum.OrderShipping);//小程序跳转地址
                    page = page.Replace("{id}", info.OrderId.ToString());

                    string openId = _iwxmember.GetMemberOpenIdInfoByuserIdAndType(userId, "WeiXinSmallProg").OpenId;//登录小程序的OpenId

                    string formid    = "";
                    var    formmodel = _iwxtser.GetWXAppletFromDataById(MessageTypeEnum.OrderPay, info.OrderId.ToString());
                    if (formmodel != null)
                    {
                        formid = formmodel.FormId;//根据OrderId获取FormId
                    }
                    _iwxtser.SendAppletMessageByTemplate(MessageTypeEnum.OrderShipping, userId, msgdata, page, openId, formid);
                }
            }
            #endregion
        }
Exemplo n.º 6
0
        /// <summary>
        /// 售后发货信息提醒
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="info"></param>
        /// <param name="refundid"></param>
        public void SendMessageOnRefundDeliver(long userId, MessageOrderInfo info, long refundid = 0)
        {
            var message = PluginsManagement.GetPlugins <IMessagePlugin>().ToList();

#if DEBUG
            Core.Log.Info("[发送消息]数据:" + Newtonsoft.Json.JsonConvert.SerializeObject(info) + "[售后发货]");
#endif
            foreach (var msg in message)
            {
                if (msg.Biz.GetStatus(MessageTypeEnum.RefundDeliver) == StatusEnum.Open)
                {
                    string destination = GetDestination(userId, msg.PluginInfo.PluginId, MemberContactsInfo.UserTypes.General);
                    if (!msg.Biz.CheckDestination(destination))
                    {
#if DEBUG
                        Core.Log.Info("[发送消息]失败:" + msg.PluginInfo.PluginId + "未发送," + destination + "格式检测未通过[售后发货]");
#endif
                        throw new HimallException(msg.Biz.ShortName + "错误:实例失败。");
                    }
                    try
                    {
                        var content = msg.Biz.SendMessageOnRefundDeliver(destination, info);
#if DEBUG
                        Core.Log.Info("[发送消息]发送结束:" + destination + " : " + msg.PluginInfo.PluginId + "[售后发货]");
#endif
                        if (msg.Biz.EnableLog)
                        {
                            Context.MessageLog.Add(new MessageLog()
                            {
                                SendTime = DateTime.Now, ShopId = info.ShopId, MessageContent = content, TypeId = "短信"
                            });
                            Context.SaveChanges();
                        }
                    }
                    catch (Exception ex)
                    {
                        Core.Log.Info("[发送消息]发送失败:" + msg.PluginInfo.PluginId + "[售后发货]", ex);
                    }
                }
            }

            #region 发送模板消息
            var userinfo = Context.UserMemberInfo.FirstOrDefault(d => d.Id == userId);
            if (userinfo != null)
            {
                var msgdata = new WX_MsgTemplateSendDataModel();
                msgdata.first.value    = "您的预约单(" + info.OrderId + ")售后已审核通过,请及时发货。";
                msgdata.first.color    = "#000000";
                msgdata.keyword1.value = "审核通过,请您发货";
                msgdata.keyword1.color = "#FF0000";
                msgdata.keyword2.value = info.ProductName + "";
                msgdata.keyword2.color = "#000000";
                msgdata.keyword3.value = info.RefundMoney.ToString("F2");
                msgdata.keyword3.color = "#000000";
                msgdata.keyword4.value = info.Remark;
                msgdata.keyword4.color = "#000000";
                msgdata.keyword5.value = info.RefundAuditTime.ToString("yyyy-MM-dd HH:mm:ss");
                msgdata.keyword5.color = "#000000";
                msgdata.remark.value   = "感谢您的使用!";
                msgdata.remark.color   = "#000000";
                var _iwxtser = Himall.ServiceProvider.Instance <IWXMsgTemplateService> .Create;
                if (refundid > 0)
                {
                    string url = _iwxtser.GetMessageTemplateShowUrl(MessageTypeEnum.RefundDeliver);
                    url = url.Replace("{id}", refundid.ToString());
                }
                _iwxtser.SendMessageByTemplate(MessageTypeEnum.RefundDeliver, userId, msgdata);
            }
            #endregion
        }
Exemplo n.º 7
0
        /// <summary>
        /// 退款/退货成功通知
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="info"></param>
        /// <param name="refundid"></param>
        public void SendMessageOnOrderRefund(long userId, MessageOrderInfo info, long refundid = 0)
        {
            var message = PluginsManagement.GetPlugins <IMessagePlugin>().ToList();

            foreach (var msg in message)
            {
                if (msg.Biz.GetStatus(MessageTypeEnum.OrderRefund) == StatusEnum.Open)
                {
                    string destination = GetDestination(userId, msg.PluginInfo.PluginId, MemberContactsInfo.UserTypes.General);
                    if (!msg.Biz.CheckDestination(destination))
                    {
                        throw new HimallException(msg.Biz.ShortName + "错误");
                    }
                    var content = msg.Biz.SendMessageOnOrderRefund(destination, info);
                    if (msg.Biz.EnableLog)
                    {
                        Context.MessageLog.Add(new MessageLog()
                        {
                            SendTime = DateTime.Now, ShopId = info.ShopId, MessageContent = content, TypeId = "短信"
                        });
                        Context.SaveChanges();
                    }
                }
            }

            #region 发送模板消息
            if (info.MsgOrderType == MessageOrderType.Normal)
            {
                var userinfo = Context.UserMemberInfo.FirstOrDefault(d => d.Id == userId);
                if (userinfo != null)
                {
                    var msgdata = new WX_MsgTemplateSendDataModel();
                    msgdata.first.value    = "您的预约单已经完成退款,¥" + info.RefundMoney.ToString("F2") + "已经退回您的付款账户(或预存款账户),请留意查收。";
                    msgdata.first.color    = "#000000";
                    msgdata.keyword1.value = "¥" + info.RefundMoney.ToString("F2");
                    msgdata.keyword1.color = "#FF0000";
                    msgdata.keyword2.value = info.ProductName + "";
                    msgdata.keyword2.color = "#000000";
                    msgdata.keyword3.value = info.OrderId.ToString();
                    msgdata.keyword3.color = "#000000";
                    //msgdata.remark.value = "请您耐心等候";
                    //msgdata.remark.color = "#000000";
                    var _iwxtser = Himall.ServiceProvider.Instance <IWXMsgTemplateService> .Create;
                    if (refundid > 0)
                    {
                        string url = _iwxtser.GetMessageTemplateShowUrl(MessageTypeEnum.OrderRefund);
                        url = url.Replace("{id}", refundid.ToString());
                    }
                    _iwxtser.SendMessageByTemplate(MessageTypeEnum.OrderRefund, userId, msgdata);
                }
            }
            else
            {
                //小程序发送
                string status = "退货/退款成功";
                string remark = "您的预约单已经完成退款,¥" + info.RefundMoney.ToString("F2") + "已经退回您的付款账户(或预存款账户),请留意查收.";

                var userinfo = Context.UserMemberInfo.FirstOrDefault(d => d.Id == userId);
                if (userinfo != null)
                {
                    var msgdata = new WX_MsgTemplateSendDataModel();
                    msgdata.keyword1.value = "¥" + info.RefundMoney.ToString("F2") + "元";
                    msgdata.keyword1.color = "#173177";
                    msgdata.keyword2.value = status;
                    msgdata.keyword2.color = "#173177";
                    msgdata.keyword3.value = remark;
                    msgdata.keyword3.color = "#173177";
                    msgdata.keyword4.value = info.RefundTime.ToString("yyyy-MM-dd HH:mm:ss");
                    msgdata.keyword4.color = "#173177";
                    msgdata.keyword5.value = info.OrderId.ToString();
                    msgdata.keyword5.color = "#173177";

                    //处理url
                    var    _iwxtser   = Himall.ServiceProvider.Instance <IWXMsgTemplateService> .Create;
                    var    _iwxmember = Himall.ServiceProvider.Instance <IMemberService> .Create;
                    string page       = _iwxtser.GetWXAppletMessageTemplateShowUrl(MessageTypeEnum.OrderRefund);//小程序跳转地址
                    page = page.Replace("{id}", info.OrderId.ToString());

                    string openId = _iwxmember.GetMemberOpenIdInfoByuserIdAndType(userId, "WeiXinSmallProg").OpenId;//登录小程序的OpenId

                    string formid    = "";
                    var    formmodel = _iwxtser.GetWXAppletFromDataById(MessageTypeEnum.OrderRefund, info.OrderId.ToString());
                    if (formmodel != null)
                    {
                        formid = formmodel.FormId;//根据OrderId获取FormId
                    }
                    _iwxtser.SendAppletMessageByTemplate(MessageTypeEnum.OrderRefund, userId, msgdata, page, openId, formid);
                }
            }
            #endregion
        }