From 781b5fea46cd55220b5ffca17aa6bb1b83551410 Mon Sep 17 00:00:00 2001
From: 44323 <443237572@qq.com>
Date: 星期二, 21 五月 2024 08:59:55 +0800
Subject: [PATCH] 代码提交

---
 ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TUserController.java |  273 +++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 199 insertions(+), 74 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 cc0d7d8..8fd56b1 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
@@ -4,12 +4,19 @@
 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.utils.JwtUtils;
 import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.common.core.web.page.PageInfo;
+import com.ruoyi.common.redis.service.RedisService;
+import com.ruoyi.common.security.auth.AuthUtil;
 import com.ruoyi.common.security.service.TokenService;
+import com.ruoyi.common.security.utils.SecurityUtils;
 import com.ruoyi.management.api.feignClient.ManagementClient;
+import com.ruoyi.management.api.model.TFeedback;
 import com.ruoyi.management.api.model.TPage;
+import com.ruoyi.management.api.model.TUseGuide;
 import com.ruoyi.management.api.model.TVipSet;
+import com.ruoyi.management.api.query.UseGuideQuery;
 import com.ruoyi.study.domain.TUser;
 import com.ruoyi.study.domain.TVipOrder;
 import com.ruoyi.study.dto.AppUserQuery;
@@ -19,10 +26,17 @@
 import com.ruoyi.study.utils.PayMoneyUtil;
 import com.ruoyi.study.utils.UUIDUtil;
 import com.ruoyi.study.vo.*;
+import com.ruoyi.system.api.domain.SysRole;
+import com.ruoyi.system.api.domain.SysUser;
+import com.ruoyi.system.api.model.LoginUser;
+import com.ruoyi.system.api.model.LoginUserParent;
+import io.jsonwebtoken.Claims;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
+import org.apache.poi.ss.formula.functions.T;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.*;
 
@@ -50,16 +64,34 @@
     private IVipOrderService vipOrderService;
     @Autowired
     private ManagementClient managementClient;
+    @Autowired
+    private TokenService tokenService;
+
     @PostMapping("/vipInfo")
     @ApiOperation(value = "会员中心-获取会员说明、当前登录用户是否为会员、会员购买规格", tags = {"家长端-个人中心"})
     public AjaxResult<List<VipInfoVO>> vipInfo() {
+        if (tokenService.getLoginUser1() == null){
+            return AjaxResult.tokenError("登录失效",new Object());
+        }
         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();
+            Integer userid = tokenService.getLoginUser1().getUserid();
+            TUser byId = userService.getById(userid);
+            // 先判断vipEndTime
+            if (byId.getVipEndTime() == null){
+                vipInfoVO.setIsVip(0);
+            }else{
+                // 判断会员到期时间是否大于当前时间
+                if (byId.getVipEndTime().getTime() > new Date().getTime()){
+                    vipInfoVO.setIsVip(1);
+                }else{
+                    vipInfoVO.setIsVip(0);
+                }
+            }
             vipInfoVO.setTime(datum.getTime());
             vipInfoVO.setAmount(datum.getAmount());
         }
@@ -76,6 +108,10 @@
             @ApiImplicitParam(name = "id", value = "会员规格id", required = true),
     })
     public AjaxResult order(Integer payType,Integer id) throws Exception {
+        if (tokenService.getLoginUser1() == null){
+            return AjaxResult.tokenError("登录失效",new Object());
+        }
+        Integer userid = tokenService.getLoginUser1().getUserid();
         TVipOrder tVipOrder = new TVipOrder();
         List<TVipSet> data = managementClient.getVipSet1().getData();
         Integer time = 0;
@@ -86,10 +122,7 @@
             }
         }
         tVipOrder.setPayState(1);
-//        tVipOrder.setUserId();
-//        tVipOrder.setPayTime();
-//        tVipOrder.setBackTime();
-//        tVipOrder.setTime();
+        tVipOrder.setUserId(userid);
         tVipOrder.setPayType(payType);
         tVipOrder.setCount(time);
         switch (payType){
@@ -137,19 +170,40 @@
                 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());
