From 32866c0896969b3ac6f3eaddf0420507708c9c52 Mon Sep 17 00:00:00 2001 From: 44323 <443237572@qq.com> Date: 星期五, 17 五月 2024 16:28:57 +0800 Subject: [PATCH] 代码提交 --- ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TUserController.java | 361 +++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 345 insertions(+), 16 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 433086e..cc0d7d8 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 @@ -1,32 +1,36 @@ package com.ruoyi.study.controller; +import com.alipay.api.AlipayApiException; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; +import com.ruoyi.common.security.service.TokenService; import com.ruoyi.management.api.feignClient.ManagementClient; import com.ruoyi.management.api.model.TPage; +import com.ruoyi.management.api.model.TVipSet; import com.ruoyi.study.domain.TUser; +import com.ruoyi.study.domain.TVipOrder; import com.ruoyi.study.dto.AppUserQuery; import com.ruoyi.study.dto.UserInfoQuery; import com.ruoyi.study.service.ITUserService; import com.ruoyi.study.service.IVipOrderService; -import com.ruoyi.study.vo.AppUserVO; -import com.ruoyi.study.vo.UserGameRecordVO; -import com.ruoyi.study.vo.UserInfoVO; -import com.ruoyi.study.vo.VipOrderVO; +import com.ruoyi.study.utils.PayMoneyUtil; +import com.ruoyi.study.utils.UUIDUtil; +import com.ruoyi.study.vo.*; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; +import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.PrintWriter; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; +import java.util.*; /** * <p> @@ -46,6 +50,169 @@ private IVipOrderService vipOrderService; @Autowired private ManagementClient managementClient; + @PostMapping("/vipInfo") + @ApiOperation(value = "会员中心-获取会员说明、当前登录用户是否为会员、会员购买规格", tags = {"家长端-个人中心"}) + public AjaxResult<List<VipInfoVO>> vipInfo() { + 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()); +// vipInfoVO.setIsVip(); + vipInfoVO.setTime(datum.getTime()); + vipInfoVO.setAmount(datum.getAmount()); + } + return AjaxResult.ok(vipInfoVOS); + } + @Autowired + private PayMoneyUtil payMoneyUtil; + + @PostMapping("/order") + @ApiOperation(value = "购买会员下单操作", tags = {"家长端-个人中心"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer eyJhbGciOiJIUzUxMiJ....", required = true, paramType = "header"), + @ApiImplicitParam(name = "payType", value = "支付类型 1=微信 2=支付宝", required = true), + @ApiImplicitParam(name = "id", value = "会员规格id", required = true), + }) + public AjaxResult order(Integer payType,Integer id) throws Exception { + TVipOrder tVipOrder = new TVipOrder(); + List<TVipSet> data = managementClient.getVipSet1().getData(); + Integer time = 0; + for (TVipSet datum : data) { + if (datum.getId() == id){ + tVipOrder.setMoney(datum.getAmount()); + time = datum.getTime(); + } + } + tVipOrder.setPayState(1); +// tVipOrder.setUserId(); +// tVipOrder.setPayTime(); +// tVipOrder.setBackTime(); +// tVipOrder.setTime(); + 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(); + } + @ResponseBody + @PostMapping("/base/aliPayBuyVip") + public void addVipPaymentAliCallback(HttpServletRequest request, HttpServletResponse response) { + try { + Map<String, String> map = payMoneyUtil.alipayCallback(request); + if (null != map) { + String out_trade_no = map.get("out_trade_no"); + String trade_no = map.get("trade_no"); + // 会员规格id + String s = out_trade_no.split("_")[0]; + Integer integer = Integer.valueOf(s); + Integer time = 0; + for (TVipSet datum : managementClient.getVipSet1().getData()) { + if (datum.getId() == integer){ + time = datum.getTime(); + } + } + // 订单id + String s1 = out_trade_no.split("_")[1]; + Integer integer1 = Integer.valueOf(s1); + TVipOrder byId = vipOrderService.getById(integer1); + byId.setPayState(2); + byId.setTransactionId(trade_no); + byId.setOutTradeNo(out_trade_no); + byId.setPayTime(new Date()); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(new Date()); + calendar.add(Calendar.MONTH, time); + Date dateAfterOneMonth = calendar.getTime(); + byId.setTime(dateAfterOneMonth); + // 修改订单状态 + vipOrderService.updateById(byId); + TUser byId1 = userService.getById(byId.getUserId()); + if (byId1.getVipPayTime() == null){ + // 是否是首次充值会员 + byId1.setVipPayTime(new Date()); + } + byId1.setVipEndTime(dateAfterOneMonth); + // 修改用户会员续期信息 + userService.updateById(byId1); + PrintWriter out = response.getWriter(); + out.write("success"); + out.flush(); + out.close(); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + @ResponseBody + @PostMapping("/base/wxPayBuyVip") + public void wxPayBuyPackage(HttpServletRequest request, HttpServletResponse response) { + 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"); + // 会员规格id + String s = out_trade_no.split("_")[0]; + Integer integer = Integer.valueOf(s); + Integer time = 0; + for (TVipSet datum : managementClient.getVipSet1().getData()) { + if (datum.getId() == integer){ + time = datum.getTime(); + } + } + // 订单id + String s1 = out_trade_no.split("_")[1]; + Integer integer1 = Integer.valueOf(s1); + TVipOrder byId = vipOrderService.getById(integer1); + byId.setPayState(2); + byId.setTransactionId(transaction_id); + byId.setOutTradeNo(out_trade_no); + byId.setPayTime(new Date()); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(new Date()); + calendar.add(Calendar.MONTH, time); + Date dateAfterOneMonth = calendar.getTime(); + byId.setTime(dateAfterOneMonth); + // 修改订单状态 + vipOrderService.updateById(byId); + TUser byId1 = userService.getById(byId.getUserId()); + if (byId1.getVipPayTime() == null){ + // 是否是首次充值会员 + byId1.setVipPayTime(new Date()); + } + byId1.setVipEndTime(dateAfterOneMonth); + // 修改用户会员续期信息 + userService.updateById(byId1); + PrintWriter out = response.getWriter(); + out.write(result); + out.flush(); + out.close(); + } + } catch (Exception e) { + e.printStackTrace(); + } + } @PostMapping("/getPage") @ApiOperation(value = "获取注意事项", tags = {"家长端-注意事项"}) public AjaxResult<TPage> getPage() { @@ -57,16 +224,176 @@ } return AjaxResult.success(); } + @Autowired + private TokenService tokenService; +// @Autowired +// private HWSendSms hwSendSms; +// @ResponseBody +// @PostMapping("/getSMSCode") +// @ApiOperation(value = "获取短信验证码", tags = {"家长端-登录注册"}) +// @ApiImplicitParams({ +// @ApiImplicitParam(value = "类型(1:登录,2:注册,3:修改密码,4:忘记密码,5:修改绑定手机号)", name = "type", dataType = "int", required = true), +// @ApiImplicitParam(value = "电话号码", name = "phone", dataType = "string", required = true) +// }) +// public AjaxResult getSMSCode(Integer type, String phone) { +// if (ToolUtil.isEmpty(phone)) { +// return AjaxResult.paranErr("phone"); +// } +// if (ToolUtil.isEmpty(type)) { +// return AjaxResult.paranErr("type"); +// } +// try { +// if (type == 2) { +// AppUser tAppUser = appUserService.selectOne(new EntityWrapper<AppUser>() +// .eq("phone", phone).ne("state", 3)); +// if (null != tAppUser) { +// return AjaxResult.error("账号已存在"); +// } +// } +// if (type == 5) { +// AppUser tAppUser = appUserService.selectOne(new EntityWrapper<AppUser>() +// .eq("phone", phone).ne("state", 3)); +// if (null != tAppUser) { +// return AjaxResult.error("账号已存在"); +// } +// } +// String numberRandom = UUIDUtil.getNumberRandom(6); +// String templateCode = ""; +// if (type == 1 || type == 2) { +// templateCode = "SMS_161275250"; +// } +// if (type == 3 || type == 4) { +// templateCode = "SMS_160960014"; +// } +//// aLiSendSms.sendSms(phone, templateCode, "{\"code\":\"" + numberRandom + "\"}"); +// hwSendSms.sendSms(numberRandom,phone); +// redisUtil.setStrValue(phone, numberRandom, 300); +// return AjaxResult.success(); +// } catch (Exception e) { +// e.printStackTrace(); +// return ResultUtil.runErr(); +// } +// } + @PostMapping("/updateUserInfo") @ApiOperation(value = "修改个人资料", tags = {"家长端-个人中心"}) - - public AjaxResult updateUserInfo() { - + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer eyJhbGciOiJIUzUxMiJ....", required = true, paramType = "header"), + @ApiImplicitParam(name = "name", value = "姓名 改什么就只传什么"), + @ApiImplicitParam(name = "phone", value = "电话 改什么就只传什么"), + @ApiImplicitParam(name = "headImg", value = "头像 改什么就只传什么"), + }) + public AjaxResult updateUserInfo(String name, String phone,String headImg) { + // todo 获取用户id + Long userid = tokenService.getLoginUser().getUserid(); + TUser byId = userService.getById(userid); + if (StringUtils.hasLength(name)){ + byId.setName(name); + } + if (StringUtils.hasLength(phone)){ + // 先判断手机号是否和当前用户手机号一致 +// if (byId == null){ +// return AjaxResult.tokenError("登录失效"); +// } + if (phone.equals(byId.getPhone())){ + return AjaxResult.error("更换的手机号不能和原手机号相同"); + } + byId.setPhone(phone); + } + if (StringUtils.hasLength(headImg)){ + byId.setHeadImg(headImg); + } + userService.updateById(byId); return AjaxResult.success("修改成功"); + } + @PostMapping("/vipBack/{id}") + @ApiOperation(value = "会员退款", tags = {"管理后台-会员退款"}) + public R vipBack(@PathVariable("id") Integer id) throws AlipayApiException { + TVipOrder byId = vipOrderService.getById(id); + // 外部订单号 + String transactionId = byId.getTransactionId(); + // 内部订单号 + String outTradeNo = byId.getOutTradeNo(); + switch (byId.getPayType()){ + case 1: + // 微信退款 + Map<String, String> stringStringMap = payMoneyUtil.wxRefund(transactionId, outTradeNo, byId.getMoney().toString(), byId.getMoney().toString(), "/base/wxRefund"); + if (stringStringMap.get("code").equals("SUCCESS")){ + byId.setPayState(3); + byId.setBackTime(new Date()); + vipOrderService.updateById(byId); + // 用户的vip剩余时间减少 + 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); + // 判断用户是不是第一次充值 + List<TVipOrder> list = vipOrderService.list(new QueryWrapper<TVipOrder>() + .eq("userId", userId) + .eq("payState", 2) + .orderByDesc("createTime")); + int size = list.size(); + if (size == 0){ + // 证明这是用户第一次充值会员 将首次充值会员时间和会员到期时间清空 + byId1.setVipEndTime(null); + byId1.setVipPayTime(null); + userService.updateById(byId1); + }else{ + // 最近的一次充值会员时间 + TVipOrder tVipOrder = list.get(0); + // 将会员到期时间回退到上一次 + byId1.setVipEndTime(tVipOrder.getTime()); + userService.updateById(byId1); + } + + return R.ok(); + }else{ + return R.fail(stringStringMap.get("msg")); + } + case 2: + // 支付宝退款 + Map<String, String> stringStringMap1 = payMoneyUtil.aliRefund(transactionId,byId.getMoney().toString()); + if (stringStringMap1.get("code").equals("10000")){ + byId.setPayState(3); + byId.setBackTime(new Date()); + vipOrderService.updateById(byId); + // 用户的vip剩余时间减少 + 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); + // 判断用户是不是第一次充值 + List<TVipOrder> list = vipOrderService.list(new QueryWrapper<TVipOrder>() + .eq("userId", userId) + .eq("payState", 2) + .orderByDesc("createTime")); + int size = list.size(); + if (size == 0){ + // 证明这是用户第一次充值会员 将首次充值会员时间和会员到期时间清空 + byId1.setVipEndTime(null); + byId1.setVipPayTime(null); + userService.updateById(byId1); + }else{ + // 最近的一次充值会员时间 + TVipOrder tVipOrder = list.get(0); + // 将会员到期时间回退到上一次 + byId1.setVipEndTime(tVipOrder.getTime()); + userService.updateById(byId1); + } + return R.ok(); + }else{ + return R.fail(stringStringMap1.get("msg")); + } + } + return R.ok(); } @PostMapping("/userList") @ApiOperation(value = "用户列表", tags = {"管理后台-用户管理"}) - public R<PageInfo<AppUserVO>> couponReceive(AppUserQuery query) { + public R<PageInfo<AppUserVO>> couponReceive(@RequestBody AppUserQuery query) { PageInfo<AppUserVO> res = new PageInfo<>(query.getPageNumber(), query.getPageSize()); List<AppUserVO> list = userService.listAll(query); for (AppUserVO appUserVO : list) { @@ -87,7 +414,7 @@ @PostMapping("/getUserInfo") @ApiOperation(value = "查看用户详情", tags = {"管理后台-用户管理"}) - public R<UserInfoVO> getUserInfo(UserInfoQuery dto) { + 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()); @@ -130,15 +457,17 @@ res.setGameRecords(list); return R.ok(res); } - @PostMapping("/freeze") + @PostMapping("/freeze/{id}") @ApiOperation(value = "冻结/解冻", tags = {"管理后台-用户管理"}) - public R freeze(Integer id) { + public R freeze(@PathVariable("id") Integer id) { TUser byId = userService.getById(id); if (byId.getState() == 1) { byId.setState(2); + userService.updateById(byId); return R.ok("冻结成功"); }else { byId.setState(1); + userService.updateById(byId); return R.ok("解冻成功"); } } @@ -146,7 +475,7 @@ @PostMapping("/vipOrderList") @ApiOperation(value = "列表查询", tags = {"管理后台-会员管理"}) - public R<PageInfo<VipOrderVO>> vipOrderList(AppUserQuery query) { + public R<PageInfo<VipOrderVO>> vipOrderList(@RequestBody AppUserQuery query) { PageInfo<VipOrderVO> res = new PageInfo<>(query.getPageNumber(), query.getPageSize()); List<VipOrderVO> list = vipOrderService.listAll(query); res.setRecords(list); -- Gitblit v1.7.1