From c18ec3846c8483975de2224c1ecac9470e9b2804 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期三, 16 八月 2023 19:21:36 +0800
Subject: [PATCH] 同步代码

---
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAgentServiceImpl.java |  160 ++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 114 insertions(+), 46 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 33fde55..f0fbe97 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
@@ -1,8 +1,12 @@
 package com.stylefeng.guns.modular.system.service.impl;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.stylefeng.guns.core.shiro.ShiroKit;
 import com.stylefeng.guns.core.util.DateUtil;
+import com.stylefeng.guns.core.util.ToolUtil;
 import com.stylefeng.guns.modular.system.controller.resp.TAgentResp;
 import com.stylefeng.guns.modular.system.dao.*;
 import com.stylefeng.guns.modular.system.enums.OrderStateEnum;
@@ -10,8 +14,12 @@
 import com.stylefeng.guns.modular.system.enums.StatusEnum;
 import com.stylefeng.guns.modular.system.enums.UserTypeEnum;
 import com.stylefeng.guns.modular.system.model.*;
+import com.stylefeng.guns.modular.system.service.IDivisionRecordService;
 import com.stylefeng.guns.modular.system.service.ITAgentService;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.stylefeng.guns.modular.system.util.MallBook.model.InterfaceResponse;
+import com.stylefeng.guns.modular.system.util.MallBook.model.QueryBalance;
+import com.stylefeng.guns.modular.system.util.MallBook.util.TrhRequest;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -55,6 +63,9 @@
     @Autowired
     private TUserToCouponMapper tUserToCouponMapper;
 
+    @Autowired
+    private IDivisionRecordService divisionRecordService;
+
     @Override
     public EntityWrapper<TAgent> getAgentWrapper(String principal, String principalPhone, String createTime,Integer status) {
         EntityWrapper<TAgent> wrapper = new EntityWrapper<>();
@@ -95,6 +106,7 @@
         model.addAttribute("startTimeToEndTime",new SimpleDateFormat("yyyy-MM-dd").format(tAgent.getCreateTime()).replace("-",".") + "-" +
                 new SimpleDateFormat("yyyy-MM-dd").format(new Date()).replace("-","."));
 
+        model.addAttribute("id", agentId);
         model.addAttribute("principal",tAgent.getPrincipal());
         model.addAttribute("principalPhone",tAgent.getPrincipalPhone());
         model.addAttribute("email",tAgent.getEmail());
@@ -108,24 +120,6 @@
         List<TOrder> orders = orderList.stream().filter(order -> (order.getState().equals(OrderStateEnum.FINISH.getCode()) || order.getState().equals(OrderStateEnum.WAIT_EVALUATED.getCode()))
                 && 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());
-        // 已使用优惠券金额求和,已使用优惠券id
-//        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<TUserToCoupon> tUserToCoupons = tUserToCouponMapper.selectList(new EntityWrapper<TUserToCoupon>().eq("objectId",tAgent.getId())
@@ -133,26 +127,29 @@
         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);
-        // 司机信息
-        // 司机数
-        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.AGENT.getCode())
-                .eq("payStatus", PayStatusEnum.FINISH.getCode()));
-        if(CollectionUtils.isEmpty(tRechargeRecords)){
-            model.addAttribute("driverRecharge",BigDecimal.ZERO);
-        }else {
-            tRechargeRecords.stream().map(TRechargeRecord::getAmount).reduce(BigDecimal::add).ifPresent(record->model.addAttribute("driverRecharge",record));
+        // 总量减去有效数量和过期数量为使用数量
+        int validCount = tUserToCoupons.stream().mapToInt(TUserToCoupon::getValidCount).sum();//有效数量
+        int expireCount = tUserToCoupons.stream().mapToInt(TUserToCoupon::getExpireCount).sum();//过期数量
+        model.addAttribute("usedCoupon",sum-validCount-expireCount);
+
+        Double aDouble = divisionRecordService.queryTotalMoney(2, agentId);
+        model.addAttribute("income",aDouble);
+        QueryBalance queryBalance = new QueryBalance();
+        queryBalance.setUserId(tAgent.getMerchantNumber());
+        TrhRequest<QueryBalance> request = new TrhRequest();
+        InterfaceResponse execute = request.execute(queryBalance, QueryBalance.SERVICE_CODE);
+        model.addAttribute("balance", 0);
+        if("0000".equals(execute.getCode())){
+            JSONObject jsonObject = JSON.parseObject(execute.getResult());
+            model.addAttribute("balance", jsonObject.getDoubleValue("settledAmount") / 100);
         }
     }
 
