From 185f5dc7c3c49f565da51cd9c2f7750f30990d4a Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期一, 11 十一月 2024 13:28:29 +0800
Subject: [PATCH] 代码提交

---
 xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/service/impl/AppUserServiceImpl.java |  333 ++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 257 insertions(+), 76 deletions(-)

diff --git a/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/service/impl/AppUserServiceImpl.java b/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/service/impl/AppUserServiceImpl.java
index 46fd4ce..dca7cd9 100644
--- a/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/service/impl/AppUserServiceImpl.java
+++ b/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/service/impl/AppUserServiceImpl.java
@@ -1,37 +1,47 @@
 package com.xinquan.user.service.impl;
 
 import cn.hutool.core.util.IdUtil;
+import cn.hutool.crypto.SecureUtil;
 import com.alibaba.nacos.common.utils.StringUtils;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xinquan.common.core.constant.Constants;
 import com.xinquan.common.core.constant.SecurityConstants;
 import com.xinquan.common.core.domain.R;
+import com.xinquan.common.core.enums.AnswerTagEnum;
 import com.xinquan.common.core.enums.AppUserStatusEnum;
 import com.xinquan.common.core.enums.DisabledEnum;
 import com.xinquan.common.core.enums.TreeLevelEnum;
 import com.xinquan.common.core.exception.ServiceException;
 import com.xinquan.common.core.utils.page.BeanUtils;
+import com.xinquan.common.core.utils.page.CollUtils;
+import com.xinquan.common.security.service.TokenService;
 import com.xinquan.common.security.utils.SecurityUtils;
 import com.xinquan.system.api.RemoteUserService;
 import com.xinquan.system.api.domain.SysUser;
 import com.xinquan.system.api.feignClient.SysUserClient;
-import com.xinquan.system.api.model.AppCaptchaBody;
-import com.xinquan.system.api.model.AppVerifyCellPhoneBody;
-import com.xinquan.system.api.model.AppWXLoginBody;
-import com.xinquan.system.api.model.AppleLoginUser;
-import com.xinquan.system.api.model.LoginUser;
-import com.xinquan.system.api.model.WXLoginUser;
-import com.xinquan.user.api.domain.AppUser;
+import com.xinquan.system.api.model.*;
+import com.xinquan.system.api.domain.AppUser;
 import com.xinquan.user.api.domain.dto.AppUserDTO;
-import com.xinquan.user.domain.AppUserTree;
+import com.xinquan.system.api.domain.AppUserQuestion;
+import com.xinquan.system.api.domain.AppUserTree;
+import com.xinquan.system.api.domain.Tag;
+import com.xinquan.user.domain.dto.UserAnswerDTO;
+import com.xinquan.system.api.domain.vo.AppUserVO;
+import com.xinquan.user.domain.vo.TagVO;
 import com.xinquan.user.mapper.AppUserMapper;
+import com.xinquan.user.service.AppUserQuestionService;
 import com.xinquan.user.service.AppUserService;
 import com.xinquan.user.service.AppUserTreeService;
+import com.xinquan.user.service.TagService;
 import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
-import java.util.Objects;
-import java.util.Optional;
+import java.util.*;
+import java.util.stream.Collectors;
 import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -50,6 +60,8 @@
     private final SysUserClient sysUserClient;
     private final RemoteUserService remoteUserService;
     private final AppUserTreeService appUserTreeService;
+    private final AppUserQuestionService appUserQuestionService;
+    private final TagService tagService;
     /**
      * 获取用户信息
      *
@@ -68,15 +80,26 @@
                 .ne(AppUser::getUserStatus, AppUserStatusEnum.LOGOUT.getCode()).oneOpt();
     }
 
+    public static void main(String[] args) {
+        String randomCode = String.valueOf((int) ((Math.random() * 9 + 1) * 1000));
+        System.err.println(randomCode);
+    }
     /**
      * app用户注册
      * @param appUserDTO
      * @return
      */
     @Override
