From 0aa266f982339c78de8c441652f07f6e5de0d158 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期三, 03 七月 2024 16:59:09 +0800 Subject: [PATCH] bug修改 --- ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TUserController.java | 230 +++++++++++++++++++++++++++++++++++--------------------- 1 files changed, 143 insertions(+), 87 deletions(-) diff --git a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TUserController.java b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TUserController.java index 4c69795..e857fd7 100644 --- a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TUserController.java +++ b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TUserController.java @@ -28,6 +28,7 @@ import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import io.swagger.models.auth.In; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; @@ -164,27 +165,8 @@ PayVO payVO = new PayVO(); payVO.setOrderId(tVipOrder.getId()); payVO.setId(id); - - return R.ok(payVO); -// switch (payType) { -// case 1: -// return payMoneyUtil.weixinpay -// ("购买会员", "", -// id + "_" + tVipOrder.getId() + "_" + -// UUIDUtil.getRandomCode(8), -// tVipOrder.getMoney().toString(), -// "/base/wxPayBuyVip", "APP", ""); -// case 2: -// return payMoneyUtil.alipay -// ("购买会员", -// "购买会员下单支付", -// "", -// id + "_" + tVipOrder.getId() + "_" + -// UUIDUtil.getRandomCode(8), -// tVipOrder.getMoney().toString(), -// "/base/aliPayBuyVip"); -// } + } @@ -192,7 +174,9 @@ @PostMapping("/aliPayBuyVip") public void addVipPaymentAliCallback(HttpServletRequest request, HttpServletResponse response) { try { + System.err.println("进入支付宝回调"); Map<String, String> map = payMoneyUtil.alipayCallback(request); + System.err.println("返回参数"+map); if (null != map) { String out_trade_no = map.get("out_trade_no"); String trade_no = map.get("trade_no"); @@ -213,7 +197,6 @@ byId.setTransactionId(trade_no); byId.setOutTradeNo(out_trade_no); byId.setPayTime(new Date()); - TUser byId1 = userService.getById(byId.getUserId()); if (byId1.getVipPayTime() == null) { @@ -381,6 +364,18 @@ } } + @PostMapping("/studyPage") + @ApiOperation(value = "学习端", tags = {"启动页"}) + public R<String> studyPage() { + List<TPage> data = managementClient.getPage1().getData(); + for (TPage datum : data) { + if (datum.getType() == 1) { + return R.ok(datum.getImg()); + } + } + return R.ok(); + } + @PostMapping("/parentPage") @ApiOperation(value = "平板", tags = {"启动页"}) public R<String> parentPage() { @@ -480,12 +475,18 @@ if (!rCode.equalsIgnoreCase(phoneCode)) { return R.errorCode("登录失败,手机验证码无效!"); } else { + tUser1.setHeadImg("https://haitunyingyu.obs.cn-southwest-2.myhuaweicloud.com/admin/1c6ee218aa18434db2e86df903990de8.jpg"); tUser1 = getUser(phone); + tUser1.setAccount("用户"+UUIDUtil.getNumberRandom(6)); + tUser1.setName("用户"+UUIDUtil.getNumberRandom(6)); userService.save(tUser1); } } } else { tUser1 = getUser(phone); + tUser1.setHeadImg("https://haitunyingyu.obs.cn-southwest-2.myhuaweicloud.com/admin/1c6ee218aa18434db2e86df903990de8.jpg"); + tUser1.setAccount("用户"+UUIDUtil.getNumberRandom(6)); + tUser1.setName("用户"+UUIDUtil.getNumberRandom(6)); userService.save(tUser1); } } @@ -503,7 +504,10 @@ if (null == userStudy) { TUserStudy study = new TUserStudy(); study.setUserId(tUser1.getId()); - study.setWeek(Constants.ONE); + // 学习周目 + TStudy tStudy = studyService.lambdaQuery().eq(TStudy::getQuarter, Constants.ONE) + .orderByAsc(TStudy::getWeek).last("limit 1").one(); + study.setWeek(tStudy.getWeek()); study.setDay(Constants.ONE); study.setTotalStudy(Constants.ZERO); study.setTodayStudy(Constants.ZERO); @@ -553,6 +557,9 @@ } } else { user = getUser(phone); + user.setHeadImg("https://haitunyingyu.obs.cn-southwest-2.myhuaweicloud.com/admin/1c6ee218aa18434db2e86df903990de8.jpg"); + user.setAccount("用户"+UUIDUtil.getNumberRandom(6)); + user.setName("用户"+UUIDUtil.getNumberRandom(6)); userService.save(user); } // 生成登录用户信息 @@ -564,25 +571,6 @@ HashMap<String, Object> map = new HashMap<>(); // 获取登录token map.put("token", tokenService.createTokenStudy(loginUserParent)); - // 学习进度检查 - TUserStudy userStudy = userStudyService.lambdaQuery().eq(TUserStudy::getUserId, user.getId()) - .eq(TUserStudy::getDisabled, 0).one(); - if (null == userStudy) { - TUserStudy study = new TUserStudy(); - study.setUserId(user.getId()); - study.setWeek(Constants.ONE); - study.setDay(Constants.ONE); - study.setTotalStudy(Constants.ZERO); - study.setTodayStudy(Constants.ZERO); - study.setWeekStudy(Constants.ZERO); - study.setMonthStudy(Constants.ZERO); - study.setListen(Constants.BURDEN_ONE); - study.setLook(Constants.BURDEN_ONE); - study.setInduction(Constants.BURDEN_ONE); - study.setAnswer(Constants.BURDEN_ONE); - study.setPair(Constants.BURDEN_ONE); - userStudyService.save(study); - } return R.ok(map); } @@ -630,8 +618,25 @@ @ApiOperation(value = "发送手机验证码", tags = {"家长端/学习端-发送手机验证码"}) @ApiImplicitParams({ @ApiImplicitParam(value = "手机号", name = "phone", dataType = "string", required = true), + @ApiImplicitParam(value = "类型 更换手机号的时候传该参数 传1", name = "type", dataType = "int"), }) - public R<?> sendPhoneCode(@RequestParam String phone) throws Exception { + public R<?> sendPhoneCode(String phone, Integer type) throws Exception { + if (type != null && type == 1){ + List<TUser> list = userService.list(new QueryWrapper<TUser>() + .eq("phone", phone) + .ne("state", 3)); + if (!list.isEmpty()) { + return R.fail("更换的手机号已被使用!"); + } + LoginUserParent loginUser1 = tokenService.getLoginUser1(); + if (loginUser1==null){ + return R.tokenError("登录失效!"); + } + TUser byId = userService.getById(loginUser1.getUserid()); + if (byId.getPhone().equals(phone)){ + return R.fail("更换的手机号不能和原手机号相同!"); + } + } return userService.phoneCode(phone) ? R.ok() : R.fail(); } @@ -707,6 +712,9 @@ } TUser user = userService.lambdaQuery().eq(TUser::getId, loginUserStudy.getUserid()).one(); TUserStudy userStudy = userStudyService.lambdaQuery().eq(TUserStudy::getUserId, user.getId()).eq(TUserStudy::getDisabled, 0).one(); + if (null == userStudy) { + userStudy = createUserStudy(loginUserStudy.getUserid()); + } // 学习时长格式转换 Integer todayStudy = userStudy.getTodayStudy(); userStudy.setTodayStudy(Math.round((float) todayStudy / 3600)); @@ -722,7 +730,30 @@ Integer totalStudy = userStudy.getTotalStudy(); userStudy.setTotalStudy(Math.round((float) (totalStudy + sum) / 3600)); return R.ok(new UserPersonalCenterVO(user, userStudy)); - }@GetMapping("/userInfoParent") + } + + private TUserStudy createUserStudy(Integer userid) { + TUserStudy userStudy = new TUserStudy(); + userStudy.setUserId(userid); + // 学习周目 + TStudy tStudy = studyService.lambdaQuery().eq(TStudy::getQuarter, Constants.ONE) + .orderByAsc(TStudy::getWeek).last("limit 1").one(); + userStudy.setWeek(tStudy.getWeek()); + userStudy.setDay(Constants.ONE); + userStudy.setTotalStudy(Constants.ZERO); + userStudy.setTodayStudy(Constants.ZERO); + userStudy.setWeekStudy(Constants.ZERO); + userStudy.setMonthStudy(Constants.ZERO); + userStudy.setListen(Constants.BURDEN_ONE); + userStudy.setLook(Constants.BURDEN_ONE); + userStudy.setInduction(Constants.BURDEN_ONE); + userStudy.setAnswer(Constants.BURDEN_ONE); + userStudy.setPair(Constants.BURDEN_ONE); + userStudyService.save(userStudy); + return userStudy; + } + + @GetMapping("/userInfoParent") @ApiOperation(value = "用户详情", tags = {"家长端-用户详情"}) public R<TUser> userInfoParent() { LoginUserParent loginUserStudy = tokenService.getLoginUser1(); @@ -730,6 +761,18 @@ return R.tokenError("登录失效!"); } TUser byId = userService.getById(loginUserStudy.getUserid()); + // 判断用户会员到期时间 用于判断这个用户到底是不是会员 + if (null != byId.getVipEndTime()) { + Date vipEndTime = byId.getVipEndTime(); + Date now = new Date(); + if (vipEndTime.before(now)) { + byId.setIsVip(Constants.ZERO); + } else { + byId.setIsVip(Constants.ONE); + } + }else{ + byId.setIsVip(Constants.ZERO); + } return R.ok(byId); } @@ -794,7 +837,7 @@ List<TUser> list = userService.list(new QueryWrapper<TUser>() .eq("phone", phone) .ne("state", 3)); - if (list.size() > 0) { + if (!list.isEmpty()) { return R.fail("更换的手机号已被使用!"); } byId.setPhone(phone); @@ -805,7 +848,7 @@ Object redisPhoneCode = redisService.getCacheObject(RedisConstants.PHONE_CODE + phone); if (null == redisPhoneCode) { return R.errorCode("手机验证码无效"); - } else { + }else{ // redis 验证码的value 为 code:时间戳 String rCodeAndTime = String.valueOf(redisPhoneCode); String rCode = rCodeAndTime.split(":")[0]; @@ -892,6 +935,7 @@ case 2: // 支付宝退款 Map<String, String> stringStringMap1 = payMoneyUtil.aliRefund(transactionId, byId.getMoney().toString()); + System.err.println("支付宝退款数据"+ stringStringMap1); if (null == stringStringMap1) { return R.fail("取消退款异常"); } @@ -899,6 +943,7 @@ if (!"10000".equals(code)) { return R.fail(stringStringMap1.get("return_msg")); } + System.err.println("修改会员订单状态"+ byId); byId.setPayState(3); byId.setBackTime(new Date()); vipOrderService.updateById(byId); @@ -906,7 +951,6 @@ Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date()); calendar.add(Calendar.MONTH, -byId.getCount()); - Date dateAfterOneMonth = calendar.getTime(); Integer userId = byId.getUserId(); TUser byId1 = userService.getById(userId); // 判断用户是不是第一次充值 @@ -916,11 +960,13 @@ .orderByDesc("createTime")); int size = list.size(); if (size == 0) { + System.err.println("证明这是用户第一次充值会员 将首次充值会员时间和会员到期时间清空"); // 证明这是用户第一次充值会员 将首次充值会员时间和会员到期时间清空 byId1.setVipEndTime(null); byId1.setVipPayTime(null); userService.updateById(byId1); } else { + System.err.println("最近的一次充值会员时间 将会员到期时间回退到上一次"); // 最近的一次充值会员时间 TVipOrder tVipOrder = list.get(0); // 将会员到期时间回退到上一次 @@ -965,9 +1011,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(); @@ -983,57 +1026,70 @@ res.setIsVip(0); } } - if (vipPayTime != null) { + if (vipEndTime!=null){ res.setVipPayTime(format.format(vipPayTime)); } res.setState(byId.getState()); res.setName(name); res.setPhone(phone); - res.setInsertTime(format.format(insertTime)); + 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(); - // 游戏测试成绩 - 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()); - res.setTotalHours(studyRecord.getTotalStudy().doubleValue()); - res.setTodayHours(studyRecord.getTodayStudy().doubleValue()); - res.setWeekHours(studyRecord.getWeekStudy().doubleValue()); - res.setMonthHours(studyRecord.getMonthStudy().doubleValue()); + int size = studyService.list(new QueryWrapper<TStudy>() + .eq("type", 1)).size(); + studyRecord.setSurplus(size - studyRecord.getWeek()); } else { - res.setCurrent(0); - res.setSurplus(0); - res.setTotalHours(0.0); - res.setTodayHours(0.0); - res.setWeekHours(0.0); - res.setMonthHours(0.0); + 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; } - - List<UserGameRecordVO> userGameRecordVOS = new ArrayList<>(); + // 学习时长格式转换 + 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) + .orderByDesc(TGameRecord::getCreateTime) + .list(); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy.MM.dd HH:mm"); 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); + tGameRecord.setTime(simpleDateFormat.format(tGameRecord.getCreateTime())); } - list.setRecords(userGameRecordVOS); - list.setTotal(userGameRecordVOS.size()); - res.setGameRecords(list); + int sum = gameRecordList.stream().map(TGameRecord::getUseTime).mapToInt(Integer::intValue).sum(); + Integer totalStudy = studyRecord.getTotalStudy(); + studyRecord.setTotalStudy(Math.round((float) (totalStudy) / 3600)); + res.setCurrent(studyRecord.getWeek()+""); + // 剩余周目 + List<TStudy> studyList = studyService.lambdaQuery().eq(TStudy::getDisabled, 0) + .eq(TStudy::getType, Constants.ONE) + .orderByAsc(TStudy::getWeek).list(); + int size = studyService.residueWeek(studyRecord, studyList); + studyRecord.setSurplus(size); + res.setSurplus(studyRecord.getSurplus()+""); + res.setTotalHours(studyRecord.getTotalStudy().doubleValue()); + res.setTodayHours(studyRecord.getTodayStudy().doubleValue()); + res.setMonthHours(studyRecord.getMonthStudy().doubleValue()); + 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); } -- Gitblit v1.7.1