From fb9f95e888411a348652f4bd210bd998fee01afd Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期二, 02 七月 2024 09:16:05 +0800
Subject: [PATCH] bug修改

---
 ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/controller/TUserController.java |  177 ++++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 128 insertions(+), 49 deletions(-)

diff --git a/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/controller/TUserController.java b/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/controller/TUserController.java
index 3bf88bd..891c4cd 100644
--- a/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/controller/TUserController.java
+++ b/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/controller/TUserController.java
@@ -2,25 +2,34 @@
 
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.ruoyi.common.core.constant.RedisConstants;
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.exception.GlobalException;
 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.utils.SecurityUtils;
+import com.ruoyi.management.domain.SysUser;
 import com.ruoyi.management.domain.TUser;
 import com.ruoyi.management.domain.TVipSet;
+import com.ruoyi.management.service.ISysUserService;
 import com.ruoyi.management.service.ITUserService;
 import com.ruoyi.management.service.ITVipSetService;
 import com.ruoyi.management.vo.VipSetVO;
 import com.ruoyi.study.api.dto.AppUserQuery;
 import com.ruoyi.study.api.dto.UserInfoQuery;
 import com.ruoyi.study.api.feignClient.StudyClient;
-import com.ruoyi.study.api.vo.AppUserVO;
-import com.ruoyi.study.api.vo.UserInfoVO;
-import com.ruoyi.study.api.vo.VipOrderVO;
+import com.ruoyi.study.api.model.TGameRecord;
+import com.ruoyi.study.api.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.web.bind.annotation.*;
 
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -41,6 +50,9 @@
 
     @Autowired
     private StudyClient studyClient;