-    public Boolean registerAppUser(AppUserDTO appUserDTO) {
+    public AppUser registerAppUser(AppUserDTO appUserDTO) {
         AppUser appUser = BeanUtils.copyBean(appUserDTO, AppUser.class);
-        return this.save(appUser);
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
+        String format = simpleDateFormat.format(new Date());
+        // 生成四位随机数字
+        String randomCode = String.valueOf((int) ((Math.random() * 9 + 1) * 1000));
+        appUser.setCode("YH"+format+randomCode);
+        this.save(appUser);
+        initUserTree(appUser.getId());
+        return appUser;
     }
 
     /**
@@ -86,38 +109,53 @@
      * @return
      */
     @Override
-    public WXLoginUser wxLogin(AppWXLoginBody body) {
-        WXLoginUser wxLoginUser = new WXLoginUser();
+    public AppLoginUser wxLogin(AppWXLoginBody body) {
+        AppLoginUser appLoginUser = new AppLoginUser();
         Optional<AppUser> optionalAppUser = this.getUserByCondition(
                 AppUserDTO.builder().wxOpenId(body.getWxOpenId()).build());
+        AppUser appUser;
+        SysUser sysUser;
         // 存在账户,查询关联系统用户
         if (optionalAppUser.isPresent()) {
-            AppUser appUser = optionalAppUser.get();
-            SysUser sysUser = sysUserClient.getSysUser(appUser.getUserId()).getData();
-            wxLoginUser.setSysUser(sysUser);
-            if (Objects.nonNull(sysUser.getUserName())) {
-                wxLoginUser.setBindStatus(1);
-                wxLoginUser.setCellPhone(appUser.getCellPhone());
+            appUser = optionalAppUser.get();
+            if (appUser.getUserStatus().equals(AppUserStatusEnum.FROZEN.getCode())) {
+                throw new ServiceException("账号已被冻结");
+            }
+            sysUser = sysUserClient.getSysUser(appUser.getUserId()).getData();
+            appUser.setAvatar(body.getHeadImgUrl());
+            appUser.setWxName(body.getNickname());
+            if (appUser.getCellPhone()!=null){
+                appLoginUser.setBindStatus(DisabledEnum.NO.getCode());
+                appLoginUser.setCellPhone(appUser.getCellPhone());
             }
         } else {
             // 不存在账户,创建账户
             // 注册用户信息
-            SysUser sysUser = new SysUser();
+            sysUser = new SysUser();
             sysUser.setNickName(body.getNickname());
             sysUser.setAvatar(body.getHeadImgUrl());
-
+            sysUser.setUserName(body.getNickname());
+            sysUser.setUserType("01"); // app用户
             R<SysUser> registerResult = remoteUserService.registerAppUserInfo(sysUser,
                     SecurityConstants.INNER);
             if (registerResult.getCode() == Constants.FAIL) {
                 throw new ServiceException(registerResult.getMsg());
             }
             SysUser sysUserRes = registerResult.getData();
-            AppUser appUser = new AppUser();
+            appUser = new AppUser();
             appUser.setUserId(sysUserRes.getUserId());
+            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
+            String format = simpleDateFormat.format(new Date());
+            // 生成四位随机数字
+            String randomCode = String.valueOf((int) ((Math.random() * 9 + 1) * 1000));
+            appUser.setCode("YH"+format+randomCode);
             appUser.setWxOpenId(body.getWxOpenId());
-            appUser.setNickname(body.getNickname());
+            String nickname = "用户" + IdUtil.fastSimpleUUID().substring(0, 6);
+            sysUser.setNickName(nickname);
+            appUser.setNickname(nickname);
+            appUser.setWxName(body.getNickname());
             appUser.setAvatar(body.getHeadImgUrl());
-            appUser.setGender(body.getSex());
+            appUser.setGender(3);
             appUser.setBalance(BigDecimal.ZERO);
             appUser.setSanskritFlag(DisabledEnum.NO.getCode());
             appUser.setBalance(BigDecimal.ZERO);
@@ -125,47 +163,60 @@
             appUser.setTotalEnergyValue(0);
             appUser.setRegisterTime(LocalDateTime.now());
             appUser.setLevelSettingId(TreeLevelEnum.SEED.getCode());
+            appLoginUser.setBindStatus(DisabledEnum.YES.getCode());
             this.save(appUser);
             // 初始化用户树苗
             initUserTree(appUser.getId());
-            wxLoginUser.setSysUser(null);
-            wxLoginUser.setBindStatus(DisabledEnum.NO.getCode());
         }
-        return wxLoginUser;
+        appLoginUser.setUserid(sysUser.getUserId());
+        appLoginUser.setUsername(appUser.getNickname());
+        appLoginUser.setAppUserId(appUser.getId());
+        appLoginUser.setSysUser(sysUser);
+        this.updateById(appUser);
+//        if (Objects.nonNull(sysUser.getUserName())) {
+//            appLoginUser.setCellPhone(appUser.getCellPhone());
+//        }
+        return appLoginUser;
     }
 
     @Override
-    public AppleLoginUser appleLogin(String appleId) {
-        AppleLoginUser appleLoginUser = new AppleLoginUser();
+    public AppLoginUser appleLogin(String appleId) {
+        AppLoginUser appLoginUser = new AppLoginUser();
         Optional<AppUser> optionalAppUser = this.getUserByCondition(
                 AppUserDTO.builder().appleId(appleId).build());
+        SysUser sysUser;
+        AppUser appUser;
         // 存在账户,查询关联系统用户
         if (optionalAppUser.isPresent()) {
-            AppUser appUser = optionalAppUser.get();
-            SysUser sysUser = sysUserClient.getSysUser(appUser.getUserId()).getData();
-            appleLoginUser.setSysUser(sysUser);
-            if (Objects.nonNull(sysUser.getUserName())) {
-                appleLoginUser.setBindStatus(1);
-                appleLoginUser.setCellPhone(appUser.getCellPhone());
+            appUser = optionalAppUser.get();
+            if (appUser.getUserStatus().equals(AppUserStatusEnum.FROZEN.getCode())) {
+                throw new ServiceException("账号已被冻结");
+            }
+            sysUser = sysUserClient.getSysUser(appUser.getUserId()).getData();
+            if (appUser.getCellPhone()!=null){
+                appLoginUser.setBindStatus(DisabledEnum.NO.getCode());
+                appLoginUser.setCellPhone(appUser.getCellPhone());
             }
         } else {
             // 不存在账户,创建账户
             // 注册用户信息
-            SysUser sysUser = new SysUser();
+            sysUser = new SysUser();
             String nickname = "用户" + IdUtil.fastSimpleUUID().substring(0, 6);
             sysUser.setNickName(nickname);
-            sysUser.setAvatar("qwer");
-
+            sysUser.setAvatar("https://xqgwzh.obs.cn-south-1.myhuaweicloud.com/Logo%E7%A1%AE%E8%AE%A4%E7%89%88%281%29.jpg");
+            sysUser.setUserName(nickname);
+            sysUser.setUserType("01"); // app用户
             R<SysUser> registerResult = remoteUserService.registerAppUserInfo(sysUser,
                     SecurityConstants.INNER);
             if (registerResult.getCode() == Constants.FAIL) {
                 throw new ServiceException(registerResult.getMsg());
             }
             SysUser sysUserRes = registerResult.getData();
-            AppUser appUser = new AppUser();
+            appUser = new AppUser();
+            appUser.setAppleId(appleId);
             appUser.setUserId(sysUserRes.getUserId());
             appUser.setNickname(nickname);
-            appUser.setAvatar("qwer"); // TODO 待完善默认头像
+            appUser.setAvatar("https://xqgwzh.obs.cn-south-1.myhuaweicloud.com/Logo%E7%A1%AE%E8%AE%A4%E7%89%88%281%29.jpg"); // TODO 待完善默认头像
             appUser.setBalance(BigDecimal.ZERO);
             appUser.setSanskritFlag(DisabledEnum.NO.getCode());
             appUser.setBalance(BigDecimal.ZERO);
@@ -173,14 +224,24 @@
             appUser.setTotalEnergyValue(0);
             appUser.setRegisterTime(LocalDateTime.now());
             appUser.setLevelSettingId(TreeLevelEnum.SEED.getCode());
+            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
+            String format = simpleDateFormat.format(new Date());
+            // 生成四位随机数字
+            String randomCode = String.valueOf((int) ((Math.random() * 9 + 1) * 1000));
+            appUser.setCode("YH"+format+randomCode);
             this.save(appUser);
             // 初始化用户树苗
             initUserTree(appUser.getId());
-            appleLoginUser.setSysUser(null);
-            appleLoginUser.setBindStatus(DisabledEnum.NO.getCode());
         }
-
-        return appleLoginUser;
+        appLoginUser.setUserid(sysUser.getUserId());
+        appLoginUser.setUsername(appUser.getNickname());
+        appLoginUser.setAppUserId(appUser.getId());
+        appLoginUser.setSysUser(sysUser);
+//        if (Objects.nonNull(sysUser.getUserName())) {
+//            appLoginUser.setBindStatus(DisabledEnum.YES.getCode());
+//            appLoginUser.setCellPhone(appUser.getCellPhone());
+//        }
+        return appLoginUser;
     }
 
     /**
@@ -191,21 +252,23 @@
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public LoginUser appCaptchaLogin(AppCaptchaBody body) {
-        LoginUser loginUser = new LoginUser();
+    public AppLoginUser appCaptchaLogin(AppCaptchaBody body) {
+        AppLoginUser appLoginUser = new AppLoginUser();
         Optional<AppUser> optionalAppUser = this.getUserByCondition(
                 AppUserDTO.builder().cellPhone(body.getCellPhone()).build());
+        AppUser appUser;
+        SysUser sysUser;
         if (optionalAppUser.isPresent()) {
-            AppUser appUser = optionalAppUser.get();
-            SysUser sysUser = sysUserClient.getSysUser(appUser.getUserId()).getData();
-            loginUser.setSysUser(sysUser);
+            appUser = optionalAppUser.get();
+            sysUser = sysUserClient.getSysUser(appUser.getUserId()).getData();
         } else {
             // 注册用户信息
-            SysUser sysUser = new SysUser();
+            sysUser = new SysUser();
             String nickname = "用户" + IdUtil.fastSimpleUUID().substring(0, 6);
             sysUser.setNickName(nickname);
-            sysUser.setAvatar("qwer");
+            sysUser.setAvatar("https://xqgwzh.obs.cn-south-1.myhuaweicloud.com/Logo%E7%A1%AE%E8%AE%A4%E7%89%88%281%29.jpg");
             sysUser.setUserName(body.getCellPhone());
+            sysUser.setUserType("01"); // app用户
             // 设置默认密码123456
             sysUser.setPassword(SecurityUtils.encryptPassword(Constants.DEFAULT_PASSWORD));
 
@@ -215,11 +278,11 @@
                 throw new ServiceException(registerResult.getMsg());
             }
             SysUser sysUserRes = registerResult.getData();
-            AppUser appUser = new AppUser();
+            appUser = new AppUser();
             appUser.setUserId(sysUserRes.getUserId());
             appUser.setNickname(nickname);
             appUser.setCellPhone(body.getCellPhone());
-            appUser.setAvatar("qwer"); // TODO 待完善默认头像
+            appUser.setAvatar("https://xqgwzh.obs.cn-south-1.myhuaweicloud.com/Logo%E7%A1%AE%E8%AE%A4%E7%89%88%281%29.jpg"); // TODO 待完善默认头像
             appUser.setBalance(BigDecimal.ZERO);
             appUser.setSanskritFlag(DisabledEnum.NO.getCode());
             appUser.setBalance(BigDecimal.ZERO);
@@ -227,11 +290,22 @@
             appUser.setTotalEnergyValue(0);
             appUser.setRegisterTime(LocalDateTime.now());
             appUser.setLevelSettingId(TreeLevelEnum.SEED.getCode());
+            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
+            String format = simpleDateFormat.format(new Date());
+            // 生成四位随机数字
+            String randomCode = String.valueOf((int) ((Math.random() * 9 + 1) * 1000));
+            appUser.setCode("YH"+format+randomCode);
             this.save(appUser);
             // 初始化用户树苗
             initUserTree(appUser.getId());
+
         }
-        return loginUser;
+        appLoginUser.setUserid(sysUser.getUserId());
+        appLoginUser.setUsername(appUser.getNickname());
+        appLoginUser.setAppUserId(appUser.getId());
+        appLoginUser.setSysUser(sysUser);
+        appLoginUser.setCellPhone(appUser.getCellPhone());
+        return appLoginUser;
     }
 
     /**
@@ -245,7 +319,7 @@
         appUserTree.setTreeLevelType(TreeLevelEnum.SEED.getCode());
         appUserTree.setGrowthValue(0);
         appUserTree.setSowAgain(2);
-        appUserTree.setCurrentEnergyValue(0);
+        appUserTree.setTime(LocalDateTime.now());
         appUserTreeService.save(appUserTree);
     }
 
@@ -256,7 +330,7 @@
      * @return
      */
     @Override
-    public WXLoginUser verifyCellPhone(AppVerifyCellPhoneBody body) {
+    public AppLoginUser verifyCellPhone(AppVerifyCellPhoneBody body) {
         Integer loginType = body.getLoginType();
         String wxOrAppleId = body.getWxOrAppleId();
         SysUser sysUser;
@@ -267,11 +341,32 @@
         // 如果存在 更新wxOpenId 或appleId
         if (baseOptionalAppUser.isPresent()) {
             appUser = baseOptionalAppUser.get();
+            if (appUser.getWxOpenId() !=null){
+                throw new ServiceException("该手机号已绑定其他微信号,请更换手机号重新绑定");
+            }
+            if (appUser.getAppleId() !=null){
+                throw new ServiceException("该手机号已绑定其他苹果号,请更换手机号重新绑定");
+            }
+            switch (body.getLoginType()){
+                case 1:
+                    this.remove(new LambdaQueryWrapper<AppUser>()
+                            .eq(AppUser::getWxOpenId,body.getWxOrAppleId())
+                            .ne(AppUser::getId,appUser.getId()));
+                    break;
+                case 2:
+                    this.remove(new LambdaQueryWrapper<AppUser>()
+                            .eq(AppUser::getAppleId,body.getWxOrAppleId())
+                            .ne(AppUser::getId,appUser.getId()));
+                    break;
+            }
+
             if (loginType.equals(1)) {
                 appUser.setWxOpenId(wxOrAppleId);
             } else {
                 appUser.setAppleId(wxOrAppleId);
             }
+            appUser.setEmail(body.getEmail());
+            appUser.setNickname(body.getName());
             // 查询系统用户
             sysUser = sysUserClient.getSysUser(appUser.getUserId()).getData();
             if (Objects.isNull(sysUser)) {
@@ -279,7 +374,6 @@
             }
         } else {
             Optional<AppUser> userOptional = getAppUserByThirdId(loginType, wxOrAppleId);
-
             if (loginType.equals(1)) {
                 // 微信登录
                 handleUserNotPresent(userOptional, "该用户不存在,请重新进行微信授权登录");
@@ -289,6 +383,8 @@
             }
             appUser = userOptional.get();
             appUser.setCellPhone(body.getCellPhone());
+            appUser.setEmail(body.getEmail());
+            appUser.setNickname(body.getName());
             // 更新系统用户
             sysUser = sysUserClient.getSysUser(appUser.getUserId()).getData();
             if (Objects.isNull(sysUser)) {
@@ -296,29 +392,19 @@
             }
             sysUser.setUserName(body.getCellPhone());
             sysUser.setPassword(
-                    SecurityUtils.encryptPassword(Constants.DEFAULT_PASSWORD)); // 默认密码为123456
+                    SecurityUtils.encryptPassword(Constants.DEFAULT_PASSWORD))
+            ; // 默认密码为a12345678
             sysUser.setPhonenumber(body.getCellPhone());
             sysUserClient.updateSysUser(sysUser);
         }
         // 更新用户信息
         this.updateById(appUser);
-        if (loginType.equals(1)) {
-            // 微信登录
-            WXLoginUser wxLoginUser = new WXLoginUser();
-            wxLoginUser.setBindStatus(1);
-            wxLoginUser.setCellPhone(body.getCellPhone());
-            wxLoginUser.setSysUser(sysUser);
-            return wxLoginUser;
-        } else {
-            // 苹果登录
-            AppleLoginUser appleLoginUser = new AppleLoginUser();
-            appleLoginUser.setBindStatus(1);
-            appleLoginUser.setCellPhone(body.getCellPhone());
-            appleLoginUser.setSysUser(sysUser);
-            return appleLoginUser;
-        }
+        AppLoginUser appLoginUser = new AppLoginUser();
+        appLoginUser.setBindStatus(1);
+        appLoginUser.setCellPhone(body.getCellPhone());
+        appLoginUser.setSysUser(sysUser);
+        return appLoginUser;
     }
-
     // 定义一个方法来处理用户不存在的情况
     private void handleUserNotPresent(Optional<AppUser> userOptional, String errorMessage) {
         if (!userOptional.isPresent()) {
@@ -337,7 +423,102 @@
         return this.lambdaQuery()
                 .eq(loginType.equals(1), AppUser::getWxOpenId, wxOrAppleId)
                 .eq(loginType.equals(2), AppUser::getAppleId, wxOrAppleId)
-                .ne(AppUser::getUserStatus, AppUserStatusEnum.LOGOUT)
+                .ne(AppUser::getUserStatus, AppUserStatusEnum.LOGOUT.getCode())
                 .oneOpt();
     }
+
+    /**
+     * 保存计划引导页用户的答案
+     *
+     * @param dto 用户计划引导答案数据传输对象
+     */
+    @Override
+    public void saveUserAnswers(UserAnswerDTO dto) {
+        // 获取当前登录用户
+        Long userId = tokenService.getLoginUser().getUserid();
+        AppUser appUser = this.getById(userId);
+        List<AppUserQuestion> appUserQuestionList = BeanUtils.copyList(
+                dto.getUserAnswerOneDTOList(), AppUserQuestion.class);
+        // 查询用户已填写的答案
+        List<AppUserQuestion> baseAppUserQuestionList = appUserQuestionService.lambdaQuery()
+                .eq(AppUserQuestion::getAppUserId, appUser.getUserId())
+                .list();
+        if (CollUtils.isNotEmpty(baseAppUserQuestionList)) {
+            // 根据类型更新答案
+            for (AppUserQuestion appUserQuestion : appUserQuestionList) {
+
+                Optional<AppUserQuestion> baseAppUserQuestionOptional = baseAppUserQuestionList.stream()
+                        .filter(baseAppUserQuestion -> baseAppUserQuestion.getType()
+                                .equals(appUserQuestion.getType())).findFirst();
+                baseAppUserQuestionOptional.ifPresent(
+                        userQuestion -> appUserQuestion.setId(userQuestion.getId()));
+                appUserQuestion.setAppUserId(userId);
+            }
+        }
+        for (AppUserQuestion appUserQuestion : appUserQuestionList) {
+            appUserQuestion.setAppUserId(userId);
+        }
+        appUserQuestionService.saveOrUpdateBatch(appUserQuestionList);
+        // 筛选答案为是和偶尔有的问题,为用户设置对应的标签
+        List<AppUserQuestion> appUserQuestionYesList = appUserQuestionList.stream()
+                .filter(appUserQuestion -> appUserQuestion.getAnswer().equals("1")
+                        || appUserQuestion.getAnswer().equals("3")).collect(Collectors.toList());
+        appUser.setTagId(dto.getTagIds());
+        this.updateById(appUser);
+    }
+
+    /**
+     * 获取AppUser
+     *
+     * @param userId 系统用户userId
+     * @return AppUser
+     */
+    private AppUser getUserBySysUserId(Long userId) {
+        Optional<AppUser> appUserOptional = this.lambdaQuery().eq(AppUser::getUserId, userId)
+                .oneOpt();
+        if (!appUserOptional.isPresent()) {
+            throw new ServiceException("获取用户信息失败,请重新登录");
+        }
+        return appUserOptional.get();
+    }
+
+    /**
+     * 获取问题二的标签列表
+     *
+     * @return List<TagVO>
+     */
+    @Override
+    public List<TagVO> getTagList() {
+        List<Tag> list = tagService.list(Wrappers.lambdaQuery(Tag.class).eq(Tag::getTagType, 2));
+        return BeanUtils.copyList(list, TagVO.class);
+    }
+
+    /**
+     * 更新APP用户信息
+     *
+     * @param dto APP用户数据传输对象
+     */
+    @Override
+    public void updateAppUser(AppUserDTO dto) {
+        // 拷贝数据
+        AppUser appUser = BeanUtils.copyBean(dto, AppUser.class);
+        this.updateById(appUser);
+    }
+
+    @Autowired
+    private TokenService tokenService;
+    /**
+     * 获取当前登录用户信息
+     *
+     * @return 用户信息
+     * @see AppUserVO
+     */
+    @Override
+    public AppUserVO getCurrentUser() {
+        LoginUser loginUser = tokenService.getLoginUser();
+
+        Long userId = loginUser.getUserid();
+        AppUser appUser = this.getById(userId);
+        return BeanUtils.copyBean(appUser, AppUserVO.class);
+    }
 }

--
Gitblit v1.7.1