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

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

May 08, 2017 am 11:13 AM

WeChat マーケティングは新しいマーケティング モデルです。WeChat はユーザー間のインタラクションに重点を置いているため、この種のマーケティング プロモーションでは Weibo マーケティングの単純なマス広告プッシュ手法を盲目的に適用することはできません。この方法は WeChat マーケティングでは非常に効果がなく、ユーザーに嫌悪感を与え、企業や販売者の WeChat 公開アカウントをキャンセルしてしまいます。企業にとって、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">你已经兑奖成功,本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>
                                次 你已经转了 <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%>"
                };
                // 发送给好友
                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表示业务方面有问题;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 <= 0)
          {
              ErrLevel = 1;
              ErrorInfo = "未获得到数据";
              return;
          }
          this.Title = dzpAction.actName;
 
          if (dzpAction.endDate <= DateTime.Now)
          {   //说明活动已经结束
              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 + "  数量:" + 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);//返回该用户的抽奖次数
          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() != "")
              {//已经中奖,并且提交了
                  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 >= dzpAction.personMaxTimes)
              {
                hidStatus.Value = "2";
                //litOtherTip.Text = "<p class=&#39;red&#39;>您已经抽了" + hasCjTimes + "次了。</p>";
              }
              if (isTodayOverSum(dayMaxTimes))
              {
                  hidStatus.Value = "2";
                 // litOtherTip.Text = "<p class=&#39;red&#39;>每人每天只有" + dayMaxTimes.ToString() + "次抽奖机会,您已经使用完了。</p>";
              }
          }
      }
      #region 方法
      /// <summary>
      /// 判断今天是否已经超出抽奖次数
      /// todayTTTimes:能抽奖的总次数
      /// </summary>
      /// <param name="openid"></param>
      /// <param name="todayTTTimes">每天的抽奖总次数</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", "参数错误!");
                        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", "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;
                    //判断每人最大抽奖次数,是否超过了
                    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 状态为-1:不能抽奖,直接跳转到end.aspx页面;
                    /// 0:抽奖次数超过设置的最高次数;
                    /// 1:还可以继续抽奖;
                    /// 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);//已经中奖的人列表
                    int ZhongJiangNum = 0;
                    if (auserlist != null)
                    {
                        ZhongJiangNum = auserlist.Count; //已经中奖的人数
                    }
                    int syZjNum = ttJpNum - ZhongJiangNum; //剩余的奖品数量
                    if (syZjNum <= 0)
                    {  //说明已经没有奖品了
                        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
                        {
                            //奖品已经全部中完了
                            jsonDict.Add("error", "-1");
                            jsonDict.Add("content", dzpAction.cfcjhf);
                            context.Response.Write(MyCommFun.getJsonStr(jsonDict));
                            return;
                        }
                    }
                    else
                    {
                        //这个条件说明:未中奖
                        //抛出未中奖的数据
 
                        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", "计算抽奖出现未知错误,请联系管理员!");
                    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\":\"提交出现异常!!\",\"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\":\"提交出现异常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\":\"提交出现异常!!\",\"success\":\"0\"}");
 
                    return;
                }
            }
        }
        #region 方法
        /// <summary>
        /// 取中奖的项目
        /// </summary>
        /// <param name="itemlist">所有的奖品信息</param>
        /// <param name="haszjlist">已经中奖的列表</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>
        /// 判断该用户的抽奖次数
        /// </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>
        /// 判断今天是否已经超出抽奖次数
        /// todayTTTimes:能抽奖的总次数
        /// </summary>
        /// <param name="openid"></param>
        /// <param name="todayTTTimes">每天的抽奖总次数</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が開発したビッグカルーセル機能の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

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

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

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

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

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

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

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

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

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

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 09:31 PM

モバイル インターネットの普及に伴い、WeChat をソーシャル ソフトウェアとして使用する人が増えており、WeChat のオープン プラットフォームは開発者に多くの機会をもたらしています。近年、人工知能技術の発展に伴い、音声認識技術は携帯端末開発において徐々に人気のある技術の一つになってきています。 WeChat 開発では、音声認識をどのように実装するかが多くの開発者にとって懸念事項となっています。この記事では、PHP を使用して音声認識機能を実装する WeChat アプリケーションを開発する方法を紹介します。 1. 音声認識の原理 音声認識の実装方法を紹介する前に、まず言語を理解しましょう

See all articles