Browse Source

Merge branch 'jc' of http://git.workervip.com/JC2407A/neko into yv

p裴秀宇 1 month ago
parent
commit
5c4ff46aa8

+ 1 - 0
src/main/java/com/neko/controller/FriendController.java

@@ -54,6 +54,7 @@ public class FriendController {
      */
      */
     @RequestMapping("find_friend_list")
     @RequestMapping("find_friend_list")
     public ResultVo findFriendList(@RequestBody RequestFriendVo requestFriend){
     public ResultVo findFriendList(@RequestBody RequestFriendVo requestFriend){
+        System.err.println(requestFriend);
         return friendRelationService.findFriendList(requestFriend);
         return friendRelationService.findFriendList(requestFriend);
     }
     }
 
 

+ 7 - 1
src/main/java/com/neko/controller/MessageController.java

@@ -4,6 +4,7 @@ import com.neko.domain.dto.messageDto.SendMessageContentDto;
 import com.neko.service.MessageService;
 import com.neko.service.MessageService;
 import com.neko.utils.ResultVo;
 import com.neko.utils.ResultVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.bind.annotation.RestController;
 
 
@@ -17,8 +18,13 @@ public class MessageController {
     @Autowired
     @Autowired
     MessageService messageService;
     MessageService messageService;
 
 
+    /**
+     * 消息发送
+     * @param dto
+     * @return
+     */
     @RequestMapping("sendMessage")
     @RequestMapping("sendMessage")
-    public ResultVo sendMessage(SendMessageContentDto dto){
+    public ResultVo sendMessage(@RequestBody SendMessageContentDto dto){
         return messageService.sendMessage(dto);
         return messageService.sendMessage(dto);
     }
     }
 
 

+ 5 - 0
src/main/java/com/neko/controller/UserController.java

@@ -120,6 +120,11 @@ public class UserController {
         return userService.myUserData(token);
         return userService.myUserData(token);
     }
     }
 
 
+    /**
+     * 修改个人信息
+     * @param dto
+     * @return
+     */
     @RequestMapping("updapeUserPwd")
     @RequestMapping("updapeUserPwd")
     public ResultVo updapeUserPwd(@RequestBody UserPwdDto dto){
     public ResultVo updapeUserPwd(@RequestBody UserPwdDto dto){
         return userService.updapeUserPwd(dto);
         return userService.updapeUserPwd(dto);

+ 3 - 2
src/main/java/com/neko/domain/dto/messageDto/SendMessageContentDto.java

@@ -9,6 +9,7 @@ import org.springframework.web.multipart.MultipartFile;
  **/
  **/
 @Data
 @Data
 public class SendMessageContentDto {
 public class SendMessageContentDto {
-    private String senderId;
-    private String receiverType;
+    private String senderId;//发送者
+    private String receiverId;//接受者
+    private String content;//发送消息的内容
 }
 }

+ 3 - 0
src/main/java/com/neko/domain/pojo/FriendRelation.java

@@ -66,4 +66,7 @@ public class FriendRelation implements Serializable {
 
 
     @TableField(exist = false)
     @TableField(exist = false)
     private static final long serialVersionUID = 1L;
     private static final long serialVersionUID = 1L;
+
+    @TableField(exist = false)
+    private UserProfile userProfiles;
 }
 }

+ 17 - 3
src/main/java/com/neko/service/impl/FriendRelationServiceImpl.java

@@ -7,9 +7,11 @@ import com.neko.domain.dto.friendDto.FriendTongDto;
 import com.neko.domain.pojo.FriendRelation;
 import com.neko.domain.pojo.FriendRelation;
 import com.neko.domain.pojo.FriendRequest;
 import com.neko.domain.pojo.FriendRequest;
 import com.neko.domain.pojo.User;
 import com.neko.domain.pojo.User;
+import com.neko.domain.pojo.UserProfile;
 import com.neko.domain.vo.RequestFriendVo;
 import com.neko.domain.vo.RequestFriendVo;
 import com.neko.mapper.FriendRequestMapper;
 import com.neko.mapper.FriendRequestMapper;
 import com.neko.mapper.UserMapper;
 import com.neko.mapper.UserMapper;
+import com.neko.mapper.UserProfileMapper;
 import com.neko.service.FriendRelationService;
 import com.neko.service.FriendRelationService;
 import com.neko.mapper.FriendRelationMapper;
 import com.neko.mapper.FriendRelationMapper;
 import com.neko.utils.*;
 import com.neko.utils.*;
@@ -17,6 +19,7 @@ import io.jsonwebtoken.Claims;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
 
 
 import java.util.Date;
 import java.util.Date;
 import java.util.List;
 import java.util.List;
@@ -36,6 +39,8 @@ public class FriendRelationServiceImpl extends ServiceImpl<FriendRelationMapper,
     FriendRequestMapper friendRequestMapper;
     FriendRequestMapper friendRequestMapper;
     @Autowired
     @Autowired
     UserMapper userMapper;
     UserMapper userMapper;
+    @Autowired
+    UserProfileMapper userProfileMapper;
 
 
     @Override
     @Override
     public ResultVo addFriend(FriendDto dto) {
     public ResultVo addFriend(FriendDto dto) {
@@ -96,7 +101,7 @@ public class FriendRelationServiceImpl extends ServiceImpl<FriendRelationMapper,
         wrapper.lambda().eq(User::getPhone,dto.getJiePhone());
         wrapper.lambda().eq(User::getPhone,dto.getJiePhone());
         User user = userMapper.selectOne(wrapper);
         User user = userMapper.selectOne(wrapper);
 
 
-        //
+        //请求者
         QueryWrapper<FriendRelation> query = new QueryWrapper<>();
         QueryWrapper<FriendRelation> query = new QueryWrapper<>();
         query.lambda().eq(FriendRelation::getUserId,user.getId());
         query.lambda().eq(FriendRelation::getUserId,user.getId());
         FriendRelation friendRelation = friendRelationMapper.selectOne(query);
         FriendRelation friendRelation = friendRelationMapper.selectOne(query);
@@ -106,6 +111,9 @@ public class FriendRelationServiceImpl extends ServiceImpl<FriendRelationMapper,
         relation.setId(String.valueOf(SnowflakeUtil.nextId()));
         relation.setId(String.valueOf(SnowflakeUtil.nextId()));
         relation.setUserId(id);
         relation.setUserId(id);
         relation.setFriendId(user.getId());
         relation.setFriendId(user.getId());
+//        if(StringUtils.isEmpty(dto.getRemark())){
+//
+//        }
         relation.setRemark(dto.getRemark());
         relation.setRemark(dto.getRemark());
         relation.setGroupName(dto.getGroupName());
         relation.setGroupName(dto.getGroupName());
         relation.setStatus(1);
         relation.setStatus(1);
@@ -116,10 +124,10 @@ public class FriendRelationServiceImpl extends ServiceImpl<FriendRelationMapper,
             log.info("同意好友请求");
             log.info("同意好友请求");
             friendRelationMapper.updateById(friendRelation);
             friendRelationMapper.updateById(friendRelation);
             friendRelationMapper.insert(relation);
             friendRelationMapper.insert(relation);
-            friendRelationMapper.deleteById(user.getId());
             return ResultVo.success(ApiServiceExceptionEnum.RESULT_SUCCES);
             return ResultVo.success(ApiServiceExceptionEnum.RESULT_SUCCES);
         }else if(dto.getStatus()==2){
         }else if(dto.getStatus()==2){
             log.info("已拒绝好友请求");
             log.info("已拒绝好友请求");
+            friendRelationMapper.deleteById(user.getId());
             return ResultVo.success(ApiServiceExceptionEnum.Friend_JUJUE);
             return ResultVo.success(ApiServiceExceptionEnum.Friend_JUJUE);
         }else {
         }else {
             return ResultVo.error(ApiServiceExceptionEnum.RESULT_ERROR);
             return ResultVo.error(ApiServiceExceptionEnum.RESULT_ERROR);
@@ -133,7 +141,13 @@ public class FriendRelationServiceImpl extends ServiceImpl<FriendRelationMapper,
         requestFriend.setId(id);
         requestFriend.setId(id);
 
 
         List<FriendRelation> list = friendRelationMapper.findFriendList(requestFriend);
         List<FriendRelation> list = friendRelationMapper.findFriendList(requestFriend);
-//        System.err.println(list);
+        for(FriendRelation f:list){
+            QueryWrapper<UserProfile> queryWrapper = new QueryWrapper<>();
+            queryWrapper.lambda().eq(UserProfile::getUserId,f.getFriendId());
+            UserProfile userProfile = userProfileMapper.selectOne(queryWrapper);
+            f.setUserProfiles(userProfile);
+        }
+        System.err.println(list);
 
 
         return ResultVo.success(ApiServiceExceptionEnum.RESULT_SUCCES,list);
         return ResultVo.success(ApiServiceExceptionEnum.RESULT_SUCCES,list);
     }
     }

+ 45 - 1
src/main/java/com/neko/service/impl/MessageServiceImpl.java

@@ -1,13 +1,24 @@
 package com.neko.service.impl;
 package com.neko.service.impl;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
 import com.neko.domain.dto.messageDto.SendMessageContentDto;
 import com.neko.domain.dto.messageDto.SendMessageContentDto;
 import com.neko.domain.pojo.Message;
 import com.neko.domain.pojo.Message;
+import com.neko.domain.pojo.MessageContentText;
+import com.neko.domain.pojo.User;
+import com.neko.mapper.MessageContentTextMapper;
+import com.neko.mapper.UserMapper;
 import com.neko.service.MessageService;
 import com.neko.service.MessageService;
 import com.neko.mapper.MessageMapper;
 import com.neko.mapper.MessageMapper;
 import com.neko.utils.ResultVo;
 import com.neko.utils.ResultVo;
+import com.neko.utils.SnowflakeUtil;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
+import java.util.Date;
+import java.util.UUID;
+
 /**
 /**
 * @author 金聪
 * @author 金聪
 * @description 针对表【message(消息主表)】的数据库操作Service实现
 * @description 针对表【message(消息主表)】的数据库操作Service实现
@@ -16,11 +27,44 @@ import org.springframework.stereotype.Service;
 @Service
 @Service
 public class MessageServiceImpl extends ServiceImpl<MessageMapper, Message>
 public class MessageServiceImpl extends ServiceImpl<MessageMapper, Message>
     implements MessageService{
     implements MessageService{
+    @Autowired
+    UserMapper userMapper;
+    @Autowired
+    MessageMapper messageMapper;
+    @Autowired
+    MessageContentTextMapper messageContentTextMapper;
 
 
     @Override
     @Override
     public ResultVo sendMessage(SendMessageContentDto dto) {
     public ResultVo sendMessage(SendMessageContentDto dto) {
+        Message message = new Message();
+        message.setId(String.valueOf(SnowflakeUtil.nextId()));
+        String uuid = UUID.randomUUID().toString().replaceAll("-","");
+        message.setMessageId("WBNR"+uuid);
+        message.setSenderId(dto.getSenderId());
+        message.setReceiverId(dto.getReceiverId());
+        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(User::getId,dto.getReceiverId());
+        User user = userMapper.selectOne(queryWrapper);
+        if(user!=null){
+            message.setReceiverType(1);
+        }else{
+            message.setMessageType(2);
+        }
+        message.setMessageType(1);
+        //文本内容
+        MessageContentText messageContentText = new MessageContentText();
+        messageContentText.setId(String.valueOf(SnowflakeUtil.nextId()));
+        messageContentText.setContent(dto.getContent());
+        messageContentText.setCreateTime(new Date());
+        //文本内容
+
+        message.setContentId(messageContentText.getId());
+        message.setSendTime(new Date());
+        message.setCreateTime(new Date());
+        messageMapper.insert(message);
+        messageContentTextMapper.insert(messageContentText);
 
 
-        return null;
+        return ResultVo.success("发送成功");
     }
     }
 }
 }
 
 

+ 163 - 4
src/main/java/com/neko/service/impl/UserServiceImpl.java

@@ -2,15 +2,23 @@ package com.neko.service.impl;
 
 
 import cn.hutool.http.HttpUtil;
 import cn.hutool.http.HttpUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.repository.AbstractRepository;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.neko.config.GiteeProperties;
 import com.neko.config.GiteeProperties;
 import com.neko.config.ThirdlyLoginTypeConstant;
 import com.neko.config.ThirdlyLoginTypeConstant;
+import com.neko.domain.dto.friendDto.UserPwdDto;
 import com.neko.domain.dto.userDto.PhoneLoginDto;
 import com.neko.domain.dto.userDto.PhoneLoginDto;
 import com.neko.domain.dto.userDto.YanDto;
 import com.neko.domain.dto.userDto.YanDto;
 import com.neko.domain.pojo.User;
 import com.neko.domain.pojo.User;
+import com.neko.domain.pojo.UserDevice;
+import com.neko.domain.pojo.UserLog;
+import com.neko.domain.pojo.UserProfile;
+import com.neko.mapper.UserLogMapper;
+import com.neko.mapper.UserProfileMapper;
 import com.neko.service.UserService;
 import com.neko.service.UserService;
 import com.neko.mapper.UserMapper;
 import com.neko.mapper.UserMapper;
 import com.neko.utils.*;
 import com.neko.utils.*;
+import io.jsonwebtoken.Claims;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.http.HttpResponse;
 import org.apache.http.HttpResponse;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -19,8 +27,11 @@ import org.springframework.stereotype.Service;
 import org.springframework.util.DigestUtils;
 import org.springframework.util.DigestUtils;
 import org.springframework.util.StringUtils;
 import org.springframework.util.StringUtils;
 
 
+import java.net.InetAddress;
+import java.net.UnknownHostException;
 import java.nio.charset.StandardCharsets;
 import java.nio.charset.StandardCharsets;
 import java.util.*;
 import java.util.*;
+import java.util.concurrent.TimeUnit;
 
 
 /**
 /**
 * @author 金聪
 * @author 金聪
@@ -37,23 +48,32 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User>
     private RedisTemplate redisTemplate;
     private RedisTemplate redisTemplate;
     @Autowired
     @Autowired
     GiteeProperties giteeProperties;
     GiteeProperties giteeProperties;
+    @Autowired
+    UserProfileMapper userProfileMapper;
+    @Autowired
+    UserLogMapper userLogMapper;
 
 
     @Override
     @Override
-    public ResultVo phoenLogin(PhoneLoginDto dto) {
+    public ResultVo phoenLogin(PhoneLoginDto dto) throws Exception {
         //判断手机号是否正确
         //判断手机号是否正确
         if(StringUtils.isEmpty(dto.getPhone())){
         if(StringUtils.isEmpty(dto.getPhone())){
+            log.info("手机号不能为空");
             return ResultVo.error(ApiServiceExceptionEnum.USER_NOT_NULL);
             return ResultVo.error(ApiServiceExceptionEnum.USER_NOT_NULL);
         }
         }
+        InetAddress localHost = null;
+        localHost = InetAddress.getLocalHost();
         if(StringUtils.isEmpty(dto.getPassword())){
         if(StringUtils.isEmpty(dto.getPassword())){
             log.info("验证码登录");
             log.info("验证码登录");
             if(StringUtils.isEmpty(dto.getSmsCode())){
             if(StringUtils.isEmpty(dto.getSmsCode())){
                 //判断验证码是否为空
                 //判断验证码是否为空
+                log.info("验证码不能为空");
                 return ResultVo.error(ApiServiceExceptionEnum.YAN_NOT_NULL);
                 return ResultVo.error(ApiServiceExceptionEnum.YAN_NOT_NULL);
             }
             }
             //从reids中获取验证码
             //从reids中获取验证码
             String yan = (String) redisTemplate.opsForValue().get("yan");
             String yan = (String) redisTemplate.opsForValue().get("yan");
             if(!yan.equals(dto.getSmsCode())){
             if(!yan.equals(dto.getSmsCode())){
                 //判断验证码是否正确
                 //判断验证码是否正确
+                log.info("验证码错误");
                 return ResultVo.error(ApiServiceExceptionEnum.YAN_ERROR);
                 return ResultVo.error(ApiServiceExceptionEnum.YAN_ERROR);
             }
             }
             QueryWrapper<User> queryWrapper = new QueryWrapper<>();
             QueryWrapper<User> queryWrapper = new QueryWrapper<>();
@@ -80,14 +100,63 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User>
                 u.setUsername("PTYH"+dto.getPhone());
                 u.setUsername("PTYH"+dto.getPhone());
                 u.setCreateTime(new Date());
                 u.setCreateTime(new Date());
                 userMapper.insert(u);
                 userMapper.insert(u);
+                //添加用户信息
+                log.info("添加用户信息");
+                UserProfile userProfile = new UserProfile();
+                userProfile.setId(String.valueOf(SnowflakeUtil.nextId()));
+                userProfile.setUserId(u.getId());
+                userProfile.setNickname(u.getUsername());
+                userProfile.setAvatar("http://47.95.170.81:19000/loli/bf4e13220f87c5e68e058da3f7dc48b.png");
+                userProfile.setCreateTime(new Date());
+                userProfileMapper.insert(userProfile);
+                //添加用户设备信息
+//                log.info("添加用户设备信息");
+//                UserDevice device = new UserDevice();
+//                device.setId(String.valueOf(SnowflakeUtil.nextId()));
+//                device.setUserId(u.getId());
+//                device.setDeviceId(UUID.randomUUID().toString().replaceAll("-",""));
+//                device.setDeviceType();
+//                device.setDeviceModel();
 
 
+                //日志添加
+                log.info("添加用户日志信息");
+                UserLog userLog = new UserLog();
+                userLog.setUserId(u.getId());
+                userLog.setUserName(u.getUsername());
+                userLog.setLoginZhu(localHost.getHostName());
+                userLog.setZhuIp(localHost.getHostAddress());
+                userLog.setLoginTime(new Date());
+                userLog.setDescribes("手机号为"+dto.getPhone()+"注册了新用户");
+                userLogMapper.insert(userLog);
+
+                //线程
+                UserThreadLocalhostUtil.setUser(u.getId());
                 String token = AppJwtUtil.getToken(Long.valueOf(u.getId()));
                 String token = AppJwtUtil.getToken(Long.valueOf(u.getId()));
                 return ResultVo.success(ApiServiceExceptionEnum.LOGIN_OK,token);
                 return ResultVo.success(ApiServiceExceptionEnum.LOGIN_OK,token);
             }else{
             }else{
                 log.info("用户存在,登录");
                 log.info("用户存在,登录");
+                if(user.getStatus()==2){
+                    log.info("用户不存在");
+                    return ResultVo.error(ApiServiceExceptionEnum.YONGHU_NOT_NULL);
+                }
+                if(user.getStatus()==0){
+                    log.info("此用户已被封禁");
+                    return ResultVo.error(ApiServiceExceptionEnum.BAN_USER);
+                }
+                //日志添加
+                log.info("添加用户日志信息");
+                UserLog userLog = new UserLog();
+                userLog.setUserId(user.getId());
+                userLog.setUserName(user.getUsername());
+                userLog.setLoginZhu(localHost.getHostName());
+                userLog.setZhuIp(localHost.getHostAddress());
+                userLog.setLoginTime(new Date());
+                userLog.setDescribes("验证码登录");
+                userLogMapper.insert(userLog);
 
 
+                //线程
+                UserThreadLocalhostUtil.setUser(user.getId());
                 String token = AppJwtUtil.getToken(Long.valueOf(user.getId()));
                 String token = AppJwtUtil.getToken(Long.valueOf(user.getId()));
-
                 return ResultVo.success(ApiServiceExceptionEnum.LOGIN_OK,token);
                 return ResultVo.success(ApiServiceExceptionEnum.LOGIN_OK,token);
             }
             }
 
 
@@ -105,6 +174,16 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User>
                 log.info("用户不存在");
                 log.info("用户不存在");
                 return ResultVo.error(ApiServiceExceptionEnum.YONGHU_NOT_NULL);
                 return ResultVo.error(ApiServiceExceptionEnum.YONGHU_NOT_NULL);
             }
             }
+
+            if(user.getStatus()==2){
+                log.info("用户不存在");
+                return ResultVo.error(ApiServiceExceptionEnum.YONGHU_NOT_NULL);
+            }
+            if(user.getStatus()==0){
+                log.info("此用户已被封禁");
+                return ResultVo.error(ApiServiceExceptionEnum.BAN_USER);
+            }
+
             String pwd = DigestUtils.md5DigestAsHex((user.getSalt()+dto.getPassword()).getBytes(StandardCharsets.UTF_8));
             String pwd = DigestUtils.md5DigestAsHex((user.getSalt()+dto.getPassword()).getBytes(StandardCharsets.UTF_8));
             if(!user.getPassword().equals(pwd)){
             if(!user.getPassword().equals(pwd)){
                 //判断密码是否正确
                 //判断密码是否正确
@@ -112,8 +191,20 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User>
                 return ResultVo.error(ApiServiceExceptionEnum.PASSWORD_ERROR);
                 return ResultVo.error(ApiServiceExceptionEnum.PASSWORD_ERROR);
             }
             }
 
 
-            String token = AppJwtUtil.getToken(Long.valueOf(user.getId()));
+            //日志添加
+            log.info("添加用户日志信息");
+            UserLog userLog = new UserLog();
+            userLog.setUserId(user.getId());
+            userLog.setUserName(user.getUsername());
+            userLog.setLoginZhu(localHost.getHostName());
+            userLog.setZhuIp(localHost.getHostAddress());
+            userLog.setLoginTime(new Date());
+            userLog.setDescribes("密码登录");
+            userLogMapper.insert(userLog);
 
 
+            //线程
+            UserThreadLocalhostUtil.setUser(user.getId());
+            String token = AppJwtUtil.getToken(Long.valueOf(user.getId()));
             return ResultVo.success(ApiServiceExceptionEnum.LOGIN_OK,token);
             return ResultVo.success(ApiServiceExceptionEnum.LOGIN_OK,token);
         }
         }
     }
     }
@@ -137,7 +228,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User>
         String sixDigitNumber = sb.toString();
         String sixDigitNumber = sb.toString();
 
 
         //将验证码存入redis中
         //将验证码存入redis中
-        redisTemplate.opsForValue().set("yan",sixDigitNumber);
+        redisTemplate.opsForValue().set("yan",sixDigitNumber,180, TimeUnit.SECONDS);
 
 
         Map<String, String> querys = new HashMap<String, String>();
         Map<String, String> querys = new HashMap<String, String>();
         querys.put("mobile", dto.getPhone());
         querys.put("mobile", dto.getPhone());
@@ -190,8 +281,76 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User>
             String userInfoUrl = "https://gitee.com/api/v5/user?access_token=" + accessToken;
             String userInfoUrl = "https://gitee.com/api/v5/user?access_token=" + accessToken;
             userInfo = HttpUtil.createGet(userInfoUrl).execute().body();
             userInfo = HttpUtil.createGet(userInfoUrl).execute().body();
         }
         }
+        User user = new User();
+        user.setId(String.valueOf(SnowflakeUtil.nextId()));
+
         return userInfo;
         return userInfo;
     }
     }
+
+    @Override
+    public ResultVo logout(String token)throws Exception {
+        //解密token
+        Claims claims = AppJwtUtil.getClaimsBody(token);
+        String id = claims.get("id").toString();
+        User u = userMapper.selectById(id);
+
+        InetAddress localHost = null;
+        localHost = InetAddress.getLocalHost();
+        //日志添加
+        log.info("添加用户日志信息");
+        UserLog userLog = new UserLog();
+        userLog.setUserId(u.getId());
+        userLog.setUserName(u.getUsername());
+        userLog.setLoginZhu(localHost.getHostName());
+        userLog.setZhuIp(localHost.getHostAddress());
+        userLog.setLoginTime(new Date());
+        userLog.setDescribes("用户登出");
+        userLogMapper.insert(userLog);
+
+        //清理线程
+        UserThreadLocalhostUtil.remove();
+        return ResultVo.success(ApiServiceExceptionEnum.LOGOUT_OK);
+    }
+
+    @Override
+    public ResultVo myUserData(String token) {
+        log.info("用户个人信息");
+        Claims claims = AppJwtUtil.getClaimsBody(token);
+        String id = claims.get("id").toString();
+        User user = userMapper.selectById(id);
+        if(user==null){
+            return ResultVo.error(ApiServiceExceptionEnum.YONGHU_NOT_NULL);
+        }
+        QueryWrapper<UserProfile> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(UserProfile::getUserId,user.getId());
+        UserProfile userProfile = userProfileMapper.selectOne(queryWrapper);
+        user.setProfiles(userProfile);
+
+        return ResultVo.success(ApiServiceExceptionEnum.RESULT_SUCCES,user);
+    }
+
+    @Override
+    public ResultVo updapeUserPwd(UserPwdDto dto) {
+        Claims claims = AppJwtUtil.getClaimsBody(dto.getToken());
+        String id = claims.get("id").toString();
+        User user = userMapper.selectById(id);
+        if(user==null){
+            return ResultVo.error(ApiServiceExceptionEnum.YONGHU_NOT_NULL);
+        }
+        //从reids中获取验证码
+        String yan = (String) redisTemplate.opsForValue().get("yan");
+        if(!yan.equals(dto.getSmsCode())){
+            //判断验证码是否正确
+            log.info("验证码错误");
+            return ResultVo.error(ApiServiceExceptionEnum.YAN_ERROR);
+        }
+
+        String pwd = DigestUtils.md5DigestAsHex((user.getSalt()+dto.getPassword()).getBytes(StandardCharsets.UTF_8));
+        user.setPassword(pwd);
+        userMapper.updateById(user);
+
+        return ResultVo.success(ApiServiceExceptionEnum.RESULT_SUCCES,"修改密码成功");
+    }
 }
 }