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