Explorar el Código

Merge remote-tracking branch 'origin/master'

johnclot69 hace 3 meses
padre
commit
23586d1607
Se han modificado 22 ficheros con 1111 adiciones y 129 borrados
  1. 193 0
      incubator-game/src/main/java/com/incubator/game/data/po/ZjClubMemberPo.java
  2. 1 99
      incubator-game/src/main/java/com/incubator/game/data/po/ZjClubPo.java
  3. 127 0
      incubator-game/src/main/java/com/incubator/game/data/po/ZjMemberAddrPO.java
  4. 26 0
      incubator-game/src/main/java/com/incubator/game/data/po/ZjUserLobbyPo.java
  5. 40 0
      incubator-game/src/main/java/com/incubator/game/handler/address/GetAddressList.java
  6. 49 0
      incubator-game/src/main/java/com/incubator/game/handler/address/SaveAddress.java
  7. 92 0
      incubator-game/src/main/java/com/incubator/game/handler/club/AgreeOrRefuseJoin.java
  8. 54 0
      incubator-game/src/main/java/com/incubator/game/handler/club/ApplyJoinClub.java
  9. 51 16
      incubator-game/src/main/java/com/incubator/game/handler/club/CreateClub.java
  10. 98 0
      incubator-game/src/main/java/com/incubator/game/handler/club/DeleteMember.java
  11. 90 0
      incubator-game/src/main/java/com/incubator/game/handler/club/DissolveClub.java
  12. 48 0
      incubator-game/src/main/java/com/incubator/game/handler/club/GetApplyList.java
  13. 6 1
      incubator-game/src/main/java/com/incubator/game/handler/club/GetClubListHandler.java
  14. 2 1
      incubator-game/src/main/java/com/incubator/game/handler/club/GetMyClub.java
  15. 48 0
      incubator-game/src/main/java/com/incubator/game/handler/club/GetMyClubList.java
  16. 17 11
      incubator-game/src/main/java/com/incubator/game/handler/club/QuitClub.java
  17. 1 1
      incubator-game/src/main/java/com/incubator/game/handler/login/LoginGameHandler.java
  18. 38 0
      incubator-game/src/main/java/com/incubator/game/handler/user/UpdateAvatarUrlHandler.java
  19. 38 0
      incubator-game/src/main/java/com/incubator/game/handler/user/UpdateCharacterUrlHandler.java
  20. 39 0
      incubator-game/src/main/java/com/incubator/game/handler/user/UpdateNickNameHandler.java
  21. 38 0
      incubator-game/src/main/java/com/incubator/game/handler/user/UpdatePhoneHandler.java
  22. 15 0
      incubator-message/src/main/proto/CommonProto.proto

+ 193 - 0
incubator-game/src/main/java/com/incubator/game/data/po/ZjClubMemberPo.java

@@ -0,0 +1,193 @@
+package com.incubator.game.data.po;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * Author:  xhb
+ * Date:  2024-12-10 9:46
+ */
+public class ZjClubMemberPo {
+
+    /**
+     * 主键id
+     */
+    private String memberId;
+
+    /**
+     * 用户id
+     */
+    private String userId;
+
+    /**
+     * 俱乐部id
+     */
+    private String clubId;
+
+    /**
+     * 加入状态 0:申请加入 1:同意加入 2:拒绝加入 3:退出俱乐部 4:删除俱乐部
+     */
+    private String memberStatus;
+
+    /**
+     * 加入时间
+     */
+    private Date joinTime;
+
+    /**
+     * 退出时间
+     */
+    private Date quitTime;
+
+    /**
+     * 申请理由
+     */
+    private String requestExplain;
+
+    /**
+     * 申请渠道
+     */
+    private String requestChannel;
+
+    /**
+     * 用户昵称
+     */
+    private String nickName;
+
+    /**
+     * 用户头像
+     */
+    private String avatarUrl;
+
+    /**
+     * 是否为主俱乐部
+     */
+    private String isMain;
+
+    /**
+     * 是否为掌门人
+     */
+    private String isMaster;
+
+    /**
+     * 近7日大师分
+     */
+    private Integer sevenDayMasterScore;
+
+    /**
+     * 胜率
+     */
+    private BigDecimal winRate;
+
+    public BigDecimal getWinRate() {
+        return winRate;
+    }
+
+    public void setWinRate(BigDecimal winRate) {
+        this.winRate = winRate;
+    }
+
+    public String getMemberId() {
+        return memberId;
+    }
+
+    public void setMemberId(String memberId) {
+        this.memberId = memberId;
+    }
+
+    public String getUserId() {
+        return userId;
+    }
+
+    public void setUserId(String userId) {
+        this.userId = userId;
+    }
+
+    public String getClubId() {
+        return clubId;
+    }
+
+    public void setClubId(String clubId) {
+        this.clubId = clubId;
+    }
+
+    public String getMemberStatus() {
+        return memberStatus;
+    }
+
+    public void setMemberStatus(String memberStatus) {
+        this.memberStatus = memberStatus;
+    }
+
+    public Date getJoinTime() {
+        return joinTime;
+    }
+
+    public void setJoinTime(Date joinTime) {
+        this.joinTime = joinTime;
+    }
+
+    public Date getQuitTime() {
+        return quitTime;
+    }
+
+    public void setQuitTime(Date quitTime) {
+        this.quitTime = quitTime;
+    }
+
+    public String getRequestExplain() {
+        return requestExplain;
+    }
+
+    public void setRequestExplain(String requestExplain) {
+        this.requestExplain = requestExplain;
+    }
+
+    public String getRequestChannel() {
+        return requestChannel;
+    }
+
+    public void setRequestChannel(String requestChannel) {
+        this.requestChannel = requestChannel;
+    }
+
+    public String getNickName() {
+        return nickName;
+    }
+
+    public void setNickName(String nickName) {
+        this.nickName = nickName;
+    }
+
+    public String getAvatarUrl() {
+        return avatarUrl;
+    }
+
+    public void setAvatarUrl(String avatarUrl) {
+        this.avatarUrl = avatarUrl;
+    }
+
+    public String getIsMain() {
+        return isMain;
+    }
+
+    public void setIsMain(String isMain) {
+        this.isMain = isMain;
+    }
+
+    public String getIsMaster() {
+        return isMaster;
+    }
+
+    public void setIsMaster(String isMaster) {
+        this.isMaster = isMaster;
+    }
+
+    public Integer getSevenDayMasterScore() {
+        return sevenDayMasterScore;
+    }
+
+    public void setSevenDayMasterScore(Integer sevenDayMasterScore) {
+        this.sevenDayMasterScore = sevenDayMasterScore;
+    }
+}

+ 1 - 99
incubator-game/src/main/java/com/incubator/game/data/po/ZjClubPo.java

@@ -6,7 +6,7 @@ import java.util.Date;
  * Author:  xhb
  * Date:  2024-12-09 13:32
  */
