zhentao 4 days ago
parent
commit
701c680480

+ 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);
+    }
+}

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

@@ -179,4 +179,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);
 }

+ 16 - 0
src/main/java/com/zhentao/user/service/impl/UserLoginServiceImpl.java

@@ -341,6 +341,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);
+        }
+    }
 }