zhentao 3 days ago
parent
commit
56d6fb46eb

+ 6 - 0
pom.xml

@@ -19,6 +19,12 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-websocket</artifactId>
         </dependency> -->
+
+        <dependency>
+            <groupId>com.belerweb</groupId>
+            <artifactId>pinyin4j</artifactId>
+            <version>2.5.0</version>
+        </dependency>
         <dependency>
             <groupId>com.alibaba</groupId>
             <artifactId>dashscope-sdk-java</artifactId>

+ 55 - 0
src/main/java/com/zhentao/information/netty/NettyServer.java

@@ -0,0 +1,55 @@
+package com.zhentao.information.netty;
+
+import com.zhentao.information.handler.WebSocketHandler;
+import io.netty.bootstrap.ServerBootstrap;
+import io.netty.channel.ChannelInitializer;
+import io.netty.channel.socket.SocketChannel;
+import io.netty.handler.codec.http.HttpObjectAggregator;
+import io.netty.handler.codec.http.HttpServerCodec;
+import io.netty.handler.codec.http.websocketx.WebSocketServerProtocolHandler;
+import io.netty.handler.stream.ChunkedWriteHandler;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.Resource;
+
+/**
+ * Netty服务器启动类
+ * 启动动一个基于 Netty 的 WebSocket 服务器
+ * 启动 WebSocket 服务器:
+ * 它会配置一个 Netty 的 ServerBootstrap,并绑定到指定的端口(默认是 8888)。
+ * 它会初始化一个 Netty 的通道管道(ChannelPipeline),并添加各种处理器来处理 WebSocket 连接和消息。
+ */
+@Slf4j
+@Component
+public class NettyServer {
+
+    @Value("${netty.port:8888}")
+    private int port;
+
+    @Resource
+    private ServerBootstrap serverBootstrap;
+
+    @Resource
+    private WebSocketHandler webSocketHandler;
+
+    @PostConstruct
+    public void start() throws Exception {
+        serverBootstrap.childHandler(new ChannelInitializer<SocketChannel>() {
+            @Override
+            protected void initChannel(SocketChannel ch) {
+                ch.pipeline()
+                        .addLast(new HttpServerCodec())
+                        .addLast(new ChunkedWriteHandler())
+                        .addLast(new HttpObjectAggregator(65536))
+                        .addLast(new WebSocketServerProtocolHandler("/ws"))
+                        .addLast(webSocketHandler);
+            }
+        });
+
+        serverBootstrap.bind(port).sync();
+        log.info("Netty服务器启动成功,端口:{}", port);
+    }
+}

+ 12 - 0
src/main/java/com/zhentao/user/controller/UserController.java

@@ -41,6 +41,7 @@ public class UserController {
     @PostMapping("/register")
     @NullLogin
     public Result Register(@RequestBody UserRegister userRegister){
+
         return userLoginService.register(userRegister);
     }
 
@@ -179,4 +180,15 @@ public class UserController {
         return Result.OK(userLoginService.searchFriends(keyword), "查询成功");
     }
 
+
+    //  修改头像
+    @PostMapping("updateUserInfo")
+    @NullLogin
+    public Result updateUserInfo(@RequestHeader("token") String token, @RequestBody Userinfox userinfox) {
+        // 从 token 中获取当前登录用户的 ID
+        String userIdFromToken = TokenUtils.getUserIdFromToken(token);
+        userinfox.setId(Long.valueOf(userIdFromToken));
+        return userLoginService.updateUserInfo(userinfox);
+    }
+
 }

+ 46 - 0
src/main/java/com/zhentao/user/dto/Userinfox.java

@@ -0,0 +1,46 @@
+package com.zhentao.user.dto;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.util.Date;
+@Data
+public class Userinfox {
+    @TableId
+    private Long id;
+
+
+    /**
+     * 账号
+     */
+    private String userUsername;
+    /**
+     * 头像图片
+     */
+    private String avatar;
+
+    /**
+     * 用户昵称
+     */
+    private String nickName;
+
+
+
+    /**
+     * 性别1男2女3未知
+     */
+    private Integer gender;
+
+    /**
+     * 个性签名
+     */
+    private String userIntro;
+
+
+
+
+
+
+
+
+}

+ 5 - 0
src/main/java/com/zhentao/user/service/UserLoginService.java

@@ -44,4 +44,9 @@ public interface UserLoginService extends IService<UserLogin> {
     Result validateCode(NoteDto noteDto);
 
     Result validateEmailCode(EmailDto emailDto);
+
+
+
+    //    修改头像
+    Result updateUserInfo(Userinfox userinfox);
 }

+ 70 - 5
src/main/java/com/zhentao/user/service/impl/UserLoginServiceImpl.java

@@ -8,6 +8,8 @@ import com.zhentao.enums.ApiServerException;
 import com.zhentao.exception.AsynException;
 
 import com.zhentao.information.service.WebSocketService;
+import com.zhentao.shouye.domain.UserShouye;
+import com.zhentao.shouye.mapper.UserShouyeMapper;
 import com.zhentao.tool.TokenUtils;
 import com.zhentao.user.domain.UserLogin;
 import com.zhentao.user.dto.*;