-public class ZjClubPo extends ZjUserPo{
+public class ZjClubPo{
     /**
      * 主键id
      */
@@ -67,90 +67,15 @@ public class ZjClubPo extends ZjUserPo{
      */
     private Integer onlineCount;
 
-    /**
-     * 是否为主俱乐部
-     */
-    private String isMain;
-
-    /**
-     * 是否为好友
-     */
-    private String isFriend;
-
-    /**
-     * 是否为掌门人
-     */
-    private String isMaster;
 
     /**
      * 近7日大师分
      */
     private String sevenDayMasterScore;
 
-    /**
-     * 俱乐部成员状态
-     */
-    private String memberStatus;
-
-    /**
-     * 加入时间
-     */
-    private Date joinTime;
-
-    /**
-     * 退出时间
-     */
-    private Date quitTime;
-
-    /**
-     * 申请理由
-     */
-    private String requestExplain;
-
-    /**
-     * 申请渠道
-     */
-    private String requestChannel;
-
-    public String getMemberStatus() {
-        return memberStatus;
-    }
-
-    public void setMemberStatus(String memberStatus) {
-        this.memberStatus = memberStatus;
-    }
 
-    public Date getJoinTime() {
-        return joinTime;
-    }
 
-    public void setJoinTime(Date joinTime) {
-        this.joinTime = joinTime;
-    }
 
-    public Date getQuitTime() {
-        return quitTime;
-    }
-
-    public void setQuitTime(Date quitTime) {
-        this.quitTime = quitTime;
-    }
-
-    public String getRequestExplain() {
-        return requestExplain;
-    }
-
-    public void setRequestExplain(String requestExplain) {
-        this.requestExplain = requestExplain;
-    }
-
-    public String getRequestChannel() {
-        return requestChannel;
-    }
-
-    public void setRequestChannel(String requestChannel) {
-        this.requestChannel = requestChannel;
-    }
 
     public String getClubId() {
         return clubId;
@@ -248,29 +173,6 @@ public class ZjClubPo extends ZjUserPo{
         this.onlineCount = onlineCount;
     }
 
-    public String getIsMain() {
-        return isMain;
-    }
-
-    public void setIsMain(String isMain) {
-        this.isMain = isMain;
-    }
-
-    public String getIsFriend() {
-        return isFriend;
-    }
-
-    public void setIsFriend(String isFriend) {
-        this.isFriend = isFriend;
-    }
-
-    public String getIsMaster() {
-        return isMaster;
-    }
-
-    public void setIsMaster(String isMaster) {
-        this.isMaster = isMaster;
-    }
 
     public String getSevenDayMasterScore() {
         return sevenDayMasterScore;

+ 127 - 0
incubator-game/src/main/java/com/incubator/game/data/po/ZjMemberAddrPO.java

@@ -0,0 +1,127 @@
+package com.incubator.game.data.po;
+
+import java.util.Date;
+
+/**
+ * Author:  xhb
+ * Date:  2024-12-10 14:43
+ */
+public class ZjMemberAddrPO {
+
+    /**
+     * ID
+     */
+    private String addrId;
+
+    /**
+     * 用户ID
+     */
+    private String userId;
+
+    /**
+     * 收货人
+     */
+    private String receiver;
+
+    /**
+     * 地址
+     */
+    private String addr;
+
+    /**
+     * 手机
+     */
+    private String mobile;
+
+    /**
+     * 状态,1正常,0无效
+     */
+    private Integer status;
+
+    /**
+     * 是否默认地址 1是
+     */
+    private Integer commonAddr;
+
+    /**
+     * 建立时间
+     */
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+    public String getAddrId() {
+        return addrId;
+    }
+
+    public void setAddrId(String addrId) {
+        this.addrId = addrId;
+    }
+
+    public String getUserId() {
+        return userId;
+    }
+
+    public void setUserId(String userId) {
+        this.userId = userId;
+    }
+
+    public String getReceiver() {
+        return receiver;
+    }
+
+    public void setReceiver(String receiver) {
+        this.receiver = receiver;
+    }
+
+    public String getAddr() {
+        return addr;
+    }
+
+    public void setAddr(String addr) {
+        this.addr = addr;
+    }
+
+    public String getMobile() {
+        return mobile;
+    }
+
+    public void setMobile(String mobile) {
+        this.mobile = mobile;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    public Integer getCommonAddr() {
+        return commonAddr;
+    }
+
+    public void setCommonAddr(Integer commonAddr) {
+        this.commonAddr = commonAddr;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+}

+ 26 - 0
incubator-game/src/main/java/com/incubator/game/data/po/ZjUserLobbyPo.java

@@ -8,6 +8,11 @@ import java.util.Date;
  * Date:  2024-12-06 13:55
  */
 public class ZjUserLobbyPo {
+
+    /**
+     * token
+     */
+    private String token;
     /**
      * 定位
      */
@@ -164,6 +169,27 @@ public class ZjUserLobbyPo {
      */
     private Integer charm;
 
+    /**
+     * 手机号
+     */
+    private String phone;
+
+    public String getPhone() {
+        return phone;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
+
+    public String getToken() {
+        return token;
+    }
+
+    public void setToken(String token) {
+        this.token = token;
+    }
+
     public String getGps() {
         return gps;
     }

+ 40 - 0
incubator-game/src/main/java/com/incubator/game/handler/address/GetAddressList.java

@@ -0,0 +1,40 @@
+package com.incubator.game.handler.address;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.incubator.common.MessageHandler;
+import com.incubator.common.net.Connection;
+import com.incubator.core.net.ws.NetHandler;
+import com.incubator.core.net.ws.WSRequest;
+import com.incubator.core.net.ws.WSResponse;
+import com.incubator.game.constant.RedisKeyConstant;
+import com.incubator.game.data.jedis.RedisUtil;
+import com.incubator.game.data.po.ZjMemberAddrPO;
+import com.incubator.game.util.UtilCore;
+import com.incubator.message.proto.CommonProto;
+
+import java.util.*;
+
+/**
+ * Author:  xhb
+ * Date:  2024-12-10 15:07
+ */
+@MessageHandler(id = CommonProto.Cmd.GetAddressListReq_VALUE)
+public class GetAddressList extends NetHandler {
+
+    @Override
+    public void onDate(Connection session, WSRequest request, WSResponse response) {
+        response.setCmd(CommonProto.Cmd.GetAddressListRes_VALUE);
+
+        String userId = request.getDataValue("userId", String.class, "");
+        String userInfo = RedisUtil.get(RedisKeyConstant.USER_BASE + userId);
+        JSONObject userObject = JSONUtil.parseObj(userInfo);
+        JSONArray userAddress = userObject.getJSONArray("userAddress");
+        List<ZjMemberAddrPO> zjMemberAddrPOList = userAddress.toList(ZjMemberAddrPO.class);
+        Map<String,Object> map = new HashMap<>();
+        map.put("addressList",zjMemberAddrPOList);
+        response.setData(map);
+    }
+}

+ 49 - 0
incubator-game/src/main/java/com/incubator/game/handler/address/SaveAddress.java

@@ -0,0 +1,49 @@
+package com.incubator.game.handler.address;
+
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.incubator.common.MessageHandler;
+import com.incubator.common.net.Connection;
+import com.incubator.core.net.ws.NetHandler;
+import com.incubator.core.net.ws.WSRequest;
+import com.incubator.core.net.ws.WSResponse;
+import com.incubator.game.constant.RedisKeyConstant;
+import com.incubator.game.data.jedis.RedisUtil;
+import com.incubator.game.data.po.ZjMemberAddrPO;
+import com.incubator.message.proto.CommonProto;
+
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+
+/**
+ * Author:  xhb
+ * Date:  2024-12-10 15:06
+ */
+@MessageHandler(id = CommonProto.Cmd.SaveAddressReq_VALUE)
+public class SaveAddress extends NetHandler {
+
+    @Override
+    public void onDate(Connection session, WSRequest request, WSResponse response) {
+        response.setCmd(CommonProto.Cmd.SaveAddressRes_VALUE);
+        String addressInfo = request.getDataValue("addressInfo", String.class, "");
+        JSONObject addressObject = JSONUtil.parseObj(addressInfo);
+        ZjMemberAddrPO zjMemberAddrPO = addressObject.toBean(ZjMemberAddrPO.class);
+
+        String userInfo = RedisUtil.get(RedisKeyConstant.USER_BASE + zjMemberAddrPO.getUserId());
+        JSONObject userObject = JSONUtil.parseObj(userInfo);
+        JSONArray userAddress = userObject.getJSONArray("userAddress");
+        List<ZjMemberAddrPO> zjMemberAddrPOList = userAddress.toList(ZjMemberAddrPO.class);
+        zjMemberAddrPOList.add(zjMemberAddrPO);
+
+        if (zjMemberAddrPO.getCommonAddr()==1){
+            zjMemberAddrPOList.stream()
+                    .peek(po -> po.setStatus(Objects.equals(po.getAddrId(), zjMemberAddrPO.getAddrId()) ? 1 : 0))
+                    .collect(Collectors.toList());
+        }
+        RedisUtil.set(RedisKeyConstant.USER_BASE + zjMemberAddrPO.getUserId(), userObject.toString());
+        response.setMessage("操作成功!");
+    }
+}

+ 92 - 0
incubator-game/src/main/java/com/incubator/game/handler/club/AgreeOrRefuseJoin.java

@@ -0,0 +1,92 @@
+package com.incubator.game.handler.club;
+
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.incubator.common.MessageHandler;
+import com.incubator.common.net.Connection;
+import com.incubator.core.net.ws.NetHandler;
+import com.incubator.core.net.ws.WSRequest;
+import com.incubator.core.net.ws.WSResponse;
+import com.incubator.game.constant.RedisKeyConstant;
+import com.incubator.game.data.jedis.RedisUtil;
+import com.incubator.game.data.po.ZjClubMemberPo;
+import com.incubator.game.data.po.ZjClubPo;
+import com.incubator.game.data.po.ZjUserLobbyPo;
+import com.incubator.message.proto.CommonProto;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * Author:  xhb
+ * Date:  2024-12-09 14:27
+ * 同意或拒绝加入俱乐部
+ */
+@MessageHandler(id = CommonProto.Cmd.AgreeOrRefuseJoinReq_VALUE)
+public class AgreeOrRefuseJoin extends NetHandler {
+
+    @Override
+    public void onDate(Connection session, WSRequest request, WSResponse response) {
+        response.setCmd(CommonProto.Cmd.AgreeOrRefuseJoinRes_VALUE);
+
+        String ids = request.getDataValue("userIds", String.class, "");
+        String status = request.getDataValue("status", String.class, "");
+        String clubId = request.getDataValue("clubId", String.class, "");
+
+        // 查询指定俱乐部
+        String clubListStr = RedisUtil.get(RedisKeyConstant.CLUB_BASE);
+        JSONObject clubJson = JSONUtil.parseObj(clubListStr);
+        JSONArray clubListArray = clubJson.getJSONArray("clubList");
+        List<ZjClubPo> clubList = clubListArray.toList(ZjClubPo.class);
+        ZjClubPo zjClub = clubList.stream()
+                .filter(club -> clubId.equals(club.getClubId()))
+                .findFirst()
+                .orElse(null);
+        if (zjClub == null) {
+            response.setCode(102);
+            response.setMessage("俱乐部不存在");
+            return;
+        }
+
+        // 提取status属性为"0"的元素,并组成新的集合
+        String memberListStr = RedisUtil.get(RedisKeyConstant.CLUB_MEMBER + clubId);
+        JSONObject memberObject = JSONUtil.parseObj(memberListStr);
+        JSONArray clubMemberArray = memberObject.getJSONArray("clubMember");
+        List<ZjClubMemberPo> clubMember = clubMemberArray.toList(ZjClubMemberPo.class);
+        Map<String, ZjClubMemberPo> memberMap = new HashMap<>();
+        for (ZjClubMemberPo member : clubMember) {
+            if ("0".equals(member.getMemberStatus())) {
+                memberMap.put(member.getUserId(), member);
+            }
+        }
+
+        String[] userIds = ids.split(",");
+        Date now = new Date(); // 创建一次,循环中重用
+        for (String userId : userIds) {
+            ZjClubMemberPo member = memberMap.get(userId);
+            if (member != null) {
+                member.setMemberStatus(status);
+                if ("1".equals(status)) {
+                    zjClub.setClubMemberNum(zjClub.getClubMemberNum() + 1);
+                    member.setIsMaster("N");
+                    member.setJoinTime(now);
+
+                    String userInfo = RedisUtil.get(RedisKeyConstant.USER_BASE + userId);
+                    JSONObject userObject = JSONUtil.parseObj(userInfo);
+                    ZjUserLobbyPo lobbyUser = JSONUtil.toBean(userObject.getJSONObject("lobbyUser"), ZjUserLobbyPo.class);
+                    if (lobbyUser.getUserClub() == null || lobbyUser.getUserClub().isEmpty()) {
+                        lobbyUser.setUserClub(clubId);
+                        userObject.put("lobbyUser", lobbyUser);
+                        RedisUtil.set(RedisKeyConstant.USER_BASE + userId, userObject.toString());
+                    }
+                }
+            }
+        }
+
+        memberObject.put("clubMember", new JSONArray(memberMap.values()));
+        RedisUtil.set(RedisKeyConstant.CLUB_MEMBER + clubId, memberObject.toString());
+        RedisUtil.set(RedisKeyConstant.CLUB_BASE, clubJson.toString());
+        response.setMessage("操作成功!");
+    }
+}

+ 54 - 0
incubator-game/src/main/java/com/incubator/game/handler/club/ApplyJoinClub.java

@@ -0,0 +1,54 @@
+package com.incubator.game.handler.club;
+
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.incubator.common.MessageHandler;
+import com.incubator.common.net.Connection;
+import com.incubator.core.net.ws.NetHandler;
+import com.incubator.core.net.ws.WSRequest;
+import com.incubator.core.net.ws.WSResponse;
+import com.incubator.game.constant.RedisKeyConstant;
+import com.incubator.game.data.jedis.RedisUtil;
+import com.incubator.game.data.po.ZjClubMemberPo;
+import com.incubator.game.data.po.ZjUserLobbyPo;
+import com.incubator.game.util.UtilCore;
+import com.incubator.message.proto.CommonProto;
+
+
+/**
+ * Author:  xhb
+ * Date:  2024-12-09 14:27
+ * 请求加入俱乐部请求
+ */
+@MessageHandler(id = CommonProto.Cmd.ApplyJoinClubReq_VALUE)
+public class ApplyJoinClub extends NetHandler {
+
+    @Override
+    public void onDate(Connection session, WSRequest request, WSResponse response) {
+        response.setCmd(CommonProto.Cmd.ApplyJoinClubRes_VALUE);
+        /**
+         *memberId,userId,clubId,memberStatus,requestExplain,requestChannel
+         */
+        String clubMemberInfo = request.getDataValue("clubMemberInfo", String.class, "");
+        ZjClubMemberPo newClubMember = JSONUtil.parseObj(clubMemberInfo).toBean(ZjClubMemberPo.class);
+        String userInfo = RedisUtil.get(RedisKeyConstant.USER_BASE + newClubMember.getUserId());
+        JSONObject userObject = JSONUtil.parseObj(userInfo);
+        Object lobbyUserObj = userObject.get("lobbyUser");
+        ZjUserLobbyPo lobbyUser = JSONUtil.toBean((JSONObject) lobbyUserObj, ZjUserLobbyPo.class);
+
+        //创建成员信息
+        newClubMember.setMemberId(UtilCore.getDateRandomId());
+        newClubMember.setMemberStatus("0");//加入状态 0:申请加入 1:同意加入 2:拒绝加入 3:退出俱乐部 4:删除俱乐部
+        newClubMember.setNickName(lobbyUser.getNickName());
+        newClubMember.setAvatarUrl(lobbyUser.getAvatarUrl());
+        newClubMember.setWinRate(lobbyUser.getTraditionChance());
+        String memBerList = RedisUtil.get(RedisKeyConstant.CLUB_MEMBER + newClubMember.getClubId());
+        JSONArray clubMember = JSONUtil.parseObj(memBerList).getJSONArray("clubMember");
+        clubMember.add(newClubMember);
+        JSONObject object = new JSONObject();
+        object.put("clubMember", clubMember);
+        RedisUtil.set(RedisKeyConstant.CLUB_MEMBER + newClubMember.getClubId(), object.toString());
+        response.setMessage("申请成功!");
+    }
+}

+ 51 - 16
incubator-game/src/main/java/com/incubator/game/handler/club/CreateClub.java

@@ -10,12 +10,16 @@ import com.incubator.core.net.ws.WSRequest;
 import com.incubator.core.net.ws.WSResponse;
 import com.incubator.game.constant.RedisKeyConstant;
 import com.incubator.game.data.jedis.RedisUtil;
+import com.incubator.game.data.po.ZjClubMemberPo;
 import com.incubator.game.data.po.ZjClubPo;
 import com.incubator.game.data.po.ZjUserLobbyPo;
 import com.incubator.game.util.UtilCore;
 import com.incubator.message.proto.CommonProto;
 
+import java.util.Date;
 import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
 
 /**
  * Author:  xhb
@@ -30,12 +34,15 @@ public class CreateClub extends NetHandler {
         response.setCmd(CommonProto.Cmd.CreateClubRes_VALUE);
 
         String userId = request.getDataValue("userId", String.class, "");
+        String userInfo = RedisUtil.get(RedisKeyConstant.USER_BASE + userId);
+        JSONObject userObject = JSONUtil.parseObj(userInfo);
         String clubInfo = request.getDataValue("clubInfo", String.class, "");
+        ZjClubPo club = JSONUtil.parseObj(clubInfo).toBean(ZjClubPo.class);
+        JSONObject jsonObject = getClubListFromRedis();
+        JSONArray clubArray = jsonObject.getJSONArray("clubList");
+        List<ZjClubPo> clubList = clubArray.toList(ZjClubPo.class);
 
-        try {
-            JSONObject jsonObject = getClubListFromRedis();
-            JSONArray clubArray = jsonObject.getJSONArray("clubList");
-            List<ZjClubPo> clubList = clubArray.toList(ZjClubPo.class);
+        if (club.getClubId()==null){
 
             if (isUserAlreadyCreatedClub(clubList, userId)) {
                 response.setCode(CommonProto.Code.PARAMETER_ERR_VALUE);
@@ -43,17 +50,46 @@ public class CreateClub extends NetHandler {
                 return;
             }
 
-            ZjClubPo newClub = createNewClub(clubInfo, userId);
-            addClubToRedis(jsonObject, clubArray, newClub);
+            ZjClubPo newClub = createNewClub(club, userId);
+            addClubToRedis(jsonObject, clubArray, newClub);//添加俱乐部到redis
+
+            addClubMemberToRedis(userObject, newClub);//添加俱乐部成员到redis
 
-            updateUserLobbyClub(jsonObject, userId, newClub);
-        } catch (Exception e) {
-            // 处理异常,例如记录日志或返回错误响应
-            response.setCode(CommonProto.Code.SYSTEM_ERR_VALUE);
-            response.setMessage("创建俱乐部时发生错误");
-            e.printStackTrace();
+            updateUserLobbyClub(userId, newClub);//设置主俱乐部
+        }else {
+            Optional<ZjClubPo> existingClub = clubList.stream()
+                    .filter(clubPo -> clubPo.getClubId().equals(club.getClubId()))
+                    .findFirst();
+            existingClub.ifPresent(c -> {
+                c.setClubName(club.getClubName());
+                c.setClubImg(club.getClubImg());
+                c.setClubDescription(club.getClubDescription());
+                c.setClubAddress(club.getClubAddress());
+            });
+            jsonObject.put("clubList", clubList);
+            RedisUtil.set(RedisKeyConstant.CLUB_BASE, jsonObject.toString());
         }
     }
+
+    private void addClubMemberToRedis(JSONObject userObject, ZjClubPo newClub) {
+        Object lobbyUserObj = userObject.get("lobbyUser");
+        ZjUserLobbyPo lobbyUser = JSONUtil.toBean((JSONObject) lobbyUserObj, ZjUserLobbyPo.class);
+        ZjClubMemberPo zjClubMemberPo = new ZjClubMemberPo();
+        zjClubMemberPo.setMemberId(UtilCore.getDateRandomId());
+        zjClubMemberPo.setUserId(lobbyUser.getUserId());
+        zjClubMemberPo.setClubId(newClub.getClubId());
+        zjClubMemberPo.setIsMain("Y");
+        zjClubMemberPo.setIsMaster("Y");
+        zjClubMemberPo.setMemberStatus("1");
+        zjClubMemberPo.setAvatarUrl(lobbyUser.getAvatarUrl());
+        zjClubMemberPo.setNickName(lobbyUser.getNickName());
+        zjClubMemberPo.setJoinTime(new Date());
+        zjClubMemberPo.setSevenDayMasterScore((Integer) userObject.get("sevenScore"));
+        zjClubMemberPo.setRequestExplain("掌门人");
+        zjClubMemberPo.setRequestChannel("2");
+        RedisUtil.set(RedisKeyConstant.CLUB_MEMBER + newClub.getClubId(), zjClubMemberPo);
+    }
+
     private JSONObject getClubListFromRedis() {
         String clubListStr = RedisUtil.get(RedisKeyConstant.CLUB_BASE);
         return JSONUtil.parseObj(clubListStr);
@@ -63,8 +99,7 @@ public class CreateClub extends NetHandler {
         return clubList.stream().anyMatch(club -> club.getClubCreator().equals(userId));
     }
 
-    private ZjClubPo createNewClub(String clubInfo, String userId) {
-        ZjClubPo newClub = JSONUtil.parseObj(clubInfo).toBean(ZjClubPo.class);
+    private ZjClubPo createNewClub(ZjClubPo newClub , String userId) {
         newClub.setClubId(UtilCore.getDateRandomId());
         newClub.setClubCreator(userId);
         newClub.setOnlineCount(1);
@@ -79,9 +114,9 @@ public class CreateClub extends NetHandler {
         RedisUtil.set(RedisKeyConstant.CLUB_BASE, jsonObject.toString());
     }
 
-    private void updateUserLobbyClub(JSONObject userObject, String userId, ZjClubPo newClub) {
+    private void updateUserLobbyClub(String userId, ZjClubPo newClub) {
         String userInfo = RedisUtil.get(RedisKeyConstant.USER_BASE + userId);
-        userObject = JSONUtil.parseObj(userInfo);
+        JSONObject userObject = JSONUtil.parseObj(userInfo);
         Object lobbyUserObj = userObject.get("lobbyUser");
         ZjUserLobbyPo lobbyUser = JSONUtil.toBean((JSONObject) lobbyUserObj, ZjUserLobbyPo.class);
         lobbyUser.setUserClub(newClub.getClubId());

+ 98 - 0
incubator-game/src/main/java/com/incubator/game/handler/club/DeleteMember.java

@@ -0,0 +1,98 @@
+package com.incubator.game.handler.club;
+
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.incubator.common.MessageHandler;
+import com.incubator.common.net.Connection;
+import com.incubator.core.net.ws.NetHandler;
+import com.incubator.core.net.ws.WSRequest;
+import com.incubator.core.net.ws.WSResponse;
+import com.incubator.game.constant.RedisKeyConstant;
+import com.incubator.game.data.jedis.RedisUtil;
+import com.incubator.game.data.po.ZjClubMemberPo;
+import com.incubator.game.data.po.ZjClubPo;
+import com.incubator.game.data.po.ZjUserLobbyPo;
+import com.incubator.message.proto.CommonProto;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * Author:  xhb
+ * Date:  2024-12-09 14:28
+ */
+@MessageHandler(id = CommonProto.Cmd.DeleteMemberReq_VALUE)
+public class DeleteMember extends NetHandler {
+
+    @Override
+    public void onDate(Connection session, WSRequest request, WSResponse response) {
+        response.setCmd(CommonProto.Cmd.DeleteMemberRes_VALUE);
+
+        String userId = request.getDataValue("userId", String.class, "");
+        String clubId = request.getDataValue("clubId", String.class, "");
+
+        // 获取俱乐部列表和成员列表
+        String clubListStr = RedisUtil.get(RedisKeyConstant.CLUB_BASE);
+        String memberList = RedisUtil.get(RedisKeyConstant.CLUB_MEMBER + clubId);
+
+        JSONObject clubJson = JSONUtil.parseObj(clubListStr);
+        JSONArray clubListArray = clubJson.getJSONArray("clubList");
+        List<ZjClubPo> clubList = clubListArray.toList(ZjClubPo.class);
+        ZjClubPo zjClub = clubList.stream()
+                .filter(club -> clubId.equals(club.getClubId()))
+                .findFirst()
+                .orElse(null);
+        if (zjClub == null) {
+            response.setCode(102);
+            response.setMessage("俱乐部不存在");
+            return;
+        }
+
+        JSONObject memberObject = JSONUtil.parseObj(memberList);
+        JSONArray clubMemberArray = memberObject.getJSONArray("clubMember");
+        List<ZjClubMemberPo> clubMember = clubMemberArray.toList(ZjClubMemberPo.class);
+
+        Optional<ZjClubMemberPo> result = clubMember.stream()
+                .filter(member -> userId.equals(member.getUserId()))
+                .findFirst();
+        if (result.isPresent()) {
+            ZjClubMemberPo zjClubMember = result.get();
+            zjClubMember.setMemberStatus("3");
+            zjClubMember.setQuitTime(new Date());
+            zjClub.setClubMemberNum(zjClub.getClubMemberNum() - 1);
+
+            // 更新俱乐部列表和成员列表
+            clubJson.set("clubList", clubList);
+            memberObject.set("clubMember", clubMember);
+
+            // 使用Redis事务保证原子性
+            RedisUtil.set(RedisKeyConstant.CLUB_BASE, clubJson.toString());
+            RedisUtil.set(RedisKeyConstant.CLUB_MEMBER + clubId, memberObject.toString());
+
+            // 设置主俱乐部
+            String userInfo = RedisUtil.get(RedisKeyConstant.USER_BASE + userId);
+            JSONObject userObject = JSONUtil.parseObj(userInfo);
+            ZjUserLobbyPo lobbyUser = JSONUtil.toBean(userObject.getJSONObject("lobbyUser"), ZjUserLobbyPo.class);
+            if (lobbyUser.getUserClub().equals(clubId)) {
+                JSONArray userClubList = userObject.getJSONArray("clubList");
+                List<ZjClubPo> userClubPoList = userClubList.toList(ZjClubPo.class);
+
+                List<ZjClubPo> filteredClubList = userClubPoList.stream()
+                        .filter(club -> !clubId.equals(club.getClubId()))
+                        .collect(Collectors.toList());
+
+                if (filteredClubList.isEmpty()) {
+                    lobbyUser.setUserClub(null);
+                } else {
+                    ZjClubPo newClub = filteredClubList.get(0); // 直接选择第一个作为主俱乐部
+                    lobbyUser.setUserClub(newClub.getClubId());
+                }
+                userObject.put("lobbyUser", lobbyUser);
+                userObject.put("clubList", userClubList);
+                RedisUtil.set(RedisKeyConstant.USER_BASE + userId, userObject.toString());
+            }
+        }
+        response.setMessage("删除成功");
+    }
+}

+ 90 - 0
incubator-game/src/main/java/com/incubator/game/handler/club/DissolveClub.java

@@ -0,0 +1,90 @@
+package com.incubator.game.handler.club;
+
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.incubator.common.MessageHandler;
+import com.incubator.common.net.Connection;
+import com.incubator.core.net.ws.NetHandler;
+import com.incubator.core.net.ws.WSRequest;
+import com.incubator.core.net.ws.WSResponse;
+import com.incubator.game.constant.RedisKeyConstant;
+import com.incubator.game.data.jedis.RedisUtil;
+import com.incubator.game.data.po.ZjClubMemberPo;
+import com.incubator.game.data.po.ZjClubPo;
+import com.incubator.game.data.po.ZjUserLobbyPo;
+import com.incubator.message.proto.CommonProto;
+
+import java.util.List;
+import java.util.Objects;
+import java.util.Random;
+import java.util.stream.Collectors;
+
+/**
+ * Author:  xhb
+ * Date:  2024-12-09 14:28
+ */
+@MessageHandler(id = CommonProto.Cmd.DissolveClubReq_VALUE)
+public class DissolveClub extends NetHandler {
+    @Override
+    public void onDate(Connection session, WSRequest request, WSResponse response) {
+        response.setCode(CommonProto.Cmd.DissolveClubRes_VALUE);
+
+        String clubId = request.getDataValue("clubId", String.class, "");
+        String clubListStr = RedisUtil.get(RedisKeyConstant.CLUB_BASE);
+        JSONObject clubJson = JSONUtil.parseObj(clubListStr);
+        JSONArray clubListArray = clubJson.getJSONArray("clubList");
+        List<ZjClubPo> clubList = clubListArray.toList(ZjClubPo.class);
+        ZjClubPo zjClub = clubList.stream()
+                .filter(club -> clubId.equals(club.getClubId()))
+                .findFirst()
+                .orElse(null);
+        if (zjClub == null) {
+            response.setCode(102);
+            response.setMessage("俱乐部不存在");
+            return;
+        }
+
+        // 更新俱乐部状态
+        zjClub.setClubStatus("0"); // 解散俱乐部
+        clubJson.put("clubList", clubList);
+        RedisUtil.set(RedisKeyConstant.CLUB_BASE, clubJson.toString());
+
+        // 查询俱乐部成员,并踢出俱乐部
+        String memberList = RedisUtil.get(RedisKeyConstant.CLUB_MEMBER + clubId);
+        JSONObject memberObject = JSONUtil.parseObj(memberList);
+        JSONArray clubMemberArray = memberObject.getJSONArray("clubMember");
+        List<ZjClubMemberPo> zjClubMembers = clubMemberArray.toList(ZjClubMemberPo.class);
+
+        for (ZjClubMemberPo zjClubMember : zjClubMembers) {
+            zjClubMember.setMemberStatus("3");
+
+            // 设置主俱乐部
+            String userId = zjClubMember.getUserId();
+            String userInfo = RedisUtil.get(RedisKeyConstant.USER_BASE + userId);
+            JSONObject userObject = JSONUtil.parseObj(userInfo);
+            ZjUserLobbyPo lobbyUser = JSONUtil.toBean(userObject.getJSONObject("lobbyUser"), ZjUserLobbyPo.class);
+            if (lobbyUser.getUserClub().equals(clubId)) {
+                JSONArray userClubList = userObject.getJSONArray("clubList");
+                List<ZjClubPo> userClubPoList = userClubList.toList(ZjClubPo.class);
+
+                List<ZjClubPo> filteredClubList = userClubPoList.stream()
+                        .filter(club -> !clubId.equals(club.getClubId()))
+                        .collect(Collectors.toList());
+
+                if (filteredClubList.isEmpty()) {
+                    lobbyUser.setUserClub(null);
+                } else {
+                    ZjClubPo newClub = filteredClubList.get(0); // 直接选择第一个作为主俱乐部
+                    lobbyUser.setUserClub(newClub.getClubId());
+                }
+                userObject.put("lobbyUser", lobbyUser);
+                userObject.put("clubList", userClubList);
+                RedisUtil.set(RedisKeyConstant.USER_BASE + userId, userObject.toString());
+            }
+        }
+        memberObject.put("clubMember", zjClubMembers);
+        RedisUtil.set(RedisKeyConstant.CLUB_MEMBER + clubId, memberObject.toString());
+        response.setMessage("解散成功");
+    }
+}

+ 48 - 0
incubator-game/src/main/java/com/incubator/game/handler/club/GetApplyList.java

@@ -0,0 +1,48 @@
+package com.incubator.game.handler.club;
+
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.incubator.common.MessageHandler;
+import com.incubator.common.net.Connection;
+import com.incubator.core.net.ws.NetHandler;
+import com.incubator.core.net.ws.WSRequest;
+import com.incubator.core.net.ws.WSResponse;
+import com.incubator.game.constant.RedisKeyConstant;
+import com.incubator.game.data.jedis.RedisUtil;
+import com.incubator.game.data.po.ZjClubMemberPo;
+import com.incubator.game.data.po.ZjUserLobbyPo;
+import com.incubator.message.proto.CommonProto;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * Author:  xhb
+ * Date:  2024-12-09 14:27
+ * 获取申请列表
+ */
+@MessageHandler(id = CommonProto.Cmd.GetApplyListReq_VALUE)
+public class GetApplyList extends NetHandler {
+
+    @Override
+    public void onDate(Connection session, WSRequest request, WSResponse response) {
+        response.setCmd(CommonProto.Cmd.GetApplyListRes_VALUE);
+        String userId = request.getDataValue("userId", String.class, "");
+
+        String userInfo = RedisUtil.get(RedisKeyConstant.USER_BASE + userId);
+        JSONObject userObject = JSONUtil.parseObj(userInfo);
+        Object lobbyUserObj = userObject.get("lobbyUser");
+        ZjUserLobbyPo lobbyUser = JSONUtil.toBean((JSONObject) lobbyUserObj, ZjUserLobbyPo.class);
+        String memberList = RedisUtil.get(RedisKeyConstant.CLUB_MEMBER + lobbyUser.getUserClub());
+        List<ZjClubMemberPo> clubMember = JSONUtil.parseObj(memberList).getJSONArray("clubMember").toList(ZjClubMemberPo.class);
+        //提取status属性为"0"的元素,并组成新的集合
+        List<ZjClubMemberPo> filteredClubMember = clubMember.stream()
+                .filter(member -> "0".equals(member.getMemberStatus()))
+                .collect(Collectors.toList());
+        Map<String,Object> map=new HashMap<>();
+        map.put("applyList",filteredClubMember);
+        response.setData(map);
+    }
+}

+ 6 - 1
incubator-game/src/main/java/com/incubator/game/handler/club/GetClubListHandler.java

@@ -18,6 +18,8 @@ import com.incubator.message.proto.CommonProto;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * Author:  xhb
@@ -46,8 +48,11 @@ public class GetClubListHandler extends NetHandler {
         JSONArray clubArray = jsonObject.getJSONArray("clubList");
         // 将JSONArray转换为List<ClubDto>
         List<ZjClubPo> clubList = clubArray.toList(ZjClubPo.class);
+        List<ZjClubPo> collect = clubList.stream()
+                .filter(club -> club.getClubStatus().equals("1"))
+                .collect(Collectors.toList());
         Map<String, Object> map = new HashMap<>();
-        map.put("clubList", clubList);
+        map.put("clubList", collect);
         response.setData(map);
     }
 }

+ 2 - 1
incubator-game/src/main/java/com/incubator/game/handler/club/GetMyClub.java

@@ -12,6 +12,7 @@ import com.incubator.core.net.ws.WSRequest;
 import com.incubator.core.net.ws.WSResponse;
 import com.incubator.game.constant.RedisKeyConstant;
 import com.incubator.game.data.jedis.RedisUtil;
+import com.incubator.game.data.po.ZjClubMemberPo;
 import com.incubator.game.data.po.ZjClubPo;
 import com.incubator.game.data.po.ZjUserLobbyPo;
 import com.incubator.message.proto.CommonProto;
@@ -56,7 +57,7 @@ public class GetMyClub extends NetHandler {
         // 从JSONObject中获取包含俱乐部列表的数组
         JSONArray clubArray = clubObject.getJSONArray("clubMember");
         // 将JSONArray转换为List<ClubDto>
-        List<ZjClubPo> clubMemberList = clubArray.toList(ZjClubPo.class);
+        List<ZjClubMemberPo> clubMemberList = clubArray.toList(ZjClubMemberPo.class);
         Map<String, Object> map = new HashMap<>();
         map.put("clubMemberList", clubMemberList);
         response.setData(map);

+ 48 - 0
incubator-game/src/main/java/com/incubator/game/handler/club/GetMyClubList.java

@@ -0,0 +1,48 @@
+package com.incubator.game.handler.club;
+
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.incubator.common.MessageHandler;
+import com.incubator.common.net.Connection;
+import com.incubator.core.net.ws.NetHandler;
+import com.incubator.core.net.ws.WSRequest;
+import com.incubator.core.net.ws.WSResponse;
+import com.incubator.game.constant.RedisKeyConstant;
+import com.incubator.game.data.jedis.RedisUtil;
+import com.incubator.game.data.po.ZjClubPo;
+import com.incubator.message.proto.CommonProto;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+ * Author:  xhb
+ * Date:  2024-12-10 14:14
+ * 获取我的俱乐部列表消息
+ */
+@MessageHandler(id = CommonProto.Cmd.GetMyClubListReq_VALUE)
+public class GetMyClubList extends NetHandler {
+
+    @Override
+    public void onDate(Connection session, WSRequest request, WSResponse response) {
+        response.setCmd(CommonProto.Cmd.GetMyClubListRes_VALUE);
+
+        String userId = request.getDataValue("userId", String.class, "");
+        String userInfo = RedisUtil.get(RedisKeyConstant.USER_BASE + userId);
+        JSONObject jsonObject = JSONUtil.parseObj(userInfo);
+        JSONArray clubListArray = JSONUtil.parseObj(jsonObject).getJSONArray("clubList");
+        List<ZjClubPo> clubList = clubListArray.toList(ZjClubPo.class);
+
+        List<ZjClubPo> collect = clubList.stream()
+                .filter(club -> club.getClubStatus().equals("1"))
+                .collect(Collectors.toList());
+
+        Map<String,Object> hashMap = new HashMap<>();
+        hashMap.put("clubList", collect);
+        response.setData(hashMap);
+    }
+}

+ 17 - 11
incubator-game/src/main/java/com/incubator/game/handler/club/QuitClub.java

@@ -10,13 +10,16 @@ import com.incubator.core.net.ws.WSRequest;
 import com.incubator.core.net.ws.WSResponse;
 import com.incubator.game.constant.RedisKeyConstant;
 import com.incubator.game.data.jedis.RedisUtil;
+import com.incubator.game.data.po.ZjClubMemberPo;
 import com.incubator.game.data.po.ZjClubPo;
 import com.incubator.game.data.po.ZjUserLobbyPo;
 import com.incubator.message.proto.CommonProto;
 
 import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 import java.util.Random;
+import java.util.stream.Collectors;
 
 /**
  * Author:  xhb
@@ -38,6 +41,7 @@ public class QuitClub extends NetHandler {
 
             // 更新用户的主俱乐部信息
             updateUserMainClub(userId, clubId);
+            response.setMessage("退出成功!");
         } catch (Exception e) {
             // 异常处理
             logger.error("系统异常 " + userId, e);
@@ -48,9 +52,9 @@ public class QuitClub extends NetHandler {
     private void updateClubMemberStatus(String clubId, String userId) {
         String zjClubMember = RedisUtil.get(RedisKeyConstant.CLUB_MEMBER + clubId);
         JSONArray clubArray = JSONUtil.parseObj(zjClubMember).getJSONArray("clubMember");
-        List<ZjClubPo> clubMemberList = clubArray.toList(ZjClubPo.class);
+        List<ZjClubMemberPo> clubMemberList = clubArray.toList(ZjClubMemberPo.class);
 
-        for (ZjClubPo clubPo : clubMemberList) {
+        for (ZjClubMemberPo clubPo : clubMemberList) {
             if (clubPo.getUserId().equals(userId)) {
                 clubPo.setMemberStatus("3");
                 clubPo.setQuitTime(new Date());
@@ -70,22 +74,24 @@ public class QuitClub extends NetHandler {
 
         String userClub = lobbyUser.getUserClub();
         if (userClub != null && userClub.equals(clubId)) {
-            String clubListStr = RedisUtil.get(RedisKeyConstant.CLUB_BASE);
-            JSONArray clubListArray = JSONUtil.parseObj(clubListStr).getJSONArray("clubList");
+            JSONArray clubListArray = JSONUtil.parseObj(jsonObject).getJSONArray("clubList");
             List<ZjClubPo> clubList = clubListArray.toList(ZjClubPo.class);
 
-            if (clubList.isEmpty()) {
+            List<ZjClubPo> collect = clubList.stream()
+                    .filter(club -> !Objects.equals(club.getClubId(), clubId))
+                    .collect(Collectors.toList());
+
+            if (collect.isEmpty()) {
                 lobbyUser.setUserClub(null);
             } else {
                 Random random = new Random();
-                int randomIndex = random.nextInt(clubList.size());
-                String newClubId = clubList.get(randomIndex).getClubId();
+                int randomIndex = random.nextInt(collect.size());
+                String newClubId = collect.get(randomIndex).getClubId();
                 lobbyUser.setUserClub(newClubId);
             }
+            jsonObject.put("clubList", collect);
+            jsonObject.put("lobbyUser", lobbyUser);
+            RedisUtil.set(RedisKeyConstant.USER_BASE + userId, jsonObject.toString());
         }
-
-        JSONObject object = new JSONObject();
-        object.put("lobbyUser", lobbyUser);
-        RedisUtil.set(RedisKeyConstant.USER_BASE + userId, object.toString());
     }
 }

+ 1 - 1
incubator-game/src/main/java/com/incubator/game/handler/login/LoginGameHandler.java

@@ -90,7 +90,7 @@ public class LoginGameHandler extends NetHandler {
 		Player player = PlayerUtil.createPlayer(playerInfoPO);
 
 		// 绑定session
-		player.bind(session, 0L, player.getId(), token);
+		player.bind(session, lobbyUser.getUserId(), player.getId(), token);
 		logger.info("玩家进入游戏 playerId={}", player.getId());
 
 		// 登录数据

+ 38 - 0
incubator-game/src/main/java/com/incubator/game/handler/user/UpdateAvatarUrlHandler.java

@@ -0,0 +1,38 @@
+package com.incubator.game.handler.user;
+
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.incubator.common.MessageHandler;
+import com.incubator.common.net.Connection;
+import com.incubator.core.net.ws.NetHandler;
+import com.incubator.core.net.ws.WSRequest;
+import com.incubator.core.net.ws.WSResponse;
+import com.incubator.game.constant.RedisKeyConstant;
+import com.incubator.game.data.jedis.RedisUtil;
+import com.incubator.game.data.po.ZjUserLobbyPo;
+import com.incubator.message.proto.CommonProto;
+
+/**
+ * Author:  xhb
+ * Date:  2024-12-10 14:53
+ * 修改头像处理类
+ */
+@MessageHandler(id = CommonProto.Cmd.UpdateAvatarUrlReq_VALUE)
+public class UpdateAvatarUrlHandler extends NetHandler {
+
+    @Override
+    public void onDate(Connection session, WSRequest request, WSResponse response) {
+        response.setCmd(CommonProto.Cmd.UpdateAvatarUrlRes_VALUE);
+        String userId = request.getDataValue("userId", String.class, "");
+        String avatarUrl = request.getDataValue("avatarUrl", String.class, "");
+
+        String userInfo = RedisUtil.get(RedisKeyConstant.USER_BASE + userId);
+        JSONObject userObject = JSONUtil.parseObj(userInfo);
+        Object lobbyUserObj = userObject.get("lobbyUser");
+        ZjUserLobbyPo lobbyUser = JSONUtil.toBean((JSONObject) lobbyUserObj, ZjUserLobbyPo.class);
+        lobbyUser.setAvatarUrl(avatarUrl);
+        userObject.put("lobbyUser", lobbyUser);
+        RedisUtil.set(RedisKeyConstant.USER_BASE + userId, userObject.toString());
+        response.setMessage("修改成功!");
+    }
+}

+ 38 - 0
incubator-game/src/main/java/com/incubator/game/handler/user/UpdateCharacterUrlHandler.java

@@ -0,0 +1,38 @@
+package com.incubator.game.handler.user;
+
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.incubator.common.MessageHandler;
+import com.incubator.common.net.Connection;
+import com.incubator.core.net.ws.NetHandler;
+import com.incubator.core.net.ws.WSRequest;
+import com.incubator.core.net.ws.WSResponse;
+import com.incubator.game.constant.RedisKeyConstant;
+import com.incubator.game.data.jedis.RedisUtil;
+import com.incubator.game.data.po.ZjUserLobbyPo;
+import com.incubator.message.proto.CommonProto;
+
+/**
+ * Author:  xhb
+ * Date:  2024-12-10 14:53
+ * 修改人物形象
+ */
+@MessageHandler(id = CommonProto.Cmd.UpdateCharacterUrlReq_VALUE)
+public class UpdateCharacterUrlHandler extends NetHandler {
+
+    @Override
+    public void onDate(Connection session, WSRequest request, WSResponse response) {
+        response.setCmd(CommonProto.Cmd.UpdateCharacterUrlRes_VALUE);
+        String userId = request.getDataValue("userId", String.class, "");
+        String characterUrl = request.getDataValue("characterUrl", String.class, "");
+
+        String userInfo = RedisUtil.get(RedisKeyConstant.USER_BASE + userId);
+        JSONObject userObject = JSONUtil.parseObj(userInfo);
+        Object lobbyUserObj = userObject.get("lobbyUser");
+        ZjUserLobbyPo lobbyUser = JSONUtil.toBean((JSONObject) lobbyUserObj, ZjUserLobbyPo.class);
+        lobbyUser.setCharacterUrl(characterUrl);
+        userObject.put("lobbyUser", lobbyUser);
+        RedisUtil.set(RedisKeyConstant.USER_BASE + userId, userObject.toString());
+        response.setMessage("修改成功!");
+    }
+}

+ 39 - 0
incubator-game/src/main/java/com/incubator/game/handler/user/UpdateNickNameHandler.java

@@ -0,0 +1,39 @@
+package com.incubator.game.handler.user;
+
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.incubator.common.MessageHandler;
+import com.incubator.common.net.Connection;
+import com.incubator.core.net.ws.NetHandler;
+import com.incubator.core.net.ws.WSRequest;
+import com.incubator.core.net.ws.WSResponse;
+import com.incubator.game.constant.RedisKeyConstant;
+import com.incubator.game.data.jedis.RedisUtil;
+import com.incubator.game.data.po.ZjUserLobbyPo;
+import com.incubator.message.proto.CommonProto;
+
+/**
+ * Author:  xhb
+ * Date:  2024-12-10 14:53
+ * 修改昵称处理
+ */
+@MessageHandler(id = CommonProto.Cmd.UpdateNickNameReq_VALUE)
+public class UpdateNickNameHandler extends NetHandler {
+
+    @Override
+    public void onDate(Connection session, WSRequest request, WSResponse response) {
+        response.setCmd(CommonProto.Cmd.UpdateNickNameRes_VALUE);
+        String userId = request.getDataValue("userId", String.class, "");
+        String nickName = request.getDataValue("nickName", String.class, "");
+
+        String userInfo = RedisUtil.get(RedisKeyConstant.USER_BASE + userId);
+        JSONObject userObject = JSONUtil.parseObj(userInfo);
+        Object lobbyUserObj = userObject.get("lobbyUser");
+        ZjUserLobbyPo lobbyUser = JSONUtil.toBean((JSONObject) lobbyUserObj, ZjUserLobbyPo.class);
+        lobbyUser.setNickName(nickName);
+        userObject.put("lobbyUser", lobbyUser);
+        RedisUtil.set(RedisKeyConstant.USER_BASE + userId, userObject.toString());
+        response.setMessage("修改成功!");
+    }
+
+}

+ 38 - 0
incubator-game/src/main/java/com/incubator/game/handler/user/UpdatePhoneHandler.java

@@ -0,0 +1,38 @@
+package com.incubator.game.handler.user;
+
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.incubator.common.MessageHandler;
+import com.incubator.common.net.Connection;
+import com.incubator.core.net.ws.NetHandler;
+import com.incubator.core.net.ws.WSRequest;
+import com.incubator.core.net.ws.WSResponse;
+import com.incubator.game.constant.RedisKeyConstant;
+import com.incubator.game.data.jedis.RedisUtil;
+import com.incubator.game.data.po.ZjUserLobbyPo;
+import com.incubator.message.proto.CommonProto;
+
+/**
+ * Author:  xhb
+ * Date:  2024-12-10 14:54
+ * 绑定手机号
+ */
+@MessageHandler(id = CommonProto.Cmd.UpdatePhoneReq_VALUE)
+public class UpdatePhoneHandler extends NetHandler {
+
+    @Override
+    public void onDate(Connection session, WSRequest request, WSResponse response) {
+        response.setCmd(CommonProto.Cmd.UpdatePhoneRes_VALUE);
+        String userId = request.getDataValue("userId", String.class, "");
+        String phone = request.getDataValue("phone", String.class, "");
+
+        String userInfo = RedisUtil.get(RedisKeyConstant.USER_BASE + userId);
+        JSONObject userObject = JSONUtil.parseObj(userInfo);
+        Object lobbyUserObj = userObject.get("lobbyUser");
+        ZjUserLobbyPo lobbyUser = JSONUtil.toBean((JSONObject) lobbyUserObj, ZjUserLobbyPo.class);
+        lobbyUser.setPhone(phone);
+        userObject.put("lobbyUser", lobbyUser);
+        RedisUtil.set(RedisKeyConstant.USER_BASE + userId, userObject.toString());
+        response.setMessage("修改成功!");
+    }
+}

+ 15 - 0
incubator-message/src/main/proto/CommonProto.proto

@@ -67,6 +67,19 @@ enum Cmd {
     //个人中心
     ProfileInfoReq = 200301;    //个人中心信息请求
     ProfileInfoRes = 200302;    //个人中心信息响应
+    UpdateAvatarUrlReq = 200303; //修改个人头像请求
+    UpdateAvatarUrlRes = 200304; //修改个人头像响应
+    UpdateNickNameReq = 200305; //修改个人昵称请求
+    UpdateNickNameRes = 200306; //修改个人昵称响应
+    UpdateCharacterUrlReq = 200307; //修改个人人物请求
+    UpdateCharacterUrlRes = 200308; //修改个人人物响应
+    UpdatePhoneReq = 200309; //修改个人手机请求
+    UpdatePhoneRes = 200310; //修改个人手机响应
+    SaveAddressReq = 200311; //新增收货地址请求
+    SaveAddressRes = 200312; //新增收货地址响应
+    GetAddressListReq = 200313; //获取地址列表请求
+    GetAddressListRes = 200314; //获取地址列表响应
+
 
     //排行榜
     RankInfoReq = 200401;       //排行榜信息请求
@@ -97,6 +110,8 @@ enum Cmd {
     DeleteMemberRes = 200618;    //踢出俱乐部成员响应
     DissolveClubReq = 200619;    //解散俱乐部的请求
     DissolveClubRes = 200620;    //解散俱乐部的响应
+    GetMyClubListReq = 200621;    //获取我的俱乐部列表请求
+    GetMyClubListRes = 200622;    //获取我的俱乐部列表响应
 
     //官方比赛
     MatchSignUpReq = 200701;     // 赛事报名请求