src/main/java/cc/mrbird/febs/mall/controller/ViewMallGoodsController.java | ●●●●● patch | view | raw | blame | history | |
src/main/resources/templates/febs/views/modules/goods/tzInfo.html | ●●●●● patch | view | raw | blame | history | |
src/main/resources/templates/febs/views/modules/system/indexData.html | ●●●●● patch | view | raw | blame | history |
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"); } /** * 商品-详情 src/main/resources/templates/febs/views/modules/goods/tzInfo.html
New file @@ -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> 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 () {