示例#1
0
        /// <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);
        }
示例#3
0
        /// <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);
        }