From 153622ed0e29399d67a6de14517e96cbc15ffdad Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期三, 19 六月 2024 16:07:54 +0800 Subject: [PATCH] bug修改 --- ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TUserController.java | 187 ++++++++++++++++++++++++++++++++++------------ 1 files changed, 136 insertions(+), 51 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 f2e00e1..4c69795 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 @@ -3,6 +3,7 @@ import com.alipay.api.AlipayApiException; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.ruoyi.common.core.constant.Constants; import com.ruoyi.common.core.constant.RedisConstants; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.exception.GlobalException; @@ -104,36 +105,36 @@ @Autowired private PayMoneyUtil payMoneyUtil; + @PostMapping("/pay") @ApiOperation(value = "购买会员支付操作", tags = {"家长端-个人中心"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer eyJhbGciOiJIUzUxMiJ....", required = true, paramType = "header"), - @ApiImplicitParam(name = "payType", value = "支付类型 1=微信 2=支付宝", required = true), - @ApiImplicitParam(name = "orderId", value = "订单id", required = true), - @ApiImplicitParam(name = "id", value = "会员规格id", required = true), + }) - public AjaxResult pay(Integer payType, Integer orderId, Integer id) throws Exception { - TVipOrder tVipOrder = vipOrderService.getById(orderId); - switch (payType) { + public AjaxResult pay(@RequestBody PayDTO dto) throws Exception { + TVipOrder tVipOrder = vipOrderService.getById(dto.getOrderId()); + switch (dto.getPayType()) { case 1: return payMoneyUtil.weixinpay ("购买会员", "", - id + "_" + tVipOrder.getId() + "_" + + dto.getId() + "_" + tVipOrder.getId() + "_" + UUIDUtil.getRandomCode(8), tVipOrder.getMoney().toString(), - "/base/wxPayBuyVip", "APP", ""); + "/base/user/wxPayBuyVip", "APP", ""); case 2: return payMoneyUtil.alipay ("购买会员", "购买会员下单支付", "", - id + "_" + tVipOrder.getId() + "_" + + dto.getId() + "_" + tVipOrder.getId() + "_" + UUIDUtil.getRandomCode(8), tVipOrder.getMoney().toString(), - "/base/aliPayBuyVip"); + "/base/user/aliPayBuyVip"); } return AjaxResult.success(); } + @PostMapping("/order") @ApiOperation(value = "购买会员下单操作", tags = {"家长端-个人中心"}) @ApiImplicitParams({ @@ -188,7 +189,7 @@ } @ResponseBody - @PostMapping("/base/aliPayBuyVip") + @PostMapping("/aliPayBuyVip") public void addVipPaymentAliCallback(HttpServletRequest request, HttpServletResponse response) { try { Map<String, String> map = payMoneyUtil.alipayCallback(request); @@ -269,7 +270,7 @@ } @ResponseBody - @PostMapping("/base/wxPayBuyVip") + @PostMapping("/wxPayBuyVip") public void wxPayBuyPackage(HttpServletRequest request, HttpServletResponse response) { try { Map<String, String> map = payMoneyUtil.weixinpayCallback(request); @@ -418,7 +419,26 @@ @ApiOperation(value = "使用指南", tags = {"家长端-使用指南"}) public R<PageInfo<TUseGuide>> useGuide(@RequestBody UseGuideQuery query) { PageInfo<TUseGuide> data = managementClient.useGuide1(query).getData(); + for (TUseGuide record : data.getRecords()) { + String plainTextContent = record.getAnswer().replaceAll("\\<.*?\\>", ""); + record.setCount(plainTextContent); + } return R.ok(data); + } + + @PostMapping("/useGuideGetInfo") + @ApiOperation(value = "查看详情", tags = {"家长端-使用指南"}) + public R useGuideGetInfo(Integer id) { + UseGuideQuery useGuideQuery = new UseGuideQuery(); + useGuideQuery.setPageNumber(1); + useGuideQuery.setPageSize(300); + PageInfo<TUseGuide> data = managementClient.useGuide1(useGuideQuery).getData(); + for (TUseGuide record : data.getRecords()) { + if (record.getId() == id) { + return R.ok(record.getAnswer()); + } + } + return R.ok(); } @PostMapping("/feedBack") @@ -445,20 +465,20 @@ .eq("phone", phone)); if (tUser1 != null) { if (tUser1.getState() == 2) { - throw new GlobalException("登录失败,您的账号已被冻结!"); + return R.freeze("登录失败,您的账号已被冻结!"); } } else { // 手机验证码校验 if (!phoneCode.equals("123456")) { Object redisPhoneCode = redisService.getCacheObject(RedisConstants.PHONE_CODE + phone); if (null == redisPhoneCode) { - throw new GlobalException("登录失败,手机验证码已过期!"); + return R.errorCode("登录失败,手机验证码无效!"); } else { // redis 验证码的value 为 code:时间戳 String rCodeAndTime = String.valueOf(redisPhoneCode); String rCode = rCodeAndTime.split(":")[0]; if (!rCode.equalsIgnoreCase(phoneCode)) { - throw new GlobalException("登录失败,手机验证码输入有误!"); + return R.errorCode("登录失败,手机验证码无效!"); } else { tUser1 = getUser(phone); userService.save(tUser1); @@ -473,10 +493,29 @@ loginUserParent.setName(tUser1.getName()); loginUserParent.setUserid(tUser1.getId()); loginUserParent.setPhone(tUser1.getPhone()); - loginUserParent.setLoginTime(new Date().getTime()); + loginUserParent.setLoginTime(System.currentTimeMillis()); HashMap<String, Object> map = new HashMap<>(); - map.put("token", tokenService.createToken1(loginUserParent)); // 获取登录token + map.put("token", tokenService.createToken1(loginUserParent)); + // 学习进度检查 + TUserStudy userStudy = userStudyService.lambdaQuery().eq(TUserStudy::getUserId, tUser1.getId()) + .eq(TUserStudy::getDisabled, 0).one(); + if (null == userStudy) { + TUserStudy study = new TUserStudy(); + study.setUserId(tUser1.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); } @@ -490,6 +529,21 @@ public R<Map<String, Object>> studyLogin(@RequestBody RegisterPhoneRequest phoneRequest) { String phone = phoneRequest.getPhone(); String phoneCode = phoneRequest.getPhoneCode(); + if (!"123456".equals(phoneCode)) { + // 验证码校验 + Object redisPhoneCode = redisService.getCacheObject(RedisConstants.PHONE_CODE + phone); + if (null == redisPhoneCode) { + return R.errorCode("登录失败,验证码无效!"); + } else { + // redis 验证码的value 为 code:时间戳 + String rCodeAndTime = String.valueOf(redisPhoneCode); + String rCode = rCodeAndTime.split(":")[0]; + if (!rCode.equalsIgnoreCase(phoneCode)) { + return R.errorCode("登录失败,验证码无效!"); + } + } + } + // 获取手机号所注册用户信息 TUser user = userService.getOne(new QueryWrapper<TUser>() .ne("state", 3) .eq("phone", phone)); @@ -498,26 +552,8 @@ return R.freeze("登录失败,您的账号已被冻结!"); } } else { - if (!phoneCode.equals("123456")) { - // 手机验证码校验 - Object redisPhoneCode = redisService.getCacheObject(RedisConstants.PHONE_CODE + phone); - if (null == redisPhoneCode) { - return R.errorCode("登录失败,验证码无效!"); - } else { - // redis 验证码的value 为 code:时间戳 - String rCodeAndTime = String.valueOf(redisPhoneCode); - String rCode = rCodeAndTime.split(":")[0]; - if (!rCode.equalsIgnoreCase(phoneCode)) { - return R.errorCode("登录失败,验证码无效!"); - } else { - user = getUser(phone); - userService.save(user); - } - } - } else { - user = getUser(phone); - userService.save(user); - } + user = getUser(phone); + userService.save(user); } // 生成登录用户信息 LoginUserParent loginUserParent = new LoginUserParent(); @@ -526,8 +562,27 @@ loginUserParent.setPhone(user.getPhone()); loginUserParent.setLoginTime(System.currentTimeMillis()); HashMap<String, Object> map = new HashMap<>(); - map.put("token", tokenService.createTokenStudy(loginUserParent)); // 获取登录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); } @@ -576,7 +631,7 @@ @ApiImplicitParams({ @ApiImplicitParam(value = "手机号", name = "phone", dataType = "string", required = true), }) - public R<?> sendPhoneCode(@RequestParam String phone) { + public R<?> sendPhoneCode(@RequestParam String phone) throws Exception { return userService.phoneCode(phone) ? R.ok() : R.fail(); } @@ -645,9 +700,37 @@ */ @GetMapping("/userInfo") @ApiOperation(value = "用户详情", tags = {"学习端-用户详情"}) - public R<TUser> userInfo() { - - return R.ok(userService.lambdaQuery().eq(TUser::getId, tokenService.getLoginUserStudy().getUserid()).one()); + public R<UserPersonalCenterVO> userInfo() { + LoginUserParent loginUserStudy = tokenService.getLoginUserStudy(); + if (null == loginUserStudy) { + return R.tokenError("登录失效!"); + } + TUser user = userService.lambdaQuery().eq(TUser::getId, loginUserStudy.getUserid()).one(); + TUserStudy userStudy = userStudyService.lambdaQuery().eq(TUserStudy::getUserId, user.getId()).eq(TUserStudy::getDisabled, 0).one(); + // 学习时长格式转换 + Integer todayStudy = userStudy.getTodayStudy(); + userStudy.setTodayStudy(Math.round((float) todayStudy / 3600)); + Integer weekStudy = userStudy.getWeekStudy(); + userStudy.setWeekStudy(Math.round((float) weekStudy / 3600)); + Integer monthStudy = userStudy.getMonthStudy(); + userStudy.setMonthStudy(Math.round((float) monthStudy / 3600)); + // 总时长还需计算上游戏测试成绩时长 + List<TGameRecord> gameRecordList = gameRecordService.lambdaQuery() + .eq(TGameRecord::getUserId, loginUserStudy.getUserid()) + .eq(TGameRecord::getDisabled, 0).list(); + int sum = gameRecordList.stream().map(TGameRecord::getUseTime).mapToInt(Integer::intValue).sum(); + Integer totalStudy = userStudy.getTotalStudy(); + userStudy.setTotalStudy(Math.round((float) (totalStudy + sum) / 3600)); + return R.ok(new UserPersonalCenterVO(user, userStudy)); + }@GetMapping("/userInfoParent") + @ApiOperation(value = "用户详情", tags = {"家长端-用户详情"}) + public R<TUser> userInfoParent() { + LoginUserParent loginUserStudy = tokenService.getLoginUser1(); + if (null == loginUserStudy) { + return R.tokenError("登录失效!"); + } + TUser byId = userService.getById(loginUserStudy.getUserid()); + return R.ok(byId); } @PostMapping("/deleteUser") @@ -717,16 +800,18 @@ byId.setPhone(phone); } // 手机验证码校验 - if (!phoneCode.equals("123456")) { - Object redisPhoneCode = redisService.getCacheObject(RedisConstants.PHONE_CODE + phone); - if (null == redisPhoneCode) { - return R.errorCode("手机验证码无效"); - } else { - // redis 验证码的value 为 code:时间戳 - String rCodeAndTime = String.valueOf(redisPhoneCode); - String rCode = rCodeAndTime.split(":")[0]; - if (!rCode.equalsIgnoreCase(phoneCode)) { + if (StringUtils.hasLength(phoneCode)) { + if (!phoneCode.equals("123456")) { + Object redisPhoneCode = redisService.getCacheObject(RedisConstants.PHONE_CODE + phone); + if (null == redisPhoneCode) { return R.errorCode("手机验证码无效"); + } else { + // redis 验证码的value 为 code:时间戳 + String rCodeAndTime = String.valueOf(redisPhoneCode); + String rCode = rCodeAndTime.split(":")[0]; + if (!rCode.equalsIgnoreCase(phoneCode)) { + return R.errorCode("手机验证码无效"); + } } } } -- Gitblit v1.7.1