浏览代码

新增修改玩家个人信息,新增修改玩家收货地址,修改俱乐部方法,

xhb 3 月之前
父节点
当前提交
04ead061b1

+ 1 - 1
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
      */

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

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

@@ -169,6 +169,19 @@ 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;
     }

+ 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("操作成功!");
+    }
+}

+ 26 - 17
incubator-game/src/main/java/com/incubator/game/handler/club/CreateClub.java

@@ -18,6 +18,8 @@ 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
@@ -32,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);
@@ -45,28 +50,33 @@ public class CreateClub extends NetHandler {
                 return;
             }
 
-            ZjClubPo newClub = createNewClub(clubInfo, userId);
+            ZjClubPo newClub = createNewClub(club, userId);
             addClubToRedis(jsonObject, clubArray, newClub);//添加俱乐部到redis
 
-            addClubMemberToRedis(userId, newClub);//添加俱乐部成员到redis
+            addClubMemberToRedis(userObject, newClub);//添加俱乐部成员到redis
 
             updateUserLobbyClub(userId, newClub);//设置主俱乐部
-        } catch (Exception e) {
-            // 处理异常,例如记录日志或返回错误响应
-            response.setCode(CommonProto.Code.SYSTEM_ERR_VALUE);
-            response.setMessage("创建俱乐部时发生错误");
-            e.printStackTrace();
+        }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(String userId, ZjClubPo newClub) {
-        String userInfo = RedisUtil.get(RedisKeyConstant.USER_BASE + userId);
-        JSONObject userObject = JSONUtil.parseObj(userInfo);
+    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(userId);
+        zjClubMemberPo.setUserId(lobbyUser.getUserId());
         zjClubMemberPo.setClubId(newClub.getClubId());
         zjClubMemberPo.setIsMain("Y");
         zjClubMemberPo.setIsMaster("Y");
@@ -89,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);

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

+ 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;     // 赛事报名请求