From e0cfe53794b2c90d9f42e5ec821dd5775758d737 Mon Sep 17 00:00:00 2001
From: liujie <liujie>
Date: 星期一, 09 十月 2023 12:00:53 +0800
Subject: [PATCH] update
---
cloud-server-account/src/main/java/com/dsh/account/entity/TAppUser.java | 2
cloud-server-account/src/main/java/com/dsh/account/vo/entity/YearData.java | 17
cloud-server-management/src/main/webapp/WEB-INF/view/system/dataStatistics/storeIncome.html | 484 ++++++++
cloud-server-account/src/main/java/com/dsh/account/controller/StudentController.java | 325 ++++++
cloud-server-other/src/main/resources/mapper/TBackRecordMapper.xml | 6
cloud-server-other/src/main/java/com/dsh/other/controller/StoreController.java | 24
cloud-server-account/src/main/resources/sharding-jdbc.properties | 4
cloud-server-other/src/main/java/com/dsh/other/entity/TBackRecord.java | 48
cloud-server-activity/src/main/resources/sharding-jdbc.properties | 4
cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java | 171 +++
cloud-server-competition/src/main/resources/sharding-jdbc.properties | 4
cloud-server-other/src/main/java/com/dsh/other/service/impl/TBackRecordServiceImpl.java | 21
cloud-server-account/src/main/java/com/dsh/account/vo/GroupCityInfoVO.java | 18
cloud-server-management/src/main/java/com/dsh/course/feignClient/account/AppUserClient.java | 15
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TBackRecordServiceImpl.java | 21
cloud-server-account/src/main/java/com/dsh/account/model/LoginWeChatVo.java | 5
cloud-server-account/src/main/java/com/dsh/account/vo/entity/WeekData.java | 17
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TBackRecord.java | 46
cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop_info.js | 3
cloud-server-account/src/main/java/com/dsh/account/dto/UserInfoQueryDTO.java | 34
cloud-server-account/src/main/java/com/dsh/account/mapper/TAppUserMapper.java | 19
cloud-server-other/src/main/java/com/dsh/other/service/TBackRecordService.java | 16
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/TBackRecordService.java | 17
cloud-server-account/src/main/java/com/dsh/account/vo/entity/MonthData.java | 21
cloud-server-competition/src/main/java/com/dsh/competition/feignclient/other/StoreClient.java | 5
cloud-server-management/src/main/webapp/WEB-INF/view/system/dataStatistics/operatorIncome.html | 576 ++++++++--
cloud-server-account/src/main/java/com/dsh/account/vo/entity/DayData.java | 23
cloud-server-account/src/main/java/com/dsh/account/vo/UserInfoQueryVO.java | 32
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/DataStatisticsController.java | 437 ++++++++
cloud-server-account/src/main/resources/mapper/TAppUserMapper.xml | 180 +++
cloud-server-other/src/main/java/com/dsh/other/mapper/TBackRecordMapper.java | 17
cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java | 76 +
cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java | 17
cloud-server-management/src/main/resources/mapper/TBackRecordMapper.xml | 6
cloud-server-management/src/main/java/com/dsh/course/mapper/TBackRecordMapper.java | 17
cloud-server-competition/src/main/java/com/dsh/competition/service/impl/PaymentCompetitionServiceImpl.java | 4
cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java | 20
cloud-server-management/src/main/webapp/WEB-INF/view/system/dataStatistics/platformIncome.html | 364 +++---
38 files changed, 2,751 insertions(+), 365 deletions(-)
diff --git a/cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java b/cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java
index 260bd03..6464090 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java
@@ -1,8 +1,10 @@
package com.dsh.account.controller;
+import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.dsh.account.dto.SelectDto;
+import com.dsh.account.dto.UserInfoQueryDTO;
import com.dsh.account.entity.Coach;
import com.dsh.account.entity.TAppUser;
import com.dsh.account.entity.TCourseInfoRecord;
@@ -16,15 +18,24 @@
import com.dsh.account.util.ResultUtil;
import com.dsh.account.util.TokenUtil;
import com.dsh.account.util.ToolUtil;
+import com.dsh.account.vo.GroupCityInfoVO;
+import com.dsh.account.vo.UserInfoQueryVO;
+import com.dsh.account.vo.entity.DayData;
+import com.dsh.account.vo.entity.MonthData;
+import com.dsh.account.vo.entity.WeekData;
+import com.dsh.account.vo.entity.YearData;
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.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
import java.util.*;
import java.util.List;
@@ -208,6 +219,26 @@
public ResultUtil<String> loginWeChat(LoginWeChatVo loginWeChatVo){
try {
return appUserService.loginWechat(loginWeChatVo);
+ }catch (Exception e){
+ e.printStackTrace();
+ return ResultUtil.runErr();
+ }
+ }
+ @ResponseBody
+ @PostMapping("/api/appUser/bind")
+ @ApiOperation(value = "微信登录--绑定手机号", tags = {"APP-登录注册"})
+ @ApiImplicitParams({
+ })
+ public ResultUtil<String> bind(String phone){
+ try {
+ Integer uid = tokenUtil.getUserIdFormRedis();
+ if(null == uid){
+ return ResultUtil.tokenErr();
+ }
+ TAppUser byId = appUserService.getById(uid);
+ byId.setPhone(phone);
+ appUserService.updateById(byId);
+ return ResultUtil.success();
}catch (Exception e){
e.printStackTrace();
return ResultUtil.runErr();
@@ -479,4 +510,144 @@
System.out.println("=======selectDtos======>"+selectDtos);
return selectDtos;
}
+
+
+ @PostMapping("/appUser/userInfo")
+ public UserInfoQueryVO userInfo(@RequestBody UserInfoQueryDTO dto){
+
+ UserInfoQueryVO userInfoQueryVO = new UserInfoQueryVO();
+
+ LambdaQueryWrapper<TAppUser> wrapper = new LambdaQueryWrapper<>();
+
+ if(StringUtils.hasLength(dto.getCityCode())){
+ wrapper.eq(TAppUser::getCityCode,dto.getCityCode());
+ }
+
+ if(Objects.nonNull(dto.getOperatorId())){
+ wrapper.eq(TAppUser::getInsertType,2);
+ wrapper.eq(TAppUser::getAddUserId,dto.getOperatorId());
+ }
+
+ if(Objects.nonNull(dto.getStoreId())){
+ wrapper.eq(TAppUser::getInsertType,3);
+ wrapper.eq(TAppUser::getAddUserId,dto.getStoreId());
+ }
+
+ // 查询会员总数,年度会员总数
+ int userCount = appUserService.count(wrapper);
+ int userVipCount = appUserService.count(wrapper.eq(TAppUser::getIsVip,1));
+
+ userInfoQueryVO.setUserCount(userCount);
+ userInfoQueryVO.setUserVipCount(userVipCount);
+
+ if(Objects.nonNull(dto.getIsVip())){
+ wrapper.eq(TAppUser::getIsVip,dto.getIsVip());
+ }
+
+ // 年度数据
+ List<YearData> yearData = appUserService.getYearUserCount(dto);
+ userInfoQueryVO.setYearData(yearData);
+ // 月度数据
+ List<MonthData> monthData = appUserService.getMonthUserCount(dto);
+ userInfoQueryVO.setMonthData(monthData);
+
+ // 获取最近四周
+ LocalDateTime minNow = LocalDateTime.now().with(LocalTime.MIN);
+ LocalDateTime maxNow = LocalDateTime.now().with(LocalTime.MAX);
+ // 周度数据
+ dto.setStartTime(minNow.minusDays(6).toString());
+ dto.setEndTime(maxNow.toString());
+ WeekData week4 = appUserService.getWeekUserCount4(dto);
+ dto.setStartTime(minNow.minusDays(13).toString());
+ dto.setEndTime(maxNow.minusDays(6).toString());
+ WeekData week3 = appUserService.getWeekUserCount3(dto);
+ dto.setStartTime(minNow.minusDays(20).toString());
+ dto.setEndTime(maxNow.minusDays(13).toString());
+ WeekData week2 = appUserService.getWeekUserCount2(dto);
+ dto.setStartTime(minNow.minusDays(27).toString());
+ dto.setEndTime(maxNow.minusDays(20).toString());
+ WeekData week1 = appUserService.getWeekUserCount1(dto);
+
+ List<WeekData> weekDataList = new ArrayList<>();
+ weekDataList.add(week1);
+ weekDataList.add(week2);
+ weekDataList.add(week3);
+ weekDataList.add(week4);
+ userInfoQueryVO.setWeekData(weekDataList);
+
+ // 日度数据
+ dto.setStartTime(minNow.minusDays(6).toString());
+ dto.setEndTime(maxNow.toString());
+ List<DayData> dayData = appUserService.getDayUserCount(dto);
+ userInfoQueryVO.setDayData(dayData);
+ return userInfoQueryVO;
+ }
+
+ @PostMapping("/appUser/ageInfo")
+ public Map<String,Long> ageInfo(@RequestBody UserInfoQueryDTO dto){
+
+ Map<String,Long> map = new HashMap<>();
+
+ LambdaQueryWrapper<TAppUser> wrapper = new LambdaQueryWrapper<>();
+
+ if(StringUtils.hasLength(dto.getCityCode())){
+ wrapper.eq(TAppUser::getCityCode,dto.getCityCode());
+ }
+
+ if(Objects.nonNull(dto.getOperatorId())){
+ wrapper.eq(TAppUser::getInsertType,2);
+ wrapper.eq(TAppUser::getAddUserId,dto.getOperatorId());
+ }
+
+ if(Objects.nonNull(dto.getStoreId())){
+ wrapper.eq(TAppUser::getInsertType,3);
+ wrapper.eq(TAppUser::getAddUserId,dto.getStoreId());
+ }
+
+ List<TAppUser> list = appUserService.list(wrapper);
+ // 查询会员
+ list.forEach(tAppUser->tAppUser.setAge(DateUtil.ageOfNow(tAppUser.getBirthday())));
+
+ map.put("age1", list.stream().filter(e -> e.getAge() > 0 && e.getAge() <= 12).count());
+ map.put("age2",list.stream().filter(e -> e.getAge() >= 13 && e.getAge() <= 18).count());
+ map.put("age3",list.stream().filter(e -> e.getAge() >= 19 && e.getAge() <= 25).count());
+ map.put("age4",list.stream().filter(e -> e.getAge() >= 26 && e.getAge() <= 35).count());
+ map.put("age5",list.stream().filter(e -> e.getAge() >= 36 && e.getAge() <= 50).count());
+ map.put("age6",list.stream().filter(e -> e.getAge() >= 51).count());
+ return map;
+ }
+
+ @PostMapping("/appUser/sexInfo")
+ public Map<String,Integer> sexInfo(@RequestBody UserInfoQueryDTO dto){
+
+ Map<String,Integer> map = new HashMap<>(2);
+ LambdaQueryWrapper<TAppUser> wrapper = new LambdaQueryWrapper<>();
+
+ if(StringUtils.hasLength(dto.getCityCode())){
+ wrapper.eq(TAppUser::getCityCode,dto.getCityCode());
+ }
+
+ if(Objects.nonNull(dto.getOperatorId())){
+ wrapper.eq(TAppUser::getInsertType,2);
+ wrapper.eq(TAppUser::getAddUserId,dto.getOperatorId());
+ }
+
+ if(Objects.nonNull(dto.getStoreId())){
+ wrapper.eq(TAppUser::getInsertType,3);
+ wrapper.eq(TAppUser::getAddUserId,dto.getStoreId());
+ }
+
+ // 查询会员
+ int boyCount = appUserService.count(wrapper.eq(TAppUser::getGender,1));
+ int girlCount = appUserService.count(wrapper.eq(TAppUser::getGender,2));
+ map.put("boyCount",boyCount);
+ map.put("girlCount",girlCount);
+ return map;
+ }
+
+ @PostMapping("/appUser/groupCityInfo")
+ public List<GroupCityInfoVO> groupCityInfo(@RequestBody UserInfoQueryDTO dto){
+ // 查询地区会员
+ return appUserService.groupCityInfo(dto);
+ }
}
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 b7c7d88..5eb21c1 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
@@ -26,10 +26,7 @@
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
+import java.util.*;
import java.util.stream.Collectors;
/**
@@ -256,7 +253,19 @@
if(ids.size()==0){
ids.add(-1);
}
- List<TAppUser> list = appUserService.list(new LambdaQueryWrapper<TAppUser>().in(TAppUser::getInsertType, 1));
+ List<TAppUser> list = appUserService.list(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getInsertType, 1));
+ return list.stream().map(TAppUser::getId).collect(Collectors.toList());
+ }
+ @PostMapping("/student/getUserYYs")
+ @ResponseBody
+ public List<Integer> getUserYYs(@RequestBody Integer id){
+ List<TAppUser> list = appUserService.list(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getInsertType, 2).eq(TAppUser::getAddUserId,id));
+ return list.stream().map(TAppUser::getId).collect(Collectors.toList());
+ }
+ @PostMapping("/student/getUserStore")
+ @ResponseBody
+ public List<Integer> getUserStore(@RequestBody Integer id){
+ List<TAppUser> list = appUserService.list(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getInsertType, 3).eq(TAppUser::getAddUserId,id));
return list.stream().map(TAppUser::getId).collect(Collectors.toList());
}
@@ -308,7 +317,7 @@
@PostMapping("/student/queryUserAge")
public HashMap<String, Object> queryUserAge(){
HashMap<String, Object> map = new HashMap<>();
- List<TAppUser> list = appUserService.list(new LambdaQueryWrapper<TAppUser>().in(TAppUser::getInsertType, 1));
+ List<TAppUser> list = appUserService.list(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getInsertType, 1));
List<Integer> collect = list.stream().map(TAppUser::getId).collect(Collectors.toList());
if(collect.size()==0){
collect.add(-1);
@@ -349,4 +358,308 @@
}
+ @PostMapping("/student/queryUserAge1")
+ public HashMap<String, Object> queryUserAge1(){
+ HashMap<String, Object> map = new HashMap<>();
+ List<TAppUser> list = appUserService.list(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getInsertType, 1));
+ List<Integer> collect = list.stream().map(TAppUser::getId).collect(Collectors.toList());
+ if(collect.size()==0){
+ collect.add(-1);
+ }
+
+
+ Set<String> strings = list.stream().collect(Collectors.groupingBy(TAppUser::getCity)).keySet();
+ ArrayList<String> strings1 = new ArrayList<>();
+ ArrayList<Integer> 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<String, Object> queryUserAgeYys(Integer id){
+ HashMap<String, Object> map = new HashMap<>();
+ List<TAppUser> list = appUserService.list(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getInsertType, 2).eq(TAppUser::getAddUserId,id));
+ List<Integer> collect = list.stream().map(TAppUser::getId).collect(Collectors.toList());
+ if(collect.size()==0){
+ collect.add(-1);
+ }
+
+
+ Set<String> strings = list.stream().collect(Collectors.groupingBy(TAppUser::getCity)).keySet();
+ ArrayList<String> strings1 = new ArrayList<>();
+ ArrayList<Integer> 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<String, Object> queryUserAgeStore(Integer id){
+ HashMap<String, Object> map = new HashMap<>();
+ List<TAppUser> list = appUserService.list(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getInsertType, 3).eq(TAppUser::getAddUserId,id));
+ List<Integer> collect = list.stream().map(TAppUser::getId).collect(Collectors.toList());
+ if(collect.size()==0){
+ collect.add(-1);
+ }
+
+
+ Set<String> strings = list.stream().collect(Collectors.groupingBy(TAppUser::getCity)).keySet();
+ ArrayList<String> strings1 = new ArrayList<>();
+ ArrayList<Integer> 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<String, Object> queryUserAgeYys1(@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));
+ List<Integer> collect = list.stream().map(TAppUser::getId).collect(Collectors.toList());
+ if(collect.size()==0){
+ collect.add(-1);
+ }
+ List<TStudent> list1 = studentService.list(new LambdaQueryWrapper<TStudent>().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<String, Object> queryUserAgeStore1(@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));
+ List<Integer> collect = list.stream().map(TAppUser::getId).collect(Collectors.toList());
+ if(collect.size()==0){
+ collect.add(-1);
+ }
+ List<TStudent> list1 = studentService.list(new LambdaQueryWrapper<TStudent>().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;
+
+
+ }
}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/dto/UserInfoQueryDTO.java b/cloud-server-account/src/main/java/com/dsh/account/dto/UserInfoQueryDTO.java
new file mode 100644
index 0000000..196dd96
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/dto/UserInfoQueryDTO.java
@@ -0,0 +1,34 @@
+package com.dsh.account.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+@ApiModel(value = "运营统计查询DTO")
+public class UserInfoQueryDTO implements Serializable {
+
+ @ApiModelProperty(value = "选择城市")
+ private String cityCode;
+
+ @ApiModelProperty(value = "分类 1平台 2运营商 3门店")
+ private Integer insertType;
+
+ @ApiModelProperty(value = "运营商id")
+ private Integer operatorId;
+
+ @ApiModelProperty(value = "门店id")
+ private Integer storeId;
+
+ @ApiModelProperty(value = "是否年费会员 0=否,1=是")
+ private Integer isVip;
+
+ @ApiModelProperty(value = "开始时间,前端忽略")
+ private String startTime;
+
+ @ApiModelProperty(value = "结束时间,前端忽略")
+ private String endTime;
+
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/entity/TAppUser.java b/cloud-server-account/src/main/java/com/dsh/account/entity/TAppUser.java
index 4e1b938..c0b9123 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/entity/TAppUser.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/entity/TAppUser.java
@@ -171,4 +171,6 @@
*/
@TableField("addUserId")
private Integer addUserId;
+ @TableField(exist = false)
+ private Integer age;
}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/mapper/TAppUserMapper.java b/cloud-server-account/src/main/java/com/dsh/account/mapper/TAppUserMapper.java
index 5d3e8ef..46c9d97 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/mapper/TAppUserMapper.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/mapper/TAppUserMapper.java
@@ -2,10 +2,16 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsh.account.dto.SelectDto;
+import com.dsh.account.dto.UserInfoQueryDTO;
import com.dsh.account.entity.TAppUser;
import com.dsh.account.model.AppUserByNameAndPhoneDTO;
import com.dsh.account.model.query.appUserQuery.QueryAppUser;
import com.dsh.account.model.vo.QueryAppUserVO;
+import com.dsh.account.vo.GroupCityInfoVO;
+import com.dsh.account.vo.entity.DayData;
+import com.dsh.account.vo.entity.MonthData;
+import com.dsh.account.vo.entity.WeekData;
+import com.dsh.account.vo.entity.YearData;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.PathVariable;
@@ -37,4 +43,17 @@
int changeState(@Param("ids") List<Integer> ids,@Param("state") Integer state);
List<TAppUser> queryAPPUserByNameAndPhone(@Param("query") AppUserByNameAndPhoneDTO dto);
+
+ List<YearData> getYearUserCount(@Param("dto") UserInfoQueryDTO dto);
+
+ List<MonthData> getMonthUserCount(@Param("dto")UserInfoQueryDTO dto);
+
+ WeekData getWeekUserCount4(@Param("dto")UserInfoQueryDTO dto);
+ WeekData getWeekUserCount3(@Param("dto")UserInfoQueryDTO dto);
+ WeekData getWeekUserCount2(@Param("dto")UserInfoQueryDTO dto);
+ WeekData getWeekUserCount1(@Param("dto")UserInfoQueryDTO dto);
+
+ List<DayData> getDayUserCount(@Param("dto")UserInfoQueryDTO dto);
+
+ List<GroupCityInfoVO> groupCityInfo(@Param("dto")UserInfoQueryDTO dto);
}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/LoginWeChatVo.java b/cloud-server-account/src/main/java/com/dsh/account/model/LoginWeChatVo.java
index c7471ca..b301616 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/model/LoginWeChatVo.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/model/LoginWeChatVo.java
@@ -13,6 +13,9 @@
public class LoginWeChatVo {
@ApiModelProperty(value = "微信openId", dataType = "string", required = true)
private String openId;
- @ApiModelProperty(value = "手机号", dataType = "string", required = true)
+ @ApiModelProperty(value = "手机号", dataType = "string", required = false)
private String phone;
+ private String nickname;
+ private String headimgurl;
+ private Integer sex;
}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java b/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java
index 2975b15..c33df21 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsh.account.dto.SelectDto;
+import com.dsh.account.dto.UserInfoQueryDTO;
import com.dsh.account.entity.TAppUser;
import com.dsh.account.model.*;
import com.dsh.account.model.query.appUserQuery.QueryAppUser;
@@ -11,6 +12,11 @@
import com.dsh.account.model.vo.classDetails.classInsVo.ClassInfoVo;
import com.dsh.account.model.vo.userBenefitDetail.*;
import com.dsh.account.util.ResultUtil;
+import com.dsh.account.vo.GroupCityInfoVO;
+import com.dsh.account.vo.entity.DayData;
+import com.dsh.account.vo.entity.MonthData;
+import com.dsh.account.vo.entity.WeekData;
+import com.dsh.account.vo.entity.YearData;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
@@ -148,4 +154,18 @@
Object changeState(AdvertisementChangeStateDTO dto);
List<TAppUser> queryAPPUserByNameAndPhone(AppUserByNameAndPhoneDTO dto);
+
+
+ List<YearData> getYearUserCount(UserInfoQueryDTO dto);
+
+ List<MonthData> getMonthUserCount(UserInfoQueryDTO dto);
+
+ WeekData getWeekUserCount4(UserInfoQueryDTO dto);
+ WeekData getWeekUserCount3(UserInfoQueryDTO dto);
+ WeekData getWeekUserCount2(UserInfoQueryDTO dto);
+ WeekData getWeekUserCount1(UserInfoQueryDTO dto);
+
+ List<DayData> getDayUserCount(UserInfoQueryDTO dto);
+
+ List<GroupCityInfoVO> groupCityInfo(UserInfoQueryDTO dto);
}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java
index 599d6d4..5b2a892 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java
@@ -5,6 +5,7 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsh.account.dto.SelectDto;
+import com.dsh.account.dto.UserInfoQueryDTO;
import com.dsh.account.entity.*;
import com.dsh.account.enums.RechargeRecordEnum;
import com.dsh.account.feignclient.activity.IntroduceRewardsClient;
@@ -44,6 +45,11 @@
import com.dsh.account.service.TAppUserService;
import com.dsh.account.util.*;
import com.dsh.account.util.akeylogin.Md5Util;
+import com.dsh.account.vo.GroupCityInfoVO;
+import com.dsh.account.vo.entity.DayData;
+import com.dsh.account.vo.entity.MonthData;
+import com.dsh.account.vo.entity.WeekData;
+import com.dsh.account.vo.entity.YearData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
@@ -60,6 +66,7 @@
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
+import java.time.LocalDate;
import java.util.*;
import java.util.stream.Collectors;
@@ -177,7 +184,62 @@
public List<TAppUser> queryAPPUserByNameAndPhone(AppUserByNameAndPhoneDTO dto) {
return appUserMapper.queryAPPUserByNameAndPhone(dto);
}
+ @Override
+ public List<YearData> getYearUserCount(UserInfoQueryDTO dto) {
+ return appUserMapper.getYearUserCount(dto);
+ }
+ @Override
+ public List<MonthData> getMonthUserCount(UserInfoQueryDTO dto) {
+ List<MonthData> monthUserCount = appUserMapper.getMonthUserCount(dto);
+ for (int i = 1; i <= 12; i++) {
+ String time = String.valueOf(i);
+ if (i < 10) {
+ time = "0" + time;
+ }
+ monthUserCount.add(Optional.ofNullable(monthUserCount.get(i)).orElse(new MonthData(time, 0)));
+ }
+ return monthUserCount.stream().sorted(Comparator.comparing(MonthData::getMonth)).collect(Collectors.toList());
+ }
+
+ @Override
+ public WeekData getWeekUserCount4(UserInfoQueryDTO dto) {
+ return appUserMapper.getWeekUserCount4(dto);
+ }
+ @Override
+ public WeekData getWeekUserCount3(UserInfoQueryDTO dto) {
+ return appUserMapper.getWeekUserCount3(dto);
+ }
+ @Override
+ public WeekData getWeekUserCount2(UserInfoQueryDTO dto) {
+ return appUserMapper.getWeekUserCount2(dto);
+ }
+ @Override
+ public WeekData getWeekUserCount1(UserInfoQueryDTO dto) {
+ return appUserMapper.getWeekUserCount1(dto);
+ }
+
+ @Override
+ public List<DayData> getDayUserCount(UserInfoQueryDTO dto) {
+ List<DayData> dayUserCount = appUserMapper.getDayUserCount(dto);
+ if(dayUserCount.size()<7){
+ for (int i = 1; i <= 6; i++) {
+ String time = LocalDate.now().minusDays(i).toString();
+ for (DayData dayData : dayUserCount) {
+ if(!time.equals(dayData.getDay())){
+ dayUserCount.add(new DayData(time,0));
+ }
+ }
+ }
+ }
+ dayUserCount.forEach(dayData->dayData.setDay(dayData.getDay().split("-")[2]));
+ return dayUserCount.stream().sorted(Comparator.comparing(DayData::getDay)).collect(Collectors.toList());
+ }
+
+ @Override
+ public List<GroupCityInfoVO> groupCityInfo(UserInfoQueryDTO dto) {
+ return appUserMapper.groupCityInfo(dto);
+ }
@Override
public ClassInfoVo queryUserOfStus(Integer id) {
TAppUser tAppUser = this.baseMapper.selectById(id);
@@ -421,6 +483,7 @@
@Override
public ResultUtil loginWechat(LoginWeChatVo loginWechatVo) throws Exception {
TAppUser tAppUser = this.baseMapper.selectOne(new QueryWrapper<TAppUser>().eq("openid", loginWechatVo.getOpenId()).ne("state", 3));
+
if(null == tAppUser){
tAppUser = this.baseMapper.selectOne(new QueryWrapper<TAppUser>().eq("phone", loginWechatVo.getPhone()).ne("state", 3));
if(null == tAppUser){
@@ -430,6 +493,9 @@
tAppUser.setPhone(loginWechatVo.getPhone());
tAppUser.setPassword(Md5Util.MD5Encode("111111", null));
tAppUser.setIsVip(0);
+ tAppUser.setName(loginWechatVo.getNickname());
+ tAppUser.setHeadImg(loginWechatVo.getHeadimgurl());
+ tAppUser.setGender(loginWechatVo.getSex());
tAppUser.setState(1);
tAppUser.setInsertTime(new Date());
this.baseMapper.insert(tAppUser);
@@ -448,7 +514,15 @@
this.updateById(tAppUser);
String token = getToken(tAppUser);
- return ResultUtil.success(token);
+
+ HashMap<String, String> map = new HashMap<>();
+ map.put("token",token);
+ if(ToolUtil.isEmpty(tAppUser.getPhone())){
+ map.put("isBind","0");
+ }else {
+ map.put("isBind","1");
+ }
+ return ResultUtil.success(map);
}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/vo/GroupCityInfoVO.java b/cloud-server-account/src/main/java/com/dsh/account/vo/GroupCityInfoVO.java
new file mode 100644
index 0000000..fcd343d
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/vo/GroupCityInfoVO.java
@@ -0,0 +1,18 @@
+package com.dsh.account.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class GroupCityInfoVO implements Serializable {
+
+ @ApiModelProperty(value = "市code")
+ private String cityCode;
+ @ApiModelProperty(value = "市区")
+ private String city;
+ @ApiModelProperty(value = "数量")
+ private Integer userCount;
+
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/vo/UserInfoQueryVO.java b/cloud-server-account/src/main/java/com/dsh/account/vo/UserInfoQueryVO.java
new file mode 100644
index 0000000..13419ed
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/vo/UserInfoQueryVO.java
@@ -0,0 +1,32 @@
+package com.dsh.account.vo;
+
+import com.dsh.account.vo.entity.DayData;
+import com.dsh.account.vo.entity.MonthData;
+import com.dsh.account.vo.entity.WeekData;
+import com.dsh.account.vo.entity.YearData;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
+
+@Data
+public class UserInfoQueryVO implements Serializable {
+
+
+ @ApiModelProperty(value = "用户总数")
+ private Integer userCount;
+ @ApiModelProperty(value = "年费会员总数")
+ private Integer userVipCount;
+
+ @ApiModelProperty(value = "年度数据")
+ private List<YearData> yearData;
+ @ApiModelProperty(value = "月度数据")
+ private List<MonthData> monthData;
+ @ApiModelProperty(value = "周度数据")
+ private List<WeekData> weekData;
+ @ApiModelProperty(value = "日度数据")
+ private List<DayData> dayData;
+
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/vo/entity/DayData.java b/cloud-server-account/src/main/java/com/dsh/account/vo/entity/DayData.java
new file mode 100644
index 0000000..8190bf8
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/vo/entity/DayData.java
@@ -0,0 +1,23 @@
+package com.dsh.account.vo.entity;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.ToString;
+
+import java.io.Serializable;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@ToString
+public class DayData implements Serializable {
+
+ @ApiModelProperty(value = "日")
+ private String day;
+
+ @ApiModelProperty(value = "数量")
+ private Integer dayCount;
+
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/vo/entity/MonthData.java b/cloud-server-account/src/main/java/com/dsh/account/vo/entity/MonthData.java
new file mode 100644
index 0000000..206e512
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/vo/entity/MonthData.java
@@ -0,0 +1,21 @@
+package com.dsh.account.vo.entity;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class MonthData implements Serializable {
+
+ @ApiModelProperty(value = "月份")
+ private String month;
+
+ @ApiModelProperty(value = "数量")
+ private Integer monthCount;
+
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/vo/entity/WeekData.java b/cloud-server-account/src/main/java/com/dsh/account/vo/entity/WeekData.java
new file mode 100644
index 0000000..260e9c6
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/vo/entity/WeekData.java
@@ -0,0 +1,17 @@
+package com.dsh.account.vo.entity;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class WeekData implements Serializable {
+
+ @ApiModelProperty(value = "周")
+ private String week;
+
+ @ApiModelProperty(value = "数量")
+ private Integer weekCount;
+
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/vo/entity/YearData.java b/cloud-server-account/src/main/java/com/dsh/account/vo/entity/YearData.java
new file mode 100644
index 0000000..de4d2aa
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/vo/entity/YearData.java
@@ -0,0 +1,17 @@
+package com.dsh.account.vo.entity;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class YearData implements Serializable {
+
+ @ApiModelProperty(value = "年份")
+ private String year;
+
+ @ApiModelProperty(value = "数量")
+ private Integer yearCount;
+
+}
diff --git a/cloud-server-account/src/main/resources/mapper/TAppUserMapper.xml b/cloud-server-account/src/main/resources/mapper/TAppUserMapper.xml
index f713086..5599921 100644
--- a/cloud-server-account/src/main/resources/mapper/TAppUserMapper.xml
+++ b/cloud-server-account/src/main/resources/mapper/TAppUserMapper.xml
@@ -93,4 +93,184 @@
</if>
</where>
</select>
+
+
+ <select id="getYearUserCount" resultType="com.dsh.account.vo.entity.YearData">
+ select IFNULL(count(*),0) AS yearCount,DATE_FORMAT(insertTime,'%Y') AS `year` from t_app_user
+ <where>
+ <if test="dto.cityCode != null and dto.cityCode != ''">
+ AND cityCode = #{dto.cityCode}
+ </if>
+ <if test="dto.isVip != null">
+ AND isVip = #{dto.isVip}
+ </if>
+ <if test="dto.insertType != null and dto.insertType == 2 and dto.operatorId != null">
+ AND insertType = 2
+ AND addUserId = #{dto.operatorId}
+ </if>
+ <if test="dto.insertType != null and dto.insertType == 3 and dto.storeId != null">
+ AND insertType = 3
+ AND addUserId = #{dto.storeId}
+ </if>
+ </where>
+ GROUP BY DATE_FORMAT(insertTime,'%Y')
+ </select>
+ <select id="getMonthUserCount" resultType="com.dsh.account.vo.entity.MonthData">
+ select IFNULL(count(*),0) AS monthCount,DATE_FORMAT(insertTime,'%Y%m') AS `month` from t_app_user
+ <where>
+ <if test="dto.cityCode != null and dto.cityCode != ''">
+ AND cityCode = #{dto.cityCode}
+ </if>
+ <if test="dto.isVip != null">
+ AND isVip = #{dto.isVip}
+ </if>
+ <if test="dto.insertType != null and dto.insertType == 2 and dto.operatorId != null">
+ AND insertType = 2
+ AND addUserId = #{dto.operatorId}
+ </if>
+ <if test="dto.insertType != null and dto.insertType == 3 and dto.storeId != null">
+ AND insertType = 3
+ AND addUserId = #{dto.storeId}
+ </if>
+ </where>
+ GROUP BY DATE_FORMAT(insertTime,'%Y%m')
+ </select>
+ <select id="getWeekUserCount4" resultType="com.dsh.account.vo.entity.WeekData">
+ select IFNULL(count(*),0) AS weekCount,4 AS `week` from t_app_user
+ <where>
+ <if test="dto.startTime != null and dto.startTime != '' and dto.endTime != null and dto.endTime != ''">
+ AND insertTime between #{dto.startTime} and #{dto.endTime}
+ </if>
+ <if test="dto.cityCode != null and dto.cityCode != ''">
+ AND cityCode = #{dto.cityCode}
+ </if>
+ <if test="dto.isVip != null">
+ AND isVip = #{dto.isVip}
+ </if>
+ <if test="dto.insertType != null and dto.insertType == 2 and dto.operatorId != null">
+ AND insertType = 2
+ AND addUserId = #{dto.operatorId}
+ </if>
+ <if test="dto.insertType != null and dto.insertType == 3 and dto.storeId != null">
+ AND insertType = 3
+ AND addUserId = #{dto.storeId}
+ </if>
+ </where>
+ </select>
+
+ <select id="getWeekUserCount3" resultType="com.dsh.account.vo.entity.WeekData">
+ select IFNULL(count(*),0) AS weekCount,3 AS `week` from t_app_user
+ <where>
+ <if test="dto.startTime != null and dto.startTime != '' and dto.endTime != null and dto.endTime != ''">
+ AND insertTime between #{dto.startTime} and #{dto.endTime}
+ </if>
+ <if test="dto.cityCode != null and dto.cityCode != ''">
+ AND cityCode = #{dto.cityCode}
+ </if>
+ <if test="dto.isVip != null">
+ AND isVip = #{dto.isVip}
+ </if>
+ <if test="dto.insertType != null and dto.insertType == 2 and dto.operatorId != null">
+ AND insertType = 2
+ AND addUserId = #{dto.operatorId}
+ </if>
+ <if test="dto.insertType != null and dto.insertType == 3 and dto.storeId != null">
+ AND insertType = 3
+ AND addUserId = #{dto.storeId}
+ </if>
+ </where>
+ </select>
+
+ <select id="getWeekUserCount2" resultType="com.dsh.account.vo.entity.WeekData">
+ select IFNULL(count(*),0) AS weekCount,2 AS `week` from t_app_user
+ <where>
+ <if test="dto.startTime != null and dto.startTime != '' and dto.endTime != null and dto.endTime != ''">
+ AND insertTime between #{dto.startTime} and #{dto.endTime}
+ </if>
+ <if test="dto.cityCode != null and dto.cityCode != ''">
+ AND cityCode = #{dto.cityCode}
+ </if>
+ <if test="dto.isVip != null">
+ AND isVip = #{dto.isVip}
+ </if>
+ <if test="dto.insertType != null and dto.insertType == 2 and dto.operatorId != null">
+ AND insertType = 2
+ AND addUserId = #{dto.operatorId}
+ </if>
+ <if test="dto.insertType != null and dto.insertType == 3 and dto.storeId != null">
+ AND insertType = 3
+ AND addUserId = #{dto.storeId}
+ </if>
+ </where>
+ </select>
+
+ <select id="getWeekUserCount1" resultType="com.dsh.account.vo.entity.WeekData">
+ select IFNULL(count(*),0) AS weekCount,1 AS `week` from t_app_user
+ <where>
+ <if test="dto.startTime != null and dto.startTime != '' and dto.endTime != null and dto.endTime != ''">
+ AND insertTime between #{dto.startTime} and #{dto.endTime}
+ </if>
+ <if test="dto.cityCode != null and dto.cityCode != ''">
+ AND cityCode = #{dto.cityCode}
+ </if>
+ <if test="dto.isVip != null">
+ AND isVip = #{dto.isVip}
+ </if>
+ <if test="dto.insertType != null and dto.insertType == 2 and dto.operatorId != null">
+ AND insertType = 2
+ AND addUserId = #{dto.operatorId}
+ </if>
+ <if test="dto.insertType != null and dto.insertType == 3 and dto.storeId != null">
+ AND insertType = 3
+ AND addUserId = #{dto.storeId}
+ </if>
+ </where>
+ </select>
+
+ <select id="getDayUserCount" resultType="com.dsh.account.vo.entity.DayData">
+ select IFNULL(count(*),0) AS dayCount,DATE_FORMAT(insertTime,'%Y-%m-%d') AS `day` from t_app_user
+ <where>
+ <if test="dto.startTime != null and dto.startTime != '' and dto.endTime != null and dto.endTime != ''">
+ AND insertTime between #{dto.startTime} and #{dto.endTime}
+ </if>
+ <if test="dto.cityCode != null and dto.cityCode != ''">
+ AND cityCode = #{dto.cityCode}
+ </if>
+ <if test="dto.isVip != null">
+ AND isVip = #{dto.isVip}
+ </if>
+ <if test="dto.insertType != null and dto.insertType == 2 and dto.operatorId != null">
+ AND insertType = 2
+ AND addUserId = #{dto.operatorId}
+ </if>
+ <if test="dto.insertType != null and dto.insertType == 3 and dto.storeId != null">
+ AND insertType = 3
+ AND addUserId = #{dto.storeId}
+ </if>
+ </where>
+ GROUP BY DATE_FORMAT(insertTime,'%Y-%m-%d')
+ </select>
+ <select id="groupCityInfo" resultType="com.dsh.account.vo.GroupCityInfoVO">
+ select IFNULL(count(*),0) AS userCount,cityCode,city from t_app_user
+ <where>
+ <if test="dto.startTime != null and dto.startTime != '' and dto.endTime != null and dto.endTime != ''">
+ AND insertTime between #{dto.startTime} and #{dto.endTime}
+ </if>
+ <if test="dto.cityCode != null and dto.cityCode != ''">
+ AND cityCode = #{dto.cityCode}
+ </if>
+ <if test="dto.isVip != null">
+ AND isVip = #{dto.isVip}
+ </if>
+ <if test="dto.insertType != null and dto.insertType == 2 and dto.operatorId != null">
+ AND insertType = 2
+ AND addUserId = #{dto.operatorId}
+ </if>
+ <if test="dto.insertType != null and dto.insertType == 3 and dto.storeId != null">
+ AND insertType = 3
+ AND addUserId = #{dto.storeId}
+ </if>
+ </where>
+ GROUP BY cityCode
+ </select>
</mapper>
diff --git a/cloud-server-account/src/main/resources/sharding-jdbc.properties b/cloud-server-account/src/main/resources/sharding-jdbc.properties
index 9c041c5..d3f7a4e 100644
--- a/cloud-server-account/src/main/resources/sharding-jdbc.properties
+++ b/cloud-server-account/src/main/resources/sharding-jdbc.properties
@@ -3,9 +3,9 @@
#��������
datasource.master0.type=com.alibaba.druid.pool.DruidDataSource
datasource.master0.driverClassName=com.mysql.cj.jdbc.Driver
-datasource.master0.url=jdbc:mysql://8.137.22.229:3306/playpai_account?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai
+datasource.master0.url=jdbc:mysql://192.168.110.80:3306/playpai_account?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai
datasource.master0.username=root
-datasource.master0.password=playpai2023!
+datasource.master0.password=123456
datasource.master0.maxActive=20
datasource.master0.maxWait=60000
datasource.master0.minIdle=5
diff --git a/cloud-server-activity/src/main/resources/sharding-jdbc.properties b/cloud-server-activity/src/main/resources/sharding-jdbc.properties
index f7b7fb6..54db095 100644
--- a/cloud-server-activity/src/main/resources/sharding-jdbc.properties
+++ b/cloud-server-activity/src/main/resources/sharding-jdbc.properties
@@ -3,9 +3,9 @@
#��������
datasource.master0.type=com.alibaba.druid.pool.DruidDataSource
datasource.master0.driverClassName=com.mysql.cj.jdbc.Driver
-datasource.master0.url=jdbc:mysql://8.137.22.229:3306/playpai_activity?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai
+datasource.master0.url=jdbc:mysql://192.168.110.80:3306/playpai_activity?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai
datasource.master0.username=root
-datasource.master0.password=playpai2023!
+datasource.master0.password=123456
datasource.master0.maxActive=20
datasource.master0.maxWait=60000
datasource.master0.minIdle=5
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/other/StoreClient.java b/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/other/StoreClient.java
index 9c4fa3d..03861a6 100644
--- a/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/other/StoreClient.java
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/other/StoreClient.java
@@ -30,4 +30,9 @@
*/
@PostMapping("/store/queryStoreById")
Store queryStoreById(Integer id);
+
+ @PostMapping("/store/addBackRecord")
+ void addBackRecord(String s);
+
+
}
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/PaymentCompetitionServiceImpl.java b/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/PaymentCompetitionServiceImpl.java
index 180ce8c..a9b8333 100644
--- a/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/PaymentCompetitionServiceImpl.java
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/PaymentCompetitionServiceImpl.java
@@ -180,6 +180,10 @@
String refund_id = map.get("refund_id");
paymentCompetition.setRefundOrderNo(refund_id);
this.updateById(paymentCompetition);
+
+ storeClient.addBackRecord(paymentCompetition.getAmount()+"_"+paymentCompetition.getAppUserId());
+
+
}
if(paymentCompetition.getPayType() == 2){//支付宝支付
Map<String, String> map = payMoneyUtil.aliRefund(payOrderNo, amount.toString());
diff --git a/cloud-server-competition/src/main/resources/sharding-jdbc.properties b/cloud-server-competition/src/main/resources/sharding-jdbc.properties
index e9334d0..ffe6f6b 100644
--- a/cloud-server-competition/src/main/resources/sharding-jdbc.properties
+++ b/cloud-server-competition/src/main/resources/sharding-jdbc.properties
@@ -3,9 +3,9 @@
#��������
datasource.master0.type=com.alibaba.druid.pool.DruidDataSource
datasource.master0.driverClassName=com.mysql.cj.jdbc.Driver
-datasource.master0.url=jdbc:mysql://8.137.22.229:3306/playpai_competition?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai
+datasource.master0.url=jdbc:mysql://192.168.110.80:3306/playpai_competition?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai
datasource.master0.username=root
-datasource.master0.password=playpai2023!
+datasource.master0.password=123456
datasource.master0.maxActive=20
datasource.master0.maxWait=60000
datasource.master0.minIdle=5
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 bf46cef..137f416 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
@@ -102,7 +102,22 @@
@PostMapping("/student/queryUserAge")
HashMap<String, Object> queryUserAge();
+ @PostMapping("/student/queryUserAge1")
+ HashMap<String, Object> queryUserAge1();
+ @PostMapping("/student/getUserYYs")
+ List<Integer> getUserYYs(Integer id);
+ @PostMapping("/student/queryUserAgeYys")
+ HashMap<String, Object> queryUserAgeYys(Integer id);
+ @PostMapping("/student/queryUserAgeStore")
+ HashMap<String, Object> queryUserAgeStore(Integer id);
+ @PostMapping("/student/queryUserAgeYys1")
+ HashMap<String, Object> queryUserAgeYys1(Integer id);
+ @PostMapping("/student/queryUserAgeStore1")
+ HashMap<String, Object> queryUserAgeStore1(Integer id);
+
+ @PostMapping("/student/getUserStore")
+ List<Integer> getUserStore(Integer id);
}
diff --git a/cloud-server-management/src/main/java/com/dsh/course/mapper/TBackRecordMapper.java b/cloud-server-management/src/main/java/com/dsh/course/mapper/TBackRecordMapper.java
new file mode 100644
index 0000000..b6e0267
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/course/mapper/TBackRecordMapper.java
@@ -0,0 +1,17 @@
+package com.dsh.course.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dsh.guns.modular.system.model.TBackRecord;
+
+/**
+ * <p>
+ * 退费记录 Mapper 接口
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-10-09
+ */
+public interface TBackRecordMapper extends BaseMapper<TBackRecord> {
+
+}
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 0fe7d8e..6b30753 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/DataStatisticsController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/DataStatisticsController.java
@@ -1,5 +1,6 @@
package com.dsh.guns.modular.system.controller.code;
+import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.dsh.course.feignClient.account.*;
import com.dsh.course.feignClient.account.model.CityManager;
@@ -60,6 +61,9 @@
@Autowired
private CourseClient courseClient;
+
+ @Autowired
+ private IStoreService storeService;
@Autowired
private VipPaymentClient vipPaymentClient;
@Autowired
@@ -83,6 +87,8 @@
private CourseStuddentClient courseStuddentClient;
@Autowired
private CoursePackageClient coursePackageClient;
+ @Autowired
+ private TOperatorService operatorService;
/**
* 跳转到平台统计数据页面
*/
@@ -409,6 +415,13 @@
// 最后put
monthlyData.put("yearMount",objects);
+ ArrayList<Object> integers = new ArrayList<>();
+ int year = DateUtil.year(new Date());
+ for (int i = 0; i < 10; i++) {
+ integers.add(year-i);
+ }
+ List<Object> collect = integers.stream().sorted().collect(Collectors.toList());
+ monthlyData.put("year",collect);
return monthlyData;
}
@@ -490,40 +503,349 @@
return null;
}
+
+
+ @Autowired
+ private TBackRecordService backRecordService;
+
+ @RequestMapping(value = "/backPt")
+ @ResponseBody
+ public Object backPt(Integer type) {
+ HashMap<String, Object> map = new HashMap<>();
+ List<Integer> userPt = appUserClient.getUserPt(Arrays.asList(1));
+ if(userPt.size()==0){
+ userPt.add(-1);
+ }
+ ArrayList<Object> integers = new ArrayList<>();
+ int year = DateUtil.year(new Date());
+ List<TBackRecord> thisYear = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().like(TBackRecord::getTime, year).in(TBackRecord::getUserId,userPt));
+ double sum5 = thisYear.stream().mapToDouble(TBackRecord::getMoney).sum();
+ map.put("thisYear",sum5);
+
+ List<TBackRecord> thisMonth = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().like(TBackRecord::getTime, new SimpleDateFormat("yyyy-MM").format(new Date())).in(TBackRecord::getUserId,userPt));
+ double sum6= thisMonth.stream().mapToDouble(TBackRecord::getMoney).sum();
+ map.put("thisMonth",sum6);
+
+
+
+ for (int i = 0; i < 10; i++) {
+ integers.add(year-i);
+ }
+ List<Object> collect = integers.stream().sorted().collect(Collectors.toList());
+ // 年
+ ArrayList<Double> years = new ArrayList<>();
+ for (Object o : collect) {
+ double sum=0.0;
+ String s = o.toString();
+ List<TBackRecord> list = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().like(TBackRecord::getTime, s).in(TBackRecord::getUserId,userPt));
+ sum = list.stream().mapToDouble(TBackRecord::getMoney).sum();
+ years.add(sum);
+ }
+ ArrayList<Double> months = new ArrayList<>();
+ // 月
+ for (int i = 1; i <= 12; i++) {
+ double sum=0.0;
+ String m=i+"";
+ if(i<10){
+ m="0"+i;
+ }
+ String s = year + "-" + m;
+ List<TBackRecord> list = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().like(TBackRecord::getTime, s).in(TBackRecord::getUserId,userPt));
+ sum = list.stream().mapToDouble(TBackRecord::getMoney).sum();
+ months.add(sum);
+ }
+
+ // 获取最近四周
+ LocalDateTime minNow = LocalDateTime.now().with(LocalTime.MIN);
+ LocalDateTime maxNow = LocalDateTime.now().with(LocalTime.MAX);
+ // 周度数据
+ String s1 = minNow.minusDays(6).toString();
+ String s2 = maxNow.toString();
+
+ String s3 = minNow.minusDays(13).toString();
+ String s4 = maxNow.minusDays(6).toString();
+
+
+ String s5 = minNow.minusDays(20).toString();
+ String s6 = maxNow.minusDays(13).toString();
+
+ String s7 = minNow.minusDays(27).toString();
+ String s8 = maxNow.minusDays(20).toString();
+
+ List<TBackRecord> list = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().between(TBackRecord::getTime, s7,s8).in(TBackRecord::getUserId,userPt));
+ double sum = list.stream().mapToDouble(TBackRecord::getMoney).sum();
+
+ List<TBackRecord> list1 = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().between(TBackRecord::getTime, s5,s6).in(TBackRecord::getUserId,userPt));
+ double sum1 = list1.stream().mapToDouble(TBackRecord::getMoney).sum();
+ List<TBackRecord> list2 = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().between(TBackRecord::getTime, s3,s4).in(TBackRecord::getUserId,userPt));
+ double sum2 = list2.stream().mapToDouble(TBackRecord::getMoney).sum();
+ List<TBackRecord> list3 = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().between(TBackRecord::getTime, s1,s2).in(TBackRecord::getUserId,userPt));
+ double sum3 = list3.stream().mapToDouble(TBackRecord::getMoney).sum();
+
+ map.put("thisWeek",sum3);
+
+ ArrayList<Double> week = new ArrayList<>();
+ week.add(sum);
+ week.add(sum1);
+ week.add(sum2);
+ week.add(sum3);
+
+ // 日
+ ArrayList<Double> days = new ArrayList<>();
+ Double thisDay=0.0;
+ for (int i = 6; i >= 0; i--) {
+ String s = minNow.minusDays(i).toString();
+ String s9 = maxNow.minusDays(i).toString();
+ List<TBackRecord> day = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().between(TBackRecord::getTime, s,s9).in(TBackRecord::getUserId,userPt));
+ double sum4 = day.stream().mapToDouble(TBackRecord::getMoney).sum();
+ days.add(sum4);
+ if(i==0){
+ thisDay=sum4;
+ }
+ }
+
+ map.put("thisDay",thisDay);
+ map.put("yearData",years);
+ map.put("monthData",months);
+ map.put("weekData",week);
+ map.put("dayData",days);
+
+ return map;
+ }
/**
* 跳转到运营商统计数据页面
*/
@RequestMapping("/operator")
public String operator(Model model) {
Integer objectType = UserExt.getUser().getObjectType();
- List<CityManager> cityManagers = cityManagerClient.listAll();
- HashSet<String> city = new HashSet<>();
- List<CityManager> list = new ArrayList<>();
- for (CityManager cityManager : cityManagers) {
- if (!city.contains(cityManager.getCity())){
- city.add(cityManager.getCity());
- list.add(cityManager);
- }
- }
+ List<TOperator> list = operatorService.list(new LambdaQueryWrapper<TOperator>().ne(TOperator::getState, 3));
model.addAttribute("list",list);
model.addAttribute("objectType",objectType);
return PREFIX + "operatorIncome.html";
}
+
+ /**
+ * 运营商
+ * @param
+ * @return
+ */
+ @ResponseBody
+ @RequestMapping("/selectYys")
+ public Object selectYys(Integer id,String time) {
+ HashMap<String, Object> map = new HashMap<>();
+ // 找出平台的用户
+ List<User> list = sysUserService.list(new LambdaQueryWrapper<User>().eq(User::getObjectType, 2));
+ List<Integer> ids = list.stream().map(User::getId).collect(Collectors.toList());
+ List<Integer> userIds = appUserClient.getUserYYs(id);
+ QueryDataFee queryDataFee = new QueryDataFee(time, userIds);
+ // 会员费
+ HashMap<String, Object> map1 = appUserClient.queryFee(queryDataFee);
+ Object fee1 = map1.get("fee1");
+
+ map.put("fee1",fee1);
+ //玩湃比
+ Object fee2 = map1.get("fee2");
+ map.put("fee2",fee2);
+ // 课程收入
+ HashMap<String, Object> map3 = courseClient.queryFee(queryDataFee);
+ map.put("fee3",map3.get("fee"));
+ Object data = map3.get("data");
+ map.put("courseData",data);
+
+
+ // 赛事收入
+ Double aDouble1 = competitionClient.queryFee(queryDataFee);
+ map.put("fee4",aDouble1);
+
+ // 订场
+ if(ids.size()==0){
+ ids.add(-1);
+ }
+ LambdaQueryWrapper<SiteBooking> vipPaymentLambdaQueryWrapper = new LambdaQueryWrapper<>();
+ if(ToolUtil.isNotEmpty(time)){
+ String stime = time.split(" - ")[0]+" 00:00:00";
+ String etime = time.split(" - ")[1]+" 23:59:59";
+ vipPaymentLambdaQueryWrapper.between(SiteBooking::getInsertTime,stime,etime);
+ }
+ if(userIds.size()==0){
+ userIds.add(-1);
+ }
+ vipPaymentLambdaQueryWrapper.in(SiteBooking::getAppUserId,userIds);
+ vipPaymentLambdaQueryWrapper.ne(SiteBooking::getStatus,0);
+ ArrayList<Integer> objects = new ArrayList<>();
+ objects.add(1);
+ objects.add(2);
+ vipPaymentLambdaQueryWrapper.in(SiteBooking::getPayType,objects);
+ List<SiteBooking> list1 = siteBookingService.list(vipPaymentLambdaQueryWrapper);
+ double sum = list1.stream().mapToDouble(SiteBooking::getPayMoney).sum();
+ map.put("fee5",sum);
+
+
+ List<Integer> collect = list1.stream().map(SiteBooking::getSiteId).collect(Collectors.toList());
+ if(collect.size()==0){
+ collect.add(-1);
+ }
+ List<TSite> list3 = siteService.list(new LambdaQueryWrapper<TSite>().in(TSite::getId, collect));
+ for (SiteBooking siteBooking : list1) {
+ for (TSite tSite : list3) {
+ if(siteBooking.getSiteId().equals(tSite.getId())){
+ siteBooking.setType(tSite.getSiteTypeId());
+ }
+ }
+ }
+
+
+ List<TSiteType> list2 = siteTypeService.list();
+
+ List<Map<String,Object>> mapList = new ArrayList<>();
+
+ for (TSiteType tSiteType : list2) {
+ HashMap<String, Object> map2 = new HashMap<>();
+ map2.put("name",tSiteType.getName());
+ double a =0;
+ for (SiteBooking siteBooking : list1) {
+ if(tSiteType.getId().equals(siteBooking.getType())){
+ a += siteBooking.getPayMoney();
+ }
+ }
+ map2.put("value",a);
+ mapList.add(map2);
+ }
+ map.put("siteData",mapList);
+
+
+ // 商品 门票
+ HashMap<String, Object> map2 = pointMercharsClient.queryFee(queryDataFee);
+ Object all = map2.get("all");
+ Object day = map2.get("day");
+ Object month = map2.get("month");
+ Object quarter = map2.get("quarter");
+ Object year = map2.get("year");
+ map.put("fee7",all);
+ map.put("dayone",day);
+ map.put("monthone",month);
+ map.put("quarterone",quarter);
+ map.put("yearone",year);
+
+ return map;
+ }
+
+
+
+ /**
+ * 运营商
+ * @param
+ * @return
+ */
+ @ResponseBody
+ @RequestMapping("/selectStore")
+ public Object selectStore(Integer id,String time) {
+ HashMap<String, Object> map = new HashMap<>();
+ // 找出平台的用户
+ List<User> list = sysUserService.list(new LambdaQueryWrapper<User>().eq(User::getObjectType, 2));
+ List<Integer> ids = list.stream().map(User::getId).collect(Collectors.toList());
+ List<Integer> userIds = appUserClient.getUserStore(id);
+ QueryDataFee queryDataFee = new QueryDataFee(time, userIds);
+ // 会员费
+ HashMap<String, Object> map1 = appUserClient.queryFee(queryDataFee);
+ Object fee1 = map1.get("fee1");
+
+ map.put("fee1",fee1);
+ //玩湃比
+ Object fee2 = map1.get("fee2");
+ map.put("fee2",fee2);
+ // 课程收入
+ HashMap<String, Object> map3 = courseClient.queryFee(queryDataFee);
+ map.put("fee3",map3.get("fee"));
+ Object data = map3.get("data");
+ map.put("courseData",data);
+
+
+ // 赛事收入
+ Double aDouble1 = competitionClient.queryFee(queryDataFee);
+ map.put("fee4",aDouble1);
+
+ // 订场
+ if(ids.size()==0){
+ ids.add(-1);
+ }
+ LambdaQueryWrapper<SiteBooking> vipPaymentLambdaQueryWrapper = new LambdaQueryWrapper<>();
+ if(ToolUtil.isNotEmpty(time)){
+ String stime = time.split(" - ")[0]+" 00:00:00";
+ String etime = time.split(" - ")[1]+" 23:59:59";
+ vipPaymentLambdaQueryWrapper.between(SiteBooking::getInsertTime,stime,etime);
+ }
+ if(userIds.size()==0){
+ userIds.add(-1);
+ }
+ vipPaymentLambdaQueryWrapper.in(SiteBooking::getAppUserId,userIds);
+ vipPaymentLambdaQueryWrapper.ne(SiteBooking::getStatus,0);
+ ArrayList<Integer> objects = new ArrayList<>();
+ objects.add(1);
+ objects.add(2);
+ vipPaymentLambdaQueryWrapper.in(SiteBooking::getPayType,objects);
+ List<SiteBooking> list1 = siteBookingService.list(vipPaymentLambdaQueryWrapper);
+ double sum = list1.stream().mapToDouble(SiteBooking::getPayMoney).sum();
+ map.put("fee5",sum);
+
+
+ List<Integer> collect = list1.stream().map(SiteBooking::getSiteId).collect(Collectors.toList());
+ if(collect.size()==0){
+ collect.add(-1);
+ }
+ List<TSite> list3 = siteService.list(new LambdaQueryWrapper<TSite>().in(TSite::getId, collect));
+ for (SiteBooking siteBooking : list1) {
+ for (TSite tSite : list3) {
+ if(siteBooking.getSiteId().equals(tSite.getId())){
+ siteBooking.setType(tSite.getSiteTypeId());
+ }
+ }
+ }
+
+
+ List<TSiteType> list2 = siteTypeService.list();
+
+ List<Map<String,Object>> mapList = new ArrayList<>();
+
+ for (TSiteType tSiteType : list2) {
+ HashMap<String, Object> map2 = new HashMap<>();
+ map2.put("name",tSiteType.getName());
+ double a =0;
+ for (SiteBooking siteBooking : list1) {
+ if(tSiteType.getId().equals(siteBooking.getType())){
+ a += siteBooking.getPayMoney();
+ }
+ }
+ map2.put("value",a);
+ mapList.add(map2);
+ }
+ map.put("siteData",mapList);
+
+
+ // 商品 门票
+ HashMap<String, Object> map2 = pointMercharsClient.queryFee(queryDataFee);
+ Object all = map2.get("all");
+ Object day = map2.get("day");
+ Object month = map2.get("month");
+ Object quarter = map2.get("quarter");
+ Object year = map2.get("year");
+ map.put("fee7",all);
+ map.put("dayone",day);
+ map.put("monthone",month);
+ map.put("quarterone",quarter);
+ map.put("yearone",year);
+
+ return map;
+ }
+
+
/**
* 跳转到门店统计数据页面
*/
@RequestMapping("/store")
public String store(Model model) {
Integer objectType = UserExt.getUser().getObjectType();
- List<CityManager> cityManagers = cityManagerClient.listAll();
- HashSet<String> city = new HashSet<>();
- List<CityManager> list = new ArrayList<>();
- for (CityManager cityManager : cityManagers) {
- if (!city.contains(cityManager.getCity())){
- city.add(cityManager.getCity());
- list.add(cityManager);
- }
- }
+ List<TStore> list = storeService.list(new LambdaQueryWrapper<TStore>().eq(TStore::getState, 1));
model.addAttribute("list",list);
model.addAttribute("objectType",objectType);
return PREFIX + "storeIncome.html";
@@ -657,6 +979,85 @@
map.put("data2",objects3);
return map;
}
+ @RequestMapping("/stuUserData")
+ @ResponseBody
+ public Object stuUserData() {
+ ArrayList<Integer> objects = new ArrayList<>();
+ objects.add(1);
+ HashMap<String, Object> map = appUserClient.queryUserAge1();
+
+ return map;
+ }
+ @RequestMapping("/stuUserDataYys")
+ @ResponseBody
+ public Object stuUserDataYys(Integer id) {
+ ArrayList<Integer> objects = new ArrayList<>();
+ objects.add(1);
+ HashMap<String, Object> map = appUserClient.queryUserAgeYys(id);
+
+ return map;
+ }
+ @RequestMapping("/stuUserDataStore")
+ @ResponseBody
+ public Object stuUserDataStore(Integer id) {
+ ArrayList<Integer> objects = new ArrayList<>();
+ objects.add(1);
+ HashMap<String, Object> map = appUserClient.queryUserAgeStore(id);
+
+ return map;
+ }
+ @RequestMapping("/selectYysJx")
+ @ResponseBody
+ public Object selectYysJx(Integer id) {
+ ArrayList<Integer> objects = new ArrayList<>();
+ objects.add(1);
+ HashMap<String, Object> map1 = appUserClient.queryUserAgeYys1(id);
+ // 找出运营商的用户
+ List<Integer> userYYs = appUserClient.getUserYYs(id);
+
+
+ List<Map<String, Object>> mapList = coursePackagePaymentClient.queryCourseData(userYYs);
+ ArrayList<Object> objects2 = new ArrayList<>();
+ ArrayList<Object> objects3 = new ArrayList<>();
+ for (Map<String, Object> map : mapList) {
+ Object name = map.get("name");
+ Object value = map.get("value");
+ objects2.add(name);
+ objects3.add(value);
+ }
+ HashMap<String, Object> map = new HashMap<>();
+ map1.put("data1",objects2);
+ map1.put("data2",objects3);
+
+
+ return map1;
+ }
+ @RequestMapping("/selectStoreJx")
+ @ResponseBody
+ public Object selectStoreJx(Integer id) {
+ ArrayList<Integer> objects = new ArrayList<>();
+ objects.add(1);
+ HashMap<String, Object> map1 = appUserClient.queryUserAgeStore1(id);
+ // 找出运营商的用户
+ List<Integer> userYYs = appUserClient.getUserYYs(id);
+
+
+ List<Map<String, Object>> mapList = coursePackagePaymentClient.queryCourseData(userYYs);
+ ArrayList<Object> objects2 = new ArrayList<>();
+ ArrayList<Object> objects3 = new ArrayList<>();
+ for (Map<String, Object> map : mapList) {
+ Object name = map.get("name");
+ Object value = map.get("value");
+ objects2.add(name);
+ objects3.add(value);
+ }
+ HashMap<String, Object> map = new HashMap<>();
+ map1.put("data1",objects2);
+ map1.put("data2",objects3);
+
+
+ return map1;
+ }
}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TBackRecord.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TBackRecord.java
new file mode 100644
index 0000000..b3c3f05
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TBackRecord.java
@@ -0,0 +1,46 @@
+package com.dsh.guns.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 退费记录
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-10-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_back_record")
+public class TBackRecord extends Model<TBackRecord> {
+
+ private static final long serialVersionUID=1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @TableField("userId")
+ private Integer userId;
+
+ private Double money=0.0;
+
+ private LocalDateTime time;
+
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/TBackRecordService.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/TBackRecordService.java
new file mode 100644
index 0000000..5d01eb6
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/TBackRecordService.java
@@ -0,0 +1,17 @@
+package com.dsh.guns.modular.system.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.dsh.guns.modular.system.model.TBackRecord;
+
+/**
+ * <p>
+ * 退费记录 服务类
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-10-09
+ */
+public interface TBackRecordService extends IService<TBackRecord> {
+
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TBackRecordServiceImpl.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TBackRecordServiceImpl.java
new file mode 100644
index 0000000..d542177
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TBackRecordServiceImpl.java
@@ -0,0 +1,21 @@
+package com.dsh.guns.modular.system.service.impl;
+
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dsh.course.mapper.TBackRecordMapper;
+import com.dsh.guns.modular.system.model.TBackRecord;
+import com.dsh.guns.modular.system.service.TBackRecordService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 退费记录 服务实现类
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-10-09
+ */
+@Service
+public class TBackRecordServiceImpl extends ServiceImpl<TBackRecordMapper, TBackRecord> implements TBackRecordService {
+
+}
diff --git a/cloud-server-management/src/main/resources/mapper/TBackRecordMapper.xml b/cloud-server-management/src/main/resources/mapper/TBackRecordMapper.xml
new file mode 100644
index 0000000..02e2eca
--- /dev/null
+++ b/cloud-server-management/src/main/resources/mapper/TBackRecordMapper.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dsh.course.mapper.TBackRecordMapper">
+
+
+</mapper>
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 ca25adc..e07d1f4 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
@@ -41,6 +41,7 @@
<div class="ibox float-e-margins">
<div class="ibox-content">
<div class="form-horizontal">
+
<div class="row">
<br class="col-sm-10">
@if(objectType==1){
@@ -48,32 +49,20 @@
<div class="input-group">
<div class="input-group-btn open">
<button data-toggle="dropdown" class="btn btn-white dropdown-toggle" type="button" aria-expanded="true">
- 选择城市
+ 选择运营商
</button>
</div>
- <select class="form-control" id="cCode" onchange="TSite.oneChangeNext(1)">
+ <select class="form-control" id="cCode" >
<option value="">请选择</option>
@for(obj in list){
- <option value="${obj.cityCode}">${obj.city}</option>
+ <option value="${obj.id}">${obj.name}</option>
@}
</select>
</div>
</div>
@}
@if(objectType==1){
- <div class="col-sm-3">
- <div class="input-group">
- <div class="input-group-btn open">
- <button data-toggle="dropdown" class="btn btn-white dropdown-toggle" type="button" aria-expanded="true">
- 选择账号
- </button>
- </div>
- <select class="form-control" id="account" >
- <option value="">请选择账号</option>
- </select>
- </div>
- </div>
- <#button name="搜索" icon="fa-search" clickFun="TCompetition.search()"/>
+ <#button name="搜索" icon="fa-search" clickFun="search()"/>
@}
</br>
</br>
@@ -106,21 +95,19 @@
</br>
<div class="col-sm-3" style="width: 400px;display: flex">
<#TimeCon id="beginTime" name="时间段:" isTime="false"/>
- <#button name="搜索" icon="fa-search" clickFun="TCompetition.search()"/>
+ <#button name="搜索" icon="fa-search" clickFun="search()"/>
</div>
</div>
<div class="col-sm-10" style="width: 1500px" >
</br>
</br>
- <span>会员费收入:</span>
- <span>玩湃币充值收入:</span>
- <span>课程收入:</span>
- <span>活动收入:</span>
- <span>订场收入:</span>
- <span>赛事收入:</span>
- <span>商品收入:</span>
- <span>其他收入:</span>
+ <span>会员费收入:<label id="fee1">0.0</label></span>
+ <span>玩湃币充值收入:<label id="fee2">0.0</label></span>
+ <span>课程收入:<label id="fee3">0.0</label></span>
+ <span>活动/赛事收入:<label id="fee4">0.0</label></span>
+ <span>订场收入:<label id="fee5">0.0</label></span>
+ <span>商品收入:<label id="fee7">0.0</label></span>
</br>
</br>
</br>
@@ -279,6 +266,49 @@
<script src="${ctxPath}/modular/system/dataStatistics/tSite.js"></script>
<script src="${ctxPath}/static/js/plugins/switchery/switchery.js"></script>
<script>
+
+
+ function oneChangeNext(e){
+ var oneId=$(e).val();
+ var ajax = new $ax(Feng.ctxPath + "/tCity/onChange", function(data){
+ if(data!=null){
+ if(language==1){
+ var content='<option value="">选择市</option>';
+ }else if(language==2){
+ var content='<option value="">Choose your franchisee</option>';
+ }else {
+ var content='<option value="">Pilih franchisee Anda</option>';
+ }
+ $.each(data, function(k,v) {
+ content += "<option value='"+v.code+"'>"+v.name+"</option>";
+ });
+ $("#cCode").empty().append(content);
+ }
+ });
+ ajax.set("oneId",oneId);
+ ajax.start();
+ }
+
+
+
+ function search(){
+
+ if(cutType==1){
+ srtj()
+ }
+
+ if(cutType==2){
+ yytj()
+ }
+ if(cutType==3){
+ jxtj()
+ }
+ }
+
+
+ let cutType=1;
+
+
laydate.render({
elem: '#beginTime'
, trigger: 'click'
@@ -709,6 +739,7 @@
myChart7.setOption(option7);
});
function getContent(type){
+ cutType=type
//设置点击字体颜色效果
for(var i=1;i<4;i++){
document.getElementById("div"+i).style.color="#888888";//
@@ -727,7 +758,400 @@
$("#ensure").show();
$("#nextB").hide();
}
+
+
+ if(type==1){
+ srtj()
+ }
+
+
+
+ if(type==2){
+ yytj()
+ }
+
+ if(type==3){
+ jxtj()
+ }
+
+
+
+
}
+ function srtj() {
+ var id = $("#cCode").val()
+ var beginTime = $("#beginTime").val()
+ console.log(id)
+ if(id==""){
+ Feng.info("请先选择运营商");
+ return;
+ }
+ var ajax = new $ax(Feng.ctxPath + "/data/selectYys", function (data) {
+
+ $("#fee1").text(data.fee1)
+ $("#fee2").text(data.fee2)
+ $("#fee3").text(data.fee3)
+ $("#fee4").text(data.fee4)
+ $("#fee5").text(data.fee5)
+ $("#fee7").text(data.fee7)
+ $("#day").val(data.dayone)
+ $("#month").val(data.monthone)
+ $("#quarter").val(data.quarterone)
+ $("#year").val(data.yearone)
+
+
+
+
+
+ var chartDom = document.getElementById('cookieTicket');
+ var myChart = echarts.init(chartDom);
+ var option;
+ option = {
+ title: {
+ text: '门票收入',
+ subtext: '',
+ left: 'center'
+ },
+ tooltip: {
+ trigger: 'item'
+ },
+
+ series: [
+ {
+ name: 'Access From',
+ type: 'pie',
+ radius: '50%',
+ data: [
+ { value: data.dayone, name: '日卡' },
+ { value: data.monthone, name: '月卡' },
+ { value: data.quarterone, name: '季卡' },
+ { value: data.yearone, name: '年卡' },
+
+ ],
+ emphasis: {
+ itemStyle: {
+ shadowBlur: 10,
+ shadowOffsetX: 0,
+ shadowColor: 'rgba(0, 0, 0, 0.5)'
+ }
+ }
+ }
+ ]
+ };
+ myChart.setOption(option);
+
+ var chartDom = document.getElementById('cookieCourse');
+ var myChart = echarts.init(chartDom);
+ var option;
+ option = {
+ title: {
+ text: '课程收入',
+ subtext: '',
+ left: 'center'
+ },
+ tooltip: {
+ trigger: 'item'
+ },
+
+ series: [
+ {
+ name: 'Access From',
+ type: 'pie',
+ radius: '50%',
+ data: data.courseData,
+ emphasis: {
+ itemStyle: {
+ shadowBlur: 10,
+ shadowOffsetX: 0,
+ shadowColor: 'rgba(0, 0, 0, 0.5)'
+ }
+ }
+ }
+ ]
+ };
+ myChart.setOption(option);
+
+
+ var chartDom = document.getElementById('cookieBooking');
+ var myChart = echarts.init(chartDom);
+ var option;
+ option = {
+ title: {
+ text: '订场收入',
+ subtext: '',
+ left: 'center'
+ },
+ tooltip: {
+ trigger: 'item'
+ },
+
+ series: [
+ {
+ name: 'Access From',
+ type: 'pie',
+ radius: '50%',
+ data: data.siteData,
+ emphasis: {
+ itemStyle: {
+ shadowBlur: 10,
+ shadowOffsetX: 0,
+ shadowColor: 'rgba(0, 0, 0, 0.5)'
+ }
+ }
+ }
+ ]
+ };
+ myChart.setOption(option);
+
+
+
+
+
+ }, function (data) {
+
+ });
+ ajax.set("id",id);
+ ajax.set("time",beginTime);
+ ajax.start();
+
+ }
+
+ function jxtj() {
+ var id = $("#cCode").val()
+ console.log(id,333)
+ if(id==""){
+ Feng.info("请先选择运营商");
+ return;
+ }
+ var ajax = new $ax(Feng.ctxPath + "/data/selectYysJx", function (data) {
+ console.log(data)
+
+ var chartDom = document.getElementById('cookieTeachAge');
+ var myChart = echarts.init(chartDom);
+ var option;
+ option = {
+ title: {
+ text: '年龄分布',
+ subtext: '',
+ left: 'center'
+ },
+ tooltip: {
+ trigger: 'item'
+ },
+
+ series: [
+ {
+ name: 'Access From',
+ type: 'pie',
+ radius: '50%',
+ data: [
+ { value: data.age1, name: '0-7岁' },
+ { value: data.age2, name: '8-10岁' },
+ { value:data.age3, name: '11-12岁' },
+ { value: data.age4, name: '13岁以上' },
+ ],
+ emphasis: {
+ itemStyle: {
+ shadowBlur: 10,
+ shadowOffsetX: 0,
+ shadowColor: 'rgba(0, 0, 0, 0.5)'
+ }
+ }
+ }
+ ]
+ };
+ myChart.setOption(option);
+
+
+
+ var chartDom = document.getElementById('cookieTeachGender');
+ var myChart = echarts.init(chartDom);
+ var option;
+ option = {
+ title: {
+ text: '性别分布',
+ subtext: '',
+ left: 'center'
+ },
+ tooltip: {
+ trigger: 'item'
+ },
+
+ series: [
+ {
+ name: 'Access From',
+ type: 'pie',
+ radius: '50%',
+ data: [
+ { value: data.boy, name: '男' },
+ { value: data.girl, name: '女' },
+
+ ],
+ emphasis: {
+ itemStyle: {
+ shadowBlur: 10,
+ shadowOffsetX: 0,
+ shadowColor: 'rgba(0, 0, 0, 0.5)'
+ }
+ }
+ }
+ ]
+ };
+ myChart.setOption(option);
+
+
+
+ var chartDom = document.getElementById('cookieTeachCourse');
+ var myChart = echarts.init(chartDom);
+ var option;
+
+ option = {
+ xAxis: {
+ type: 'category',
+ data: data.data1
+ },
+ yAxis: {
+ type: 'value'
+ },
+ series: [
+ {
+ data: data.data2,
+ type: 'bar'
+ }
+ ]
+ };
+ myChart.setOption(option);
+
+
+
+
+
+ }, function (data) {
+
+ });
+ ajax.set("id",id);
+ ajax.start();
+
+ }
+
+ function yytj() {
+ let id = $("#cCode").val()
+ console.log(id)
+ if(id==''){
+ Feng.info("请先选择运营商");
+ return;
+ }
+ var ajax = new $ax(Feng.ctxPath + "/data/stuUserDataYys", function (data) {
+ console.log(data,323232)
+ var chartDom = document.getElementById('cookieAge');
+ var myChart = echarts.init(chartDom);
+ var option;
+ option = {
+ title: {
+ text: '年龄分布',
+ subtext: '',
+ left: 'center'
+ },
+ tooltip: {
+ trigger: 'item'
+ },
+
+ series: [
+ {
+ name: 'Access From',
+ type: 'pie',
+ radius: '50%',
+ data: [
+ { value: data.age1, name: '0-12岁' },
+ { value: data.age2, name: '13-18岁' },
+ { value: data.age3, name: '19-25岁' },
+ { value: data.age4, name: '12-35岁' },
+ { value: data.age5, name: '36-50岁' },
+ { value: data.age6, name: '51岁以上' },
+
+ ],
+ emphasis: {
+ itemStyle: {
+ shadowBlur: 10,
+ shadowOffsetX: 0,
+ shadowColor: 'rgba(0, 0, 0, 0.5)'
+ }
+ }
+ }
+ ]
+ };
+ myChart.setOption(option);
+
+
+
+ var chartDom = document.getElementById('cookieGender');
+ var myChart = echarts.init(chartDom);
+ var option;
+ option = {
+ title: {
+ text: '性别分布',
+ subtext: '',
+ left: 'center'
+ },
+ tooltip: {
+ trigger: 'item'
+ },
+
+ series: [
+ {
+ name: 'Access From',
+ type: 'pie',
+ radius: '50%',
+ data: [
+ { value: data.boy, name: '男' },
+ { value: data.girl, name: '女' },
+
+ ],
+ emphasis: {
+ itemStyle: {
+ shadowBlur: 10,
+ shadowOffsetX: 0,
+ shadowColor: 'rgba(0, 0, 0, 0.5)'
+ }
+ }
+ }
+ ]
+ };
+ myChart.setOption(option);
+
+
+
+
+ var chartDom = document.getElementById('city');
+ var myChart = echarts.init(chartDom);
+ var option;
+
+ option = {
+ xAxis: {
+ type: 'category',
+ data: data.cityData
+ },
+ yAxis: {
+ type: 'value'
+ },
+ series: [
+ {
+ data: data.cityNum,
+ type: 'bar'
+ }
+ ]
+ };
+ myChart.setOption(option);
+
+
+
+ }, function (data) {
+
+ });
+ ajax.set("id",id);
+ ajax.start();
+ }
+
function getContent1(type){
//设置点击字体颜色效果
for(var i=1;i<3;i++){
@@ -782,8 +1206,10 @@
type: 'pie',
radius: '50%',
data: [
- { value: 1048, name: '年票' },
- { value: 735, name: '亲子票' },
+ { value: 1048, name: '日卡' },
+ { value: 735, name: '月卡' },
+ { value: 735, name: '季卡' },
+ { value: 735, name: '年卡' },
],
emphasis: {
@@ -892,43 +1318,7 @@
type: 'pie',
radius: '50%',
data: [
- { value: 1048, name: '30-35' },
- { value: 735, name: '12-18' },
-
- ],
- emphasis: {
- itemStyle: {
- shadowBlur: 10,
- shadowOffsetX: 0,
- shadowColor: 'rgba(0, 0, 0, 0.5)'
- }
- }
- }
- ]
- };
- myChart.setOption(option);
- });
- $(function(){
- var chartDom = document.getElementById('cookieTeachAge');
- var myChart = echarts.init(chartDom);
- var option;
- option = {
- title: {
- text: '年龄分布',
- subtext: '',
- left: 'center'
- },
- tooltip: {
- trigger: 'item'
- },
-
- series: [
- {
- name: 'Access From',
- type: 'pie',
- radius: '50%',
- data: [
- { value: 1048, name: '30-35' },
+ { value: 1048, name: '30-351' },
{ value: 735, name: '12-18' },
],
@@ -975,64 +1365,6 @@
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
- }
- ]
- };
- myChart.setOption(option);
- });
- $(function(){
- var chartDom = document.getElementById('cookieTeachGender');
- var myChart = echarts.init(chartDom);
- var option;
- option = {
- title: {
- text: '性别分布',
- subtext: '',
- left: 'center'
- },
- tooltip: {
- trigger: 'item'
- },
-
- series: [
- {
- name: 'Access From',
- type: 'pie',
- radius: '50%',
- data: [
- { value: 1048, name: '男' },
- { value: 735, name: '女' },
-
- ],
- emphasis: {
- itemStyle: {
- shadowBlur: 10,
- shadowOffsetX: 0,
- shadowColor: 'rgba(0, 0, 0, 0.5)'
- }
- }
- }
- ]
- };
- myChart.setOption(option);
- });
- $(function(){
- var chartDom = document.getElementById('city');
- var myChart = echarts.init(chartDom);
- var option;
-
- option = {
- xAxis: {
- type: 'category',
- data: ['北京', '上海', '广东', '深圳', '成都', '曹县', '奥里给']
- },
- yAxis: {
- type: 'value'
- },
- series: [
- {
- data: [120, 200, 150, 80, 70, 110, 130],
- type: 'bar'
}
]
};
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 8ccd20e..7de5bb6 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
@@ -115,10 +115,10 @@
<div class="col-sm-10" style="width: 1500px" >
</br>
</br>
- <span id="yearRefund">本年退费额度:</span>
- <span id="monthRefund">本月退费额度:</span>
- <span id="weekRefund">本周退费额度:</span>
- <span id="todayRefund">本日退费额度:</span>
+ <span id="yearRefund">本年退费额度:<span id="back1"></span></span>
+ <span id="monthRefund">本月退费额度:<span id="back2"></span></span>
+ <span id="weekRefund">本周退费额度:<span id="back3"></span></span>
+ <span id="todayRefund">本日退费额度:<span id="back4"></span></span>
</br>
</br>
<div id="refund" style="width: 1280px;height:500px;"></div>
@@ -385,9 +385,9 @@
ajax.start();
}
var ans = [];
- var weekX = [];
+ var weekX = ["1","2","上周","本周"];
var monthX = ["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"];
- var yearX = ["2023年","2024年","2025年","2026年","2027年","2028年"];
+ var yearX = [];
var timeX = [];
var dataX = [];
// 创建一个日期对象
@@ -423,6 +423,9 @@
getContent1(1);
getContent2(1);
var ajax = new $ax(Feng.ctxPath + "/data/getIncomeData", function(resp){
+ yearX=resp.year
+
+
var list = resp.yearMount;
console.log(list);
var t1 = document.getElementById("totalIncome");
@@ -664,59 +667,78 @@
var myChart6 = echarts.init(document.getElementById('teach'));
var myChart7 = echarts.init(document.getElementById('courseData'));
- option1 = {
- 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]
+
+ var ajax3 = new $ax(Feng.ctxPath + "/data/backPt", function(data){
+ $("#back1").text(data.thisYear);
+ $("#back2").text(data.thisMonth);
+ $("#back3").text(data.thisWeek);
+ $("#back4").text(data.thisDay);
+ option1 = {
+
+ tooltip: {
+ trigger: 'axis'
},
- {
- name: '月度退费',
- type: 'line',
- stack: 'Total',
- data: [220, 182, 191, 234, 290, 330, 310, 190, 210, 330, 410, 160]
+ legend: {
+
+ data: ['年度退费', '月度退费','周度退费','日度退费'],
+ icon: 'stack',
+ selectedMode: 'single', // 单选
+ selected: {
+ 年度会员数: true,
+ 月度会员数: false,
+ 周度会员数: false,
+ 日度会员数: false
+ }
},
- {
- name: '周度退费',
- type: 'line',
- stack: 'Total',
- data: [150, 232, 201, 154, 190, 330, 410, 160, 210, 195, 210, 188]
+ grid: {
+ left: '3%',
+ right: '4%',
+ bottom: '3%',
+ containLabel: true
},
- {
- name: '日度退费',
- type: 'line',
- stack: 'Total',
- data: [320, 332, 301, 334, 390, 330, 320, 10, 195, 145, 188, 160]
- }
- ]
- };
+ 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.weekData
+ },
+ {
+ name: '日度退费',
+ type: 'line',
+ stack: 'Total',
+ data: data.dayData
+ }
+ ]
+
+ };
+ });
+ ajax3.start();
option4 = {
@@ -927,6 +949,22 @@
}
myChart.setOption(options, true)
})
+
+
+ myChart1.on('legendselectchanged', obj => {
+ var options = myChart1.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","上周","本周"]
+ } else if (obj.name == '日度退费') {
+ options.xAxis[0].data = dataX
+ }
+ myChart1.setOption(options, true)
+ })
myChart2.on('legendselectchanged', obj => {
var options = myChart2.getOption()
//这里是选择切换什么样的x轴,那么他会进行对Y值的切换
@@ -941,7 +979,6 @@
}
myChart2.setOption(options, true)
});
-
myChart3.on('legendselectchanged', obj => {
var options = myChart3.getOption()
//这里是选择切换什么样的x轴,那么他会进行对Y值的切换
@@ -984,6 +1021,117 @@
}else{
$("#ensure").show();
$("#nextB").hide();
+ }
+
+ if(type==2){
+ var ajax = new $ax(Feng.ctxPath + "/data/stuUserData", function (data) {
+ console.log(data,323232)
+ var chartDom = document.getElementById('cookieAge');
+ var myChart = echarts.init(chartDom);
+ var option;
+ option = {
+ title: {
+ text: '年龄分布',
+ subtext: '',
+ left: 'center'
+ },
+ tooltip: {
+ trigger: 'item'
+ },
+
+ series: [
+ {
+ name: 'Access From',
+ type: 'pie',
+ radius: '50%',
+ data: [
+ { value: data.age1, name: '0-12岁' },
+ { value: data.age2, name: '13-18岁' },
+ { value: data.age3, name: '19-25岁' },
+ { value: data.age4, name: '12-35岁' },
+ { value: data.age5, name: '36-50岁' },
+ { value: data.age6, name: '51岁以上' },
+
+ ],
+ emphasis: {
+ itemStyle: {
+ shadowBlur: 10,
+ shadowOffsetX: 0,
+ shadowColor: 'rgba(0, 0, 0, 0.5)'
+ }
+ }
+ }
+ ]
+ };
+ myChart.setOption(option);
+
+
+
+ var chartDom = document.getElementById('cookieGender');
+ var myChart = echarts.init(chartDom);
+ var option;
+ option = {
+ title: {
+ text: '性别分布',
+ subtext: '',
+ left: 'center'
+ },
+ tooltip: {
+ trigger: 'item'
+ },
+
+ series: [
+ {
+ name: 'Access From',
+ type: 'pie',
+ radius: '50%',
+ data: [
+ { value: data.boy, name: '男' },
+ { value: data.girl, name: '女' },
+
+ ],
+ emphasis: {
+ itemStyle: {
+ shadowBlur: 10,
+ shadowOffsetX: 0,
+ shadowColor: 'rgba(0, 0, 0, 0.5)'
+ }
+ }
+ }
+ ]
+ };
+ myChart.setOption(option);
+
+
+
+
+ var chartDom = document.getElementById('city');
+ var myChart = echarts.init(chartDom);
+ var option;
+
+ option = {
+ xAxis: {
+ type: 'category',
+ data: data.cityData
+ },
+ yAxis: {
+ type: 'value'
+ },
+ series: [
+ {
+ data: data.cityNum,
+ type: 'bar'
+ }
+ ]
+ };
+ myChart.setOption(option);
+
+
+
+ }, function (data) {
+
+ });
+ ajax.start();
}
@@ -1191,44 +1339,6 @@
myChart.setOption(option);
});
$(function(){
- var chartDom = document.getElementById('cookieAge');
- var myChart = echarts.init(chartDom);
- var option;
- option = {
- title: {
- text: '年龄分布',
- subtext: '',
- left: 'center'
- },
- tooltip: {
- trigger: 'item'
- },
-
- series: [
- {
- name: 'Access From',
- type: 'pie',
- radius: '50%',
- data: [
- { value: 1048, name: '0-7岁' },
- { value: 735, name: '8-10岁' },
- { value: 735, name: '11-12岁' },
- { value: 735, name: '13岁以上' },
-
- ],
- emphasis: {
- itemStyle: {
- shadowBlur: 10,
- shadowOffsetX: 0,
- shadowColor: 'rgba(0, 0, 0, 0.5)'
- }
- }
- }
- ]
- };
- myChart.setOption(option);
- });
- $(function(){
var chartDom = document.getElementById('cookieTeachAge');
var myChart = echarts.init(chartDom);
var option;
@@ -1252,42 +1362,6 @@
{ value: $("#age2").val(), name: '8-10岁' },
{ value:$("#age3").val(), name: '11-12岁' },
{ value: $("#age4").val(), name: '13岁以上' },
-
- ],
- emphasis: {
- itemStyle: {
- shadowBlur: 10,
- shadowOffsetX: 0,
- shadowColor: 'rgba(0, 0, 0, 0.5)'
- }
- }
- }
- ]
- };
- myChart.setOption(option);
- });
- $(function(){
- var chartDom = document.getElementById('cookieGender');
- var myChart = echarts.init(chartDom);
- var option;
- option = {
- title: {
- text: '性别分布',
- subtext: '',
- left: 'center'
- },
- tooltip: {
- trigger: 'item'
- },
-
- series: [
- {
- name: 'Access From',
- type: 'pie',
- radius: '50%',
- data: [
- { value: 1048, name: '男' },
- { value: 735, name: '女' },
],
emphasis: {
@@ -1338,34 +1412,6 @@
};
myChart.setOption(option);
});
- $(function(){
- var chartDom = document.getElementById('city');
- var myChart = echarts.init(chartDom);
- var option;
- option = {
- xAxis: {
- type: 'category',
- data: ['北京', '上海', '广东', '深圳', '成都', '曹县', '奥里给']
- },
- yAxis: {
- type: 'value'
- },
- series: [
- {
- data: [120, 200, 150, 80, 70, 110, 130],
- type: 'bar'
- }
- ]
- };
- myChart.setOption(option);
- });
-
- function stuCourseData(){
-
- }
- $(function(){
-
- });
</script>
@}
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 0f10169..5752a43 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
@@ -48,47 +48,23 @@
<div class="input-group">
<div class="input-group-btn open">
<button data-toggle="dropdown" class="btn btn-white dropdown-toggle" type="button" aria-expanded="true">
- 选择城市
+ 选择门店
</button>
</div>
- <select class="form-control" id="cCode" onchange="TSite.oneChangeNext(1)">
+ <select class="form-control" id="cCode" >
<option value="">请选择</option>
@for(obj in list){
- <option value="${obj.cityCode}">${obj.city}</option>
+ <option value="${obj.id}">${obj.name}</option>
@}
</select>
</div>
</div>
@}
@if(objectType==1){
- <div class="col-sm-3">
- <div class="input-group">
- <div class="input-group-btn open">
- <button data-toggle="dropdown" class="btn btn-white dropdown-toggle" type="button" aria-expanded="true">
- 选择账号
- </button>
- </div>
- <select class="form-control" id="account" onchange="TSite.getStore()">
- <option value="">请先选择城市</option>
- </select>
- </div>
- </div>
@}
@if(objectType!=3){
- <div class="col-sm-3">
- <div class="input-group">
- <div class="input-group-btn open">
- <button data-toggle="dropdown" class="btn btn-white dropdown-toggle" type="button" aria-expanded="true">
- 选择门店
- </button>
- </div>
- <select class="form-control" id="store">
- <option value="">请先选择城市</option>
- </select>
- </div>
- </div>
- <#button name="搜索" icon="fa-search" clickFun="TCompetition.search()"/>
+ <#button name="搜索" icon="fa-search" clickFun="search()"/>
@}
</br>
</br>
@@ -121,21 +97,19 @@
</br>
<div class="col-sm-3" style="width: 400px;display: flex">
<#TimeCon id="beginTime" name="时间段:" isTime="false"/>
- <#button name="搜索" icon="fa-search" clickFun="TCompetition.search()"/>
+ <#button name="搜索" icon="fa-search" clickFun="search()"/>
</div>
</div>
<div class="col-sm-10" style="width: 1500px" >
</br>
</br>
- <span>会员费收入:</span>
- <span>玩湃币充值收入:</span>
- <span>课程收入:</span>
- <span>活动收入:</span>
- <span>订场收入:</span>
- <span>赛事收入:</span>
- <span>商品收入:</span>
- <span>其他收入:</span>
+ <span>会员费收入:<label id="fee1">0.0</label></span>
+ <span>玩湃币充值收入:<label id="fee2">0.0</label></span>
+ <span>课程收入:<label id="fee3">0.0</label></span>
+ <span>活动/赛事收入:<label id="fee4">0.0</label></span>
+ <span>订场收入:<label id="fee5">0.0</label></span>
+ <span>商品收入:<label id="fee7">0.0</label></span>
</br>
</br>
</br>
@@ -294,6 +268,403 @@
<script src="${ctxPath}/modular/system/dataStatistics/tSite.js"></script>
<script src="${ctxPath}/static/js/plugins/switchery/switchery.js"></script>
<script>
+
+
+ function search(){
+
+ if(cutType==1){
+ srtj()
+ }
+
+ if(cutType==2){
+ yytj()
+ }
+ if(cutType==3){
+ jxtj()
+ }
+ }
+
+
+ let cutType=1;
+
+
+ function srtj() {
+ var id = $("#cCode").val()
+ var beginTime = $("#beginTime").val()
+ console.log(id)
+ if(id==""){
+ Feng.info("请先选择门店");
+ return;
+ }
+ var ajax = new $ax(Feng.ctxPath + "/data/selectStore", function (data) {
+
+ $("#fee1").text(data.fee1)
+ $("#fee2").text(data.fee2)
+ $("#fee3").text(data.fee3)
+ $("#fee4").text(data.fee4)
+ $("#fee5").text(data.fee5)
+ $("#fee7").text(data.fee7)
+ $("#day").val(data.dayone)
+ $("#month").val(data.monthone)
+ $("#quarter").val(data.quarterone)
+ $("#year").val(data.yearone)
+
+
+
+
+
+ var chartDom = document.getElementById('cookieTicket');
+ var myChart = echarts.init(chartDom);
+ var option;
+ option = {
+ title: {
+ text: '门票收入',
+ subtext: '',
+ left: 'center'
+ },
+ tooltip: {
+ trigger: 'item'
+ },
+
+ series: [
+ {
+ name: 'Access From',
+ type: 'pie',
+ radius: '50%',
+ data: [
+ { value: data.dayone, name: '日卡' },
+ { value: data.monthone, name: '月卡' },
+ { value: data.quarterone, name: '季卡' },
+ { value: data.yearone, name: '年卡' },
+
+ ],
+ emphasis: {
+ itemStyle: {
+ shadowBlur: 10,
+ shadowOffsetX: 0,
+ shadowColor: 'rgba(0, 0, 0, 0.5)'
+ }
+ }
+ }
+ ]
+ };
+ myChart.setOption(option);
+
+ var chartDom = document.getElementById('cookieCourse');
+ var myChart = echarts.init(chartDom);
+ var option;
+ option = {
+ title: {
+ text: '课程收入',
+ subtext: '',
+ left: 'center'
+ },
+ tooltip: {
+ trigger: 'item'
+ },
+
+ series: [
+ {
+ name: 'Access From',
+ type: 'pie',
+ radius: '50%',
+ data: data.courseData,
+ emphasis: {
+ itemStyle: {
+ shadowBlur: 10,
+ shadowOffsetX: 0,
+ shadowColor: 'rgba(0, 0, 0, 0.5)'
+ }
+ }
+ }
+ ]
+ };
+ myChart.setOption(option);
+
+
+ var chartDom = document.getElementById('cookieBooking');
+ var myChart = echarts.init(chartDom);
+ var option;
+ option = {
+ title: {
+ text: '订场收入',
+ subtext: '',
+ left: 'center'
+ },
+ tooltip: {
+ trigger: 'item'
+ },
+
+ series: [
+ {
+ name: 'Access From',
+ type: 'pie',
+ radius: '50%',
+ data: data.siteData,
+ emphasis: {
+ itemStyle: {
+ shadowBlur: 10,
+ shadowOffsetX: 0,
+ shadowColor: 'rgba(0, 0, 0, 0.5)'
+ }
+ }
+ }
+ ]
+ };
+ myChart.setOption(option);
+
+
+
+
+
+ }, function (data) {
+
+ });
+ ajax.set("id",id);
+ ajax.set("time",beginTime);
+ ajax.start();
+
+ }
+
+
+ function yytj() {
+ let id = $("#cCode").val()
+ console.log(id)
+ if(id==''){
+ Feng.info("请先选择门店");
+ return;
+ }
+ var ajax = new $ax(Feng.ctxPath + "/data/stuUserDataStore", function (data) {
+ console.log(data,323232)
+ var chartDom = document.getElementById('cookieAge');
+ var myChart = echarts.init(chartDom);
+ var option;
+ option = {
+ title: {
+ text: '年龄分布',
+ subtext: '',
+ left: 'center'
+ },
+ tooltip: {
+ trigger: 'item'
+ },
+
+ series: [
+ {
+ name: 'Access From',
+ type: 'pie',
+ radius: '50%',
+ data: [
+ { value: data.age1, name: '0-12岁' },
+ { value: data.age2, name: '13-18岁' },
+ { value: data.age3, name: '19-25岁' },
+ { value: data.age4, name: '12-35岁' },
+ { value: data.age5, name: '36-50岁' },
+ { value: data.age6, name: '51岁以上' },
+
+ ],
+ emphasis: {
+ itemStyle: {
+ shadowBlur: 10,
+ shadowOffsetX: 0,
+ shadowColor: 'rgba(0, 0, 0, 0.5)'
+ }
+ }
+ }
+ ]
+ };
+ myChart.setOption(option);
+
+
+
+ var chartDom = document.getElementById('cookieGender');
+ var myChart = echarts.init(chartDom);
+ var option;
+ option = {
+ title: {
+ text: '性别分布',
+ subtext: '',
+ left: 'center'
+ },
+ tooltip: {
+ trigger: 'item'
+ },
+
+ series: [
+ {
+ name: 'Access From',
+ type: 'pie',
+ radius: '50%',
+ data: [
+ { value: data.boy, name: '男' },
+ { value: data.girl, name: '女' },
+
+ ],
+ emphasis: {
+ itemStyle: {
+ shadowBlur: 10,
+ shadowOffsetX: 0,
+ shadowColor: 'rgba(0, 0, 0, 0.5)'
+ }
+ }
+ }
+ ]
+ };
+ myChart.setOption(option);
+
+
+
+
+ var chartDom = document.getElementById('city');
+ var myChart = echarts.init(chartDom);
+ var option;
+
+ option = {
+ xAxis: {
+ type: 'category',
+ data: data.cityData
+ },
+ yAxis: {
+ type: 'value'
+ },
+ series: [
+ {
+ data: data.cityNum,
+ type: 'bar'
+ }
+ ]
+ };
+ myChart.setOption(option);
+
+
+
+ }, function (data) {
+
+ });
+ ajax.set("id",id);
+ ajax.start();
+ }
+
+ function jxtj() {
+ var id = $("#cCode").val()
+ console.log(id,333)
+ if(id==""){
+ Feng.info("请先选择门店");
+ return;
+ }
+ var ajax = new $ax(Feng.ctxPath + "/data/selectStoreJx", function (data) {
+ console.log(data)
+
+ var chartDom = document.getElementById('cookieTeachAge');
+ var myChart = echarts.init(chartDom);
+ var option;
+ option = {
+ title: {
+ text: '年龄分布',
+ subtext: '',
+ left: 'center'
+ },
+ tooltip: {
+ trigger: 'item'
+ },
+
+ series: [
+ {
+ name: 'Access From',
+ type: 'pie',
+ radius: '50%',
+ data: [
+ { value: data.age1, name: '0-7岁' },
+ { value: data.age2, name: '8-10岁' },
+ { value:data.age3, name: '11-12岁' },
+ { value: data.age4, name: '13岁以上' },
+ ],
+ emphasis: {
+ itemStyle: {
+ shadowBlur: 10,
+ shadowOffsetX: 0,
+ shadowColor: 'rgba(0, 0, 0, 0.5)'
+ }
+ }
+ }
+ ]
+ };
+ myChart.setOption(option);
+
+
+
+ var chartDom = document.getElementById('cookieTeachGender');
+ var myChart = echarts.init(chartDom);
+ var option;
+ option = {
+ title: {
+ text: '性别分布',
+ subtext: '',
+ left: 'center'
+ },
+ tooltip: {
+ trigger: 'item'
+ },
+
+ series: [
+ {
+ name: 'Access From',
+ type: 'pie',
+ radius: '50%',
+ data: [
+ { value: data.boy, name: '男' },
+ { value: data.girl, name: '女' },
+
+ ],
+ emphasis: {
+ itemStyle: {
+ shadowBlur: 10,
+ shadowOffsetX: 0,
+ shadowColor: 'rgba(0, 0, 0, 0.5)'
+ }
+ }
+ }
+ ]
+ };
+ myChart.setOption(option);
+
+
+
+ var chartDom = document.getElementById('cookieTeachCourse');
+ var myChart = echarts.init(chartDom);
+ var option;
+
+ option = {
+ xAxis: {
+ type: 'category',
+ data: data.data1
+ },
+ yAxis: {
+ type: 'value'
+ },
+ series: [
+ {
+ data: data.data2,
+ type: 'bar'
+ }
+ ]
+ };
+ myChart.setOption(option);
+
+
+
+
+
+ }, function (data) {
+
+ });
+ ajax.set("id",id);
+ ajax.start();
+
+ }
+
+
+
laydate.render({
elem: '#beginTime'
, trigger: 'click'
@@ -724,6 +1095,8 @@
myChart7.setOption(option7);
});
function getContent(type){
+
+ cutType=type;
//设置点击字体颜色效果
for(var i=1;i<4;i++){
document.getElementById("div"+i).style.color="#888888";//
@@ -742,6 +1115,19 @@
$("#ensure").show();
$("#nextB").hide();
}
+
+ if(type==1){
+ srtj()
+ }
+
+ if(type==2){
+ yytj()
+ }
+
+ if(type==3){
+ jxtj()
+ }
+
}
function getContent1(type){
//设置点击字体颜色效果
@@ -797,8 +1183,10 @@
type: 'pie',
radius: '50%',
data: [
- { value: 1048, name: '年票' },
- { value: 735, name: '亲子票' },
+ { value: 0, name: '日卡' },
+ { value: 0, name: '月卡' },
+ { value: 0, name: '季卡' },
+ { value: 0, name: '年卡' },
],
emphasis: {
@@ -833,9 +1221,9 @@
type: 'pie',
radius: '50%',
data: [
- { value: 1048, name: '篮球课' },
- { value: 735, name: '羽毛课' },
- { value: 735, name: '足球课' },
+ { value: 0, name: '篮球课' },
+ { value: 0, name: '羽毛课' },
+ { value: 0, name: '足球课' },
],
emphasis: {
@@ -870,9 +1258,9 @@
type: 'pie',
radius: '50%',
data: [
- { value: 1048, name: '激战' },
- { value: 735, name: '篮球场' },
- { value: 735, name: '足球场' },
+ { value: 0, name: '激战' },
+ { value: 0, name: '篮球场' },
+ { value: 0, name: '足球场' },
],
emphasis: {
@@ -943,8 +1331,10 @@
type: 'pie',
radius: '50%',
data: [
- { value: 1048, name: '30-35' },
- { value: 735, name: '12-18' },
+ { value: 0, name: '0-7岁' },
+ { value: 0, name: '8-10岁' },
+ { value:0, name: '11-12岁' },
+ { value: 0, name: '13岁以上' },
],
emphasis: {
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop_info.js b/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop_info.js
index 790c8fa..6e9c11e 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop_info.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop_info.js
@@ -572,6 +572,9 @@
var carPhoto = new $WebUpload("img");
carPhoto.setUploadBarId("progressBar");
carPhoto.init();
+ var carPhoto = new $WebUpload("welfarePicture");
+ carPhoto.setUploadBarId("progressBar");
+ carPhoto.init();
var drivingLicensePhoto = new $WebUpload("drivingLicensePhoto");
drivingLicensePhoto.setUploadBarId("progressBar");
drivingLicensePhoto.init();
diff --git a/cloud-server-other/src/main/java/com/dsh/other/controller/StoreController.java b/cloud-server-other/src/main/java/com/dsh/other/controller/StoreController.java
index 5f79d70..1ed5022 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/controller/StoreController.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/controller/StoreController.java
@@ -4,13 +4,12 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dsh.other.entity.Store;
+import com.dsh.other.entity.TBackRecord;
import com.dsh.other.entity.TStoreOther;
import com.dsh.other.entity.TStoreOtherConfigTrue;
import com.dsh.other.feignclient.model.*;
import com.dsh.other.model.*;
-import com.dsh.other.service.StoreService;
-import com.dsh.other.service.TStoreOtherConfigTrueService;
-import com.dsh.other.service.TStoreOtherService;
+import com.dsh.other.service.*;
import com.dsh.other.util.GDMapGeocodingUtil;
import com.dsh.other.util.ResultUtil;
import com.dsh.other.util.ToolUtil;
@@ -21,6 +20,7 @@
import org.springframework.web.bind.annotation.*;
import java.util.*;
+import java.util.stream.Collectors;
@RestController
@RequestMapping("")
@@ -35,6 +35,9 @@
@Autowired
private TStoreOtherService tStoreOtherService;
+
+ @Autowired
+ private TBackRecordService backRecordService;
/**
* 根据城市管理员id获取门店
@@ -280,6 +283,17 @@
}
+ @PostMapping("/store/addBackRecord")
+ public void addBackRecord(@RequestBody String s){
+ TBackRecord tBackRecord = new TBackRecord();
+ String[] split = s.split("_");
+ tBackRecord.setMoney(Double.valueOf(split[0]));
+ tBackRecord.setUserId(Integer.valueOf(split[1]));
+ tBackRecord.setTime(new Date());
+ backRecordService.save(tBackRecord);
+ }
+
+
@ResponseBody
@@ -313,9 +327,9 @@
try {
List<TStoreOtherConfigTrue> tStoreOtherConfigTrues = new ArrayList<>();
- List<TStoreOther> list = tStoreOtherService.list(new LambdaQueryWrapper<TStoreOther>().eq(TStoreOther::getStoreId, id));
+ List<TStoreOther> list = tStoreOtherService.list(new LambdaQueryWrapper<TStoreOther>().eq(TStoreOther::getStoreId, id).eq(TStoreOther::getState,1));
if(list.size()>0){
- tStoreOtherConfigTrues= tStoreOtherConfigTrueService.list(new LambdaQueryWrapper<TStoreOtherConfigTrue>().eq(TStoreOtherConfigTrue::getPid, list.get(0).getId()));
+ tStoreOtherConfigTrues= tStoreOtherConfigTrueService.list(new LambdaQueryWrapper<TStoreOtherConfigTrue>().in(TStoreOtherConfigTrue::getPid, list.stream().map(TStoreOther::getId).collect(Collectors.toList())).eq(TStoreOtherConfigTrue::getState,1));
}
return ResultUtil.success(tStoreOtherConfigTrues);
}catch (Exception e){
diff --git a/cloud-server-other/src/main/java/com/dsh/other/entity/TBackRecord.java b/cloud-server-other/src/main/java/com/dsh/other/entity/TBackRecord.java
new file mode 100644
index 0000000..070c69c
--- /dev/null
+++ b/cloud-server-other/src/main/java/com/dsh/other/entity/TBackRecord.java
@@ -0,0 +1,48 @@
+package com.dsh.other.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import java.util.Date;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 退费记录
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-10-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_back_record")
+public class TBackRecord extends Model<TBackRecord> {
+
+ private static final long serialVersionUID=1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @TableField("userId")
+ private Integer userId;
+
+ private Double money;
+
+ private Date time;
+
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+}
diff --git a/cloud-server-other/src/main/java/com/dsh/other/mapper/TBackRecordMapper.java b/cloud-server-other/src/main/java/com/dsh/other/mapper/TBackRecordMapper.java
new file mode 100644
index 0000000..fff3d15
--- /dev/null
+++ b/cloud-server-other/src/main/java/com/dsh/other/mapper/TBackRecordMapper.java
@@ -0,0 +1,17 @@
+package com.dsh.other.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dsh.other.entity.TBackRecord;
+
+/**
+ * <p>
+ * 退费记录 Mapper 接口
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-10-09
+ */
+public interface TBackRecordMapper extends BaseMapper<TBackRecord> {
+
+}
diff --git a/cloud-server-other/src/main/java/com/dsh/other/service/TBackRecordService.java b/cloud-server-other/src/main/java/com/dsh/other/service/TBackRecordService.java
new file mode 100644
index 0000000..ccc0b2a
--- /dev/null
+++ b/cloud-server-other/src/main/java/com/dsh/other/service/TBackRecordService.java
@@ -0,0 +1,16 @@
+package com.dsh.other.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.dsh.other.entity.TBackRecord;
+
+/**
+ * <p>
+ * 退费记录 服务类
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-10-09
+ */
+public interface TBackRecordService extends IService<TBackRecord> {
+
+}
diff --git a/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java b/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java
index 5bcce9e..7a6dafe 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java
@@ -63,6 +63,9 @@
@Autowired
private SiteMapper siteMapper;
+ @Autowired
+ private TBackRecordService backRecordService;
+
@@ -523,6 +526,13 @@
}
siteBooking.setCancelUserId(uid);
siteBookingService.updateById(siteBooking);
+
+ TBackRecord tBackRecord = new TBackRecord();
+ tBackRecord.setMoney(siteBooking.getPayMoney());
+ tBackRecord.setUserId(siteBooking.getAppUserId());
+ tBackRecord.setTime(new Date());
+ backRecordService.save(tBackRecord);
+
}
if(siteBooking.getPayType() == 2){//支付宝
Map<String, String> map = payMoneyUtil.aliRefund(siteBooking.getPayOrderNo(), siteBooking.getPayMoney().toString());
@@ -544,6 +554,13 @@
userCoupon.setStatus(1);
userCouponClient.updateUserCoupon(userCoupon);
}
+
+
+ TBackRecord tBackRecord = new TBackRecord();
+ tBackRecord.setMoney(siteBooking.getPayMoney());
+ tBackRecord.setUserId(siteBooking.getAppUserId());
+ tBackRecord.setTime(new Date());
+ backRecordService.save(tBackRecord);
}
if(siteBooking.getPayType() == 3){//玩湃币
diff --git a/cloud-server-other/src/main/java/com/dsh/other/service/impl/TBackRecordServiceImpl.java b/cloud-server-other/src/main/java/com/dsh/other/service/impl/TBackRecordServiceImpl.java
new file mode 100644
index 0000000..030f540
--- /dev/null
+++ b/cloud-server-other/src/main/java/com/dsh/other/service/impl/TBackRecordServiceImpl.java
@@ -0,0 +1,21 @@
+package com.dsh.other.service.impl;
+
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dsh.other.entity.TBackRecord;
+import com.dsh.other.mapper.TBackRecordMapper;
+import com.dsh.other.service.TBackRecordService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 退费记录 服务实现类
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-10-09
+ */
+@Service
+public class TBackRecordServiceImpl extends ServiceImpl<TBackRecordMapper, TBackRecord> implements TBackRecordService {
+
+}
diff --git a/cloud-server-other/src/main/resources/mapper/TBackRecordMapper.xml b/cloud-server-other/src/main/resources/mapper/TBackRecordMapper.xml
new file mode 100644
index 0000000..9ec6707
--- /dev/null
+++ b/cloud-server-other/src/main/resources/mapper/TBackRecordMapper.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dsh.other.mapper.TBackRecordMapper">
+
+
+</mapper>
--
Gitblit v1.7.1