+                    Calendar calendar = Calendar.getInstance();
+                    calendar.setTime(new Date());
+                    calendar.add(Calendar.MONTH, time);
+                    Date dateAfterOneMonth = calendar.getTime();
+                    byId.setTime(dateAfterOneMonth);
+                    byId1.setVipEndTime(dateAfterOneMonth);
+                }else{
+                    // 不是首次 判断vipEndTime 是否到期 如果没有 加指定月份时间 如果到期了 将会员到期时间从当前增加指定月份
+                    if (byId1.getVipEndTime().getTime() < new Date().getTime()){
+                        Calendar calendar = Calendar.getInstance();
+                        calendar.setTime(new Date());
+                        calendar.add(Calendar.MONTH, time);
+                        Date dateAfterOneMonth = calendar.getTime();
+                        byId.setTime(dateAfterOneMonth);
+                        byId1.setVipEndTime(dateAfterOneMonth);
+                    }else{
+                        Calendar calendar = Calendar.getInstance();
+                        calendar.setTime(byId1.getVipEndTime());
+                        calendar.add(Calendar.MONTH, time);
+                        Date dateAfterOneMonth = calendar.getTime();
+                        byId.setTime(dateAfterOneMonth);
+                        byId1.setVipEndTime(dateAfterOneMonth);
+                    }
                 }
-                byId1.setVipEndTime(dateAfterOneMonth);
+
+                // 修改订单状态
+                vipOrderService.updateById(byId);
+
                 // 修改用户会员续期信息
                 userService.updateById(byId1);
                 PrintWriter out = response.getWriter();
@@ -189,19 +243,38 @@
                 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());
+                    Calendar calendar = Calendar.getInstance();
+                    calendar.setTime(new Date());
+                    calendar.add(Calendar.MONTH, time);
+                    Date dateAfterOneMonth = calendar.getTime();
+                    byId.setTime(dateAfterOneMonth);
+                    byId1.setVipEndTime(dateAfterOneMonth);
+                }else{
+                    // 不是首次 判断vipEndTime 是否到期 如果没有 加指定月份时间 如果到期了 将会员到期时间从当前增加指定月份
+                    if (byId1.getVipEndTime().getTime() < new Date().getTime()){
+                        Calendar calendar = Calendar.getInstance();
+                        calendar.setTime(new Date());
+                        calendar.add(Calendar.MONTH, time);
+                        Date dateAfterOneMonth = calendar.getTime();
+                        byId.setTime(dateAfterOneMonth);
+                        byId1.setVipEndTime(dateAfterOneMonth);
+                    }else{
+                        Calendar calendar = Calendar.getInstance();
+                        calendar.setTime(byId1.getVipEndTime());
+                        calendar.add(Calendar.MONTH, time);
+                        Date dateAfterOneMonth = calendar.getTime();
+                        byId.setTime(dateAfterOneMonth);
+                        byId1.setVipEndTime(dateAfterOneMonth);
+                    }
                 }
-                byId1.setVipEndTime(dateAfterOneMonth);
+                // 修改订单状态
+                vipOrderService.updateById(byId);
                 // 修改用户会员续期信息
                 userService.updateById(byId1);
                 PrintWriter out = response.getWriter();
@@ -215,66 +288,107 @@
     }
     @PostMapping("/getPage")
     @ApiOperation(value = "获取注意事项", tags = {"家长端-注意事项"})
