From d5b3e5a413bcfccba294793ee093722f31b2448a Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期三, 16 八月 2023 17:02:13 +0800
Subject: [PATCH] 添加推单日志

---
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAgentServiceImpl.java |  142 ++++++++++++++++++++++++++++++++++++----------
 1 files changed, 110 insertions(+), 32 deletions(-)

diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAgentServiceImpl.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAgentServiceImpl.java
index 9c49cd6..d607725 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAgentServiceImpl.java
+++ b/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;
 
@@ -51,9 +52,11 @@
 
     @Autowired
     private TRechargeRecordMapper tRechargeRecordMapper;
+    @Autowired
+    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)){
@@ -66,15 +69,20 @@
         // 开始,结束时间
         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);
         return wrapper;
     }
 
@@ -98,33 +106,54 @@
         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());
-        // 查询已使用优惠券金额求和
-        List<TCoupon> tCoupons1 = tCouponMapper.selectList(new EntityWrapper<TCoupon>().in("id", usedCouponId));
-        if(CollectionUtils.isEmpty(tCoupons1)){
-            model.addAttribute("couponPriceSum", BigDecimal.ZERO);
-        }else {
-            tCoupons1.stream().map(TCoupon::getCouponPreferentialAmount).reduce(BigDecimal::add).ifPresent(bigDecimal -> model.addAttribute("couponPriceSum", bigDecimal));
-        }
+//        List<Integer> usedCouponId = usedCoupon.stream().map(TOrder::getCouponId).collect(Collectors.toList());
+//        if(CollectionUtils.isEmpty(usedCouponId)){
+//            // 如果优惠券为空
+//            model.addAttribute("couponPriceSum", BigDecimal.ZERO);
+//        }else {
+//            // 查询已使用优惠券金额求和
+//            List<TCoupon> tCoupons1 = tCouponMapper.selectList(new EntityWrapper<TCoupon>().in("id", usedCouponId));
+//            if(CollectionUtils.isEmpty(tCoupons1)){
+//                model.addAttribute("couponPriceSum", BigDecimal.ZERO);
+//            }else {
+//                tCoupons1.stream().map(TCoupon::getCouponPreferentialAmount).reduce(BigDecimal::add).ifPresent(bigDecimal -> model.addAttribute("couponPriceSum", bigDecimal));
+//            }
+//        }
         // 优惠券信息
         // 过滤代理商发放的优惠券
-        List<TCoupon> tCoupons = tCouponMapper.selectList(new EntityWrapper<TCoupon>());
-        model.addAttribute("issuedCoupon",tCoupons.size());
+        List<TUserToCoupon> tUserToCoupons = tUserToCouponMapper.selectList(new EntityWrapper<TUserToCoupon>().eq("objectId",tAgent.getId())
+                .eq("roleType",3));
+        BigDecimal couponPriceSum = BigDecimal.ZERO;
+        for (TUserToCoupon userToCoupon : tUserToCoupons) {
+            TCoupon tCoupons1 = tCouponMapper.selectById(userToCoupon.getCouponId());
+            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);
@@ -139,6 +168,8 @@
         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>());
 
@@ -156,24 +187,51 @@
                 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());
-                // 查询已使用优惠券金额求和
-                List<TCoupon> tCoupons1 = tCouponMapper.selectList(new EntityWrapper<TCoupon>().in("id", usedCouponId));
-                tCoupons1.stream().map(TCoupon::getCouponPreferentialAmount).reduce(BigDecimal::add).ifPresent(tAgentResp::setCouponPriceSum);
+//                List<Integer> usedCouponId = usedCoupon.stream().map(TOrder::getCouponId).collect(Collectors.toList());
+//                if(CollectionUtils.isEmpty(usedCouponId)){
+//                    tAgentResp.setCouponPriceSum(BigDecimal.ZERO);
+//                }else {
+//                    // 查询已使用优惠券金额求和
+//                    BigDecimal couponPriceSum = BigDecimal.ZERO;
+//                    for (Integer id : usedCouponId) {
+//                        TCoupon tCoupons1 = tCouponMapper.selectById(id);
+//                        couponPriceSum = couponPriceSum.add(tCoupons1.getCouponPreferentialAmount());
+//                    }
+//                    tAgentResp.setCouponPriceSum(couponPriceSum);
+//                }
             }
 
-            if(!CollectionUtils.isEmpty(tCoupons)){
-                // 过滤代理商发放的优惠券
-                List<TCoupon> coupons = tCoupons.stream().filter(coupon -> tAgent.getId().equals(coupon.getAgentId())).collect(Collectors.toList());
-                tAgentResp.setIssuedCoupon(coupons.size());
-            }
+//            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)){
                 // 司机数
@@ -181,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);
             }
@@ -193,17 +252,36 @@
     }
 
     @Override
-    public void getDataStatistics(Integer agentId, Model model) {
+    public void getDataStatistics(Integer agentId, Model model,Map<String, Object> map) {
         // 代理商总数
         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));
         model.addAttribute("agentTotal",agentTotal);
         model.addAttribute("agentMonthTotal",agentMonthTotal);
+        map.put("agentTotal",agentTotal);
+        map.put("agentMonthTotal",agentMonthTotal);
+    }
+
+    @Override
+    public void getDataStatisticsByIds(List<Integer> ids, Model model, Map<String, Object> map) {
+        // 代理商总数
+        Integer agentTotal = tAgentMapper.selectCount(new EntityWrapper<TAgent>()
+                .in("id", ids));
+        // 代理商最近一个月新增数量
+        LocalDateTime now = LocalDateTime.now();
+        LocalDateTime localDate = now.minusMonths(1);
+        Integer agentMonthTotal = tAgentMapper.selectCount(new EntityWrapper<TAgent>()
+                .in("id", ids)
+                .between("createTime", localDate, now));
+        model.addAttribute("agentTotal",agentTotal);
+        model.addAttribute("agentMonthTotal",agentMonthTotal);
+        map.put("agentTotal",agentTotal);
+        map.put("agentMonthTotal",agentMonthTotal);
     }
 }

--
Gitblit v1.7.1