Pu Zhibing
2025-03-21 15bfd012429367bf9b8f03bdc8bb101ae0bdfe4d
修改统计bug
10个文件已修改
207 ■■■■ 已修改文件
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUser.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserCouponController.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/BalanceChangeRecordServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderExport.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderPageList.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/CouponInfoController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUser.java
@@ -5,6 +5,7 @@
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -348,6 +349,9 @@
    public Integer getUserTotalPoint(){
        if (totalPoint == null){
            totalPoint = 0;
        }
        if (lowerLevelSharePoint == null){
            lowerLevelSharePoint = 0;
        }
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java
@@ -323,7 +323,11 @@
        //获取绑定上级
        if (user.getInviteUserId() != null) {
            AppUser byId = appUserService.getById(user.getInviteUserId());
            user.setTopUser(byId);
            if(null != byId){
                user.setTopUser(byId);
            }else{
                user.setTopUser(new AppUser());
            }
        }else {
            AppUser topUser = new AppUser();
            user.setTopUser(topUser);
@@ -371,7 +375,6 @@
                    .eq(AppUser::getDelFlag, 0)
                    .ne(AppUser::getStatus, 3)
                    .count();
            vip1Count1 += count1;
            Long count2 = appUserService.lambdaQuery()
                    .eq(AppUser::getVipId, 2)
@@ -379,42 +382,36 @@
                    .eq(AppUser::getDelFlag, 0)
                    .ne(AppUser::getStatus, 3)
                    .count();
            vip1Count2 += count2;
            Long count3 = appUserService.lambdaQuery()
                    .eq(AppUser::getVipId, 3)
                    .eq(AppUser::getInviteUserId, appUser.getId())
                    .eq(AppUser::getDelFlag, 0)
                    .ne(AppUser::getStatus, 3)
                    .count();
            vip1Count3 += count3;
            Long count4 = appUserService.lambdaQuery()
                    .eq(AppUser::getVipId, 4)
                    .eq(AppUser::getInviteUserId, appUser.getId())
                    .eq(AppUser::getDelFlag, 0)
                    .ne(AppUser::getStatus, 3)
                    .count();
            vip1Count4 += count4;
            Long count5 = appUserService.lambdaQuery()
                    .eq(AppUser::getVipId, 5)
                    .eq(AppUser::getInviteUserId, appUser.getId())
                    .eq(AppUser::getDelFlag, 0)
                    .ne(AppUser::getStatus, 3)
                    .count();
            vip1Count5 += count5;
            Long count6 = appUserService.lambdaQuery()
                    .eq(AppUser::getVipId, 6)
                    .eq(AppUser::getInviteUserId, appUser.getId())
                    .eq(AppUser::getDelFlag, 0)
                    .ne(AppUser::getStatus, 3)
                    .count();
            vip1Count6 += count6;
            Long count7 = appUserService.lambdaQuery()
                    .eq(AppUser::getVipId, 7)
                    .eq(AppUser::getInviteUserId, appUser.getId())
                    .eq(AppUser::getDelFlag, 0)
                    .ne(AppUser::getStatus, 3)
                    .count();
            vip1Count7 += count7;
            appUser.setCount1(count1);
            appUser.setCount2(count2);
            appUser.setCount3(count3);
@@ -423,6 +420,7 @@
            appUser.setCount6(count6);
            appUser.setCount7(count7);
        }
        user.setBottomUsers(list);
        user.setCount1(vip1Count1);
        user.setCount2(vip1Count2);
@@ -512,42 +510,23 @@
        ArrayList<Long> userIds = new ArrayList<>();
        userIds.add(userId);
        // 获取当前用户的所有下级
        List<AppUser> allSubordinates = getAllSubordinates(userId);
        // 统计下级中每种会员类型的人数
        Map<Integer, Long> countMap = allSubordinates.stream()
                .collect(Collectors.groupingBy(AppUser::getVipId, Collectors.counting()));
        countMap.forEach((vipId, count) -> {
            switch (vipId) {
                case 1:
                    Long count1 = user.getCount1() == null ? 0 : user.getCount1();
                    user.setCount1(count1 + count);
                    break;
                case 2:
                    Long count2 = user.getCount2() == null ? 0 : user.getCount2();
                    user.setCount2(count2 + count);
                    break;
                case 3:
                    Long count3 = user.getCount3() == null ? 0 : user.getCount3();
                    user.setCount3(count3 + count);
                    break;
                case 4:
                    Long count4 = user.getCount4() == null ? 0 : user.getCount4();
                    user.setCount4(count4 + count);
                    break;
                case 5:
                    Long count5 = user.getCount5() == null ? 0 : user.getCount5();
                    user.setCount5(count5 + count);
                    break;
                case 6:
                    Long count6 = user.getCount6() == null ? 0 : user.getCount6();
                    user.setCount6(count6 + count);
                    break;
                case 7:
                    Long count7 = user.getCount7() == null ? 0 : user.getCount7();
                    user.setCount7(count7 + count);
                    break;
            }
        });
        List<AppUser> allSubordinates = appUserService.list(new LambdaQueryWrapper<AppUser>()
                .eq(AppUser::getInviteUserId, user.getId()).eq(AppUser::getDelFlag, 0)
                .ne(AppUser::getStatus, 3));
        Long count1 = allSubordinates.stream().filter(s->s.getVipId() == 1).count();
        user.setCount1(count1);
        Long count2 = allSubordinates.stream().filter(s->s.getVipId() == 2).count();
        user.setCount2(count2);
        Long count3 = allSubordinates.stream().filter(s->s.getVipId() == 3).count();
        user.setCount3(count3);
        Long count4 = allSubordinates.stream().filter(s->s.getVipId() == 4).count();
        user.setCount4(count4);
        Long count5 = allSubordinates.stream().filter(s->s.getVipId() == 5).count();
        user.setCount5(count5);
        Long count6 = allSubordinates.stream().filter(s->s.getVipId() == 6).count();
        user.setCount6(count6);
        Long count7 = allSubordinates.stream().filter(s->s.getVipId() == 7).count();
        user.setCount7(count7);
        List<UserSignRecord> list = userSignRecordService.lambdaQuery().eq(UserSignRecord::getSignDay, LocalDate.now())
                .eq(UserSignRecord::getAppUserId,userId).list();
        if (!list.isEmpty()) {
@@ -742,11 +721,10 @@
                    record.setInviteUserName(byId1.getName());
                }
            }
            if (record.getShopId()!=null){
                R<Shop> shopById = shopClient.getShopById(record.getShopId());
                if (shopById.getData()!=null){
                    record.setShopName(shopById.getData().getName());
                }
            Shop shop1 = shopClient.getServiceProvider(record.getId()).getData();
            if(null != shop1){
                record.setShopName(shop1.getName());
                record.setShopId(shop1.getId());
            }
            record.setTotalPoint(record.getUserTotalPoint());
        }