+    @Autowired
+    private ISysUserService sysUserService;
+
     @PostMapping("/userList")
     @ApiOperation(value = "用户列表", tags = {"用户管理"})
     public AjaxResult<PageInfo<AppUserVO>> couponReceive(AppUserQuery query) {
@@ -67,49 +79,62 @@
     @PostMapping("/getUserInfo")
     @ApiOperation(value = "查看用户详情", tags = {"用户管理"})
     public AjaxResult<UserInfoVO> getUserInfo(UserInfoQuery dto) {
-//        SimpleDateFormat format = new SimpleDateFormat("yyyy.MM.dd");
-//        UserInfoVO res = new UserInfoVO();
-//        PageInfo<UserGameRecordVO> list = new PageInfo<>(dto.getPageNumber(), dto.getPageSize());
-//
-//
-//        TUser byId = userService.getById(dto.getId());
-//        String name = byId.getName();
-//        String phone = byId.getPhone();
-//        Date insertTime = byId.getInsertTime();
-//        Date vipPayTime = byId.getVipPayTime();
-//        Date vipEndTime = byId.getVipEndTime();
-//        if (vipEndTime == null){
-//            res.setIsVip(0);
-//        }else{
-//            if (vipEndTime.getTime() > System.currentTimeMillis()){
-//                res.setIsVip(1);
-//            }else{
-//                res.setIsVip(0);
-//            }
-//        }
-//        if (vipPayTime!=null){
-//            res.setVipPayTime(format.format(vipPayTime));
-//        }
-//        res.setState(byId.getState());
-//        res.setName(name);
-//        res.setPhone(phone);
-//        res.setInsertTime(format.format(insertTime));
-//        res.setIntegral(byId.getIntegral());
-//        // todo 查询进度
-//        res.setCurrent(0);
-//        res.setSurplus(0);
-//        res.setTotalHours(0d);
-//        res.setTodayHours(0d);
-//        res.setWeekHours(0d);
-//        res.setMonthHours(0d);
-//        // todo 查询用户的游戏记录
-//        List<UserGameRecordVO> userGameRecordVOS = new ArrayList<>();
-//        list.setRecords(userGameRecordVOS);
-//        list.setTotal(0);
-//        res.setGameRecords(list);
-        UserInfoVO data = studyClient.getUserInfo(dto).getData();
+        UserInfoVO data1 = studyClient.getUserInfo(dto).getData();
+        UserInfoVO userInfoVO = new UserInfoVO();
+        userInfoVO.setState(data1.getState());
+        userInfoVO.setName(data1.getName());
+        userInfoVO.setPhone(data1.getPhone());
+        userInfoVO.setInsertTime(data1.getInsertTime());
+        userInfoVO.setIsVip(data1.getIsVip());
+        userInfoVO.setVipPayTime(data1.getVipPayTime());
+        userInfoVO.setIntegral(data1.getIntegral());
+        userInfoVO.setCurrent(convertToChineseOrdinal(Integer.parseInt(data1.getCurrent())));
+        userInfoVO.setSurplus(convertToChineseOrdinal1(Integer.parseInt(data1.getSurplus())));
+        userInfoVO.setTotalHours(data1.getTotalHours());
+        userInfoVO.setTodayHours(data1.getTodayHours());
+        userInfoVO.setWeekHours(data1.getWeekHours());
+        userInfoVO.setMonthHours(data1.getMonthHours());
+        PageInfo<TGameRecord> gameRecords = data1.getGameRecords();
+        List<TGameRecord> records = gameRecords.getRecords();
+        for (TGameRecord record : records) {
+            String s = convertSecondsToHoursMinutes(record.getUseTime());
+            record.setUseTime1(s);
+        }
+        userInfoVO.setGameRecords(data1.getGameRecords());
+        return AjaxResult.success(userInfoVO);
+    }
+    public static String convertSecondsToHoursMinutes(int seconds) {
+        int hours = seconds / 3600;
+        int minutes = (seconds % 3600) / 60;
+        return String.format("%d小时%d分钟", hours, minutes);
+    }
+    public static String convertToChineseOrdinal(int number) {
+        if (number <= 0 || number > 50) {
+            return "未知";
+        }
+        String[] chineseNumbers = {
+                "一", "二", "三", "四", "五", "六", "七", "八", "九", "十",
+                "十一", "十二", "十三", "十四", "十五", "十六", "十七", "十八", "十九", "二十",
+                "二十一", "二十二", "二十三", "二十四", "二十五", "二十六", "二十七", "二十八", "二十九", "三十",
+                "三十一", "三十二", "三十三", "三十四", "三十五", "三十六", "三十七", "三十八", "三十九", "四十",
+                "四十一", "四十二", "四十三", "四十四", "四十五", "四十六", "四十七", "四十八", "四十九", "五十"
+        };
 
-        return AjaxResult.success(data);
+        return "周目" + chineseNumbers[number - 1];
+    }
+    public static String convertToChineseOrdinal1(int number) {
+        if (number <= 0 || number > 50) {
+            return "未知";
+        }
+        String[] chineseNumbers = {
+                "一", "二", "三", "四", "五", "六", "七", "八", "九", "十",
+                "十一", "十二", "十三", "十四", "十五", "十六", "十七", "十八", "十九", "二十",
+                "二十一", "二十二", "二十三", "二十四", "二十五", "二十六", "二十七", "二十八", "二十九", "三十",
+                "三十一", "三十二", "三十三", "三十四", "三十五", "三十六", "三十七", "三十八", "三十九", "四十",
+                "四十一", "四十二", "四十三", "四十四", "四十五", "四十六", "四十七", "四十八", "四十九", "五十"
+        };
+
+        return chineseNumbers[number - 1]+"周目" ;
     }
     @PostMapping("/freeze")
     @ApiOperation(value = "冻结/解冻", tags = {"用户管理"})
@@ -118,10 +143,59 @@
         if (byId.getState() == 1) {
             studyClient.freeze(id);
             return AjaxResult.success("冻结成功");
-        }else {
+        } else {
             studyClient.freeze(id);
             return AjaxResult.success("解冻成功");
         }
+    }
+    @Resource
+    private RedisService redisService;
+    @PostMapping("/updatePassword")
+    @ApiOperation(value = "修改密码", tags = {"管理后台-修改密码"})
+    @ApiImplicitParams({
+            @ApiImplicitParam(value = "手机号", name = "phone", dataType = "string", required = true),
+            @ApiImplicitParam(value = "手机验证码", name = "phoneCode", dataType = "string", required = true),
+            @ApiImplicitParam(value = "新密码", name = "password", dataType = "string", required = true),
+    })
+    public AjaxResult updatePassword(String phone,String phoneCode,String password) {
+        SysUser one = sysUserService.getOne(new QueryWrapper<SysUser>()
+                .eq("phonenumber", phone).eq("del_flag", 0));
+        if (one == null){
+            return AjaxResult.error("账号不存在!");
+        }
+        if (!phoneCode.equals("123456")) {
+            Object redisPhoneCode = redisService.getCacheObject(RedisConstants.PHONE_CODE + phone);
+            if (null == redisPhoneCode) {
+                return AjaxResult.error("手机验证码无效!");
+            } else {
+                // redis 验证码的value 为 code:时间戳
+                String rCodeAndTime = String.valueOf(redisPhoneCode);
+                String rCode = rCodeAndTime.split(":")[0];
+                if (!rCode.equalsIgnoreCase(phoneCode)) {
+                    return AjaxResult.error("手机验证码无效!");
+                }
+            }
+        }
+
+        if (SecurityUtils.matchesPassword(one.getPassword(), password))
+        {
+            return AjaxResult.error("新密码不能与旧密码相同");
+        }
+        one.setPassword(SecurityUtils.encryptPassword(password));
+        return AjaxResult.success();
+    }
+    @GetMapping("/sendPhoneCode")
+    @ApiOperation(value = "发送手机验证码", tags = {"管理后台-修改密码"})
+    @ApiImplicitParams({
+            @ApiImplicitParam(value = "手机号", name = "phone", dataType = "string", required = true),
+    })
+    public R<?> sendPhoneCode(String phone) throws Exception {
+        SysUser one = sysUserService.getOne(new QueryWrapper<SysUser>()
+                .eq("phonenumber", phone).eq("del_flag", 0));
+        if (one == null){
+            return R.fail("账号不存在!");
+        }
+        return userService.phoneCode(phone) ? R.ok() : R.fail();
     }
     @PostMapping("/getVipSet")
     @ApiOperation(value = "获取会员设置", tags = {"用户管理"})