@@ -162,7 +159,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>());
@@ -186,7 +183,13 @@
                 // 过滤已使用优惠券
                 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)){
@@ -202,18 +205,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)){
                 // 司机数
@@ -266,4 +275,63 @@
         map.put("agentTotal",agentTotal);
         map.put("agentMonthTotal",agentMonthTotal);
     }
+
+
+    @Override
+    public Map<String, Object> queryAgentSummaryData(Integer id, String time) {
+        // 查询代理商用户信息
+        TAgent tAgent = tAgentMapper.selectById(id);
+        Map<String, Object> map = new HashMap<>();
+        String startTime = "";
+        String endTime = "";
+        if(ToolUtil.isNotEmpty(time)){
+            startTime = time.split(" - ")[0];
+            endTime = time.split(" - ")[1];
+        }
+        Wrapper<TOrder> agentId = new EntityWrapper<TOrder>().eq("agentId", tAgent.getId());
+        if(ToolUtil.isNotEmpty(time)){
+            agentId.last(" and DATE_FORMAT(createTime, '%Y-%m-%d') between '" + startTime + "' and '" + endTime + "'");
+        }
+        List<TOrder> orderList = tOrderMapper.selectList(agentId);
+        map.put("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.getOrderMoney().compareTo(new BigDecimal("14")) && order.getAgentId().equals(tAgent.getId())).collect(Collectors.toList());
+        map.put("validOrder",orders.size());
+        // 优惠券信息
+        // 过滤代理商发放的优惠券
+        Wrapper<TUserToCoupon> wrapper = new EntityWrapper<TUserToCoupon>().eq("objectId", tAgent.getId())
+                .eq("roleType", 3);
+        if(ToolUtil.isNotEmpty(time)){
+            wrapper.last(" and DATE_FORMAT(createTime, '%Y-%m-%d') between '" + startTime + "' and '" + endTime + "'");
+        }
+        List<TUserToCoupon> tUserToCoupons = tUserToCouponMapper.selectList(wrapper);
+        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())));
+            }
+        }
+        map.put("couponPriceSum", couponPriceSum);
+        // 过滤代理商发放的优惠券
+        int sum = tUserToCoupons.stream().mapToInt(TUserToCoupon::getCouponTotal).sum();
+        // 总量减去有效数量和过期数量为使用数量
+        int validCount = tUserToCoupons.stream().mapToInt(TUserToCoupon::getValidCount).sum();//有效数量
+        int expireCount = tUserToCoupons.stream().mapToInt(TUserToCoupon::getExpireCount).sum();//过期数量
+        map.put("usedCoupon",sum-validCount-expireCount);
+
+        Double aDouble = divisionRecordService.queryTotalMoney(2, id);
+        map.put("income",aDouble);
+        QueryBalance queryBalance = new QueryBalance();
+        queryBalance.setUserId(tAgent.getMerchantNumber());
+        TrhRequest<QueryBalance> request = new TrhRequest();
+        InterfaceResponse execute = request.execute(queryBalance, QueryBalance.SERVICE_CODE);
+        map.put("balance", 0);
+        if("0000".equals(execute.getCode())){
+            JSONObject jsonObject = JSON.parseObject(execute.getResult());
+            map.put("balance", jsonObject.getDoubleValue("settledAmount") / 100);
+        }
+        return map;
+    }
 }

--
Gitblit v1.7.1