From c832cae4de3ff53e3b80cad317fbdd84de46c02d Mon Sep 17 00:00:00 2001 From: hjl <1657978663@qq.com> Date: 星期五, 19 七月 2024 09:31:34 +0800 Subject: [PATCH] fix: 学习端bug --- ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TUserController.java | 156 +++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 130 insertions(+), 26 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 3fef92b..2e90069 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 @@ -64,11 +64,45 @@ @Resource private ITUserShareService userShareService; + @Autowired + private ITIntegralRecordService integralRecordService; @PostMapping("/getUserById/{id}") @ApiOperation(value = "根据用户id 获取用户信息", tags = {"管理后台-用户管理"}) public R<TUser> getUserById(@PathVariable("id") Integer id) { TUser byId = userService.getById(id); return R.ok(byId); + } + + @PostMapping("/vipInfoStudy") + @ApiOperation(value = "会员中心-获取会员说明、当前登录用户是否为会员、会员购买规格", tags = {"学习端-个人中心"}) + public R<List<VipInfoVO>> vipInfoStudy() { + if (tokenService.getLoginUserStudy() == null) { + throw new GlobalException("登录失效!"); + } + List<VipInfoVO> vipInfoVOS = new ArrayList<>(); + List<TVipSet> data = managementClient.getVipSet1().getData(); + for (TVipSet datum : data) { + VipInfoVO vipInfoVO = new VipInfoVO(); + vipInfoVO.setInfo(datum.getInfo()); + vipInfoVO.setId(datum.getId()); + Integer userid = tokenService.getLoginUserStudy().getUserid(); + TUser byId = userService.getById(userid); + // 先判断vipEndTime + if (byId.getVipEndTime() == null) { + vipInfoVO.setIsVip(0); + } else { + // 判断会员到期时间是否大于当前时间 + if (byId.getVipEndTime().getTime() > System.currentTimeMillis()) { + vipInfoVO.setIsVip(1); + } else { + vipInfoVO.setIsVip(0); + } + } + vipInfoVO.setTime(datum.getTime()); + vipInfoVO.setAmount(datum.getAmount()); + vipInfoVOS.add(vipInfoVO); + } + return R.ok(vipInfoVOS); } @PostMapping("/vipInfo") @@ -175,8 +209,12 @@ try { System.err.println("进入支付宝回调"); Map<String, String> map = payMoneyUtil.alipayCallback(request); - System.err.println("返回参数"); + System.err.println("返回参数" + map); if (null != map) { + PrintWriter out = response.getWriter(); + out.write("success"); + out.flush(); + out.close(); String out_trade_no = map.get("out_trade_no"); String trade_no = map.get("trade_no"); // 会员规格id @@ -192,6 +230,9 @@ String s1 = out_trade_no.split("_")[1]; Integer integer1 = Integer.valueOf(s1); TVipOrder byId = vipOrderService.getById(integer1); + if (byId.getBackTime() != null) { + return; + } byId.setPayState(2); byId.setTransactionId(trade_no); byId.setOutTradeNo(out_trade_no); @@ -241,10 +282,7 @@ // 修改用户会员续期信息 userService.updateById(byId1); - PrintWriter out = response.getWriter(); - out.write("success"); - out.flush(); - out.close(); + } } catch (Exception e) { e.printStackTrace(); @@ -257,11 +295,16 @@ try { Map<String, String> map = payMoneyUtil.weixinpayCallback(request); if (null != map) { + // 内部订单号 String out_trade_no = map.get("out_trade_no"); // 微信订单号 String transaction_id = map.get("transaction_id"); String result = map.get("result"); + PrintWriter out = response.getWriter(); + out.write(result); + out.flush(); + out.close(); // 会员规格id String s = out_trade_no.split("_")[0]; Integer integer = Integer.valueOf(s); @@ -322,10 +365,7 @@ vipOrderService.updateById(byId); // 修改用户会员续期信息 userService.updateById(byId1); - PrintWriter out = response.getWriter(); - out.write(result); - out.flush(); - out.close(); + } } catch (Exception e) { e.printStackTrace(); @@ -447,13 +487,14 @@ return R.ok("反馈成功"); } + @PostMapping("/parentLogin") @ApiOperation(value = "登录", tags = {"家长端-登录"}) @ApiImplicitParams({ @ApiImplicitParam(value = "手机号", name = "phone", dataType = "string", required = true), @ApiImplicitParam(value = "验证码", name = "phoneCode", dataType = "string", required = true) }) - public R<Map<String, Object>> login(String phone, String phoneCode) { + public R<Map<String, Object>> login(String phone, String phoneCode) throws Exception { TUser tUser1 = userService.getOne(new QueryWrapper<TUser>() .ne("state", 3) .eq("phone", phone)); @@ -474,12 +515,20 @@ if (!rCode.equalsIgnoreCase(phoneCode)) { return R.errorCode("登录失败,手机验证码无效!"); } else { + tUser1.setHeadImg("https://haitunyingyu.obs.cn-southwest-2.myhuaweicloud.com/admin/1c6ee218aa18434db2e86df903990de8.jpg"); tUser1 = getUser(phone); + String upperCase = UUIDUtil.getRandomCode(6).toUpperCase(); + tUser1.setAccount("用户"+upperCase); + tUser1.setName("用户"+upperCase); userService.save(tUser1); } } } else { + String upperCase = UUIDUtil.getRandomCode(6).toUpperCase(); tUser1 = getUser(phone); + tUser1.setHeadImg("https://haitunyingyu.obs.cn-southwest-2.myhuaweicloud.com/admin/1c6ee218aa18434db2e86df903990de8.jpg"); + tUser1.setAccount("用户"+upperCase); + tUser1.setName("用户"+upperCase); userService.save(tUser1); } } @@ -523,7 +572,7 @@ */ @PostMapping("/studyLogin") @ApiOperation(value = "学习端-登录", tags = {"学习端-登录"}) - public R<Map<String, Object>> studyLogin(@RequestBody RegisterPhoneRequest phoneRequest) { + public R<Map<String, Object>> studyLogin(@RequestBody RegisterPhoneRequest phoneRequest) throws Exception { String phone = phoneRequest.getPhone(); String phoneCode = phoneRequest.getPhoneCode(); if (!"123456".equals(phoneCode)) { @@ -550,6 +599,10 @@ } } else { user = getUser(phone); + user.setHeadImg("https://haitunyingyu.obs.cn-southwest-2.myhuaweicloud.com/admin/1c6ee218aa18434db2e86df903990de8.jpg"); + String upperCase = UUIDUtil.getRandomCode(6).toUpperCase(); + user.setAccount("用户"+upperCase); + user.setName("用户"+upperCase); userService.save(user); } // 生成登录用户信息 @@ -608,8 +661,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(); } @@ -637,7 +707,14 @@ TUserShare record = new TUserShare(); record.setIntegral(integral); record.setUserId(userid); + // 积分明细 + userShareService.save(record); + TIntegralRecord tIntegralRecord = new TIntegralRecord(); + tIntegralRecord.setIntegral(data.getIntegralShare()); + tIntegralRecord.setMethod("每日分享"); + tIntegralRecord.setUserId(userid); + integralRecordService.save(tIntegralRecord); } return R.ok(data); } @@ -667,6 +744,11 @@ record.setIntegral(integral); record.setUserId(userid); userShareService.save(record); + TIntegralRecord tIntegralRecord = new TIntegralRecord(); + tIntegralRecord.setIntegral(data.getIntegralShare()); + tIntegralRecord.setMethod("每日分享"); + tIntegralRecord.setUserId(userid); + integralRecordService.save(tIntegralRecord); } return R.ok(data); } @@ -701,7 +783,7 @@ .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)); + userStudy.setTotalStudy(Math.round((float) (totalStudy) / 3600)); return R.ok(new UserPersonalCenterVO(user, userStudy)); } @@ -734,6 +816,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); } @@ -798,7 +892,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); @@ -832,9 +926,14 @@ try { Map<String, String> map = payMoneyUtil.wxRefundCallback(request); if (null != map) { + String code = map.get("out_refund_no"); String refund_id = map.get("refund_id"); String result = map.get("result"); + PrintWriter out = response.getWriter(); + out.write(result); + out.flush(); + out.close(); TVipOrder one = vipOrderService.getOne(new QueryWrapper<TVipOrder>() .eq("outTradeNo", code) .eq("payState", 3)); @@ -861,10 +960,7 @@ userService.updateById(byId1); } - PrintWriter out = response.getWriter(); - out.write(result); - out.flush(); - out.close(); + } } catch (Exception e) { e.printStackTrace(); @@ -896,6 +992,7 @@ case 2: // 支付宝退款 Map<String, String> stringStringMap1 = payMoneyUtil.aliRefund(transactionId, byId.getMoney().toString()); + System.err.println("支付宝退款数据" + stringStringMap1); if (null == stringStringMap1) { return R.fail("取消退款异常"); } @@ -903,6 +1000,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); @@ -910,7 +1008,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); // 判断用户是不是第一次充值 @@ -920,15 +1017,19 @@ .orderByDesc("createTime")); int size = list.size(); if (size == 0) { + System.err.println("证明这是用户第一次充值会员 将首次充值会员时间和会员到期时间清空"); // 证明这是用户第一次充值会员 将首次充值会员时间和会员到期时间清空 byId1.setVipEndTime(null); byId1.setVipPayTime(null); userService.updateById(byId1); + userService.updateOne(byId1.getId(), null, null); } else { + System.err.println("最近的一次充值会员时间 将会员到期时间回退到上一次"); // 最近的一次充值会员时间 TVipOrder tVipOrder = list.get(0); // 将会员到期时间回退到上一次 byId1.setVipEndTime(tVipOrder.getTime()); + byId1.setVipPayTime(tVipOrder.getPayTime()); userService.updateById(byId1); } return R.ok(); @@ -984,13 +1085,13 @@ res.setIsVip(0); } } - if (vipEndTime!=null){ + if (vipEndTime != null) { res.setVipPayTime(format.format(vipPayTime)); } res.setState(byId.getState()); res.setName(name); res.setPhone(phone); - if (insertTime!=null){ + if (insertTime != null) { res.setInsertTime(format.format(insertTime)); } res.setIntegral(byId.getIntegral()); @@ -1022,21 +1123,24 @@ studyRecord.setMonthStudy(Math.round((float) monthStudy / 3600)); // 总时长还需计算上游戏测试成绩时长 List<TGameRecord> gameRecordList = gameRecordService.lambdaQuery().eq(TGameRecord::getUserId, dto.getId()) - .eq(TGameRecord::getDisabled, 0).list(); + .eq(TGameRecord::getDisabled, 0) + .orderByDesc(TGameRecord::getCreateTime) + .list(); 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()+""); + 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(); - - res.setSurplus(studyRecord.getSurplus()+""); + 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()); -- Gitblit v1.7.1