/// <summary> /// 活动开始,关注公众号全部用户发消息 /// </summary> /// <returns></returns> public async Task AllSendTemplateMessage() { try { var accessToken = await AccessTokenContainer.TryGetAccessTokenAsync(mpAppId, mpAppSecret); var result = await Senparc.Weixin.MP.AdvancedAPIs.UserApi.GetAsync(accessToken, null); if (result.total > 0) { var msgData = new MPTemplateData("您好,您预约的实现吧!愿望君!活动已经开启,快来实现你的愿望吧~", "实现吧!2021愿望君!", $"{DateTime.Now.ToString("yyyy年MM月dd日")}", "快来前往月野兔星球小程序~", "点击即可立即进入哦~"); var miniProgram = new TemplateModel_MiniProgram() { appid = appId, pagepath = "pages/index/index" }; // 因为是同一个公众号,根据环境变量处理测试数据 if (Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") == "Development") { var betaList = new List <string>() { "oHxnJwqEKSsUnMq8vpbwJQ3k5jYQ", //fly "oHxnJwuuMR3eZ04mhVcNLfY3Mouo", //LIsa "oHxnJwvwhG-hTcdfzWySqRkaqYkY", //鑫鑫 "oHxnJwl_xD09u_2hZB-Y5FiMrYWQ", //C. "oHxnJwpAl4RU7OLy6q1ZhQKbMbNo", //烟花 "oHxnJwqXoOrJw2hI3Z3FHZB1H0VM", //太阳女神 }; foreach (var openid in result.data.openid) { if (betaList.Where(e => e.Contains(openid)).Any()) // 测试白名单 { await Senparc.Weixin.MP.AdvancedAPIs.TemplateApi.SendTemplateMessageAsync(accessToken, openid, MPTemplateID.mpStart, null, msgData, miniProgram); } } } else { foreach (var openid in result.data.openid) { await Senparc.Weixin.MP.AdvancedAPIs.TemplateApi.SendTemplateMessageAsync(accessToken, openid, MPTemplateID.mpStart, null, msgData, miniProgram); } } } } catch (Exception ex) { Console.WriteLine(string.Concat("AllSendTemplateMessage:", ex.Message)); } }
private async Task <int> UniformSendMPTemplateAsync(int makeWishId, string mPTemplateID, int memberId = 0) { int resCode = 0; string pagepath = mPTemplateID == MPTemplateID.mpReserve ? string.Empty : $"pages/detail/index?wishId={makeWishId}"; string tOpenId = string.Empty; try { MPTemplateData tData = null; (tData, tOpenId) = await _activityApplication.GetWishOpenId(makeWishId, mPTemplateID, memberId); if (tData != null) { var accessToken = await AccessTokenContainer.TryGetAccessTokenAsync(appId, appSecret); var msgData = new UniformSendData { touser = tOpenId, mp_template_msg = new Mp_Template_Msg { appid = mpAppId, template_id = mPTemplateID, miniprogram = new Miniprogram { appid = appId, pagepath = pagepath, }, data = tData } }; var result = await TemplateApi.UniformSendAsync(accessToken, msgData); resCode = 1; if (mPTemplateID == MPTemplateID.mpReserve) //预约提醒只发送一次,发送成功更新 { await _activityApplication.SaveMemberIsSend(memberId); } } } catch (Exception ex) { Console.WriteLine(ex.Message); Console.WriteLine(string.Concat("mPTemplateID:", mPTemplateID, "----memberID:", memberId, "----openId:", tOpenId)); } return(resCode); }
/// <summary> /// 获取愿望名称,openid,nick_name /// </summary> /// <param name="WishId"></param> /// <returns></returns> public async Task <(MPTemplateData, string)> GetWishOpenId(int makeWishId, string mPTemplateID, int memberId) { MPTemplateData data = null; string strSql = $@"SELECT bas.wish_name, bas.wish_unit, mak.user_count, bas.rules, mem.openId, mem.nick_name, mem.is_send FROM t_make_wish mak LEFT JOIN t_wish_base bas ON bas.wish_no = mak.wish_no LEFT JOIN t_member mem ON mem.id = mak.member_id WHERE mak.id = {makeWishId};" ; var(wishName, wishUnit, userCount, rulesStr, openId, nickName, isSend) = await _jiakeRepository.SQLQueryFirstOrDefaultAsync <(string, string, int, string, string, string, int)>(strSql); if (!string.IsNullOrEmpty(wishUnit) && wishUnit != "--") { var rules = Newtonsoft.Json.JsonConvert.DeserializeObject <IEnumerable <WishRuleItem> >(rulesStr); var r = rules.Where(e => e.n == userCount).FirstOrDefault()?.r; if (r != null) { wishName = string.Concat(wishName, r, wishUnit); } } if (mPTemplateID == MPTemplateID.mpBoost) //差2人达成提醒 { data = new MPTemplateData( "距离愿望达成仅差一步之遥,再去邀请好友帮你增加愿望值吧~", $"{wishName}", "还差2位好友助力", $"{DateTime.Now.ToString("yyyy年MM月dd日")}", "点击查看愿望详情哦~" ); } if (mPTemplateID == MPTemplateID.mpArrive) //愿望达成提醒 { data = new MPTemplateData( "您的愿望已经达成啦,快来把它实现吧!", $"{wishName}", $"{DateTime.Now.ToString("yyyy年MM月dd日")}", "", "点击实现愿望哟~" ); } if (mPTemplateID == MPTemplateID.mpReserve && isSend == 0) //预约愿望提醒 { strSql = $@"SELECT openId FROM t_member WHERE id={memberId};"; openId = await _jiakeRepository.SQLQueryFirstOrDefaultAsync <string>(strSql); if (!string.IsNullOrEmpty(openId)) { data = new MPTemplateData( "亲爱的,恭喜您成功预约活动,活动开始后不要忘记参加哦!", $"预约成功", $"实现吧!2021愿望君!", "许下你的愿望,兔兔帮你实现!感谢您的报名!", "" ); } } return(data, openId); }