From eb6b6dbb35a9f029e0b7d269773685c19fd40976 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期四, 11 七月 2024 10:47:51 +0800 Subject: [PATCH] 玩湃微信商户认证代码 --- cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/DataStatisticsController.java | 1577 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 1,547 insertions(+), 30 deletions(-) diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/DataStatisticsController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/DataStatisticsController.java index 20603a8..714ce55 100644 --- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/DataStatisticsController.java +++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/DataStatisticsController.java @@ -1,26 +1,49 @@ package com.dsh.guns.modular.system.controller.code; +import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.dsh.course.feignClient.account.AppUserClient; -import com.dsh.course.feignClient.account.CityClient; -import com.dsh.course.feignClient.account.CityManagerClient; -import com.dsh.course.feignClient.account.FinanceClient; -import com.dsh.course.feignClient.account.model.CityManager; -import com.dsh.course.feignClient.course.CancelledClassesClient; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.dsh.course.entity.CoursePackageOrderStudent; +import com.dsh.course.feignClient.account.*; +import com.dsh.course.feignClient.account.model.*; +import com.dsh.course.feignClient.activity.PointMercharsClient; +import com.dsh.course.feignClient.competition.CompetitionClient; +import com.dsh.course.feignClient.competition.model.CompetionVO; +import com.dsh.course.feignClient.competition.model.Competition; +import com.dsh.course.feignClient.competition.model.CompetitionQuery; +import com.dsh.course.feignClient.competition.model.PaymentCompetition; +import com.dsh.course.feignClient.course.*; +import com.dsh.course.feignClient.course.model.TCoursePackage; +import com.dsh.course.feignClient.course.model.TCoursePackagePayment; +import com.dsh.course.feignClient.other.BallClient; +import com.dsh.course.feignClient.other.SiteClient; +import com.dsh.course.feignClient.other.StoreClient; +import com.dsh.course.feignClient.other.model.GameDataQuery; +import com.dsh.course.feignClient.other.model.Site; +import com.dsh.course.feignClient.other.model.TGameRecord; +import com.dsh.course.model.MoneyBack; import com.dsh.guns.config.UserExt; import com.dsh.guns.core.base.controller.BaseController; +import com.dsh.guns.core.util.ToolUtil; import com.dsh.guns.modular.system.model.*; -import com.dsh.guns.modular.system.service.ICityService; +import com.dsh.guns.modular.system.service.*; +import groovyjarjarpicocli.CommandLine; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; +import javax.annotation.Resource; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; +import java.math.RoundingMode; +import java.text.SimpleDateFormat; +import java.time.*; +import java.time.format.DateTimeFormatter; +import java.time.temporal.ChronoUnit; +import java.time.temporal.TemporalAdjusters; +import java.util.*; +import java.util.stream.Collectors; /** * 数据统计控制器 @@ -32,52 +55,1546 @@ private String PREFIX = "/system/dataStatistics/"; @Autowired private ICityService cityService; - @Autowired + @Resource private CityManagerClient cityManagerClient; + + @Autowired + private IUserService sysUserService; + @Resource + private AppUserClient appUserClient; + + @Resource + private CourseClient courseClient; + + @Autowired + private IStoreService storeService; + @Resource + private VipPaymentClient vipPaymentClient; + @Resource + private FinanceClient financeClient; + @Resource + private CoursePackagePaymentClient coursePackagePaymentClient; + @Resource + private CompetitionClient competitionClient; + + @Autowired + private ISiteBookingService siteBookingService; + @Resource + private StoreClient storeClient; + @Resource + private SiteClient siteClient; + @Resource + private PointMercharsClient pointMercharsClient; + @Resource + private RefundCoursePackageClient refundCoursePackageClient; + @Resource + private CourseStuddentClient courseStuddentClient; + @Resource + private CoursePackageClient coursePackageClient; + @Autowired + private TOperatorService operatorService; + @Resource + private BallClient ballClient; /** * 跳转到平台统计数据页面 */ @RequestMapping("/platform") public String index(Model model) { + Object o = type1(null); + model.addAttribute("data",o); + // 教学统计 + HashMap<String, Object> map = appUserClient.queryUserAge(); + model.addAttribute("stuData",map); return PREFIX + "platformIncome.html"; } + + /** + * 营收数据-平台 + * + */ + @RequestMapping(value = "/getIncomeData") + @ResponseBody + public Object getIncomeData(Integer operatorId,Integer storeId) { + // 报名课程查询query + RegisterOrderQuery query = new RegisterOrderQuery(); + // 充值记录查询query + RechargeRecordsQuery rechargeRecordsQuery = new RechargeRecordsQuery(); + // 赛事活动查询query + CompetitionQuery competitionQuery = new CompetitionQuery(); + // 会员支付查询query + IncomeQuery incomeQuery = new IncomeQuery(); + // 场地预约记录查询query + SiteBookingQuery siteBookingQuery = new SiteBookingQuery(); + // 智慧球场查询query + GameDataQuery gameDataQuery = new GameDataQuery(); + // 筛选运营商的是时候使用 + List<Integer> storeIds = new ArrayList<>(); + // 根据运营商ID 查询运营商下的所有门店 + if (storeId==null){ + if (operatorId!=null){ + List<TStore> stores = storeService.list(new QueryWrapper<TStore>().eq("operatorId", operatorId)); + // 拿到该运营商下的门店id集合 + storeIds = stores.stream().map(TStore::getId).collect(Collectors.toList()); + query.setStoresIds(storeIds); + siteBookingQuery.setStoreIds(storeIds); + competitionQuery.setOperatorId(operatorId); + } + }else { + List<Integer> list = new ArrayList<>(); + list.add(storeId); + query.setStoresIds(list); + siteBookingQuery.setStoreIds(list); + competitionQuery.setStoreId(storeId); + } + + + Integer roleType = UserExt.getUser().getObjectType(); + rechargeRecordsQuery.setInsertType(roleType); + query.setInsertType(roleType); + competitionQuery.setInsertType(roleType); + incomeQuery.setInsertType(roleType); + rechargeRecordsQuery.setObjectId(UserExt.getUser().getObjectId()); + List<IncomeVO> incomeVOS = new ArrayList<>(); + // 会员支付记录 + List<VipPayment> vipPayments = vipPaymentClient.registrationList(incomeQuery); + for (VipPayment vipPayment : vipPayments) { + IncomeVO temp = new IncomeVO(); + if (vipPayment.getState()!=3){ + temp.setInsertTime(vipPayment.getPayTime()); + incomeVOS.add(temp); + } + if (vipPayment.getAmount() != null) { + temp.setAmount(new BigDecimal(vipPayment.getAmount().toString())); + } + } + // 充值记录 + List<RechargeRecordsVO> rechargeRecordsVOS = financeClient.rechargeList(rechargeRecordsQuery); + for (RechargeRecordsVO rechargeRecordsVO : rechargeRecordsVOS) { + IncomeVO temp = new IncomeVO(); + temp.setInsertTime(rechargeRecordsVO.getPayTime()); + if (rechargeRecordsVO.getAmount() != null) { + temp.setAmount(rechargeRecordsVO.getAmount()); + } + if (rechargeRecordsVO.getState() !=3){ + incomeVOS.add(temp); + } + } + // 报名课程记录 + List<RegisterOrderVO> registerOrderVOS = coursePackagePaymentClient.listAllRegister(query); + for (RegisterOrderVO registerOrderVO : registerOrderVOS) { + if (registerOrderVO.getMoney() == null) { + continue; + } + IncomeVO temp = new IncomeVO(); + temp.setInsertTime(registerOrderVO.getInsertTime()); + if (registerOrderVO.getMoney() != null) { + temp.setAmount(registerOrderVO.getMoney()); + } + if (registerOrderVO.getPayStatus()==2){ + incomeVOS.add(temp); + } + } + // query权限设置 获取运营商下的门店集合 + if (roleType==2){ + competitionQuery.setOperatorId(UserExt.getUser().getObjectId()); + } + // 报名活动 + List<PaymentCompetition> competitions = competitionClient.listAllPayment(competitionQuery); + for (PaymentCompetition competition : competitions) { + if (competition.getPayStatus() != 2) { + continue; + } + if (competition.getPayType()==3 || competition.getPayType()==4){ + continue; + } + if (competition.getState()==3)continue; + IncomeVO temp = new IncomeVO(); + temp.setInsertTime(competition.getPayTime()); + if (competition.getAmount() != null) { + temp.setAmount(new BigDecimal(competition.getAmount().toString())); + } + incomeVOS.add(temp); + } + // 预约场地 + // 说明当前运营商下没有门店 + if (operatorId!=null && storeIds.size()==0){ + }else{ + List<SiteBooking> siteBookings = siteClient.listAll(siteBookingQuery); + for (SiteBooking siteBooking : siteBookings) { + IncomeVO temp = new IncomeVO(); + if(siteBooking.getStatus()==0 || siteBooking.getStatus()==5){ + continue; + } + if (siteBooking.getPayType() ==3 || siteBooking.getPayType() ==4)continue; + temp.setInsertTime(siteBooking.getPayTime()); + if (siteBooking.getPayMoney() != null) { + temp.setAmount(new BigDecimal(siteBooking.getPayMoney().toString())); + } + incomeVOS.add(temp); + } + } + + // 积分商品 + List<PointMerchandiseIncomeVo> amount = pointMercharsClient.getAmount(); + for (PointMerchandiseIncomeVo pointMerchandiseIncomeVo : amount) { + IncomeVO temp = new IncomeVO(); + if (pointMerchandiseIncomeVo==null) continue; + temp.setInsertTime(pointMerchandiseIncomeVo.getInsertTime()); + if (pointMerchandiseIncomeVo.getCash()!=null){ + temp.setAmount(pointMerchandiseIncomeVo.getCash()); + incomeVOS.add(temp); + } + } + // 平台智慧球场 + if (storeId==null&&operatorId==null){ + gameDataQuery.setObjectId(0); + List<TGameRecord> data = ballClient.getData(gameDataQuery); + for (TGameRecord datum : data) { + IncomeVO temp = new IncomeVO(); + temp.setAmount(datum.getMoney()); + temp.setInsertTime(datum.getTime()); + incomeVOS.add(temp); + } + } + // 运营商 + if (operatorId!=null && storeId==null){ + gameDataQuery.setObjectId(operatorId); + List<TGameRecord> data = ballClient.getData(gameDataQuery); + for (TGameRecord datum : data) { + IncomeVO temp = new IncomeVO(); + temp.setAmount(datum.getMoney()); + temp.setInsertTime(datum.getTime()); + incomeVOS.add(temp); + } + } + // 门店 + if (storeId!=null){ + gameDataQuery.setStoreId(storeId); + List<TGameRecord> data = ballClient.getData(gameDataQuery); + for (TGameRecord datum : data) { + IncomeVO temp = new IncomeVO(); + temp.setAmount(datum.getMoney()); + temp.setInsertTime(datum.getTime()); + incomeVOS.add(temp); + } + } + // 最终返回的数据 + Map<String, List<Object>> monthlyData = new HashMap<>(); + // 创建一个 Map 用于存储每年的累计 amount + Map<Integer, BigDecimal> yearToTotalAmountMap = new HashMap<>(); + // 初始化一个 BigDecimal 用于累加 + BigDecimal totalAmount1 = BigDecimal.ZERO; + // 用于返回图表上的总营收 年度营收 月度 周度 日度 + List<Object> objects = new ArrayList<>(); + // 遍历 incomeVOS + for (IncomeVO incomeVO1 : incomeVOS) { + // 总营收 + BigDecimal total = incomeVO1.getAmount(); + // 累加到总金额 + totalAmount1 = totalAmount1.add(total); + + Date insertTime = incomeVO1.getInsertTime(); + BigDecimal amount1 = incomeVO1.getAmount(); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(insertTime); + int year = calendar.get(Calendar.YEAR); // 获取年份 + // 更新年份对应的累计 amount + if (yearToTotalAmountMap.containsKey(year)) { + BigDecimal totalAmount = yearToTotalAmountMap.get(year); + yearToTotalAmountMap.put(year, totalAmount.add(amount1)); + } else { + yearToTotalAmountMap.put(year, amount1); + } + } + objects.add(totalAmount1); + // 创建一个新的列表,按年份升序排列 + List<Integer> sortedYears = new ArrayList<>(yearToTotalAmountMap.keySet()); + Collections.sort(sortedYears); + // 创建一个新的 IncomeVO 列表,包含按年份累计的 amount + List<Object> resultIncomeVOS = new ArrayList<>(); + // 当前年往前推十年 + List<Integer> integers1 = new ArrayList<>(); + int years = DateUtil.year(new Date()); + for (int i = 0; i < 10; i++) { + integers1.add(years-i); + } + List<Object> collect = integers1.stream().sorted().collect(Collectors.toList()); + List<Object> objects1 = new ArrayList<>(); + for (Object o : collect) { + BigDecimal orDefault = yearToTotalAmountMap.getOrDefault(Integer.valueOf(o.toString()), BigDecimal.ZERO); + objects1.add(orDefault); + } + monthlyData.put("yearIncome",objects1); + BigDecimal yearIn = new BigDecimal("0.00"); + for (Object o : objects1) { + yearIn = yearIn.add(new BigDecimal(o.toString())); + } + BigDecimal orDefault = yearToTotalAmountMap.getOrDefault(years, BigDecimal.ZERO); + objects.add(orDefault); + // 创建一个 Map 用于存储今年每个月的累计 amount + Map<Integer, BigDecimal> monthToTotalAmountMap = new HashMap<>(); + Calendar calendar = Calendar.getInstance(); + int currentYear = calendar.get(Calendar.YEAR); + List<BigDecimal> monthlyAmountList = new ArrayList<>(Collections.nCopies(12, BigDecimal.ZERO)); + + for (IncomeVO incomeVO1 : incomeVOS) { + Calendar calendar1 = Calendar.getInstance(); + calendar1.setTime(incomeVO1.getInsertTime()); + int year = calendar1.get(Calendar.YEAR); + int month = calendar1.get(Calendar.MONTH) + 1; // 月份从0开始,所以需要加1 + if (year == currentYear) { + BigDecimal totalAmount = monthlyAmountList.get(month - 1); + totalAmount = totalAmount.add(incomeVO1.getAmount()); + monthlyAmountList.set(month - 1, totalAmount); + } + } + monthlyData.put("monthIncome", Collections.singletonList(monthlyAmountList)); + //yearMount + BigDecimal monthI = new BigDecimal("0.00"); + for (BigDecimal bigDecimal : monthlyAmountList) { + monthI = monthI.add(bigDecimal); + } + objects.add(monthI); + // 获取当前月份 + LocalDate currentDate = LocalDate.now(); + int currentMonth = currentDate.getMonthValue(); + // 初始化一个长度为当前月份的天数的列表,并将每一天的金额初始化为零 + int daysInCurrentMonth = currentDate.lengthOfMonth(); + List<BigDecimal> weekAmount = new ArrayList<>(); + + // 获取最近四周 + LocalDateTime minNow = LocalDateTime.now().with(LocalTime.MIN); + LocalDateTime maxNow = LocalDateTime.now().with(LocalTime.MAX); + // 周度数据 + LocalDateTime week1Start = minNow.minusDays(6); + LocalDateTime week1End = maxNow; + + LocalDateTime week2Start = minNow.minusDays(13); + LocalDateTime week2End = minNow.minusDays(7); + + LocalDateTime week3Start = minNow.minusDays(20); + LocalDateTime week3End = minNow.minusDays(14); + + LocalDateTime week4Start = minNow.minusDays(27); + LocalDateTime week4End = minNow.minusDays(21); + + // 计算每个周的amount总和 + BigDecimal tAmount1 = BigDecimal.ZERO; + BigDecimal tAmount2 = BigDecimal.ZERO; + BigDecimal tAmount3 = BigDecimal.ZERO; + BigDecimal tAmount4 = BigDecimal.ZERO; + for (IncomeVO incomeVO1 : incomeVOS) { + Date insertTime = incomeVO1.getInsertTime(); + // 将Date转换为LocalDateTime + Instant instant = insertTime.toInstant(); + ZoneId zoneId = ZoneId.systemDefault(); + LocalDateTime dateTime = instant.atZone(zoneId).toLocalDateTime(); + // 判断该数据属于哪个周 + if (dateTime.isAfter(week1Start) && dateTime.isBefore(week1End)) { + BigDecimal amount1 = incomeVO1.getAmount(); + tAmount1=tAmount1.add(amount1); + } else if (dateTime.isAfter(week2Start) && dateTime.isBefore(week2End)) { + BigDecimal amount1 = incomeVO1.getAmount(); + tAmount2=tAmount2.add(amount1); + } else if (dateTime.isAfter(week3Start) && dateTime.isBefore(week3End)) { + BigDecimal amount1 = incomeVO1.getAmount(); + tAmount4=tAmount3.add(amount1); + } else if (dateTime.isAfter(week4Start) && dateTime.isBefore(week4End)) { + BigDecimal amount1 = incomeVO1.getAmount(); + tAmount4=tAmount4.add(amount1); + } + } + weekAmount.add(tAmount1); + weekAmount.add(tAmount2); + weekAmount.add(tAmount3); + weekAmount.add(tAmount4); + monthlyData.put("weekIncome", Collections.singletonList(weekAmount)); + BigDecimal weekIn = new BigDecimal("0.00"); + for (BigDecimal bigDecimal : weekAmount) { + weekIn = weekIn.add(bigDecimal); + } + objects.add(weekIn); + LocalDateTime currentDateTime = LocalDateTime.now(); + List<BigDecimal> amountByDay = new ArrayList<>(Collections.nCopies(7, BigDecimal.ZERO)); + for (IncomeVO incomeVO3 : incomeVOS) { + Date insertTime = incomeVO3.getInsertTime(); + // 将 Date 转换为 LocalDateTime + LocalDateTime insertDateTime = LocalDateTime.ofInstant(insertTime.toInstant(), ZoneId.systemDefault()); + // 计算日期与当前日期的差距 + long daysDifference = ChronoUnit.DAYS.between(insertDateTime.toLocalDate(), currentDateTime.toLocalDate()); + // 如果日期在七天内,累加金额 + if (daysDifference >= 0 && daysDifference < 7) { + int index = (int) (6 - daysDifference); // 计算对应的索引位置 + BigDecimal amount3 = incomeVO3.getAmount(); + BigDecimal updatedAmount = amountByDay.get(index).add(amount3); + amountByDay.set(index, updatedAmount); + + } + } + monthlyData.put("dayIncome", Collections.singletonList(amountByDay)); + BigDecimal totalToday = new BigDecimal("0.00"); + for (BigDecimal bigDecimal : amountByDay) { + totalToday = totalToday.add(bigDecimal); + } + objects.add(totalToday); + // 最后put + monthlyData.put("yearMount",objects); + + ArrayList<Object> integers = new ArrayList<>(); + int year = DateUtil.year(new Date()); + for (int i = 0; i < 10; i++) { + integers.add(year-i); + } + List<Object> collect1 = integers.stream().sorted().collect(Collectors.toList()); + monthlyData.put("year",collect1); + return monthlyData; + } + + /** + * 运营统计-平台-用户数据 + * + */ + @RequestMapping(value = "/getUserData") + @ResponseBody + public Object getUserData() { + + + return null; + } + @RequestMapping(value = "/getYears") + @ResponseBody + public Object getYears() { + ArrayList<Object> integers = new ArrayList<>(); + int year = DateUtil.year(new Date()); + for (int i = 0; i < 10; i++) { + integers.add(year-i); + } + List<Object> collect = integers.stream().sorted().collect(Collectors.toList()); + + return collect; + } + /** + * 退费-平台 + * + */ + @RequestMapping(value = "/getRefundData") + @ResponseBody + public Object getRefundData(Integer type) { + // 赛事活动查询query + CompetitionQuery competitionQuery = new CompetitionQuery(); + List<IncomeVO> incomeVOS = new ArrayList<>(); + // 获取学员课包退费 + List<MoneyBack> refund = refundCoursePackageClient.getRefund(); + + for (MoneyBack moneyBack : refund) { + List<CoursePackageOrderStudent> coursePackagePayments = courseStuddentClient.queryByIds(moneyBack.getIds()); + BigDecimal totalAmount = BigDecimal.ZERO; +// for (TCoursePackagePayment payment : coursePackagePayments){ +// //课包名称 +// TCoursePackage tCoursePackage = coursePackageClient.queryById(payment.getCoursePackageId()); +// payment.setName(tCoursePackage.getName()); +// payment.setId(Long.valueOf(tCoursePackage.getId())); +// BigDecimal cashPayment = payment.getCashPayment(); +// if (cashPayment==null){ +// cashPayment = BigDecimal.ZERO; +// } +// Integer totalClassHours = payment.getTotalClassHours(); +// BigDecimal result = new BigDecimal(0); +// if (totalClassHours!=0) { +// result = cashPayment.divide(BigDecimal.valueOf(totalClassHours), 2, RoundingMode.HALF_UP); +// } +// //单价 +// payment.setOnePrice(result); +// int has = payment.getTotalClassHours() - payment.getLaveClassHours(); +// //剩余课时 +// payment.setHasHours(has); +// BigDecimal onePrice = payment.getOnePrice(); +// Integer laveClassHours = payment.getLaveClassHours(); +// BigDecimal result1 = onePrice.multiply(BigDecimal.valueOf(laveClassHours)); +// //总价 +// payment.setRestPrice(result1); +// System.out.println("======="+result1); +// totalAmount = totalAmount.add(result1); +// IncomeVO temp = new IncomeVO(); +// temp.setInsertTime(payment.getInsertTime()); +// temp.setAmount(result1); +// incomeVOS.add(temp); +// } + } + // 获取赛事退费记录 + List<PaymentCompetition> competitions = competitionClient.listAllPayment(competitionQuery); + for (PaymentCompetition competition : competitions) { + if (competition.getPayStatus() != 3) { + continue; + } + if (competition.getPayType()==3 || competition.getPayType()==4){ + continue; + } + IncomeVO temp = new IncomeVO(); + temp.setInsertTime(competition.getInsertTime()); + if (competition.getAmount() != null) { + temp.setAmount(new BigDecimal(competition.getAmount().toString())); + } + incomeVOS.add(temp); + } + + return null; + } + + + @Autowired + private TBackRecordService backRecordService; + + @RequestMapping(value = "/backPt") + @ResponseBody + public Object backPt(Integer type) { + HashMap<String, Object> map = new HashMap<>(); + List<Integer> userPt = appUserClient.getUserPt(Arrays.asList(1)); + if(userPt.size()==0){ + userPt.add(-1); + } + ArrayList<Object> integers = new ArrayList<>(); + int year = DateUtil.year(new Date()); + List<TBackRecord> thisYear = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().like(TBackRecord::getTime, year).in(TBackRecord::getUserId,userPt)); + double sum5 = thisYear.stream().mapToDouble(TBackRecord::getMoney).sum(); + map.put("thisYear",sum5); + + List<TBackRecord> thisMonth = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().like(TBackRecord::getTime, new SimpleDateFormat("yyyy-MM").format(new Date())).in(TBackRecord::getUserId,userPt)); + double sum6= thisMonth.stream().mapToDouble(TBackRecord::getMoney).sum(); + map.put("thisMonth",sum6); + + + + for (int i = 0; i < 10; i++) { + integers.add(year-i); + } + List<Object> collect = integers.stream().sorted().collect(Collectors.toList()); + // 年 + ArrayList<Double> years = new ArrayList<>(); + for (Object o : collect) { + double sum=0.0; + String s = o.toString(); + List<TBackRecord> list = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().like(TBackRecord::getTime, s).in(TBackRecord::getUserId,userPt)); + sum = list.stream().mapToDouble(TBackRecord::getMoney).sum(); + years.add(sum); + } + ArrayList<Double> months = new ArrayList<>(); + // 月 + for (int i = 1; i <= 12; i++) { + double sum=0.0; + String m=i+""; + if(i<10){ + m="0"+i; + } + String s = year + "-" + m; + List<TBackRecord> list = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().like(TBackRecord::getTime, s).in(TBackRecord::getUserId,userPt)); + sum = list.stream().mapToDouble(TBackRecord::getMoney).sum(); + months.add(sum); + } + + // 获取最近四周 + LocalDateTime minNow = LocalDateTime.now().with(LocalTime.MIN); + LocalDateTime maxNow = LocalDateTime.now().with(LocalTime.MAX); + // 周度数据 + String s1 = minNow.minusDays(6).toString(); + String s2 = maxNow.toString(); + + String s3 = minNow.minusDays(13).toString(); + String s4 = maxNow.minusDays(6).toString(); + + + String s5 = minNow.minusDays(20).toString(); + String s6 = maxNow.minusDays(13).toString(); + + String s7 = minNow.minusDays(27).toString(); + String s8 = maxNow.minusDays(20).toString(); + + List<TBackRecord> list = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().between(TBackRecord::getTime, s7,s8).in(TBackRecord::getUserId,userPt)); + double sum = list.stream().mapToDouble(TBackRecord::getMoney).sum(); + + List<TBackRecord> list1 = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().between(TBackRecord::getTime, s5,s6).in(TBackRecord::getUserId,userPt)); + double sum1 = list1.stream().mapToDouble(TBackRecord::getMoney).sum(); + List<TBackRecord> list2 = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().between(TBackRecord::getTime, s3,s4).in(TBackRecord::getUserId,userPt)); + double sum2 = list2.stream().mapToDouble(TBackRecord::getMoney).sum(); + List<TBackRecord> list3 = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().between(TBackRecord::getTime, s1,s2).in(TBackRecord::getUserId,userPt)); + double sum3 = list3.stream().mapToDouble(TBackRecord::getMoney).sum(); + + map.put("thisWeek",sum3); + + ArrayList<Double> week = new ArrayList<>(); + week.add(sum); + week.add(sum1); + week.add(sum2); + week.add(sum3); + + // 日 + ArrayList<Double> days = new ArrayList<>(); + Double thisDay=0.0; + for (int i = 6; i >= 0; i--) { + String s = minNow.minusDays(i).toString(); + String s9 = maxNow.minusDays(i).toString(); + List<TBackRecord> day = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().between(TBackRecord::getTime, s,s9).in(TBackRecord::getUserId,userPt)); + double sum4 = day.stream().mapToDouble(TBackRecord::getMoney).sum(); + days.add(sum4); + if(i==0){ + thisDay=sum4; + } + } + + map.put("thisDay",thisDay); + map.put("yearData",years); + map.put("monthData",months); + map.put("weekData",week); + map.put("dayData",days); + + return map; + } + + @RequestMapping(value = "/backYys") + @ResponseBody + public Object backYys(Integer id) { + HashMap<String, Object> map = new HashMap<>(); + List<Integer> userPt = appUserClient.getUserYYs(id); + if(userPt.size()==0){ + userPt.add(-1); + } + ArrayList<Object> integers = new ArrayList<>(); + int year = DateUtil.year(new Date()); + List<TBackRecord> thisYear = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().like(TBackRecord::getTime, year).in(TBackRecord::getUserId,userPt)); + double sum5 = thisYear.stream().mapToDouble(TBackRecord::getMoney).sum(); + map.put("thisYear",sum5); + + List<TBackRecord> thisMonth = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().like(TBackRecord::getTime, new SimpleDateFormat("yyyy-MM").format(new Date())).in(TBackRecord::getUserId,userPt)); + double sum6= thisMonth.stream().mapToDouble(TBackRecord::getMoney).sum(); + map.put("thisMonth",sum6); + + + + for (int i = 0; i < 10; i++) { + integers.add(year-i); + } + List<Object> collect = integers.stream().sorted().collect(Collectors.toList()); + // 年 + ArrayList<Double> years = new ArrayList<>(); + for (Object o : collect) { + double sum=0.0; + String s = o.toString(); + List<TBackRecord> list = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().like(TBackRecord::getTime, s).in(TBackRecord::getUserId,userPt)); + sum = list.stream().mapToDouble(TBackRecord::getMoney).sum(); + years.add(sum); + } + ArrayList<Double> months = new ArrayList<>(); + // 月 + for (int i = 1; i <= 12; i++) { + double sum=0.0; + String m=i+""; + if(i<10){ + m="0"+i; + } + String s = year + "-" + m; + List<TBackRecord> list = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().like(TBackRecord::getTime, s).in(TBackRecord::getUserId,userPt)); + sum = list.stream().mapToDouble(TBackRecord::getMoney).sum(); + months.add(sum); + } + + // 获取最近四周 + LocalDateTime minNow = LocalDateTime.now().with(LocalTime.MIN); + LocalDateTime maxNow = LocalDateTime.now().with(LocalTime.MAX); + // 周度数据 + String s1 = minNow.minusDays(6).toString(); + String s2 = maxNow.toString(); + + String s3 = minNow.minusDays(13).toString(); + String s4 = maxNow.minusDays(6).toString(); + + + String s5 = minNow.minusDays(20).toString(); + String s6 = maxNow.minusDays(13).toString(); + + String s7 = minNow.minusDays(27).toString(); + String s8 = maxNow.minusDays(20).toString(); + + List<TBackRecord> list = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().between(TBackRecord::getTime, s7,s8).in(TBackRecord::getUserId,userPt)); + double sum = list.stream().mapToDouble(TBackRecord::getMoney).sum(); + + List<TBackRecord> list1 = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().between(TBackRecord::getTime, s5,s6).in(TBackRecord::getUserId,userPt)); + double sum1 = list1.stream().mapToDouble(TBackRecord::getMoney).sum(); + List<TBackRecord> list2 = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().between(TBackRecord::getTime, s3,s4).in(TBackRecord::getUserId,userPt)); + double sum2 = list2.stream().mapToDouble(TBackRecord::getMoney).sum(); + List<TBackRecord> list3 = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().between(TBackRecord::getTime, s1,s2).in(TBackRecord::getUserId,userPt)); + double sum3 = list3.stream().mapToDouble(TBackRecord::getMoney).sum(); + + map.put("thisWeek",sum3); + + ArrayList<Double> week = new ArrayList<>(); + week.add(sum); + week.add(sum1); + week.add(sum2); + week.add(sum3); + + // 日 + ArrayList<Double> days = new ArrayList<>(); + Double thisDay=0.0; + for (int i = 6; i >= 0; i--) { + String s = minNow.minusDays(i).toString(); + String s9 = maxNow.minusDays(i).toString(); + List<TBackRecord> day = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().between(TBackRecord::getTime, s,s9).in(TBackRecord::getUserId,userPt)); + double sum4 = day.stream().mapToDouble(TBackRecord::getMoney).sum(); + days.add(sum4); + if(i==0){ + thisDay=sum4; + } + } + + map.put("thisDay",thisDay); + map.put("yearData",years); + map.put("monthData",months); + map.put("weekData",week); + map.put("dayData",days); + + return map; + } + @RequestMapping(value = "/backStore") + @ResponseBody + public Object backStore(Integer id) { + List<Integer> collect1 = Arrays.asList(id); + //课程 + List<Integer> list = coursePackagePaymentClient.queryPaymentCoursePackage(collect1); + //场地 + List<SiteBooking> list1 = siteBookingService.list(new QueryWrapper<SiteBooking>().in("storeId", collect1).eq("state", 1)); + List<Integer> collect = list1.stream().map(SiteBooking::getAppUserId).collect(Collectors.toList()); + list.addAll(collect); + //赛事 + List<Integer> list2 = competitionClient.queryAppUserId(collect1); + list.addAll(list2); + //门票 + + HashMap<String, Object> map = new HashMap<>(); + + ArrayList<Object> integers = new ArrayList<>(); + int year = DateUtil.year(new Date()); + List<TBackRecord> thisYear = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().like(TBackRecord::getTime, year).in(TBackRecord::getUserId,list)); + double sum5 = thisYear.stream().mapToDouble(TBackRecord::getMoney).sum(); + map.put("thisYear",sum5); + + List<TBackRecord> thisMonth = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().like(TBackRecord::getTime, new SimpleDateFormat("yyyy-MM").format(new Date())).in(TBackRecord::getUserId,list)); + double sum6= thisMonth.stream().mapToDouble(TBackRecord::getMoney).sum(); + map.put("thisMonth",sum6); + + + + for (int i = 0; i < 10; i++) { + integers.add(year-i); + } + List<Object> collectw = integers.stream().sorted().collect(Collectors.toList()); + // 年 + ArrayList<Double> years = new ArrayList<>(); + for (Object o : collectw) { + double sum=0.0; + String s = o.toString(); + List<TBackRecord> lists = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().like(TBackRecord::getTime, s).in(TBackRecord::getUserId,list)); + sum = lists.stream().mapToDouble(TBackRecord::getMoney).sum(); + years.add(sum); + } + ArrayList<Double> months = new ArrayList<>(); + // 月 + for (int i = 1; i <= 12; i++) { + double sum=0.0; + String m=i+""; + if(i<10){ + m="0"+i; + } + String s = year + "-" + m; + List<TBackRecord> lists = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().like(TBackRecord::getTime, s).in(TBackRecord::getUserId,list)); + sum = lists.stream().mapToDouble(TBackRecord::getMoney).sum(); + months.add(sum); + } + + // 获取最近四周 + LocalDateTime minNow = LocalDateTime.now().with(LocalTime.MIN); + LocalDateTime maxNow = LocalDateTime.now().with(LocalTime.MAX); + // 周度数据 + String s1 = minNow.minusDays(6).toString(); + String s2 = maxNow.toString(); + + String s3 = minNow.minusDays(13).toString(); + String s4 = maxNow.minusDays(6).toString(); + + + String s5 = minNow.minusDays(20).toString(); + String s6 = maxNow.minusDays(13).toString(); + + String s7 = minNow.minusDays(27).toString(); + String s8 = maxNow.minusDays(20).toString(); + + List<TBackRecord> lists = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().between(TBackRecord::getTime, s7,s8).in(TBackRecord::getUserId,list)); + double sum = lists.stream().mapToDouble(TBackRecord::getMoney).sum(); + + List<TBackRecord> lists1 = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().between(TBackRecord::getTime, s5,s6).in(TBackRecord::getUserId,list)); + double sum1 = lists1.stream().mapToDouble(TBackRecord::getMoney).sum(); + List<TBackRecord> lists2 = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().between(TBackRecord::getTime, s3,s4).in(TBackRecord::getUserId,list)); + double sum2 = lists2.stream().mapToDouble(TBackRecord::getMoney).sum(); + List<TBackRecord> list3 = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().between(TBackRecord::getTime, s1,s2).in(TBackRecord::getUserId,list)); + double sum3 = list3.stream().mapToDouble(TBackRecord::getMoney).sum(); + + map.put("thisWeek",sum3); + + ArrayList<Double> week = new ArrayList<>(); + week.add(sum); + week.add(sum1); + week.add(sum2); + week.add(sum3); + + // 日 + ArrayList<Double> days = new ArrayList<>(); + Double thisDay=0.0; + for (int i = 6; i >= 0; i--) { + String s = minNow.minusDays(i).toString(); + String s9 = maxNow.minusDays(i).toString(); + List<TBackRecord> day = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().between(TBackRecord::getTime, s,s9).in(TBackRecord::getUserId,list)); + double sum4 = day.stream().mapToDouble(TBackRecord::getMoney).sum(); + days.add(sum4); + if(i==0){ + thisDay=sum4; + } + } + + map.put("thisDay",thisDay); + map.put("yearData",years); + map.put("monthData",months); + map.put("weekData",week); + map.put("dayData",days); + + return map; + } + + + @RequestMapping(value = "/userAndVipPt") + @ResponseBody + public Object userAndVipPt(Integer type) { + type=1; + HashMap<String, Object> map = appUserClient.userAndVipPt(type); + return map; + } + + @RequestMapping(value = "/stuPt") + @ResponseBody + public Object stuPt() { + HashMap<String, Object> map = appUserClient.stuPt(); + return map; + } + @RequestMapping(value = "/stuYys") + @ResponseBody + public Object stuYys(Integer id) { + List<TStore> list4 = storeService.list(new QueryWrapper<TStore>().eq("operatorId", id).eq("state", 1)); + List<Integer> collect1 = list4.stream().map(TStore::getId).collect(Collectors.toList()); + //课程 + List<Integer> list = coursePackagePaymentClient.queryPaymentCoursePackage(collect1); + //场地 + List<SiteBooking> list1 = siteBookingService.list(new QueryWrapper<SiteBooking>().in("storeId", collect1).eq("state", 1)); + List<Integer> collect = list1.stream().map(SiteBooking::getAppUserId).collect(Collectors.toList()); + list.addAll(collect); + //赛事 + List<Integer> list2 = competitionClient.queryAppUserId(collect1); + list.addAll(list2); + //门票 + + HashMap<String, Object> map = appUserClient.stuYys(list); + return map; + } + @RequestMapping(value = "/stuStores") + @ResponseBody + public Object stuStores(Integer id) { + List<Integer> collect1 = Arrays.asList(id); + //课程 + List<Integer> list = coursePackagePaymentClient.queryPaymentCoursePackage(collect1); + //场地 + List<SiteBooking> list1 = siteBookingService.list(new QueryWrapper<SiteBooking>().in("storeId", collect1).eq("state", 1)); + List<Integer> collect = list1.stream().map(SiteBooking::getAppUserId).collect(Collectors.toList()); + list.addAll(collect); + //赛事 + List<Integer> list2 = competitionClient.queryAppUserId(collect1); + list.addAll(list2); + //门票 + + HashMap<String, Object> map = appUserClient.stuStores(list); + return map; + } + + // 消耗课时数据-平台 + @RequestMapping(value = "/coursePt") + @ResponseBody + public Object coursePt() { + List<Integer> userPt = appUserClient.getUserPt(Arrays.asList(1)); + HashMap<String, Object> map = coursePackagePaymentClient.coursePt(userPt); + return map; + } + // 消耗课时数据-运营商 + @RequestMapping(value = "/courseYys") + @ResponseBody + public Object courseYys(Integer id) { + List<Integer> userPt = appUserClient.getUserYYs(id); + HashMap<String, Object> map = coursePackagePaymentClient.coursePt(userPt); + return map; + } + // 消耗课时数据-运营商 + @RequestMapping(value = "/courseStore") + @ResponseBody + public Object courseStore(Integer id) { + List<Integer> userPt = appUserClient.getUserPt(Arrays.asList(id)); + HashMap<String, Object> map = coursePackagePaymentClient.coursePt(userPt); + return map; + } + + @RequestMapping(value = "/userAndVipYys") + @ResponseBody + public Object userAndVipYys(Integer id) { + List<TStore> list4 = storeService.list(new QueryWrapper<TStore>().eq("operatorId", id).eq("state", 1)); + List<Integer> collect1 = list4.stream().map(TStore::getId).collect(Collectors.toList()); + //课程 + List<Integer> list = coursePackagePaymentClient.queryPaymentCoursePackage(collect1); + //场地 + List<SiteBooking> list1 = siteBookingService.list(new QueryWrapper<SiteBooking>().in("storeId", collect1).eq("state", 1)); + List<Integer> collect = list1.stream().map(SiteBooking::getAppUserId).collect(Collectors.toList()); + list.addAll(collect); + //赛事 + List<Integer> list2 = competitionClient.queryAppUserId(collect1); + list.addAll(list2); + //门票 + + HashMap<String, Object> map = appUserClient.userAndVipYys(list); + return map; + } + @RequestMapping(value = "/userAndVipStore") + @ResponseBody + public Object userAndVipStore(Integer id) { + List<Integer> collect1 = Arrays.asList(id); + //课程 + List<Integer> list = coursePackagePaymentClient.queryPaymentCoursePackage(collect1); + //场地 + List<SiteBooking> list1 = siteBookingService.list(new QueryWrapper<SiteBooking>().in("storeId", collect1).eq("state", 1)); + List<Integer> collect = list1.stream().map(SiteBooking::getAppUserId).collect(Collectors.toList()); + list.addAll(collect); + //赛事 + List<Integer> list2 = competitionClient.queryAppUserId(collect1); + list.addAll(list2); + //门票 + + HashMap<String, Object> map = appUserClient.userAndVipStore(list); + return map; + } + @RequestMapping(value = "/actPt") + @ResponseBody + public Object actPt(Integer type) { + List<Integer> userPt = appUserClient.getUserPt(Arrays.asList(1)); + HashMap<String, Object> map = competitionClient.actPt(userPt); + + List<TStore> list = storeService.list(new LambdaQueryWrapper<TStore>().eq(TStore::getOperatorId, 0)); + long l1=0; + for (TStore tStore : list) { + long l = DateUtil.betweenDay(tStore.getCreateTime(), new Date(), true); + String startTime = tStore.getStartTime(); + String endTime = tStore.getEndTime(); + String s = startTime.split(":")[0]; + String s1 = endTime.split(":")[1]; + Integer integer = Integer.valueOf(s); + Integer integer1 = Integer.valueOf(s1); + Integer a =0; + if(integer==0 && integer1==0){ + a=24; + }else { + a= integer1-integer; + } + l1 += l * a; + } + map.put("allHour",l1); + return map; + } + @RequestMapping(value = "/actYys") + @ResponseBody + public Object actYys(Integer id) { + CompetionVO competionVO = new CompetionVO(); + List<TStore> list4 = storeService.list(new QueryWrapper<TStore>().eq("operatorId", id).eq("state", 1)); + List<Integer> collect1 = list4.stream().map(TStore::getId).collect(Collectors.toList()); + //课程 + List<Integer> list = coursePackagePaymentClient.queryPaymentCoursePackage(collect1); + //场地 + List<SiteBooking> list1 = siteBookingService.list(new QueryWrapper<SiteBooking>().in("storeId", collect1).eq("state", 1)); + List<Integer> collect = list1.stream().map(SiteBooking::getAppUserId).collect(Collectors.toList()); + list.addAll(collect); + //赛事 + List<Integer> list2 = competitionClient.queryAppUserId(collect1); + list.addAll(list2); + //门票 + + + competionVO.setIds(list); + competionVO.setOperatorId(id); + HashMap<String, Object> map = competitionClient.actYys(competionVO); + + List<TStore> lists = storeService.list(new LambdaQueryWrapper<TStore>().eq(TStore::getOperatorId, id)); + long l1=0; + for (TStore tStore : lists) { + long l = DateUtil.betweenDay(tStore.getCreateTime(), new Date(), true); + String startTime = tStore.getStartTime(); + String endTime = tStore.getEndTime(); + String s = startTime.split(":")[0]; + String s1 = endTime.split(":")[1]; + Integer integer = Integer.valueOf(s); + Integer integer1 = Integer.valueOf(s1); + Integer a =0; + if(integer==0 && integer1==0){ + a=24; + }else { + a= integer-integer1; + } + l1 += l * a; + } + map.put("allHour",l1); + return map; + } + @RequestMapping(value = "/actStore") + @ResponseBody + public Object actStore(Integer id) { + List<Integer> collect1 = Arrays.asList(id); + //课程 + List<Integer> list = coursePackagePaymentClient.queryPaymentCoursePackage(collect1); + //场地 + List<SiteBooking> list1 = siteBookingService.list(new QueryWrapper<SiteBooking>().in("storeId", collect1).eq("state", 1)); + List<Integer> collect = list1.stream().map(SiteBooking::getAppUserId).collect(Collectors.toList()); + list.addAll(collect); + //赛事 + List<Integer> list2 = competitionClient.queryAppUserId(collect1); + list.addAll(list2); + //门票 + + HashMap<String, Object> map = competitionClient.actPt(list); + + List<TStore> lists = storeService.list(new LambdaQueryWrapper<TStore>().eq(TStore::getOperatorId, 0)); + long l1=0; + for (TStore tStore : lists) { + long l = DateUtil.betweenDay(tStore.getCreateTime(), new Date(), true); + String startTime = tStore.getStartTime(); + String endTime = tStore.getEndTime(); + String s = startTime.split(":")[0]; + String s1 = endTime.split(":")[1]; + Integer integer = Integer.valueOf(s); + Integer integer1 = Integer.valueOf(s1); + Integer a =0; + if(integer==0 && integer1==0){ + a=24; + }else { + a= integer1-integer; + } + l1 += l * a; + } + map.put("allHour",l1); + return map; + } + + + /** * 跳转到运营商统计数据页面 */ @RequestMapping("/operator") public String operator(Model model) { Integer objectType = UserExt.getUser().getObjectType(); - List<CityManager> cityManagers = cityManagerClient.listAll(); - HashSet<String> city = new HashSet<>(); - List<CityManager> list = new ArrayList<>(); - for (CityManager cityManager : cityManagers) { - if (!city.contains(cityManager.getCity())){ - city.add(cityManager.getCity()); - list.add(cityManager); - } - } + Integer objectId = UserExt.getUser().getObjectId(); + + List<TOperator> list = operatorService.list(new LambdaQueryWrapper<TOperator>().ne(TOperator::getState, 3).ne(TOperator::getId,0)); model.addAttribute("list",list); model.addAttribute("objectType",objectType); + model.addAttribute("objectId",objectId); return PREFIX + "operatorIncome.html"; } + + /** + * 运营商 + * @param + * @return + */ + @ResponseBody + @RequestMapping("/selectYys") + public Object selectYys(Integer id,String time) { + HashMap<String, Object> map = new HashMap<>(); + // 找出平台的用户 +// List<User> list = sysUserService.list(new LambdaQueryWrapper<User>().eq(User::getObjectType, 2)); +// List<Integer> ids = list.stream().map(User::getId).collect(Collectors.toList()); +// List<Integer> userIds = appUserClient.getUserYYs(id); + List<TStore> list4 = storeService.list(new QueryWrapper<TStore>().eq("operatorId", id).eq("state", 1)); + List<Integer> collect1 = list4.stream().map(TStore::getId).collect(Collectors.toList()); + QueryDataFee queryDataFee = new QueryDataFee(time, collect1); + // 课程收入 + HashMap<String, Object> map3 = courseClient.queryFee(queryDataFee); + map.put("fee3",map3.get("fee")); + Object data = map3.get("data"); + map.put("courseData",data); + + + // 赛事收入 + Double aDouble1 = competitionClient.queryFee(queryDataFee); + map.put("fee4",aDouble1); + + // 订场 + List<Integer> ids = new ArrayList<>(); + if(collect1.size()==0){ + ids.add(-1); + }else{ + List<TSite> list = siteService.list(new QueryWrapper<TSite>().in("storeId", collect1).eq("state", 1)); + ids = list.stream().map(TSite::getId).collect(Collectors.toList()); + if(collect1.size()==0){ + ids.add(-1); + } + } + LambdaQueryWrapper<SiteBooking> vipPaymentLambdaQueryWrapper = new LambdaQueryWrapper<>(); + if(ToolUtil.isNotEmpty(time)){ + String stime = time.split(" - ")[0]+" 00:00:00"; + String etime = time.split(" - ")[1]+" 23:59:59"; + vipPaymentLambdaQueryWrapper.between(SiteBooking::getInsertTime,stime,etime); + } + vipPaymentLambdaQueryWrapper.in(SiteBooking::getSiteId,ids); + vipPaymentLambdaQueryWrapper.ne(SiteBooking::getStatus,0); + ArrayList<Integer> objects = new ArrayList<>(); + objects.add(1); + objects.add(2); + vipPaymentLambdaQueryWrapper.in(SiteBooking::getPayType,objects); + List<SiteBooking> list1 = siteBookingService.list(vipPaymentLambdaQueryWrapper); + double sum = list1.stream().mapToDouble(SiteBooking::getPayMoney).sum(); + map.put("fee5",sum); + + + List<Integer> collect = list1.stream().map(SiteBooking::getSiteId).collect(Collectors.toList()); + if(collect.size()==0){ + collect.add(-1); + } + List<TSite> list3 = siteService.list(new LambdaQueryWrapper<TSite>().in(TSite::getId, collect)); + for (SiteBooking siteBooking : list1) { + for (TSite tSite : list3) { + if(siteBooking.getSiteId().equals(tSite.getId())){ + siteBooking.setType(tSite.getSiteTypeId()); + } + } + } + + + List<TSiteType> list2 = siteTypeService.list(); + + List<Map<String,Object>> mapList = new ArrayList<>(); + + for (TSiteType tSiteType : list2) { + HashMap<String, Object> map2 = new HashMap<>(); + map2.put("name",tSiteType.getName()); + double a =0; + for (SiteBooking siteBooking : list1) { + if(tSiteType.getId().equals(siteBooking.getType())){ + a += siteBooking.getPayMoney(); + } + } + map2.put("value",a); + mapList.add(map2); + } + map.put("siteData",mapList); + + + // 商品 门票 + HashMap<String, Object> map2 = pointMercharsClient.queryFee(queryDataFee); + Object all = map2.get("all"); + Object day = map2.get("day"); + Object month = map2.get("month"); + Object quarter = map2.get("quarter"); + Object year = map2.get("year"); + map.put("fee7",all); + map.put("dayone",day); + map.put("monthone",month); + map.put("quarterone",quarter); + map.put("yearone",year); + + return map; + } + + + + /** + * 运营商 + * @param + * @return + */ + @ResponseBody + @RequestMapping("/selectStore") + public Object selectStore(Integer id,String time) { + HashMap<String, Object> map = new HashMap<>(); + List<Integer> collect1 = Arrays.asList(id); + //课程 + List<Integer> list = coursePackagePaymentClient.queryPaymentCoursePackage(collect1); + //场地 + List<SiteBooking> list1 = siteBookingService.list(new QueryWrapper<SiteBooking>().in("storeId", collect1).eq("state", 1)); + List<Integer> collect = list1.stream().map(SiteBooking::getAppUserId).collect(Collectors.toList()); + list.addAll(collect); + //赛事 + List<Integer> list2 = competitionClient.queryAppUserId(collect1); + list.addAll(list2); + //门票 + + QueryDataFee queryDataFee = new QueryDataFee(time, list); + // 会员费 + HashMap<String, Object> map1 = appUserClient.queryFee(queryDataFee); + Object fee1 = map1.get("fee1"); + + map.put("fee1",fee1); + //玩湃比 + Object fee2 = map1.get("fee2"); + map.put("fee2",fee2); + // 课程收入 + HashMap<String, Object> map3 = courseClient.queryFee(queryDataFee); + map.put("fee3",map3.get("fee")); + Object data = map3.get("data"); + map.put("courseData",data); + + + // 赛事收入 + Double aDouble1 = competitionClient.queryFee(queryDataFee); + map.put("fee4",aDouble1); + + // 订场 + LambdaQueryWrapper<SiteBooking> vipPaymentLambdaQueryWrapper = new LambdaQueryWrapper<>(); + if(ToolUtil.isNotEmpty(time)){ + String stime = time.split(" - ")[0]+" 00:00:00"; + String etime = time.split(" - ")[1]+" 23:59:59"; + vipPaymentLambdaQueryWrapper.between(SiteBooking::getInsertTime,stime,etime); + } + vipPaymentLambdaQueryWrapper.in(SiteBooking::getAppUserId,list); + vipPaymentLambdaQueryWrapper.ne(SiteBooking::getStatus,0); + ArrayList<Integer> objects = new ArrayList<>(); + objects.add(1); + objects.add(2); + vipPaymentLambdaQueryWrapper.in(SiteBooking::getPayType,objects); + List<SiteBooking> lists1 = siteBookingService.list(vipPaymentLambdaQueryWrapper); + double sum = lists1.stream().mapToDouble(SiteBooking::getPayMoney).sum(); + map.put("fee5",sum); + + + List<Integer> collects = list1.stream().map(SiteBooking::getSiteId).collect(Collectors.toList()); + if(collects.size()==0){ + collect.add(-1); + } + List<TSite> list3 = siteService.list(new LambdaQueryWrapper<TSite>().in(TSite::getId, collects)); + for (SiteBooking siteBooking : list1) { + for (TSite tSite : list3) { + if(siteBooking.getSiteId().equals(tSite.getId())){ + siteBooking.setType(tSite.getSiteTypeId()); + } + } + } + + + List<TSiteType> lists2 = siteTypeService.list(); + + List<Map<String,Object>> mapList = new ArrayList<>(); + + for (TSiteType tSiteType : lists2) { + HashMap<String, Object> map2 = new HashMap<>(); + map2.put("name",tSiteType.getName()); + double a =0; + for (SiteBooking siteBooking : list1) { + if(null != siteBooking.getType() && tSiteType.getId().equals(siteBooking.getType()) && null != siteBooking.getPayMoney()){ + a += siteBooking.getPayMoney(); + } + } + map2.put("value",a); + mapList.add(map2); + } + map.put("siteData",mapList); + + + // 商品 门票 + HashMap<String, Object> map2 = pointMercharsClient.queryFee(queryDataFee); + Object all = map2.get("all"); + Object day = map2.get("day"); + Object month = map2.get("month"); + Object quarter = map2.get("quarter"); + Object year = map2.get("year"); + map.put("fee7",all); + map.put("dayone",day); + map.put("monthone",month); + map.put("quarterone",quarter); + map.put("yearone",year); + + return map; + } + + /** * 跳转到门店统计数据页面 */ @RequestMapping("/store") public String store(Model model) { Integer objectType = UserExt.getUser().getObjectType(); - List<CityManager> cityManagers = cityManagerClient.listAll(); - HashSet<String> city = new HashSet<>(); - List<CityManager> list = new ArrayList<>(); - for (CityManager cityManager : cityManagers) { - if (!city.contains(cityManager.getCity())){ - city.add(cityManager.getCity()); - list.add(cityManager); + List<TStore> tStores = new ArrayList<>(); + if(objectType == 1){ + tStores = storeService.list(new LambdaQueryWrapper<TStore>().eq(TStore::getState, 1)); + } + if (objectType == 2){ + tStores = storeService.list(new LambdaQueryWrapper<TStore>().eq(TStore::getState, 1).eq(TStore::getOperatorId,UserExt.getUser().getObjectId())); + } + if (objectType == 3){ + tStores = storeService.list(new LambdaQueryWrapper<TStore>().eq(TStore::getState, 1).eq(TStore::getId,UserExt.getUser().getObjectId())); + } + model.addAttribute("list",tStores); + model.addAttribute("objectType",objectType); + model.addAttribute("objectId",UserExt.getUser().getObjectId()); + return PREFIX + "storeIncome.html"; + } + + + @Autowired + private ITSiteTypeService siteTypeService; + + + @Autowired + private ITSiteService siteService; + + @RequestMapping("/type1") + @ResponseBody + public Object type1(String time) { + HashMap<String, Object> map = new HashMap<>(); + // 找出平台的用户 + List<User> list = sysUserService.list(new LambdaQueryWrapper<User>().eq(User::getObjectType, 1)); + List<Integer> ids = list.stream().map(User::getId).collect(Collectors.toList()); + List<Integer> userIds = appUserClient.getUserPt(ids); + QueryDataFee queryDataFee = new QueryDataFee(time, userIds); + // 会员费 + HashMap<String, Object> map1 = appUserClient.queryFee(queryDataFee); + Object fee1 = map1.get("fee1"); + map.put("fee1",fee1); + //玩湃比 + Object fee2 = map1.get("fee2"); + map.put("fee2",fee2); + // 课程收入 + HashMap<String, Object> map3 = courseClient.queryFee(queryDataFee); + map.put("fee3",map3.get("fee")); + Object data = map3.get("data"); + map.put("courseData",data); + // 赛事收入 + Double aDouble1 = competitionClient.queryFee(queryDataFee); + map.put("fee4",aDouble1); + // 订场 + if(ids.size()==0){ + ids.add(-1); + } + LambdaQueryWrapper<SiteBooking> vipPaymentLambdaQueryWrapper = new LambdaQueryWrapper<>(); + if(ToolUtil.isNotEmpty(time)){ + String stime = time.split(" - ")[0]+" 00:00:00"; + String etime = time.split(" - ")[1]+" 23:59:59"; + vipPaymentLambdaQueryWrapper.between(SiteBooking::getInsertTime,stime,etime); + } + if(userIds.size()==0){ + userIds.add(-1); + } + vipPaymentLambdaQueryWrapper.ne(SiteBooking::getStatus,0); + vipPaymentLambdaQueryWrapper.ne(SiteBooking::getStatus,5); + ArrayList<Integer> objects = new ArrayList<>(); + objects.add(1); + objects.add(2); + vipPaymentLambdaQueryWrapper.in(SiteBooking::getPayType,objects); + List<SiteBooking> list1 = siteBookingService.list(new QueryWrapper<SiteBooking>() + .ne("status",0) + .ne("status",5) + .ne("payType",3) + .ne("payType",4)); + double sum = list1.stream().mapToDouble(SiteBooking::getPayMoney).sum(); + // 智慧球场查询query + GameDataQuery gameDataQuery = new GameDataQuery(); + gameDataQuery.setObjectId(0); + // 平台智慧球场 + List<TGameRecord> data1 = ballClient.getData(gameDataQuery); + double sum1 = data1.stream() + .map(TGameRecord::getMoney) // 获取每个 TGameRecord 对象的 money 字段 + .mapToDouble(BigDecimal::doubleValue) // 将 BigDecimal 转换为 double + .sum(); + map.put("fee5",sum+sum1); + + + List<Integer> collect = list1.stream().map(SiteBooking::getSiteId).collect(Collectors.toList()); + if(collect.size()==0){ + collect.add(-1); + } + List<TSite> list3 = siteService.list(new LambdaQueryWrapper<TSite>().in(TSite::getId, collect)); + for (SiteBooking siteBooking : list1) { + for (TSite tSite : list3) { + if(siteBooking.getSiteId().equals(tSite.getId())){ + siteBooking.setType(tSite.getSiteTypeId()); + } } } - model.addAttribute("list",list); - model.addAttribute("objectType",objectType); - return PREFIX + "storeIncome.html"; + + + List<TSiteType> list2 = siteTypeService.list(); + + List<Map<String,Object>> mapList = new ArrayList<>(); + + for (TSiteType tSiteType : list2) { + HashMap<String, Object> map2 = new HashMap<>(); + map2.put("name",tSiteType.getName()); + double a =0; + for (SiteBooking siteBooking : list1) { + if(tSiteType.getId().equals(siteBooking.getType())){ + a += siteBooking.getPayMoney(); + } + } + map2.put("value",a); + mapList.add(map2); + } + map.put("siteData",mapList); + + + // 商品 门票 + HashMap<String, Object> map2 = pointMercharsClient.queryFee(queryDataFee); + Object all = map2.get("all"); + Object day = map2.get("day"); + Object month = map2.get("month"); + Object quarter = map2.get("quarter"); + Object year = map2.get("year"); + map.put("fee7",all); + map.put("dayone",day); + map.put("monthone",month); + map.put("quarterone",quarter); + map.put("yearone",year); + + return map; + } + @RequestMapping("/stuCourseData") + @ResponseBody + public Object stuCourseData() { + ArrayList<Integer> objects = new ArrayList<>(); + objects.add(1); + List<Integer> userIds = appUserClient.getUserPt(objects); + List<Map<String,Object>> list = coursePackagePaymentClient.queryCourseData(userIds); + ArrayList<Object> objects2 = new ArrayList<>(); + ArrayList<Object> objects3 = new ArrayList<>(); + for (Map<String, Object> map : list) { + Object name = map.get("name"); + Object value = map.get("value"); + objects2.add(name); + objects3.add(value); + } + HashMap<String, Object> map = new HashMap<>(); + map.put("data1",objects2); + map.put("data2",objects3); + return map; + } + @RequestMapping("/stuUserData") + @ResponseBody + public Object stuUserData() { + ArrayList<Integer> objects = new ArrayList<>(); + objects.add(1); + HashMap<String, Object> map = appUserClient.queryUserAge1(); + + return map; + } + @RequestMapping("/stuUserDataYys") + @ResponseBody + public Object stuUserDataYys(Integer id) { + List<TStore> list4 = storeService.list(new QueryWrapper<TStore>().eq("operatorId", id).eq("state", 1)); + List<Integer> collect1 = list4.stream().map(TStore::getId).collect(Collectors.toList()); + //课程 + List<Integer> list = coursePackagePaymentClient.queryPaymentCoursePackage(collect1); + //场地 + List<SiteBooking> list1 = siteBookingService.list(new QueryWrapper<SiteBooking>().in("storeId", collect1).eq("state", 1)); + List<Integer> collect = list1.stream().map(SiteBooking::getAppUserId).collect(Collectors.toList()); + list.addAll(collect); + //赛事 + List<Integer> list2 = competitionClient.queryAppUserId(collect1); + list.addAll(list2); + //门票 + HashMap<String, Object> map = appUserClient.queryUserAgeYys(list); + return map; + } + @RequestMapping("/stuUserDataStore") + @ResponseBody + public Object stuUserDataStore(Integer id) { + + List<Integer> collect1 = Arrays.asList(id); + //课程 + List<Integer> list = coursePackagePaymentClient.queryPaymentCoursePackage(collect1); + //场地 + List<SiteBooking> list1 = siteBookingService.list(new QueryWrapper<SiteBooking>().in("storeId", collect1).eq("state", 1)); + List<Integer> collect = list1.stream().map(SiteBooking::getAppUserId).collect(Collectors.toList()); + list.addAll(collect); + //赛事 + List<Integer> list2 = competitionClient.queryAppUserId(collect1); + list.addAll(list2); + //门票 + + HashMap<String, Object> map = appUserClient.queryUserAgeStore(list); + + return map; + } + @RequestMapping("/selectYysJx") + @ResponseBody + public Object selectYysJx(Integer id) { + List<TStore> list4 = storeService.list(new QueryWrapper<TStore>().eq("operatorId", id).eq("state", 1)); + List<Integer> collect1 = list4.stream().map(TStore::getId).collect(Collectors.toList()); + //课程 + List<Integer> list = coursePackagePaymentClient.queryPaymentCoursePackage(collect1); + //场地 + List<SiteBooking> list1 = siteBookingService.list(new QueryWrapper<SiteBooking>().in("storeId", collect1).eq("state", 1)); + List<Integer> collect = list1.stream().map(SiteBooking::getAppUserId).collect(Collectors.toList()); + list.addAll(collect); + //赛事 + List<Integer> list2 = competitionClient.queryAppUserId(collect1); + list.addAll(list2); + //门票 + + HashMap<String, Object> map1 = appUserClient.queryUserAgeYys1(list); + List<Map<String, Object>> mapList = coursePackagePaymentClient.queryCourseData(list); + ArrayList<Object> objects2 = new ArrayList<>(); + ArrayList<Object> objects3 = new ArrayList<>(); + for (Map<String, Object> map : mapList) { + Object name = map.get("name"); + Object value = map.get("value"); + objects2.add(name); + objects3.add(value); + } + HashMap<String, Object> map = new HashMap<>(); + map1.put("data1",objects2); + map1.put("data2",objects3); + + + return map1; + } + @RequestMapping("/selectStoreJx") + @ResponseBody + public Object selectStoreJx(Integer id) { + List<Integer> collect1 = Arrays.asList(id); + //课程 + List<Integer> list = coursePackagePaymentClient.queryPaymentCoursePackage(collect1); + //场地 + List<SiteBooking> list1 = siteBookingService.list(new QueryWrapper<SiteBooking>().in("storeId", collect1).eq("state", 1)); + List<Integer> collect = list1.stream().map(SiteBooking::getAppUserId).collect(Collectors.toList()); + list.addAll(collect); + //赛事 + List<Integer> list2 = competitionClient.queryAppUserId(collect1); + list.addAll(list2); + //门票 + + HashMap<String, Object> map1 = appUserClient.queryUserAgeStore1(list); + + List<Map<String, Object>> mapList = coursePackagePaymentClient.queryCourseData(list); + ArrayList<Object> objects2 = new ArrayList<>(); + ArrayList<Object> objects3 = new ArrayList<>(); + for (Map<String, Object> map : mapList) { + Object name = map.get("name"); + Object value = map.get("value"); + objects2.add(name); + objects3.add(value); + } + HashMap<String, Object> map = new HashMap<>(); + map1.put("data1",objects2); + map1.put("data2",objects3); + + + return map1; } } -- Gitblit v1.7.1