44323
2023-10-10 2e4640768bec302ed465c9c17002df842c96ee96
后台代码
22个文件已修改
2个文件已添加
960 ■■■■■ 已修改文件
cloud-server-account/src/main/java/com/dsh/account/controller/FinanceController.java 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/mapper/RechargeRecordsMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/model/IncomeQuery.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/model/query/RechargeRecordsQuery.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/service/impl/RechargeRecordsServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/resources/mapper/RechargeRecordsMapper.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-competition/src/main/java/com/dsh/competition/model/CompetitionQuery.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/entity/TAppUser.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/model/RegisterOrderQuery.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/feignClient/account/FinanceClient.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/feignClient/account/model/RechargeRecords.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/feignClient/competition/model/CompetitionQuery.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CourseClient.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/DataStatisticsController.java 89 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TDiscountController.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/IncomeQuery.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/RechargeRecordsQuery.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/RegisterOrderQuery.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/CoursePackage.java 180 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/dataStatistics/platformIncome.html 496 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/ticket/ticket_add.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/controller/FinanceController.java
@@ -4,16 +4,14 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dsh.account.entity.CoachType;
import com.dsh.account.entity.RechargeRecords;
import com.dsh.account.entity.TAppUser;
import com.dsh.account.entity.VipPayment;
import com.dsh.account.model.IncomeQuery;
import com.dsh.account.model.query.RechargeRecordsQuery;
import com.dsh.account.model.query.coachQuery.CoachQuery;
import com.dsh.account.model.vo.CoachSerchVO;
import com.dsh.account.model.vo.RechargeRecordsVO;
import com.dsh.account.service.CoachService;
import com.dsh.account.service.CoachTypeService;
import com.dsh.account.service.IVipPaymentService;
import com.dsh.account.service.RechargeRecordsService;
import com.dsh.account.service.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -31,7 +29,8 @@
    private RechargeRecordsService rechargeRecordsService;
    @Autowired
    private IVipPaymentService vipPaymentService;
    @Autowired
    private TAppUserService appUserService;
    /**
     * 充值记录列表数据
@@ -42,6 +41,18 @@
        return  rechargeRecordsService.rechargeList(query);
    }
    /**
     * 数据统计-充值记录列表数据
     */
    @ResponseBody
    @RequestMapping("/finance/rechargeList1")
    public List<RechargeRecords> rechargeList1(@RequestBody RechargeRecordsQuery query){
        List<RechargeRecords> payStatus = rechargeRecordsService.list(new QueryWrapper<RechargeRecords>().eq("payStatus", 2));
        for (RechargeRecords list : payStatus) {
            TAppUser byId = appUserService.getById(list.getAppUserId());
        }
        return payStatus;
    }
    /**
     * 加入会员列表数据
     */
    @ResponseBody
