我的投注

list.html

<div class="layui-fluid">
    <div class="layui-row layui-col-space15">
        <div class="layui-col-sm6 layui-col-md12">
            <div class="layui-card">
                <div class="layui-tab layui-tab-brief" lay-filter="docDemoTabBrief">
                    <ul class="layui-tab-title">
                        <li class="layui-this">我的投注列表</li>
                    </ul>
                    <div class="layui-tab-content">
                        <div class="layui-tab-item layui-show">
                            <div class="layui-form" lay-filter="app-content-list">
                                <div class="layui-form-item">
                                    <div class="layui-inline">
                                        <button class="layui-btn layuiadmin-btn-list" data-type="recharge">
                                            充值
                                        </button>
                                    </div>
                                    <div class="layui-inline">
                                        <button class="layui-btn layuiadmin-btn-list" data-type="bet">
                                            投注
                                        </button>
                                    </div>
                                    <div class="layui-input-inline" style="width: 500px;">
                                        <div class="layui-btn-group" id="statisticsBtnGroup">
                                            <button class="layui-btn layui-btn-normal layui-btn-lg">我的余额<span
                                                    class="layui-badge-dot layui-bg-orange">
                                            </span><span id="money" class="layui-badge layui-bg-gray"></span>
                                            </button>
                                        </div>
                                    </div>
                                </div>
                            </div>
                            <table id="LAY-data-list" lay-filter="LAY-data-list" id="datalist"></table>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script id="time" type="text/html">
    {
   
   {#
    if (d.time != null){
    return datetimeFormat_1(d.time);
    }
    }}
</script>
<script>
    layui.use(['table', 'form'], function () {
        var $ = layui.$,
            table = layui.table,
            setter = layui.setter,
            miniPage = layui.miniPage,
            form = layui.form;

        form.render();

        var token = localStorage.getItem("super_token");

        table.set({
            headers: { //通过 request 头传递
                token: token
            }
        });

        table.render({
            elem: '#LAY-data-list',
            id: "datalist",
            url: setter.domain + '/my-bet/list',
            even: true,
            cols: [[{
                title: '充值或投注记录',
                field: 'record',
                align: 'center'
            }, {
                title: '当次投注后余额',
                field: 'aftermoney',
                align: 'center'
            }, {
                title: '操作时间',
                field: 'time',
                align: 'center',
                templet: '#time'
            }]]
            , page: true
            , limit: 10
            , limits: [10, 20, 50]
            , text: {
                none: '暂未查询任何数据'
            }
        });

        getStatistic();

        function getStatistic() {
            $.ajax({
                type: "GET",
                url: setter.domain + '/my-bet/money',
                contentType: "application/json",
                data: {},
                dataType: "json",
                headers: {
                    "token": token
                },
                success: function (res) {
                    var money = res.money;
                    $("#money").html(money);
                },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                    layer.msg("获取数据有异常,请检查");
                    console.log(XMLHttpRequest);
                    console.log(textStatus);
                    console.log(errorThrown);
                }
            });
        }


        var active = {
            recharge: function (othis) {
                layer.open({
                    title: '充值',
                    area: ['700px', '180px'],
                    id: 'LAY-popup-content-add',
                    type: 1,
                    shade: 0.2,
                    maxmin: false,
                    shadeClose: false,
                    content: miniPage.getHrefContent('views/my-bet/recharge.html'),
                    success: function (layero, index) {
                    }
                });
            },
            bet: function (othis) {
                layer.open({
                    title: '投注',
                    area: ['700px', '230px'],
                    id: 'LAY-popup-content-add',
                    type: 1,
                    shade: 0.2,
                    maxmin: false,
                    shadeClose: false,
                    content: miniPage.getHrefContent('views/my-bet/bet.html'),
                    success: function (layero, index) {
                    }
                });
            }
        }

        $('.layui-btn.layuiadmin-btn-list').on('click', function () {
            var type = $(this).data('type');
            active[type] ? active[type].call(this) : '';
        });

    });
</script>

bet.html:

<div class="layui-fluid">
    <form class="layui-form layui-form-pane">
        <div class="layui-form-item">
            <label class="layui-form-label">投注金额</label>
            <div class="layui-input-inline">
                <input type="text" id="money" name="money" lay-verify="required|money" placeholder=""
                       autocomplete="off" class="layui-input">
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">投注</label>
            <div class="layui-input-inline">
                <input type="radio" name="record" value="big" title="大" checked>
                <input type="radio" name="record" value="small" title="小">
            </div>
        </div>

        <div class="layui-input-block">
            <button class="layui-btn" lay-submit lay-filter="layuiadmin-data-form-submit">投注</button>
        </div>
    </form>
