From 8d136a0f92dcd31d77e18c30f9b1865db83b0f85 Mon Sep 17 00:00:00 2001 From: liujie <liujie> Date: 星期二, 10 十月 2023 14:25:53 +0800 Subject: [PATCH] update --- cloud-server-management/src/main/webapp/WEB-INF/view/system/ticket/ticket_add.html | 4 cloud-server-course/src/main/java/com/dsh/course/entity/CoursePackageStudent.java | 2 cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java | 109 ++++ cloud-server-management/src/main/webapp/WEB-INF/view/system/dataStatistics/storeIncome.html | 321 ++++++++++++ cloud-server-course/src/main/resources/mapper/TCoursePackageDiscountMapper.xml | 4 cloud-server-account/src/main/java/com/dsh/account/controller/StudentController.java | 322 ++++++++++++ cloud-server-management/src/main/webapp/WEB-INF/view/system/dataStatistics/operatorIncome.html | 330 ++++++++++++ cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/DataStatisticsController.java | 113 ++++ cloud-server-account/src/main/java/com/dsh/account/model/vo/exploreDetail/QuestionIns.java | 2 cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentClient.java | 5 cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_edit.html | 1 cloud-server-management/src/main/webapp/WEB-INF/view/system/dataStatistics/platformIncome.html | 319 +++++++++-- cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java | 5 cloud-server-management/src/main/java/com/dsh/course/feignClient/account/AppUserClient.java | 7 14 files changed, 1,455 insertions(+), 89 deletions(-) diff --git a/cloud-server-account/src/main/java/com/dsh/account/controller/StudentController.java b/cloud-server-account/src/main/java/com/dsh/account/controller/StudentController.java index 394eec2..77dee1e 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/controller/StudentController.java +++ b/cloud-server-account/src/main/java/com/dsh/account/controller/StudentController.java @@ -311,6 +311,8 @@ ArrayList<Long> months = new ArrayList<>(); ArrayList<Long> monthsVip = new ArrayList<>(); + + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 月 for (int i = 1; i <= 12; i++) { String m=i+""; @@ -318,8 +320,8 @@ m="0"+i; } String s = year + "-" + m; - long count = list.stream().filter(e -> e.getInsertTime().toString().contains(s)).count(); - long count1 = list1.stream().filter(e -> e.getInsertTime().toString().contains(s)).count(); + long count = list.stream().filter(e -> format.format(e.getInsertTime()).contains(s)).count(); + long count1 = list1.stream().filter(e -> format.format(e.getInsertTime()).contains(s)).count(); months.add(count); monthsVip.add(count1); } @@ -385,6 +387,322 @@ return map; } + @ResponseBody + @PostMapping("/student/stuPt") + public HashMap<String, Object> stuPt(){ + HashMap<String, Object> map = new HashMap<>(); + // 所有的 + List<TAppUser> list = appUserService.list(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getInsertType, 1)); + List<Integer> collect1 = list.stream().map(TAppUser::getId).collect(Collectors.toList()); + if(collect1.size()==0){ + collect1.add(-1); + } + List<TStudent> students = studentService.list(new LambdaQueryWrapper<TStudent>().in(TStudent::getAppUserId, collect1)); + map.put("allUser",students.size()); + + 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()); + // 年 + ArrayList<Long> years = new ArrayList<>(); + for (Object o : collect) { + String s = o.toString(); + long count = students.stream().filter(e -> e.getInsertTime().toString().contains(s)).count(); + years.add(count); + } + map.put("yearData",years); + + ArrayList<Long> months = new ArrayList<>(); + + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + + // 月 + for (int i = 1; i <= 12; i++) { + String m=i+""; + if(i<10){ + m="0"+i; + } + String s = year + "-" + m; + long count = students.stream().filter(e -> format.format(e.getInsertTime()).contains(s)).count(); + months.add(count); + } + map.put("monthData",months); + + // 周 + + // 获取最近四周 + 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(); + + + int count = studentService.count(new LambdaQueryWrapper<TStudent>().in(TStudent::getAppUserId, collect1).between(TStudent::getInsertTime, s7, s8)); + + int count1 = studentService.count(new LambdaQueryWrapper<TStudent>().in(TStudent::getAppUserId, collect1).between(TStudent::getInsertTime,s5,s6)); + + int count2 = studentService.count(new LambdaQueryWrapper<TStudent>().in(TStudent::getAppUserId, collect1).between(TStudent::getInsertTime,s3,s4)); + + int count3 = studentService.count(new LambdaQueryWrapper<TStudent>().in(TStudent::getAppUserId, collect1).between(TStudent::getInsertTime,s1,s2)); + map.put("count",count); + map.put("count1",count1); + map.put("count2",count2); + map.put("count3",count3); + + + // 日 + ArrayList<Integer> days = new ArrayList<>(); + for (int i = 6; i >= 0; i--) { + String s = minNow.minusDays(i).toString(); + String s9 = maxNow.minusDays(i).toString(); + int count4 = studentService.count(new LambdaQueryWrapper<TStudent>().in(TStudent::getAppUserId, collect1).between(TStudent::getInsertTime,s,s9)); + days.add(count4); + } + map.put("dayData",days); + + + return map; + + } + + + + + + + + + + @ResponseBody + @PostMapping("/student/userAndVipYys") + public HashMap<String, Object> userAndVipYys(@RequestBody Integer id){ + HashMap<String, Object> map = new HashMap<>(); + // 所有的 + List<TAppUser> list = appUserService.list(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getInsertType, 2).eq(TAppUser::getAddUserId,id)); + map.put("allUser",list.size()); + List<TAppUser> list1 = appUserService.list(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getInsertType, 2).eq(TAppUser::getAddUserId,id).eq(TAppUser::getIsVip,1)); + map.put("allVip",list1.size()); + + + 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()); + // 年 + ArrayList<Long> years = new ArrayList<>(); + ArrayList<Long> yearsVip = new ArrayList<>(); + for (Object o : collect) { + String s = o.toString(); + long count = list.stream().filter(e -> e.getInsertTime().toString().contains(s)).count(); + long count1 = list1.stream().filter(e -> e.getInsertTime().toString().contains(s)).count(); + years.add(count); + yearsVip.add(count1); + } + map.put("yearData",years); + map.put("yearsVip",yearsVip); + + ArrayList<Long> months = new ArrayList<>(); + ArrayList<Long> monthsVip = new ArrayList<>(); + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + // 月 + for (int i = 1; i <= 12; i++) { + String m=i+""; + if(i<10){ + m="0"+i; + } + String s = year + "-" + m; + long count = list.stream().filter(e -> format.format(e.getInsertTime()).contains(s)).count(); + long count1 = list1.stream().filter(e -> format.format(e.getInsertTime()).contains(s)).count(); + months.add(count); + monthsVip.add(count1); + } + map.put("monthData",months); + map.put("monthsVip",monthsVip); + + // 周 + + // 获取最近四周 + 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(); + + + int count = appUserService.count(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getInsertType, 2).eq(TAppUser::getAddUserId,id).between(TAppUser::getInsertTime, s7, s8)); + int countVip = appUserService.count(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getInsertType, 2).eq(TAppUser::getAddUserId,id).eq(TAppUser::getIsVip,1).between(TAppUser::getInsertTime, s7, s8)); + + int count1 = appUserService.count(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getInsertType, 2).eq(TAppUser::getAddUserId,id).between(TAppUser::getInsertTime,s5,s6)); + int countVip1 = appUserService.count(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getInsertType, 2).eq(TAppUser::getAddUserId,id).eq(TAppUser::getIsVip,1).between(TAppUser::getInsertTime, s5,s6)); + + int count2 = appUserService.count(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getInsertType, 2).eq(TAppUser::getAddUserId,id).between(TAppUser::getInsertTime,s3,s4)); + int countVip2 = appUserService.count(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getInsertType, 2).eq(TAppUser::getAddUserId,id).eq(TAppUser::getIsVip,1).between(TAppUser::getInsertTime, s3,s4)); + + int count3 = appUserService.count(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getInsertType, 2).eq(TAppUser::getAddUserId,id).between(TAppUser::getInsertTime,s1,s2)); + int countVip3 = appUserService.count(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getInsertType, 2).eq(TAppUser::getAddUserId,id).eq(TAppUser::getIsVip,1).between(TAppUser::getInsertTime, s1,s2)); + map.put("count",count); + map.put("count1",count1); + map.put("count2",count2); + map.put("count3",count3); + map.put("countVip",countVip); + map.put("countVip1",countVip1); + map.put("countVip2",countVip2); + map.put("countVip3",countVip3); + + + // 日 + ArrayList<Integer> days = new ArrayList<>(); + ArrayList<Integer> daysVip = new ArrayList<>(); + for (int i = 6; i >= 0; i--) { + String s = minNow.minusDays(i).toString(); + String s9 = maxNow.minusDays(i).toString(); + int count4 = appUserService.count(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getInsertType, 2).eq(TAppUser::getAddUserId,id).between(TAppUser::getInsertTime,s,s9)); + int countVip5 = appUserService.count(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getInsertType, 2).eq(TAppUser::getAddUserId,id).eq(TAppUser::getIsVip,1).between(TAppUser::getInsertTime, s,s9)); + days.add(count4); + daysVip.add(countVip5); + } + map.put("dayData",days); + map.put("daysVip",daysVip); + + + return map; + + } + @ResponseBody + @PostMapping("/student/userAndVipStore") + public HashMap<String, Object> userAndVipStore(@RequestBody Integer id){ + HashMap<String, Object> map = new HashMap<>(); + // 所有的 + List<TAppUser> list = appUserService.list(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getInsertType, 3).eq(TAppUser::getAddUserId,id)); + map.put("allUser",list.size()); + List<TAppUser> list1 = appUserService.list(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getInsertType, 3).eq(TAppUser::getAddUserId,id).eq(TAppUser::getIsVip,1)); + map.put("allVip",list1.size()); + + + 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()); + // 年 + ArrayList<Long> years = new ArrayList<>(); + ArrayList<Long> yearsVip = new ArrayList<>(); + for (Object o : collect) { + String s = o.toString(); + long count = list.stream().filter(e -> e.getInsertTime().toString().contains(s)).count(); + long count1 = list1.stream().filter(e -> e.getInsertTime().toString().contains(s)).count(); + years.add(count); + yearsVip.add(count1); + } + map.put("yearData",years); + map.put("yearsVip",yearsVip); + + ArrayList<Long> months = new ArrayList<>(); + ArrayList<Long> monthsVip = new ArrayList<>(); + // 月 + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + for (int i = 1; i <= 12; i++) { + String m=i+""; + if(i<10){ + m="0"+i; + } + String s = year + "-" + m; + long count = list.stream().filter(e -> format.format(e.getInsertTime()).contains(s)).count(); + long count1 = list1.stream().filter(e -> format.format(e.getInsertTime()).contains(s)).count(); + months.add(count); + monthsVip.add(count1); + } + map.put("monthData",months); + map.put("monthsVip",monthsVip); + + // 周 + + // 获取最近四周 + 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(); + + + int count = appUserService.count(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getInsertType, 3).eq(TAppUser::getAddUserId,id).between(TAppUser::getInsertTime, s7, s8)); + int countVip = appUserService.count(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getInsertType, 3).eq(TAppUser::getAddUserId,id).eq(TAppUser::getIsVip,1).between(TAppUser::getInsertTime, s7, s8)); + + int count1 = appUserService.count(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getInsertType, 3).eq(TAppUser::getAddUserId,id).between(TAppUser::getInsertTime,s5,s6)); + int countVip1 = appUserService.count(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getInsertType, 3).eq(TAppUser::getAddUserId,id).eq(TAppUser::getIsVip,1).between(TAppUser::getInsertTime, s5,s6)); + + int count2 = appUserService.count(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getInsertType, 3).eq(TAppUser::getAddUserId,id).between(TAppUser::getInsertTime,s3,s4)); + int countVip2 = appUserService.count(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getInsertType, 3).eq(TAppUser::getAddUserId,id).eq(TAppUser::getIsVip,1).between(TAppUser::getInsertTime, s3,s4)); + + int count3 = appUserService.count(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getInsertType, 3).eq(TAppUser::getAddUserId,id).between(TAppUser::getInsertTime,s1,s2)); + int countVip3 = appUserService.count(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getInsertType, 3).eq(TAppUser::getAddUserId,id).eq(TAppUser::getIsVip,1).between(TAppUser::getInsertTime, s1,s2)); + map.put("count",count); + map.put("count1",count1); + map.put("count2",count2); + map.put("count3",count3); + map.put("countVip",countVip); + map.put("countVip1",countVip1); + map.put("countVip2",countVip2); + map.put("countVip3",countVip3); + + + // 日 + ArrayList<Integer> days = new ArrayList<>(); + ArrayList<Integer> daysVip = new ArrayList<>(); + for (int i = 6; i >= 0; i--) { + String s = minNow.minusDays(i).toString(); + String s9 = maxNow.minusDays(i).toString(); + int count4 = appUserService.count(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getInsertType, 3).eq(TAppUser::getAddUserId,id).between(TAppUser::getInsertTime,s,s9)); + int countVip5 = appUserService.count(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getInsertType, 3).eq(TAppUser::getAddUserId,id).eq(TAppUser::getIsVip,1).between(TAppUser::getInsertTime, s,s9)); + days.add(count4); + daysVip.add(countVip5); + } + map.put("dayData",days); + map.put("daysVip",daysVip); + + + return map; + + } diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/vo/exploreDetail/QuestionIns.java b/cloud-server-account/src/main/java/com/dsh/account/model/vo/exploreDetail/QuestionIns.java index 4a04537..8b354b0 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/model/vo/exploreDetail/QuestionIns.java +++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/exploreDetail/QuestionIns.java @@ -15,5 +15,7 @@ @ApiModelProperty(value = "答复内容") private String quesContents; + @ApiModelProperty(value = "答复时间") + private String quesTime; } diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java b/cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java index 29210cf..901066a 100644 --- a/cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java +++ b/cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java @@ -583,11 +583,12 @@ ids.add(-1); } ArrayList<Object> integers = new ArrayList<>(); - List<Object> collect = integers.stream().sorted().collect(Collectors.toList()); 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()); // 年 ArrayList<Integer> years = new ArrayList<>(); ArrayList<Integer> yearsUser = new ArrayList<>(); @@ -601,6 +602,8 @@ map.put("yearData",years); map.put("yearsUser",yearsUser); // 月 + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + ArrayList<Integer> months = new ArrayList<>(); ArrayList<Integer> monthsUser = new ArrayList<>(); for (int i = 1; i <= 12; i++) { diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java index 2f691bb..c65589a 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java +++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java @@ -54,6 +54,8 @@ import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.LocalTime; import java.util.*; import java.util.stream.Collectors; @@ -1601,4 +1603,111 @@ } + + @ResponseBody + @PostMapping("/coursePackagePayment/coursePt") + HashMap<String, Object> coursePt(@RequestBody List<Integer> userPt){ + if(userPt.size()==0){ + userPt.add(-1); + } + HashMap<String, Object> map = new HashMap<>(); + List<TCoursePackagePayment> tCoursePackagePayments = packagePaymentService.listOne(userPt); + int sum = tCoursePackagePayments.stream().mapToInt(TCoursePackagePayment::getTotalClassHours).sum(); + int sum1 = tCoursePackagePayments.stream().mapToInt(TCoursePackagePayment::getLaveClassHours).sum(); + map.put("allCourse",sum-sum1); + + //所有课包 + List<TCoursePackage> coursePackages = tcpService.list(); + + + // 年 + List<CoursePackageStudent> list = cspsService.list(new LambdaQueryWrapper<CoursePackageStudent>().in(CoursePackageStudent::getAppUserId, userPt)); + + + for (CoursePackageStudent coursePackageStudent : list) { + for (TCoursePackage coursePackage : coursePackages) { + if(coursePackageStudent.getCoursePackageId().equals(coursePackage.getId())){ + if(ToolUtil.isEmpty(coursePackage.getNeedNum())){ + coursePackageStudent.setNeedNum(0); + }else { + coursePackageStudent.setNeedNum(coursePackageStudent.getNeedNum()); + } + } + } + } + + ArrayList<Object> integers = new ArrayList<>(); + int year = cn.hutool.core.date.DateUtil.year(new Date()); + for (int i = 0; i < 10; i++) { + integers.add(year-i); + } + List<Object> collect = integers.stream().sorted().collect(Collectors.toList()); + // 年 + ArrayList<Integer> years = new ArrayList<>(); + for (Object o : collect) { + String s = o.toString(); + List<CoursePackageStudent> collect1 = list.stream().filter(e -> e.getInsertTime().toString().contains(s)).collect(Collectors.toList()); + int sum2 = collect1.stream().mapToInt(CoursePackageStudent::getNeedNum).sum(); + years.add(sum2); + } + + map.put("yearData",years); + + + + ArrayList<Integer> months = new ArrayList<>(); + + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + + // 月 + for (int i = 1; i <= 12; i++) { + String m=i+""; + if(i<10){ + m="0"+i; + } + String s = year + "-" + m; + List<CoursePackageStudent> collect1 = list.stream().filter(e -> format.format(e.getInsertTime()).contains(s)).collect(Collectors.toList()); + int sum2 = collect1.stream().mapToInt(CoursePackageStudent::getNeedNum).sum(); + months.add(sum2); + } + map.put("monthData",months); + + + + // 周 + // 获取最近四周 + 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(); + +// +// int count = studentService.count(new LambdaQueryWrapper<TStudent>().in(TStudent::getAppUserId, collect1).between(TStudent::getInsertTime, s7, s8)); +// +// int count1 = studentService.count(new LambdaQueryWrapper<TStudent>().in(TStudent::getAppUserId, collect1).between(TStudent::getInsertTime,s5,s6)); +// +// int count2 = studentService.count(new LambdaQueryWrapper<TStudent>().in(TStudent::getAppUserId, collect1).between(TStudent::getInsertTime,s3,s4)); +// +// int count3 = studentService.count(new LambdaQueryWrapper<TStudent>().in(TStudent::getAppUserId, collect1).between(TStudent::getInsertTime,s1,s2)); + +// map.put("count",count); +// map.put("count1",count1); +// map.put("count2",count2); +// map.put("count3",count3); + return null; + + } + } diff --git a/cloud-server-course/src/main/java/com/dsh/course/entity/CoursePackageStudent.java b/cloud-server-course/src/main/java/com/dsh/course/entity/CoursePackageStudent.java index b692440..a75287d 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/entity/CoursePackageStudent.java +++ b/cloud-server-course/src/main/java/com/dsh/course/entity/CoursePackageStudent.java @@ -75,6 +75,8 @@ @TableField("type") private Integer type; + @TableField(exist = false) + private Integer needNum; @Override protected Serializable pkVal() { diff --git a/cloud-server-course/src/main/resources/mapper/TCoursePackageDiscountMapper.xml b/cloud-server-course/src/main/resources/mapper/TCoursePackageDiscountMapper.xml index cec4c9e..62f0c90 100644 --- a/cloud-server-course/src/main/resources/mapper/TCoursePackageDiscountMapper.xml +++ b/cloud-server-course/src/main/resources/mapper/TCoursePackageDiscountMapper.xml @@ -39,8 +39,8 @@ <select id="queryDiscountListAudit" resultType="com.dsh.course.model.DiscountList"> select t1.id,t1.type,t1.auditStatus status,t2.province pName,t2.city cName,t2.name,t2.storeId,t2.id courseId from t_course_package_discount t1 left join t_course_package t2 on t1.coursePackageId = t2.id where t2.storeId in <foreach collection="ids" close=")" item="id" open="(" separator=","> - #{id} and t1.auditStatus !=2 - </foreach> + #{id} + </foreach> and t1.auditStatus !=2 <if test="pCode !=null and pCode !=''"> and t2.provinceCode =#{pCode} </if> diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/AppUserClient.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/AppUserClient.java index bca3425..d498192 100644 --- a/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/AppUserClient.java +++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/AppUserClient.java @@ -125,5 +125,12 @@ @PostMapping("/student/userAndVipPt") HashMap<String, Object> userAndVipPt(Integer type); + @PostMapping("/student/userAndVipYys") + HashMap<String, Object> userAndVipYys(Integer id); + @PostMapping("/student/userAndVipStore") + HashMap<String, Object> userAndVipStore(Integer id); + @PostMapping("/student/stuPt") + HashMap<String, Object> stuPt(); + } diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentClient.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentClient.java index ac52705..fb25304 100644 --- a/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentClient.java +++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentClient.java @@ -8,6 +8,7 @@ import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.*; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -92,6 +93,6 @@ @PostMapping("/coursePackagePayment/queryCourseData") List<Map<String,Object>> queryCourseData(List<Integer> ids); - - + @PostMapping("/coursePackagePayment/coursePt") + HashMap<String, Object> coursePt(List<Integer> userPt); } 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 fcaffb4..e23922a 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 @@ -425,6 +425,8 @@ return monthlyData; } + + /** * 运营统计-平台-用户数据 * @@ -435,6 +437,18 @@ 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; } /** * 退费-平台 @@ -826,7 +840,36 @@ @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 = "/coursePt") + @ResponseBody + public Object coursePt() { + List<Integer> userPt = appUserClient.getUserPt(Arrays.asList(1)); + HashMap<String, Object> map = coursePackagePaymentClient.coursePt(userPt); + return map; + } + + @RequestMapping(value = "/userAndVipYys") + @ResponseBody + public Object userAndVipYys(Integer id) { + HashMap<String, Object> map = appUserClient.userAndVipYys(id); + return map; + } + @RequestMapping(value = "/userAndVipStore") + @ResponseBody + public Object userAndVipStore(Integer id) { + HashMap<String, Object> map = appUserClient.userAndVipStore(id); return map; } @RequestMapping(value = "/actPt") @@ -836,10 +879,78 @@ 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); - tStore.getStartTime(); + 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) { + List<Integer> userPt = appUserClient.getUserYYs(id); + 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 = "/actStore") + @ResponseBody + public Object actStore(Integer id) { + List<Integer> userPt = appUserClient.getUserStore(id); + 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; } diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/dataStatistics/operatorIncome.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/dataStatistics/operatorIncome.html index d7c2800..94f3a09 100644 --- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/dataStatistics/operatorIncome.html +++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/dataStatistics/operatorIncome.html @@ -300,6 +300,9 @@ if(cutType==2){ yytj() + ptUser() + ptActivity() + } if(cutType==3){ jxtj() @@ -316,9 +319,17 @@ , range: true }); $(function(){ + + var ajax2 = new $ax(Feng.ctxPath + "/data/getYears", function(data){ + yearX=data + }); + ajax2.start() + getContent(1); getContent1(1); getContent2(1); + + // 基于准备好的dom,初始化echarts实例 var myChart = echarts.init(document.getElementById('income')); @@ -718,6 +729,8 @@ if(type==2){ yytj() + ptUser() + ptActivity() } if(type==3){ @@ -1101,9 +1114,8 @@ ajax.set("id",id); ajax.start(); } - - - + + function tuifei() { var myChart1 = echarts.init(document.getElementById('refund')); let id = $("#cCode").val() @@ -1200,6 +1212,318 @@ }) myChart1.setOption(option1); } + + + function ptUser() { + var myChart2 = echarts.init(document.getElementById('user')); + var myChart3 = echarts.init(document.getElementById('vip')); + myChart2.on('legendselectchanged', obj => { + var options = myChart2.getOption() + //这里是选择切换什么样的x轴,那么他会进行对Y值的切换 + if (obj.name == '年度用户数') { + options.xAxis[0].data = yearX + } else if (obj.name == '月度用户数') { + options.xAxis[0].data = monthX + } else if (obj.name == '周度用户数') { + options.xAxis[0].data = ["1周","2周","3周","4周"] + } else if (obj.name == '日度用户数') { + options.xAxis[0].data = dataX + } + myChart2.setOption(options, true) + }); + let id = $("#cCode").val() + console.log(id) + if(id==''){ + Feng.info("请先选择运营商"); + return; + } + myChart3.on('legendselectchanged', obj => { + var options = myChart3.getOption() + //这里是选择切换什么样的x轴,那么他会进行对Y值的切换 + if (obj.name == '年度会员数') { + options.xAxis[0].data = yearX + } else if (obj.name == '月度会员数') { + options.xAxis[0].data = monthX + } else if (obj.name == '周度会员数') { + options.xAxis[0].data = ["1周","2周","3周","4周"] + } else if (obj.name == '日度会员数') { + options.xAxis[0].data = dataX + } + myChart3.setOption(options, true) + }); + var ajax2 = new $ax(Feng.ctxPath + "/data/userAndVipYys", function(data){ + $("#userAll").text(data.allUser) + $("#userVipAll").text(data.allVip) + console.log(data) + option2 = { + tooltip: { + trigger: 'axis' + }, + legend: { + + data: ['年度用户数', '月度用户数','周度用户数','日度用户数'], + icon: 'stack', + selectedMode: 'single', // 单选 + selected: { + 年度用户数: true, + 月度用户数: false, + 周度用户数: false, + 日度用户数: false + } + }, + grid: { + left: '3%', + right: '4%', + bottom: '3%', + containLabel: true + }, + toolbox: { + feature: { + saveAsImage: {} + } + }, + xAxis: { + type: 'category', + boundaryGap: false, + data: yearX + }, + yAxis: { + type: 'value' + }, + series: [ + { + name: '年度用户数', + type: 'line', + stack: 'Total', + data: data.yearData + }, + { + name: '月度用户数', + type: 'line', + stack: 'Total', + data: data.monthData + }, + { + name: '周度用户数', + type: 'line', + stack: 'Total', + data: [data.count,data.count1,data.count2,data.count3] + }, + { + name: '日度用户数', + type: 'line', + stack: 'Total', + data: data.dayData + } + ] + }; + option3 = { + tooltip: { + trigger: 'axis' + }, + legend: { + + data: ['年度会员数', '月度会员数','周度会员数','日度会员数'], + icon: 'stack', + selectedMode: 'single', // 单选 + selected: { + 年度会员数: true, + 月度会员数: false, + 周度会员数: false, + 日度会员数: false + } + }, + grid: { + left: '3%', + right: '4%', + bottom: '3%', + containLabel: true + }, + toolbox: { + feature: { + saveAsImage: {} + } + }, + xAxis: { + type: 'category', + boundaryGap: false, + data: yearX + }, + yAxis: { + type: 'value' + }, + series: [ + { + name: '年度会员数', + type: 'line', + stack: 'Total', + data: data.yearsVip + }, + { + name: '月度会员数', + type: 'line', + stack: 'Total', + data: data.monthsVip + }, + { + name: '周度会员数', + type: 'line', + stack: 'Total', + data:[data.countVip,data.countVip1,data.countVip2,data.countVip3] + }, + { + name: '日度会员数', + type: 'line', + stack: 'Total', + data: data.daysVip + } + ] + }; + }); + ajax2.set("id",id) + ajax2.start() + myChart2.setOption(option2); + myChart3.setOption(option3); + } + + function ptActivity() { + var myChart4 = echarts.init(document.getElementById('activity')); + var myChart5 = echarts.init(document.getElementById('prepare')); + myChart4.on('legendselectchanged', obj => { + var options = myChart4.getOption() + //这里是选择切换什么样的x轴,那么他会进行对Y值的切换 + if (obj.name == '年度次数') { + options.xAxis[0].data = yearX + } else if (obj.name == '月度次数') { + options.xAxis[0].data = monthX + } + myChart4.setOption(options, true) + }); + + myChart5.on('legendselectchanged', obj => { + var options = myChart5.getOption() + //这里是选择切换什么样的x轴,那么他会进行对Y值的切换 + if (obj.name == '年度次数') { + options.xAxis[0].data = yearX + } else if (obj.name == '月度次数') { + options.xAxis[0].data = monthX + } + myChart5.setOption(options, true) + }); + let id = $("#cCode").val() + console.log(id) + if(id==''){ + Feng.info("请先选择运营商"); + return; + } + var ajax2 = new $ax(Feng.ctxPath + "/data/actYys", function(data){ + + $("#allHour").text(data.allHour) + + option4 = { + tooltip: { + trigger: 'axis' + }, + legend: { + data: ['年度次数', '月度次数'], + icon: 'stack', + selectedMode: 'single', // 单选 + selected: { + 年度次数: true, + 月度次数: false, + }, + + + }, + grid: { + left: '3%', + right: '4%', + bottom: '3%', + containLabel: true + }, + toolbox: { + feature: { + saveAsImage: {} + } + }, + xAxis: { + type: 'category', + boundaryGap: false, + data: yearX + }, + yAxis: { + type: 'value' + }, + series: [ + { + name: '年度次数', + type: 'line', + stack: 'Total', + data: data.yearData + }, + { + name: '月度次数', + type: 'line', + stack: 'Total', + data: data.monthData + } + + ] + }; + option5 = { + tooltip: { + trigger: 'axis' + }, + legend: { + data: ['年度次数', '月度次数'], + icon: 'stack', + selectedMode: 'single', // 单选 + selected: { + 年度次数: true, + 月度次数: false, + }, + + }, + grid: { + left: '3%', + right: '4%', + bottom: '3%', + containLabel: true + }, + toolbox: { + feature: { + saveAsImage: {} + } + }, + xAxis: { + type: 'category', + boundaryGap: false, + data: yearX + }, + yAxis: { + type: 'value' + }, + series: [ + { + name: '年度次数', + type: 'line', + stack: 'Total', + data: data.yearsUser + }, + { + name: '月度次数', + type: 'line', + stack: 'Total', + data: data.monthsUser + } + ] + }; + }); + ajax2.set("id",id) + ajax2.start() + myChart4.setOption(option4); + myChart5.setOption(option5); + } function getContent1(type){ //设置点击字体颜色效果 diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/dataStatistics/platformIncome.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/dataStatistics/platformIncome.html index 2e0a683..8dc7afb 100644 --- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/dataStatistics/platformIncome.html +++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/dataStatistics/platformIncome.html @@ -177,7 +177,7 @@ <h2>运营数据</h2> </br> </br> - <span>运营时长:0小时</span> + <span>运营时长:<span id="allHour"></span>小时</span> </br> </br> <div style="height: 25px;box-sizing: border-box;background:#f3f3f4;line-height: 25px;border:1px solid;margin-bottom: 20px;width: 500px"> @@ -211,7 +211,7 @@ <h2>学员数据</h2> </br> </br> - <span>累计学员数:0人</span> + <span>累计学员数:<span id="allUser"></span>人</span> </br> </br> <div id="teach" style="width: 1280px;height:500px;"></div> @@ -385,7 +385,7 @@ ajax.start(); } var ans = []; - var weekX = ["1","2","上周","本周"]; + var weekX = ["1周","2周","3周","4周"]; var monthX = ["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"]; var yearX = []; var timeX = []; @@ -418,10 +418,19 @@ , trigger: 'click' , range: true }); + function getYears() { + var ajax2 = new $ax(Feng.ctxPath + "/data/getYears", function(data){ + yearX=data + }); + ajax2.start() + } $(function(){ getContent(1); getContent1(1); getContent2(1); + + + var ajax = new $ax(Feng.ctxPath + "/data/getIncomeData", function(resp){ yearX=resp.year @@ -526,9 +535,6 @@ var myChart = echarts.init(document.getElementById('main')); var myChart1 = echarts.init(document.getElementById('refund')); - - - var myChart6 = echarts.init(document.getElementById('teach')); var myChart7 = echarts.init(document.getElementById('courseData')); @@ -678,61 +684,6 @@ - option6 = { - tooltip: { - trigger: 'axis' - }, - legend: { - data: ['年度学员数', '月度学员数', '周度学员数', '日度学员数'] - }, - grid: { - left: '3%', - right: '4%', - bottom: '3%', - containLabel: true - }, - toolbox: { - feature: { - saveAsImage: {} - } - }, - xAxis: { - type: 'category', - boundaryGap: false, - data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'] - }, - yAxis: { - type: 'value' - }, - series: [ - { - name: '年度学员数', - type: 'line', - stack: 'Total', - data: [120, 132, 101, 134, 90, 230, 160, 190, 410, 330, 210, 330] - }, - { - name: '月度学员数', - type: 'line', - stack: 'Total', - data: [220, 182, 191, 234, 290, 330, 310, 190, 210, 330, 410, 160] - }, - { - name: '周度学员数', - type: 'line', - stack: 'Total', - data: [150, 232, 201, 154, 190, 330, 410, 160, 210, 195, 210, 188] - }, - { - name: '日度学员数', - type: 'line', - stack: 'Total', - data: [320, 332, 301, 334, 390, 330, 320, 10, 195, 145, 188, 160] - } - ] - }; - - option7 = { tooltip: { @@ -821,11 +772,9 @@ myChart.setOption(option); myChart1.setOption(option1); - myChart6.setOption(option6); myChart7.setOption(option7); }); - - function ptUser() { + function ptUser() { var myChart2 = echarts.init(document.getElementById('user')); var myChart3 = echarts.init(document.getElementById('vip')); myChart2.on('legendselectchanged', obj => { @@ -995,16 +944,47 @@ function ptActivity() { var myChart4 = echarts.init(document.getElementById('activity')); var myChart5 = echarts.init(document.getElementById('prepare')); + myChart4.on('legendselectchanged', obj => { + var options = myChart4.getOption() + //这里是选择切换什么样的x轴,那么他会进行对Y值的切换 + if (obj.name == '年度次数') { + options.xAxis[0].data = yearX + } else if (obj.name == '月度次数') { + options.xAxis[0].data = monthX + } + myChart4.setOption(options, true) + }); + + myChart5.on('legendselectchanged', obj => { + var options = myChart5.getOption() + //这里是选择切换什么样的x轴,那么他会进行对Y值的切换 + if (obj.name == '年度次数') { + options.xAxis[0].data = yearX + } else if (obj.name == '月度次数') { + options.xAxis[0].data = monthX + } + myChart5.setOption(options, true) + }); var ajax2 = new $ax(Feng.ctxPath + "/data/actPt", function(data){ console.log(data) + + $("#allHour").text(data.allHour) option4 = { tooltip: { trigger: 'axis' }, legend: { - data: ['年度次数', '月度次数'] + data: ['年度次数', '月度次数'], + icon: 'stack', + selectedMode: 'single', // 单选 + selected: { + 年度次数: true, + 月度次数: false, + }, + + }, grid: { left: '3%', @@ -1020,7 +1000,7 @@ xAxis: { type: 'category', boundaryGap: false, - data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'] + data: yearX }, yAxis: { type: 'value' @@ -1030,13 +1010,13 @@ name: '年度次数', type: 'line', stack: 'Total', - data: [1220, 1532, 101, 1394, 980, 2380, 1680, 1190, 1410, 1330, 2110, 1330] + data: data.yearData }, { name: '月度次数', type: 'line', stack: 'Total', - data: [1220, 1182, 2191, 3234, 1290, 1330, 2310, 2190, 2210, 1330, 2410, 1650] + data: data.monthData } ] @@ -1046,7 +1026,14 @@ trigger: 'axis' }, legend: { - data: ['年度次数', '月度次数'] + data: ['年度次数', '月度次数'], + icon: 'stack', + selectedMode: 'single', // 单选 + selected: { + 年度次数: true, + 月度次数: false, + }, + }, grid: { left: '3%', @@ -1062,7 +1049,7 @@ xAxis: { type: 'category', boundaryGap: false, - data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'] + data: yearX }, yAxis: { type: 'value' @@ -1072,13 +1059,13 @@ name: '年度次数', type: 'line', stack: 'Total', - data: [120, 132, 101, 394, 980, 2380, 1680, 1190, 1410, 1330, 2110, 1330] + data: data.yearsUser }, { name: '月度次数', type: 'line', stack: 'Total', - data: [120, 182, 211, 324, 120, 130, 310, 290, 220, 130, 240, 150] + data: data.monthsUser } ] }; @@ -1087,6 +1074,188 @@ ajax2.start() myChart4.setOption(option4); myChart5.setOption(option5); + } + + + function ptStu() { + var myChart6 = echarts.init(document.getElementById('teach')); + myChart6.on('legendselectchanged', obj => { + var options = myChart6.getOption() + //这里是选择切换什么样的x轴,那么他会进行对Y值的切换 + if (obj.name == '年度学员数') { + options.xAxis[0].data = yearX + } else if (obj.name == '月度学员数') { + options.xAxis[0].data = monthX + }else if (obj.name == '周度学员数') { + options.xAxis[0].data = ["1周","2周","3周","4周"] + }else if (obj.name == '日度学员数') { + options.xAxis[0].data = dataX + } + myChart6.setOption(options, true) + }); + + + var ajax2 = new $ax(Feng.ctxPath + "/data/stuPt", function(data){ + console.log(data) + + $("#allUser").text(data.allUser) + + option6 = { + tooltip: { + trigger: 'axis' + }, + legend: { + data: ['年度学员数', '月度学员数', '周度学员数', '日度学员数'], + + icon: 'stack', + selectedMode: 'single', // 单选 + selected: { + 年度学员数: true, + 月度学员数: false, + 周度学员数: false, + 日度学员数: false + }, + }, + grid: { + left: '3%', + right: '4%', + bottom: '3%', + containLabel: true + }, + toolbox: { + feature: { + saveAsImage: {} + } + }, + xAxis: { + type: 'category', + boundaryGap: false, + data: yearX + }, + yAxis: { + type: 'value' + }, + series: [ + { + name: '年度学员数', + type: 'line', + stack: 'Total', + data: data.yearData + }, + { + name: '月度学员数', + type: 'line', + stack: 'Total', + data: data.monthData + }, + { + name: '周度学员数', + type: 'line', + stack: 'Total', + data: [data.count,data.count1,data.count2,data.count3] + }, + { + name: '日度学员数', + type: 'line', + stack: 'Total', + data: data.dayData + } + ] + }; + }); + ajax2.start() + myChart6.setOption(option6); + } + + + function ptCourse() { + var myChart7 = echarts.init(document.getElementById('courseData')); + myChart7.on('legendselectchanged', obj => { + var options = myChart7.getOption() + //这里是选择切换什么样的x轴,那么他会进行对Y值的切换 + if (obj.name == '年度耗课数') { + options.xAxis[0].data = yearX + } else if (obj.name == '月度耗课数') { + options.xAxis[0].data = monthX + }else if (obj.name == '周度耗课数') { + options.xAxis[0].data = ["1周","2周","3周","4周"] + }else if (obj.name == '日度耗课数') { + options.xAxis[0].data = dataX + } + myChart7.setOption(options, true) + }); + + + var ajax2 = new $ax(Feng.ctxPath + "/data/coursePt", function(data){ + console.log(data) + + $("#allHour").text(data.allHour) + + option7 = { + tooltip: { + trigger: 'axis' + }, + legend: { + data: ['年度耗课数', '月度耗课数', '周度耗课数', '日度耗课数'], + + icon: 'stack', + selectedMode: 'single', // 单选 + selected: { + 年度耗课数: true, + 月度耗课数: false, + 周度耗课数: false, + 日度耗课数: false + }, + }, + grid: { + left: '3%', + right: '4%', + bottom: '3%', + containLabel: true + }, + toolbox: { + feature: { + saveAsImage: {} + } + }, + xAxis: { + type: 'category', + boundaryGap: false, + data: yearX + }, + yAxis: { + type: 'value' + }, + series: [ + { + name: '年度耗课数', + type: 'line', + stack: 'Total', + data: data.yearData + }, + { + name: '月度耗课数', + type: 'line', + stack: 'Total', + data: data.monthData + }, + { + name: '周度耗课数', + type: 'line', + stack: 'Total', + data: [data.count,data.count1,data.count2,data.count3] + }, + { + name: '日度耗课数', + type: 'line', + stack: 'Total', + data: data.dayData + } + ] + }; + }); + ajax2.start() + myChart7.setOption(option7); } function getContent(type){ @@ -1222,12 +1391,13 @@ ptUser() + ptActivity() + } if(type==3){ var ajax = new $ax(Feng.ctxPath + "/data/stuCourseData", function (data) { - console.log(data.data1) var chartDom = document.getElementById('cookieTeachCourse'); var myChart = echarts.init(chartDom); @@ -1253,8 +1423,7 @@ }); ajax.start(); - - ptActivity() + ptStu() } diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/dataStatistics/storeIncome.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/dataStatistics/storeIncome.html index 55f042a..e406831 100644 --- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/dataStatistics/storeIncome.html +++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/dataStatistics/storeIncome.html @@ -279,6 +279,8 @@ if(cutType==2){ yytj() + ptUser() + ptActivity() } if(cutType==3){ jxtj() @@ -761,12 +763,329 @@ } + + function ptUser() { + var myChart2 = echarts.init(document.getElementById('user')); + var myChart3 = echarts.init(document.getElementById('vip')); + myChart2.on('legendselectchanged', obj => { + var options = myChart2.getOption() + //这里是选择切换什么样的x轴,那么他会进行对Y值的切换 + if (obj.name == '年度用户数') { + options.xAxis[0].data = yearX + } else if (obj.name == '月度用户数') { + options.xAxis[0].data = monthX + } else if (obj.name == '周度用户数') { + options.xAxis[0].data = ["1周","2周","3周","4周"] + } else if (obj.name == '日度用户数') { + options.xAxis[0].data = dataX + } + myChart2.setOption(options, true) + }); + let id = $("#cCode").val() + console.log(id) + if(id==''){ + Feng.info("请先选择门店"); + return; + } + myChart3.on('legendselectchanged', obj => { + var options = myChart3.getOption() + //这里是选择切换什么样的x轴,那么他会进行对Y值的切换 + if (obj.name == '年度会员数') { + options.xAxis[0].data = yearX + } else if (obj.name == '月度会员数') { + options.xAxis[0].data = monthX + } else if (obj.name == '周度会员数') { + options.xAxis[0].data = ["1周","2周","3周","4周"] + } else if (obj.name == '日度会员数') { + options.xAxis[0].data = dataX + } + myChart3.setOption(options, true) + }); + var ajax2 = new $ax(Feng.ctxPath + "/data/userAndVipStore", function(data){ + $("#userAll").text(data.allUser) + $("#userVipAll").text(data.allVip) + console.log(data) + option2 = { + tooltip: { + trigger: 'axis' + }, + legend: { + + data: ['年度用户数', '月度用户数','周度用户数','日度用户数'], + icon: 'stack', + selectedMode: 'single', // 单选 + selected: { + 年度用户数: true, + 月度用户数: false, + 周度用户数: false, + 日度用户数: false + } + }, + grid: { + left: '3%', + right: '4%', + bottom: '3%', + containLabel: true + }, + toolbox: { + feature: { + saveAsImage: {} + } + }, + xAxis: { + type: 'category', + boundaryGap: false, + data: yearX + }, + yAxis: { + type: 'value' + }, + series: [ + { + name: '年度用户数', + type: 'line', + stack: 'Total', + data: data.yearData + }, + { + name: '月度用户数', + type: 'line', + stack: 'Total', + data: data.monthData + }, + { + name: '周度用户数', + type: 'line', + stack: 'Total', + data: [data.count,data.count1,data.count2,data.count3] + }, + { + name: '日度用户数', + type: 'line', + stack: 'Total', + data: data.dayData + } + ] + }; + option3 = { + tooltip: { + trigger: 'axis' + }, + legend: { + + data: ['年度会员数', '月度会员数','周度会员数','日度会员数'], + icon: 'stack', + selectedMode: 'single', // 单选 + selected: { + 年度会员数: true, + 月度会员数: false, + 周度会员数: false, + 日度会员数: false + } + }, + grid: { + left: '3%', + right: '4%', + bottom: '3%', + containLabel: true + }, + toolbox: { + feature: { + saveAsImage: {} + } + }, + xAxis: { + type: 'category', + boundaryGap: false, + data: yearX + }, + yAxis: { + type: 'value' + }, + series: [ + { + name: '年度会员数', + type: 'line', + stack: 'Total', + data: data.yearsVip + }, + { + name: '月度会员数', + type: 'line', + stack: 'Total', + data: data.monthsVip + }, + { + name: '周度会员数', + type: 'line', + stack: 'Total', + data:[data.countVip,data.countVip1,data.countVip2,data.countVip3] + }, + { + name: '日度会员数', + type: 'line', + stack: 'Total', + data: data.daysVip + } + ] + }; + }); + ajax2.set("id",id) + ajax2.start() + myChart2.setOption(option2); + myChart3.setOption(option3); + } + + function ptActivity() { + var myChart4 = echarts.init(document.getElementById('activity')); + var myChart5 = echarts.init(document.getElementById('prepare')); + myChart4.on('legendselectchanged', obj => { + var options = myChart4.getOption() + //这里是选择切换什么样的x轴,那么他会进行对Y值的切换 + if (obj.name == '年度次数') { + options.xAxis[0].data = yearX + } else if (obj.name == '月度次数') { + options.xAxis[0].data = monthX + } + myChart4.setOption(options, true) + }); + + myChart5.on('legendselectchanged', obj => { + var options = myChart5.getOption() + //这里是选择切换什么样的x轴,那么他会进行对Y值的切换 + if (obj.name == '年度次数') { + options.xAxis[0].data = yearX + } else if (obj.name == '月度次数') { + options.xAxis[0].data = monthX + } + myChart5.setOption(options, true) + }); + let id = $("#cCode").val() + console.log(id) + if(id==''){ + Feng.info("请先选择门店"); + return; + } + var ajax2 = new $ax(Feng.ctxPath + "/data/actStore", function(data){ + + $("#allHour").text(data.allHour) + + option4 = { + tooltip: { + trigger: 'axis' + }, + legend: { + data: ['年度次数', '月度次数'], + icon: 'stack', + selectedMode: 'single', // 单选 + selected: { + 年度次数: true, + 月度次数: false, + }, + + + }, + grid: { + left: '3%', + right: '4%', + bottom: '3%', + containLabel: true + }, + toolbox: { + feature: { + saveAsImage: {} + } + }, + xAxis: { + type: 'category', + boundaryGap: false, + data: yearX + }, + yAxis: { + type: 'value' + }, + series: [ + { + name: '年度次数', + type: 'line', + stack: 'Total', + data: data.yearData + }, + { + name: '月度次数', + type: 'line', + stack: 'Total', + data: data.monthData + } + + ] + }; + option5 = { + tooltip: { + trigger: 'axis' + }, + legend: { + data: ['年度次数', '月度次数'], + icon: 'stack', + selectedMode: 'single', // 单选 + selected: { + 年度次数: true, + 月度次数: false, + }, + + }, + grid: { + left: '3%', + right: '4%', + bottom: '3%', + containLabel: true + }, + toolbox: { + feature: { + saveAsImage: {} + } + }, + xAxis: { + type: 'category', + boundaryGap: false, + data: yearX + }, + yAxis: { + type: 'value' + }, + series: [ + { + name: '年度次数', + type: 'line', + stack: 'Total', + data: data.yearsUser + }, + { + name: '月度次数', + type: 'line', + stack: 'Total', + data: data.monthsUser + } + ] + }; + }); + ajax2.set("id",id) + ajax2.start() + myChart4.setOption(option4); + myChart5.setOption(option5); + } + + laydate.render({ elem: '#beginTime' , trigger: 'click' , range: true }); $(function(){ + var ajax2 = new $ax(Feng.ctxPath + "/data/getYears", function(data){ + yearX=data + }); + ajax2.start() getContent(1); getContent1(1); getContent2(1); @@ -1165,6 +1484,8 @@ if(type==2){ yytj() + ptUser() + ptActivity() } if(type==3){ diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_edit.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_edit.html index 431c7b5..362ff1b 100644 --- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_edit.html +++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_edit.html @@ -110,7 +110,6 @@ <#input id="userName" name="管理员姓名" type="text" value="${city.name}"/> <#input id="userPhone" name="管理员手机号" type="text" value="${city.account}"/> <#avatar id="img" name="门店封面(推荐像素722*360px)" avatarImg="${item.coverDrawing}"/> - <#input id="imgOne" name="实景照片" type="text" value="${item.realPicture}"/> <div class="row" id="app1"> <div class="col-sm-6" style="width: 100%;margin-left: 103px;"> <div class="form-group"> diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/ticket/ticket_add.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/ticket/ticket_add.html index 88683dd..562547f 100644 --- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/ticket/ticket_add.html +++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/ticket/ticket_add.html @@ -76,7 +76,7 @@ <#avatar id="cover" name="*门票封面(推荐像素350x350px)" /> <div class="row" id="app" > - <div class="col-sm-6" style="width: 100%"> + <div class="col-sm-6" style="width: 100%;margin-left: 7%"> <div class="form-group"> <label class="col-sm-3 control-label" style="width: 15%;margin-left: 7%">*门票图片(请上传不超过五张图片,推荐像素780x440px): </label> <div class="col-sm-2" style="width: 100%;margin-left: 12%;margin-top: 1%"> @@ -123,7 +123,7 @@ </div> </div> <#input id="startTime" name="有效期" type="text"/> - @if(roletype==3){ + @if(userType==3){ <div class="row" id="belongsCon" > <div class="form-group"> <div class="form-group"> -- Gitblit v1.7.1