• \r\n    \r\n        \r\n\r\n            \r\n            \r\n            \r\n            \r\n                \r\n                    \r\n                        \"WeChatが開発したビッグカルーセル機能\"-.png\">\r\n                    <\/p>\r\n                <\/p>\r\n                \r\n                    \r\n                        \"WeChatが開発したビッグカルーセル機能\"\r\n                    <\/p>\r\n                <\/p>\r\n            <\/p>\r\n            \r\n                \r\n                    \r\n                        恭喜你中獎了<\/span><\/p>\r\n                        \r\n\r\n                            

    你中了:<\/asp:Literal><\/span><\/p>\r\n                            

    兌獎SN碼:<\/asp:Literal><\/span><\/p>\r\n                            \r\n                                <\/asp:Literal>\r\n                            <\/p>\r\n                            

    \r\n                                \r\n                            <\/p>\r\n\r\n                            <\/asp:Literal>\r\n                            

    \r\n                                \r\n                            <\/p>\r\n                        <\/p>\r\n                    <\/p>\r\n                <\/p>\r\n                \r\n                    \r\n                        恭喜你中獎了<\/span><\/p>\r\n                        \r\n                            

    你中了:<\/asp:Literal><\/span><\/p>\r\n                            

    兌獎sn碼為:<\/asp:Literal><\/span><\/p>\r\n                            你已經(jīng)兌獎成功,本SN碼自定作廢!<\/p>\r\n                        <\/p>\r\n\r\n\r\n                    <\/p>\r\n                <\/p>\r\n\r\n\r\n\r\n                \r\n                    \r\n                        獎項設置:<\/span><\/p>\r\n\r\n                        \r\n                            <\/asp:Literal>\r\n                            <\/asp:Literal>\r\n                        <\/p>\r\n                    <\/p>\r\n                <\/p>\r\n                \r\n                    \r\n                        活動說明:<\/p>\r\n                        \r\n                            \r\n                                本次活動每天可以轉\r\n                            <\/asp:Literal>\r\n                                次,總共可以轉 \r\n                            <\/asp:Literal>\r\n                                次 你已經(jīng)轉了 \r\n                                    <\/asp:Literal><\/span> 次\r\n                            <\/p>\r\n                            

    \r\n                                <\/asp:Literal>\r\n                            <\/p>\r\n                        <\/p>\r\n                    <\/p>\r\n                <\/p>\r\n            <\/p>\r\n\r\n        <\/p>\r\n\r\n\r\n        

    国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

    目次
    1. 新しい大きなカルーセルアクティビティを作成します:
    %%PRE_BLOCK_1%%
    2. 実裝ロジック
    【関連推奨事項】
    ホームページ WeChat アプレット WeChatの開発 WeChatが開発したビッグカルーセル機能

    WeChatが開発したビッグカルーセル機能

    May 08, 2017 am 11:13 AM

    WeChat マーケティングは新しいマーケティング モデルです。WeChat はユーザー間のインタラクションに重點を置いているため、この種のマーケティング プロモーションでは Weibo マーケティングの単純なマス広告プッシュ手法を盲目的に適用することはできません。この方法は WeChat マーケティングでは非常に効果がなく、ユーザーに嫌悪感を與え、企業(yè)や販売者の WeChat 公開アカウントをキャンセルしてしまいます。企業(yè)にとって、WeChat プロモーションの重要な側面は、ユーザーとパブリック アカウント間の粘度を高めることであり、WeChat カルーセルは最も一般的なアクティビティの 1 つです。

    以下は詳細です:

    1. 新しい大きなカルーセルアクティビティを作成します:

    WeChatが開発したビッグカルーセル機能2. 保存後、大きなルーレットを送信します。 " メッセージが表示されたら、Big Roulette のコンテンツを受け取ります

    WeChatが開発したビッグカルーセル機能4. クリックして Big Roulette イベントに入り、中央にある「Click to Draw」をクリックします:

    WeChatが開発したビッグカルーセル機能

    2. 実裝

    1. ページ

    WeChatが開発したビッグカルーセル機能1.1 フロントエンドコードWeChatが開発したビッグカルーセル機能

    <% if (ErrLevel < 100)
       {
           Response.Write(ErrorInfo);
       }
       else if (ErrLevel == 101)
       {  //活動已結束,跳轉到結束頁面
    %>
    <script type="text/javascript">
        window.location.href = "end.aspx?wid="+<%=wid%>+"&aid="+<%=aid%>+"&openid="+<%=openid%>+";";
    </script>
    <%
       }
       else
       {  %>
    <!DOCTYPE html>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head1" runat="server">
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    
        <meta name="viewport" content="width=device-width,height=device-height,inital-scale=1.0,maximum-scale=1.0,user-scalable=no;">
        <meta name="apple-mobile-web-app-capable" content="yes">
        <meta name="apple-mobile-web-app-status-bar-style" content="black">
        <meta name="format-detection" content="telephone=no">
        <meta name="description" content="微信">
        <meta http-equiv="Pragma" content="no-cache">
        <meta http-equiv="Cache-Control" content="no-cache">
        <meta http-equiv="Expires" content="0">
        <title>幸運大轉盤抽獎</title>
        <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js" type="text/javascript"></script>
        <script type="text/javascript" src="../../scripts/jquery/jquery.query.js"></script>
        <script src="../../scripts/jquery/alert.js" type="text/javascript"></script>
        <link href="css/activity-style2.css" rel="stylesheet" type="text/css">
        <style>
            .activity-lottery-winning {
                background: url(WeChatが開発したビッグカルーセル機能s/beijing.gif) repeat scroll 0 0 #7E65AB;
                background-size: 120px auto;
                overflow: hidden;
            }
        </style>
    </head>
    <body class="activity-lottery-winning">
        <form id="form1" runat="server">
            <p class="main">
    
                <asp:HiddenField ID="hidStatus" runat="server" Value="" EnableViewState="false" />
                <asp:HiddenField ID="hidErrInfo" runat="server" EnableViewState="false" />
                <asp:HiddenField ID="hidAwardId" runat="server" EnableViewState="false" Value="0" />
                <p id="outercont">
                    <p id="outer-cont">
                        <p id="outer">
                            <img  src="/static/imghw/default1.png"  data-src="WeChatが開発したビッグカルーセル機能s/zp<%=picIndex % alt="WeChatが開発したビッグカルーセル機能" >-.png"  class="lazy"  >
                        </p>
                    </p>
                    <p id="inner-cont">
                        <p id="inner">
                            <img  src="/static/imghw/default1.png"  data-src="WeChatが開発したビッグカルーセル機能s/activity-lottery-2.png"  class="lazy"   alt="WeChatが開発したビッグカルーセル機能" >
                        </p>
                    </p>
                </p>
                <p class="content">
                    <p class="boxcontent boxwhite" id="zjl" style="display: none">
                        <p class="box">
                            <p class="title-orange"><span>恭喜你中獎了</span></p>
                            <p class="Detail">
    
                                <p>你中了:<span class="red" id="prizetype"><asp:Literal ID="litzjlJP" runat="server" EnableViewState="false" Text=""></asp:Literal></span></p>
                                <p>兌獎SN碼:<span class="red" id="sncode"><asp:Literal ID="litzjlSN" runat="server" EnableViewState="false" Text=""></asp:Literal></span></p>
                                <p class="red">
                                    <asp:Literal ID="litContentInfo" runat="server" EnableViewState="false"></asp:Literal>
                                </p>
                                <p>
                                    <input name="" class="px" id="tel" value="" type="text" placeholder="用戶請輸入您的手機號">
                                </p>
    
                                <asp:Literal ID="litPwd" runat="server" EnableViewState="false" Text=""></asp:Literal>
                                <p>
                                    <input class="pxbtn" name="提 交" id="save-btn" type="button" value="用戶提交">
                                </p>
                            </p>
                        </p>
                    </p>
                    <p class="boxcontent boxwhite" id="result" style="display: none;">
                        <p class="box">
                            <p class="title-orange"><span>恭喜你中獎了</span></p>
                            <p class="Detail">
                                <p>你中了:<span class="red" id="jiangping"><asp:Literal ID="litJp" runat="server" EnableViewState="false" Text=""></asp:Literal></span></p>
                                <p>兌獎sn碼為:<span class="red" id="jpsn"><asp:Literal ID="litSNM" runat="server" EnableViewState="false"></asp:Literal></span></p>
                                <p class="red">你已經(jīng)兌獎成功,本SN碼自定作廢!</p>
                            </p>
    
    
                        </p>
                    </p>
    
    
    
                    <p class="boxcontent boxwhite">
                        <p class="box">
                            <p class="title-red"><span>獎項設置:</span></p>
    
                            <p class="Detail">
                                <asp:Literal ID="litOtherTip" runat="server" EnableViewState="false"></asp:Literal>
                                <asp:Literal ID="litJiangXing" runat="server" EnableViewState="false"></asp:Literal>
                            </p>
                        </p>
                    </p>
                    <p class="boxcontent boxwhite">
                        <p class="box">
                            <p class="title-red">活動說明:</p>
                            <p class="Detail">
                                <p class="red">
                                    本次活動每天可以轉
                                <asp:Literal ID="litdaysTimes" runat="server" EnableViewState="false"></asp:Literal>
                                    次,總共可以轉 
                                <asp:Literal ID="littotTimes" runat="server" EnableViewState="false"></asp:Literal>
                                    次 你已經(jīng)轉了 <span id="zhuantimes">
                                        <asp:Literal ID="litHasUsedTimes" runat="server" EnableViewState="false"></asp:Literal></span> 次
                                </p>
                                <p>
                                    <asp:Literal ID="litRemark" runat="server" EnableViewState="false"></asp:Literal>
                                </p>
                            </p>
                        </p>
                    </p>
                </p>
    
            </p>
    
    
            <script type="text/javascript">
                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(&#39;rotate(&#39; + steps[now++] + &#39;deg)&#39;);
                        outter.style.webkitTransform = &#39;rotate(&#39; + steps[now++] + &#39;deg)&#39;;
                        outter.style.MozTransform = &#39;rotate(&#39; + steps[now++] + &#39;deg)&#39;;
    
                        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(&#39;outer&#39;);
                    inner = document.getElementById(&#39;inner&#39;);
                    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 = &#39;rotate(&#39; + i + &#39;deg)&#39;;
                                    outter.style.MozTransform = &#39;rotate(&#39; + i + &#39;deg)&#39;
                                },
                                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(&#39;dzpAct.ashx?myact=update&#39;, submitData,
                   function (data) {
                       if (data.success == "1") {
                           alert("提交成功!");
                           $("#result").slideToggle(500);
                           $("#zjl").slideToggle(500);
                           $("#outercont").slideUp(500);
    
                       } else {
                           alert(data.msg);
                       }
                   },
                   "json") 
    
                });
    
               
            </script>
            <script type="text/javascript">
                document.addEventListener(&#39;WeixinJSBridgeReady&#39;, 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%>"
                    };
                    // 發(fā)送給好友
                    WeixinJSBridge.on(&#39;menu:share:appmessage&#39;, function (argv) {
                        WeixinJSBridge.invoke(&#39;sendAppMessage&#39;, {
                            "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(&#39;send_msg&#39;, res.err_msg);
                        })
                    });
    
                    // 分享到朋友圈
                    WeixinJSBridge.on(&#39;menu:share:timeline&#39;, function (argv) {
                        WeixinJSBridge.invoke(&#39;shareTimeline&#39;, {
                            "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(&#39;timeline&#39;, res.err_msg);
                        });
                    });
    
                    // 分享到微博
                    WeixinJSBridge.on(&#39;menu:share:weibo&#39;, function (argv) {
                        WeixinJSBridge.invoke(&#39;shareWeibo&#39;, {
                            "content": window.shareData.wContent,
                            "url": window.shareData.weiboLink,
                        }, function (res) {
                            _report(&#39;weibo&#39;, res.err_msg);
                        });
                    });
                }, false)
            </script>
    
    
        </form>
          <p style="display: none">?微布斯科技提供 qq 121285904 www.webus.cn</p>
    
    </body>
    </html>
    <% }%>

    2.1 バックエンドコード

    /// <summary>
          /// ErrLevel:100表示正確無誤,1表示嚴重錯誤,2表示業(yè)務方面有問題;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 = "訪問參數(shù)錯誤!";
                  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 <= 0)
              {
                  ErrLevel = 1;
                  ErrorInfo = "未獲得到數(shù)據(jù)";
                  return;
              }
              this.Title = dzpAction.actName;
     
              if (dzpAction.endDate <= DateTime.Now)
              {   //說明活動已經(jīng)結束
                  ErrLevel = 101;
                  ErrorInfo = "活動已結束";
                  return;
              }
     
              StringBuilder sb = new StringBuilder("");
              Model.wx_dzpAwardItem item = new Model.wx_dzpAwardItem();
              int ttJpNum = 0;
              shuzu = "[";
              for (int i = 0; i < itemlist.Count; i++)
              {
                  item = itemlist[i];
                  sb.Append("<p>" + item.jxName + ":" + item.jpName + "  數(shù)量:" + item.jpNum + "</p>");
                  ttJpNum += item.jpRealNum.Value;
                  picIndex++;
                  if (i < (itemlist.Count - 1))
                  {
                      shuzu += item.jiaodu_min + ",";
                  }
                  else
                  {
                      shuzu += item.jiaodu_min;
                  }
              }
              shuzu += "]";
              litJiangXing.Text = sb.ToString();
              litRemark.Text = dzpAction.brief;
              litContentInfo.Text = dzpAction.contractInfo;
     
              littotTimes.Text = dzpAction.personMaxTimes == null ? "0" : dzpAction.personMaxTimes.Value.ToString();
              litdaysTimes.Text = dzpAction.dayMaxTimes == null ? "0" : dzpAction.dayMaxTimes.Value.ToString();
              if (dzpAction.djPwd.Trim().Length > 0)
              {
                  litPwd.Text = "  <p>  <input name=\"\" class=\"px\" id=\"parssword\" type=\"password\" value=\"\" placeholder=\"商家輸入兌獎密碼\"></p>";
              }
              if (dzpAction.beginDate > DateTime.Now)
              {
                  hidStatus.Value = "-2";
                  ErrorInfo = hidErrInfo.Value = "活動尚未開始";
              }
              int hasCjTimes = utbll.getCJCiShu(aid, openid);//返回該用戶的抽獎次數(shù)
              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 && award.id>0)
              {    //您中獎了
                  if (award.uTel != null && award.uTel.ToString().Trim() != "")
                  {//已經(jīng)中獎,并且提交了
                      litJp.Text = "[" + award.jxName + "] " + award.jpName;
                      litSNM.Text = award.sn;
                      isZhJing = true;
                  }
                  else
                  { //已經(jīng)中獎,但是未提交
                      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
              {
                  //判斷每人最大抽獎次數(shù),是否超過了
                  if (hasCjTimes >= dzpAction.personMaxTimes)
                  {
                    hidStatus.Value = "2";
                    //litOtherTip.Text = "<p class=&#39;red&#39;>您已經(jīng)抽了" + hasCjTimes + "次了。</p>";
                  }
                  if (isTodayOverSum(dayMaxTimes))
                  {
                      hidStatus.Value = "2";
                     // litOtherTip.Text = "<p class=&#39;red&#39;>每人每天只有" + dayMaxTimes.ToString() + "次抽獎機會,您已經(jīng)使用完了。</p>";
                  }
              }
          }
          #region 方法
          /// <summary>
          /// 判斷今天是否已經(jīng)超出抽獎次數(shù)
          /// todayTTTimes:能抽獎的總次數(shù)
          /// </summary>
          /// <param name="openid"></param>
          /// <param name="todayTTTimes">每天的抽獎總次數(shù)</param>
          /// <returns></returns>
          private bool isTodayOverSum( int todayTTTimes)
          {
              if (todayTTTimes <= 0)
              {
                  return true;
              }
     
              DateTime todaybegin = DateTime.Parse(DateTime.Now.ToShortDateString());
              DateTime mingtianBegin = todaybegin.AddDays(1);
              if (!utbll.ExistsOpenid(" actId=" + aid + "  and  openid=&#39;" + openid + "&#39; and  createDate>=&#39;" + todaybegin + "&#39; and createDate<&#39;" + mingtianBegin + "&#39;"))
              {
                  return false;
     
              }
     
              Model.wx_dzpUsersTemp model = utbll.getModelByAidOpenid(aid, openid);
              if (model.times >= todayTTTimes)
              {
                  return true;
              }
              else
              {
                  
                  return false;
              }
     
          }
     
          #endregion

    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, string> jsonDict = new Dictionary<string, 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", "參數(shù)錯誤!");
                            context.Response.Write(MyCommFun.getJsonStr(jsonDict));
                            return;
                        }
                        dzpAction = actbll.GetModel(aid);
                        if (dzpAction == null)
                        {
                            jsonDict.Add("error", "sys");
                            jsonDict.Add("content", "參數(shù)錯誤!");
                            context.Response.Write(MyCommFun.getJsonStr(jsonDict));
                            return;
                        }
                        if (dzpAction.endDate <= DateTime.Now)
                        { //說明活動已經(jīng)結束
                            //非活動期間
                            jsonDict.Add("error", "end");
                            jsonDict.Add("content", "活動已結束");
                            context.Response.Write(MyCommFun.getJsonStr(jsonDict));
                            return;
                        }
                        else if (dzpAction.beginDate > 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;
                        //判斷每人最大抽獎次數(shù),是否超過了
                        if (personCJTimes(openid, aid) >= 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 狀態(tài)為-1:不能抽獎,直接跳轉到end.aspx頁面;
                        /// 0:抽獎次數(shù)超過設置的最高次數(shù);
                        /// 1:還可以繼續(xù)抽獎;
                        /// 2:中獎了;
                        List<Model.wx_dzpAwardItem> itemlist = itemBll.GetModelList("actId=" + aid);//該活動的所有獎項信息
                        int ttJpNum = 0;
                        for (int i = 0; i < itemlist.Count; i++)
                        {
                            ttJpNum += itemlist[i].jpRealNum.Value;
                        }
                        IList<Model.wx_dzpAwardUser> auserlist = ubll.getHasZJList(aid);//已經(jīng)中獎的人列表
                        int ZhongJiangNum = 0;
                        if (auserlist != null)
                        {
                            ZhongJiangNum = auserlist.Count; //已經(jīng)中獎的人數(shù)
                        }
                        int syZjNum = ttJpNum - ZhongJiangNum; //剩余的獎品數(shù)量
                        if (syZjNum <= 0)
                        {  //說明已經(jīng)沒有獎品了
                            jsonDict.Add("error", "-1");
                            jsonDict.Add("content", dzpAction.cfcjhf);
                            context.Response.Write(MyCommFun.getJsonStr(jsonDict));
                            return;
                        }
                        dzpAction.personNum = MyCommFun.Obj2Int(dzpAction.personNum, 1);
                        dzpAction.personMaxTimes = MyCommFun.Obj2Int(dzpAction.personMaxTimes, 1);
                        int fenmo = dzpAction.personNum.Value * dzpAction.personMaxTimes.Value;
                        Random rd = new Random((int)DateTime.Now.Ticks);
                        int radNum = rd.Next(0, fenmo);//從0到fenmo里隨機出一個值
                        if (radNum < syZjNum)
                        {
                            //中獎了,再從剩余獎品里抽取一個獎品
                            Model.wx_dzpAwardItem dajiang = getZJItem(itemlist, auserlist);
                            if (dajiang != null)
                            {
                                //這是中的中獎了
                                string snumber = Get_snumber(aid);
                                int uId = ubll.Add(aid, "", "", openid, dajiang.jxName, dajiang.jpName, snumber);
     
                                jsonDict.Add("error", "succ");
                                jsonDict.Add("content", "恭喜你中獎了!");
                                jsonDict.Add("sortid", dajiang.sort_id.Value.ToString());
                                jsonDict.Add("jxname", dajiang.jxName);
                                jsonDict.Add("jpname", dajiang.jpName);
                                jsonDict.Add("uid", uId.ToString());
                                jsonDict.Add("sn", snumber);
                                context.Response.Write(MyCommFun.getJsonStr(jsonDict));
                                return;
                            }
                            else
                            {
                                //獎品已經(jīng)全部中完了
                                jsonDict.Add("error", "-1");
                                jsonDict.Add("content", dzpAction.cfcjhf);
                                context.Response.Write(MyCommFun.getJsonStr(jsonDict));
                                return;
                            }
                        }
                        else
                        {
                            //這個條件說明:未中獎
                            //拋出未中獎的數(shù)據(jù)
     
                            jsonDict.Add("error", "-1");
                            jsonDict.Add("content", dzpAction.cfcjhf);
                            context.Response.Write(MyCommFun.getJsonStr(jsonDict));
                            return;
                        }
                        #endregion
                    }
                    catch (Exception ex)
                    {
                        jsonDict.Add("error", "sys");
                        jsonDict.Add("content", "計算抽獎出現(xiàn)未知錯誤,請聯(lián)系管理員!");
                        context.Response.Write(MyCommFun.getJsonStr(jsonDict));
                        return;
                    }
                }
                else if (_action == "update")
                {
                    try
                    {
                        #region 提交手機
                        /// 提交手機號碼
                        string tel = MyCommFun.QueryString("tel");
                        string pwd = MyCommFun.QueryString("pwd");
                        string snumber = MyCommFun.QueryString("snumber");
                        int id = MyCommFun.RequestInt("id");
     
                        if (aid == 0 || id == 0 || snumber == "" || tel == "")
                        {
                            context.Response.Write("{\"msg\":\"提交出現(xiàn)異常?。",\"success\":\"0\"}");
                            return;
                        }
     
                        if ((pwd.Length>0) &&( !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\":\"提交出現(xiàn)異常2!!\",\"success\":\"0\"}");
                            return;
                        }
                        model.uTel = tel;
                        if (pwd.Length > 0)
                        {
                            model.hasLingQu = true;
                        }
                        else
                        {
                            model.hasLingQu = false;
                        }
                        ubll.Update(model);
     
                        context.Response.Write("{\"msg\":\"提交成功!\",\"success\":\"1\"}");
                        return;
                        #endregion
                    }
                    catch
                    {
                        context.Response.Write("{\"msg\":\"提交出現(xiàn)異常?。",\"success\":\"0\"}");
     
                        return;
                    }
                }
            }
            #region 方法
            /// <summary>
            /// 取中獎的項目
            /// </summary>
            /// <param name="itemlist">所有的獎品信息</param>
            /// <param name="haszjlist">已經(jīng)中獎的列表</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 < itemlist.Count; i++)
                {
                    tmpItem = itemlist[i];
                    thiszjRs = (from user in haszjlist where user.jpName == tmpItem.jpName && user.jxName == tmpItem.jxName select user).ToArray<Model.wx_dzpAwardUser>();
                    int tmpSYNum = 0;
                    if (thiszjRs != null)
                    {
                        tmpSYNum = MyCommFun.Obj2Int(tmpItem.jpRealNum) - thiszjRs.Count;
                    }
                    if (tmpSYNum <= 0)
                    {
                        continue;
                    }
                    for (int j = 0; j < tmpSYNum; j++)
                    {
                        stmpItem = new Model.wx_dzpAwardItem();
                        stmpItem.jpName = tmpItem.jpName;
                        stmpItem.jxName = tmpItem.jxName;
                        stmpItem.sort_id = tmpItem.sort_id;
                        zjItemlist.Add(stmpItem);
                    }
                }
                Random rd = new Random((int)DateTime.Now.Ticks);
                int jpIndex = rd.Next(0, zjItemlist.Count);//從0到zjItemlist.Count里隨機出一個值
                return zjItemlist[jpIndex];
            }
            /// <summary>
            /// 判斷該用戶的抽獎次數(shù)
            /// </summary>
            /// <param name="openid"></param>
            /// <returns></returns>
            private int personCJTimes(string openid, int aid)
            {
                int times = 0;
                times = utbll.GetRecordCount("actId=" + aid + " and openid=&#39;" + openid + "&#39;");
                return times;
            }
            /// <summary>
            /// 判斷今天是否已經(jīng)超出抽獎次數(shù)
            /// todayTTTimes:能抽獎的總次數(shù)
            /// </summary>
            /// <param name="openid"></param>
            /// <param name="todayTTTimes">每天的抽獎總次數(shù)</param>
            /// <returns></returns>
            private bool isTodayOverSum(int aid, string openid, int todayTTTimes)
            {
                if (todayTTTimes <= 0)
                {
                    return true;
                }
                Model.wx_dzpUsersTemp model = new Model.wx_dzpUsersTemp();
                model.openid = openid;
                DateTime todaybegin = DateTime.Parse(DateTime.Now.ToShortDateString());
                DateTime mingtianBegin = todaybegin.AddDays(1);
                if (!utbll.ExistsOpenid(" actId=" + aid + "  and  openid=&#39;" + openid + "&#39; and  createDate>=&#39;" + todaybegin + "&#39; and createDate<&#39;" + mingtianBegin + "&#39;"))
                { //第一次,插入
                    model.times = 1;
                    model.createDate = DateTime.Now;
                    model.openid = openid;
                    model.actId = aid;
                    utbll.Add(model);
                    return false;
                }
                model = utbll.getModelByAidOpenid(aid, openid);
                if (model.times >= todayTTTimes)
                {
                    return true;
                }
                else
                {
                    model.times += 1;
                    utbll.Update(model);
                    return false;
                }
            }
            /// <summary>
            /// 返回中獎序列號
            /// </summary>
            /// <param name="id"></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;
                }
            }
        }

    【関連推奨事項】
    1.

    WeChat パブリックアカウントプラットフォームのソースコードダウンロード

    2.

    アライグマがシステムのソースコードを注文する

    以上がWeChatが開発したビッグカルーセル機能の詳細內(nèi)容です。詳細については、PHP 中國語 Web サイトの他の関連記事を參照してください。

    このウェブサイトの聲明
    この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當する法的責任を負いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

    ホットAIツール

    Undress AI Tool

    Undress AI Tool

    脫衣畫像を無料で

    Undresser.AI Undress

    Undresser.AI Undress

    リアルなヌード寫真を作成する AI 搭載アプリ

    AI Clothes Remover

    AI Clothes Remover

    寫真から衣服を削除するオンライン AI ツール。

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    Video Face Swap

    Video Face Swap

    完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

    ホットツール

    メモ帳++7.3.1

    メモ帳++7.3.1

    使いやすく無料のコードエディター

    SublimeText3 中國語版

    SublimeText3 中國語版

    中國語版、とても使いやすい

    ゼンドスタジオ 13.0.1

    ゼンドスタジオ 13.0.1

    強力な PHP 統(tǒng)合開発環(huán)境

    ドリームウィーバー CS6

    ドリームウィーバー CS6

    ビジュアル Web 開発ツール

    SublimeText3 Mac版

    SublimeText3 Mac版

    神レベルのコード編集ソフト(SublimeText3)

    PHP WeChat 開発: メッセージの暗號化と復號化を実裝する方法 PHP WeChat 開発: メッセージの暗號化と復號化を実裝する方法 May 13, 2023 am 11:40 AM

    PHP は、Web 開発およびサーバーサイド プログラミング、特に WeChat 開発で広く使用されているオープン ソースのスクリプト言語です?,F(xiàn)在、ますます多くの企業(yè)や開発者が WeChat 開発に PHP を使用し始めています。これは、PHP が本當に學びやすく、使いやすい開発言語となっているためです。 WeChat の開発では、メッセージの暗號化と復號化はデータのセキュリティに関わるため、非常に重要な問題となります。暗號化と復號化の方法を持たないメッセージの場合、ハッカーは簡単にデータを入手でき、ユーザーに脅威を與える可能性があります。

    H5PHP テクノロジーは、大規(guī)模なカルーセル寶くじアクティビティの創(chuàng)造性を支援します H5PHP テクノロジーは、大規(guī)模なカルーセル寶くじアクティビティの創(chuàng)造性を支援します Mar 04, 2024 pm 12:06 PM

    今日のデジタル時代では、インタラクティブなマーケティング活動が企業(yè)のマーケティングで広く使用されており、その中でユーザーの注目と參加を集めるために大きなホイールドローがよく使用されます。 H5 と PHP テクノロジーを組み合わせることで、寶くじの楽しさとリアルタイム性が強化されるだけでなく、ユーザーの參加と雙方向性も向上し、企業(yè)ブランド マーケティングの機會がさらに広がります。この記事では、H5 と PHP テクノロジーを使用してクリエイティブな大輪寶くじを作成する方法と、具體的なコード例を紹介します。 1. まず、抽選イベントのフロントエンドデザイン、

    PHP WeChat開発:投票機能の実裝方法 PHP WeChat開発:投票機能の実裝方法 May 14, 2023 am 11:21 AM

    WeChat パブリック アカウントの開発では、投票機能がよく使用されます。投票機能はユーザーが気軽に交流に參加できるほか、イベントの開催や意見調査などにも重要なツールです。この記事では、PHPを使用してWeChatの投票機能を実裝する方法を紹介します。 WeChat公式アカウントの認証を取得する まずはWeChat公式アカウントの認証を取得する必要があります。 WeChatパブリックプラットフォームでは、WeChatパブリックアカウント、公式アカウント、およびパブリックアカウントに対応するトークンのAPIアドレスを設定する必要があります。 PHP言語を使用した開発の過程では、WeChatが公式に提供するPHを使用する必要があります

    PHP を使用して WeChat マス メッセージング ツールを開発する PHP を使用して WeChat マス メッセージング ツールを開発する May 13, 2023 pm 05:00 PM

    WeChat の人気に伴い、マーケティング ツールとして WeChat を使用し始める企業(yè)が増えています。 WeChat グループ メッセージング機能は、企業(yè)が WeChat マーケティングを行うための重要な手段の 1 つです。ただし、手動送信のみに頼ると、マーケターにとって非常に時間と労力がかかる作業(yè)になります。したがって、WeChat マス メッセージング ツールを開発することが特に重要です。この記事では、PHP を使用して WeChat マス メッセージング ツールを開発する方法を紹介します。 1. 準備作業(yè) WeChat マス メッセージング ツールを開発するには、次の技術點を習得する必要があります。 PHP WeChat パブリック プラットフォーム開発の基礎知識 開発ツール: Sub

    PHP WeChat 開発: カスタマー サービスのチャット ウィンドウ管理を実裝する方法 PHP WeChat 開発: カスタマー サービスのチャット ウィンドウ管理を実裝する方法 May 13, 2023 pm 05:51 PM

    WeChat は現(xiàn)在、世界最大のユーザーベースを持つソーシャル プラットフォームの 1 つであり、モバイル インターネットの普及に伴い、ますます多くの企業(yè)が WeChat マーケティングの重要性を認識し始めています。 WeChat マーケティングを実施する場合、顧客サービスは重要な部分です。カスタマー サービスのチャット ウィンドウをより適切に管理するために、WeChat 開発に PHP 言語を使用できます。 1. PHP WeChat 開発の概要 PHP は、Web 開発の分野で広く使用されているオープン ソースのサーバー側スクリプト言語です。 WeChat パブリック プラットフォームが提供する開発インターフェイスと組み合わせると、PHP 言語を使用して WeChat を実行できます。

    PHP WeChat 開発: ユーザータグ管理を実裝する方法 PHP WeChat 開発: ユーザータグ管理を実裝する方法 May 13, 2023 pm 04:31 PM

    WeChat パブリック アカウントの開発において、ユーザー タグ管理は非常に重要な機能であり、開発者がユーザーをよりよく理解し、管理できるようになります。この記事では、PHPを使用してWeChatのユーザータグ管理機能を実裝する方法を紹介します。 1. WeChat ユーザーの openid を取得する WeChat ユーザータグ管理機能を使用する前に、まずユーザーの openid を取得する必要があります。 WeChat パブリック アカウントの開発では、ユーザーの承認を通じて openid を取得するのが一般的です。ユーザー認証が完了したら、次のコードを通じてユーザーを取得できます。

    PHP WeChat 開発: グループ メッセージ送信レコードの実裝方法 PHP WeChat 開発: グループ メッセージ送信レコードの実裝方法 May 13, 2023 pm 04:31 PM

    WeChat が人々の生活においてますます重要なコミュニケーション ツールになるにつれ、その機敏なメッセージング機能はすぐに多くの企業(yè)や個人に支持されるようになりました。企業(yè)にとって、WeChat をマーケティング プラットフォームとして開発することがトレンドになっており、WeChat 開発の重要性が徐々に顕著になってきています。その中でも、グループ送信機能はさらに広く使用されているため、PHP プログラマとしてグループ メッセージ送信レコードを実裝するにはどうすればよいでしょうか?以下に簡単に紹介します。 1. WeChat パブリック アカウントに関する開発知識を理解する グループ メッセージ送信レコードの実裝方法を理解する前に、

    PHP を使用して WeChat パブリック アカウント開発を実裝する手順 PHP を使用して WeChat パブリック アカウント開発を実裝する手順 Jun 27, 2023 pm 12:26 PM

    PHP を使用して WeChat 公開アカウントを開発する方法 WeChat 公開アカウントは、多くの企業(yè)にとってプロモーションと交流のための重要なチャネルとなっており、一般的に使用される Web 言語として PHP を使用して WeChat 公開アカウントを開発することもできます。この記事では、PHP を使用して WeChat 公開アカウントを開発する具體的な手順を紹介します。ステップ1:WeChat公式アカウントの開発者アカウントを取得する WeChat公式アカウントの開発を開始する前に、WeChat公式アカウントの開発者アカウントを申請する必要があります。具體的な登録プロセスについては、WeChat パブリック プラットフォームの公式 Web サイトを參照してください。

    See all articles