</div>
<script>
    layui.use(['form', 'upload'], function () {
        var $ = layui.$,
            setter = layui.setter,
            table = layui.table,
            form = layui.form;

        //自定义验证规则
        form.verify({
            money: [
                /^[1-9]\d*$/
                , '投注金额必须是正整数'
            ]
        });


        form.render();
        form.on('submit(layuiadmin-data-form-submit)', function (data) {
            const reqObj = JSON.stringify(data.field);
            var access_token = localStorage.getItem("super_token");
            $.ajax({
                type: "POST",
                url: setter.domain + '/my-bet/bet',
                contentType: "application/json",
                data: reqObj,
                dataType: "json",
                headers: {
                    "token": access_token
                },
                success: function (res) {
                    var money = res.data;
                    $("#money").html(money);
                    if (res.code == 0) {
                        layer.msg('余额不足,请充值', {icon: 7, time: 3000});
                        layer.closeAll("page");
                    } else if (res.code == 1) {
                        layer.msg(res.msg, {icon: 1, time: 3000});
                        layer.closeAll("page");
                        table.reload('datalist')
                    } else if (res.code == 2) {
                        layer.msg(res.msg, {icon: 2, time: 3000});
                        layer.closeAll("page");
                        table.reload('datalist')
                    }
                },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                    layer.msg(XMLHttpRequest.responseJSON.err_msg);
                    console.log(textStatus);
                    console.log(errorThrown);
                }
            });
            return false;
        });
    });
</script>

recharge.html

<div class="layui-fluid">
    <form class="layui-form layui-form-pane">
        <div class="layui-form-item">
            <label class="layui-form-label">充值金额</label>
            <div class="layui-input-inline">
                <input type="text" id="money" name="money" lay-verify="required|money" placeholder=""
                       autocomplete="off" class="layui-input">
            </div>
        </div>

        <div class="layui-input-block">
            <button class="layui-btn" lay-submit lay-filter="layuiadmin-data-form-submit">提交充值申请</button>
        </div>
    </form>
</div>
<script>
    layui.use(['form', 'upload'], function () {
        var $ = layui.$,
            setter = layui.setter,
            table = layui.table,
            form = layui.form;

        //自定义验证规则
        form.verify({
            money: [
                /^[1-9]\d*$/
                , '充值金额必须是正整数'
            ]
        });

        form.render();
        form.on('submit(layuiadmin-data-form-submit)', function (data) {
            const reqObj = JSON.stringify(data.field);
            var access_token = localStorage.getItem("super_token");
            $.ajax({
                type: "POST",
                url: setter.domain + '/my-bet/recharge',
                contentType: "application/json",
                data: reqObj,
                dataType: "json",
                headers: {
                    "token": access_token
                },
                success: function (res) {
                    if (res.code == 1) {
                        layer.msg('每天只可以提交充值申请一次', {icon: 7, time: 3000});
                        layer.closeAll("page");
                    } else {
                        layer.msg("充值申请提交成功");
                        layer.closeAll("page");
                        table.reload('datalist')
                    }
                },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                    layer.msg(XMLHttpRequest.responseJSON.err_msg);
                    console.log(textStatus);
                    console.log(errorThrown);
                }
            });
            return false;
        });
    });
</script>

MybetController

package com.chongxuan.web.controller;

import com.chongxuan.web.common.dto.bo.PageBO;
import com.chongxuan.web.common.entity.MyGame;
import com.chongxuan.web.common.entity.MyUser;
import com.chongxuan.web.common.entity.RspBase;
import com.chongxuan.web.common.service.IMyGameService;
import com.chongxuan.web.common.service.IMyUserService;
import com.chongxuan.web.common.util.UserDataUtil;
import com.chongxuan.web.config.SessionValid;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.concurrent.ThreadLocalRandom;

@Log4j2
@RestController
@RequestMapping("/my-bet")
public class MyBetController {

    @Autowired
    private IMyGameService iMyGameService;

    @Autowired
    private IMyUserService iMyUserService;

    @Autowired
    private UserDataUtil userDataUtil;

