小程序 · 2023年8月31日

微信开发之大转盘功能

微信营销是一种新型的营销模式,由于微信更重视用户之间的互动,故而这种营销推广不不能盲目地套用微博营销的单纯大量广告推送方式。这种方式在微信营销中的效果非常差,会令用户反感,继而取消去企业或商家的微信公众账号关注。对于企业来说,做微信推广重要的一个方面就是提高用户和公众账号之间的黏度,而微信大转盘就是其中最为常见的活动。

下面详细介绍:

一、使用

1. 新建一个大转盘的活动:

2. 奖项设置

3. 保存后,在微信里给公众号发一个“大转盘”的消息, 就会收到大转盘的内容

4. 点击进入大转盘活动,然后点击中间的 “点击抽奖”:

    

二、实现

1. 页面

1.1 前台代码
<script>
    window.location.href = "end.aspx?wid="+<%=wid%>+"&aid="+<%=aid%>+"&openid="+<%=openid%>+";";
</script>nbsp;html&gt;



    <meta>

    <meta>
    <meta>
    <meta>
    <meta>
    <meta>
    <meta>
    <meta>
    <meta>
    <title>幸运大转盘抽奖</title>
    <script></script>
    <script></script>
    <script></script>
    <link>
    <style>
        .activity-lottery-winning {
            background: url(images/beijing.gif) repeat scroll 0 0 #7E65AB;
            background-size: 120px auto;
            overflow: hidden;
        }
    </style>
    

登录后复制         

                                                   

                

                    

                        -.png”>                     

                                 

                    

                                             

                                          

                

                    

                        

恭喜你中奖了

                        

                            

你中了:

                            

兑奖SN码:

                            

                                                             

                            

                                                             

                                                         

                                                             

                                                                               

                    

                        

恭喜你中奖了

                        

                            

你中了:

                            

兑奖sn码为:

                            

你已经兑奖成功,本SN码自定作废!

                                                                               

                    

                        

奖项设置:

                        

                                                                                  

                                                      

                    

                        

