From 5fcbc587a07aefa3eb450e9ec83089f8c567df1c Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Mon, 26 Feb 2024 17:13:17 +0800
Subject: [PATCH] 抽奖

---
 src/main/resources/templates/febs/views/modules/goods/tzInfo.html         |  190 ++++++++++++++++++++++++++++++++++++++
 src/main/java/cc/mrbird/febs/mall/controller/ViewMallGoodsController.java |   76 ++++++++++++++
 src/main/resources/templates/febs/views/modules/system/indexData.html     |   16 ---
 3 files changed, 263 insertions(+), 19 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ViewMallGoodsController.java b/src/main/java/cc/mrbird/febs/mall/controller/ViewMallGoodsController.java
index bd2c279..bb65260 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ViewMallGoodsController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ViewMallGoodsController.java
@@ -2,15 +2,27 @@
 
 import cc.mrbird.febs.common.controller.BaseController;
 import cc.mrbird.febs.common.entity.FebsConstant;
+import cc.mrbird.febs.common.enumerates.AgentLevelEnum;
+import cc.mrbird.febs.common.enumerates.DataDictionaryEnum;
+import cc.mrbird.febs.common.enumerates.OrderPayMethodEnum;
+import cc.mrbird.febs.common.utils.AppContants;
+import cc.mrbird.febs.common.utils.DateUtil;
 import cc.mrbird.febs.common.utils.FebsUtil;
-import cc.mrbird.febs.mall.entity.MallGoods;
-import cc.mrbird.febs.mall.entity.TzInfo;
-import cc.mrbird.febs.mall.mapper.TzInfoMapper;
+import cc.mrbird.febs.common.utils.RedisUtils;
+import cc.mrbird.febs.mall.entity.*;
+import cc.mrbird.febs.mall.mapper.*;
+import cc.mrbird.febs.mall.service.AsyncCjService;
 import cc.mrbird.febs.mall.service.IAdminMallGoodsService;
 import cc.mrbird.febs.mall.service.IAdminMallMemberService;
+import cc.mrbird.febs.mall.service.IApiMallMemberService;
 import cc.mrbird.febs.mall.vo.AdminMailGoodsDetailVo;
 import cc.mrbird.febs.mall.vo.AdminMailGoodsUpdateVo;
+import cc.mrbird.febs.mall.vo.ApiKjInfoVo;
 import cc.mrbird.febs.mall.vo.MallMemberVo;
+import cc.mrbird.febs.rabbit.producter.AgentProducer;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import lombok.RequiredArgsConstructor;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.stereotype.Controller;
@@ -19,6 +31,12 @@
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
 
+import java.math.BigDecimal;
+import java.text.ParseException;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+
 @Controller("goodsView")
 @RequestMapping(FebsConstant.VIEW_PREFIX + "modules/goods")
 @RequiredArgsConstructor
@@ -26,6 +44,58 @@
 
     private final IAdminMallGoodsService mallGoodsService;
     private final TzInfoMapper tzInfoMapper;
