示例#1
0
        /// <summary>
        /// 发送微信模板消息
        /// </summary>
        /// <param name="param"></param>
        /// <param name="token"></param>
        /// <returns></returns>
        public static async Task <WeChatResponseDto> SendTemplateMsg(WeChatTemplateMsg param, string token)
        {
            var sendUrl = string.Format(WeChatApiUrl.SEND_TEMPLATE_MSG, token);
            //var tmplateMsg = new WeChatTemplateMsg
            //{
            //    Touser = "******",
            //    Template_Id = "yy6RiFVRRy2kVx064_A9-OSKKN8o8PwDV7k1j5whYRc",
            //    Data = new
            //    {
            //        //First = new { Value = "first", Color = "#173177" },
            //        ConsumerName = new { Value = "张美丽", Color = "#173177" },
            //        AppointmentDate = new { Value = "2019-05-01 09:00:00", Color = "#173177" },
            //        TherapistName = new { Value = "Amy", Color = "#173177" },
            //        ProjectName = new { Value = "玻尿酸", Color = "#173177" },
            //        Remark = new { Value = "请临近预约时间时主动联系客户", Color = "#173177" },
            //        Remark1 = new { Value = "11111", Color = "#173177" }
            //    }
            //};
            var p = JsonConvert.SerializeObject(param, Formatting.Indented,
                                                new JsonSerializerSettings {
                ContractResolver = new LowercaseContractResolver()
            });
            var response = await HttpClientHelper.HttpPostAsync <WeChatResponseDto>(sendUrl, p);

            return(response);
        }
示例#2
0
        /// <summary>
        /// 用户预约的服务完成后发送微信模板消息通知
        /// </summary>
        /// <param name="consumptionGuid"></param>
        private void NotifyUser(string consumptionGuid)
        {
            Task.Run(() =>
            {
                if (string.IsNullOrWhiteSpace(PlatformSettings.UserAppointmentCompletedNotificationTemplate))
                {
                    return;
                }

                var userOpenId        = "";
                string controllerName = ControllerContext.ActionDescriptor.ControllerName;
                string actionName     = ControllerContext.ActionDescriptor.ActionName;
                try
                {
                    var model     = new ConsumptionBiz().GetModel(consumptionGuid);
                    var userModel = new UserBiz().GetModelAsync(model.UserGuid).Result;
                    Logger.Debug($"NotifyUser-用户预约的服务已完成-用户openid-{userModel?.WechatOpenid}");
                    if (string.IsNullOrWhiteSpace(userModel?.WechatOpenid ?? ""))
                    {
                        return;
                    }
                    var merchantModel = new MerchantBiz().GetAsync(model.MerchantGuid).Result;
                    var projectModel  = new ProjectBiz().GetAsync(model.ProjectGuid).Result;
                    var resToken      = WeChartApi.GetAccessToken(PlatformSettings.CDClientAppId, PlatformSettings.CDClientAppSecret).Result;
                    Logger.Debug($"NotifyUser-用户预约的服务已完成-获取token-{JsonConvert.SerializeObject(resToken)}");
                    if (string.IsNullOrWhiteSpace(resToken.AccessToken))
                    {
                        Common.Helper.Logger.Error($"GD.API.Controllers.Consumer.{controllerName}.{actionName}  openId:[{userOpenId}] {Environment.NewLine} error:用户预约后发送模板消息通知云医执行端公众号-获取token失败。{resToken.Errmsg}");
                        return;
                    }
                    userOpenId    = userModel.WechatOpenid;
                    var clientMsg = new WeChatTemplateMsg
                    {
                        Touser      = userModel.WechatOpenid,
                        Template_Id = PlatformSettings.UserAppointmentNotificationTemplate,
                        Data        = new
                        {
                            First = new { Value = "【您预约的服务已完成】" },
                            //完成时间
                            Keyword1 = new { Value = $"{model.ConsumptionEndDate.Value.ToString("MM月dd日 HH:mm")}" },
                            //服务项目
                            Keyword2 = new { Value = projectModel?.ProjectName },
                            //服务门店
                            Keyword3 = new { Value = merchantModel.MerchantName },
                            //备注
                            Remark = new { Value = "如对我们服务有什么建议,请及时与我们联系" },
                        }
                    };
                    var clientTempMsgRes = WeChartApi.SendTemplateMsg(clientMsg, resToken.AccessToken);
                    Logger.Debug($"NotifyUser-用户预约的服务已完成-发送模板消息-{JsonConvert.SerializeObject(clientTempMsgRes)}");
                }
                catch (Exception ex)
                {
                    Logger.Error($"GD.API.Controllers.Consumer.{controllerName}.{actionName}  openId:[{userOpenId}] {Environment.NewLine} error:用户预约服务完成后发送模板消息通知云医用户端公众号端失败。{ex.Message}");
                }
            });
        }