package com.dsh.account.controller; import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.dsh.account.dto.*; import com.dsh.account.entity.*; import com.dsh.account.feignclient.course.CoursePackageClient; import com.dsh.account.feignclient.course.CoursePaymentClient; import com.dsh.account.feignclient.course.model.TCoursePackagePayment; import com.dsh.account.model.QueryDataFee; import com.dsh.account.model.Student; import com.dsh.account.model.StudentVo; import com.dsh.account.model.updateTimeDto; import com.dsh.account.service.*; import com.dsh.account.util.ResultUtil; import com.dsh.account.util.TokenUtil; import com.dsh.account.util.ToolUtil; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import springfox.documentation.swagger2.mappers.ModelMapper; import javax.annotation.Resource; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.time.LocalTime; import java.util.*; import java.util.stream.Collectors; /** * @author zhibing.pu * @date 2023/6/24 14:59 */ @RestController @RequestMapping("") public class StudentController { @Autowired private TStudentService studentService; @Autowired private TokenUtil tokenUtil; @Autowired private TAppUserService appUserService; @Autowired private IVipPaymentService vipPaymentService; @Autowired private RechargeRecordsService rechargeRecordsService; @Resource private CoursePackageClient coursePackageClient; /** * 添加学员 * * @return */ @RequestMapping("/base/student/addStudent") public Object addStudent(@RequestBody TStudent student) { student.setInsertTime(new Date()); student.setIsDefault(1); return studentService.save(student); } /** * 获取有学员的用户ids * * @return */ @ResponseBody @PostMapping("/student/getHasStudentUser") public List getHasStudentUser() { return studentService.list(new QueryWrapper()).stream().map(TStudent::getAppUserId).distinct().collect(Collectors.toList()); } /** * 获取用户学员列表 * * @param appUserId * @return */ @ResponseBody @PostMapping("/student/queryStudentList") public List queryStudentList(@RequestBody Integer appUserId) { try { List list = studentService.list(new QueryWrapper().eq("appUserId", appUserId).eq("state", 1)); return list; } catch (Exception e) { e.printStackTrace(); return new ArrayList<>(); } } @ResponseBody @PostMapping("/student/queryListByIds") public List queryListByIds(@RequestBody List collect) { try { List list = studentService.list(new QueryWrapper().in("id", collect).eq("state", 1)); return list; } catch (Exception e) { e.printStackTrace(); return new ArrayList<>(); } } @ResponseBody @PostMapping("/student/queryStudentCom") public List> queryStudentCom(@RequestBody Integer id) { List> list = studentService.queryCom(id); return list; } @ResponseBody @PostMapping("/student/frozen") public void frozen(@RequestBody TStudent student) { studentService.updateById(student); } @ResponseBody @PostMapping("/student/getById") public Date getById(@RequestBody Integer tStudentId) { return studentService.getById(tStudentId).getValidity(); } @ResponseBody @PostMapping("/student/update1") public void update(@RequestBody updateTimeDto updateTimeDto) { TStudent student = new TStudent(); student.setId(updateTimeDto.getTStudentId()); student.setValidity(updateTimeDto.getDate()); studentService.updateById(student); } @ResponseBody @PostMapping("/student/queryDefaultStudent") public TStudent queryDefaultStudent(@RequestBody Integer appUserId) { try { TStudent one = studentService.getOne(new QueryWrapper().eq("appUserId", appUserId).eq("isDefault", 1).eq("state", 1).last("limit 1")); return one; } catch (Exception e) { e.printStackTrace(); return null; } } @ResponseBody @PostMapping("/api/student/queryStudentList") @ApiOperation(value = "获取学员列表", tags = {"APP-课程列表"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil> queryStudentList() { try { Integer uid = tokenUtil.getUserIdFormRedis(); if (null == uid) { return ResultUtil.tokenErr(); } List list = studentService.list(new QueryWrapper().eq("appUserId", uid).eq("state", 1)); List listVo = new ArrayList<>(); for (TStudent tStudent : list) { StudentVo studentVo = new StudentVo(); studentVo.setId(tStudent.getId()); studentVo.setPhone(tStudent.getPhone()); SimpleDateFormat sdf = new SimpleDateFormat("yyyy"); studentVo.setAge(Integer.valueOf(sdf.format(new Date())) - Integer.valueOf(sdf.format(tStudent.getBirthday()))); listVo.add(studentVo); studentVo.setName(tStudent.getName()); } return ResultUtil.success(listVo); } catch (Exception e) { e.printStackTrace(); return ResultUtil.runErr(); } } /** * 根据电话号码学员信息 * * @param phone * @return */ @ResponseBody @PostMapping("/student/queryStudentByPhone") public TStudent queryStudentByPhone(@RequestBody String phone) { try { TStudent one = studentService.getOne(new QueryWrapper().eq("phone", phone).eq("state", 1)); return one; } catch (Exception e) { e.printStackTrace(); return null; } } @ResponseBody @PostMapping("/student/queryById") public TStudent queryById(@RequestBody Integer id) { return studentService.getById(id); } @ResponseBody @PostMapping("/base/appUser/updateTStudent") public void updateTStudent(@RequestBody TStudent student) { try { studentService.updateById(student); } catch (Exception e) { e.printStackTrace(); } } /** * 根据id获取数据 * * @param id * @return */ @ResponseBody @PostMapping("/student/queryStudentById") public TStudent queryStudentById(@RequestBody Integer id) { TStudent student = studentService.getById(id); return student; } /** * 根据名称模糊搜索学员 * * @param name * @return */ @ResponseBody @PostMapping("/student/queryStudentListByName") public List queryStudentListByName(@RequestBody String name) { return studentService.list(new QueryWrapper().eq("state", 1).like("name", name)); } /** * 根据名称模糊搜索学员 * * @param name * @return */ @PostMapping("/student/queryTStudentListByName") public List queryTStudentListByName(@RequestBody String name) { return studentService.list(new QueryWrapper().eq("state", 1).like("name", name)); } /** * web端查找学员 * * @return */ @ResponseBody @PostMapping("/student/webStudentList") public List querywebStudent(@RequestBody StudentSearch search) { return studentService.listAll(search); } @ResponseBody @PostMapping("/student/webOneStudent") public TStudentDto querywebStudentOne(@RequestParam("id") Integer id) { System.out.println("===?==》" + id); return studentService.listOne(id); } @ResponseBody @PostMapping("/student/update") public void update(@RequestBody TStudent tStudent) { System.out.println("======tStudent======" + tStudent); studentService.updateById(tStudent); } @ResponseBody @PostMapping("/student/createHistory") public void createHistory(@RequestBody CreateHistoryDto createHistoryDto) { createHistoryDto.setDate(new Date()); studentService.createHistory(createHistoryDto); } @ResponseBody @PostMapping("/student/getHisory") public List getHisory() { List getHistoryDtos = studentService.getHistory(); return getHistoryDtos; } @Resource private CoursePaymentClient paymentClient; @ResponseBody @PostMapping("/student/giftSelect") public List giftSelect(@RequestBody GiftSearchDto giftSearchDto) { System.out.println("======giftSelect=========giftSearchDto====" + giftSearchDto); TAppUser one = appUserService.getOne(new QueryWrapper().eq("name", giftSearchDto.getName()) .eq("phone", giftSearchDto.getPhone())); // Integer appId = studentService.getGiftSelect(giftSearchDto); TCoursePackagePayment1 coursePackagePaymentById = paymentClient.getCoursePackagePaymentById1(giftSearchDto.getId()); // System.out.println("=======giftSelect======appId====>"+appId); List selectDtos = studentService.list(new QueryWrapper() .eq("state", 1) .eq("appUserId", one.getId())); List list = new ArrayList<>(); for (TStudent student : selectDtos) { SelectDto selectDto = new SelectDto(); selectDto.setValue(student.getName()); selectDto.setId(student.getId()); list.add(selectDto); } // 只筛选当前用户已经购买了这个课程的学员 System.out.println("=======giftSelect======selectDtos====>" + list); return list; } @PostMapping("/student/getUserPt") @ResponseBody public List getUserPt(@RequestBody List ids) { if (ids.size() == 0) { ids.add(-1); } List list = appUserService.list(new LambdaQueryWrapper().eq(TAppUser::getInsertType, 1)); return list.stream().map(TAppUser::getId).collect(Collectors.toList()); } @PostMapping("/student/getUserYYs") @ResponseBody public List getUserYYs(@RequestBody Integer id) { List list = appUserService.list(new LambdaQueryWrapper().eq(TAppUser::getInsertType, 2).eq(TAppUser::getAddUserId, id)); return list.stream().map(TAppUser::getId).collect(Collectors.toList()); } @PostMapping("/student/getUserStore") @ResponseBody public List getUserStore(@RequestBody Integer id) { List list = appUserService.list(new LambdaQueryWrapper().eq(TAppUser::getInsertType, 3).eq(TAppUser::getAddUserId, id)); return list.stream().map(TAppUser::getId).collect(Collectors.toList()); } @PostMapping("/student/getUserYys") @ResponseBody public List getUserYys(@RequestBody Integer id) { List list = appUserService.list(new LambdaQueryWrapper().eq(TAppUser::getInsertType, 2).eq(TAppUser::getAddUserId, id)); return list.stream().map(TAppUser::getId).collect(Collectors.toList()); } @ResponseBody @PostMapping("/student/getUserPtVip") public List getUserPtVip() { List list = appUserService.list(new LambdaQueryWrapper().eq(TAppUser::getInsertType, 1).eq(TAppUser::getIsVip, 1)); return list.stream().map(TAppUser::getId).collect(Collectors.toList()); } @ResponseBody @PostMapping("/student/userAndVipPt") public HashMap userAndVipPt(@RequestBody Integer type) { HashMap map = new HashMap<>(); // 所有的 List list = appUserService.list(new LambdaQueryWrapper().eq(TAppUser::getInsertType, 1)); map.put("allUser", list.size()); List list1 = appUserService.list(new LambdaQueryWrapper().eq(TAppUser::getInsertType, 1).eq(TAppUser::getIsVip, 1)); map.put("allVip", list1.size()); ArrayList integers = new ArrayList<>(); int year = DateUtil.year(new Date()); for (int i = 0; i < 10; i++) { integers.add(year - i); } List collect = integers.stream().sorted().collect(Collectors.toList()); // 年 ArrayList years = new ArrayList<>(); ArrayList 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 months = new ArrayList<>(); ArrayList 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().eq(TAppUser::getInsertType, 1).between(TAppUser::getInsertTime, s7, s8)); int countVip = appUserService.count(new LambdaQueryWrapper().eq(TAppUser::getInsertType, 1).eq(TAppUser::getIsVip, 1).between(TAppUser::getInsertTime, s7, s8)); int count1 = appUserService.count(new LambdaQueryWrapper().eq(TAppUser::getInsertType, 1).between(TAppUser::getInsertTime, s5, s6)); int countVip1 = appUserService.count(new LambdaQueryWrapper().eq(TAppUser::getInsertType, 1).eq(TAppUser::getIsVip, 1).between(TAppUser::getInsertTime, s5, s6)); int count2 = appUserService.count(new LambdaQueryWrapper().eq(TAppUser::getInsertType, 1).between(TAppUser::getInsertTime, s3, s4)); int countVip2 = appUserService.count(new LambdaQueryWrapper().eq(TAppUser::getInsertType, 1).eq(TAppUser::getIsVip, 1).between(TAppUser::getInsertTime, s3, s4)); int count3 = appUserService.count(new LambdaQueryWrapper().eq(TAppUser::getInsertType, 1).between(TAppUser::getInsertTime, s1, s2)); int countVip3 = appUserService.count(new LambdaQueryWrapper().eq(TAppUser::getInsertType, 1).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 days = new ArrayList<>(); ArrayList 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().eq(TAppUser::getInsertType, 1).between(TAppUser::getInsertTime, s, s9)); int countVip5 = appUserService.count(new LambdaQueryWrapper().eq(TAppUser::getInsertType, 1).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/stuPt") public HashMap stuPt() { HashMap map = new HashMap<>(); // 所有的 List list = appUserService.list(new LambdaQueryWrapper().eq(TAppUser::getInsertType, 1)); List collect1 = list.stream().map(TAppUser::getId).collect(Collectors.toList()); if (collect1.size() == 0) { collect1.add(-1); } List students = studentService.list(new LambdaQueryWrapper().in(TStudent::getAppUserId, collect1)); map.put("allUser", students.size()); ArrayList integers = new ArrayList<>(); int year = DateUtil.year(new Date()); for (int i = 0; i < 10; i++) { integers.add(year - i); } List collect = integers.stream().sorted().collect(Collectors.toList()); // 年 ArrayList 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 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().in(TStudent::getAppUserId, collect1).between(TStudent::getInsertTime, s7, s8)); int count1 = studentService.count(new LambdaQueryWrapper().in(TStudent::getAppUserId, collect1).between(TStudent::getInsertTime, s5, s6)); int count2 = studentService.count(new LambdaQueryWrapper().in(TStudent::getAppUserId, collect1).between(TStudent::getInsertTime, s3, s4)); int count3 = studentService.count(new LambdaQueryWrapper().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 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().in(TStudent::getAppUserId, collect1).between(TStudent::getInsertTime, s, s9)); days.add(count4); } map.put("dayData", days); return map; } @ResponseBody @PostMapping("/student/stuYys") public HashMap stuYys(@RequestBody List ids) { HashMap map = new HashMap<>(); List students = studentService.list(new LambdaQueryWrapper().in(TStudent::getAppUserId, ids)); map.put("allUser", students.size()); ArrayList integers = new ArrayList<>(); int year = DateUtil.year(new Date()); for (int i = 0; i < 10; i++) { integers.add(year - i); } List collect = integers.stream().sorted().collect(Collectors.toList()); // 年 ArrayList 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 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().in(TStudent::getAppUserId, ids).between(TStudent::getInsertTime, s7, s8)); int count1 = studentService.count(new LambdaQueryWrapper().in(TStudent::getAppUserId, ids).between(TStudent::getInsertTime, s5, s6)); int count2 = studentService.count(new LambdaQueryWrapper().in(TStudent::getAppUserId, ids).between(TStudent::getInsertTime, s3, s4)); int count3 = studentService.count(new LambdaQueryWrapper().in(TStudent::getAppUserId, ids).between(TStudent::getInsertTime, s1, s2)); map.put("count", count); map.put("count1", count1); map.put("count2", count2); map.put("count3", count3); // 日 ArrayList 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().in(TStudent::getAppUserId, ids).between(TStudent::getInsertTime, s, s9)); days.add(count4); } map.put("dayData", days); return map; } @ResponseBody @PostMapping("/student/comdel") public void comdel(@RequestBody Integer id) { evaluateStudentService.removeById(id); } @ResponseBody @PostMapping("/student/updatePassWord") public void updatePassWord(@RequestBody List strings) throws Exception { appUserService.updatePassword1(strings.get(0),strings.get(1),strings.get(2)); } @ResponseBody @PostMapping("/student/stuStores") public HashMap stuStores(@RequestBody List ids) { HashMap map = new HashMap<>(); List students = studentService.list(new LambdaQueryWrapper().in(TStudent::getAppUserId, ids)); map.put("allUser", students.size()); ArrayList integers = new ArrayList<>(); int year = DateUtil.year(new Date()); for (int i = 0; i < 10; i++) { integers.add(year - i); } List collect = integers.stream().sorted().collect(Collectors.toList()); // 年 ArrayList 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 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().in(TStudent::getAppUserId, ids).between(TStudent::getInsertTime, s7, s8)); int count1 = studentService.count(new LambdaQueryWrapper().in(TStudent::getAppUserId, ids).between(TStudent::getInsertTime, s5, s6)); int count2 = studentService.count(new LambdaQueryWrapper().in(TStudent::getAppUserId, ids).between(TStudent::getInsertTime, s3, s4)); int count3 = studentService.count(new LambdaQueryWrapper().in(TStudent::getAppUserId, ids).between(TStudent::getInsertTime, s1, s2)); map.put("count", count); map.put("count1", count1); map.put("count2", count2); map.put("count3", count3); // 日 ArrayList 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().in(TStudent::getAppUserId, ids).between(TStudent::getInsertTime, s, s9)); days.add(count4); } map.put("dayData", days); return map; } @Autowired private EvaluateStudentService evaluateStudentService; @ResponseBody @PostMapping("/student/save") public void save(@RequestBody EvaluateStudent evaluateStudent) { evaluateStudent.setInsertTime(new Date()); evaluateStudentService.saveOrUpdate(evaluateStudent); } @ResponseBody @PostMapping("/student/userAndVipYys") public HashMap userAndVipYys(@RequestBody List ids) { HashMap map = new HashMap<>(); // 所有的 List list = appUserService.list(new LambdaQueryWrapper().in(TAppUser::getId, ids)); map.put("allUser", list.size()); List list1 = appUserService.list(new LambdaQueryWrapper().in(TAppUser::getId, ids).eq(TAppUser::getIsVip, 1)); map.put("allVip", list1.size()); ArrayList integers = new ArrayList<>(); int year = DateUtil.year(new Date()); for (int i = 0; i < 10; i++) { integers.add(year - i); } List collect = integers.stream().sorted().collect(Collectors.toList()); // 年 ArrayList years = new ArrayList<>(); ArrayList 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 months = new ArrayList<>(); ArrayList 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().eq(TAppUser::getInsertType, 2).in(TAppUser::getId, ids).between(TAppUser::getInsertTime, s7, s8)); int countVip = appUserService.count(new LambdaQueryWrapper().eq(TAppUser::getInsertType, 2).in(TAppUser::getId, ids).eq(TAppUser::getIsVip, 1).between(TAppUser::getInsertTime, s7, s8)); int count1 = appUserService.count(new LambdaQueryWrapper().eq(TAppUser::getInsertType, 2).in(TAppUser::getId, ids).between(TAppUser::getInsertTime, s5, s6)); int countVip1 = appUserService.count(new LambdaQueryWrapper().eq(TAppUser::getInsertType, 2).in(TAppUser::getId, ids).eq(TAppUser::getIsVip, 1).between(TAppUser::getInsertTime, s5, s6)); int count2 = appUserService.count(new LambdaQueryWrapper().eq(TAppUser::getInsertType, 2).in(TAppUser::getId, ids).between(TAppUser::getInsertTime, s3, s4)); int countVip2 = appUserService.count(new LambdaQueryWrapper().eq(TAppUser::getInsertType, 2).in(TAppUser::getId, ids).eq(TAppUser::getIsVip, 1).between(TAppUser::getInsertTime, s3, s4)); int count3 = appUserService.count(new LambdaQueryWrapper().eq(TAppUser::getInsertType, 2).in(TAppUser::getId, ids).between(TAppUser::getInsertTime, s1, s2)); int countVip3 = appUserService.count(new LambdaQueryWrapper().eq(TAppUser::getInsertType, 2).in(TAppUser::getId, ids).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 days = new ArrayList<>(); ArrayList 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().eq(TAppUser::getInsertType, 2).in(TAppUser::getId, ids).between(TAppUser::getInsertTime, s, s9)); int countVip5 = appUserService.count(new LambdaQueryWrapper().eq(TAppUser::getInsertType, 2).in(TAppUser::getId, ids).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 userAndVipStore(@RequestBody List ids) { HashMap map = new HashMap<>(); // 所有的 List list = appUserService.list(new LambdaQueryWrapper().in(TAppUser::getId, ids)); map.put("allUser", list.size()); List list1 = appUserService.list(new LambdaQueryWrapper().in(TAppUser::getId, ids).eq(TAppUser::getIsVip, 1)); map.put("allVip", list1.size()); ArrayList integers = new ArrayList<>(); int year = DateUtil.year(new Date()); for (int i = 0; i < 10; i++) { integers.add(year - i); } List collect = integers.stream().sorted().collect(Collectors.toList()); // 年 ArrayList years = new ArrayList<>(); ArrayList 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 months = new ArrayList<>(); ArrayList 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().eq(TAppUser::getId, ids).between(TAppUser::getInsertTime, s7, s8)); int countVip = appUserService.count(new LambdaQueryWrapper().eq(TAppUser::getId, ids).eq(TAppUser::getIsVip, 1).between(TAppUser::getInsertTime, s7, s8)); int count1 = appUserService.count(new LambdaQueryWrapper().eq(TAppUser::getId, ids).between(TAppUser::getInsertTime, s5, s6)); int countVip1 = appUserService.count(new LambdaQueryWrapper().eq(TAppUser::getId, ids).eq(TAppUser::getIsVip, 1).between(TAppUser::getInsertTime, s5, s6)); int count2 = appUserService.count(new LambdaQueryWrapper().eq(TAppUser::getId, ids).between(TAppUser::getInsertTime, s3, s4)); int countVip2 = appUserService.count(new LambdaQueryWrapper().eq(TAppUser::getId, ids).eq(TAppUser::getIsVip, 1).between(TAppUser::getInsertTime, s3, s4)); int count3 = appUserService.count(new LambdaQueryWrapper().eq(TAppUser::getId, ids).between(TAppUser::getInsertTime, s1, s2)); int countVip3 = appUserService.count(new LambdaQueryWrapper().eq(TAppUser::getId, ids).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 days = new ArrayList<>(); ArrayList 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().eq(TAppUser::getId, ids).between(TAppUser::getInsertTime, s, s9)); int countVip5 = appUserService.count(new LambdaQueryWrapper().eq(TAppUser::getId, ids).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; } @PostMapping("/student/queryFee") public HashMap queryFee(@RequestBody QueryDataFee queryDataFee) { HashMap map = new HashMap<>(); String data = queryDataFee.getData(); List ids = queryDataFee.getIds(); if (ids.size() == 0) { ids.add(-1); } LambdaQueryWrapper vipPaymentLambdaQueryWrapper = new LambdaQueryWrapper<>(); if (ToolUtil.isNotEmpty(data)) { String stime = data.split(" - ")[0] + " 00:00:00"; String etime = data.split(" - ")[1] + " 23:59:59"; vipPaymentLambdaQueryWrapper.between(VipPayment::getInsertTime, stime, etime); } vipPaymentLambdaQueryWrapper.in(VipPayment::getAppUserId, ids); vipPaymentLambdaQueryWrapper.eq(VipPayment::getPayStatus, 2); List list = vipPaymentService.list(vipPaymentLambdaQueryWrapper); double sum = list.stream().mapToDouble(VipPayment::getAmount).sum(); map.put("fee1", sum); LambdaQueryWrapper rechargeRecordsLambdaQueryWrapper = new LambdaQueryWrapper<>(); if (ToolUtil.isNotEmpty(data)) { String stime = data.split(" - ")[0] + " 00:00:00"; String etime = data.split(" - ")[1] + " 23:59:59"; rechargeRecordsLambdaQueryWrapper.between(RechargeRecords::getInsertTime, stime, etime); } rechargeRecordsLambdaQueryWrapper.in(RechargeRecords::getAppUserId, ids); rechargeRecordsLambdaQueryWrapper.eq(RechargeRecords::getPayStatus, 2); List list1 = rechargeRecordsService.list(rechargeRecordsLambdaQueryWrapper); double sum1 = list1.stream().map(RechargeRecords::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add).doubleValue(); map.put("fee2", sum1); return map; } @PostMapping("/student/queryUserAge") public HashMap queryUserAge() { HashMap map = new HashMap<>(); List list = appUserService.list(new LambdaQueryWrapper().eq(TAppUser::getInsertType, 1)); List collect = list.stream().map(TAppUser::getId).collect(Collectors.toList()); if (collect.size() == 0) { collect.add(-1); } List list1 = studentService.list(new LambdaQueryWrapper().in(TStudent::getAppUserId, collect)); int age1 = 0; int age2 = 0; int age3 = 0; int age4 = 0; int boy = 0; int girl = 0; for (TStudent tStudent : list1) { Date birthday = tStudent.getBirthday(); long l = DateUtil.betweenYear(birthday, new Date(), true); if (l < 7) { age1++; } else if (l >= 8 && l < 11) { age2++; } else if (l >= 11 && l <= 12) { age3++; } else { age4++; } if (tStudent.getSex() == 1) { boy++; } else { girl++; } } map.put("age1", age1); map.put("age2", age2); map.put("age3", age3); map.put("age4", age4); map.put("boy", boy); map.put("girl", girl); return map; } @PostMapping("/student/queryUserAge1") public HashMap queryUserAge1() { HashMap map = new HashMap<>(); List list = appUserService.list(new LambdaQueryWrapper().eq(TAppUser::getInsertType, 1)); List collect = list.stream().map(TAppUser::getId).collect(Collectors.toList()); if (collect.size() == 0) { collect.add(-1); } Set strings = list.stream().collect(Collectors.groupingBy(TAppUser::getCity)).keySet(); ArrayList strings1 = new ArrayList<>(); ArrayList integers = new ArrayList<>(); for (String string : strings) { int a = 0; strings1.add(string); for (TAppUser tAppUser : list) { if (tAppUser.getCity().equals(string)) { a++; } } integers.add(a); } map.put("cityData", strings1); map.put("cityNum", integers); int age1 = 0; int age2 = 0; int age3 = 0; int age4 = 0; int age5 = 0; int age6 = 0; int boy = 0; int girl = 0; for (TAppUser tStudent : list) { Date birthday = tStudent.getBirthday(); long l = 0; if (birthday != null) { l = DateUtil.betweenYear(birthday, new Date(), true); } if (l <= 12) { age1++; } else if (l > 12 && l < 18) { age2++; } else if (l >= 19 && l <= 25) { age3++; } else if (l >= 26 && l <= 35) { age4++; } else if (l >= 36 && l <= 50) { age5++; } else { age6++; } if (tStudent.getGender() != null && tStudent.getGender() == 1) { boy++; } else { girl++; } } map.put("age1", age1); map.put("age2", age2); map.put("age3", age3); map.put("age4", age4); map.put("age5", age5); map.put("age6", age6); map.put("boy", boy); map.put("girl", girl); return map; } @PostMapping("/student/queryUserAgeYys") public HashMap queryUserAgeYys(@RequestBody List ids) { HashMap map = new HashMap<>(); List list = appUserService.list(new LambdaQueryWrapper().in(TAppUser::getId, ids)); List collect = list.stream().map(TAppUser::getId).collect(Collectors.toList()); if (collect.size() == 0) { collect.add(-1); } Set strings = list.stream().collect(Collectors.groupingBy(TAppUser::getCity)).keySet(); ArrayList strings1 = new ArrayList<>(); ArrayList integers = new ArrayList<>(); for (String string : strings) { int a = 0; strings1.add(string); for (TAppUser tAppUser : list) { if (tAppUser.getCity().equals(string)) { a++; } } integers.add(a); } map.put("cityData", strings1); map.put("cityNum", integers); int age1 = 0; int age2 = 0; int age3 = 0; int age4 = 0; int age5 = 0; int age6 = 0; int boy = 0; int girl = 0; for (TAppUser tStudent : list) { Date birthday = tStudent.getBirthday(); long l = 0; if (birthday != null) { l = DateUtil.betweenYear(birthday, new Date(), true); } if (l <= 12) { age1++; } else if (l > 12 && l < 18) { age2++; } else if (l >= 19 && l <= 25) { age3++; } else if (l >= 26 && l <= 35) { age4++; } else if (l >= 36 && l <= 50) { age5++; } else { age6++; } if (tStudent.getGender() != null && tStudent.getGender() == 1) { boy++; } else { girl++; } } map.put("age1", age1); map.put("age2", age2); map.put("age3", age3); map.put("age4", age4); map.put("age5", age5); map.put("age6", age6); map.put("boy", boy); map.put("girl", girl); return map; } @PostMapping("/student/queryUserAgeStore") public HashMap queryUserAgeStore(@RequestBody List ids) { HashMap map = new HashMap<>(); List list = appUserService.list(new LambdaQueryWrapper().in(TAppUser::getId, ids)); List collect = list.stream().map(TAppUser::getId).collect(Collectors.toList()); if (collect.size() == 0) { collect.add(-1); } Set strings = list.stream().collect(Collectors.groupingBy(TAppUser::getCity)).keySet(); ArrayList strings1 = new ArrayList<>(); ArrayList integers = new ArrayList<>(); for (String string : strings) { int a = 0; strings1.add(string); for (TAppUser tAppUser : list) { if (tAppUser.getCity().equals(string)) { a++; } } integers.add(a); } map.put("cityData", strings1); map.put("cityNum", integers); int age1 = 0; int age2 = 0; int age3 = 0; int age4 = 0; int age5 = 0; int age6 = 0; int boy = 0; int girl = 0; for (TAppUser tStudent : list) { Date birthday = tStudent.getBirthday(); long l = 0; if (birthday != null) { l = DateUtil.betweenYear(birthday, new Date(), true); } if (l <= 12) { age1++; } else if (l > 12 && l < 18) { age2++; } else if (l >= 19 && l <= 25) { age3++; } else if (l >= 26 && l <= 35) { age4++; } else if (l >= 36 && l <= 50) { age5++; } else { age6++; } if (tStudent.getGender() != null && tStudent.getGender() == 1) { boy++; } else { girl++; } } map.put("age1", age1); map.put("age2", age2); map.put("age3", age3); map.put("age4", age4); map.put("age5", age5); map.put("age6", age6); map.put("boy", boy); map.put("girl", girl); return map; } @PostMapping("/student/queryUserAgeYys1") public HashMap queryUserAgeYys1(@RequestBody List ids) { HashMap map = new HashMap<>(); List list = appUserService.list(new LambdaQueryWrapper().in(TAppUser::getId, ids)); List collect = list.stream().map(TAppUser::getId).collect(Collectors.toList()); if (collect.size() == 0) { collect.add(-1); } List list1 = studentService.list(new LambdaQueryWrapper().in(TStudent::getAppUserId, collect)); int age1 = 0; int age2 = 0; int age3 = 0; int age4 = 0; int boy = 0; int girl = 0; for (TStudent tStudent : list1) { Date birthday = tStudent.getBirthday(); long l = DateUtil.betweenYear(birthday, new Date(), true); if (l < 7) { age1++; } else if (l >= 8 && l < 11) { age2++; } else if (l >= 11 && l <= 12) { age3++; } else { age4++; } if (tStudent.getSex() == 1) { boy++; } else { girl++; } } map.put("age1", age1); map.put("age2", age2); map.put("age3", age3); map.put("age4", age4); map.put("boy", boy); map.put("girl", girl); return map; } @PostMapping("/student/queryUserAgeStore1") public HashMap queryUserAgeStore1(@RequestBody List ids) { HashMap map = new HashMap<>(); List list1 = studentService.list(new LambdaQueryWrapper().in(TStudent::getAppUserId, ids)); int age1 = 0; int age2 = 0; int age3 = 0; int age4 = 0; int boy = 0; int girl = 0; for (TStudent tStudent : list1) { Date birthday = tStudent.getBirthday(); long l = DateUtil.betweenYear(birthday, new Date(), true); if (l < 7) { age1++; } else if (l >= 8 && l < 11) { age2++; } else if (l >= 11 && l <= 12) { age3++; } else { age4++; } if (tStudent.getSex() == 1) { boy++; } else { girl++; } } map.put("age1", age1); map.put("age2", age2); map.put("age3", age3); map.put("age4", age4); map.put("boy", boy); map.put("girl", girl); return map; } @ResponseBody @PostMapping("/student/queryExpiredList") public List queryExpiredList(){ List list = studentService.list(new QueryWrapper().eq("state", 1).last(" and DATE_FORMAT(now(), '%Y-%m-%d') > validity")); return list; } }