From 5cb1979f05446792cc33a8cb6b7aaae906da5a70 Mon Sep 17 00:00:00 2001 From: liujie <liujie> Date: 星期三, 16 八月 2023 09:32:38 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverServiceImpl.java | 387 +++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 279 insertions(+), 108 deletions(-) diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverServiceImpl.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverServiceImpl.java index a6f5ed0..cbb4924 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverServiceImpl.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverServiceImpl.java @@ -2,9 +2,11 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.mapper.Wrapper; import com.stylefeng.guns.core.base.tips.SuccessTip; 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.TDriverCommissionResp; import com.stylefeng.guns.modular.system.controller.resp.TDriverResp; import com.stylefeng.guns.modular.system.controller.util.HttpUtils; @@ -15,23 +17,35 @@ 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.IDriverOnlineTimeService; import com.stylefeng.guns.modular.system.service.ITDriverService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.stylefeng.guns.modular.system.service.ITRegionService; +import org.apache.commons.io.FileUtils; import org.apache.poi.hdf.extractor.TC; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.format.annotation.DateTimeFormat; import org.springframework.stereotype.Service; import org.springframework.ui.Model; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; +import javax.annotation.Resource; import java.io.File; +import java.io.IOException; +import java.io.InputStream; import java.math.BigDecimal; +import java.net.URL; +import java.net.URLConnection; import java.text.SimpleDateFormat; import java.time.LocalDate; +import java.time.LocalDateTime; import java.time.Period; import java.time.ZoneId; +import java.time.format.DateTimeFormatter; import java.util.*; import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; @@ -47,31 +61,36 @@ @Service public class TDriverServiceImpl extends ServiceImpl<TDriverMapper, TDriver> implements ITDriverService { - - @Autowired + @Resource private TAgentMapper tAgentMapper; - @Autowired + @Resource private TBranchOfficeMapper tBranchOfficeMapper; - @Autowired + @Resource private TOrderMapper tOrderMapper; - @Autowired + @Resource private TDriverMapper tDriverMapper; - @Autowired + @Resource private TAppUserMapper tAppUserMapper; - @Autowired + @Resource private TOrderRefusalMapper tOrderRefusalMapper; - @Autowired + @Resource private TRegionMapper tRegionMapper; + @Resource + private TRevenueMapper tRevenueMapper; @Autowired private ITRegionService itRegionService; @Autowired private HttpUtils httpUtils; - @Autowired + @Resource private TRechargeRecordMapper tRechargeRecordMapper; - @Autowired + @Resource private TCashWithdrawalMapper tCashWithdrawalMapper; + @Autowired + private IDriverOnlineTimeService driverOnlineTimeService; + + private Logger log = LoggerFactory.getLogger(this.getClass()); @Override public EntityWrapper<TDriver> getPageList(String createTime, String phone, Integer status) { EntityWrapper<TDriver> wrapper = new EntityWrapper<>(); @@ -86,8 +105,8 @@ // 开始,结束时间 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); } wrapper.orderBy(true,"approvalStatus"); @@ -115,9 +134,9 @@ TDriverResp tDriverResp = new TDriverResp(); BeanUtils.copyProperties(tDriver,tDriverResp); - if(Objects.nonNull(tDriver.getBackgroundBalance()) && Objects.nonNull(tDriver.getBalance())){ + if(Objects.nonNull(tDriver.getBackgroundBalance()) && Objects.nonNull(tDriver.getBalance()) && Objects.nonNull(tDriver.getCouponBalance())){ // 设置余额 - tDriverResp.setBalance(tDriver.getBackgroundBalance().add(tDriver.getBalance())); + tDriverResp.setBalance(tDriver.getBackgroundBalance().add(tDriver.getBalance()).add(tDriver.getCouponBalance())); } // 所属代理商 @@ -132,11 +151,11 @@ } //累计订单量 List<TOrder> cumulativeOrderCount = tOrders.stream().filter(order -> tDriver.getId().equals(order.getDriverId()) - && order.getState().equals(OrderStateEnum.WAIT_EVALUATED.getCode()) && order.getState().equals(OrderStateEnum.FINISH.getCode())).collect(Collectors.toList()); + && (order.getState().equals(OrderStateEnum.WAIT_EVALUATED.getCode()) || order.getState().equals(OrderStateEnum.FINISH.getCode()))).collect(Collectors.toList()); tDriverResp.setCumulativeOrderCount(cumulativeOrderCount.size()); //当月订单量 List<TOrder> monthOrderCount = tOrders.stream().filter(order -> tDriver.getId().equals(order.getDriverId()) - && order.getState().equals(OrderStateEnum.WAIT_EVALUATED.getCode()) && order.getState().equals(OrderStateEnum.FINISH.getCode()) + && (order.getState().equals(OrderStateEnum.WAIT_EVALUATED.getCode()) || order.getState().equals(OrderStateEnum.FINISH.getCode())) && new SimpleDateFormat("yyyyMM").format(order.getCreateTime()).equals(monthDate)).collect(Collectors.toList()); tDriverResp.setMonthOrderCount(monthOrderCount.size()); // 拒单次数 @@ -171,29 +190,16 @@ model.addAttribute("areaName",tDriver.getAreaName()); model.addAttribute("integral",tDriver.getIntegral()); model.addAttribute("score",tDriver.getScore()); + model.addAttribute("source",tDriver.getSource()); model.addAttribute("createTime",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(tDriver.getCreateTime())); + model.addAttribute("balance", tDriver.getBalance().add(tDriver.getCouponBalance()).add(tDriver.getBackgroundBalance()).add(tDriver.getCommission()).doubleValue()); // 计算驾龄 if(Objects.nonNull(tDriver.getFirstCertificateTime())){ - ZoneId zoneId = ZoneId.systemDefault(); - LocalDate firstTime = tDriver.getFirstCertificateTime().toInstant().atZone(zoneId).toLocalDate(); - LocalDate now = tDriver.getFirstCertificateTime().toInstant().atZone(zoneId).toLocalDate(); - Period period = Period.between(firstTime, now); - model.addAttribute("drivingExperience",period.getYears()); + Period period = Period.between(LocalDate.now(), com.stylefeng.guns.modular.system.util.DateUtil.dateToLocalDate(tDriver.getFirstCertificateTime())); + model.addAttribute("drivingExperience",Math.max(Math.abs(period.getYears()), 1)); }else { model.addAttribute("drivingExperience",0); - } - - List<TOrder> tOrders = tOrderMapper.selectList(new EntityWrapper<TOrder>()); - - String monthDate = new SimpleDateFormat("yyyyMM").format(new Date()); - - if(Objects.nonNull(tDriver.getBackgroundBalance()) && Objects.nonNull(tDriver.getBalance())){ - // 设置余额 - tDriver.setBalance(tDriver.getBackgroundBalance().add(tDriver.getBalance())); - model.addAttribute("balance",tDriver.getBalance()); - }else { - model.addAttribute("balance",BigDecimal.ZERO); } // 所属代理商 @@ -221,75 +227,61 @@ TDriver tDriver1 = tDriverMapper.selectById(tDriver.getInviterId()); model.addAttribute("inviterName",tDriver1.getName()); model.addAttribute("inviterPhone",tDriver1.getPhone()); - }else { - model.addAttribute("inviterName",""); - model.addAttribute("inviterPhone",""); } + }else { + model.addAttribute("inviterName",""); + model.addAttribute("inviterPhone",""); } // 查询当前用户邀请了哪些人 List<TDriver> list = tDriverMapper.selectList(new EntityWrapper<TDriver>().eq("inviterId", tDriver.getId())); - if(!CollectionUtils.isEmpty(list)){ - model.addAttribute("inviterCount",list.size()); - model.addAttribute("inviterCommission",0); - }else { - model.addAttribute("inviterCommission",0); - model.addAttribute("inviterCount",0); - } + List<TAppUser> tAppUsers = tAppUserMapper.selectList(new EntityWrapper<TAppUser>().eq("inviterType", 2).eq("inviterId", tDriver.getId())); + model.addAttribute("inviterDriverCount",list.size()); + model.addAttribute("inviterUserCount",tAppUsers.size()); + List<TCashWithdrawal> tCashWithdrawals = tCashWithdrawalMapper.selectList(new EntityWrapper<TCashWithdrawal>() + .eq("type", UserTypeEnum.DRIVER.getCode()) + .eq("userDriverId", tDriver.getId()) + .eq("businessType", 11) + .eq("state", 2)); + Optional<BigDecimal> reduce = tCashWithdrawals.stream().map(TCashWithdrawal::getAmount).reduce(BigDecimal::add); + BigDecimal bigDecimal = BigDecimal.ZERO; + reduce.ifPresent(bigDecimal::add); + model.addAttribute("inviterCommission",bigDecimal.add(tDriver.getCommission())); - if(!CollectionUtils.isEmpty(tOrders)){ - //累计订单量 - List<TOrder> cumulativeOrderCount = tOrders.stream().filter(order -> tDriver.getId().equals(order.getDriverId()) - && order.getState().equals(OrderStateEnum.WAIT_EVALUATED.getCode()) && order.getState().equals(OrderStateEnum.FINISH.getCode())).collect(Collectors.toList()); - model.addAttribute("cumulativeOrderCount",cumulativeOrderCount.size()); - //当月订单量 - List<TOrder> monthOrderCount = tOrders.stream().filter(order -> tDriver.getId().equals(order.getDriverId()) - && order.getState().equals(OrderStateEnum.WAIT_EVALUATED.getCode()) && order.getState().equals(OrderStateEnum.FINISH.getCode()) - && new SimpleDateFormat("yyyyMM").format(order.getCreateTime()).equals(monthDate)).collect(Collectors.toList()); - model.addAttribute("monthOrderCount",monthOrderCount.size()); - // 拒单次数 - List<TOrderRefusal> driverRefusalList = tOrderRefusalMapper.selectList(new EntityWrapper<TOrderRefusal>().eq("driver_id", tDriver.getId())); - model.addAttribute("refusalCount",driverRefusalList.size()); - // 累计收入 司机提现记录加上余额减去充值金额,为累计收入 - List<TCashWithdrawal> tCashWithdrawals = tCashWithdrawalMapper.selectList(new EntityWrapper<TCashWithdrawal>() - .eq("type", UserTypeEnum.DRIVER.getCode()) - .eq("userDriverId", tDriver.getId()) - .eq("state", 2)); - BigDecimal balance = tDriver.getBalance(); - if(!CollectionUtils.isEmpty(tCashWithdrawals)){ - Optional<BigDecimal> reduce = tCashWithdrawals.stream().map(TCashWithdrawal::getAmount).reduce(BigDecimal::add); - if(reduce.isPresent()){ - balance = balance.add(reduce.get()); - } - } - List<TRechargeRecord> tRechargeRecords = tRechargeRecordMapper.selectList(new EntityWrapper<TRechargeRecord>() - .eq("type", UserTypeEnum.DRIVER.getCode()) - .eq("userId", tDriver.getId()) - .eq("payType", 1) - .eq("payStatus", PayStatusEnum.FINISH.getCode())); - if(!CollectionUtils.isEmpty(tRechargeRecords)){ - Optional<BigDecimal> reduce = tRechargeRecords.stream().map(TRechargeRecord::getAmount).reduce(BigDecimal::add); - if(reduce.isPresent()){ - balance = balance.subtract(reduce.get()); - } - } - // 减去充值金额 - model.addAttribute("cumulativeIncome",balance); + //累计订单量 + Integer cumulativeOrderCount = tOrderMapper.selectCount(new EntityWrapper<TOrder>().eq("driverId", tDriver.getId()).eq("status", 1)); + model.addAttribute("cumulativeOrderCount", cumulativeOrderCount); + //有效订单数 + Integer effectiveOrderCount = tOrderMapper.selectCount(new EntityWrapper<TOrder>().eq("driverId", tDriver.getId()).eq("status", 1).in("state", Arrays.asList(106, 107, 108))); + model.addAttribute("effectiveOrderCount", effectiveOrderCount); + model.addAttribute("commission", tDriver.getCommission().doubleValue()); + // 拒单次数 + List<TOrderRefusal> driverRefusalList = tOrderRefusalMapper.selectList(new EntityWrapper<TOrderRefusal>().eq("driver_id", tDriver.getId())); + model.addAttribute("refusalCount",driverRefusalList.size()); + List<TRevenue> tRevenues = tRevenueMapper.selectList(new EntityWrapper<TRevenue>() + .eq("userType", 2) + .eq("userId", tDriver.getId())); + Optional<BigDecimal> reduce1 = tRevenues.stream().map(TRevenue::getAmount).reduce(BigDecimal::add); + // 减去充值金额 + if(reduce1.isPresent()){ + model.addAttribute("cumulativeIncome", reduce1.get()); }else { - model.addAttribute("cumulativeOrderCount",0); - model.addAttribute("monthOrderCount",0); - model.addAttribute("refusalCount",0); - // 累计收入 model.addAttribute("cumulativeIncome",0); } + //消单次数 + Integer cancelOrderCount = tOrderMapper.selectCount(new EntityWrapper<TOrder>().eq("driverId", tDriver.getId()).eq("status", 1).in("state", Arrays.asList(301))); + model.addAttribute("cancelOrderCount",cancelOrderCount); + //有效在线时长 + Long onlineTime = tDriver.getOnlineTime(); + Long s = onlineTime % 60; + Long m = onlineTime / 60; + model.addAttribute("onlineTime", (m < 10 ? ("0" + m) : m) + ":" + (s < 10 ? ("0" + s) : s)); } @Override - public JSONObject ocr(String imgUrl) { - File file = new File(imgUrl); + public JSONObject ocr(File file) { String result = httpUtils.ocr("2", file); - JSONObject jsonObject = JSONObject.parseObject(result); - return jsonObject; + return JSONObject.parseObject(result); } @Override @@ -310,12 +302,24 @@ tDriver.setCityName(city.getName()); tDriver.setCityCode(city.getCode()); - TRegion area = tRegionMapper.selectById(split[2]); - if(Objects.isNull(area)){ - area = itRegionService.selectOne(new EntityWrapper<TRegion>().eq("name",split[2])); +// TRegion area = tRegionMapper.selectById(split[2]); +// if(Objects.isNull(area)){ +// area = itRegionService.selectOne(new EntityWrapper<TRegion>().eq("name",split[2])); +// } +// tDriver.setAreaName(area.getName()); +// tDriver.setAreaCode(area.getCode()); + TRegion area = null; + if(split.length>2){ + area = itRegionService.selectById(split[2]); + if(Objects.isNull(area)){ + area = itRegionService.selectOne(new EntityWrapper<TRegion>().eq("name",split[2])); + } + tDriver.setAreaName(area.getName()); + tDriver.setAreaCode(area.getCode()); + }else { + tDriver.setAreaName(city.getName()); + tDriver.setAreaCode(city.getCode()); } - tDriver.setAreaName(area.getName()); - tDriver.setAreaCode(area.getCode()); // 通过省市查询代理商 List<TAgent> tAgent = tAgentMapper.selectList(new EntityWrapper<TAgent>().eq("provinceCode", province.getCode()) @@ -338,12 +342,26 @@ return new SuccessTip(500, "该邀约人:"+tDriver.getInviterName()+"不存在"); } } - // 通过省市区查询分公司 - List<TBranchOffice> tBranchOffice = tBranchOfficeMapper.selectList(new EntityWrapper<TBranchOffice>().eq("provinceCode", province.getCode()) - .eq("cityCode", city.getCode()) - .eq("status", StatusEnum.NORMAL.getCode()) - .eq("districtCode", area.getCode()) - .last("LIMIT 1")); + List<TBranchOffice> tBranchOffice; + if(split.length>2){ + // 通过省市区查询分公司 + tBranchOffice = tBranchOfficeMapper.selectList(new EntityWrapper<TBranchOffice>().eq("provinceCode", province.getCode()) + .eq("cityCode", city.getCode()) + .eq("status", StatusEnum.NORMAL.getCode()) + .eq("districtCode", area.getCode()) + .last("LIMIT 1")); + }else { + // 通过省市区查询分公司 + tBranchOffice = tBranchOfficeMapper.selectList(new EntityWrapper<TBranchOffice>().eq("provinceCode", province.getCode()) + .eq("cityCode", city.getCode()) + .eq("status", StatusEnum.NORMAL.getCode()) + .last("LIMIT 1")); +// tBranchOffice = tBranchOfficeMapper.selectList(new EntityWrapper<TBranchOffice>().eq("provinceCode", province.getCode()) +// .eq("cityCode", city.getCode()) +// .eq("status", StatusEnum.NORMAL.getCode()) +// .eq("districtCode", city.getCode()) +// .last("LIMIT 1")); + } if(!CollectionUtils.isEmpty(tBranchOffice)){ tDriver.setBranchOfficeId(tBranchOffice.get(0).getId()); }else { @@ -422,11 +440,23 @@ commissionResp.setConnectedPersons(connectedPersons.get()); // 已提现佣金 查询该司机的佣金提现记录 - commissionResp.setWithdrawnAmount(BigDecimal.ZERO); - + List<TCashWithdrawal> tCashWithdrawals = tCashWithdrawalMapper.selectList(new EntityWrapper<TCashWithdrawal>() + .eq("type", UserTypeEnum.DRIVER.getCode()) + .eq("userDriverId", driver.getId()) + .eq("businessType", 11) + .eq("state", 2)); + BigDecimal bigDecimal = BigDecimal.ZERO; + if(!CollectionUtils.isEmpty(tCashWithdrawals)){ + Optional<BigDecimal> reduce = tCashWithdrawals.stream().map(TCashWithdrawal::getAmount).reduce(BigDecimal::add); + if(reduce.isPresent()){ + bigDecimal.add(reduce.get()); + commissionResp.setWithdrawnAmount(bigDecimal); + } + }else { + commissionResp.setWithdrawnAmount(bigDecimal); + } // 累计佣金 可提现佣金+已提现佣金 - commissionResp.setAccumulatedCommission(BigDecimal.ZERO); - + commissionResp.setAccumulatedCommission(bigDecimal.add(commissionResp.getCommission())); commissionRespList.add(commissionResp); } @@ -434,11 +464,12 @@ } @Override - public void driverCommissionDetail(Integer tDriverId, Model model) { + public void driverCommissionDetail(Integer tDriverId, Integer levelFlag,Model model) { // 查询司机 TDriver driver = tDriverMapper.selectById(tDriverId); + model.addAttribute("levelFlag",levelFlag); // 司机信息封装 model.addAttribute("driverId",tDriverId); model.addAttribute("name",driver.getName()); @@ -478,12 +509,152 @@ model.addAttribute("numberPromoters",0); } model.addAttribute("connectedPersons",connectedPersons.get()); - // 已提现佣金 查询该司机的佣金提现记录 - model.addAttribute("withdrawnAmount",BigDecimal.ZERO); + List<TCashWithdrawal> tCashWithdrawals = tCashWithdrawalMapper.selectList(new EntityWrapper<TCashWithdrawal>() + .eq("type", UserTypeEnum.DRIVER.getCode()) + .eq("userDriverId", driver.getId()) + .eq("businessType", 11) + .eq("state", 2)); + BigDecimal bigDecimal = BigDecimal.ZERO; + if(!CollectionUtils.isEmpty(tCashWithdrawals)){ + Optional<BigDecimal> reduce = tCashWithdrawals.stream().map(TCashWithdrawal::getAmount).reduce(BigDecimal::add); + if(reduce.isPresent()){ + bigDecimal.add(reduce.get()); + // 已提现佣金 查询该司机的佣金提现记录 + model.addAttribute("withdrawnAmount",bigDecimal); + } + }else { + // 已提现佣金 查询该司机的佣金提现记录 + model.addAttribute("withdrawnAmount",bigDecimal); + } // commissionResp.setWithdrawnAmount(BigDecimal.ZERO); // 累计佣金 可提现佣金+已提现佣金 - model.addAttribute("accumulatedCommission",BigDecimal.ZERO); + model.addAttribute("accumulatedCommission",bigDecimal.add(driver.getCommission())); // commissionResp.setAccumulatedCommission(BigDecimal.ZERO); } + + @Override + public void getDataStatistics(Integer agentId, Model model,Map<String, Object> map) { + // 司机总数 + Integer driverTotal = tDriverMapper.selectCount(new EntityWrapper<TDriver>() + .eq("agentId", agentId)); + // 司机最近一月数量 + LocalDateTime now = LocalDateTime.now(); + LocalDateTime localDateTime = now.minusMonths(1); + Integer driverMonthTotal = tDriverMapper.selectCount(new EntityWrapper<TDriver>() + .eq("agentId", agentId) + .between("createTime", localDateTime, now)); + model.addAttribute("driverTotal",driverTotal); + model.addAttribute("driverMonthTotal",driverMonthTotal); + map.put("driverTotal",driverTotal); + map.put("driverMonthTotal",driverMonthTotal); + } + + @Override + public void getDataStatisticsByIds(List<Integer> ids, Model model, Map<String, Object> map) { + // 司机总数 + Integer driverTotal = tDriverMapper.selectCount(new EntityWrapper<TDriver>() + .in("agentId", ids)); + // 司机最近一月数量 + LocalDateTime now = LocalDateTime.now(); + LocalDateTime localDate = now.minusMonths(1); + Integer driverMonthTotal = tDriverMapper.selectCount(new EntityWrapper<TDriver>() + .in("agentId", ids) + .between("createTime", localDate, now)); + model.addAttribute("driverTotal",driverTotal); + model.addAttribute("driverMonthTotal",driverMonthTotal); + map.put("driverTotal",driverTotal); + map.put("driverMonthTotal",driverMonthTotal); + } + + + /** + * 获取司机详情汇总数据 + * @param driverId + * @param time + * @return + */ + @Override + public Map<String, Object> querySummaryData(Integer driverId, String time) { + String startTime = ""; + String endTime = ""; + if(ToolUtil.isNotEmpty(time)){ + String[] split = time.split(" - "); + startTime = split[0]; + endTime = split[1]; + } + Map<String, Object> map = new HashMap<>(); + TDriver tDriver = this.selectById(driverId); + //累计订单量 + Wrapper<TOrder> cumulativeOrderCountWrapper = new EntityWrapper<TOrder>().eq("driverId", tDriver.getId()).eq("status", 1); + if(ToolUtil.isNotEmpty(time)){ + cumulativeOrderCountWrapper.last(" and DATE_FORMAT(createTime, '$Y-$m-$d') between '" + startTime + "' and '" + endTime + "'"); + } + Integer cumulativeOrderCount = tOrderMapper.selectCount(cumulativeOrderCountWrapper); + map.put("cumulativeOrderCount", cumulativeOrderCount); + //有效订单数 + Wrapper<TOrder> effectiveOrderCountWrapper = new EntityWrapper<TOrder>().eq("driverId", tDriver.getId()).eq("status", 1).in("state", Arrays.asList(106, 107, 108)); + if(ToolUtil.isNotEmpty(time)){ + effectiveOrderCountWrapper.last(" and DATE_FORMAT(createTime, '$Y-$m-$d') between '" + startTime + "' and '" + endTime + "'"); + } + Integer effectiveOrderCount = tOrderMapper.selectCount(effectiveOrderCountWrapper); + map.put("effectiveOrderCount", effectiveOrderCount); + map.put("commission", tDriver.getCommission().doubleValue()); + map.put("balance", tDriver.getBalance().add(tDriver.getCouponBalance()).add(tDriver.getBackgroundBalance()).add(tDriver.getCommission()).doubleValue()); + // 查询当前用户邀请了哪些人 + Wrapper<TDriver> inviterDriverCountWrapper = new EntityWrapper<TDriver>().eq("inviterId", tDriver.getId()); + if(ToolUtil.isNotEmpty(time)){ + inviterDriverCountWrapper.last(" and DATE_FORMAT(createTime, '$Y-$m-$d') between '" + startTime + "' and '" + endTime + "'"); + } + List<TDriver> list = tDriverMapper.selectList(inviterDriverCountWrapper); + map.put("inviterDriverCount",list.size()); + Wrapper<TAppUser> inviterUserCountWrapper = new EntityWrapper<TAppUser>().eq("inviterType", 2).eq("inviterId", tDriver.getId()); + if(ToolUtil.isNotEmpty(time)){ + inviterUserCountWrapper.last(" and DATE_FORMAT(createTime, '$Y-$m-$d') between '" + startTime + "' and '" + endTime + "'"); + } + List<TAppUser> tAppUsers = tAppUserMapper.selectList(inviterUserCountWrapper); + map.put("inviterUserCount",tAppUsers.size()); + Wrapper<TRevenue> cumulativeIncomeWrapper = new EntityWrapper<TRevenue>().eq("userType", 2).eq("userId", tDriver.getId()); + if(ToolUtil.isNotEmpty(time)){ + cumulativeIncomeWrapper.last(" and DATE_FORMAT(createTime, '$Y-$m-$d') between '" + startTime + "' and '" + endTime + "'"); + } + List<TRevenue> tRevenues = tRevenueMapper.selectList(cumulativeIncomeWrapper); + Optional<BigDecimal> reduce1 = tRevenues.stream().map(TRevenue::getAmount).reduce(BigDecimal::add); + // 减去充值金额 + if(reduce1.isPresent()){ + map.put("cumulativeIncome", reduce1.get()); + }else { + map.put("cumulativeIncome",0); + } + Wrapper<TCashWithdrawal> inviterCommissionWrapper = new EntityWrapper<TCashWithdrawal>().eq("type", UserTypeEnum.DRIVER.getCode()).eq("userDriverId", tDriver.getId()) + .eq("businessType", 11).eq("state", 2); + if(ToolUtil.isNotEmpty(time)){ + inviterCommissionWrapper.last(" and DATE_FORMAT(createTime, '$Y-$m-$d') between '" + startTime + "' and '" + endTime + "'"); + } + List<TCashWithdrawal> tCashWithdrawals = tCashWithdrawalMapper.selectList(inviterCommissionWrapper); + Optional<BigDecimal> reduce = tCashWithdrawals.stream().map(TCashWithdrawal::getAmount).reduce(BigDecimal::add); + BigDecimal bigDecimal = BigDecimal.ZERO; + reduce.ifPresent(bigDecimal::add); + map.put("inviterCommission",bigDecimal.add(tDriver.getCommission())); + //消单次数 + Wrapper<TOrder> cancelOrderCountWrapper = new EntityWrapper<TOrder>().eq("driverId", tDriver.getId()).eq("status", 1).in("state", Arrays.asList(301)); + if(ToolUtil.isNotEmpty(time)){ + cancelOrderCountWrapper.last(" and DATE_FORMAT(createTime, '$Y-$m-$d') between '" + startTime + "' and '" + endTime + "'"); + } + Integer cancelOrderCount = tOrderMapper.selectCount(cancelOrderCountWrapper); + map.put("cancelOrderCount",cancelOrderCount); + Wrapper<DriverOnlineTime> driverOnlineTimeWrapper = new EntityWrapper<DriverOnlineTime>().eq("driverId", driverId); + if(ToolUtil.isNotEmpty(time)){ + driverOnlineTimeWrapper.last(" and DATE_FORMAT(`day`, '$Y-$m-$d') between '" + startTime + "' and '" + endTime + "'"); + } + Long onlineTime = 0L; + List<DriverOnlineTime> driverOnlineTimes = driverOnlineTimeService.selectList(driverOnlineTimeWrapper); + for (DriverOnlineTime driverOnlineTime : driverOnlineTimes) { + onlineTime += driverOnlineTime.getOnlineTime().longValue(); + } + Long s = onlineTime % 60; + Long m = onlineTime / 60; + map.put("onlineTime", (m < 10 ? ("0" + m) : m) + ":" + (s < 10 ? ("0" + s) : s)); + return map; + } } -- Gitblit v1.7.1