+    private final KjRecordMapper kjRecordMapper;
+    private final RedisUtils redisUtils;
+    private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
+
+    @GetMapping("tzInfo")
+    @RequiresPermissions("tzInfo:view")
+    public String tzInfo(Model model) {
+        ApiKjInfoVo apiKjInfoVo = new ApiKjInfoVo();
+        String kjNoOld = redisUtils.getString(AppContants.KJ_RECORD_NO_OLD);
+        String kjNumOld = redisUtils.getString(AppContants.KJ_RECORD_NUM_OLD);
+        if(StrUtil.isBlank(kjNoOld)){
+            KjRecord kjRecordOld = kjRecordMapper.selectOneByLimitZero(1,1);
+            if(ObjectUtil.isNotEmpty(kjRecordOld)){
+                apiKjInfoVo.setKjNoOld(kjRecordOld.getKjNo());
+                apiKjInfoVo.setKjNumOld(kjRecordOld.getKjNum());
+            }
+        }else{
+            apiKjInfoVo.setKjNoOld(kjNoOld);
+            apiKjInfoVo.setKjNumOld(kjNumOld);
+        }
+
+        String kjNo = redisUtils.getString(AppContants.KJ_RECORD_NO);
+        String createdTime = redisUtils.getString(AppContants.KJ_RECORD_TIME);
+        if(StrUtil.isBlank(kjNo)){
+            KjRecord kjRecord = kjRecordMapper.selectOneByLimitZero(0,1);
+            if(ObjectUtil.isNotEmpty(kjRecord)){
+                apiKjInfoVo.setKjNo(kjRecord.getKjNo());
+                apiKjInfoVo.setCreatedTime(kjRecord.getCreatedTime().toString());
+            }
+        }else{
+            apiKjInfoVo.setKjNo(kjNo);
+            try {
+                apiKjInfoVo.setCreatedTime(cc.mrbird.febs.common.utils.DateUtil.formatCstTime(createdTime, DateUtil.FULL_TIME_SPLIT_PATTERN));
+            } catch (ParseException e) {
+                e.printStackTrace();
+            }
+        }
+
+        DataDictionaryCustom timeIntervalDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+                DataDictionaryEnum.TIME_INTERVAL.getType(),
+                DataDictionaryEnum.TIME_INTERVAL.getCode()
+        );
+        apiKjInfoVo.setDjs(Integer.parseInt(timeIntervalDic.getValue()));
+
+        // 获取当前时间
+        LocalDateTime currentTime = LocalDateTime.now();
+        // 定义时间格式
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        apiKjInfoVo.setSystemTime(currentTime.format(formatter));
+        model.addAttribute("apiKjInfoVo", apiKjInfoVo);
+        return FebsUtil.view("modules/goods/tzInfo");
+    }
 
     /**
      * 商品-详情
diff --git a/src/main/resources/templates/febs/views/modules/goods/tzInfo.html b/src/main/resources/templates/febs/views/modules/goods/tzInfo.html
new file mode 100644
index 0000000..32fb707
--- /dev/null
+++ b/src/main/resources/templates/febs/views/modules/goods/tzInfo.html
@@ -0,0 +1,190 @@
+<style>
+    #kj-data .welcome-info {
+        border: 1px solid #f1f1f1;
+        margin-bottom: .5rem;
+        padding: .5rem;
+        background: #FFFFFF;
+    }
+
+    #kj-data .welcome-info-wrapper {
+        padding: .2rem;
+        display: inline-block
+    }
+
+    #kj-data .welcome-info-wrapper .user-header {
+        display: inline-block;
+        vertical-align: middle
+    }
+
+    #kj-data .welcome-info-wrapper .user-header img {
+        width: 5rem;
+        margin: .5rem 1rem;
+        border-radius: 50%
+    }
+
+    #kj-data .welcome-info-wrapper .user-info {
+        display: inline-block;
+        vertical-align: middle
+    }
+
+    #kj-data .welcome-info-wrapper .user-info .random-message {
+        font-size: 1rem;
+        margin-bottom: .2rem;
+        max-width: 21rem
+    }
+
+    #kj-data .welcome-info-wrapper .user-info .user-dept, #kj-data .welcome-info-wrapper .user-info .user-login-info {
+        color: rgba(0, 0, 0, 0.45);
+    }
+
+    #kj-data .login-count-table {
+        width: 100%;
+        margin: 1rem;
+    }
+
+    #kj-data .login-count-table .count {
+        padding-top: .8rem;
+        font-size: 1rem;
+        font-weight: 600;
+        color: #1890ff
+    }
+
+    #kj-data .project-table {
+        padding: .5rem;
+        border: 1px solid #f1f1f1;
+        width: 100%
+    }
+
+    #kj-data .project-table-td {
+        padding: .5rem 0.7rem;
+        border: 1px solid #f1f1f1;
+    }
+
+    #kj-data .project-table-td a {
+        color: #42b983;
+        font-size: .9rem;
+        font-weight: 600;
+    }
+
+    #kj-data .project-desc {
+        color: rgba(0, 0, 0, 0.45);
+    }
+    /*.layui-card:last-child{*/
+    /*    background: #F8F8F8;*/
+    /*}*/
+    .box{
+        background: #FFFFFF;
+        padding: 50px 50px;
+        border-radius: 4px;
+    }
+    .box .name{
+        font-size: 14px;
+        color: #333333;
+    }
+    .box .num{
+        font-size: 24px;
+        color: #1890ff;
+        font-weight: bold;
+        margin-top: 20px;
+        word-break: break-all;
+    }
+</style>
+<div class="layui-fluid layui-anim febs-anim-up" id="kj-data" lay-title="开奖信息">
+    <div class="layui-card-body layui-anim layui-anim-fadein">
+        <blockquote class="layui-elem-quote blue-border">上一期开奖</blockquote>
+        <div class="layui-row">
+            <div class="layui-row layui-col-space15">
+                <div class="layui-col-md3">
+                    <div class="layui-panel">
+                        <div class="box">
+                            <p class="name">上一期期号</p>
+                            <p class="num"><span id="kjNoOld"></span></p>
+                        </div>
+                    </div>
+                </div>
+                <div class="layui-col-md3">
+                    <div class="layui-panel">
+                        <div class="box">
+                            <p class="name">上一期开奖号码</p>
+                            <p class="num" ><span id="kjNumOld"></span></p>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+        <blockquote class="layui-elem-quote blue-border">本期开奖</blockquote>
+        <div class="layui-row">
+            <div class="layui-row layui-col-space15">
+                <div class="layui-col-md3">
+                    <div class="layui-panel">
+                        <div class="box">
+                            <p class="name">倒计时开始时间</p>
+                            <p class="num"><span id="createdTime"></span></p>
+                        </div>
+                    </div>
+                </div>
+                <div class="layui-col-md3">
+                    <div class="layui-panel">
+                        <div class="box">
+                            <p class="name">倒计时(分钟)</p>
+                            <p class="num"><span id="djs"></span></p>
+                        </div>
+                    </div>
+                </div>
+                <div class="layui-col-md3">
+                    <div class="layui-panel">
+                        <div class="box">
+                            <p class="name">倒计时</p>
+                            <p class="num"><span id="countdown"></span></p>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+
+
+</div>
+<script data-th-inline="javascript" type="text/javascript">
+    layui.use(['febs', 'jquery'], function () {
+        var $ = layui.jquery,
+            $view = $('#kj-data'),
+            apiKjInfoVo = [[${apiKjInfoVo}]];
+        initIndexData();
+        function initIndexData() {
+            $view.find('#kjNoOld').text(apiKjInfoVo.kjNoOld).end()
+                .find('#kjNumOld').text(apiKjInfoVo.kjNumOld).end()
+                .find('#kjNo').text(apiKjInfoVo.kjNo).end()
+                .find('#createdTime').text(apiKjInfoVo.createdTime).end()
+                .find('#systemTime').text(apiKjInfoVo.systemTime).end()
+                .find('#djs').text(apiKjInfoVo.djs).end();
+        }
+        // 设置结束时间(示例为2024年2月26日18:00:00)
+        var endTime = new Date(apiKjInfoVo.createdTime).getTime() + apiKjInfoVo.djs * 60 * 1000;
+        // 获取当前时间
+        var now = new Date(apiKjInfoVo.systemTime).getTime();
+        // 计算剩余时间
+        function countDown() {
+            var distance = endTime - now;
+            // 计算剩余的小时、分钟和秒数
+            var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
+            var seconds = Math.floor((distance % (1000 * 60)) / 1000);
+            if (distance > 0 && distance < 1 * 60 * 1000) {
+                // 倒计时结束,显示相应信息
+                document.getElementById('countdown').innerHTML = '停止投注,等待开奖中,'+minutes + ':' + seconds ;
+            }else if(distance <= 0){
+                // 倒计时结束,显示相应信息
+                document.getElementById('countdown').innerHTML = '正在开奖';
+                location.reload(); // 刷新页面
+                return;
+            }else{
+                // 更新倒计时显示
+                document.getElementById('countdown').innerHTML = minutes + ':' + seconds;
+            }
+            // 每秒更新一次倒计时
+            now = now + 1000;
+        }
+        // 使用setInterval定时更新倒计时
+        setInterval(countDown, 1000);
+    });
+</script>
diff --git a/src/main/resources/templates/febs/views/modules/system/indexData.html b/src/main/resources/templates/febs/views/modules/system/indexData.html
index c0c1dd9..24b0c11 100644
--- a/src/main/resources/templates/febs/views/modules/system/indexData.html
+++ b/src/main/resources/templates/febs/views/modules/system/indexData.html
@@ -287,22 +287,6 @@
                         </div>
                     </div>
                 </div>
-
-<!--                <div class="layui-card-body layui-anim layui-anim-fadein">-->
-<!--                    <div class="layui-row">-->
-<!--                        <div class="m-title">积分池</div>-->
-<!--                        <div class="layui-row layui-col-space15">-->
-<!--                            <div class="layui-col-md3">-->
-<!--                                <div class="layui-panel">-->
-<!--                                    <div class="box">-->
-<!--                                        <p class="name">剩余积分</p>-->
-<!--                                        <p class="num"><span id="scorePool"></span></p>-->
-<!--                                    </div>-->
-<!--                                </div>-->
-<!--                            </div>-->
-<!--                        </div>-->
-<!--                    </div>-->
-<!--                </div>-->
 </div>
 <script data-th-inline="javascript" type="text/javascript">
     layui.use(['febs', 'jquery'], function () {

--
Gitblit v1.9.1