活动说明:

                        

                            

                                本次活动每天可以转                                                              次,总共可以转                                                               次 你已经转了                                        次                             

                            

                                                             

                                                                                             <script> var thisurl= document.URL; var wid = <%=wid%>; var aid =<%=aid%>; var status = $(“#hidStatus”).val(); var showInfo = $(“#hidErrInfo”).val(); var openid =”<%=openid%>”; var jxname=””; var jpname=””; var cjtip=””; var zhuantimes=parseInt( $(“#zhuantimes”).text()); var zjl = false;//没中奖为false中奖为true <% if (isZhJing) { %> $(“#outercont”).hide(); $(“#result”).show(); <%} %> if (status == “2”) { $(“#outercont”).hide(); } else if(status==”100″) { $(“#outercont”).hide(); $(“#result”).hide(); $(“#zjl”).show(); } $(function () { window.requestAnimFrame = (function () { return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function (callback) { window.setTimeout(callback, 1000 / 60) } })(); var totalDeg = 360 * 3 + 0; var steps = []; var lostDeg = [360]; var prizeDeg = <%=shuzu%>; var prize, sncode; var count = 0; var now = 0; var a = 0.01; var outter, inner, timer, running = false; function countSteps() { var t = Math.sqrt(2 * totalDeg / a); var v = a * t; for (var i = 0; i < t; i++) { steps.push((2 * v * i – a * i * i) / 2) } steps.push(totalDeg) } function step() { // alert('rotate(' + steps[now++] + 'deg)'); outter.style.webkitTransform = 'rotate(' + steps[now++] + 'deg)'; outter.style.MozTransform = 'rotate(' + steps[now++] + 'deg)'; if (now < steps.length) { running = true; requestAnimFrame(step) } else { running = false; setTimeout(function () { $(“#zhuantimes”).text(++zhuantimes); if (zjl) { $(“#sncode”).text(sncode); $(“#jpsn”).text(sncode); $(“#jiangping”).text(jxname+” “+jpname); $(“#prizetype”).text(jxname+” “+jpname); $(“#zjl”).slideToggle(500); $(“#outercont”).slideUp(500) } else { alert(cjtip); } }, 200) } } function start(deg) { deg = deg || lostDeg[parseInt(lostDeg.length * Math.random())]; running = true; clearInterval(timer); totalDeg = 360 * 5 + deg; steps = []; now = 0; countSteps(); requestAnimFrame(step) } window.start = start; outter = document.getElementById('outer'); inner = document.getElementById('inner'); i = 10; $(“#inner”).click(function () { if (status == “2”) { alert(showInfo); } if (running) return; $.ajax({ url: “dzpAct.ashx”, dataType: “json”, data: { openid: openid, myact: “choujiang”, aid: aid, wid:wid, rad: Math.random() }, beforeSend: function () { running = true; timer = setInterval(function () { i += 5; outter.style.webkitTransform = 'rotate(' + i + 'deg)'; outter.style.MozTransform = 'rotate(' + i + 'deg)' }, 1) }, success: function (data) { if (data.error == “sys” ||data.error == “nostart” ) { cjtip=data.content; count = 100; clearInterval(timer); return } else if(data.error==”notimes”) { cjtip=data.content; start(); } else if (data.error==”succ”) { zjl=true; cjtip=data.content; prize = data.sortid; sncode = data.sn; jpname=data.jpname; jxname=data.jxname; $(“#hidAwardId”).val(data.uid); start(prizeDeg[data.sortid – 1]) } else { cjtip=data.content; start() } running = false; count++ }, error: function () { prize = null; start(); running = false; count++ }, timeout: 1000 }) }) }); $(“#save-btn”).bind(“click”, function () { var btn = $(this); var tel = $(“#tel”).val(); var pwd = “”; var hidAwardId = $(“#hidAwardId”).val(); if ($(“#parssword”).length>0 && $.trim($(“#parssword”).val()) == “”) { alert(“请输入兑奖密码!”); return } if ($.trim(tel) == “”) { alert(“请输入手机号!”); return } if($(“#parssword”).length>0){ pwd= $(“#parssword”).val(); } var rad = Math.random(); var submitData = { id: hidAwardId, aid: aid, pwd: pwd, snumber:$(“#sncode”).text(), tel: tel, rad: rad, openid:openid }; $.post('dzpAct.ashx?myact=update', submitData, function (data) { if (data.success == “1”) { alert(“提交成功!”); $(“#result”).slideToggle(500); $(“#zjl”).slideToggle(500); $(“#outercont”).slideUp(500); } else { alert(data.msg); } }, “json”) }); </script>         <script> document.addEventListener('WeixinJSBridgeReady', function onBridgeReady() { window.shareData = { “imgUrl”: “”, “timeLineLink”: thisurl + “&is_share=1”, “sendFriendLink”: thisurl + “&is_share=1”, “weiboLink”: thisurl + “&is_share=1”, “tTitle”: “<%=dzpAction.actName%>”, “tContent”: “请关注后,再来抽奖。<%=dzpAction.brief%>”, “fTitle”: “请关注后,再来抽奖。<%=dzpAction.actName%>”, “fContent”: “请关注后,再来抽奖。<%=dzpAction.brief%>”, “wContent”: “请关注后,再来抽奖。<%=dzpAction.brief%>” }; // 发送给好友 WeixinJSBridge.on('menu:share:appmessage', function (argv) { WeixinJSBridge.invoke('sendAppMessage', { “img_url”: window.shareData.imgUrl, “img_width”: “640”, “img_height”: “640”, “link”: window.shareData.sendFriendLink, “desc”: window.shareData.fContent, “title”: window.shareData.fTitle }, function (res) { _report('send_msg', res.err_msg); }) }); // 分享到朋友圈 WeixinJSBridge.on('menu:share:timeline', function (argv) { WeixinJSBridge.invoke('shareTimeline', { “img_url”: window.shareData.imgUrl, “img_width”: “640”, “img_height”: “640”, “link”: window.shareData.timeLineLink, “desc”: window.shareData.tContent, “title”: window.shareData.tTitle }, function (res) { _report('timeline', res.err_msg); }); }); // 分享到微博 WeixinJSBridge.on('menu:share:weibo', function (argv) { WeixinJSBridge.invoke('shareWeibo', { “content”: window.shareData.wContent, “url”: window.shareData.weiboLink, }, function (res) { _report('weibo', res.err_msg); }); }); }, false) </script>            

©微布斯科技提供 qq 121285904 www.webus.cn

2.1  后台代码
/// <summary>
      /// ErrLevel:100表示正确无误,1表示严重错误,2表示业务方面有问题;3直接跳转到结束页面
      /// </summary>
      public int ErrLevel = 100;
      public string ErrorInfo = "";
      public  Model.wx_dzpActionInfo dzpAction;
      public int picIndex = 0;
      public int aid = 0;
      public int wid = 0;
      public bool isZhJing = false;
      public string openid = "";
      public string shuzu = "";
      BLL.wx_dzpAwardUser ubll = new BLL.wx_dzpAwardUser();
      BLL.wx_dzpUsersTemp utbll = new BLL.wx_dzpUsersTemp();
      BLL.wx_dzpActionInfo actBll = new BLL.wx_dzpActionInfo();
      BLL.wx_dzpAwardItem itemBll = new BLL.wx_dzpAwardItem();
 
      protected void Page_Load(object sender, EventArgs e)
      {
          OnlyWeiXinLook();
          aid = MyCommFun.RequestInt("aid", 0);
          wid = MyCommFun.RequestInt("wid", 0);
          openid = MyCommFun.RequestOpenid();
 
          if (aid == 0 || wid == 0 || openid.Trim() == "")
          {
              ErrLevel = 1;
              ErrorInfo = "访问参数错误!";
              return;
          }
          BindData();
      }
 
 
      private void BindData()
      {
          dzpAction = actBll.GetModel(aid);
          IList<model.wx_dzpawarditem> itemlist = itemBll.GetModelList("actId=" + aid);
          if (dzpAction == null || itemlist == null || itemlist.Count " + item.jxName + ":" + item.jpName + "  数量:" + item.jpNum + "");
              ttJpNum += item.jpRealNum.Value;
              picIndex++;
              if (i  0)
          {
              litPwd.Text = "  <p>  <input></p>";
          }
          if (dzpAction.beginDate &gt; DateTime.Now)
          {
              hidStatus.Value = "-2";
              ErrorInfo = hidErrInfo.Value = "活动尚未开始";
          }
          int hasCjTimes = utbll.getCJCiShu(aid, openid);//返回该用户的抽奖次数
          this.litHasUsedTimes.Text = hasCjTimes.ToString();
          int dayMaxTimes = dzpAction.dayMaxTimes == null ? 0 : dzpAction.dayMaxTimes.Value;
          int perMaxTimes = dzpAction.personMaxTimes == null ? 0 : dzpAction.personMaxTimes.Value;
          //判断是否中奖了
          Model.wx_dzpAwardUser award = ubll.getZJinfoByOpenid(aid, openid);
          if (award != null &amp;&amp; award.id&gt;0)
          {    //您中奖了
              if (award.uTel != null &amp;&amp; award.uTel.ToString().Trim() != "")
              {//已经中奖,并且提交了
                  litJp.Text = "[" + award.jxName + "] " + award.jpName;
                  litSNM.Text = award.sn;
                  isZhJing = true;
              }
              else
              { //已经中奖,但是未提交
                  hidStatus.Value = "100";
                  litzjlJP.Text = "[" + award.jxName + "] " + award.jpName;
                  litzjlSN.Text = award.sn;
                  hidAwardId.Value = award.id.ToString();
                  litJp.Text = "[" + award.jxName + "] " + award.jpName;
                  litSNM.Text = award.sn;
              }
          }
          else
          {
              //判断每人最大抽奖次数,是否超过了
              if (hasCjTimes &gt;= dzpAction.personMaxTimes)
              {
                hidStatus.Value = "2";
                //litOtherTip.Text = "<p>您已经抽了" + hasCjTimes + "次了。</p>";
              }
              if (isTodayOverSum(dayMaxTimes))
              {
                  hidStatus.Value = "2";
                 // litOtherTip.Text = "<p>每人每天只有" + dayMaxTimes.ToString() + "次抽奖机会,您已经使用完了。</p>";
              }
          }
      }
      #region 方法
      /// <summary>
      /// 判断今天是否已经超出抽奖次数
      /// todayTTTimes:能抽奖的总次数
      /// </summary>
      /// <param>
      /// <param>每天的抽奖总次数
      /// <returns></returns>
      private bool isTodayOverSum( int todayTTTimes)
      {
          if (todayTTTimes ='" + todaybegin + "' and createDate= todayTTTimes)
          {
              return true;
          }
          else
          {
              
              return false;
          }
 
      }
 
      #endregion</model.wx_dzpawarditem>

登录后复制

2. 实现逻辑

public class dzpAct : IHttpHandler
    {
        BLL.wx_dzpActionInfo actbll = new BLL.wx_dzpActionInfo();
        BLL.wx_dzpAwardUser ubll = new BLL.wx_dzpAwardUser();
        BLL.wx_dzpUsersTemp utbll = new BLL.wx_dzpUsersTemp();
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/json";
            string _action = MyCommFun.QueryString("myact");
            int aid = MyCommFun.RequestInt("aid");
            string openid = MyCommFun.RequestOpenid();  //得到微信用户的openid
            if (_action == "choujiang")
            {
                Dictionary<string> jsonDict = new Dictionary<string>();
                try
                {
                    //抽奖
                    Model.wx_dzpActionInfo dzpAction = new Model.wx_dzpActionInfo();
                  
                    BLL.wx_dzpAwardItem itemBll = new BLL.wx_dzpAwardItem();
                    #region 判断
                    int wid = MyCommFun.RequestInt("wid");
                    if (aid == 0 || wid == 0 || openid.Trim() == "")
                    {
                        jsonDict.Add("error", "sys");
                        jsonDict.Add("content", "参数错误!");
                        context.Response.Write(MyCommFun.getJsonStr(jsonDict));
                        return;
                    }
                    dzpAction = actbll.GetModel(aid);
                    if (dzpAction == null)
                    {
                        jsonDict.Add("error", "sys");
                        jsonDict.Add("content", "参数错误!");
                        context.Response.Write(MyCommFun.getJsonStr(jsonDict));
                        return;
                    }
                    if (dzpAction.endDate  DateTime.Now)
                    {
                        //活动未开始
                        //非活动期间
                        jsonDict.Add("error", "nostart");
                        jsonDict.Add("content", "活动未开始");
                        context.Response.Write(MyCommFun.getJsonStr(jsonDict));
                        return;
                    }
                    int dayMaxTimes = dzpAction.dayMaxTimes == null ? 0 : dzpAction.dayMaxTimes.Value;
                    int perMaxTimes = dzpAction.personMaxTimes == null ? 0 : dzpAction.personMaxTimes.Value;
                    //判断每人最大抽奖次数,是否超过了
                    if (personCJTimes(openid, aid) &gt;= dzpAction.personMaxTimes)
                    {
                        jsonDict.Add("error", "notimes");
                        jsonDict.Add("content", "您已抽过奖了,欢迎下次再来!");
                        context.Response.Write(MyCommFun.getJsonStr(jsonDict));
                        return;
                    }
                    if (isTodayOverSum(aid, openid, dayMaxTimes))
                    {
                        jsonDict.Add("error", "notimes");
                        jsonDict.Add("content", "每人每天只有" + dayMaxTimes.ToString() + "次抽奖机会。");
                        context.Response.Write(MyCommFun.getJsonStr(jsonDict));
                        return;
                    }
                    Model.wx_dzpAwardUser award = ubll.getZJinfoByOpenid(aid, openid);
                    if (award != null)
                    {
                        //您中奖了
                        jsonDict.Add("error", "notimes");
                        jsonDict.Add("content", "您中奖了,欢迎下次再来!");
                        context.Response.Write(MyCommFun.getJsonStr(jsonDict));
                        return;
                    }
                    #endregion
                    #region 计算中奖信息
                    /// 处理是否中奖
                    /// hidStatus 状态为-1:不能抽奖,直接跳转到end.aspx页面;
                    /// 0:抽奖次数超过设置的最高次数;
                    /// 1:还可以继续抽奖;
                    /// 2:中奖了;
                    List<model.wx_dzpawarditem> itemlist = itemBll.GetModelList("actId=" + aid);//该活动的所有奖项信息
                    int ttJpNum = 0;
                    for (int i = 0; i  auserlist = ubll.getHasZJList(aid);//已经中奖的人列表
                    int ZhongJiangNum = 0;
                    if (auserlist != null)
                    {
                        ZhongJiangNum = auserlist.Count; //已经中奖的人数
                    }
                    int syZjNum = ttJpNum - ZhongJiangNum; //剩余的奖品数量
                    if (syZjNum 0) &amp;&amp;( !actbll.ExistsPwd(aid, pwd)))
                    {
                        context.Response.Write("{"msg":"商家兑换密码错误!!","success":"0"}");
                        return;
                    }
                    BLL.wx_dzpAwardUser ubll = new BLL.wx_dzpAwardUser();
                    Model.wx_dzpAwardUser model = ubll.GetModel(id);
                    if (model == null)
                    {
                        context.Response.Write("{"msg":"提交出现异常2!!","success":"0"}");
                        return;
                    }
                    model.uTel = tel;
                    if (pwd.Length &gt; 0)
                    {
                        model.hasLingQu = true;
                    }
                    else
                    {
                        model.hasLingQu = false;
                    }
                    ubll.Update(model);
 
                    context.Response.Write("{"msg":"提交成功!","success":"1"}");
                    return;
                    #endregion
                }
                catch
                {
                    context.Response.Write("{"msg":"提交出现异常!!","success":"0"}");
 
                    return;
                }
            }
        }
        #region 方法
        /// <summary>
        /// 取中奖的项目
        /// </summary>
        /// <param>所有的奖品信息
        /// <param>已经中奖的列表
        /// <returns></returns>
        private Model.wx_dzpAwardItem getZJItem(IList<model.wx_dzpawarditem> itemlist, IList<model.wx_dzpawarduser> haszjlist)
        {
            IList<model.wx_dzpawarditem> zjItemlist = new List<model.wx_dzpawarditem>();//剩余奖品列表
            Model.wx_dzpAwardItem tmpItem = new Model.wx_dzpAwardItem();
            Model.wx_dzpAwardItem stmpItem = new Model.wx_dzpAwardItem();
            IList<model.wx_dzpawarduser> thiszjRs;
            for (int i = 0; i ();
                int tmpSYNum = 0;
                if (thiszjRs != null)
                {
                    tmpSYNum = MyCommFun.Obj2Int(tmpItem.jpRealNum) - thiszjRs.Count;
                }
                if (tmpSYNum 
        /// 判断该用户的抽奖次数
        /// 
        /// <param>
        /// <returns></returns>
        private int personCJTimes(string openid, int aid)
        {
            int times = 0;
            times = utbll.GetRecordCount("actId=" + aid + " and openid='" + openid + "'");
            return times;
        }
        /// <summary>
        /// 判断今天是否已经超出抽奖次数
        /// todayTTTimes:能抽奖的总次数
        /// </summary>
        /// <param>
        /// <param>每天的抽奖总次数
        /// <returns></returns>
        private bool isTodayOverSum(int aid, string openid, int todayTTTimes)
        {
            if (todayTTTimes ='" + todaybegin + "' and createDate= todayTTTimes)
            {
                return true;
            }
            else
            {
                model.times += 1;
                utbll.Update(model);
                return false;
            }
        }
        /// <summary>
        /// 返回中奖序列号
        /// </summary>
        /// <param>
        /// <returns></returns>
        public string Get_snumber(int aid)
        {
            Random rd = new Random((int)DateTime.Now.Ticks);
            int radNum = rd.Next(0, 9);//从0到9里随机出一个值
 
            return "SNdzp" + aid + "_" + MyCommFun.ConvertDateTimeInt(DateTime.Now) + radNum;
        }
        #endregion
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }</model.wx_dzpawarduser></model.wx_dzpawarditem></model.wx_dzpawarditem></model.wx_dzpawarduser></model.wx_dzpawarditem></model.wx_dzpawarditem></string></string>

登录后复制

 【相关推荐】

1.

2.

以上就是微信开发之大转盘功能的详细内容,更多请关注GTHOST其它相关文章!