Browse Source

Merge remote-tracking branch 'wyc/master'

# Conflicts:
#	src/main/java/com/zhentao/user/controller/UserController.java
#	src/main/java/com/zhentao/user/service/impl/UserLoginServiceImpl.java
#	src/main/resources/mapper/GroupsMapper.xml
#	src/main/resources/mapper/UserShouyeMapper.xml
zhentao 2 weeks ago
parent
commit
ecfaab8407
23 changed files with 960 additions and 11 deletions
  1. 54 0
      src/main/java/com/zhentao/groups/MongoDB/controller/GroupMessageController.java
  2. 36 0
      src/main/java/com/zhentao/groups/MongoDB/pojo/GroupMessage.java
  3. 23 0
      src/main/java/com/zhentao/groups/MongoDB/pojo/Message.java
  4. 39 0
      src/main/java/com/zhentao/groups/controller/groupsController.java
  5. 22 0
      src/main/java/com/zhentao/groups/dto/AddGroupMembers.java
  6. 39 0
      src/main/java/com/zhentao/groups/dto/AddGroupsDto.java
  7. 16 0
      src/main/java/com/zhentao/groups/dto/DelGroupMembers.java
  8. 20 0
      src/main/java/com/zhentao/groups/mapper/GroupMembersMapper.java
  9. 20 0
      src/main/java/com/zhentao/groups/mapper/GroupsMapper.java
  10. 116 0
      src/main/java/com/zhentao/groups/pojo/GroupMembers.java
  11. 137 0
      src/main/java/com/zhentao/groups/pojo/Groupss.java
  12. 13 0
      src/main/java/com/zhentao/groups/service/GroupMembersService.java
  13. 27 0
      src/main/java/com/zhentao/groups/service/GroupsService.java
  14. 22 0
      src/main/java/com/zhentao/groups/service/impl/GroupMembersServiceImpl.java
  15. 179 0
      src/main/java/com/zhentao/groups/service/impl/GroupsServiceImpl.java
  16. 7 4
      src/main/java/com/zhentao/intercepoter/Userinterceptor.java
  17. 106 0
      src/main/java/com/zhentao/user/domain/UserShouye.java
  18. 2 0
      src/main/java/com/zhentao/user/mapper/UserLoginMapper.java
  19. 20 0
      src/main/java/com/zhentao/user/mapper/UserShouyeMapper.java
  20. 13 0
      src/main/java/com/zhentao/user/service/UserShouyeService.java
  21. 5 7
      src/main/java/com/zhentao/user/service/impl/UserLoginServiceImpl.java
  22. 22 0
      src/main/java/com/zhentao/user/service/impl/UserShouyeServiceImpl.java
  23. 22 0
      src/main/resources/mapper/GroupMembersMapper.xml

+ 54 - 0
src/main/java/com/zhentao/groups/MongoDB/controller/GroupMessageController.java

@@ -0,0 +1,54 @@
+package com.zhentao.groups.MongoDB.controller;
+
+import com.zhentao.config.NullLogin;
+import com.zhentao.groups.MongoDB.pojo.GroupMessage;
+import com.zhentao.groups.MongoDB.pojo.Message;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.core.StringRedisTemplate;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Date;
+
+@RequestMapping("/groupMessage")
+@RestController
+public class GroupMessageController {
+
+    @Autowired
+    RedisTemplate<String,String> redisTemplate;
+
+    @Autowired
+    private MongoTemplate mongoTemplate;
+
+
+    @PostMapping("/cunchugroupMessage")
+    @NullLogin
+    public String groupMessage(@RequestBody Message message)
+    {
+        GroupMessage groupMessage = new GroupMessage();
+        groupMessage.setGroup_id(message.getGroup_id());
+        groupMessage.setSender_id(message.getSender_id());
+        groupMessage.setContent(message.getContent());
+        groupMessage.setContent_type(message.getContent_type());
+        groupMessage.setCreated_at(new Date());
+        mongoTemplate.save(groupMessage);
+
+
+
+
+
+        return "success";
+    }
+
+
+
+
+
+
+
+
+}

+ 36 - 0
src/main/java/com/zhentao/groups/MongoDB/pojo/GroupMessage.java