cloud-server-account/src/main/java/com/dsh/account/mapper/RechargeRecordsMapper.java
@@ -22,6 +22,6 @@
public interface RechargeRecordsMapper extends BaseMapper<RechargeRecords> {
    List<RechargeRecordsVO> rechargeList(@Param("query") RechargeRecordsQuery query,@Param("sTime")String sTime,@Param("eTime")String eTime);
    List<VipPayment> listAll(@Param("query") IncomeQuery query, @Param("sTime")String sTime, @Param("eTime")String eTime, @Param("amount") BigDecimal amount);
    List<VipPayment> listAll(@Param("query") IncomeQuery query, @Param("sTime")String sTime, @Param("eTime")String eTime, @Param("amount") BigDecimal amount,@Param("insertType")Integer insertType);
}
cloud-server-account/src/main/java/com/dsh/account/model/IncomeQuery.java
@@ -20,5 +20,5 @@
    private BigDecimal amount;
    // 用户ids
    private List<Integer> userIds;
    private Integer insertType;
}
cloud-server-account/src/main/java/com/dsh/account/model/query/RechargeRecordsQuery.java
@@ -21,4 +21,5 @@
    private Integer type;
    private List<Integer> userIds;
    private BigDecimal amount;
    private Integer insertType;
}
cloud-server-account/src/main/java/com/dsh/account/service/impl/RechargeRecordsServiceImpl.java
@@ -376,7 +376,7 @@
            STime = query.getTime().split(" - ")[0] + " 00:00:00";
            ETime = query.getTime().split(" - ")[1] + " 23:59:59";
        }
        return rechargeRecordsMapper.listAll(query,STime,ETime,query.getAmount());
        return rechargeRecordsMapper.listAll(query,STime,ETime,query.getAmount(),query.getInsertType());
    }
    public static <T> List<T> pageList(List<T> list, int pageNum, int pageSize) {
        //计算总页数
cloud-server-account/src/main/resources/mapper/RechargeRecordsMapper.xml
@@ -5,9 +5,13 @@
    <select id="rechargeList" resultType="com.dsh.account.model.vo.RechargeRecordsVO">
        select t1.* from t_recharge_records t1
        left join t_app_user t2 on t1.appUserId = t2.id
        <where>
            <if test="query.amount!=null and query.amount!= ''">
                and t1.amount &lt;= #{query.amount}
            </if>
            <if test="query.insertType!=null and query.insertType!= ''">
                and t2.insertType = #{query.insertType}
            </if>
            <if test="query.name!=null and query.name!= ''">
                AND t1.name LIKE concat('%',#{query.name},'%')
@@ -28,10 +32,14 @@
    </select>
    <select id="listAll" resultType="com.dsh.account.entity.VipPayment">
        select t1.* from t_vip_payment t1
        left join t_app_user t2 on t1.appUserId = t2.id
        <where>
        <if test="amount!=null and amount!= ''">
            and t1.amount &lt;= #{amount}
        </if>
            <if test="query.insertType!=null and query.insertType!= ''">
            and t2.insertType = #{query.insertType}
         </if>
        <if test="query.userIds != null and query.userIds.size()>0">
            AND t1.appUserId IN
            <foreach collection="query.userIds" separator="," item="id" open="(" close=")">
@@ -41,6 +49,7 @@
        <if test="sTime !=null and sTime!= '' and eTime !=null and eTime!= ''">
            and t1.insertTime between #{sTime} and #{eTime}
        </if>
        and t1.payStatus = 2
        </where>
    </select>
</mapper>
cloud-server-competition/src/main/java/com/dsh/competition/model/CompetitionQuery.java
@@ -16,5 +16,5 @@
    private BigDecimal amount;
    // 用户ids
    private List<Integer> userIds;
    private Integer insertType;
}
cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java
@@ -454,6 +454,13 @@
        TCoursePackage byId1 = coursePackageService.getById(byId.getCoursePackageId());
        return byId1;
    }
    @ResponseBody
    @PostMapping("/course/queryByDiscountId1")
    public TCoursePackage queryByDiscountId1(@RequestBody Integer id){
        TCoursePackageDiscount byId = discountService.getById(id);
        TCoursePackage byId1 = coursePackageService.getById(byId.getCoursePackageId());
        return byId1;
    }
    @PostMapping("/course/queryDiscountById")
cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java
@@ -370,15 +370,18 @@
        List<RegisterOrderVO> res = packagePaymentService.listAllRegister(query);
        List<RegisterOrderVO> result = new ArrayList<>();
        for (RegisterOrderVO re : res) {
            if(re.getSalesName()==null){
        Iterator<RegisterOrderVO> iterator = res.iterator();
        while (iterator.hasNext()) {
            RegisterOrderVO re = iterator.next();
            if (re.getSalesName() == null) {
                re.setSalesName("无");
            }
            if(re.getPayType()!=null){
                if (re.getPayType() == 3){
                    re.setPayMoneyAndType(re.getPlayPaiCoin()+"玩湃币");
                }else{
                    re.setPayMoneyAndType("¥"+re.getMoney());
            if (re.getPayType() != null) {
                if (re.getPayType() == 3) {
                    re.setPayMoneyAndType(re.getPlayPaiCoin() + "玩湃币");
                } else {
                    re.setPayMoneyAndType("¥" + re.getMoney());
                }
            }
            Store store = storeClient.queryStoreById(re.getStoreId());
@@ -388,6 +391,10 @@
            re.setPayUser(appUser.getName());
            re.setPhone(appUser.getPhone());
            re.setStoreName(store.getName());
            // 在这里添加条件来删除不满足要求的元素
            if (appUser.getInsertType() != query.getInsertType()) {
                iterator.remove(); // 使用迭代器的 remove 方法删除元素
            }
        }
        return res;
    }
cloud-server-course/src/main/java/com/dsh/course/entity/TAppUser.java
@@ -160,6 +160,15 @@
    @TableField("insertTime")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date insertTime;
    /**
     * 添加人类型 1 = 平台添加 2 = 运营商添加 3 = 门店添加
     */
    @TableField("insertType")
    private Integer insertType;
    /**
     * 添加人ID
     */
    @TableField("headImg")
    private Integer addUserId;
}
cloud-server-course/src/main/java/com/dsh/course/model/RegisterOrderQuery.java
@@ -37,4 +37,5 @@
    private Integer orderSource;
    // 订单金额
    private BigDecimal amount;
    private Integer insertType;
}
cloud-server-management/src/main/java/com/dsh/course/feignClient/account/FinanceClient.java
@@ -1,6 +1,7 @@
package com.dsh.course.feignClient.account;
import com.dsh.course.feignClient.account.model.CoachType;
import com.dsh.course.feignClient.account.model.RechargeRecords;
import com.dsh.guns.modular.system.model.RechargeRecordsQuery;
import com.dsh.guns.modular.system.model.RechargeRecordsVO;
import org.springframework.cloud.openfeign.FeignClient;
@@ -23,4 +24,9 @@
     */
    @RequestMapping("/finance/rechargeList")
     List<RechargeRecordsVO> rechargeList(@RequestBody RechargeRecordsQuery query);
    /**
     * 数据统计-充值记录列表数据
     */
    @RequestMapping("/finance/rechargeList1")
    List<RechargeRecords> rechargeList1(@RequestBody RechargeRecordsQuery query);
}
cloud-server-management/src/main/java/com/dsh/course/feignClient/account/model/RechargeRecords.java
New file
@@ -0,0 +1,89 @@
package com.dsh.course.feignClient.account.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
 * <p>
 * 充值记录
 * </p>
 *
 * @author jqs
 * @since 2023-07-07
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("t_recharge_records")
public class RechargeRecords extends Model<RechargeRecords> {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.NONE)
    private Long id;
    /**
     * 流水号
     */
    @TableField("code")
    private String code;
    /**
     * 用户id
     */
    @TableField("appUserId")
    private Integer appUserId;
    /**
     * 充值金额
     */
    @TableField("amount")
    private BigDecimal amount;
    /**
     * 玩湃币
     */
    @TableField("playPaiCoins")
    private Integer playPaiCoins;
    /**
     * 支付状态(1=待支付,2=已支付)
     */
    @TableField("payStatus")
    private Integer payStatus;
    /**
     * 支付时间
     */
    @TableField("payTime")
    private Date payTime;
    /**
     * 第三方支付流水号
     */
    @TableField("orderNumber")
    private String orderNumber;
    /**
     * 状态(1=正常,2=冻结,3=删除)
     */
    @TableField("state")
    private Integer state;
    /**
     * 添加时间
     */
    @TableField("insertTime")
    private Date insertTime;
    @Override
    protected Serializable pkVal() {
        return this.id;
    }
}
cloud-server-management/src/main/java/com/dsh/course/feignClient/competition/model/CompetitionQuery.java
@@ -1,5 +1,6 @@
package com.dsh.course.feignClient.competition.model;
import io.swagger.models.auth.In;
import lombok.Data;
import java.math.BigDecimal;
@@ -16,5 +17,7 @@
    private BigDecimal amount;
    // 用户ids
    private List<Integer> userIds;
    // 筛选是平台 还是运营商 还是门店
    private Integer type;
    private Integer insertType;
}
cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CourseClient.java
@@ -5,6 +5,7 @@
import com.dsh.course.feignClient.course.model.*;
import com.dsh.course.model.AuditDiscount;
import com.dsh.guns.modular.system.model.*;
import com.dsh.guns.modular.system.model.dto.CoursePackage;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@@ -113,6 +114,8 @@
    @PostMapping("/course/queryByDiscountId")
    TCoursePackage queryByDiscountId(Integer id);
    @PostMapping("/course/queryByDiscountId1")
    CoursePackage queryByDiscountId1(Integer id);
    @PostMapping("/course/queryDiscountById")
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/DataStatisticsController.java
@@ -3,10 +3,7 @@
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;
import com.dsh.course.feignClient.account.model.QueryDataFee;
import com.dsh.course.feignClient.account.model.TAppUser;
import com.dsh.course.feignClient.account.model.VipPayment;
import com.dsh.course.feignClient.account.model.*;
import com.dsh.course.feignClient.activity.PointMercharsClient;
import com.dsh.course.feignClient.competition.CompetitionClient;
import com.dsh.course.feignClient.competition.model.Competition;
@@ -114,7 +111,7 @@
     */
    @RequestMapping(value = "/getIncomeData")
    @ResponseBody
    public Object getIncomeData(Integer type) {
    public Object getIncomeData(Integer operatorId,Integer storeId) {
        // 充值记录查询query
        RechargeRecordsQuery rechargeRecordsQuery = new RechargeRecordsQuery();
        // 报名课程查询query
@@ -126,6 +123,12 @@
        // 场地预约记录查询query
        SiteBookingQuery siteBookingQuery = new SiteBookingQuery();
        Integer roleType = UserExt.getUser().getObjectType();
        rechargeRecordsQuery.setInsertType(roleType);
                       query.setInsertType(roleType);
            competitionQuery.setInsertType(roleType);
                 incomeQuery.setInsertType(roleType);
                 incomeQuery.setInsertType(roleType);
        IncomeVO incomeVO = new IncomeVO();
        List<IncomeVO> incomeVOS = new ArrayList<>();
                // 会员支付记录
@@ -142,6 +145,7 @@
                }
                // 充值记录
                List<RechargeRecordsVO> rechargeRecordsVOS = financeClient.rechargeList(rechargeRecordsQuery);
        List<RechargeRecords> rechargeRecords = financeClient.rechargeList1(rechargeRecordsQuery);
                for (RechargeRecordsVO rechargeRecordsVO : rechargeRecordsVOS) {
                    IncomeVO temp = new IncomeVO();
                    temp.setInsertTime(rechargeRecordsVO.getInsertTime());
@@ -223,8 +227,8 @@
            // 累加到总金额
            totalAmount1 = totalAmount1.add(total);
            Date insertTime = incomeVO1.getInsertTime(); // 假设有一个方法用于获取 insertTime
            BigDecimal amount1 = incomeVO1.getAmount(); // 假设有一个方法用于获取 amount
            Date insertTime = incomeVO1.getInsertTime();
            BigDecimal amount1 = incomeVO1.getAmount();
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(insertTime);
            int year = calendar.get(Calendar.YEAR); // 获取年份
@@ -242,8 +246,13 @@
        Collections.sort(sortedYears);
        // 创建一个新的 IncomeVO 列表,包含按年份累计的 amount
        List<Object> resultIncomeVOS = new ArrayList<>();
        // 循环遍历2023年到2028年的年份
        for (int year = 2023; year <= 2028; year++) {
        // 当前年往前推十年
        List<Integer> integers1 = new ArrayList<>();
        int years = DateUtil.year(new Date());
        for (int i = 0; i < 10; i++) {
            integers1.add(years-i);
        }
        for (int year = integers1.get(0); year >= integers1.get(integers1.size()-1); year++) {
            BigDecimal totalAmount = yearToTotalAmountMap.getOrDefault(year, BigDecimal.ZERO);
            // 创建一个新的 IncomeVO 对象,并设置年份和累计金额
            IncomeVO resultIncomeVO = new IncomeVO();
@@ -276,20 +285,55 @@
        int currentMonth = currentDate.getMonthValue();
        // 初始化一个长度为当前月份的天数的列表,并将每一天的金额初始化为零
        int daysInCurrentMonth = currentDate.lengthOfMonth();
        List<BigDecimal> weekAmount = new ArrayList<>(daysInCurrentMonth);
        for (int i = 0; i < daysInCurrentMonth; i++) {
            weekAmount.add(BigDecimal.ZERO);
        }
        List<BigDecimal> weekAmount = new ArrayList<>();
        // 获取最近四周
        LocalDateTime minNow = LocalDateTime.now().with(LocalTime.MIN);
        LocalDateTime maxNow = LocalDateTime.now().with(LocalTime.MAX);
        // 周度数据
        LocalDateTime week1Start = minNow.minusDays(6);
        LocalDateTime week1End = maxNow;
        LocalDateTime week2Start = minNow.minusDays(13);
        LocalDateTime week2End = minNow.minusDays(7);
        LocalDateTime week3Start = minNow.minusDays(20);
        LocalDateTime week3End = minNow.minusDays(14);
        LocalDateTime week4Start = minNow.minusDays(27);
        LocalDateTime week4End = minNow.minusDays(21);
        // 用于存放四个周的数据
        List<Object> objects1 = new ArrayList<>();
        // 计算每个周的amount总和
        BigDecimal tAmount1 = BigDecimal.ZERO;
        BigDecimal tAmount2 = BigDecimal.ZERO;
        BigDecimal tAmount3 = BigDecimal.ZERO;
        BigDecimal tAmount4 = BigDecimal.ZERO;
        for (IncomeVO incomeVO1 : incomeVOS) {
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            String string = dateFormat.format(incomeVO1.getInsertTime());
            LocalDate insertDate = LocalDate.parse(string, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
            if (insertDate.getMonthValue() == currentMonth) {
                int dayOfMonth = insertDate.getDayOfMonth();
                BigDecimal currentAmount = weekAmount.get(dayOfMonth - 1); // 列表索引从0开始
                weekAmount.set(dayOfMonth - 1, currentAmount.add(incomeVO1.getAmount()));
            Date insertTime = incomeVO1.getInsertTime();
            // 将Date转换为LocalDateTime
            Instant instant = insertTime.toInstant();
            ZoneId zoneId = ZoneId.systemDefault();
            LocalDateTime dateTime = instant.atZone(zoneId).toLocalDateTime();
            // 判断该数据属于哪个周
            if (dateTime.isAfter(week1Start) && dateTime.isBefore(week1End)) {
                BigDecimal amount1 = incomeVO1.getAmount();
                tAmount1=tAmount1.add(amount1);
            } else if (dateTime.isAfter(week2Start) && dateTime.isBefore(week2End)) {
                BigDecimal amount1 = incomeVO1.getAmount();
                tAmount2=tAmount2.add(amount1);
            } else if (dateTime.isAfter(week3Start) && dateTime.isBefore(week3End)) {
                BigDecimal amount1 = incomeVO1.getAmount();
                tAmount4=tAmount3.add(amount1);
            } else if (dateTime.isAfter(week4Start) && dateTime.isBefore(week4End)) {
                BigDecimal amount1 = incomeVO1.getAmount();
                tAmount4=tAmount4.add(amount1);
            }
        }
        weekAmount.add(tAmount1);
        weekAmount.add(tAmount2);
        weekAmount.add(tAmount3);
        weekAmount.add(tAmount4);
        monthlyData.put("weekIncome", Collections.singletonList(weekAmount));
        LocalDateTime currentDateTime = LocalDateTime.now();
@@ -311,11 +355,6 @@
        }
        monthlyData.put("dayIncome", Collections.singletonList(amountByDay));
        // 创建一个 Map 用于存储今年本周的累计 amount
        Map<Integer, BigDecimal> dayToTotalAmountMap = new HashMap<>();
        BigDecimal yearAmount = BigDecimal.ZERO; // 初始化累加变量为0
        BigDecimal monthAmount = BigDecimal.ZERO; // 初始化累加变量为0
        BigDecimal todayAmount = BigDecimal.ZERO; // 初始化累加变量为0
        // 获取当前日期和时间
        LocalDateTime now = LocalDateTime.now();
        // 今年的起始日期和结束日期
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorController.java
@@ -230,7 +230,6 @@
        user.setName(userName);
        user.setPhone(phone);
        user.setObjectType(2);
        userService.save(user);
        TOperator data = new TOperator();
        data.setUserId(user.getId());
        data.setName(name);
@@ -238,6 +237,8 @@
        data.setStatus(1);
        data.setState(1);
        operatorService.save(data);
        user.setObjectId(data.getId());
        userService.save(user);
        if (SinataUtil.isNotEmpty(comArr)){
            JSONArray jsonArray = JSON.parseArray(comArr);
            int size = jsonArray.size();
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TDiscountController.java
@@ -20,6 +20,7 @@
import com.dsh.guns.modular.system.model.DiscountUpdateState;
import com.dsh.guns.modular.system.model.TCity;
import com.dsh.guns.modular.system.model.TStore;
import com.dsh.guns.modular.system.model.dto.CoursePackage;
import com.dsh.guns.modular.system.service.ICityService;
import com.dsh.guns.modular.system.service.ICoursePackageService;
import com.dsh.guns.modular.system.service.IStoreService;
@@ -62,9 +63,6 @@
    @Autowired
    private CourseClient courseClient;
    /**
     * 跳转到车辆管理首页
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/IncomeQuery.java
@@ -20,5 +20,5 @@
    private BigDecimal amount;
    // 用户ids
    private List<Integer> userIds;
    private Integer insertType;
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/RechargeRecordsQuery.java
@@ -22,4 +22,5 @@
    private Integer type;
    private List<Integer> userIds;
    private BigDecimal amount;
    private Integer insertType;
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/RegisterOrderQuery.java
@@ -36,4 +36,5 @@
    private Integer orderSource;
    // 订单金额
    private BigDecimal amount;
    private Integer insertType;
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/CoursePackage.java
New file
@@ -0,0 +1,180 @@
package com.dsh.guns.modular.system.model.dto;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.dsh.course.feignClient.course.model.TCoursePackage;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
/**
 * <p>
 * 课包
 * </p>
 *
 * @author administrator
 * @since 2023-06-14
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("t_course_package")
public class CoursePackage{
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 省
     */
    @TableField("province")
    private String province;
    /**
     * 省编号
     */
    @TableField("provinceCode")
    private String provinceCode;
    /**
     * 市
     */
    @TableField("city")
    private String city;
    /**
     * 市编号
     */
    @TableField("cityCode")
    private String cityCode;
    /**
     * 门店id
     */
    @TableField("storeId")
    private Integer storeId;
    /**
     * 课包类型id
     */
    @TableField("coursePackageTypeId")
    private Integer coursePackageTypeId;
    /**
     * 课包名称
     */
    @TableField("name")
    private String name;
    /**
     * 上课场地id
     */
    @TableField("siteId")
    private Integer siteId;
    /**
     * 教练id
     */
    @TableField("coachId")
    private Integer coachId;
    /**
     * 最多预约人数
     */
    @TableField("maxSubscribeNumber")
    private Integer maxSubscribeNumber;
    @TableField("codeTime")
    private Integer codeTime;
    /**
     * 上课开始时间
     */
    @TableField("classStartTime")
    private String classStartTime;
    /**
     * 上课结束时段
     */
    @TableField("classEndTime")
    private String classEndTime;
    /**
     * 上课周,多个分号分隔
     */
    @TableField("classWeeks")
    private String classWeeks;
    /**
     * 封面图
     */
    @TableField("coverDrawing")
    private String coverDrawing;
    /**
     * 详情图
     */
    @TableField("detailDrawing")
    private String detailDrawing;
    /**
     * 介绍图
     */
    @TableField("introduceDrawing")
    private String introduceDrawing;
    /**
     * 排序
     */
    @TableField("sort")
    private Integer sort;
    /**
     * 支付方式(1=现金,2=玩湃币)
     */
    @TableField("payType")
    private Integer payType;
    /**
     * 有效天数
     */
    @TableField("validDays")
    private Integer validDays;
    /**
     * 课程状态(1=未开始,2=进行中,3=已结束,4=已取消)
     */
    @TableField("status")
    private Integer status;
    /**
     * 审核状态(1=待审核,2=已同意,3=已拒绝)
     */
    @TableField("auditStatus")
    private Integer auditStatus;
    /**
     * 审核人id
     */
    @TableField("auditUserId")
    private Integer auditUserId;
    /**
     * 审核备注
     */
    @TableField("authRemark")
    private String authRemark;
    /**
     * 状态(1=正常,2=冻结,3=删除)
     */
    @TableField("state")
    private Integer state;
    /**
     * 添加时间
     */
    @TableField("insertTime")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date insertTime;
    @TableField("type")
    private Integer type;
    @TableField("needNum")
    private Integer needNum;
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField("startTime")
    private Date startTime;
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField("endTime")
    private Date endTime;
}
cloud-server-management/src/main/webapp/WEB-INF/view/system/dataStatistics/platformIncome.html
@@ -41,6 +41,19 @@
<div class="ibox float-e-margins">
    <div class="ibox-content">
        <div class="form-horizontal">
            <input hidden id="day" value="${data.dayone}">
            <input hidden id="month" value="${data.monthone}">
            <input hidden id="quarter" value="${data.quarterone}">
            <input hidden id="year" value="${data.yearone}">
            <input hidden id="age1" value="${stuData.age1}">
            <input hidden id="age2" value="${stuData.age2}">
            <input hidden id="age3" value="${stuData.age3}">
            <input hidden id="age4" value="${stuData.age4}">
            <input hidden id="boy" value="${stuData.boy}">
            <input hidden id="girl" value="${stuData.girl}">
            <div class="row">
                <div class="col-sm-10">
                    <div style="height: 50px;box-sizing: border-box;background:#f3f3f4;line-height: 50px;border:1px solid;margin-bottom: 20px;width: auto">
@@ -48,21 +61,23 @@
                        <div id="div2" class='table1' onclick="getContent(2)" style="border-right: 1px solid #333;">运营统计</div>
                        <div id="div3" class='table1' onclick="getContent(3)" style="border-right: 1px solid #333;">教学统计</div>
                    </div>
                    <div class="row" id="content1" style="margin-left: 100px;">
                        <div class="col-sm-11">
                            <div class="form-group">
                                <div class="col-sm-10">
                                    <h2>营收数据</h2>
                                    </br>
                                        <div id = "money1" style="width: 1500px" >
                                            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span id="totalIncome">总营收:</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                            <span id="yearIncome">本年度营收:</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                            <span id="monthIncome">本月度营收:</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                            <span id="weekIncome">本周营收:</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                            <span id="todayIncome">本日营收:</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                            </br>
                                            </br>
                                        </div>
                                    <div id = "money1" style="width: 1500px" >
                                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span id="totalIncome">总营收:</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                        <span id="yearIncome">本年度营收:</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                        <span id="monthIncome">本月度营收:</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                        <span id="weekIncome">本周营收:</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                        <span id="todayIncome">本日营收:</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                        </br>
                                        </br>
                                    </div>
                                    <div id="main" style="width: 1280px;height:500px;"></div>
                                </div>
                                <div class="col-sm-10">
@@ -71,21 +86,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="search1()"/>
                                    </div>
                                </div>
                                <div class="col-sm-10" style="width: 1500px" >
                                    </br>
                                    </br>
                                   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span>会员费收入:</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                    <span>玩湃币充值收入:</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                    <span>课程收入:</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                    <span>活动收入:</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                    <span>订场收入:</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                    <span>赛事收入:</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                    <span>商品收入:</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                    <span>其他收入:</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span>会员费收入:<label id="fee1">${data.fee1}</label></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                    <span>玩湃币充值收入:<label id="fee2">${data.fee2}</label></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                    <span>课程收入:<label id="fee3">${data.fee3}</label></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                    <span>活动/赛事收入:<label id="fee4">${data.fee4}</label></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                    <span>订场收入:<label id="fee5">${data.fee5}</label></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                    <span>商品收入:<label id="fee7">${data.fee7}</label></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                    </br>
                                    </br>
                                    </br>
@@ -239,12 +252,140 @@
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/modular/system/dataStatistics/echarts.min.js"></script>
<script src="${ctxPath}/static/js/plugins/switchery/switchery.js"></script>
<script>
    function search1(){
        var time = $("#beginTime").val()
        var ajax = new $ax(Feng.ctxPath + "/data/type1", 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("time",time);
        ajax.start();
    }
    var ans = [];
    var weekX = ["1","2","上周","本周"];
    var weekX = ["1周","2周","3周","4周"];
    var monthX = ["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"];
    var yearX = [];
    var timeX = [];
@@ -281,7 +422,6 @@
        getContent(1);
        getContent1(1);
        getContent2(1);
        var ajax = new $ax(Feng.ctxPath + "/data/getIncomeData", function(resp){
            yearX=resp.year
@@ -301,10 +441,10 @@
            var year =  resp.yearIncome;
            var month =  resp.monthIncome;
            var week =  resp.weekIncome;
            console.log("周度营收")
            console.log(year)
            console.log(week)
            var days = week[0].length;
            for (let i = 1; i <= days; i++) {
                weekX.push(i);
            }
            var day =  resp.dayIncome;
            option  = {
                tooltip: {
@@ -361,11 +501,6 @@
                        stack: 'Total',
                        data: [
                            week[0][0], week[0][1], week[0][2], week[0][3], week[0][4]
                            , week[0][5], week[0][6], week[0][7], week[0][8], week[0][9]
                            , week[0][10], week[0][11], week[0][12], week[0][13], week[0][14]
                            , week[0][15], week[0][16], week[0][17], week[0][18], week[0][19], week[0][20]
                            , week[0][21], week[0][22], week[0][23], week[0][24], week[0][25], week[0][26]
                            , week[0][27], week[0][28], week[0][29], week[0][30], week[0][31]
                        ]
                    },
                    {
@@ -647,138 +782,6 @@
                }
            ]
        };
        option5 = {
            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, 394, 980, 2380, 1680, 1190, 1410, 1330, 2110, 1330]
                },
                {
                    name: '月度次数',
                    type: 'line',
                    stack: 'Total',
                    data: [120, 182, 211, 324, 120, 130, 310, 290, 220, 130, 240, 150]
                }
            ]
        };
        option6  = {
            tooltip: {
                trigger: 'axis'
            },
            legend: {
                data: ['年度学员数', '月度学员数', '周度学员数', '日度学员数']
            },
            grid: {
                left: '3%',
                right: '4%',
                bottom: '3%',
                containLabel: true
            },
            toolbox: {
                feature: {
                    saveAsImage: {}
                }
            },
            xAxis: {
                type: 'category',
                boundaryGap: false,
                data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
            },
            yAxis: {
                type: 'value'
            },
            series: [
                {
                    name: '年度学员数',
                    type: 'line',
                    stack: 'Total',
                    data: [120, 132, 101, 134, 90, 230, 160, 190, 410, 330, 210, 330]
                },
                {
                    name: '月度学员数',
                    type: 'line',
                    stack: 'Total',
                    data: [220, 182, 191, 234, 290, 330, 310, 190, 210, 330, 410, 160]
                },
                {
                    name: '周度学员数',
                    type: 'line',
                    stack: 'Total',
                    data: [150, 232, 201, 154, 190, 330, 410, 160, 210, 195, 210, 188]
                },
                {
                    name: '日度学员数',
                    type: 'line',
                    stack: 'Total',
                    data: [320, 332, 301, 334, 390, 330, 320, 10, 195, 145, 188, 160]
                }
            ]
        };
        option7  = {
            tooltip: {
                trigger: 'axis'
            },
            legend: {
                data: ['年度耗课数量', '月度耗课数量', '周度耗课数量', '日度耗课数量']
            },
            grid: {
                left: '3%',
                right: '4%',
                bottom: '3%',
                containLabel: true
            },
            toolbox: {
                feature: {
                    saveAsImage: {}
                }
            },
            xAxis: {
                type: 'category',
                boundaryGap: false,
                data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
            },
            yAxis: {
                type: 'value'
            },
            series: [
                {
                    name: '年度耗课数量',
                    type: 'line',
                    stack: 'Total',
                    data: [120, 132, 101, 134, 90, 230, 160, 190, 410, 330, 210, 330]
                },
                {
                    name: '月度耗课数量',
                    type: 'line',
                    stack: 'Total',
                    data: [220, 182, 191, 234, 290, 330, 310, 190, 210, 330, 410, 160]
        myChart.on('legendselectchanged', obj => {
            var options = myChart.getOption()
            //这里是选择切换什么样的x轴,那么他会进行对Y值的切换
@@ -987,6 +990,27 @@
    function ptActivity() {
        var myChart4 = echarts.init(document.getElementById('activity'));
        var myChart5 = echarts.init(document.getElementById('prepare'));
        myChart4.on('legendselectchanged', obj => {
            var options = myChart4.getOption()
            //这里是选择切换什么样的x轴,那么他会进行对Y值的切换
            if (obj.name == '年度次数') {
                options.xAxis[0].data = yearX
            } else if (obj.name == '月度次数') {
                options.xAxis[0].data = monthX
            }
            myChart4.setOption(options, true)
        });
        myChart5.on('legendselectchanged', obj => {
            var options = myChart5.getOption()
            //这里是选择切换什么样的x轴,那么他会进行对Y值的切换
            if (obj.name == '年度次数') {
                options.xAxis[0].data = yearX
            } else if (obj.name == '月度次数') {
                options.xAxis[0].data = monthX
            }
            myChart5.setOption(options, true)
        });
        var ajax2 = new $ax(Feng.ctxPath + "/data/actPt", function(data){
            console.log(data)
@@ -1214,6 +1238,8 @@
            ptUser()
            ptActivity()
        }
@@ -1286,12 +1312,12 @@
        }
    }
</script>
<script>
    $(function(){
        var chartDom = document.getElementById('cookieTicket');
        var myChart = echarts.init(chartDom);
        var option;
        option = {
            title: {
                text: '门票收入',
@@ -1308,8 +1334,10 @@
                    type: 'pie',
                    radius: '50%',
                    data: [
                        { value: 1048, name: '年票' },
                        { value: 735, name: '亲子票' },
                        { value: $("#day").val(), name: '日卡' },
                        { value: $("#month").val(), name: '月卡' },
                        { value: $("#quarter").val(), name: '季卡' },
                        { value: $("#year").val(), name: '年卡' },
                    ],
                    emphasis: {
@@ -1322,11 +1350,27 @@
                }
            ]
        };
    myChart.setOption(option);
        myChart.setOption(option);
    });
    $(function(){
        var courseData = "${data.courseData}"
        courseData =courseData.replace("[","").replace("]","")
        courseData = courseData.split('},')
        var a=[];
        for (let j = 0; j <courseData.length; j++) {
            if(j<courseData.length-1){
                var d = courseData[j].replace("{","").replace("}","").split(",")
                let obj ={
                    name:d[0].split("=")[1],
                    value:d[1].split("=")[1]
                }
                a.push(obj)
            }
        }
        var chartDom = document.getElementById('cookieCourse');
        var myChart = echarts.init(chartDom);
        var myChart = echarts.init(chartDom)
        var option;
        option = {
            title: {
@@ -1343,12 +1387,7 @@
                    name: 'Access From',
                    type: 'pie',
                    radius: '50%',
                    data: [
                        { value: 1048, name: '篮球课' },
                        { value: 735, name: '羽毛课' },
                        { value: 735, name: '足球课' },
                    ],
                    data: a,
                    emphasis: {
                        itemStyle: {
                            shadowBlur: 10,
@@ -1362,6 +1401,22 @@
        myChart.setOption(option);
    });
    $(function(){
        var courseData = "${data.siteData}"
        courseData =courseData.replace("[","").replace("]","")
        courseData = courseData.split('},')
        var a=[];
        for (let j = 0; j <courseData.length; j++) {
            if(j<courseData.length-1){
                var d = courseData[j].replace("{","").replace("}","").split(",")
                let obj ={
                    name:d[0].split("=")[1],
                    value:d[1].split("=")[1]
                }
                a.push(obj)
            }
        }
        var chartDom = document.getElementById('cookieBooking');
        var myChart = echarts.init(chartDom);
        var option;
@@ -1380,48 +1435,7 @@
                    name: 'Access From',
                    type: 'pie',
                    radius: '50%',
                    data: [
                        { value: 1048, name: '激战' },
                        { value: 735, 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('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: '30-35' },
                        { value: 735, name: '12-18' },
                    ],
                    data: a,
                    emphasis: {
                        itemStyle: {
                            shadowBlur: 10,
@@ -1454,8 +1468,10 @@
                    type: 'pie',
                    radius: '50%',
                    data: [
                        { value: 1048, name: '30-35' },
                        { value: 735, name: '12-18' },
                        { value: $("#age1").val(), name: '0-7岁' },
                        { value: $("#age2").val(), name: '8-10岁' },
                        { value:$("#age3").val(), name: '11-12岁' },
                        { value: $("#age4").val(), name: '13岁以上' },
                    ],
                    emphasis: {
@@ -1490,8 +1506,8 @@
                    type: 'pie',
                    radius: '50%',
                    data: [
                        { value: 1048, name: '男' },
                        { value: 735, name: '女' },
                        { value: $("#boy").val(), name: '男' },
                        { value: $("#girl").val(), name: '女' },
                    ],
                    emphasis: {
@@ -1501,50 +1517,6 @@
                            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'
                }
            ]
        };
        myChart.setOption(option);
    });
    $(function(){
        var chartDom = document.getElementById('cookieTeachCourse');
        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'
                }
            ]
        };
cloud-server-management/src/main/webapp/WEB-INF/view/system/ticket/ticket_add.html
@@ -123,7 +123,7 @@
                </div>
            </div>
            <#input id="startTime" name="有效期" type="text"/>
            @if(roletype==3){
            @if(userType==3){
            <div class="row" id="belongsCon" >
                <div class="form-group">
                    <div class="form-group">