-    public AjaxResult<TPage> getPage() {
+    public AjaxResult<String> getPage() {
         List<TPage> data = managementClient.getPage1().getData();
         for (TPage datum : data) {
             if (datum.getType() == 4){
-                return AjaxResult.success(datum);
+                return AjaxResult.success(datum.getImg());
             }
         }
         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("/useGuide")
+    @ApiOperation(value = "使用指南", tags = {"家长端-使用指南"})
+    public AjaxResult<PageInfo<TUseGuide>> useGuide(@RequestBody UseGuideQuery query) {
+        PageInfo<TUseGuide> data = managementClient.useGuide1(query).getData();
+        return AjaxResult.success(data);
+    }
+    @PostMapping("/feedBack")
+    @ApiOperation(value = "反馈", tags = {"家长端-意见反馈"})
+    public AjaxResult feedBack(@RequestBody TFeedback dto) {
+        if (tokenService.getLoginUser1() == null){
+            return AjaxResult.tokenError("登录失效",new Object());
+        }
+        LoginUserParent loginUser1 = tokenService.getLoginUser1();
+        dto.setUserId(loginUser1.getUserid());
+        managementClient.addFeedBack(dto);
+        return AjaxResult.success("反馈成功");
+    }
+    @PostMapping("/parentLogin")
+    @ApiOperation(value = "登录", tags = {"家长端-登录"})
+    @ApiImplicitParams({
+            @ApiImplicitParam(value = "手机号", name = "phone", dataType = "string", required = true),
+            @ApiImplicitParam(value = "验证码", name = "phoneCode", dataType = "string", required = true)
+    })
+    public AjaxResult login(String phone, String phoneCode)
+    {
+        TUser tUser1 = userService.getOne(new QueryWrapper<TUser>()
+                .ne("state", 3)
+                .eq("phone",phone));
+        if (tUser1 != null){
+            if (tUser1.getState() == 2){
+                return AjaxResult.error("登录失败,您的账号已被冻结!");
+            }
+        }else{
+            // todo 验证码校验
+            tUser1 = new TUser();
+            // 注册
+            tUser1.setName(phone);
+            tUser1.setAccount(phone);
+            tUser1.setState(1);
+            tUser1.setInsertTime(new Date());
+            tUser1.setCreateTime(new Date());
+            tUser1.setPhone(phone);
+            userService.save(tUser1);
+        }
+        LoginUserParent loginUserParent = new LoginUserParent();
+        loginUserParent.setName(tUser1.getName());
+        loginUserParent.setUserid(tUser1.getId());
+        loginUserParent.setPhone(tUser1.getPhone());
+        loginUserParent.setLoginTime(new Date().getTime());
+        HashMap<String, Object> map = new HashMap<>();
+        map.put("token",tokenService.createToken1(loginUserParent));
+        // 获取登录token
+        return AjaxResult.success(map);
+    }
 
+
+    @PostMapping("/deleteUser")
+    @ApiOperation(value = "注销当前帐号", tags = {"家长端-个人中心"})
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "Authorization", value = "Bearer eyJhbGciOiJIUzUxMiJ....", required = true, paramType = "header"),
+    })
+    public AjaxResult deleteUser() {
+        if (tokenService.getLoginUser1() == null){
+           return AjaxResult.tokenError("登录失效");
+        }
+        Integer userid = tokenService.getLoginUser1().getUserid();
+        TUser tUser = userService.getById(userid);
+
+        tUser.setState(3);
+        userService.updateById(tUser);
+
+        userService.removeById(tUser);
+        return AjaxResult.success("注销成功");
+    }
+    @PostMapping("/logout")
+    @ApiOperation(value = "退出登录", tags = {"家长端-个人中心"})
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "Authorization", value = "Bearer eyJhbGciOiJIUzUxMiJ....", required = true, paramType = "header"),
+    })
+    public AjaxResult logout(HttpServletRequest request) {
+        if (tokenService.getLoginUser1() == null){
+            return AjaxResult.tokenError("登录失效");
+        }
+        String token = SecurityUtils.getToken(request);
+        if (com.ruoyi.common.core.utils.StringUtils.isNotEmpty(token))
+        {
+            // 删除用户缓存记录
+            AuthUtil.logoutByToken1(token);
+        }
+        // todo 清除token
+        return AjaxResult.success("退出登录成功");
+    }
     @PostMapping("/updateUserInfo")
     @ApiOperation(value = "修改个人资料", tags = {"家长端-个人中心"})
     @ApiImplicitParams({
@@ -284,9 +398,13 @@
             @ApiImplicitParam(name = "headImg", value = "头像 改什么就只传什么"),
     })
     public AjaxResult updateUserInfo(String name, String phone,String headImg) {
+        if (tokenService.getLoginUser1() == null){
+            return AjaxResult.tokenError("登录失效",new Object());
+        }
         // todo 获取用户id
-        Long userid = tokenService.getLoginUser().getUserid();
+        Integer userid = tokenService.getLoginUser1().getUserid();
         TUser byId = userService.getById(userid);
+
         if (StringUtils.hasLength(name)){
             byId.setName(name);
         }
@@ -295,9 +413,16 @@
 //            if (byId == null){
 //                return AjaxResult.tokenError("登录失效");
 //            }
+
             if (phone.equals(byId.getPhone())){
                 return AjaxResult.error("更换的手机号不能和原手机号相同");
             }
+            List<TUser> list = userService.list(new QueryWrapper<TUser>()
+                    .eq("phone", phone)
+                    .ne("state", 3));
+            if (list.size() > 0){
+                return AjaxResult.error("更换的手机号已被使用",new Object());
+            }
             byId.setPhone(phone);
         }
         if (StringUtils.hasLength(headImg)){

--
Gitblit v1.7.1