@@ -15,6 +17,8 @@ import com.zhentao.user.service.EmailService;
 import com.zhentao.user.service.UserLoginService;
 import com.zhentao.user.mapper.UserLoginMapper;
 import com.zhentao.user.service.UserOnlineStatusService;
+import com.zhentao.userRelationships.domain.UserRelationships;
+import com.zhentao.userRelationships.mapper.UserRelationshipsMapper;
 import com.zhentao.utils.HttpUtils;
 import com.zhentao.utils.SnowflakeIdGenerator;
 import com.zhentao.vo.Result;
@@ -30,11 +34,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletRequest;
 import java.nio.charset.StandardCharsets;
-import java.util.List;
-import java.util.Optional;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.UUID;
+import java.util.*;
 import java.util.concurrent.TimeUnit;
 
 /**
@@ -58,6 +58,12 @@ public class UserLoginServiceImpl extends ServiceImpl<UserLoginMapper, UserLogin
     @Autowired
     private UserOnlineStatusService onlineStatusService;
 
+    @Autowired
+    private UserShouyeMapper userShouyeMapper;
+
+    @Autowired
+    private UserRelationshipsMapper userRelationshipsMapper;
+
     //注册
     @Override
     public Result register(UserRegister userRegister) {
@@ -98,6 +104,27 @@ public class UserLoginServiceImpl extends ServiceImpl<UserLoginMapper, UserLogin
                 userLoginMapper.insert(user);
                 String token = TokenUtils.generateToken(user.getId().toString());
                 stringRedisTemplate.opsForValue().set(user.getId().toString(),token,10, TimeUnit.MINUTES);
+
+                UserShouye userShouye = new UserShouye();
+                userShouye.setId(IdUtil.getSnowflake().nextId());
+                userShouye.setUid1(user.getId());
+                userShouye.setUid2(1933707308387405824L);
+                userShouye.setGid(0L);
+                userShouye.setStatus(0);
+                userShouyeMapper.insert(userShouye);
+
+                UserRelationships userRelationships=new UserRelationships();
+                userRelationships.setId(IdUtil.getSnowflake().nextId());
+                userRelationships.setFriendId(1933707308387405824L);
+                userRelationships.setStatus(1);
+                userRelationships.setCreatedAt(new Date());
+                userRelationships.setUpdatedAt(new Date());
+                userRelationships.setIsBlacklist(0);
+                userRelationships.setIsMoments(0);
+                userRelationships.setIsDel(0);
+                userRelationshipsMapper.insert(userRelationships);
+
+
                 return Result.OK(null,"注册成功");
             }
             if(userRegister.getType()==2){
@@ -106,6 +133,28 @@ public class UserLoginServiceImpl extends ServiceImpl<UserLoginMapper, UserLogin
                 userLoginMapper.insert(user);
                 String token = TokenUtils.generateToken(user.getId().toString());
                 stringRedisTemplate.opsForValue().set(user.getUserUsername(),token,10, TimeUnit.MINUTES);
+
+
+
+                UserShouye userShouye = new UserShouye();
+                userShouye.setId(IdUtil.getSnowflake().nextId());
+                userShouye.setUid1(user.getId());
+                userShouye.setUid2(1933707308387405824L);
+                userShouye.setGid(0L);
+                userShouye.setStatus(0);
+                userShouyeMapper.insert(userShouye);
+
+                UserRelationships userRelationships=new UserRelationships();
+                userRelationships.setId(IdUtil.getSnowflake().nextId());
+                userRelationships.setFriendId(1933707308387405824L);
+                userRelationships.setStatus(1);
+                userRelationships.setCreatedAt(new Date());
+                userRelationships.setUpdatedAt(new Date());
+                userRelationships.setIsBlacklist(0);
+                userRelationships.setIsMoments(0);
+                userRelationships.setIsDel(0);
+                userRelationshipsMapper.insert(userRelationships);
+
                 return Result.OK(null,"注册成功");
             }
         }
@@ -341,6 +390,22 @@ public class UserLoginServiceImpl extends ServiceImpl<UserLoginMapper, UserLogin
         }
         return Result.ERR(null,"验证码错误");
     }
+
+
+    @Override
+    public Result updateUserInfo(Userinfox userinfox) {
+        UserLogin one = this.getOne(new QueryWrapper<UserLogin>().eq("id", userinfox.getId()));
+        one.setNickName(userinfox.getNickName());
+        one.setGender(userinfox.getGender());
+        one.setUserIntro(userinfox.getUserIntro());
+        one.setAvatar(userinfox.getAvatar());
+        boolean b = this.updateById(one);
+        if(b){
+            return Result.OK("修改成功",null);
+        }else {
+            return Result.ERR("修改失败", null);
+        }
+    }
 }
 
 

+ 5 - 1
src/main/java/com/zhentao/userRelationships/domain/UserRelationships.java

@@ -1,11 +1,14 @@
 package com.zhentao.userRelationships.domain;
 
+import com.alibaba.fastjson.annotation.JSONField;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import java.io.Serializable;
 import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 
 /**
@@ -19,7 +22,8 @@ public class UserRelationships implements Serializable {
      * 关系ID
      */
     @TableId(type = IdType.AUTO)
-    private Integer id;
+    @JsonFormat(shape = JsonFormat.Shape.STRING)
+    private Long id;
 
     /**
      * 用户ID