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 |  257 +++++++++++++++++++++++++++++++++-----------------
 1 files changed, 168 insertions(+), 89 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 cf1fb43..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,31 +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.dto.AppUserQuery;
+import com.ruoyi.management.service.ISysUserService;
 import com.ruoyi.management.service.ITUserService;
 import com.ruoyi.management.service.ITVipSetService;
-import com.ruoyi.management.service.IVipOrderService;
-import com.ruoyi.management.vo.AppUserVO;
-import com.ruoyi.management.vo.VipOrderVO;
 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.vo.UserGameRecordVO;
-import com.ruoyi.study.api.vo.UserInfoVO;
+import com.ruoyi.study.api.feignClient.StudyClient;
+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.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
-import java.util.Date;
 import java.util.List;
 
 /**
@@ -37,127 +40,203 @@
  * @author 无关风月
  * @since 2024-04-26
  */
-@Controller
+@RestController
 @RequestMapping("/tUser")
 public class TUserController {
     @Autowired
     private ITUserService userService;
     @Autowired
     private ITVipSetService vipSetService;
+
     @Autowired
-    private IVipOrderService vipOrderService;
-    @ResponseBody
+    private StudyClient studyClient;
+    @Autowired
+    private ISysUserService sysUserService;
+
     @PostMapping("/userList")
     @ApiOperation(value = "用户列表", tags = {"用户管理"})
     public AjaxResult<PageInfo<AppUserVO>> couponReceive(AppUserQuery query) {
-        PageInfo<AppUserVO> res = new PageInfo<>(query.getPageNumber(), query.getPageSize());
-        List<AppUserVO> list =  userService.listAll(query);
-        for (AppUserVO appUserVO : list) {
-            if (appUserVO.getVipEndTime() == null){
-                appUserVO.setIsVip(0);
-            }else{
-                if (appUserVO.getVipEndTime().getTime() > System.currentTimeMillis()){
-                    appUserVO.setIsVip(1);
-                }else{
-                    appUserVO.setIsVip(0);
-                }
-            }
-        }
-        res.setRecords(list);
-        res.setTotal(list.size());
-        return AjaxResult.success(res);
+//        PageInfo<AppUserVO> res = new PageInfo<>(query.getPageNumber(), query.getPageSize());
+////        List<AppUserVO> list =  userService.listAll(query);
+////        for (AppUserVO appUserVO : list) {
+////            if (appUserVO.getVipEndTime() == null){
+////                appUserVO.setIsVip(0);
+////            }else{
+////                if (appUserVO.getVipEndTime().getTime() > System.currentTimeMillis()){
+////                    appUserVO.setIsVip(1);
+////                }else{
+////                    appUserVO.setIsVip(0);
+////                }
+////            }
+////        }
+////        res.setRecords(list);
+////        res.setTotal(list.size());
+        PageInfo<AppUserVO> data = studyClient.couponReceive(query).getData();
+
+        return AjaxResult.success(data);
     }
 
-    @ResponseBody
     @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);
-            }
+        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);
         }
-        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);
-        return AjaxResult.success(res);
+        userInfoVO.setGameRecords(data1.getGameRecords());
+        return AjaxResult.success(userInfoVO);
     }
-    @ResponseBody
+    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 "周目" + 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 = {"用户管理"})
     public AjaxResult freeze(Integer id) {
         TUser byId = userService.getById(id);
         if (byId.getState() == 1) {
-            byId.setState(2);
+            studyClient.freeze(id);
             return AjaxResult.success("冻结成功");
-        }else {
-            byId.setState(1);
+        } else {
+            studyClient.freeze(id);
             return AjaxResult.success("解冻成功");
         }
     }
-    @ResponseBody
+    @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 = {"用户管理"})
     public AjaxResult<List<TVipSet>> getVipSet() {
         List<TVipSet> list = vipSetService.list(new QueryWrapper<TVipSet>().orderByAsc("amount"));
         return AjaxResult.success(list);
     }
-    @ResponseBody
+
+    @PostMapping("/getVipSet1")
+    @ApiOperation(value = "获取会员设置", tags = {"家长端"})
+    public R<List<TVipSet>> getVipSet1() {
+        List<TVipSet> list = vipSetService.list(new QueryWrapper<TVipSet>()
+                .orderByAsc("time"));
+        return R.ok(list);
+    }
+
     @PostMapping("/setVipSet")
-    @ApiOperation(value = "获取会员设置", tags = {"用户管理"})
+    @ApiOperation(value = "保存会员设置", tags = {"用户管理"})
     public AjaxResult setVipSet(@RequestBody VipSetVO vo) {
-        String info = vo.getInfo();
         List<TVipSet> list = vo.getList();
         // 删除原有数据 重新保存
         vipSetService.remove(new QueryWrapper<TVipSet>());
         for (TVipSet tVipSet : list) {
-            tVipSet.setInfo(info);
             vipSetService.save(tVipSet);
         }
-
         return AjaxResult.success("保存成功");
     }
-    @ResponseBody
+
     @PostMapping("/vipOrderList")
     @ApiOperation(value = "列表查询", tags = {"会员管理"})
-    public AjaxResult<PageInfo<AppUserVO>> vipOrderList(AppUserQuery query) {
-        PageInfo<VipOrderVO> res = new PageInfo<>(query.getPageNumber(), query.getPageSize());
-        List<VipOrderVO> list =  vipOrderService.listAll(query);
-        res.setRecords(list);
-        res.setTotal(list.size());
-        return AjaxResult.success(res);
+    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