puzhibing
2023-08-16 d5b3e5a413bcfccba294793ee093722f31b2448a
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAgentServiceImpl.java
@@ -22,6 +22,7 @@
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
@@ -55,7 +56,7 @@
    private TUserToCouponMapper tUserToCouponMapper;
    @Override
    public EntityWrapper<TAgent> getAgentWrapper(String principal, String principalPhone, String createTime) {
    public EntityWrapper<TAgent> getAgentWrapper(String principal, String principalPhone, String createTime,Integer status) {
        EntityWrapper<TAgent> wrapper = new EntityWrapper<>();
        // 昵称
        if(StringUtils.hasLength(principal)){
@@ -68,13 +69,17 @@
        // 开始,结束时间
        if(StringUtils.hasLength(createTime)){
            String[] split = createTime.split(" - ");
            Date startTime = DateUtil.getDate_str4(split[0]);
            Date endTime = DateUtil.getDate_str4(split[1]);
            Date startTime = DateUtil.getDate_str3(split[0]+" 00:00:00");
            Date endTime = DateUtil.getDate_str3(split[1]+" 23:59:59");
            wrapper.between("createTime",startTime,endTime);
        }
        // 判断是否为代理商
        if(Objects.requireNonNull(ShiroKit.getUser()).getRoleType() == 3){
            wrapper.eq("id",ShiroKit.getUser().getObjectId());
        }
        // 状态
        if(Objects.nonNull(status)){
            wrapper.eq("status",status);
        }
        wrapper.ne("status", StatusEnum.DELETE.getCode());
        wrapper.orderBy("createTime",false);
@@ -101,12 +106,12 @@
        model.addAttribute("orderSum",orderList.size());
        // 过滤已完成和待评价订单,且支付金额在14元以上
        List<TOrder> orders = orderList.stream().filter(order -> (order.getState().equals(OrderStateEnum.FINISH.getCode()) || order.getState().equals(OrderStateEnum.WAIT_EVALUATED.getCode()))
                && 0 < order.getPayMoney().compareTo(new BigDecimal("14")) && order.getAgentId().equals(tAgent.getId())).collect(Collectors.toList());
                && 0 < order.getOrderMoney().compareTo(new BigDecimal("14")) && order.getAgentId().equals(tAgent.getId())).collect(Collectors.toList());
        model.addAttribute("validOrder",orders.size());
        // 过滤已使用优惠券
        List<TOrder> usedCoupon = orderList.stream().filter(order -> (order.getState().equals(OrderStateEnum.FINISH.getCode()) || order.getState().equals(OrderStateEnum.WAIT_EVALUATED.getCode()))
                && Objects.nonNull(order.getCouponId()) && order.getAgentId().equals(tAgent.getId())).collect(Collectors.toList());
        model.addAttribute("usedCoupon",usedCoupon.size());
//        model.addAttribute("usedCoupon",usedCoupon.size());
        // 已使用优惠券金额求和,已使用优惠券id
//        List<Integer> usedCouponId = usedCoupon.stream().map(TOrder::getCouponId).collect(Collectors.toList());
//        if(CollectionUtils.isEmpty(usedCouponId)){
@@ -128,20 +133,27 @@
        BigDecimal couponPriceSum = BigDecimal.ZERO;
        for (TUserToCoupon userToCoupon : tUserToCoupons) {
            TCoupon tCoupons1 = tCouponMapper.selectById(userToCoupon.getCouponId());
            couponPriceSum = couponPriceSum.add(tCoupons1.getCouponPreferentialAmount().multiply(new BigDecimal(userToCoupon.getCouponTotal())));
            if(Objects.nonNull(tCoupons1)){
                couponPriceSum = couponPriceSum.add(tCoupons1.getCouponPreferentialAmount().multiply(new BigDecimal(userToCoupon.getCouponTotal())));
            }
        }
        model.addAttribute("couponPriceSum", couponPriceSum);
        // 过滤代理商发放的优惠券
        int sum = tUserToCoupons.stream().mapToInt(TUserToCoupon::getCouponTotal).sum();
        model.addAttribute("issuedCoupon",sum);
        // 总量减去有效数量和过期数量为使用数量
        int validCount = tUserToCoupons.stream().mapToInt(TUserToCoupon::getValidCount).sum();//有效数量
        int expireCount = tUserToCoupons.stream().mapToInt(TUserToCoupon::getExpireCount).sum();//过期数量
        model.addAttribute("usedCoupon",sum-validCount-expireCount);
        // 司机信息
        // 司机数
        List<TDriver> drivers = tDriverMapper.selectList(new EntityWrapper<TDriver>().eq("agentId", tAgent.getId()));
        model.addAttribute("driverCount",drivers.size());
        // 司机充值计算
        List<Integer> driverIds = drivers.stream().map(TDriver::getId).collect(Collectors.toList());
        List<TRechargeRecord> tRechargeRecords = tRechargeRecordMapper.selectList(new EntityWrapper<TRechargeRecord>().in("userId", driverIds)
                .eq("type", UserTypeEnum.DRIVER.getCode())
        List<TRechargeRecord> tRechargeRecords = tRechargeRecordMapper.selectList(new EntityWrapper<TRechargeRecord>()
                .in("userId", driverIds)
                .eq("type", UserTypeEnum.AGENT.getCode())
                .eq("payStatus", PayStatusEnum.FINISH.getCode()));
        if(CollectionUtils.isEmpty(tRechargeRecords)){
            model.addAttribute("driverRecharge",BigDecimal.ZERO);
@@ -156,7 +168,7 @@
        List<TOrder> tOrders = tOrderMapper.selectList(new EntityWrapper<TOrder>());
        // 查询优惠券
        List<TCoupon> tCoupons = tCouponMapper.selectList(new EntityWrapper<TCoupon>());
        // 用户
        // 用户优惠券
        List<TUserToCoupon> tUserToCoupons = tUserToCouponMapper.selectList(new EntityWrapper<TUserToCoupon>());
        // 查询司机信息
        List<TDriver> tDrivers = tDriverMapper.selectList(new EntityWrapper<TDriver>());
@@ -175,12 +187,18 @@
                tAgentResp.setOrderSum(orderList.size());
                // 过滤已完成和待评价订单,且支付金额在14元以上
                List<TOrder> orders = tOrders.stream().filter(order -> (order.getState().equals(OrderStateEnum.FINISH.getCode()) || order.getState().equals(OrderStateEnum.WAIT_EVALUATED.getCode()))
                        && 0 < order.getPayMoney().compareTo(new BigDecimal("14")) && tAgent.getId().equals(order.getAgentId())).collect(Collectors.toList());
                        && 0 < order.getOrderMoney().compareTo(new BigDecimal("14")) && tAgent.getId().equals(order.getAgentId())).collect(Collectors.toList());
                tAgentResp.setValidOrder(orders.size());
                // 过滤已使用优惠券
                List<TOrder> usedCoupon = tOrders.stream().filter(order -> (order.getState().equals(OrderStateEnum.FINISH.getCode()) || order.getState().equals(OrderStateEnum.WAIT_EVALUATED.getCode()))
                        && Objects.nonNull(order.getCouponId()) && tAgent.getId().equals(order.getAgentId())).collect(Collectors.toList());
                // 通过订单总量获取已完成订单的使用优惠券数量及优惠券金额
                tAgentResp.setUsedCoupon(usedCoupon.size());
                // 金额
                Optional<BigDecimal> reduce = usedCoupon.stream().map(TOrder::getDiscountedPrice).reduce(BigDecimal::add);
                reduce.ifPresent(tAgentResp::setCouponPriceSum);
                // 已使用优惠券金额求和,已使用优惠券id
//                List<Integer> usedCouponId = usedCoupon.stream().map(TOrder::getCouponId).collect(Collectors.toList());
//                if(CollectionUtils.isEmpty(usedCouponId)){
@@ -196,18 +214,24 @@
//                }
            }
            if(!CollectionUtils.isEmpty(tUserToCoupons)){
                // 过滤代理商发放的优惠券
                List<TUserToCoupon> userToCoupons = tUserToCoupons.stream().filter(coupon -> tAgent.getId().equals(coupon.getObjectId()) && coupon.getRoleType() == 3).collect(Collectors.toList());
                int sum = userToCoupons.stream().mapToInt(TUserToCoupon::getCouponTotal).sum();
                tAgentResp.setIssuedCoupon(sum);
                BigDecimal couponPriceSum = BigDecimal.ZERO;
                for (TUserToCoupon userToCoupon : userToCoupons) {
                    TCoupon tCoupons1 = tCouponMapper.selectById(userToCoupon.getCouponId());
                    couponPriceSum = couponPriceSum.add(tCoupons1.getCouponPreferentialAmount().multiply(new BigDecimal(userToCoupon.getCouponTotal())));
                }
                tAgentResp.setCouponPriceSum(couponPriceSum);
            }
//            if(!CollectionUtils.isEmpty(tUserToCoupons)){
//                // 过滤代理商发放的优惠券
//                List<TUserToCoupon> userToCoupons = tUserToCoupons.stream().filter(coupon -> tAgent.getId().equals(coupon.getObjectId()) && coupon.getRoleType() == 3).collect(Collectors.toList());
//                int sum = userToCoupons.stream().mapToInt(TUserToCoupon::getCouponTotal).sum();
//                tAgentResp.setIssuedCoupon(sum);
//                // 总量减去有效数量和过期数量为使用数量
//                int validCount = userToCoupons.stream().mapToInt(TUserToCoupon::getValidCount).sum();//有效数量
//                int expireCount = userToCoupons.stream().mapToInt(TUserToCoupon::getExpireCount).sum();//过期数量
//                tAgentResp.setUsedCoupon(sum-validCount-expireCount);
//                BigDecimal couponPriceSum = BigDecimal.ZERO;
//                for (TUserToCoupon userToCoupon : userToCoupons) {
//                    TCoupon tCoupons1 = tCouponMapper.selectById(userToCoupon.getCouponId());
//                    if(Objects.nonNull(tCoupons1)){
//                        couponPriceSum = couponPriceSum.add(tCoupons1.getCouponPreferentialAmount().multiply(new BigDecimal(userToCoupon.getCouponTotal())));
//                    }
//                }
//                tAgentResp.setCouponPriceSum(couponPriceSum);
//            }
            if(!CollectionUtils.isEmpty(tDrivers)){
                // 司机数
@@ -215,8 +239,9 @@
                tAgentResp.setDriverCount(drivers.size());
                // 司机充值计算
                List<Integer> driverIds = drivers.stream().map(TDriver::getId).collect(Collectors.toList());
                List<TRechargeRecord> tRechargeRecords = tRechargeRecordMapper.selectList(new EntityWrapper<TRechargeRecord>().in("userId", driverIds)
                        .eq("type", UserTypeEnum.DRIVER.getCode())
                List<TRechargeRecord> tRechargeRecords = tRechargeRecordMapper.selectList(new EntityWrapper<TRechargeRecord>()
                        .eq("agentId", tAgent.getId())
                        .eq("type", UserTypeEnum.AGENT.getCode())
                        .eq("payStatus", PayStatusEnum.FINISH.getCode()));
                tRechargeRecords.stream().map(TRechargeRecord::getAmount).reduce(BigDecimal::add).ifPresent(tAgentResp::setDriverRecharge);
            }
@@ -232,8 +257,8 @@
        Integer agentTotal = tAgentMapper.selectCount(new EntityWrapper<TAgent>()
                .eq("id", agentId));
        // 代理商最近一个月新增数量
        LocalDate now = LocalDate.now();
        LocalDate localDate = now.plusMonths(1);
        LocalDateTime now = LocalDateTime.now();
        LocalDateTime localDate = now.minusMonths(1);
        Integer agentMonthTotal = tAgentMapper.selectCount(new EntityWrapper<TAgent>()
                .eq("id", agentId)
                .between("createTime", localDate, now));
@@ -249,8 +274,8 @@
        Integer agentTotal = tAgentMapper.selectCount(new EntityWrapper<TAgent>()
                .in("id", ids));
        // 代理商最近一个月新增数量
        LocalDate now = LocalDate.now();
        LocalDate localDate = now.plusMonths(1);
        LocalDateTime now = LocalDateTime.now();
        LocalDateTime localDate = now.minusMonths(1);
        Integer agentMonthTotal = tAgentMapper.selectCount(new EntityWrapper<TAgent>()
                .in("id", ids)
                .between("createTime", localDate, now));