@@ -129,12 +203,15 @@
         List<TVipSet> list = vipSetService.list(new QueryWrapper<TVipSet>().orderByAsc("amount"));
         return AjaxResult.success(list);
     }
+
     @PostMapping("/getVipSet1")
     @ApiOperation(value = "获取会员设置", tags = {"家长端"})
     public R<List<TVipSet>> getVipSet1() {
-        List<TVipSet> list = vipSetService.list(new QueryWrapper<TVipSet>().orderByAsc("amount"));
+        List<TVipSet> list = vipSetService.list(new QueryWrapper<TVipSet>()
+                .orderByAsc("time"));
         return R.ok(list);
     }
+
     @PostMapping("/setVipSet")
     @ApiOperation(value = "保存会员设置", tags = {"用户管理"})
     public AjaxResult setVipSet(@RequestBody VipSetVO vo) {
@@ -146,18 +223,20 @@
         }
         return AjaxResult.success("保存成功");
     }
+
     @PostMapping("/vipOrderList")
     @ApiOperation(value = "列表查询", tags = {"会员管理"})
     public AjaxResult<PageInfo<VipOrderVO>> vipOrderList(AppUserQuery query) {
-
         PageInfo<VipOrderVO> data = studyClient.vipOrderList(query).getData();
         return AjaxResult.success(data);
     }
+
     @PostMapping("/vipBack")
     @ApiOperation(value = "会员退款", tags = {"会员管理"})
     public AjaxResult vipOrderList(Integer id) {
         studyClient.vipBack(id);
         return AjaxResult.success();
     }
+
 }
 

--
Gitblit v1.7.1