@@ -0,0 +1,36 @@
+package com.zhentao.groups.MongoDB.pojo;
+
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.data.annotation.Id;
+import org.springframework.data.mongodb.core.index.Indexed;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+import java.util.Date;
+
+
+@Slf4j
+@Document(collection = "group_messages")
+@Data
+public class GroupMessage {
+
+    @Id
+    private String id;
+
+////    消息唯一id
+//    private String message_id;
+
+//  群id
+    private Long group_id;
+//  发送者ID
+    private Long sender_id;
+//  消息内容
+    private String content;
+//  消息类型
+    private String content_type;
+//  发送时间
+    private Date created_at;
+
+
+
+}

+ 23 - 0
src/main/java/com/zhentao/groups/MongoDB/pojo/Message.java

@@ -0,0 +1,23 @@
+package com.zhentao.groups.MongoDB.pojo;
+
+import lombok.Data;
+
+import java.util.Date;
+@Data
+public class Message {
+
+//    //    消息唯一id
+//    private String message_id;
+
+    //  群id
+    private Long group_id;
+    //  发送者ID
+    private Long sender_id;
+    //  消息内容
+    private String content;
+    //  消息类型
+    private String content_type;
+    //  发送时间
+    private Date created_at;
+
+}

+ 39 - 0
src/main/java/com/zhentao/groups/controller/groupsController.java

@@ -0,0 +1,39 @@
+package com.zhentao.groups.controller;
+
+import com.zhentao.groups.dto.AddGroupMembers;
+import com.zhentao.groups.dto.AddGroupsDto;
+import com.zhentao.groups.service.GroupsService;
+import com.zhentao.tool.TokenUtils;
+import com.zhentao.vo.Result;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@RequestMapping("/group")
+@RestController
+public class groupsController {
+
+
+    @Autowired
+    private GroupsService groupsService;
+
+
+//  创建群聊
+    @PostMapping("/addGroup")
+    public Result addGroup(@RequestBody AddGroupsDto addGroupsDto, @RequestHeader("token") String token){
+        Long userIdFromToken = Long.valueOf(TokenUtils.getUserIdFromToken(token));
+        addGroupsDto.setCreatorId(userIdFromToken);
+        return groupsService.addGroup(addGroupsDto);
+    }
+
+
+//    添加好友
+    @PostMapping("/AddGroupMembers")
+    public Result AddGroupMembers(@RequestBody AddGroupMembers addGroupMembers){
+        return groupsService.AddGroupMembers(addGroupMembers);
+    }
+
+
+
+
+
+}

+ 22 - 0
src/main/java/com/zhentao/groups/dto/AddGroupMembers.java

@@ -0,0 +1,22 @@
+package com.zhentao.groups.dto;
+
+import com.zhentao.groups.pojo.GroupMembers;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class AddGroupMembers  implements Serializable {
+
+//  群id
+    private Long groupId;
+
+    private List<GroupMembers> data;
+
+
+}

+ 39 - 0
src/main/java/com/zhentao/groups/dto/AddGroupsDto.java

@@ -0,0 +1,39 @@
+package com.zhentao.groups.dto;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class AddGroupsDto {
+    /**
+     * 群名称
+     */
+    private String name;
+
+    /**
+     * 创建者ID
+     */
+    private Long creatorId;
+
+    /**
+     * 群头像
+     */
+    private String avatar;
+
+    /**
+     * 群公告
+     */
+    private String announcement;
+
+    /**
+     * 群描述
+     */
+    private String description;
+
+}

+ 16 - 0
src/main/java/com/zhentao/groups/dto/DelGroupMembers.java

@@ -0,0 +1,16 @@
+package com.zhentao.groups.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class DelGroupMembers {
+
+    Long groupssId;
+
+    Long user_id;
+
+}

+ 20 - 0
src/main/java/com/zhentao/groups/mapper/GroupMembersMapper.java

@@ -0,0 +1,20 @@
+package com.zhentao.groups.mapper;
+
+import com.zhentao.groups.pojo.GroupMembers;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @author lzy
+* @description 针对表【group_members(群组成员表)】的数据库操作Mapper
+* @createDate 2025-06-04 16:00:48
+* @Entity com.zhentao.groups.pojo.GroupMembers
+*/
+@Mapper
+public interface GroupMembersMapper extends BaseMapper<GroupMembers> {
+
+}
+
+
+
+