    /**
     * 我的投注列表
     *
     * @return
     */
    @RequestMapping(value = "/list", method = RequestMethod.GET)
    @SessionValid
    public PageBO<MyGame> findList(HttpServletRequest request, MyGame dto) {
        String username = userDataUtil.getAdminName(request);
        dto.setUsername(username);
        return iMyGameService.findPage(dto);
    }

    /**
     * 我的余额
     *
     * @return
     */
    @RequestMapping(value = "/money", method = RequestMethod.GET)
    @SessionValid
    public MyUser money(HttpServletRequest request) {
        String username = userDataUtil.getAdminName(request);
        return iMyUserService.selectByUsername(username);
    }

    /**
     * 充值申请
     *
     * @return
     */
    @RequestMapping(value = "/recharge", method = RequestMethod.POST)
    @SessionValid
    public RspBase Recharge(HttpServletRequest request,@RequestBody MyGame dto) {
        RspBase rspBase = new RspBase();
        String username = userDataUtil.getAdminName(request);
        Date date=new Date();
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
        String a =formatter.format(date) + " 00:00:00";
        String b =formatter.format(date) + " 23:59:59";
        String c = "充值申请";
        int d = iMyGameService.rechargecount(username,a,b,c);
        if(d != 0){
            rspBase.setCode(1);
            return rspBase;
        }
        dto.setUsername(username);
        dto.setTime(new Date());
        dto.setRecord("充值申请:" + dto.getMoney().toString() + "元");
        MyUser myUser = iMyUserService.selectByUsername(username);
        dto.setAftermoney(myUser.getMoney());
        iMyGameService.insertmygame(dto);
        return rspBase;
    }

    /**
     * 投注
     *
     * @return
     */
    @RequestMapping(value = "/bet", method = RequestMethod.POST)
    @SessionValid
    public RspBase Bet(HttpServletRequest request,@RequestBody MyGame dto) {
        RspBase rspBase = new RspBase();
        String username = userDataUtil.getAdminName(request);
        MyUser myUser = iMyUserService.selectByUsername(username);
        Integer money = myUser.getMoney();
        rspBase.setData(money);
        if(money < dto.getMoney()){
            rspBase.setCode(0);
            return rspBase;
        }
        //随机生成0和1
        int i = ThreadLocalRandom.current().nextInt(2);
        if ("big".equals(dto.getRecord())) {
            if (i == 1) {
                dto.setRecord("投注中奖,账户余额增加" + dto.getMoney().toString() + "元");
                money = money + dto.getMoney();
                rspBase.setCode(1);
                rspBase.setMsg("开奖是大,账户余额增加" + dto.getMoney().toString() + "元");
            } else {
                dto.setRecord("投注未中奖,账户余额减少" + dto.getMoney().toString() + "元");
                money = money - dto.getMoney();
                rspBase.setCode(2);
                rspBase.setMsg("开奖是小,账户余额减小" + dto.getMoney().toString() + "元");
            }
        } else if ("small".equals(dto.getRecord())) {
            if (i == 0) {
                dto.setRecord("投注中奖,账户余额增加" + dto.getMoney().toString() + "元");
                money = money + dto.getMoney();
                rspBase.setCode(1);
                rspBase.setMsg("开奖是小,账户余额增加" + dto.getMoney().toString() + "元");
            } else {
                dto.setRecord("投注未中奖,账户余额减少" + dto.getMoney().toString() + "元");
                money = money - dto.getMoney();
                rspBase.setCode(2);
                rspBase.setMsg("开奖是大,账户余额减小" + dto.getMoney().toString() + "元");
            }
        }
        dto.setUsername(username);
        dto.setTime(new Date());
        dto.setAftermoney(money);
        iMyGameService.insertmygame(dto);

        myUser.setMoney(money);
        iMyUserService.updateByUsername(myUser);
        rspBase.setData(money);
        return rspBase;
    }

}


 

大小随机数重复21亿次(int类型最大数为21亿多),3次测试

int i;
    int b=0;
    for(i=0;i<2100000000;i++) {
        int a = ThreadLocalRandom.current().nextInt(2);
        if(a == 0){
            b=b+1;
        }
    }
    System.out.println(b);
}

所得结果为1049956709,1049994438,1050035666

基本说明该大小算法完全公平。我赚的只是抽水钱。

猜你喜欢

转载自blog.csdn.net/programmer188/article/details/111995353