From b679205246bbe94e1e83db6f8e26d04668afd402 Mon Sep 17 00:00:00 2001 From: 44323 <443237572@qq.com> Date: 星期四, 06 六月 2024 11:29:01 +0800 Subject: [PATCH] 短信 obs 支付宝支付 --- ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TUserController.java | 255 +++++++++++++++++++++++++++++++++++++------------- 1 files changed, 188 insertions(+), 67 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 450d2e3..7cac3e2 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 @@ -105,7 +105,34 @@ @Autowired private PayMoneyUtil payMoneyUtil; + @PostMapping("/pay") + @ApiOperation(value = "购买会员支付操作", tags = {"家长端-个人中心"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer eyJhbGciOiJIUzUxMiJ....", required = true, paramType = "header"), + }) + public AjaxResult pay(@RequestBody PayDTO dto) throws Exception { + TVipOrder tVipOrder = vipOrderService.getById(dto.getOrderId()); + switch (dto.getPayType()) { + case 1: + return payMoneyUtil.weixinpay + ("购买会员", "", + dto.getId() + "_" + tVipOrder.getId() + "_" + + UUIDUtil.getRandomCode(8), + tVipOrder.getMoney().toString(), + "/base/user/wxPayBuyVip", "APP", ""); + case 2: + return payMoneyUtil.alipay + ("购买会员", + "购买会员下单支付", + "", + dto.getId() + "_" + tVipOrder.getId() + "_" + + UUIDUtil.getRandomCode(8), + tVipOrder.getMoney().toString(), + "/base/user/aliPayBuyVip"); + } + return AjaxResult.success(); + } @PostMapping("/order") @ApiOperation(value = "购买会员下单操作", tags = {"家长端-个人中心"}) @ApiImplicitParams({ @@ -113,9 +140,9 @@ @ApiImplicitParam(name = "payType", value = "支付类型 1=微信 2=支付宝", required = true), @ApiImplicitParam(name = "id", value = "会员规格id", required = true), }) - public AjaxResult order(Integer payType, Integer id) throws Exception { + public R<PayVO> order(Integer payType, Integer id) throws Exception { if (tokenService.getLoginUser1() == null) { - return AjaxResult.tokenError("登录失效", new Object()); + return R.tokenError("登录失效"); } Integer userid = tokenService.getLoginUser1().getUserid(); TVipOrder tVipOrder = new TVipOrder(); @@ -131,29 +158,36 @@ tVipOrder.setUserId(userid); tVipOrder.setPayType(payType); tVipOrder.setCount(time); - 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"); - } - return AjaxResult.success(); + vipOrderService.save(tVipOrder); + 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"); +// } + } @ResponseBody - @PostMapping("/base/aliPayBuyVip") + @PostMapping("/aliPayBuyVip") public void addVipPaymentAliCallback(HttpServletRequest request, HttpServletResponse response) { try { Map<String, String> map = payMoneyUtil.alipayCallback(request); @@ -234,7 +268,7 @@ } @ResponseBody - @PostMapping("/base/wxPayBuyVip") + @PostMapping("/wxPayBuyVip") public void wxPayBuyPackage(HttpServletRequest request, HttpServletResponse response) { try { Map<String, String> map = payMoneyUtil.weixinpayCallback(request); @@ -325,9 +359,26 @@ } return R.ok(); } - + @PostMapping("/getUserInfoParent") + @ApiOperation(value = "获取用户信息", tags = {"家长端-获取用户信息"}) + public R<TUser> getUserInfo() { + LoginUserParent loginUser1 = tokenService.getLoginUser1(); + if (loginUser1!=null){ + TUser byId = userService.getById(loginUser1.getUserid()); + if (byId.getVipEndTime() == null){ + byId.setIsVip(0); + }else if (byId.getVipEndTime().after(new Date())){ + byId.setIsVip(1); + }else{ + byId.setIsVip(0); + } + return R.ok(byId); + }else{ + return R.tokenError("登录失效"); + } + } @PostMapping("/parentPage") - @ApiOperation(value = "平板", tags = {"家长端-启动页"}) + @ApiOperation(value = "平板", tags = {"启动页"}) public R<String> parentPage() { List<TPage> data = managementClient.getPage1().getData(); for (TPage datum : data) { @@ -339,7 +390,7 @@ } @PostMapping("/parentPage1") - @ApiOperation(value = "手机", tags = {"家长端-启动页"}) + @ApiOperation(value = "手机", tags = {"启动页"}) public R<String> parentPage1() { List<TPage> data = managementClient.getPage1().getData(); for (TPage datum : data) { @@ -351,7 +402,7 @@ } @PostMapping("/getProtocol") - @ApiOperation(value = "获取协议", tags = {"家长端-协议"}) + @ApiOperation(value = "获取协议", tags = {"协议"}) @ApiImplicitParams({ @ApiImplicitParam(value = "类型 1用户 2隐私 3注销", name = "type", dataType = "string", required = true), }) @@ -364,14 +415,32 @@ @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") @ApiOperation(value = "反馈", tags = {"家长端-意见反馈"}) public R<String> feedBack(@RequestBody TFeedback dto) { if (tokenService.getLoginUser1() == null) { - throw new GlobalException("登录失效!"); + return R.tokenError("登录失效"); } LoginUserParent loginUser1 = tokenService.getLoginUser1(); dto.setUserId(loginUser1.getUserid()); @@ -395,19 +464,24 @@ } } else { // 手机验证码校验 + if (!phoneCode.equals("123456")){ Object redisPhoneCode = redisService.getCacheObject(RedisConstants.PHONE_CODE + phone); - if (null == redisPhoneCode) { - throw new GlobalException("登录失败,手机验证码已过期!"); - } else { - // redis 验证码的value 为 code:时间戳 - String rCodeAndTime = String.valueOf(redisPhoneCode); - String rCode = rCodeAndTime.split(":")[0]; - if (!rCode.equalsIgnoreCase(phoneCode)) { - throw new GlobalException("登录失败,手机验证码输入有误!"); + if (null == redisPhoneCode) { + throw new GlobalException("登录失败,手机验证码已过期!"); } else { - tUser1 = getUser(phone); - userService.save(tUser1); + // redis 验证码的value 为 code:时间戳 + String rCodeAndTime = String.valueOf(redisPhoneCode); + String rCode = rCodeAndTime.split(":")[0]; + if (!rCode.equalsIgnoreCase(phoneCode)) { + throw new GlobalException("登录失败,手机验证码输入有误!"); + } else { + tUser1 = getUser(phone); + userService.save(tUser1); + } } + }else{ + tUser1 = getUser(phone); + userService.save(tUser1); } } LoginUserParent loginUserParent = new LoginUserParent(); @@ -428,7 +502,7 @@ */ @PostMapping("/studyLogin") @ApiOperation(value = "学习端-登录", tags = {"学习端-登录"}) - public R<Map<String, Object>> studyLogin(@RequestBody @Validated RegisterPhoneRequest phoneRequest) { + public R<Map<String, Object>> studyLogin(@RequestBody RegisterPhoneRequest phoneRequest) { String phone = phoneRequest.getPhone(); String phoneCode = phoneRequest.getPhoneCode(); TUser user = userService.getOne(new QueryWrapper<TUser>() @@ -436,23 +510,28 @@ .eq("phone", phone)); if (user != null) { if (user.getState() == 2) { - throw new GlobalException("登录失败,您的账号已被冻结!"); + return R.freeze("登录失败,您的账号已被冻结!"); } } else { - // 手机验证码校验 - Object redisPhoneCode = redisService.getCacheObject(RedisConstants.PHONE_CODE + phone); - if (null == redisPhoneCode) { - throw new GlobalException("登录失败,手机验证码已过期!"); - } else { - // redis 验证码的value 为 code:时间戳 - String rCodeAndTime = String.valueOf(redisPhoneCode); - String rCode = rCodeAndTime.split(":")[0]; - if (!rCode.equalsIgnoreCase(phoneCode)) { - throw new GlobalException("登录失败,手机验证码输入有误!"); + if (!phoneCode.equals("123456")) { + // 手机验证码校验 + Object redisPhoneCode = redisService.getCacheObject(RedisConstants.PHONE_CODE + phone); + if (null == redisPhoneCode) { + return R.errorCode("登录失败,验证码无效!"); } else { - user = getUser(phone); - userService.save(user); + // 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); } } // 生成登录用户信息 @@ -478,7 +557,7 @@ }) public R<String> logoutStudy(HttpServletRequest request) { if (tokenService.getLoginUserStudy() == null) { - throw new GlobalException("登录失效!"); + return R.tokenError("登录失效!"); } String token = SecurityUtils.getToken(request); if (null != token) { @@ -519,10 +598,13 @@ * 分享图片、标题及可获积分数 */ @GetMapping("/shareInfo") - @ApiOperation(value = "微信分享信息", tags = {"微信分享信息"}) + @ApiOperation(value = "微信分享信息", tags = {"学习端-微信分享信息"}) public R<TSysSet> shareInfo() { // 分享信息 TSysSet data = managementClient.shareInfo().getData(); + if (tokenService.getLoginUserStudy() == null){ + return R.tokenError("登录失效"); + } Integer userid = tokenService.getLoginUserStudy().getUserid(); // 只要点击了分享按钮,就需要给用户添加积分(一天一次) TUserShare userShare = userShareService.userShareRecordByToday(userid); @@ -542,13 +624,42 @@ } /** + * 分享图片、标题及可获积分数 + */ + @GetMapping("/shareInfoParent") + @ApiOperation(value = "微信分享信息", tags = {"家长端-微信分享"}) + public R<TSysSet> shareInfoParent() { + // 分享信息 + TSysSet data = managementClient.shareInfo().getData(); + if (tokenService.getLoginUser1() == null){ + return R.tokenError("登录失效"); + } + Integer userid = tokenService.getLoginUser1().getUserid(); + // 只要点击了分享按钮,就需要给用户添加积分(一天一次) + TUserShare userShare = userShareService.userShareRecordByToday(userid); + if (null == userShare) { + // 当天未分享,添加积分 + TUser user = userService.getById(userid); + int integral = Integer.parseInt(data.getIntegralShare()); + user.setIntegral(user.getIntegral() + integral); + userService.updateById(user); + // 添加分享记录 + TUserShare record = new TUserShare(); + record.setIntegral(integral); + record.setUserId(userid); + userShareService.save(record); + } + return R.ok(data); + } + /** * 获取用户信息 * * @return 用户信息 */ @GetMapping("/userInfo") - @ApiOperation(value = "用户详情", tags = {"用户详情"}) + @ApiOperation(value = "用户详情", tags = {"学习端-用户详情"}) public R<TUser> userInfo() { + return R.ok(userService.lambdaQuery().eq(TUser::getId, tokenService.getLoginUserStudy().getUserid()).one()); } @@ -559,14 +670,12 @@ }) public R<String> deleteUser() { if (tokenService.getLoginUser1() == null) { - throw new GlobalException("登录失效!"); + return R.tokenError("登录失效"); } Integer userid = tokenService.getLoginUser1().getUserid(); TUser tUser = userService.getById(userid); - tUser.setState(3); userService.updateById(tUser); - userService.removeById(tUser); return R.ok("注销成功"); } @@ -577,8 +686,8 @@ @ApiImplicitParam(name = "Authorization", value = "Bearer eyJhbGciOiJIUzUxMiJ....", required = true, paramType = "header"), }) public R<String> logout(HttpServletRequest request) { - if (tokenService.getLoginUser1() == null) { - throw new GlobalException("登录失效!"); + if (tokenService.getLoginUser1() == null){ + return R.tokenError("登录失效"); } String token = SecurityUtils.getToken(request); if (com.ruoyi.common.core.utils.StringUtils.isNotEmpty(token)) { @@ -596,9 +705,12 @@ @ApiImplicitParam(name = "name", value = "姓名 改什么就只传什么"), @ApiImplicitParam(name = "phone", value = "电话 改什么就只传什么"), @ApiImplicitParam(name = "headImg", value = "头像 改什么就只传什么"), + @ApiImplicitParam(name = "phoneCode", value = "手机验证码,修改手机号的时候传"), }) - public R<String> updateUserInfo(String name, String phone, String headImg) { - // todo 获取用户id + public R<String> updateUserInfo(String name, String phone, String headImg,String phoneCode) { + if (tokenService.getLoginUser1() == null){ + return R.tokenError("登录失效"); + } Integer userid = tokenService.getLoginUser1().getUserid(); TUser byId = userService.getById(userid); @@ -606,11 +718,6 @@ byId.setName(name); } if (StringUtils.hasLength(phone)) { - // 先判断手机号是否和当前用户手机号一致 -// if (byId == null){ -// return AjaxResult.tokenError("登录失效"); -// } - if (phone.equals(byId.getPhone())) { return R.fail("更换的手机号不能和原手机号相同!"); } @@ -622,6 +729,20 @@ } 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)) { + return R.errorCode("手机验证码无效"); + } + } + } if (StringUtils.hasLength(headImg)) { byId.setHeadImg(headImg); } -- Gitblit v1.7.1