diff --git a/im-platform/src/main/java/com/lx/implatform/service/impl/UserServiceImpl.java b/im-platform/src/main/java/com/lx/implatform/service/impl/UserServiceImpl.java index 438f3bf..45fe371 100644 --- a/im-platform/src/main/java/com/lx/implatform/service/impl/UserServiceImpl.java +++ b/im-platform/src/main/java/com/lx/implatform/service/impl/UserServiceImpl.java @@ -5,9 +5,13 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.lx.common.contant.RedisKey; import com.lx.common.enums.ResultCode; import com.lx.common.util.BeanUtils; +import com.lx.implatform.entity.Friend; +import com.lx.implatform.entity.GroupMember; import com.lx.implatform.entity.User; import com.lx.implatform.exception.GlobalException; import com.lx.implatform.mapper.UserMapper; +import com.lx.implatform.service.IFriendService; +import com.lx.implatform.service.IGroupMemberService; import com.lx.implatform.service.IUserService; import com.lx.implatform.session.SessionContext; import com.lx.implatform.session.UserSession; @@ -18,6 +22,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.LinkedList; import java.util.List; @@ -40,6 +45,12 @@ public class UserServiceImpl extends ServiceImpl implements IU @Autowired private PasswordEncoder passwordEncoder; + @Autowired + private IGroupMemberService groupMemberService; + + @Autowired + private IFriendService friendService; + @Override public void register(RegisterVO vo) { User user = findUserByName(vo.getUserName()); @@ -58,7 +69,7 @@ public class UserServiceImpl extends ServiceImpl implements IU return this.getOne(queryWrapper); } - + @Transactional @Override public void update(UserVO vo) { UserSession session = SessionContext.getSession(); @@ -69,7 +80,26 @@ public class UserServiceImpl extends ServiceImpl implements IU if(null == user){ throw new GlobalException(ResultCode.PROGRAM_ERROR,"用户不存在"); } - + // 更新好友昵称和头像 + if(!user.getNickName().equals(vo.getNickName()) || !user.getHeadImageThumb().equals(vo.getHeadImageThumb())){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.lambda().eq(Friend::getFriendId,session.getId()); + List friends = friendService.list(queryWrapper); + for(Friend friend: friends){ + friend.setFriendNickName(vo.getNickName()); + friend.setFriendHeadImage(vo.getHeadImageThumb()); + } + friendService.updateBatchById(friends); + } + // 更新群聊中的头像 + if(!user.getHeadImageThumb().equals(vo.getHeadImageThumb())){ + List members = groupMemberService.findByUserId(session.getId()); + for(GroupMember member:members){ + member.setHeadImage(vo.getHeadImageThumb()); + } + groupMemberService.updateBatchById(members); + } + // 更新用户信息 user.setNickName(vo.getNickName()); user.setSex(vo.getSex()); user.setSignature(vo.getSignature()); diff --git a/im-ui/src/components/group/GroupMember.vue b/im-ui/src/components/group/GroupMember.vue index 3345994..493f1d4 100644 --- a/im-ui/src/components/group/GroupMember.vue +++ b/im-ui/src/components/group/GroupMember.vue @@ -4,7 +4,7 @@
{{member.aliasName}}
- + diff --git a/im-ui/src/components/setting/Setting.vue b/im-ui/src/components/setting/Setting.vue index 067e6e8..748cf70 100644 --- a/im-ui/src/components/setting/Setting.vue +++ b/im-ui/src/components/setting/Setting.vue @@ -8,7 +8,7 @@ :maxSize="maxSize" @success="handleUploadSuccess" - :fileTypes="['image/jpeg', 'image/png', 'image/jpg']"> + :fileTypes="['image/jpeg', 'image/png', 'image/jpg','image/webp']">