全部
常见问题
产品动态
精选推荐
功能建议

已处理 待处理 {{opt.name}}
已处理 待处理
分析中 已回复 待规划 {{opt.name}}
分析中 已回复 待规划
C端查询商品列表的时候会实时统计订单数据

管理 管理 编辑 删除

Java V2.0商城

现在只能把标签关闭

调用栈
com.zbkj.front.controller.ProductController#getList
com.zbkj.front.service.impl.FrontProductServiceImpl#getList
com.zbkj.service.service.impl.ProductServiceImpl#findH5List
com.zbkj.service.service.impl.ProductTagServiceImpl#getProductTags
com.zbkj.service.service.impl.ProductTagServiceImpl#calcProductTagForLastThirtyDaysSalesByOptionUnitByJava


/**
     * 查询爆品用java代码重写
     *
     * @param unit
     * @return
     */
    private List<ProductTagTaskItem> calcProductTagForLastThirtyDaysSalesByOptionUnitByJava(Integer unit) {
        List<ProductTagTaskItem> itemList = new ArrayList<>();
        /* 1. 查询所有的30天以内的订单详情
               a.查询product_type = 0 的普通商品
               b.查询product_type = 1 的秒杀商品 TODO 如果后期还有更多类型需需要在此根据逻辑补全对应营销商品
           2. 将上面product_type = 1 的秒杀商品id根据业务替换成真实的商品id 作为爆款的统计数据
           3. 将数据整理成标签数据所需格式
           5. 再根据订单查询订单表去掉未支付数据
        **/
        // 根据支付订单信息查询购买数量

        LambdaQueryWrapper<Order> lqr_Order = Wrappers.lambdaQuery();
        lqr_Order.ge(Order::getLevel, 1).eq(Order::getPaid, 1).gt(Order::getPayTime, LocalDate.now().minusDays(30).toString());
        List<Order> orders = orderdao.selectList(lqr_Order);

        // 查询全部商品订单详情
        LambdaQueryWrapper<OrderDetail> lqr_OrderDetail = Wrappers.lambdaQuery();
        lqr_OrderDetail.in(OrderDetail::getOrderNo, orders.stream().map(Order::getOrderNo).collect(Collectors.toList()));
        List<OrderDetail> orderDetails = orderDetailDao.selectList(lqr_OrderDetail);

        // 处理秒杀商品数据 根据秒杀商品关联关系 修改订单中的商品id为真实商品id 仅仅在此计算中生效
        List<OrderDetail> OrderDetailIsSkillProduct = orderDetails.stream().filter(orderDetail -> orderDetail.getProductMarketingType().equals(ProductConstants.PRODUCT_MARKETING_TYPE_SECKILL)).collect(Collectors.toList());

        if (!OrderDetailIsSkillProduct.isEmpty()) {
            List<Integer> secKillIds = OrderDetailIsSkillProduct.stream().map(OrderDetail::getProductId).distinct().collect(Collectors.toList());
            if (!secKillIds.isEmpty()) {
                LambdaQueryWrapper<SeckillProduct> lqr_secKill = Wrappers.lambdaQuery();
                lqr_secKill.in(SeckillProduct::getId, secKillIds);
                List<SeckillProduct> seckillProducts = seckillProductDao.selectList(lqr_secKill);
                for (OrderDetail orderDetail : orderDetails) {
                    List<SeckillProduct> seckillPs = seckillProducts.stream().filter(seckillProduct -> orderDetail.getProductId().equals(seckillProduct.getId())).collect(Collectors.toList());
                    for (SeckillProduct seckillP : seckillPs) {
                        if (orderDetail.getProductMarketingType().equals(ProductConstants.PRODUCT_MARKETING_TYPE_SECKILL) && seckillP.getId().equals(orderDetail.getProductId())) {
                            orderDetail.setProductId(seckillP.getProductId());
                            break;
                        }
                    }
                }
            }
        }

        // 筛过秒杀订单之后 将秒杀订单销量赚到普通订单的商品之后的数据
        Map<Integer, ProductTagTaskItem> itemList_temp = new HashMap<>();
        // 构造满足条件的商品
        for (OrderDetail orderDetail : orderDetails) {
            ProductTagTaskItem item = itemList_temp.get(orderDetail.getProductId());
            if (null != item && item.getId() > 0) {
                item.setFlag(item.getFlag() + orderDetail.getPayNum());
            } else {
                // 以商品id为主键 添加标签数据
                ProductTagTaskItem tagTaskItem = new ProductTagTaskItem();
                tagTaskItem.setFlag(orderDetail.getPayNum());
                tagTaskItem.setTagName("爆品");
                tagTaskItem.setId(orderDetail.getProductId());
                itemList_temp.put(tagTaskItem.getId(), tagTaskItem);
            }
        }
        // 合并数组中根据商品id唯一合并flag的操作,这里的flag就是购买数量
        for (Integer id : itemList_temp.keySet()) {
            itemList.add(itemList_temp.get(id));
        }
        itemList = itemList.stream().filter(tag -> tag.getFlag() > unit).collect(Collectors.toList());
        return itemList;
    }


{{voteData.voteSum}} 人已参与
支持
反对
请登录后查看

David 最后编辑于2026-07-31 18:00:42

快捷回复
回复
回复
回复({{post_count}}) {{!is_user ? '我的回复' :'全部回复'}}
排序 默认正序 回复倒序 点赞倒序

{{item.user_info.nickname ? item.user_info.nickname : item.user_name}} LV.{{ item.user_info.bbs_level || item.bbs_level }}

作者 管理员 企业

{{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest == 1? '取消推荐': '推荐'}}
{{item.is_suggest == 1? '取消推荐': '推荐'}} 【已收集】
{{item.floor}}# 沙发 板凳 地板 {{item.floor}}# 【已收集】
{{item.user_info.title || '暂无简介'}}
附件

{{itemf.name}}

{{item.created_at}}  {{item.ip_address}}
打赏
已打赏¥{{item.reward_price}}
{{item.like_count}}
分享
{{item.showReply ? '取消回复' : '回复'}}
删除
回复
回复

{{itemc.user_info.nickname}}

{{itemc.user_name}}

回复 {{itemc.comment_user_info.nickname}}

附件

{{itemf.name}}

{{itemc.created_at}}
打赏
已打赏¥{{itemc.reward_price}}
{{itemc.like_count}}
{{itemc.showReply ? '取消回复' : '回复'}}
删除
回复
回复
收起 展开更多
查看更多
打赏
已打赏¥{{reward_price}}
16
{{like_count}}
{{collect_count}}
添加回复 ({{post_count}})

相关推荐

回复
回复
问题:
问题自动获取的帖子内容,不准确时需要手动修改. [获取答案]
答案:
提交
bug 需求 取 消 确 定
打赏金额
当前余额:¥{{rewardUserInfo.reward_price}}
{{item.price}}元
请输入 0.1-{{reward_max_price}} 范围内的数值
打赏成功
¥{{price}}
完成 确认打赏

微信登录/注册

{{ wechatLoginError }}
切换手机号登录

{{ bind_phone ? '绑定手机' : '手机登录'}}

{{codeText}}
切换微信登录/注册
暂不绑定
CRMEB客服
CRMEB咨询热线 400-8888-794

扫码领取产品资料

功能清单
思维导图
安装教程
CRMEB开源商城下载 源码下载 CRMEB帮助文档 帮助文档
返回顶部 返回顶部
CRMEB客服