Administrator
2025-07-08 22fc06733f1e3d1941499b312d83d07fdad27949
feat(mall): 添加活动数据统计功能

- 在 AdminDataInfoVo 中添加活动参与人数相关字段- 在 AdminMallMemberServiceImpl 中实现活动数据统计逻辑
- 在 dataInfo.html 中添加活动数据统计展示模块
3 files modified
62 ■■■■■ changed files
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java 17 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/vo/AdminDataInfoVo.java 5 ●●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/mallMember/dataInfo.html 40 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java
@@ -1061,6 +1061,23 @@
        adminDataInfoVo.setTotalWeekAmount(totalWeekAmount);
        adminDataInfoVo.setTotalMonthAmount(totalMonthAmount);
        List<HappyActivityOrder> happyActivityDoneOrders = happyActivityOrderMapper.selectList(
                Wrappers.lambdaQuery(HappyActivityOrder.class)
                        .eq(HappyActivityOrder::getPayState, StateUpDownEnum.PAY_STATE_PAY_SUCCESS.getCode())
                        .eq(HappyActivityOrder::getState, StateUpDownEnum.ORDER_STATE_USED.getCode())
        );
        if(CollUtil.isNotEmpty(happyActivityDoneOrders)){
            adminDataInfoVo.setTotalActivityMember(happyActivityDoneOrders.size());
            adminDataInfoVo.setTotalActivityDayMember(
                    Math.toIntExact(happyActivityDoneOrders.stream().filter(entity -> DateUtil.compare(entity.getCreatedTime(), DateUtil.beginOfDay(new Date())) >= 0).count()));
            adminDataInfoVo.setTotalActivityWeekMember(
                    Math.toIntExact(happyActivityDoneOrders.stream().filter(entity -> DateUtil.compare(entity.getCreatedTime(), DateUtil.beginOfWeek(new Date())) >= 0).count()));
            adminDataInfoVo.setTotalActivityMonthMember(
                    Math.toIntExact(happyActivityDoneOrders.stream().filter(entity -> DateUtil.compare(entity.getCreatedTime(), DateUtil.beginOfMonth(new Date())) >= 0).count()));
        }
        return new FebsResponse().success().data(adminDataInfoVo);
    }
}
src/main/java/cc/mrbird/febs/mall/vo/AdminDataInfoVo.java
@@ -12,6 +12,11 @@
    private Integer totalWeekMember = 0;//七日内新增
    private Integer totalMonthMember = 0;//30天内新增
    private Integer totalActivityMember = 0;//总数
    private Integer totalActivityDayMember = 0;//昨日新增
    private Integer totalActivityWeekMember = 0;//七日内新增
    private Integer totalActivityMonthMember = 0;//30天内新增
    private BigDecimal totalAmount = BigDecimal.ZERO;//总数
    private BigDecimal totalDayAmount = BigDecimal.ZERO;//新增
    private BigDecimal totalWeekAmount = BigDecimal.ZERO;//本周新增
src/main/resources/templates/febs/views/modules/mallMember/dataInfo.html
@@ -191,6 +191,46 @@
                    </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="totalActivityMember"></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="totalActivityDayMember"></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="totalActivityWeekMember"></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="totalActivityMonthMember"></span></p>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>