无关风月
2024-07-01 4712c04afe2aedeed20ddc5b1a3b0ba66b89cb9b
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TUserController.java
@@ -192,7 +192,9 @@
    @PostMapping("/aliPayBuyVip")
    public void addVipPaymentAliCallback(HttpServletRequest request, HttpServletResponse response) {
        try {
            System.err.println("进入支付宝回调");
            Map<String, String> map = payMoneyUtil.alipayCallback(request);
            System.err.println("返回参数");
            if (null != map) {
                String out_trade_no = map.get("out_trade_no");
                String trade_no = map.get("trade_no");
@@ -213,7 +215,6 @@
                byId.setTransactionId(trade_no);
                byId.setOutTradeNo(out_trade_no);
                byId.setPayTime(new Date());
                TUser byId1 = userService.getById(byId.getUserId());
                if (byId1.getVipPayTime() == null) {
@@ -987,9 +988,6 @@
    public R<UserInfoVO> getUserInfo(@RequestBody UserInfoQuery dto) {
        SimpleDateFormat format = new SimpleDateFormat("yyyy.MM.dd");
        UserInfoVO res = new UserInfoVO();
        PageInfo<UserGameRecordVO> list = new PageInfo<>(dto.getPageNumber(), dto.getPageSize());
        TUser byId = userService.getById(dto.getId());
        String name = byId.getName();
        String phone = byId.getPhone();
@@ -1005,57 +1003,67 @@
                res.setIsVip(0);
            }
        }
        if (vipPayTime != null) {
        if (vipEndTime!=null){
            res.setVipPayTime(format.format(vipPayTime));
        }
        res.setState(byId.getState());
        res.setName(name);
        res.setPhone(phone);
        if (insertTime!=null){
        res.setInsertTime(format.format(insertTime));
        }
        res.setIntegral(byId.getIntegral());
        // 学习记录
        TUserStudy studyRecord = userStudyService.lambdaQuery().eq(TUserStudy::getUserId, dto.getId())
                .eq(TUserStudy::getDisabled, 0).one();
        // 游戏测试成绩
        // 查询剩余周目
        if (studyRecord != null) {
            int size = studyService.list(new QueryWrapper<TStudy>()
                    .eq("type", 1)).size();
            studyRecord.setSurplus(size - studyRecord.getWeek());
        } else {
            TUserStudy tUserStudy = new TUserStudy();
            tUserStudy.setSurplus(studyService.list(new QueryWrapper<TStudy>()
                    .eq("type", 1)).size());
            tUserStudy.setWeek(1);
            tUserStudy.setTodayStudy(Constants.ZERO);
            tUserStudy.setTotalStudy(Constants.ZERO);
            tUserStudy.setWeekStudy(Constants.ZERO);
            tUserStudy.setMonthStudy(Constants.ZERO);
            studyRecord = tUserStudy;
        }
        // 学习时长格式转换
        Integer todayStudy = studyRecord.getTodayStudy();
        studyRecord.setTodayStudy(Math.round((float) todayStudy / 3600));
        Integer weekStudy = studyRecord.getWeekStudy();
        studyRecord.setWeekStudy(Math.round((float) weekStudy / 3600));
        Integer monthStudy = studyRecord.getMonthStudy();
        studyRecord.setMonthStudy(Math.round((float) monthStudy / 3600));
        // 总时长还需计算上游戏测试成绩时长
        List<TGameRecord> gameRecordList = gameRecordService.lambdaQuery().eq(TGameRecord::getUserId, dto.getId())
                .eq(TGameRecord::getDisabled, 0).list();
        if (studyRecord != null) {
            res.setCurrent(studyRecord.getWeek());
            // 查询当前听的总周目
            List<TStudy> list1 = studyService.list(new QueryWrapper<>());
            res.setSurplus(list1.size() - studyRecord.getWeek());
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy.MM.dd HH:mm");
        for (TGameRecord tGameRecord : gameRecordList) {
            tGameRecord.setTime(simpleDateFormat.format(tGameRecord.getCreateTime()));
        }
        int sum = gameRecordList.stream().map(TGameRecord::getUseTime).mapToInt(Integer::intValue).sum();
        Integer totalStudy = studyRecord.getTotalStudy();
        studyRecord.setTotalStudy(Math.round((float) (totalStudy + sum) / 3600));
        res.setCurrent(studyRecord.getWeek()+"");
        // 剩余周目
        List<TStudy> studyList = studyService.lambdaQuery().eq(TStudy::getDisabled, 0)
                .eq(TStudy::getType, Constants.ONE)
                .orderByAsc(TStudy::getWeek).list();
        res.setSurplus(studyRecord.getSurplus()+"");
            res.setTotalHours(studyRecord.getTotalStudy().doubleValue());
            res.setTodayHours(studyRecord.getTodayStudy().doubleValue());
            res.setWeekHours(studyRecord.getWeekStudy().doubleValue());
            res.setMonthHours(studyRecord.getMonthStudy().doubleValue());
        } else {
            res.setCurrent(0);
            res.setSurplus(0);
            res.setTotalHours(0.0);
            res.setTodayHours(0.0);
            res.setWeekHours(0.0);
            res.setMonthHours(0.0);
        }
        List<UserGameRecordVO> userGameRecordVOS = new ArrayList<>();
        for (TGameRecord tGameRecord : gameRecordList) {
            UserGameRecordVO userGameRecordVO = new UserGameRecordVO();
            userGameRecordVO.setGameName(tGameRecord.getGameName());
            userGameRecordVO.setUseTime(tGameRecord.getUseTime().toString());
            if (tGameRecord.getGameDifficulty() == 0) {
                userGameRecordVO.setAccuracy("100%");
            } else {
                userGameRecordVO.setAccuracy(tGameRecord.getAccuracy() + "%");
            }
            if (tGameRecord.getGameDifficulty() == 0) {
                userGameRecordVO.setTime(tGameRecord.getUseTime());
            } else {
                userGameRecordVO.setTime(tGameRecord.getUseTime() / 2);
            }
            userGameRecordVOS.add(userGameRecordVO);
        }
        list.setRecords(userGameRecordVOS);
        list.setTotal(userGameRecordVOS.size());
        res.setGameRecords(list);
        res.setWeekHours(studyRecord.getWeekStudy().doubleValue());
        PageInfo<TGameRecord> list1 = new PageInfo<>(dto.getPageNumber(), dto.getPageSize());
        list1.setTotal(gameRecordList.size());
        list1.setRecords(gameRecordList);
        res.setGameRecords(list1);
        return R.ok(res);
    }