shopnc 九宫格抽奖代码

商城中营销活动最常见的就是大转盘抽奖了最近SHOPNC中正好需要这个12宫格抽奖,今天整理了下。

QQ图片20160808204432.png

  1. 前端主要代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

<div class="lottery-wrap">

    <div class="lottery-main">

        <input id="user_id" value="d41fd388929f1221" type="hidden">

        <div class="lottery-user-value">

            <p>

                <em>友情提示:每次抽奖消耗<i>5</i>个百利积分</em>

                <span>我的积分:<a id="lotteryPoint">19</a>分</span>

            </p>

        </div>

        <div user_points="19" prize_point="0" copywriter="奖品这么大,还不来试试" prize_type="0" prize_name="" prize_site="4" state="0" id="lottery">

            <ul>

                <li class="lottery-unit lottery-unit-0" id="">10倍积分</li>

                <li class="lottery-unit lottery-unit-1" id="">40倍积分</li>

                <li class="lottery-unit lottery-unit-2" id="">20倍积分</li>

                <li class="lottery-unit lottery-unit-3" id="">1倍积分</li>

                <li class="lottery-unit lottery-unit-4 active" id="">谢谢参与</li>

                <li class="lottery-unit lottery-unit-5" id="">50倍积分</li>

                <li class="lottery-unit lottery-unit-6" id="">1积分</li>

                <li class="lottery-unit lottery-unit-7" id="">100倍积分</li>

                <li class="lottery-unit lottery-unit-8" id="">2倍积分</li>

                <li class="lottery-unit lottery-unit-9" id="">200倍积分</li>

           </ul>

           <a href="javascript:startLottery()"></a>

        </div>

    </div>

</div>

    2. 主要JS代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

//中奖记录