+ 20 - 0
src/main/java/com/zhentao/groups/mapper/GroupsMapper.java

@@ -0,0 +1,20 @@
+package com.zhentao.groups.mapper;
+
+import com.zhentao.groups.pojo.Groupss;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @author lzy
+* @description 针对表【groups(群组表)】的数据库操作Mapper
+* @createDate 2025-06-04 16:00:48
+* @Entity com.zhentao.groups.pojo.Groups
+*/
+@Mapper
+public interface GroupsMapper extends BaseMapper<Groupss> {
+
+}
+
+
+
+

+ 116 - 0
src/main/java/com/zhentao/groups/pojo/GroupMembers.java

@@ -0,0 +1,116 @@
+package com.zhentao.groups.pojo;
+
+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;
+
+/**
+ * 群组成员表
+ * @TableName group_members
+ */
+@TableName(value ="group_members")
+@Data
+public class GroupMembers implements Serializable {
+    /**
+     * 
+     */
+    @JsonFormat(shape = JsonFormat.Shape.STRING)
+    @TableId
+    private Long id;
+
+    /**
+     * 群ID
+     */
+    @JsonFormat(shape = JsonFormat.Shape.STRING)
+    private Long groupId;
+
+    /**
+     * 用户ID
+     */
+    @JsonFormat(shape = JsonFormat.Shape.STRING)
+    private Long userId;
+
+    /**
+     * 群昵称
+     */
+    private String nickname;
+
+    /**
+     * 角色(0-成员,1-管理员,2-群主)
+     */
+    private Integer role;
+
+    /**
+     * 加入时间
+     */
+    private Date joinTime;
+
+    /**
+     * 最后确认的消息ID
+     */
+    @JsonFormat(shape = JsonFormat.Shape.STRING)
+    private Long lastAckMsgId;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+
+    @Override
+    public boolean equals(Object that) {
+        if (this == that) {
+            return true;
+        }
+        if (that == null) {
+            return false;
+        }
+        if (getClass() != that.getClass()) {
+            return false;
+        }
+        GroupMembers other = (GroupMembers) that;
+        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
+            && (this.getGroupId() == null ? other.getGroupId() == null : this.getGroupId().equals(other.getGroupId()))
+            && (this.getUserId() == null ? other.getUserId() == null : this.getUserId().equals(other.getUserId()))
+            && (this.getNickname() == null ? other.getNickname() == null : this.getNickname().equals(other.getNickname()))
+            && (this.getRole() == null ? other.getRole() == null : this.getRole().equals(other.getRole()))
+            && (this.getJoinTime() == null ? other.getJoinTime() == null : this.getJoinTime().equals(other.getJoinTime()))
+            && (this.getLastAckMsgId() == null ? other.getLastAckMsgId() == null : this.getLastAckMsgId().equals(other.getLastAckMsgId()));
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
+        result = prime * result + ((getGroupId() == null) ? 0 : getGroupId().hashCode());
+        result = prime * result + ((getUserId() == null) ? 0 : getUserId().hashCode());
+        result = prime * result + ((getNickname() == null) ? 0 : getNickname().hashCode());
+        result = prime * result + ((getRole() == null) ? 0 : getRole().hashCode());
+        result = prime * result + ((getJoinTime() == null) ? 0 : getJoinTime().hashCode());
+        result = prime * result + ((getLastAckMsgId() == null) ? 0 : getLastAckMsgId().hashCode());
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", id=").append(id);
+        sb.append(", groupId=").append(groupId);
+        sb.append(", userId=").append(userId);
+        sb.append(", nickname=").append(nickname);
+        sb.append(", role=").append(role);
+        sb.append(", joinTime=").append(joinTime);
+        sb.append(", lastAckMsgId=").append(lastAckMsgId);
+        sb.append(", serialVersionUID=").append(serialVersionUID);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 137 - 0
src/main/java/com/zhentao/groups/pojo/Groupss.java

@@ -0,0 +1,137 @@
+package com.zhentao.groups.pojo;
+
+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;
+
+/**
+ * 群组表
+ * @TableName groups
+ */
+@TableName(value ="groupss")
+@Data
+public class Groupss implements Serializable {
+    /**
+     * id
+
+     */
+    @JsonFormat(shape = JsonFormat.Shape.STRING)
+    @TableId
+    private Long groupId;
+
+    /**
+     * 群名称
+     */
+    private String name;
+
+    /**
+     * 创建者ID
+     */
+    @JsonFormat(shape = JsonFormat.Shape.STRING)
+    private Long creatorId;
+
+    /**
+     * 群头像
+     */
+    private String avatar;
+
+    /**
+     * 群公告
+     */
+    private String announcement;
+
+    /**
+     * 群描述
+     */
+    private String description;
+
+    /**
+     * 最大成员数
+     */
+    private Integer maxMembers;
+
+    /**
+     * 状态(0-解散,1-正常)
+     */
+    private Integer status;
+
+    /**
+     * 创建时间
+     */
+    private Date createdAt;
+
+    /**
+     * 修改时间
+     */
+    private Date updatedAt;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+
+    @Override
+    public boolean equals(Object that) {
+        if (this == that) {
+            return true;
+        }
+        if (that == null) {
+            return false;
+        }
+        if (getClass() != that.getClass()) {
+            return false;
+        }
+        Groupss other = (Groupss) that;
+        return (this.getGroupId() == null ? other.getGroupId() == null : this.getGroupId().equals(other.getGroupId()))
+            && (this.getName() == null ? other.getName() == null : this.getName().equals(other.getName()))
+            && (this.getCreatorId() == null ? other.getCreatorId() == null : this.getCreatorId().equals(other.getCreatorId()))
+            && (this.getAvatar() == null ? other.getAvatar() == null : this.getAvatar().equals(other.getAvatar()))
+            && (this.getAnnouncement() == null ? other.getAnnouncement() == null : this.getAnnouncement().equals(other.getAnnouncement()))
+            && (this.getDescription() == null ? other.getDescription() == null : this.getDescription().equals(other.getDescription()))
+            && (this.getMaxMembers() == null ? other.getMaxMembers() == null : this.getMaxMembers().equals(other.getMaxMembers()))
+            && (this.getStatus() == null ? other.getStatus() == null : this.getStatus().equals(other.getStatus()))
+            && (this.getCreatedAt() == null ? other.getCreatedAt() == null : this.getCreatedAt().equals(other.getCreatedAt()))
+            && (this.getUpdatedAt() == null ? other.getUpdatedAt() == null : this.getUpdatedAt().equals(other.getUpdatedAt()));
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((getGroupId() == null) ? 0 : getGroupId().hashCode());
+        result = prime * result + ((getName() == null) ? 0 : getName().hashCode());
+        result = prime * result + ((getCreatorId() == null) ? 0 : getCreatorId().hashCode());
+        result = prime * result + ((getAvatar() == null) ? 0 : getAvatar().hashCode());
+        result = prime * result + ((getAnnouncement() == null) ? 0 : getAnnouncement().hashCode());
+        result = prime * result + ((getDescription() == null) ? 0 : getDescription().hashCode());
+        result = prime * result + ((getMaxMembers() == null) ? 0 : getMaxMembers().hashCode());
+        result = prime * result + ((getStatus() == null) ? 0 : getStatus().hashCode());
+        result = prime * result + ((getCreatedAt() == null) ? 0 : getCreatedAt().hashCode());
+        result = prime * result + ((getUpdatedAt() == null) ? 0 : getUpdatedAt().hashCode());
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", groupId=").append(groupId);
+        sb.append(", name=").append(name);
+        sb.append(", creatorId=").append(creatorId);
+        sb.append(", avatar=").append(avatar);
+        sb.append(", announcement=").append(announcement);
+        sb.append(", description=").append(description);
+        sb.append(", maxMembers=").append(maxMembers);
+        sb.append(", status=").append(status);
+        sb.append(", createdAt=").append(createdAt);
+        sb.append(", updatedAt=").append(updatedAt);
+        sb.append(", serialVersionUID=").append(serialVersionUID);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 13 - 0
src/main/java/com/zhentao/groups/service/GroupMembersService.java

@@ -0,0 +1,13 @@
+package com.zhentao.groups.service;
+
+import com.zhentao.groups.pojo.GroupMembers;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+* @author lzy
+* @description 针对表【group_members(群组成员表)】的数据库操作Service
+* @createDate 2025-06-04 16:00:48
+*/
+public interface GroupMembersService extends IService<GroupMembers> {
+
+}

+ 27 - 0
src/main/java/com/zhentao/groups/service/GroupsService.java

@@ -0,0 +1,27 @@
+package com.zhentao.groups.service;
+
+import com.zhentao.groups.dto.AddGroupMembers;
+import com.zhentao.groups.dto.AddGroupsDto;
+import com.zhentao.groups.dto.DelGroupMembers;
+import com.zhentao.groups.pojo.Groupss;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhentao.vo.Result;
+
+/**
+* @author lzy
+* @description 针对表【groups(群组表)】的数据库操作Service
+* @createDate 2025-06-04 16:00:48
+*/
+public interface GroupsService extends IService<Groupss> {
+
+//    创建群聊
+    Result addGroup(AddGroupsDto addGroupsDto);
+
+
+//        添加人数
+    Result AddGroupMembers(AddGroupMembers addGroupMembers);
+
+//    删除人数
+    Result DelGroupMembers(DelGroupMembers delGroupMembers);
+
+}

+ 22 - 0
src/main/java/com/zhentao/groups/service/impl/GroupMembersServiceImpl.java

@@ -0,0 +1,22 @@
+package com.zhentao.groups.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zhentao.groups.pojo.GroupMembers;
+import com.zhentao.groups.service.GroupMembersService;
+import com.zhentao.groups.mapper.GroupMembersMapper;
+import org.springframework.stereotype.Service;
+
+/**
+* @author lzy
+* @description 针对表【group_members(群组成员表)】的数据库操作Service实现
+* @createDate 2025-06-04 16:00:48
+*/
+@Service
+public class GroupMembersServiceImpl extends ServiceImpl<GroupMembersMapper, GroupMembers>
+    implements GroupMembersService{
+
+}
+
+
+
+

+ 179 - 0
src/main/java/com/zhentao/groups/service/impl/GroupsServiceImpl.java

@@ -0,0 +1,179 @@
+package com.zhentao.groups.service.impl;
+
+import cn.hutool.core.util.IdUtil;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zhentao.groups.dto.AddGroupMembers;
+import com.zhentao.groups.dto.AddGroupsDto;
+import com.zhentao.groups.dto.DelGroupMembers;
+import com.zhentao.groups.mapper.GroupMembersMapper;
+import com.zhentao.groups.pojo.GroupMembers;
+import com.zhentao.groups.pojo.Groupss;
+import com.zhentao.groups.service.GroupMembersService;
+import com.zhentao.groups.service.GroupsService;
+import com.zhentao.groups.mapper.GroupsMapper;
+import com.zhentao.user.domain.UserShouye;
+import com.zhentao.user.mapper.UserShouyeMapper;
+import com.zhentao.user.service.UserShouyeService;
+import com.zhentao.vo.Result;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+* @author lzy
+* @description 针对表【groups(群组表)】的数据库操作Service实现
+* @createDate 2025-06-04 16:00:48
+*/
+@Service
+public class GroupsServiceImpl extends ServiceImpl<GroupsMapper, Groupss>
+    implements GroupsService{
+
+    @Autowired
+    private GroupMembersMapper groupMembersMapper;
+    @Autowired
+    private RedisTemplate<String,String> redisTemplate;
+
+    @Autowired
+    private UserShouyeMapper userShouyeMapper;
+
+//  创建群
+    @Override
+    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class, timeout = 30)
+    public Result addGroup(AddGroupsDto addGroupsDto) {
+        Groupss groups=new Groupss();
+        groups.setGroupId(IdUtil.getSnowflake().nextId());
+        groups.setName(addGroupsDto.getName());
+        groups.setCreatorId(addGroupsDto.getCreatorId());
+        groups.setAvatar(addGroupsDto.getAvatar());
+        groups.setAnnouncement(addGroupsDto.getAnnouncement());
+        groups.setDescription(addGroupsDto.getDescription());
+        groups.setMaxMembers(200);
+        groups.setStatus(1);
+        groups.setCreatedAt(new Date());
+        groups.setUpdatedAt(new Date());
+        int insert1 = this.baseMapper.insert(groups);
+
+        GroupMembers groupMembers=new GroupMembers();
+        groupMembers.setId(IdUtil.getSnowflake().nextId());
+        groupMembers.setGroupId(groups.getGroupId());
+        groupMembers.setUserId(groups.getCreatorId());
+        groupMembers.setNickname(groups.getName());
+        groupMembers.setRole(2);
+        groupMembers.setJoinTime(new Date());
+        int insert = groupMembersMapper.insert(groupMembers);
+
+        UserShouye userShouye=new UserShouye();
+        userShouye.setId(IdUtil.getSnowflake().nextId());
+        userShouye.setUid1(addGroupsDto.getCreatorId());
+        userShouye.setUid2(null);
+        userShouye.setGid(groups.getGroupId());
+        userShouye.setStatus(0);
+        userShouye.setSort(null);
+        int insert2 = userShouyeMapper.insert(userShouye);
+
+        if (insert1!=0 && insert!=0 && insert2!=0){
+            return Result.OK(null,"创建成功");
+        }
+        return Result.ERR(null,"创建失败");
+    }
+
+
+    @Autowired
+    private GroupMembersService groupMembersService;
+    @Autowired
+    private UserShouyeService userShouyeService;
+    @Autowired
+    private GroupsMapper groupsMapper;
+//    添加人数
+    @Override
+    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class, timeout = 30)
+    public Result AddGroupMembers(AddGroupMembers addGroupMembers) {
+
+        List<GroupMembers> data = new ArrayList<>();
+        Groupss groupss = groupsMapper.selectById(addGroupMembers.getGroupId());
+        System.err.println(groupss);
+        List<UserShouye> userShouyes =new ArrayList<>();
+
+        for (GroupMembers groupMembers:addGroupMembers.getData()){
+            GroupMembers groupMembers1=new GroupMembers();
+            groupMembers1.setId(IdUtil.getSnowflake().nextId());
+            groupMembers1.setGroupId(groupss.getGroupId());
+            groupMembers1.setUserId(groupMembers.getUserId());
+            groupMembers1.setNickname(groupss.getName());
+            groupMembers1.setRole(0);
+            groupMembers1.setJoinTime(new Date());
+            data.add(groupMembers1);
+
+            UserShouye userShouye=new UserShouye();
+            userShouye.setId(IdUtil.getSnowflake().nextId());
+            userShouye.setUid1(groupMembers.getUserId());
+            userShouye.setUid2(null);
+            userShouye.setGid(groupss.getGroupId());
+            userShouye.setStatus(0);
+            userShouye.setSort(null);
+            userShouyes.add(userShouye);
+        }
+        boolean b1 = groupMembersService.saveBatch(data);
+        boolean b = userShouyeService.saveBatch(userShouyes);
+        if (b1!=false && b!=false){
+            return Result.OK(null,"添加成功");
+        }
+
+        return Result.ERR(null,"添加失败");
+    }
+
+
+
+//     删除人数
+    @Override
+    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class, timeout = 30)
+    public Result DelGroupMembers(DelGroupMembers delGroupMembers) {
+
+
+
+
+
+        return null;
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
+
+
+
+
+

+ 7 - 4
src/main/java/com/zhentao/intercepoter/Userinterceptor.java

@@ -18,10 +18,12 @@ public class Userinterceptor implements HandlerInterceptor {
     @Override
     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
         String requestURI = request.getRequestURI();
-//        if (requestURI.startsWith("/user/login")||requestURI.startsWith("/user/register")){
-//            return true;
-//        }
+        if (requestURI.startsWith("/user/login")||requestURI.startsWith("/user/register")){
+            return true;
+        }
         String token = request.getHeader("token");
+        String userIdFromToken1 = TokenUtils.getUserIdFromToken(token);
+        redisTemplate.opsForValue().set("uid",userIdFromToken1);
         HandlerMethod handlerMethod = (HandlerMethod) handler;
         NullLogin annotation = handlerMethod.getMethod().getAnnotation(NullLogin.class);
         System.err.println("自定义注解"+annotation);
@@ -35,7 +37,8 @@ public class Userinterceptor implements HandlerInterceptor {
         String userIdFromToken = TokenUtils.getUserIdFromToken(token);
         System.err.println("解析后的ID:"+userIdFromToken);
         String s = redisTemplate.opsForValue().get(userIdFromToken);
-        if (s!=null){
+
+        if (s!=null && s.equals(token)){
             return true;
         }else {
             System.err.println("Token错误");

+ 106 - 0
src/main/java/com/zhentao/user/domain/UserShouye.java

@@ -0,0 +1,106 @@
+package com.zhentao.user.domain;
+
+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 com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+/**
+ * 用户首页表
+ * @TableName user_shouye
+ */
+@TableName(value ="user_shouye")
+@Data
+public class UserShouye implements Serializable {
+    /**
+     * 主键
+     */
+    @TableId
+    @JsonFormat(shape = JsonFormat.Shape.STRING)
+    private Long id;
+
+    /**
+     * 用户1
+     */
+    @JsonFormat(shape = JsonFormat.Shape.STRING)
+    private Long uid1;
+
+    /**
+     * 用户2
+     */
+    @JsonFormat(shape = JsonFormat.Shape.STRING)
+    private Long uid2;
+
+    /**
+     * 群id
+     */
+    @JsonFormat(shape = JsonFormat.Shape.STRING)
+    private Long gid;
+
+    /**
+     * 状态0 1
+     */
+    private Integer status;
+
+    /**
+     * 排序
+     */
+    private Integer sort;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+
+    @Override
+    public boolean equals(Object that) {
+        if (this == that) {
+            return true;
+        }
+        if (that == null) {
+            return false;
+        }
+        if (getClass() != that.getClass()) {
+            return false;
+        }
+        UserShouye other = (UserShouye) that;
+        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
+            && (this.getUid1() == null ? other.getUid1() == null : this.getUid1().equals(other.getUid1()))
+            && (this.getUid2() == null ? other.getUid2() == null : this.getUid2().equals(other.getUid2()))
+            && (this.getGid() == null ? other.getGid() == null : this.getGid().equals(other.getGid()))
+            && (this.getStatus() == null ? other.getStatus() == null : this.getStatus().equals(other.getStatus()))
+            && (this.getSort() == null ? other.getSort() == null : this.getSort().equals(other.getSort()));
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
+        result = prime * result + ((getUid1() == null) ? 0 : getUid1().hashCode());
+        result = prime * result + ((getUid2() == null) ? 0 : getUid2().hashCode());
+        result = prime * result + ((getGid() == null) ? 0 : getGid().hashCode());
+        result = prime * result + ((getStatus() == null) ? 0 : getStatus().hashCode());
+        result = prime * result + ((getSort() == null) ? 0 : getSort().hashCode());
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", id=").append(id);
+        sb.append(", uid1=").append(uid1);
+        sb.append(", uid2=").append(uid2);
+        sb.append(", gid=").append(gid);
+        sb.append(", status=").append(status);
+        sb.append(", sort=").append(sort);
+        sb.append(", serialVersionUID=").append(serialVersionUID);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 2 - 0
src/main/java/com/zhentao/user/mapper/UserLoginMapper.java

@@ -2,6 +2,7 @@ package com.zhentao.user.mapper;
 
 import com.zhentao.user.domain.UserLogin;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
 
 /**
 * @author 86183
@@ -9,6 +10,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 * @createDate 2025-06-03 18:38:51
 * @Entity com.zhentao.user.domain.UserLogin
 */
+@Mapper
 public interface UserLoginMapper extends BaseMapper<UserLogin> {
 
 }

+ 20 - 0
src/main/java/com/zhentao/user/mapper/UserShouyeMapper.java

@@ -0,0 +1,20 @@
+package com.zhentao.user.mapper;
+
+import com.zhentao.user.domain.UserShouye;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @author lzy
+* @description 针对表【user_shouye(用户首页表)】的数据库操作Mapper
+* @createDate 2025-06-05 19:11:47
+* @Entity com.zhentao.user.domain.UserShouye
+*/
+@Mapper
+public interface UserShouyeMapper extends BaseMapper<UserShouye> {
+
+}
+
+
+
+

+ 13 - 0
src/main/java/com/zhentao/user/service/UserShouyeService.java

@@ -0,0 +1,13 @@
+package com.zhentao.user.service;
+
+import com.zhentao.user.domain.UserShouye;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+* @author lzy
+* @description 针对表【user_shouye(用户首页表)】的数据库操作Service
+* @createDate 2025-06-05 19:11:47
+*/
+public interface UserShouyeService extends IService<UserShouye> {
+
+}

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

@@ -18,8 +18,6 @@ import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.util.DigestUtils;
 
-import java.util.HashMap;
-import java.util.Map;
 import java.util.UUID;
 import java.util.concurrent.TimeUnit;
 
@@ -187,7 +185,7 @@ public class UserLoginServiceImpl extends ServiceImpl<UserLoginMapper, UserLogin
      */
     @Override
     public Result UserPassLogin(UserPassDto userPassDto) {
-//        System.err.println(userPassDto);
+        System.err.println(userPassDto);
         // 获取Redisson客户端的锁对象,用于处理并发登录请求
         RLock lock = redissonClient.getLock("user"+userPassDto.getUsername());
         try {
@@ -198,7 +196,6 @@ public class UserLoginServiceImpl extends ServiceImpl<UserLoginMapper, UserLogin
                 QueryWrapper<UserLogin> queryWrapper = new QueryWrapper<>();
                 queryWrapper.eq("user_username",userPassDto.getUsername());
                 UserLogin one = this.getOne(queryWrapper);
-                System.err.println(one.toString());
                 // 如果用户不存在,抛出异常
                 if (one==null){
                     throw new AsynException(ApiServerException.NULL_USERNAME);
@@ -212,10 +209,11 @@ public class UserLoginServiceImpl extends ServiceImpl<UserLoginMapper, UserLogin
                 }
                 // 生成JWT令牌
                 String jwtToken = TokenUtils.generateToken(one.getId()+"");
-                Map<String,Object> map = new HashMap<>();
-                map.put("token",jwtToken);
+                stringRedisTemplate.opsForValue().set(one.getId().toString(),jwtToken);
+                System.err.println(jwtToken);
+                System.err.println(stringRedisTemplate.opsForValue().get(one.getId().toString()));
                 // 返回登录成功结果和JWT令牌
-                return Result.OK(map,"登录成功");
+                return Result.OK("登录成功",jwtToken);
             }else {
                 // 如果获取锁超时,返回错误信息
                 return Result.ERR("获取锁超时",null);

+ 22 - 0
src/main/java/com/zhentao/user/service/impl/UserShouyeServiceImpl.java

@@ -0,0 +1,22 @@
+package com.zhentao.user.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zhentao.user.domain.UserShouye;
+import com.zhentao.user.service.UserShouyeService;
+import com.zhentao.user.mapper.UserShouyeMapper;
+import org.springframework.stereotype.Service;
+
+/**
+* @author lzy
+* @description 针对表【user_shouye(用户首页表)】的数据库操作Service实现
+* @createDate 2025-06-05 19:11:47
+*/
+@Service
+public class UserShouyeServiceImpl extends ServiceImpl<UserShouyeMapper, UserShouye>
+    implements UserShouyeService{
+
+}
+
+
+
+

+ 22 - 0
src/main/resources/mapper/GroupMembersMapper.xml

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zhentao.groups.mapper.GroupMembersMapper">
+
+    <resultMap id="BaseResultMap" type="com.zhentao.groups.pojo.GroupMembers">
+            <id property="id" column="id" jdbcType="BIGINT"/>
+            <result property="groupId" column="group_id" jdbcType="BIGINT"/>
+            <result property="userId" column="user_id" jdbcType="BIGINT"/>
+            <result property="nickname" column="nickname" jdbcType="VARCHAR"/>
+            <result property="role" column="role" jdbcType="TINYINT"/>
+            <result property="joinTime" column="join_time" jdbcType="TIMESTAMP"/>
+            <result property="lastAckMsgId" column="last_ack_msg_id" jdbcType="BIGINT"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,group_id,user_id,
+        nickname,role,join_time,
+        last_ack_msg_id
+    </sql>
+</mapper>