@@ -975,9 +953,10 @@
        Long userid = tokenService.getLoginUser().getUserid();
        SysUser sysUser = sysUserClient.getSysUser(userid).getData();
        AppUser byId = appUserService.getById(id);
        Shop shop1 = shopClient.getServiceProvider(id).getData();
        Shop shop1 = shopClient.getServiceProvider(byId.getId()).getData();
        if(null != shop1){
            byId.setShopName(shop1.getName());
            byId.setShopId(shop1.getId());
        }
        R<List<Shop>> shopByUserId = shopClient.getShopByUserId(id);
        if (shopByUserId.getData() != null) {
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserCouponController.java
@@ -218,6 +218,9 @@
        if (data==null){
            return  R.fail("当前优惠券不存在,请刷新后重试");
        }
        if(data.getDelFlag() == 1 || data.getShelfStatus() == 0){
            return  R.fail("当前优惠券不存在,请刷新后重试");
        }
        long count = userCouponService.count(new LambdaQueryWrapper<UserCoupon>().eq(UserCoupon::getCouponId, couponId).eq(UserCoupon::getDelFlag, 0));
        if(data.getSendNum() <= count){
            return R.fail("当前优惠券已全部领取完毕");
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/BalanceChangeRecordServiceImpl.java
@@ -97,10 +97,12 @@
            BigDecimal beforeAmount = changeRecord.getBeforeAmount();
            BigDecimal afterAmount = changeRecord.getAfterAmount();
            if (beforeAmount.compareTo(afterAmount) > 0){
            if(changeRecord.getChangeType() == 2){
                BigDecimal changeAmount = changeRecord.getChangeAmount();
                totalWithdraw = totalWithdraw.add(changeAmount);
            }
            if (beforeAmount.compareTo(afterAmount) > 0){
                walletStatisticsDetail.setFlag(2);
            }else {
                walletStatisticsDetail.setFlag(1);
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java
@@ -317,13 +317,17 @@
        Long userid = tokenService.getLoginUser().getUserid();
        SysUser sysUser = sysUserClient.getSysUser(userid).getData();
        List<Order> orderList = orderService.list(new LambdaQueryWrapper<Order>()
                .ne(Order::getOrderStatus, 5)
                .eq(sysUser.getRoleType() == 2, Order::getShopId, sysUser.getObjectId())
        LambdaQueryWrapper<Order> wrapper = new LambdaQueryWrapper<Order>()
                .in(Order::getOrderStatus, Arrays.asList(1, 2, 3, 4, 7, 8))
                .eq(Order::getPayStatus, 2)
                .eq(Order::getDelFlag, 0)
                .between(Order::getCreateTime, LocalDateTime.parse(startTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")), LocalDateTime.parse(endTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")))
                .orderByAsc(Order::getCreateTime));
                .orderByAsc(Order::getCreateTime);
        if(sysUser.getRoleType() == 2){
            //门店只拥有服务订单和自提商品订单
            wrapper.eq(Order::getShopId, sysUser.getObjectId()).eq(Order::getOrderType, 1).or().eq(Order::getOrderType, 2).eq(Order::getDistributionMode, 1);
        }
        List<Order> orderList = orderService.list(wrapper);
        Map<String, List<Order>> map = orderList.stream()
                .collect(Collectors.groupingBy(
                        item -> item.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")),
@@ -555,7 +559,6 @@
     */
    @GetMapping("/exportExpress")
    public void exportExpress(HttpServletResponse response, OrderPageList orderPage) {
        //搜索条件,用户姓名
        if (StringUtils.isNotEmpty(orderPage.getUserName())) {
            List<AppUser> data = appUserClient.getAppUserByNameNoFilter(orderPage.getUserName()).getData();
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderExport.java
@@ -62,7 +62,7 @@
    /**
     * 订单类型
     */
    @Excel(name = "订单类型", readConverterExp = "1=服务,2=单品")
    @Excel(name = "订单类型", readConverterExp = "1=服务,2=单品(自提),3=单品(快递)")
    private String orderType;
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderPageList.java
@@ -23,7 +23,7 @@
    private String userName;
    @ApiModelProperty("联系电话")
    private String phone;
    @ApiModelProperty("商品类型(1=服务,2=单品)")
    @ApiModelProperty("商品类型(1=服务,2=单品-自提,3=单品-快递)")
    private Integer goodsType;
    @ApiModelProperty("支付方式(1=微信,2=余额,3=积分)")
    private Integer paymentType;
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
@@ -57,7 +57,7 @@
            DATE_FORMAT(create_time, '%Y-%m-%d %H:%i:%s') as createTime,
            DATE_FORMAT(after_sale_time, '%Y-%m-%d %H:%i:%s') as afterSaleTime,
            app_user_id as appUserId,
            order_type as goodsType,
            CASE WHEN order_type = 1 THEN 1 WHEN order_type = 2 and distribution_mode = 1 THEN 2 ELSE 3 END as goodsType,
            pay_method as paymentType,
            total_amount as orderMoney,
            point,
@@ -69,7 +69,7 @@
            deliver_province_code,
            deliver_city,
            deliver_city_code
        from t_order where del_flag = 0
        from t_order where del_flag = 0 and pay_status = 2
        <if test="null != item.code and '' != item.code">
            and order_number like CONCAT('%', #{item.code}, '%')
        </if>
@@ -79,8 +79,14 @@
                #{tem}
            </foreach>
        </if>
        <if test="null != item.goodsType">
        <if test="null != item.goodsType and 1 == item.goodsType">
            and order_type = #{item.goodsType}
        </if>
        <if test="null != item.goodsType and 2 == item.goodsType">
            and order_type = 2 and distribution_mode = 1
        </if>
        <if test="null != item.goodsType and 3 == item.goodsType">
            and order_type = 2 and distribution_mode = 2
        </if>
        <if test="null != item.paymentType">
            and pay_method = #{item.paymentType}
@@ -110,9 +116,9 @@
        coalesce( SUM( CASE WHEN tor.order_type = 2 and tor.order_status!=5 THEN tor.total_amount ELSE 0 END ),0) as
        singleTotalMoney
        FROM
        t_order tor where 1 = 1 AND tor.del_flag = 0
        t_order tor where tor.del_flag = 0 and tor.order_status in (1, 2, 3, 4, 7, 8) and tor.pay_status = 2
        <if test="null != shopId">
            and tor.shop_id = #{shopId}
            and tor.shop_id = #{shopId} and (if(tor.order_type = 2, tor.distribution_mode = 1, 1 = 1))
        </if>
    </select>
@@ -149,19 +155,24 @@
        ifnull(count(1), 0)
        from t_order a
        where del_flag = 0 and pay_status = 2 and order_status in (1, 2, 3, 4, 7, 8)
        and shop_id in
        <foreach collection="shopIds" item="shopId" separator="," open="(" close=")" index="index">
            #{shopId}
        </foreach>
        <if test="null != type">
            and order_type = #{type}
        <if test="null != shopIds and shopIds.size() > 0">
            and shop_id in
            <foreach collection="shopIds" item="shopId" separator="," open="(" close=")" index="index">
                #{shopId}
            </foreach>
        </if>
        <if test="null != type and 1 == type">
            and a.order_type = #{type}
        </if>
        <if test="null != type and 2 == type">
            and a.order_type = #{type} and a.distribution_mode = 1
        </if>
    </select>
    <select id="getOrderExportList" resultType="com.ruoyi.order.vo.OrderExport">
        SELECT
            o.order_status,
            o.order_number,
            o.order_type,
            CASE WHEN o.order_type = 1 THEN 1 WHEN o.order_type = 2 and o.distribution_mode = 1 THEN 2 ELSE 3 END as orderType,
            case when o.order_type = 1 then 1 else o.distribution_mode end as distributionMode,
            o.address_Json,
            o.create_time,
@@ -189,8 +200,14 @@
                #{tem}
            </foreach>
        </if>
        <if test="null != item.goodsType">
            and o.order_type = #{item.goodsType}
        <if test="null != item.goodsType and 1 == item.goodsType">
            and order_type = #{item.goodsType}
        </if>
        <if test="null != item.goodsType and 2 == item.goodsType">
            and order_type = 2 and distribution_mode = 1
        </if>
        <if test="null != item.goodsType and 3 == item.goodsType">
            and order_type = 2 and distribution_mode = 2
        </if>
        <if test="null != item.paymentType">
            and o.pay_method = #{item.paymentType}
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/CouponInfoController.java
@@ -161,19 +161,21 @@
        Long userid = tokenService.getLoginUserApplet().getUserid();
        AppUser appUserById = appUserClient.getAppUserById(userid);
        LocalDateTime now = LocalDateTime.now();
        //查出全部可领取的优惠劵
        List<CouponInfo> list = couponInfoService.lambdaQuery()
                .le(CouponInfo::getSendStartTime, now)
                .ge(CouponInfo::getSendEndTime, now)
                .eq(CouponInfo::getPersonType, 1)
                .eq(CouponInfo::getDelFlag, 0)
                .eq(CouponInfo::getShelfStatus, 1)
                .list();
        //查出指定人员可领取优惠券
        List<CouponInfo> list1 = couponInfoService.lambdaQuery()
                .le(CouponInfo::getSendStartTime, now)
                .ge(CouponInfo::getSendEndTime, now)
                .eq(CouponInfo::getPersonType, 2)
                .eq(CouponInfo::getDelFlag, 0)
                .eq(CouponInfo::getShelfStatus, 1)
                .apply("FIND_IN_SET('" + appUserById.getId() + "', person_ids)")
                .list();
        //查出指定会员可领取优惠劵
@@ -181,6 +183,8 @@
                .le(CouponInfo::getSendStartTime, now)
                .ge(CouponInfo::getSendEndTime, now)
                .eq(CouponInfo::getPersonType, 3)
                .eq(CouponInfo::getDelFlag, 0)
                .eq(CouponInfo::getShelfStatus, 1)
                .apply("FIND_IN_SET('" + appUserById.getVipId() + "', vip_ids)").list();
        List<CouponInfo> returnList = new ArrayList<>();
        returnList.addAll(list);
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java
@@ -702,33 +702,20 @@
    @ApiOperation(value = "门店统计", tags = {"管理后台-首页统计"})
    public R<ShopStatistics> shopStatistics(@ApiParam("门店id") Integer shopId) {
        ShopStatistics shopStatistics = shopMapper.getShopStatistics(shopId);
        List<Integer> shopIds = shopService.list(new LambdaQueryWrapper<Shop>()
                        .eq(Shop::getDelFlag, 0)
                        .eq(shopId !=null,Shop::getId, shopId))
                .stream()
                .map(Shop::getId)
                .collect(Collectors.toList());
        if (CollectionUtils.isEmpty(shopIds)){
            shopStatistics.setTotalOrder(0);
            shopStatistics.setServiceOrder(0);
            shopStatistics.setGoodsOrder(0);
        }else {
            OrderSaleNum serviceOrderSaleNum = new OrderSaleNum();
            serviceOrderSaleNum.setShopIds(shopIds);
            serviceOrderSaleNum.setType(1);
            Integer serviceOrder = orderClient.getShopSaleNumByShopIds(serviceOrderSaleNum).getData();
            OrderSaleNum goodsOrderSaleNum = new OrderSaleNum();
            goodsOrderSaleNum.setShopIds(shopIds);
            goodsOrderSaleNum.setType(2);
            Integer goodsOrder = orderClient.getShopSaleNumByShopIds(goodsOrderSaleNum).getData();
            shopStatistics.setTotalOrder(serviceOrder + goodsOrder);
            shopStatistics.setServiceOrder(serviceOrder);
            shopStatistics.setGoodsOrder(goodsOrder);
        }
        OrderSaleNum serviceOrderSaleNum = new OrderSaleNum();
        serviceOrderSaleNum.setShopIds(null == shopId ? new ArrayList<>() : Arrays.asList(shopId));
        serviceOrderSaleNum.setType(1);
        Integer serviceOrder = orderClient.getShopSaleNumByShopIds(serviceOrderSaleNum).getData();
        OrderSaleNum goodsOrderSaleNum = new OrderSaleNum();
        goodsOrderSaleNum.setShopIds(null == shopId ? new ArrayList<>() : Arrays.asList(shopId));
        goodsOrderSaleNum.setType(2);
        Integer goodsOrder = orderClient.getShopSaleNumByShopIds(goodsOrderSaleNum).getData();
        shopStatistics.setTotalOrder(serviceOrder + goodsOrder);
        shopStatistics.setServiceOrder(serviceOrder);
        shopStatistics.setGoodsOrder(goodsOrder);
        return R.ok(shopStatistics);
    }