diff --git a/README.md b/README.md index 113a3ca..7df8fde 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,7 @@ - 支持移动端和web端同时在线,多端消息同步 - 目前仅兼容h5和微信小程序,后续会继续兼容更多终端类型 +- 页面风格优化:表情包更新、自动生成文字头像等 感兴趣的小伙伴,可在下方扫码体验 @@ -210,33 +211,31 @@ wsApi.onClose((e) => { #### 界面截图 -文字聊天: -![输入图片说明](%E6%88%AA%E5%9B%BE/%E6%96%87%E5%AD%97%E8%81%8A%E5%A4%A9.jpg) - -发送图片、文件: -![输入图片说明](%E6%88%AA%E5%9B%BE/%E5%8F%91%E9%80%81%E5%9B%BE%E7%89%87%E6%96%87%E4%BB%B6.jpg) - -发送语音 -![输入图片说明](%E6%88%AA%E5%9B%BE/%E5%8F%91%E9%80%81%E8%AF%AD%E9%9F%B3.jpg) +私聊: +![输入图片说明](%E6%88%AA%E5%9B%BE/web/%E7%A7%81%E8%81%8A.jpg) 群聊: -![输入图片说明](%E6%88%AA%E5%9B%BE/%E7%BE%A4%E8%81%8A.jpg) +![输入图片说明](%E6%88%AA%E5%9B%BE/web/%E7%BE%A4%E8%81%8A1.jpg) + +![输入图片说明](%E6%88%AA%E5%9B%BE/web/%E7%BE%A4%E8%81%8A2.jpg) 好友列表: -![输入图片说明](%E6%88%AA%E5%9B%BE/%E5%A5%BD%E5%8F%8B%E5%88%97%E8%A1%A8.jpg) +![输入图片说明](%E6%88%AA%E5%9B%BE/web/%E5%A5%BD%E5%8F%8B%E5%88%97%E8%A1%A8.jpg) 群聊列表: -![输入图片说明](%E6%88%AA%E5%9B%BE/%E7%BE%A4%E8%81%8A%E5%88%97%E8%A1%A8.jpg) +![输入图片说明](%E6%88%AA%E5%9B%BE/web/%E7%BE%A4%E8%81%8A%E5%88%97%E8%A1%A8.jpg) 微信小程序: -![输入图片说明](%E6%88%AA%E5%9B%BE/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F.jpg) +![输入图片说明](%E6%88%AA%E5%9B%BE/wx-mp/%E8%81%8A%E5%A4%A9.jpg) + +![输入图片说明](%E6%88%AA%E5%9B%BE/wx-mp/%E5%85%B6%E4%BB%96.jpg) #### 加入交流群 ![输入图片说明](%E6%88%AA%E5%9B%BE/%E4%BA%A4%E6%B5%81%E7%BE%A4.png) -欢迎进群与小伙们一起交流, **加群前请务必先star!!!** +欢迎进群与小伙们一起交流, **申请加群前请务必先star哦** #### 嘿嘿 diff --git a/im-client/src/main/java/com/bx/imclient/IMClient.java b/im-client/src/main/java/com/bx/imclient/IMClient.java index a1e12ec..4b3e6e7 100644 --- a/im-client/src/main/java/com/bx/imclient/IMClient.java +++ b/im-client/src/main/java/com/bx/imclient/IMClient.java @@ -1,14 +1,14 @@ package com.bx.imclient; import com.bx.imclient.sender.IMSender; +import com.bx.imcommon.enums.IMTerminalType; import com.bx.imcommon.model.IMGroupMessage; import com.bx.imcommon.model.IMPrivateMessage; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; -import java.util.Collection; -import java.util.Collections; import java.util.List; +import java.util.Map; @Configuration public class IMClient { @@ -31,8 +31,19 @@ public class IMClient { * @param userIds 用户id列表 * @return 在线的用户列表 */ - public List isOnline(List userIds){ - return imSender.isOnline(userIds); + public List getOnlineUser(List userIds){ + return imSender.getOnlineUser(userIds); + } + + + /** + * 判断多个用户是否在线 + * + * @param userIds 用户id列表 + * @return 在线的用户终端 + */ + public Map> getOnlineTerminal(List userIds){ + return imSender.getOnlineTerminal(userIds); } /** diff --git a/im-client/src/main/java/com/bx/imclient/sender/IMSender.java b/im-client/src/main/java/com/bx/imclient/sender/IMSender.java index c92a990..1d3dc87 100644 --- a/im-client/src/main/java/com/bx/imclient/sender/IMSender.java +++ b/im-client/src/main/java/com/bx/imclient/sender/IMSender.java @@ -14,6 +14,7 @@ import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; @Service @@ -90,12 +91,12 @@ public class IMSender { List serverIds = redisTemplate.opsForValue().multiGet(sendMap.keySet()); // 格式:map<服务器id,list<接收方>> Map> serverMap = new HashMap<>(); - List offLineUsers = Collections.synchronizedList(new LinkedList<>()); + List offLineUsers = new LinkedList<>(); int idx = 0; for (Map.Entry entry : sendMap.entrySet()) { Integer serverId = (Integer)serverIds.get(idx++); if (serverId != null) { - List list = serverMap.computeIfAbsent(serverId, o -> Collections.synchronizedList(new LinkedList<>())); + List list = serverMap.computeIfAbsent(serverId, o -> new LinkedList<>()); list.add(entry.getValue()); } else { // 加入离线列表 @@ -150,34 +151,40 @@ public class IMSender { } } - public Boolean isOnline(Long userId) { - String key = String.join(":", IMRedisKey.IM_USER_SERVER_ID, userId.toString(), "*"); - return !redisTemplate.keys(key).isEmpty(); - } - - public List isOnline(List userIds){ + public Map> getOnlineTerminal(List userIds){ if(CollectionUtil.isEmpty(userIds)){ - return Collections.emptyList(); + return Collections.EMPTY_MAP; } // 把所有用户的key都存起来 - Map keyMap = new HashMap<>(); + Map userMap = new HashMap<>(); for(Long id:userIds){ for (Integer terminal : IMTerminalType.codes()) { String key = String.join(":", IMRedisKey.IM_USER_SERVER_ID, id.toString(), terminal.toString()); - keyMap.put(key,id); + userMap.put(key,new IMUserInfo(id,terminal)); } } // 批量拉取 - List serverIds = redisTemplate.opsForValue().multiGet(keyMap.keySet()); + List serverIds = redisTemplate.opsForValue().multiGet(userMap.keySet()); int idx = 0; - List onlineIds = new LinkedList<>(); - for (Map.Entry entry : keyMap.entrySet()) { + Map> onlineMap = new HashMap<>(); + for (Map.Entry entry : userMap.entrySet()) { // serverid有值表示用户在线 if(serverIds.get(idx++) != null){ - onlineIds.add(entry.getValue()); + IMUserInfo userInfo = entry.getValue(); + List terminals = onlineMap.computeIfAbsent(userInfo.getId(), o -> new LinkedList<>()); + terminals.add(IMTerminalType.fromCode(userInfo.getTerminal())); } } // 去重并返回 - return onlineIds.stream().distinct().collect(Collectors.toList()); + return onlineMap; + } + + public Boolean isOnline(Long userId) { + String key = String.join(":", IMRedisKey.IM_USER_SERVER_ID, userId.toString(), "*"); + return !redisTemplate.keys(key).isEmpty(); + } + + public List getOnlineUser(List userIds){ + return new LinkedList<>(getOnlineTerminal(userIds).keySet()); } } diff --git a/im-platform/src/main/java/com/bx/implatform/controller/UserController.java b/im-platform/src/main/java/com/bx/implatform/controller/UserController.java index 63efcd8..22222c0 100644 --- a/im-platform/src/main/java/com/bx/implatform/controller/UserController.java +++ b/im-platform/src/main/java/com/bx/implatform/controller/UserController.java @@ -7,6 +7,7 @@ import com.bx.implatform.service.IUserService; import com.bx.implatform.session.SessionContext; import com.bx.implatform.session.UserSession; import com.bx.implatform.util.BeanUtils; +import com.bx.implatform.vo.OnlineTerminalVO; import com.bx.implatform.vo.UserVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -34,6 +35,13 @@ public class UserController { return ResultUtils.success(onlineIds); } + @GetMapping("/terminal/online") + @ApiOperation(value = "判断用户哪个终端在线",notes="返回在线的用户id的终端集合") + public Result> getOnlineTerminal(@NotEmpty @RequestParam("userIds") String userIds){ + return ResultUtils.success(userService.getOnlineTerminals(userIds)); + } + + @GetMapping("/self") @ApiOperation(value = "获取当前用户信息",notes="获取当前用户信息") public Result findSelfInfo(){ @@ -46,10 +54,8 @@ public class UserController { @GetMapping("/find/{id}") @ApiOperation(value = "查找用户",notes="根据id查找用户") - public Result findByIde(@NotEmpty @PathVariable("id") long id){ - User user = userService.getById(id); - UserVO userVO = BeanUtils.copyProperties(user,UserVO.class); - return ResultUtils.success(userVO); + public Result findById(@NotEmpty @PathVariable("id") Long id){ + return ResultUtils.success(userService.findUserById(id)); } @PutMapping("/update") diff --git a/im-platform/src/main/java/com/bx/implatform/service/IUserService.java b/im-platform/src/main/java/com/bx/implatform/service/IUserService.java index 107d51e..c675567 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/IUserService.java +++ b/im-platform/src/main/java/com/bx/implatform/service/IUserService.java @@ -6,6 +6,7 @@ import com.bx.implatform.entity.User; import com.bx.implatform.dto.LoginDTO; import com.bx.implatform.dto.RegisterDTO; import com.bx.implatform.vo.LoginVO; +import com.bx.implatform.vo.OnlineTerminalVO; import com.bx.implatform.vo.UserVO; import java.util.List; @@ -25,8 +26,13 @@ public interface IUserService extends IService { void update(UserVO vo); + UserVO findUserById(Long id); + List findUserByName(String name); List checkOnline(String userIds); + List getOnlineTerminals(String userIds); + + } diff --git a/im-platform/src/main/java/com/bx/implatform/service/impl/GroupServiceImpl.java b/im-platform/src/main/java/com/bx/implatform/service/impl/GroupServiceImpl.java index e2104fc..623d64f 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/impl/GroupServiceImpl.java +++ b/im-platform/src/main/java/com/bx/implatform/service/impl/GroupServiceImpl.java @@ -3,6 +3,7 @@ package com.bx.implatform.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.bx.imclient.IMClient; import com.bx.implatform.contant.Constant; import com.bx.implatform.contant.RedisKey; import com.bx.implatform.entity.Friend; @@ -52,6 +53,9 @@ public class GroupServiceImpl extends ServiceImpl implements @Autowired private IFriendService friendsService; + @Autowired + private IMClient imClient; + /** * 创建新群聊 * @@ -292,7 +296,15 @@ public class GroupServiceImpl extends ServiceImpl implements @Override public List findGroupMembers(Long groupId) { List members = groupMemberService.findByGroupId(groupId); - return members.stream().map(m->BeanUtils.copyProperties(m,GroupMemberVO.class)).collect(Collectors.toList()); + List userIds = members.stream().map(GroupMember::getUserId).collect(Collectors.toList()); + List onlineUserIds = imClient.getOnlineUser(userIds); + return members.stream().map(m->{ + GroupMemberVO vo = BeanUtils.copyProperties(m,GroupMemberVO.class); + vo.setOnline(onlineUserIds.contains(m.getUserId())); + return vo; + }).sorted((m1,m2)->{ + return m2.getOnline().compareTo(m1.getOnline()); + }).collect(Collectors.toList()); } } diff --git a/im-platform/src/main/java/com/bx/implatform/service/impl/PrivateMessageServiceImpl.java b/im-platform/src/main/java/com/bx/implatform/service/impl/PrivateMessageServiceImpl.java index 269a937..0093db6 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/impl/PrivateMessageServiceImpl.java +++ b/im-platform/src/main/java/com/bx/implatform/service/impl/PrivateMessageServiceImpl.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.bx.imclient.IMClient; import com.bx.imcommon.contant.IMConstant; -import com.bx.imcommon.enums.IMTerminalType; import com.bx.imcommon.model.IMPrivateMessage; import com.bx.imcommon.model.IMUserInfo; import com.bx.implatform.entity.Friend; @@ -159,6 +158,9 @@ public class PrivateMessageServiceImpl extends ServiceImpl friends = friendService.findFriendByUserId(session.getUserId()); + if(friends.isEmpty()){ + return; + } List friendIds = friends.stream().map(Friend::getFriendId).collect(Collectors.toList()); // 获取当前用户所有未读消息 LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); diff --git a/im-platform/src/main/java/com/bx/implatform/service/impl/UserServiceImpl.java b/im-platform/src/main/java/com/bx/implatform/service/impl/UserServiceImpl.java index 0d43247..0d9a8bf 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/impl/UserServiceImpl.java +++ b/im-platform/src/main/java/com/bx/implatform/service/impl/UserServiceImpl.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.bx.imclient.IMClient; +import com.bx.imcommon.enums.IMTerminalType; import com.bx.imcommon.util.JwtUtil; import com.bx.implatform.config.JwtProperties; import com.bx.implatform.dto.LoginDTO; @@ -24,6 +25,7 @@ import com.bx.implatform.session.SessionContext; import com.bx.implatform.session.UserSession; import com.bx.implatform.util.BeanUtils; import com.bx.implatform.vo.LoginVO; +import com.bx.implatform.vo.OnlineTerminalVO; import com.bx.implatform.vo.UserVO; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -33,7 +35,9 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Arrays; +import java.util.LinkedList; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; @@ -95,7 +99,7 @@ public class UserServiceImpl extends ServiceImpl implements IU /** * 用refreshToken换取新 token * - * @param refreshToken + * @param refreshToken 刷新token * @return 登录token */ @Override @@ -150,7 +154,7 @@ public class UserServiceImpl extends ServiceImpl implements IU * 根据用户名查询用户 * * @param username 用户名 - * @return + * @return 用户信息 */ @Override public User findUserByUserName(String username) { @@ -205,12 +209,25 @@ public class UserServiceImpl extends ServiceImpl implements IU log.info("用户信息更新,用户:{}}", user); } + /** + * 根据用户昵id查询用户以及在线状态 + * + * @param id 用户id + * @return 用户信息 + */ + @Override + public UserVO findUserById(Long id) { + User user = this.getById(id); + UserVO vo = BeanUtils.copyProperties(user,UserVO.class); + vo.setOnline(imClient.isOnline(id)); + return vo; + } /** * 根据用户昵称查询用户,最多返回20条数据 * * @param name 用户名或昵称 - * @return + * @return 用户列表 */ @Override public List findUserByName(String name) { @@ -221,7 +238,7 @@ public class UserServiceImpl extends ServiceImpl implements IU .last("limit 20"); List users = this.list(queryWrapper); List userIds = users.stream().map(User::getId).collect(Collectors.toList()); - List onlineUserIds = imClient.isOnline(userIds); + List onlineUserIds = imClient.getOnlineUser(userIds); return users.stream().map(u-> { UserVO vo = BeanUtils.copyProperties(u,UserVO.class); vo.setOnline(onlineUserIds.contains(u.getId())); @@ -239,7 +256,28 @@ public class UserServiceImpl extends ServiceImpl implements IU public List checkOnline(String userIds) { List userIdList = Arrays.stream(userIds.split(",")) .map(Long::parseLong).collect(Collectors.toList()); - return imClient.isOnline(userIdList); + return imClient.getOnlineUser(userIdList); } + + /** + * 获取用户在线的终端类型 + * + * @param userIds 用户id,多个用‘,’分割 + * @return 在线用户终端 + */ + @Override + public List getOnlineTerminals(String userIds) { + List userIdList = Arrays.stream(userIds.split(",")) + .map(Long::parseLong).collect(Collectors.toList()); + // 查询在线的终端 + Map> terminalMap = imClient.getOnlineTerminal(userIdList); + // 组装vo + List vos = new LinkedList<>(); + terminalMap.forEach((userId,types)->{ + List terminals = types.stream().map(IMTerminalType::code).collect(Collectors.toList()); + vos.add(new OnlineTerminalVO(userId,terminals)); + }); + return vos; + } } diff --git a/im-platform/src/main/java/com/bx/implatform/vo/GroupMemberVO.java b/im-platform/src/main/java/com/bx/implatform/vo/GroupMemberVO.java index 7428985..2e605c9 100644 --- a/im-platform/src/main/java/com/bx/implatform/vo/GroupMemberVO.java +++ b/im-platform/src/main/java/com/bx/implatform/vo/GroupMemberVO.java @@ -21,6 +21,9 @@ public class GroupMemberVO { @ApiModelProperty("是否已退出") private Boolean quit; + @ApiModelProperty(value = "是否在线") + private Boolean online; + @ApiModelProperty("备注") private String remark; diff --git a/im-platform/src/main/java/com/bx/implatform/vo/OnlineTerminalVO.java b/im-platform/src/main/java/com/bx/implatform/vo/OnlineTerminalVO.java new file mode 100644 index 0000000..4aed6c1 --- /dev/null +++ b/im-platform/src/main/java/com/bx/implatform/vo/OnlineTerminalVO.java @@ -0,0 +1,24 @@ +package com.bx.implatform.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; + +import java.util.List; + +/** + * @author: 谢绍许 + * @date: 2023-10-28 21:17:59 + * @version: 1.0 + */ +@Data +@AllArgsConstructor +public class OnlineTerminalVO { + + @ApiModelProperty(value = "用户id") + private Long userId; + + @ApiModelProperty(value = "在线终端类型") + private List terminals; + +} diff --git a/im-server/src/main/java/com/bx/imserver/netty/IMChannelHandler.java b/im-server/src/main/java/com/bx/imserver/netty/IMChannelHandler.java index babd2a0..d748d6e 100644 --- a/im-server/src/main/java/com/bx/imserver/netty/IMChannelHandler.java +++ b/im-server/src/main/java/com/bx/imserver/netty/IMChannelHandler.java @@ -91,8 +91,8 @@ public class IMChannelHandler extends SimpleChannelInboundHandler { AttributeKey attr = AttributeKey.valueOf("USER_ID"); Long userId = ctx.channel().attr(attr).get(); AttributeKey terminalAttr = AttributeKey.valueOf(ChannelAttrKey.TERMINAL_TYPE); - Integer ternimal = ctx.channel().attr(terminalAttr).get(); - log.info("心跳超时,即将断开连接,用户id:{},终端类型:{} ",userId,ternimal); + Integer terminal = ctx.channel().attr(terminalAttr).get(); + log.info("心跳超时,即将断开连接,用户id:{},终端类型:{} ",userId,terminal); ctx.channel().close(); } } else { diff --git a/im-server/src/main/java/com/bx/imserver/netty/processor/HeartbeatProcessor.java b/im-server/src/main/java/com/bx/imserver/netty/processor/HeartbeatProcessor.java index b72bccd..f24f848 100644 --- a/im-server/src/main/java/com/bx/imserver/netty/processor/HeartbeatProcessor.java +++ b/im-server/src/main/java/com/bx/imserver/netty/processor/HeartbeatProcessor.java @@ -45,8 +45,8 @@ public class HeartbeatProcessor extends AbstractMessageProcessor userIdAttr = AttributeKey.valueOf(ChannelAttrKey.USER_ID); Long userId = ctx.channel().attr(userIdAttr).get(); AttributeKey terminalAttr = AttributeKey.valueOf(ChannelAttrKey.TERMINAL_TYPE); - Integer ternimal = ctx.channel().attr(terminalAttr).get(); - String key = String.join(":", IMRedisKey.IM_USER_SERVER_ID,userId.toString(),ternimal.toString()); + Integer terminal = ctx.channel().attr(terminalAttr).get(); + String key = String.join(":", IMRedisKey.IM_USER_SERVER_ID,userId.toString(),terminal.toString()); redisTemplate.expire(key, IMConstant.ONLINE_TIMEOUT_SECOND, TimeUnit.SECONDS); } } diff --git a/im-ui/src/api/date.js b/im-ui/src/api/date.js new file mode 100644 index 0000000..705f1b7 --- /dev/null +++ b/im-ui/src/api/date.js @@ -0,0 +1,66 @@ +let toTimeText = (timeStamp, simple) => { + var dateTime = new Date(timeStamp) + var currentTime = Date.parse(new Date()); //当前时间 + var timeDiff = currentTime - dateTime; //与当前时间误差 + var timeText = ''; + if (timeDiff <= 60000) { //一分钟内 + timeText = '刚刚'; + } else if (timeDiff > 60000 && timeDiff < 3600000) { + //1小时内 + timeText = Math.floor(timeDiff / 60000) + '分钟前'; + } else if (timeDiff >= 3600000 && timeDiff < 86400000 && !isYestday(dateTime)) { + //今日 + timeText = formatDateTime(dateTime).substr(11, 5); + } else if (isYestday(dateTime)) { + //昨天 + timeText = '昨天' + formatDateTime(dateTime).substr(11, 5); + } else if (isYear(dateTime)) { + //今年 + timeText = formatDateTime(dateTime).substr(5, simple ? 5 : 14); + } else { + //不属于今年 + timeText = formatDateTime(dateTime); + if(simple){ + timeText = timeText.substring(2,5); + } + } + return timeText; +} + +let isYestday = (date) => { + var yesterday = new Date(new Date() - 1000 * 60 * 60 * 24); + return yesterday.getYear() === date.getYear() && + yesterday.getMonth() === date.getMonth() && + yesterday.getDate() === date.getDate(); +} + +let isYear = (date) => { + return date.getYear() === new Date().getYear(); +} + +let formatDateTime = (date) => { + if (date === '' || !date) { + return '' + } + var dateObject = new Date(date) + var y = dateObject.getFullYear() + var m = dateObject.getMonth() + 1 + m = m < 10 ? ('0' + m) : m + var d = dateObject.getDate() + d = d < 10 ? ('0' + d) : d + var h = dateObject.getHours() + h = h < 10 ? ('0' + h) : h + var minute = dateObject.getMinutes() + minute = minute < 10 ? ('0' + minute) : minute + var second = dateObject.getSeconds() + second = second < 10 ? ('0' + second) : second + return y + '/' + m + '/' + d + ' ' + h + ':' + minute + ':' + second +} + + +export{ + toTimeText, + isYestday, + isYear, + formatDateTime +} \ No newline at end of file diff --git a/im-ui/src/api/emotion.js b/im-ui/src/api/emotion.js index fb4d0d1..89fc18c 100644 --- a/im-ui/src/api/emotion.js +++ b/im-ui/src/api/emotion.js @@ -1,4 +1,10 @@ -const emoTextList = ['微笑', '撇嘴', '色', '发呆', '得意', '流泪', '害羞', '闭嘴', '睡', '大哭', '尴尬', '发怒', '调皮', '呲牙', '惊讶', '难过', '酷', '冷汗', '抓狂', '吐', '偷笑', '可爱', '白眼', '傲慢', '饥饿', '困', '惊恐', '流汗', '憨笑', '大兵', '奋斗', '咒骂', '疑问', '嘘', '晕', '折磨', '衰', '骷髅', '敲打', '再见', '擦汗', '抠鼻', '鼓掌', '糗大了', '坏笑', '左哼哼', '右哼哼', '哈欠', '鄙视', '委屈', '快哭了', '阴险', '亲亲', '吓', '可怜', '菜刀', '西瓜', '啤酒', '篮球', '乒乓', '咖啡', '饭', '猪头', '玫瑰', '凋谢', '示爱', '爱心', '心碎', '蛋糕', '闪电', '炸弹', '刀', '足球', '瓢虫', '便便', '月亮', '太阳', '礼物', '拥抱', '强', '弱', '握手', '胜利', '抱拳', '勾引', '拳头', '差劲', '爱你', 'NO', 'OK', '爱情', '飞吻', '跳跳', '发抖', '怄火', '转圈', '磕头', '回头', '跳绳', '挥手', '激动', '街舞', '献吻', '左太极', '右太极']; +const emoTextList = ['憨笑', '媚眼', '开心', '坏笑', '可怜', '爱心', '笑哭', '拍手', '惊喜', '打气', + '大哭', '流泪', '饥饿', '难受', '健身', '示爱', '色色', '眨眼', '暴怒', '惊恐', + '思考', '头晕', '大吐', '酷笑', '翻滚', '享受', '鼻涕', '快乐', '雀跃', '微笑', + '贪婪', '红心', '粉心', '星星', '大火', '眼睛', '音符', "叹号", "问号", "绿叶", + "燃烧", "喇叭", "警告", "信封", "房子", "礼物", "点赞", "举手", "拍手", "点头", + "摇头", "偷瞄", "庆祝", "疾跑", "打滚", "惊吓", "起跳" +]; let transform = (content) => { @@ -10,7 +16,7 @@ let textToImg = (emoText) => { let word = emoText.replace(/\#|\;/gi, ''); let idx = emoTextList.indexOf(word); let url = require(`@/assets/emoji/${idx}.gif`); - return `` + return `` } diff --git a/im-ui/src/api/enums.js b/im-ui/src/api/enums.js index eb41941..27bfb78 100644 --- a/im-ui/src/api/enums.js +++ b/im-ui/src/api/enums.js @@ -6,6 +6,7 @@ const MESSAGE_TYPE = { AUDIO:3, VIDEO:4, RECALL:10, + TIP_TIME:20, RTC_CALL: 101, RTC_ACCEPT: 102, RTC_REJECT: 103, @@ -21,7 +22,13 @@ const USER_STATE = { BUSY: 2 } +const TERMINAL_TYPE = { + WEB: 0, + APP: 1 +} + export { MESSAGE_TYPE, - USER_STATE + USER_STATE, + TERMINAL_TYPE } diff --git a/im-ui/src/api/wssocket.js b/im-ui/src/api/wssocket.js index b54801f..e014edd 100644 --- a/im-ui/src/api/wssocket.js +++ b/im-ui/src/api/wssocket.js @@ -86,7 +86,7 @@ let close = () => { //心跳设置 -var heartCheck = { +let heartCheck = { timeout: 5000, //每段时间发送一次心跳包 这里设置为20s timeoutObj: null, //延时发送消息对象(启动心跳新建这个对象,收到消息后重置对象) start: function() { @@ -112,7 +112,7 @@ var heartCheck = { // 实际调用的方法 -function sendMessage(agentData) { +let sendMessage = (agentData) => { // console.log(globalCallback) if (websock.readyState === websock.OPEN) { // 若是ws开启状态 @@ -131,16 +131,16 @@ function sendMessage(agentData) { } -function onMessage(callback) { +let onMessage = (callback) => { messageCallBack = callback; } -function onOpen(callback) { +let onOpen = (callback) => { openCallBack = callback; } -function onClose(callback) { +let onClose = (callback) => { closeCallBack = callback; } // 将方法暴露出去 diff --git a/im-ui/src/assets/default_head.png b/im-ui/src/assets/default_head.png deleted file mode 100644 index c7a9e0e..0000000 Binary files a/im-ui/src/assets/default_head.png and /dev/null differ diff --git a/im-ui/src/assets/emoji/0.gif b/im-ui/src/assets/emoji/0.gif index 5be27cb..7a0aadf 100644 Binary files a/im-ui/src/assets/emoji/0.gif and b/im-ui/src/assets/emoji/0.gif differ diff --git a/im-ui/src/assets/emoji/1.gif b/im-ui/src/assets/emoji/1.gif index a2644a9..c1da88a 100644 Binary files a/im-ui/src/assets/emoji/1.gif and b/im-ui/src/assets/emoji/1.gif differ diff --git a/im-ui/src/assets/emoji/10.gif b/im-ui/src/assets/emoji/10.gif index 905c15b..936e086 100644 Binary files a/im-ui/src/assets/emoji/10.gif and b/im-ui/src/assets/emoji/10.gif differ diff --git a/im-ui/src/assets/emoji/100.gif b/im-ui/src/assets/emoji/100.gif deleted file mode 100644 index 92ad35d..0000000 Binary files a/im-ui/src/assets/emoji/100.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/101.gif b/im-ui/src/assets/emoji/101.gif deleted file mode 100644 index 1f27663..0000000 Binary files a/im-ui/src/assets/emoji/101.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/102.gif b/im-ui/src/assets/emoji/102.gif deleted file mode 100644 index 748ded1..0000000 Binary files a/im-ui/src/assets/emoji/102.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/103.gif b/im-ui/src/assets/emoji/103.gif deleted file mode 100644 index be9eaa0..0000000 Binary files a/im-ui/src/assets/emoji/103.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/104.gif b/im-ui/src/assets/emoji/104.gif deleted file mode 100644 index d7c2066..0000000 Binary files a/im-ui/src/assets/emoji/104.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/11.gif b/im-ui/src/assets/emoji/11.gif index b512dd5..bfe8b71 100644 Binary files a/im-ui/src/assets/emoji/11.gif and b/im-ui/src/assets/emoji/11.gif differ diff --git a/im-ui/src/assets/emoji/12.gif b/im-ui/src/assets/emoji/12.gif index 547529c..4547801 100644 Binary files a/im-ui/src/assets/emoji/12.gif and b/im-ui/src/assets/emoji/12.gif differ diff --git a/im-ui/src/assets/emoji/13.gif b/im-ui/src/assets/emoji/13.gif index 3475300..0eaf742 100644 Binary files a/im-ui/src/assets/emoji/13.gif and b/im-ui/src/assets/emoji/13.gif differ diff --git a/im-ui/src/assets/emoji/14.gif b/im-ui/src/assets/emoji/14.gif index 6a788f8..f10fbf7 100644 Binary files a/im-ui/src/assets/emoji/14.gif and b/im-ui/src/assets/emoji/14.gif differ diff --git a/im-ui/src/assets/emoji/15.gif b/im-ui/src/assets/emoji/15.gif index debab8e..7eecf3f 100644 Binary files a/im-ui/src/assets/emoji/15.gif and b/im-ui/src/assets/emoji/15.gif differ diff --git a/im-ui/src/assets/emoji/16.gif b/im-ui/src/assets/emoji/16.gif index ed5d29f..f7608c4 100644 Binary files a/im-ui/src/assets/emoji/16.gif and b/im-ui/src/assets/emoji/16.gif differ diff --git a/im-ui/src/assets/emoji/17.gif b/im-ui/src/assets/emoji/17.gif index 85886fe..bd7e2c3 100644 Binary files a/im-ui/src/assets/emoji/17.gif and b/im-ui/src/assets/emoji/17.gif differ diff --git a/im-ui/src/assets/emoji/18.gif b/im-ui/src/assets/emoji/18.gif index b6af218..88fbb58 100644 Binary files a/im-ui/src/assets/emoji/18.gif and b/im-ui/src/assets/emoji/18.gif differ diff --git a/im-ui/src/assets/emoji/19.gif b/im-ui/src/assets/emoji/19.gif index e045ff2..921a19e 100644 Binary files a/im-ui/src/assets/emoji/19.gif and b/im-ui/src/assets/emoji/19.gif differ diff --git a/im-ui/src/assets/emoji/2.gif b/im-ui/src/assets/emoji/2.gif index 40cfda4..f8af503 100644 Binary files a/im-ui/src/assets/emoji/2.gif and b/im-ui/src/assets/emoji/2.gif differ diff --git a/im-ui/src/assets/emoji/20.gif b/im-ui/src/assets/emoji/20.gif index efd650f..0dc4aac 100644 Binary files a/im-ui/src/assets/emoji/20.gif and b/im-ui/src/assets/emoji/20.gif differ diff --git a/im-ui/src/assets/emoji/21.gif b/im-ui/src/assets/emoji/21.gif index cb8cf6d..e434309 100644 Binary files a/im-ui/src/assets/emoji/21.gif and b/im-ui/src/assets/emoji/21.gif differ diff --git a/im-ui/src/assets/emoji/22.gif b/im-ui/src/assets/emoji/22.gif index 96b04df..6a6c1b6 100644 Binary files a/im-ui/src/assets/emoji/22.gif and b/im-ui/src/assets/emoji/22.gif differ diff --git a/im-ui/src/assets/emoji/23.gif b/im-ui/src/assets/emoji/23.gif index 96516b8..cb74929 100644 Binary files a/im-ui/src/assets/emoji/23.gif and b/im-ui/src/assets/emoji/23.gif differ diff --git a/im-ui/src/assets/emoji/24.gif b/im-ui/src/assets/emoji/24.gif index 5f925c7..e67dc83 100644 Binary files a/im-ui/src/assets/emoji/24.gif and b/im-ui/src/assets/emoji/24.gif differ diff --git a/im-ui/src/assets/emoji/25.gif b/im-ui/src/assets/emoji/25.gif index 97f8b1a..7ab3a13 100644 Binary files a/im-ui/src/assets/emoji/25.gif and b/im-ui/src/assets/emoji/25.gif differ diff --git a/im-ui/src/assets/emoji/26.gif b/im-ui/src/assets/emoji/26.gif index a7cded7..bb8c177 100644 Binary files a/im-ui/src/assets/emoji/26.gif and b/im-ui/src/assets/emoji/26.gif differ diff --git a/im-ui/src/assets/emoji/27.gif b/im-ui/src/assets/emoji/27.gif index bb46890..aaef929 100644 Binary files a/im-ui/src/assets/emoji/27.gif and b/im-ui/src/assets/emoji/27.gif differ diff --git a/im-ui/src/assets/emoji/28.gif b/im-ui/src/assets/emoji/28.gif index f59dd58..ae0acee 100644 Binary files a/im-ui/src/assets/emoji/28.gif and b/im-ui/src/assets/emoji/28.gif differ diff --git a/im-ui/src/assets/emoji/29.gif b/im-ui/src/assets/emoji/29.gif index 3c5227e..02ce3e2 100644 Binary files a/im-ui/src/assets/emoji/29.gif and b/im-ui/src/assets/emoji/29.gif differ diff --git a/im-ui/src/assets/emoji/3.gif b/im-ui/src/assets/emoji/3.gif index 6d6f762..0c3f676 100644 Binary files a/im-ui/src/assets/emoji/3.gif and b/im-ui/src/assets/emoji/3.gif differ diff --git a/im-ui/src/assets/emoji/30.gif b/im-ui/src/assets/emoji/30.gif index e24a180..302b058 100644 Binary files a/im-ui/src/assets/emoji/30.gif and b/im-ui/src/assets/emoji/30.gif differ diff --git a/im-ui/src/assets/emoji/31.gif b/im-ui/src/assets/emoji/31.gif index 073e743..13f13f0 100644 Binary files a/im-ui/src/assets/emoji/31.gif and b/im-ui/src/assets/emoji/31.gif differ diff --git a/im-ui/src/assets/emoji/32.gif b/im-ui/src/assets/emoji/32.gif index 772eff2..be5fc83 100644 Binary files a/im-ui/src/assets/emoji/32.gif and b/im-ui/src/assets/emoji/32.gif differ diff --git a/im-ui/src/assets/emoji/33.gif b/im-ui/src/assets/emoji/33.gif index 217c1c5..345d3cb 100644 Binary files a/im-ui/src/assets/emoji/33.gif and b/im-ui/src/assets/emoji/33.gif differ diff --git a/im-ui/src/assets/emoji/34.gif b/im-ui/src/assets/emoji/34.gif index e9d4213..0a7d848 100644 Binary files a/im-ui/src/assets/emoji/34.gif and b/im-ui/src/assets/emoji/34.gif differ diff --git a/im-ui/src/assets/emoji/35.gif b/im-ui/src/assets/emoji/35.gif index d6da2c3..650195e 100644 Binary files a/im-ui/src/assets/emoji/35.gif and b/im-ui/src/assets/emoji/35.gif differ diff --git a/im-ui/src/assets/emoji/36.gif b/im-ui/src/assets/emoji/36.gif index c1e6ac9..f6ba2c0 100644 Binary files a/im-ui/src/assets/emoji/36.gif and b/im-ui/src/assets/emoji/36.gif differ diff --git a/im-ui/src/assets/emoji/37.gif b/im-ui/src/assets/emoji/37.gif index 92efec6..5d48c9b 100644 Binary files a/im-ui/src/assets/emoji/37.gif and b/im-ui/src/assets/emoji/37.gif differ diff --git a/im-ui/src/assets/emoji/38.gif b/im-ui/src/assets/emoji/38.gif index 489f0f9..8e08969 100644 Binary files a/im-ui/src/assets/emoji/38.gif and b/im-ui/src/assets/emoji/38.gif differ diff --git a/im-ui/src/assets/emoji/39.gif b/im-ui/src/assets/emoji/39.gif index 734f6d8..2800730 100644 Binary files a/im-ui/src/assets/emoji/39.gif and b/im-ui/src/assets/emoji/39.gif differ diff --git a/im-ui/src/assets/emoji/4.gif b/im-ui/src/assets/emoji/4.gif index 6ccdaa2..3036d2f 100644 Binary files a/im-ui/src/assets/emoji/4.gif and b/im-ui/src/assets/emoji/4.gif differ diff --git a/im-ui/src/assets/emoji/40.gif b/im-ui/src/assets/emoji/40.gif index 24a8eb6..6961e5e 100644 Binary files a/im-ui/src/assets/emoji/40.gif and b/im-ui/src/assets/emoji/40.gif differ diff --git a/im-ui/src/assets/emoji/41.gif b/im-ui/src/assets/emoji/41.gif index 99139e1..5f46426 100644 Binary files a/im-ui/src/assets/emoji/41.gif and b/im-ui/src/assets/emoji/41.gif differ diff --git a/im-ui/src/assets/emoji/42.gif b/im-ui/src/assets/emoji/42.gif index f60897e..2617f27 100644 Binary files a/im-ui/src/assets/emoji/42.gif and b/im-ui/src/assets/emoji/42.gif differ diff --git a/im-ui/src/assets/emoji/43.gif b/im-ui/src/assets/emoji/43.gif index 4350491..95684d5 100644 Binary files a/im-ui/src/assets/emoji/43.gif and b/im-ui/src/assets/emoji/43.gif differ diff --git a/im-ui/src/assets/emoji/44.gif b/im-ui/src/assets/emoji/44.gif index 650d3dd..f68286b 100644 Binary files a/im-ui/src/assets/emoji/44.gif and b/im-ui/src/assets/emoji/44.gif differ diff --git a/im-ui/src/assets/emoji/45.gif b/im-ui/src/assets/emoji/45.gif index 5c8e071..9e7beea 100644 Binary files a/im-ui/src/assets/emoji/45.gif and b/im-ui/src/assets/emoji/45.gif differ diff --git a/im-ui/src/assets/emoji/46.gif b/im-ui/src/assets/emoji/46.gif index f3cb074..7c6ff0e 100644 Binary files a/im-ui/src/assets/emoji/46.gif and b/im-ui/src/assets/emoji/46.gif differ diff --git a/im-ui/src/assets/emoji/47.gif b/im-ui/src/assets/emoji/47.gif index 5b3057a..6333866 100644 Binary files a/im-ui/src/assets/emoji/47.gif and b/im-ui/src/assets/emoji/47.gif differ diff --git a/im-ui/src/assets/emoji/48.gif b/im-ui/src/assets/emoji/48.gif index 27a30c1..f98216e 100644 Binary files a/im-ui/src/assets/emoji/48.gif and b/im-ui/src/assets/emoji/48.gif differ diff --git a/im-ui/src/assets/emoji/49.gif b/im-ui/src/assets/emoji/49.gif index dcfa48a..e1870f4 100644 Binary files a/im-ui/src/assets/emoji/49.gif and b/im-ui/src/assets/emoji/49.gif differ diff --git a/im-ui/src/assets/emoji/5.gif b/im-ui/src/assets/emoji/5.gif index ab0b81b..eaf372b 100644 Binary files a/im-ui/src/assets/emoji/5.gif and b/im-ui/src/assets/emoji/5.gif differ diff --git a/im-ui/src/assets/emoji/50.gif b/im-ui/src/assets/emoji/50.gif index 029cf0f..26bf13a 100644 Binary files a/im-ui/src/assets/emoji/50.gif and b/im-ui/src/assets/emoji/50.gif differ diff --git a/im-ui/src/assets/emoji/51.gif b/im-ui/src/assets/emoji/51.gif index 69f183f..4df891d 100644 Binary files a/im-ui/src/assets/emoji/51.gif and b/im-ui/src/assets/emoji/51.gif differ diff --git a/im-ui/src/assets/emoji/52.gif b/im-ui/src/assets/emoji/52.gif index d41e8aa..813f4d4 100644 Binary files a/im-ui/src/assets/emoji/52.gif and b/im-ui/src/assets/emoji/52.gif differ diff --git a/im-ui/src/assets/emoji/53.gif b/im-ui/src/assets/emoji/53.gif index 56352dd..8140707 100644 Binary files a/im-ui/src/assets/emoji/53.gif and b/im-ui/src/assets/emoji/53.gif differ diff --git a/im-ui/src/assets/emoji/54.gif b/im-ui/src/assets/emoji/54.gif index b28d848..848b67b 100644 Binary files a/im-ui/src/assets/emoji/54.gif and b/im-ui/src/assets/emoji/54.gif differ diff --git a/im-ui/src/assets/emoji/55.gif b/im-ui/src/assets/emoji/55.gif index e18da84..ed8ddc8 100644 Binary files a/im-ui/src/assets/emoji/55.gif and b/im-ui/src/assets/emoji/55.gif differ diff --git a/im-ui/src/assets/emoji/56.gif b/im-ui/src/assets/emoji/56.gif index edf96f0..dfb3324 100644 Binary files a/im-ui/src/assets/emoji/56.gif and b/im-ui/src/assets/emoji/56.gif differ diff --git a/im-ui/src/assets/emoji/57.gif b/im-ui/src/assets/emoji/57.gif deleted file mode 100644 index 3f0e2b9..0000000 Binary files a/im-ui/src/assets/emoji/57.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/58.gif b/im-ui/src/assets/emoji/58.gif deleted file mode 100644 index 47b1aaa..0000000 Binary files a/im-ui/src/assets/emoji/58.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/59.gif b/im-ui/src/assets/emoji/59.gif deleted file mode 100644 index 918288b..0000000 Binary files a/im-ui/src/assets/emoji/59.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/6.gif b/im-ui/src/assets/emoji/6.gif index ceab122..82b354c 100644 Binary files a/im-ui/src/assets/emoji/6.gif and b/im-ui/src/assets/emoji/6.gif differ diff --git a/im-ui/src/assets/emoji/60.gif b/im-ui/src/assets/emoji/60.gif deleted file mode 100644 index 66d2113..0000000 Binary files a/im-ui/src/assets/emoji/60.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/61.gif b/im-ui/src/assets/emoji/61.gif deleted file mode 100644 index 034933e..0000000 Binary files a/im-ui/src/assets/emoji/61.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/62.gif b/im-ui/src/assets/emoji/62.gif deleted file mode 100644 index 8d5c4fd..0000000 Binary files a/im-ui/src/assets/emoji/62.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/63.gif b/im-ui/src/assets/emoji/63.gif deleted file mode 100644 index d58fcf6..0000000 Binary files a/im-ui/src/assets/emoji/63.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/64.gif b/im-ui/src/assets/emoji/64.gif deleted file mode 100644 index c4e00bd..0000000 Binary files a/im-ui/src/assets/emoji/64.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/65.gif b/im-ui/src/assets/emoji/65.gif deleted file mode 100644 index da23bfa..0000000 Binary files a/im-ui/src/assets/emoji/65.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/66.gif b/im-ui/src/assets/emoji/66.gif deleted file mode 100644 index 310ec65..0000000 Binary files a/im-ui/src/assets/emoji/66.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/67.gif b/im-ui/src/assets/emoji/67.gif deleted file mode 100644 index 51761ba..0000000 Binary files a/im-ui/src/assets/emoji/67.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/68.gif b/im-ui/src/assets/emoji/68.gif deleted file mode 100644 index 345cb43..0000000 Binary files a/im-ui/src/assets/emoji/68.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/69.gif b/im-ui/src/assets/emoji/69.gif deleted file mode 100644 index e0f28a0..0000000 Binary files a/im-ui/src/assets/emoji/69.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/7.gif b/im-ui/src/assets/emoji/7.gif index 2f45399..0b6ec27 100644 Binary files a/im-ui/src/assets/emoji/7.gif and b/im-ui/src/assets/emoji/7.gif differ diff --git a/im-ui/src/assets/emoji/70.gif b/im-ui/src/assets/emoji/70.gif deleted file mode 100644 index 24284cf..0000000 Binary files a/im-ui/src/assets/emoji/70.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/71.gif b/im-ui/src/assets/emoji/71.gif deleted file mode 100644 index a0ccf2e..0000000 Binary files a/im-ui/src/assets/emoji/71.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/72.gif b/im-ui/src/assets/emoji/72.gif deleted file mode 100644 index 7e113ee..0000000 Binary files a/im-ui/src/assets/emoji/72.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/73.gif b/im-ui/src/assets/emoji/73.gif deleted file mode 100644 index c0293c3..0000000 Binary files a/im-ui/src/assets/emoji/73.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/74.gif b/im-ui/src/assets/emoji/74.gif deleted file mode 100644 index 1c52bde..0000000 Binary files a/im-ui/src/assets/emoji/74.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/75.gif b/im-ui/src/assets/emoji/75.gif deleted file mode 100644 index 9cb9aa7..0000000 Binary files a/im-ui/src/assets/emoji/75.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/76.gif b/im-ui/src/assets/emoji/76.gif deleted file mode 100644 index 27019f8..0000000 Binary files a/im-ui/src/assets/emoji/76.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/77.gif b/im-ui/src/assets/emoji/77.gif deleted file mode 100644 index 8f882f5..0000000 Binary files a/im-ui/src/assets/emoji/77.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/78.gif b/im-ui/src/assets/emoji/78.gif deleted file mode 100644 index d0d0856..0000000 Binary files a/im-ui/src/assets/emoji/78.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/79.gif b/im-ui/src/assets/emoji/79.gif deleted file mode 100644 index 61652a7..0000000 Binary files a/im-ui/src/assets/emoji/79.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/8.gif b/im-ui/src/assets/emoji/8.gif index f6c8834..bf7bc14 100644 Binary files a/im-ui/src/assets/emoji/8.gif and b/im-ui/src/assets/emoji/8.gif differ diff --git a/im-ui/src/assets/emoji/80.gif b/im-ui/src/assets/emoji/80.gif deleted file mode 100644 index 9a77936..0000000 Binary files a/im-ui/src/assets/emoji/80.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/81.gif b/im-ui/src/assets/emoji/81.gif deleted file mode 100644 index 2329101..0000000 Binary files a/im-ui/src/assets/emoji/81.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/82.gif b/im-ui/src/assets/emoji/82.gif deleted file mode 100644 index 644748a..0000000 Binary files a/im-ui/src/assets/emoji/82.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/83.gif b/im-ui/src/assets/emoji/83.gif deleted file mode 100644 index fbf275b..0000000 Binary files a/im-ui/src/assets/emoji/83.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/84.gif b/im-ui/src/assets/emoji/84.gif deleted file mode 100644 index 076f0c6..0000000 Binary files a/im-ui/src/assets/emoji/84.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/85.gif b/im-ui/src/assets/emoji/85.gif deleted file mode 100644 index d254af4..0000000 Binary files a/im-ui/src/assets/emoji/85.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/86.gif b/im-ui/src/assets/emoji/86.gif deleted file mode 100644 index 8f09d33..0000000 Binary files a/im-ui/src/assets/emoji/86.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/87.gif b/im-ui/src/assets/emoji/87.gif deleted file mode 100644 index df70756..0000000 Binary files a/im-ui/src/assets/emoji/87.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/88.gif b/im-ui/src/assets/emoji/88.gif deleted file mode 100644 index 4d8b15e..0000000 Binary files a/im-ui/src/assets/emoji/88.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/89.gif b/im-ui/src/assets/emoji/89.gif deleted file mode 100644 index 05726dc..0000000 Binary files a/im-ui/src/assets/emoji/89.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/9.gif b/im-ui/src/assets/emoji/9.gif index c2d8450..6ea3f8c 100644 Binary files a/im-ui/src/assets/emoji/9.gif and b/im-ui/src/assets/emoji/9.gif differ diff --git a/im-ui/src/assets/emoji/90.gif b/im-ui/src/assets/emoji/90.gif deleted file mode 100644 index adaf20e..0000000 Binary files a/im-ui/src/assets/emoji/90.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/91.gif b/im-ui/src/assets/emoji/91.gif deleted file mode 100644 index 608d0ad..0000000 Binary files a/im-ui/src/assets/emoji/91.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/92.gif b/im-ui/src/assets/emoji/92.gif deleted file mode 100644 index b909e16..0000000 Binary files a/im-ui/src/assets/emoji/92.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/93.gif b/im-ui/src/assets/emoji/93.gif deleted file mode 100644 index 7f71a8c..0000000 Binary files a/im-ui/src/assets/emoji/93.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/94.gif b/im-ui/src/assets/emoji/94.gif deleted file mode 100644 index 4f26d7d..0000000 Binary files a/im-ui/src/assets/emoji/94.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/95.gif b/im-ui/src/assets/emoji/95.gif deleted file mode 100644 index 5ef6d38..0000000 Binary files a/im-ui/src/assets/emoji/95.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/96.gif b/im-ui/src/assets/emoji/96.gif deleted file mode 100644 index 2b709e1..0000000 Binary files a/im-ui/src/assets/emoji/96.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/97.gif b/im-ui/src/assets/emoji/97.gif deleted file mode 100644 index cf29be8..0000000 Binary files a/im-ui/src/assets/emoji/97.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/98.gif b/im-ui/src/assets/emoji/98.gif deleted file mode 100644 index c70e7d3..0000000 Binary files a/im-ui/src/assets/emoji/98.gif and /dev/null differ diff --git a/im-ui/src/assets/emoji/99.gif b/im-ui/src/assets/emoji/99.gif deleted file mode 100644 index 05c1863..0000000 Binary files a/im-ui/src/assets/emoji/99.gif and /dev/null differ diff --git a/im-ui/src/assets/image/online_app.png b/im-ui/src/assets/image/online_app.png new file mode 100644 index 0000000..173d415 Binary files /dev/null and b/im-ui/src/assets/image/online_app.png differ diff --git a/im-ui/src/assets/image/online_web.png b/im-ui/src/assets/image/online_web.png new file mode 100644 index 0000000..6e47078 Binary files /dev/null and b/im-ui/src/assets/image/online_web.png differ diff --git a/im-ui/src/components/chat/ChatBox.vue b/im-ui/src/components/chat/ChatBox.vue index 4918033..fe5b806 100644 --- a/im-ui/src/components/chat/ChatBox.vue +++ b/im-ui/src/components/chat/ChatBox.vue @@ -18,7 +18,7 @@ - +
@@ -40,9 +40,11 @@
- +
- 发送 + 发送
@@ -502,6 +504,8 @@ width: 100%; flex: 1; resize: none; + font-size: 16px; + color: black; background-color: #f8f8f8 !important; outline-color: rgba(83, 160, 231, 0.61); } diff --git a/im-ui/src/components/chat/ChatHistory.vue b/im-ui/src/components/chat/ChatHistory.vue index 2736b26..ba5e3d3 100644 --- a/im-ui/src/components/chat/ChatHistory.vue +++ b/im-ui/src/components/chat/ChatHistory.vue @@ -5,7 +5,7 @@
  • -
  • diff --git a/im-ui/src/components/chat/ChatItem.vue b/im-ui/src/components/chat/ChatItem.vue index b5726b8..4cdcc38 100644 --- a/im-ui/src/components/chat/ChatItem.vue +++ b/im-ui/src/components/chat/ChatItem.vue @@ -1,36 +1,53 @@ - + \ No newline at end of file diff --git a/im-ui/src/components/chat/ChatMessageItem.vue b/im-ui/src/components/chat/ChatMessageItem.vue index 72039ae..58a0f6e 100644 --- a/im-ui/src/components/chat/ChatMessageItem.vue +++ b/im-ui/src/components/chat/ChatMessageItem.vue @@ -1,60 +1,74 @@ - + \ No newline at end of file diff --git a/im-ui/src/components/chat/ChatPrivateVideo.vue b/im-ui/src/components/chat/ChatPrivateVideo.vue index 4660f59..524814c 100644 --- a/im-ui/src/components/chat/ChatPrivateVideo.vue +++ b/im-ui/src/components/chat/ChatPrivateVideo.vue @@ -5,8 +5,10 @@
    - + +
    diff --git a/im-ui/src/components/chat/ChatTime.vue b/im-ui/src/components/chat/ChatTime.vue deleted file mode 100644 index eae222a..0000000 --- a/im-ui/src/components/chat/ChatTime.vue +++ /dev/null @@ -1,43 +0,0 @@ - - - - - diff --git a/im-ui/src/components/chat/ChatVideoAcceptor.vue b/im-ui/src/components/chat/ChatVideoAcceptor.vue index 0796c70..8f809da 100644 --- a/im-ui/src/components/chat/ChatVideoAcceptor.vue +++ b/im-ui/src/components/chat/ChatVideoAcceptor.vue @@ -1,14 +1,14 @@ @@ -103,26 +103,78 @@ + \ No newline at end of file diff --git a/im-ui/src/components/common/HeadImage.vue b/im-ui/src/components/common/HeadImage.vue index 71e0827..72ea6e0 100644 --- a/im-ui/src/components/common/HeadImage.vue +++ b/im-ui/src/components/common/HeadImage.vue @@ -1,6 +1,9 @@ @@ -10,7 +13,11 @@ export default { name: "headImage", data() { - return {} + return { + colors:["#7dd24b","#c7515a","#db68ef","#15d29b","#85029b", + "#c9b455","#fb2609","#bda818","#af0831","#326eb6"] + + } }, props: { id:{ @@ -22,10 +29,19 @@ }, url: { type: String + }, + name:{ + type: String, + default: "?" + }, + online:{ + type: Boolean, + default:false } }, methods:{ showUserInfo(e){ + console.log(this.id) if(this.id && this.id>0){ this.$http({ url: `/user/find/${this.id}`, @@ -36,26 +52,54 @@ }) } } - } + }, + computed:{ + avatarImageStyle(){ + return `width:${this.size}px; height:${this.size}px;` + }, + avatarTextStyle(){ + return `width: ${this.size}px;height:${this.size}px; + color:${this.textColor};font-size:${this.size*0.6}px;` + }, + textColor(){ + let hash = 0; + for (var i = 0; i< this.name.length; i++) { + hash += this.name.charCodeAt(i); + } + return this.colors[hash%this.colors.length]; + } + } } diff --git a/im-ui/src/components/common/RightMenu.vue b/im-ui/src/components/common/RightMenu.vue index cf70666..f71f8ea 100644 --- a/im-ui/src/components/common/RightMenu.vue +++ b/im-ui/src/components/common/RightMenu.vue @@ -1,10 +1,12 @@