微信开发之大转盘功能一、使用二、实现

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

下面详细介绍:

一、使用

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

image

2. 奖项设置

image

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

Screenshot_2015-06-07-21-50-15

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

Screenshot_2015-06-08-22-16-09

Screenshot_2015-06-08-22-20-43

二、实现

1. 页面

1.1 前台代码
<% 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(images/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=images/zp<%=picIndex %>-.png>
                    </p>
                </p>
                <p id=inner-cont>
                    <p id=inner>
                        <img src=images/activity-lottery-2.png>
                    </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('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 type=text/javascript>
            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>


    </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='red'>您已经抽了 + hasCjTimes + 次了。</p>;
              }
              if (isTodayOverSum(dayMaxTimes))
              {
                  hidStatus.Value = 2;
                 // litOtherTip.Text = <p class='red'>每人每天只有 + 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=' + openid + ' and  createDate>=' + todaybegin + ' and createDate<' + mingtianBegin + '))
          {
              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=' + openid + ');
            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=' + openid + ' and  createDate>=' + todaybegin + ' and createDate<' + mingtianBegin + '))
            { //第一次,插入
                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.微信公众号平台源码下载

2.阿狸子订单系统源码

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


网页授权获取用户信息的方法
报错config:invalid signature的解决方案
微信开发百思不得姐实战教程
详解微信开发input输入框
教你libco是如何支撑巨大数据信息量的
微信二次开发之文本消息请求与发送
微信开发H5轻游戏
scroll-view完成列表页的方法详解
Java微信开发之自定义菜单的创建
微信开发之input控件的实例详解
微信开发Emoji表情的实例教程
微信开发中详解textarea的使用方法
微信开发中使元素占满全屏的方法介绍
微信开发之数据访问的方法详解
微信二次开发之各类型消息封装
微信开发之数据库操作
如何获取微信好友的地理位置信息
分享3款微信开发开源框架
微信开发之获取服务器IP
微信开发之公交换乘功能代码详解