function lotteryrecord() {

    var t = "",

    e = json_ajax("/shop/index.php?act=lottery&url=get_isOklotteryList",t,"GET",!0);

    if (e) {

        var r = e.length;

        if (r > 0) {

            for (var o = "",

            i = 0; r > i; i++) o += "<li><span> 恭喜" + e[i].member_mobile + " 获得 奖品  【<a>" + e[i].title + "】</a>,快去试手气吧 !</li>";

            $("#lotteryrecord").html(o)

        else {

            var o = "<li><span>大奖等着你,快去试手气 !</span></li>";

            $("#lotteryrecord").html(o)

        }

    }

    jQuery(".brand-main02-right-box01-wrap").slide({

        mainCell: ".brand-main02-right-box01 ul",

        autoPage: !0,

        effect: "top",

        autoPlay: !0,

        vis: 6

    })

}

//如果中奖获取中奖详细信息

function lotterygrand() {

}

function startLottery() {

    lotteryrecord();

    if ($("#nolottery").hide(), $("#winlottery").hide(), lottery.init("lottery"), !click) {

        lottery.speed = 100;

        var t = $("#user_id").val();

        if ("0" == t) userLogin();

        else {

            var e = "",

            r = json_ajax("/shop/index.php?act=lottery&url=ajax_get_mylottery",e,"POST",!0);

            //alert(r.data.prize_name);

            if (r && r.result) switch (r.result) {

            case "0":

                userLogin();

                break;

            case "1":

                //本期活动已经关闭!

                $("#close").show();

                break;

            case "2":

                //您的积分暂时不足,赚足积分再来玩吧!

                $("#jifen").show();

                break;

            case "3":

                //本期活动结束

                $("#jieshu").show();

                break;

            case "4":

                //今天摇奖次数已经用完,明天再来吧!

                $("#cishu").show();

                break;

            case "7":

                //异常

                 

                break;

            case "6":

                //您的手机号码没有绑定!

                $("#shenhe").show();

                break;

            case "5":

                $("#lottery").attr("state", r.data.state),

                $("#lottery").attr("prize_site", r.data.prize_site),

                $("#lottery").attr("prize_name", r.data.prize_name),

                $("#lottery").attr("prize_type", r.data.prize_type),

                $("#lottery").attr("copywriter", r.data.copywriter),

                $("#lottery").attr("prize_point", r.data.prize_point),

                $("#lottery").attr("user_points", r.data.user_points),

                roll(),

                click = !0

            else alert("网络异常,请检测网络线路!")

        }

    }

}

function userLogin() {

    // login_dialog();

    alert('请先登录');

}

function prize_show(t) {

    var e = $("#lottery").attr("copywriter");

    if ("0" == t) {

        var r = $("#lottery").attr("prize_point");

        $("#wincopywriter").html(e),

        $("#winpoint").html(r + "积分"),

        $("#winlottery").fadeIn(1500),

        lotterygrand()

    else {

        var o = $("#lottery").attr("prize_name");

        $("#winpoint").html(o),

        $("#wincopywriter").html("<a href='#'>填写收货地址</a>"),

        $("#winlottery").fadeIn(1500),

        lotteryrecord()

    }

}

function roll() {

    lottery.times += 1,

    lottery.roll();//转动过程调用的是lottery的roll方法,这里是第一次调用初始化

    var t = $("#lottery").attr("prize_site");

    if (lottery.times > lottery.cycle + 10 && lottery.index == t) {

        var e = $("#lottery").attr("state"),

        r = $("#lottery").attr("copywriter");

        if ("0" == e) $("#nocopywriter").html(r),

        $("#nolottery").fadeIn(1500);

        else {

            var o = $("#lottery").attr("prize_type");

            prize_show(o)

        }

        var i = $("#lottery").attr("user_points");

        $("#lotteryPoint").html(i),

        $("#no_users_point").html(i),

        $("#win_users_point").html(i),

        clearTimeout(lottery.timer),

        lottery.prize = 0,

        lottery.times = 0,

        click = !1

    else {

        if (lottery.times < lottery.cycle) lottery.speed -= 10;

        else if (lottery.times == lottery.cycle) {

            var l = Math.random() * lottery.count | 0;

            lottery.prize = l

        else lottery.speed += lottery.times > lottery.cycle + 10 && (0 == lottery.prize && 7 == lottery.index || lottery.prize == lottery.index + 1) ? 110 : 20;

        lottery.speed < 40 && (lottery.speed = 35),

        lottery.timer = setTimeout(roll, lottery.speed);//循环调用

    }

    return ! 1

}

var lottery = {

    index: -1,//当前转动到哪个位置,起点位置

    count: 9, //总共有多少个位置

    timer: 0, //setTimeout的ID,用clearTimeout清除

    speed: 20,//初始转动速度

    times: 0, //转动次数

    cycle: 50,//转动基本次数:即至少需要转动多少次再进入抽奖环节

    prize: 0, //中奖位置

    init: function(t) {

        $("#" + t).find(".lottery-unit").length > 0 && ($lottery = $("#" + t), $units = $lottery.find(".lottery-unit"), this.obj = $lottery, this.count = $units.length, $lottery.find(".lottery-unit-" this.index).addClass("active"))

    },

    roll: function() {

        var t = this.index,

        e = this.count,

        r = this.obj;

        return $(r).find(".lottery-unit-" + t).removeClass("active"),

        t += 1,

        t > e - 1 && (t = 0),

        $(r).find(".lottery-unit-" + t).addClass("active"),

        this.index = t,

        !1

    },

    stop: function(t) {

        return this.prize = t,

        !1

    }

},

click = !1;

window.onload = function() {

    lotterygrand();

    lotteryrecord();

    lottery.init("lottery");

};

    3. 主要后台代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

# 获取范围

    private function round($p) {

        $width = 360 / 7;

        $a $p $width;

        $b $a $width;

        return mt_rand($a + 10 ,$b - 10);

    }

    # 随机一个概率出来

    private function probability() {

        //return rand(0,6);

        $probability_all array(0,0);

        foreach($this->prize as $i=>$val) {

            list($title,$desc,$money,$probability) = $val;

            $probability_all[0] += $probability[0];

            $probability_all[1] += $probability[1];

        }

        if empty($this->prize) ) {

            return -1;

        }

        $probability_all[1] = intval($probability_all[1] / count($this->prize));

        $yes = mt_rand(1,$probability_all[1]);

        $prize = -1;

        if $probability_all[0] <= 0 || $probability_all[1] <= 0 || $yes $probability_all[0] ) {

        else {

            $list array();

            $add = 0;

            $total = 0;

            foreach($this->prize as $i=>$val) {

                list($title,$desc,$money,$probability) = $val;

                if $probability[0] <= 0 ) {

                    continue;

                }

                $total $add += $probability[0];

                $list[$add] = $i;

            }

            $yes = mt_rand(1,$total);

            foreach ($list as $k => $v) {

                if $yes <= $k ) {

                    $prize $v;

                    break;

                }

            }

        }

        return $prize;

    }

    4.数据表

1

2

3

4

5

6

7

8

9

10

11

12

13

CREATE TABLE `tp_member_lottery` (

  `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,

  `member_id` mediumint(10) unsigned NOT NULL,

  `member_mobile` varchar(11) DEFAULT '0' COMMENT '手机号',

  `timeint(10) unsigned NOT NULL,

  `prize` tinyint(1) unsigned NOT NULL,

  `okmoney` mediumint(8) NOT NULL DEFAULT '0' COMMENT '中奖积分数量',

  `money` mediumint(8) unsigned NOT NULL,

  `title` varchar(20) NOT NULL,

  `info` varchar(100) NOT NULL,

  PRIMARY KEY (`id`),

  KEY `uid` (`member_id`)

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='会员大转盘记录表';

  • 23
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值