diff --git a/im-client/src/main/java/com/bx/imclient/task/AbstractPullMessageTask.java b/im-client/src/main/java/com/bx/imclient/task/AbstractPullMessageTask.java index 53b368f..a77c45f 100644 --- a/im-client/src/main/java/com/bx/imclient/task/AbstractPullMessageTask.java +++ b/im-client/src/main/java/com/bx/imclient/task/AbstractPullMessageTask.java @@ -5,8 +5,7 @@ import lombok.extern.slf4j.Slf4j; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; +import java.util.concurrent.*; @Slf4j public abstract class AbstractPullMessageTask { diff --git a/im-platform/src/main/java/com/bx/implatform/config/MvcConfig.java b/im-platform/src/main/java/com/bx/implatform/config/MvcConfig.java index 32a3777..4ebff3c 100644 --- a/im-platform/src/main/java/com/bx/implatform/config/MvcConfig.java +++ b/im-platform/src/main/java/com/bx/implatform/config/MvcConfig.java @@ -16,7 +16,7 @@ public class MvcConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { - registry.addInterceptor(XssInterceptor()) + registry.addInterceptor(xssInterceptor()) .addPathPatterns("/**"); registry.addInterceptor(authInterceptor()) .addPathPatterns("/**") @@ -30,7 +30,7 @@ public class MvcConfig implements WebMvcConfigurer { } @Bean - public XssInterceptor XssInterceptor() { + public XssInterceptor xssInterceptor() { return new XssInterceptor(); } diff --git a/im-platform/src/main/java/com/bx/implatform/service/IFriendService.java b/im-platform/src/main/java/com/bx/implatform/service/IFriendService.java index ec5b339..cfde61c 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/IFriendService.java +++ b/im-platform/src/main/java/com/bx/implatform/service/IFriendService.java @@ -11,7 +11,7 @@ public interface IFriendService extends IService { Boolean isFriend(Long userId1, Long userId2); - List findFriendByUserId(Long UserId); + List findFriendByUserId(Long userId); void addFriend(Long friendId); diff --git a/im-platform/src/main/java/com/bx/implatform/service/IGroupMemberService.java b/im-platform/src/main/java/com/bx/implatform/service/IGroupMemberService.java index f5a58c8..3611045 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/IGroupMemberService.java +++ b/im-platform/src/main/java/com/bx/implatform/service/IGroupMemberService.java @@ -18,7 +18,6 @@ public interface IGroupMemberService extends IService { List findUserIdsByGroupId(Long groupId); - boolean save(GroupMember member); boolean saveOrUpdateBatch(Long groupId,List members); diff --git a/im-platform/src/main/java/com/bx/implatform/service/IGroupService.java b/im-platform/src/main/java/com/bx/implatform/service/IGroupService.java index eeae9d5..78d1b14 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/IGroupService.java +++ b/im-platform/src/main/java/com/bx/implatform/service/IGroupService.java @@ -26,7 +26,7 @@ public interface IGroupService extends IService { void invite(GroupInviteVO vo); - Group GetById(Long groupId); + Group getById(Long groupId); GroupVO findById(Long groupId); diff --git a/im-platform/src/main/java/com/bx/implatform/service/impl/FriendServiceImpl.java b/im-platform/src/main/java/com/bx/implatform/service/impl/FriendServiceImpl.java index baf7fa5..c40cf10 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/impl/FriendServiceImpl.java +++ b/im-platform/src/main/java/com/bx/implatform/service/impl/FriendServiceImpl.java @@ -36,13 +36,13 @@ public class FriendServiceImpl extends ServiceImpl impleme /** * 查询用户的所有好友 * - * @param UserId 用户id + * @param userId 用户id * @return */ @Override - public List findFriendByUserId(Long UserId) { + public List findFriendByUserId(Long userId) { QueryWrapper queryWrapper = new QueryWrapper(); - queryWrapper.lambda().eq(Friend::getUserId,UserId); + queryWrapper.lambda().eq(Friend::getUserId,userId); List friends = this.list(queryWrapper); return friends; } diff --git a/im-platform/src/main/java/com/bx/implatform/service/impl/GroupMessageServiceImpl.java b/im-platform/src/main/java/com/bx/implatform/service/impl/GroupMessageServiceImpl.java index 90a5d1e..8666b6a 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/impl/GroupMessageServiceImpl.java +++ b/im-platform/src/main/java/com/bx/implatform/service/impl/GroupMessageServiceImpl.java @@ -75,7 +75,7 @@ public class GroupMessageServiceImpl extends ServiceImpluserId!=id).collect(Collectors.toList()); + userIds = userIds.stream().filter(id->userId.equals(id)).collect(Collectors.toList()); // 群发 GroupMessageInfo msgInfo = BeanUtils.copyProperties(msg, GroupMessageInfo.class); imClient.sendGroupMessage(userIds,msgInfo); 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 1391e4d..65e26ab 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 @@ -100,7 +100,7 @@ public class GroupServiceImpl extends ServiceImpl implements // 校验是不是群主,只有群主能改信息 Group group = this.getById(vo.getId()); // 群主有权修改群基本信息 - if(group.getOwnerId() == session.getUserId()){ + if(group.getOwnerId().equals(session.getUserId()) ){ group = BeanUtils.copyProperties(vo,Group.class); this.updateById(group); } @@ -129,7 +129,7 @@ public class GroupServiceImpl extends ServiceImpl implements public void deleteGroup(Long groupId) { UserSession session = SessionContext.getSession(); Group group = this.getById(groupId); - if(group.getOwnerId() != session.getUserId()){ + if(group.getOwnerId().equals(session.getUserId())){ throw new GlobalException(ResultCode.PROGRAM_ERROR,"只有群主才有权限解除群聊"); } // 逻辑删除群数据 @@ -151,7 +151,7 @@ public class GroupServiceImpl extends ServiceImpl implements public void quitGroup(Long groupId) { Long userId = SessionContext.getSession().getUserId(); Group group = this.getById(groupId); - if(group.getOwnerId() == userId){ + if(group.getOwnerId().equals(userId)){ throw new GlobalException(ResultCode.PROGRAM_ERROR,"您是群主,不可退出群聊"); } // 删除群聊成员 @@ -171,10 +171,10 @@ public class GroupServiceImpl extends ServiceImpl implements public void kickGroup(Long groupId, Long userId) { UserSession session = SessionContext.getSession(); Group group = this.getById(groupId); - if(group.getOwnerId() != session.getUserId()){ + if(group.getOwnerId().equals(session.getUserId()) ){ throw new GlobalException(ResultCode.PROGRAM_ERROR,"您不是群主,没有权限踢人"); } - if(userId == session.getUserId()){ + if(userId.equals(session.getUserId())){ throw new GlobalException(ResultCode.PROGRAM_ERROR,"亲,不能自己踢自己哟"); } // 删除群聊成员 @@ -204,7 +204,7 @@ public class GroupServiceImpl extends ServiceImpl implements */ @Cacheable(value = "#groupId") @Override - public Group GetById(Long groupId){ + public Group getById(Long groupId){ Group group = super.getById(groupId); if(group == null){ throw new GlobalException(ResultCode.PROGRAM_ERROR,"群组不存在"); @@ -276,7 +276,7 @@ public class GroupServiceImpl extends ServiceImpl implements // 批量保存成员数据 List groupMembers = friendsList.stream() .map(f -> { - Optional optional = members.stream().filter(m->m.getUserId()==f.getFriendId()).findFirst(); + Optional optional = members.stream().filter(m->m.getUserId().equals(f.getFriendId())).findFirst(); GroupMember groupMember = optional.isPresent()? optional.get():new GroupMember(); groupMember.setGroupId(vo.getGroupId()); groupMember.setUserId(f.getFriendId()); 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 fa95ada..23d3a55 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 @@ -36,8 +36,7 @@ public class PrivateMessageServiceImpl extends ServiceImpl redisTemplate; + @Autowired private IMClient imClient; /** @@ -61,7 +60,7 @@ public class PrivateMessageServiceImpl extends ServiceImpl sendMessage = new IMPrivateMessage(); sendMessage.setSendId(msgInfo.getSendId()); sendMessage.setRecvId(msgInfo.getRecvId()); sendMessage.setSendTerminal(session.getTerminal()); @@ -99,7 +98,7 @@ public class PrivateMessageServiceImpl extends ServiceImpl sendMessage = new IMPrivateMessage(); sendMessage.setSendId(msgInfo.getSendId()); sendMessage.setRecvId(msgInfo.getRecvId()); sendMessage.setSendTerminal(session.getTerminal()); @@ -135,10 +134,7 @@ public class PrivateMessageServiceImpl extends ServiceImpl messages = this.list(wrapper); - List messageInfos = messages.stream().map(m -> { - PrivateMessageInfo info = BeanUtils.copyProperties(m, PrivateMessageInfo.class); - return info; - }).collect(Collectors.toList()); + List messageInfos = messages.stream().map(m -> BeanUtils.copyProperties(m, PrivateMessageInfo.class)).collect(Collectors.toList()); log.info("拉取聊天记录,用户id:{},好友id:{},数量:{}", userId, friendId, messageInfos.size()); return messageInfos; } @@ -146,7 +142,6 @@ public class PrivateMessageServiceImpl extends ServiceImpl messages = this.list(queryWrapper); // 上传至redis,等待推送 if (!messages.isEmpty()) { - List messageInfos = messages.stream().map(m -> { - PrivateMessageInfo msgInfo = BeanUtils.copyProperties(m, PrivateMessageInfo.class); - return msgInfo; - }).collect(Collectors.toList()); + List messageInfos = messages.stream().map(m -> BeanUtils.copyProperties(m, PrivateMessageInfo.class)).collect(Collectors.toList()); // 推送消息 IMPrivateMessage sendMessage = new IMPrivateMessage(); sendMessage.setRecvId(userId); diff --git a/im-platform/src/main/java/com/bx/implatform/util/DateTimeUtils.java b/im-platform/src/main/java/com/bx/implatform/util/DateTimeUtils.java index 4cad011..83c36a5 100644 --- a/im-platform/src/main/java/com/bx/implatform/util/DateTimeUtils.java +++ b/im-platform/src/main/java/com/bx/implatform/util/DateTimeUtils.java @@ -25,24 +25,8 @@ import java.util.*; public class DateTimeUtils extends DateUtils { public static final String FULL_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss"; - public static final String FULL_DATE_FORMAT_CN = "yyyy年MM月dd日 HH时mm分ss秒"; public static final String PART_DATE_FORMAT = "yyyy-MM-dd"; - public static final String PART_DATE_FORMAT_TWO = "yyyy/MM/dd"; - public static final String PART_DATE_FORMAT_CN = "yyyy年MM月dd日"; public static final String PARTDATEFORMAT = "yyyyMMdd"; - public static final String YEAR_DATE_FORMAT = "yyyy"; - public static final String MONTH_DATE_FORMAT = "MM"; - public static final String DAY_DATE_FORMAT = "dd"; - public static final String WEEK_DATE_FORMAT = "week"; - - /** - * 星座 - */ - private final static int[] dayArr = new int[]{20, 19, 21, 20, 21, 22, 23, - 23, 23, 24, 23, 22}; - private final static String[] constellationArr = new String[]{"摩羯座", - "水瓶座", "双鱼座", "白羊座", "金牛座", "双子座", "巨蟹座", "狮子座", "处女座", "天秤座", - "天蝎座", "射手座", "摩羯座"}; /** @@ -59,1070 +43,5 @@ public class DateTimeUtils extends DateUtils { return sdf.format(date); } - - /** - * 比较日期大小 - * - * @param dateX - * @param dateY - * @return x < y return [-1]; - * x = y return [0] ; - * x > y return [1] ; - */ - public static int compareDate(Date dateX, Date dateY) { - return dateX.compareTo(dateY); - } - - - /** - * 将日期字符串转换为日期格式类型 - * - * @param xDate - * @param xFormat 为NULL则转换如:2012-06-25 - * @return - */ - public static Date parseString2Date(String xDate, String xFormat) { - while (!isNotDate(xDate, xFormat)) { - xFormat = StringUtils.isEmpty(xFormat) == true ? PART_DATE_FORMAT : xFormat; - SimpleDateFormat sdf = new SimpleDateFormat(xFormat); - Date date = null; - try { - date = sdf.parse(xDate); - } catch (ParseException e) { - e.printStackTrace(); - return null; - } - return date; - } - return null; - } - - - /** - * 判断需要转换类型的日期字符串是否符合格式要求 - * - * @param xDate - * @return - */ - public static boolean isNotDate(String xDate, String format) { - SimpleDateFormat sdf; - try { - if (StringUtils.isEmpty(format)) { - sdf = new SimpleDateFormat(PART_DATE_FORMAT); - } else { - sdf = new SimpleDateFormat(format); - } - if (StringUtils.isEmpty(xDate)) { - return true; - } - sdf.parse(xDate); - return false; - } catch (ParseException e) { - e.printStackTrace(); - return true; - } - } - - public static boolean isDate(String xDate) { - return !isDate(xDate); - } - - - /** - * 获取俩个日期之间相差多少天 - * - * @param dateX - * @param dateY - * @return - */ - public static int getDiffDays(Date dateX, Date dateY) { - if ((dateX == null) || (dateY == null)) { - return 0; - } - - long dayX = dateX.getTime(); - long dayY = dateY.getTime(); - - return dayX > dayY ? (int) ((dayX - dayY) / (60 * 60 * 1000 * 24)) : (int) ((dayY - dayX) / (60 * 60 * 1000 * 24)); - } - - /** - * 获取俩个日期之间相差多少小时 - * - * @param dateX - * @param dateY - * @return - */ - public static int getDiffHours(Date dateX, Date dateY) { - if ((dateX == null) || (dateY == null)) { - return 0; - } - - long dayX = dateX.getTime(); - long dayY = dateY.getTime(); - - return dayX > dayY ? (int) ((dayX - dayY) / (60 * 60 * 1000)) : (int) ((dayY - dayX) / (60 * 60 * 1000)); - } - - /** - * 获取俩个日期之间相差多少小时 - * - * @param dateX - * @param dateY - * @return - */ - public static int getDiffMinute(Date dateX, Date dateY) { - if ((dateX == null) || (dateY == null)) { - return 0; - } - - long dayX = dateX.getTime(); - long dayY = dateY.getTime(); - - return dayX > dayY ? (int) ((dayX - dayY) / (60 * 1000)) : (int) ((dayY - dayX) / (60 * 1000)); - } - - /** - * 获取传值日期之后几天的日期并转换为字符串类型 - * - * @param date 需要转换的日期 date 可以为NULL 此条件下则获取当前日期 - * @param after 天数 - * @param xFormat 转换字符串类型 (可以为NULL) - * @return - */ - public static String getAfterCountDate(Date date, int after, String xFormat) { - date = date == null ? new Date() : date; - xFormat = StringUtils.isNotEmpty(xFormat) ? xFormat : PART_DATE_FORMAT; - Calendar calendar = Calendar.getInstance(); - calendar.setTime(date); - calendar.add(Calendar.DAY_OF_MONTH, after); - return getFormatDate(calendar.getTime(), xFormat); - } - - /** - * 获取传值日期之前几天的日期并转换为字符串类型 - * - * @param date 需要转换的日期 date 可以为NULL 此条件下则获取当前日期 - * @param xFormat 转换字符串类型 (可以为NULL) - * @return - */ - public static String getBeforeCountDate(Date date, int before, String xFormat) { - date = date == null ? new Date() : date; - xFormat = StringUtils.isNotEmpty(xFormat) == true ? xFormat : PART_DATE_FORMAT; - Calendar calendar = Calendar.getInstance(); - calendar.setTime(date); - calendar.add(Calendar.DAY_OF_MONTH, -before); - return getFormatDate(calendar.getTime(), xFormat); - } - - - /** - * 获取日期的参数 如:年 , 月 , 日 , 星期几 - * - * @param xDate 日期 可以为日期格式,可以是字符串格式; 为NULL或者其他格式时都判定为当前日期 - * @param xFormat 年 yyyy 月 MM 日 dd 星期 week ;其他条件下都返回0 - */ - public static int getDateTimeParam(Object xDate, String xFormat) { - xDate = xDate == null ? new Date() : xDate; - Date date = null; - if (xDate instanceof String) { - date = parseString2Date(xDate.toString(), null); - } else if (xDate instanceof Date) { - date = (Date) xDate; - } else { - date = new Date(); - } - date = date == null ? new Date() : date; - if (StringUtils.isNotEmpty(xFormat) - && (xFormat.equals(YEAR_DATE_FORMAT) - || xFormat.equals(MONTH_DATE_FORMAT) - || xFormat.equals(DAY_DATE_FORMAT))) { - return Integer.parseInt(getFormatDate(date, xFormat)); - } else if (StringUtils.isNotEmpty(xFormat) - && (WEEK_DATE_FORMAT.equals(xFormat))) { - Calendar cal = Calendar.getInstance(); - cal.setTime(date); - int week = cal.get(Calendar.DAY_OF_WEEK) - 1 == 0 ? - 7 : cal.get(Calendar.DAY_OF_WEEK) - 1; - return week; - } else { - return 0; - } - } - - - /** - * 日期格式转换为时间戳 - * - * @param time - * @param format - * @return - */ - public static Long getLongTime(String time, String format) { - SimpleDateFormat sdf = new SimpleDateFormat(format); - Date date = null; - try { - date = sdf.parse(time); - return (date.getTime() / 1000); - } catch (ParseException e) { - e.printStackTrace(); - } - return null; - } - - - /** - * 获取星期字符串 - * - * @param xDate - * @return - */ - public static String getWeekString(Object xDate) { - int week = getDateTimeParam(xDate, WEEK_DATE_FORMAT); - switch (week) { - case 1: - return "星期一"; - case 2: - return "星期二"; - case 3: - return "星期三"; - case 4: - return "星期四"; - case 5: - return "星期五"; - case 6: - return "星期六"; - case 7: - return "星期日"; - default: - return ""; - } - } - - /** - * 获得十位时间 - */ - public static Long getTenBitTimestamp() { - return System.currentTimeMillis() / 1000; - } - - /** - * 获得某天的结束时间 - */ - public static Date getDateEnd(Date date) { - return new Date(date.getTime() + (86400 - 1) * 1000); - } - - /** - * 日期格式转换为毫秒 - * - * @param time - * @param format - * @return - */ - public static Long getLongDateTime(String time, String format) { - SimpleDateFormat sdf = new SimpleDateFormat(format); - Date date = null; - try { - date = sdf.parse(time); - return date.getTime(); - } catch (ParseException e) { - e.printStackTrace(); - } - return null; - } - - /** - * 获取某天开始时间戳_10位 - */ - public static Long getStartTimestamp(Date date) { - - Calendar calendar = Calendar.getInstance(); - date = date == null ? new Date() : date; - calendar.setTime(date); - - calendar.set(Calendar.HOUR_OF_DAY, 0); - calendar.set(Calendar.MINUTE, 0); - calendar.set(Calendar.SECOND, 0); - calendar.set(Calendar.MILLISECOND, 0); - - return calendar.getTime().getTime() / 1000; - } - - /** - * 获取某天结束时间戳_10位 - */ - public static Long getEndTimestamp(Date date) { - - Calendar calendar = Calendar.getInstance(); - date = date == null ? new Date() : date; - calendar.setTime(date); - - calendar.set(Calendar.HOUR_OF_DAY, 23); - calendar.set(Calendar.MINUTE, 59); - calendar.set(Calendar.SECOND, 59); - calendar.set(Calendar.MILLISECOND, 999); - - return calendar.getTime().getTime() / 1000; - } - - /** - * 获取昨天日期 - * - * @param date - * @return - */ - public static Date getYesterday(Date date) { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(date); - calendar.add(Calendar.DAY_OF_MONTH, -1); - - calendar.set(Calendar.HOUR_OF_DAY, 9); - calendar.set(Calendar.MINUTE, 59); - calendar.set(Calendar.SECOND, 59); - calendar.set(Calendar.MILLISECOND, 999); - date = calendar.getTime(); - return date; - } - - /** - * 获取明天时间(参数时间+1天) - * - * @param date - * @return - */ - public static Date getTomorrowday(Date date) { - Calendar c = Calendar.getInstance(); - c.setTime(date); - c.add(Calendar.DAY_OF_YEAR, +1); - return c.getTime(); - } - - /* 10位int型的时间戳转换为String(yyyy-MM-dd HH:mm:ss) - * - * @param time - * @return - */ - public static String timestampToString(Integer time, String format) { - // int转long时,先进行转型再进行计算,否则会是计算结束后在转型 - long temp = (long) time * 1000; - Timestamp ts = new Timestamp(temp); - String tsStr = ""; - DateFormat dateFormat = new SimpleDateFormat(format); - try { - // 方法一 - tsStr = dateFormat.format(ts); - } catch (Exception e) { - e.printStackTrace(); - } - return tsStr; - } - - /** - * 获取某天开始时间 - */ - public static Date getStartTime(Date date) { - - Calendar calendar = Calendar.getInstance(); - date = date == null ? new Date() : date; - calendar.setTime(date); - - calendar.set(Calendar.HOUR_OF_DAY, 0); - calendar.set(Calendar.MINUTE, 0); - calendar.set(Calendar.SECOND, 0); - calendar.set(Calendar.MILLISECOND, 0); - - return calendar.getTime(); - } - - /** - * 获取某天结束时间 - */ - public static Date getEndTime(Date date) { - - Calendar calendar = Calendar.getInstance(); - date = date == null ? new Date() : date; - calendar.setTime(date); - - calendar.set(Calendar.HOUR_OF_DAY, 23); - calendar.set(Calendar.MINUTE, 59); - calendar.set(Calendar.SECOND, 59); - calendar.set(Calendar.MILLISECOND, 999); - - return calendar.getTime(); - } - - /** - * Date类型转换为10位时间戳 - * - * @param time - * @return - */ - public static Integer DateToTimestamp(Date time) { - Timestamp ts = new Timestamp(time.getTime()); - - return (int) ((ts.getTime()) / 1000); - } - - /** - * 获取当前时间之前或之后几分钟 - * - * @param minute - * @return - */ - public static String getMinuteToString(int minute, Date time) { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(time); - calendar.add(Calendar.MINUTE, minute); - return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime()); - } - - /** - * 获取当前时间之前或之后几分钟 - * - * @param minute - * @return - */ - public static Date getMinuteToTime(int minute, Date time) { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(time); - calendar.add(Calendar.MINUTE, minute); - return calendar.getTime(); - } - - /** - * @return java.lang.String - * @Author 陈树森 - * @Description 将数据库里的timestamp转为指定日期数据格式字符串 - * @Date 16:11 2018/11/26 0026 - * @Param [timestamp, format] - **/ - public static String timestampToString(Timestamp timestamp, String format) { - return new SimpleDateFormat(format).format(timestamp); - } - - /** - * @return java.lang.String - * @Author 陈树森 - * @Description 将数据库里的timestamp转为默认格式 - * @Date 16:12 2018/11/26 0026 - * @Param [timestamp] - **/ - public static String timestampDefaultFormat(Timestamp timestamp) { - if (timestamp == null) { - return null; - } - return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(timestamp); - } - - /** - * @return - * @Author 陈树森 - * @Description date默认格式yyyy-MM-dd HH:mm:ss - * @Date 11:48 2018/12/26 0026 - * @Param [date] - **/ - public static String dateDefaultFormat(Date date) { - if (date == null) { - return null; - } - return getFormatDate(date, "yyyy-MM-dd HH:mm:ss"); - } - - /** - * @return date - * @Description 获取当前时间N天后的时间 - * @Date 2019/01/09 13:58:00 - * @Param [day] - */ - public static Date getTimeByDay(int day) { - return getTimeByDay(new Date(), day); - } - - /** - * 获取指定时间N天后的时间 - * - * @param d1 - * @param day - * @return - */ - public static Date getTimeByDay(Date d1, int day) { - long temp1 = d1.getTime(); - temp1 = temp1 + day * 0x5265c00L; - return (new Date(temp1)); - } - - - /** - * 两个日期相差的分钟数 - * - * @param date1 - * @param date2 - * @return - */ - public static long getMinuteSpace(Date date1, Date date2) { - Calendar calendar1 = Calendar.getInstance(); - Calendar calendar2 = Calendar.getInstance(); - calendar1.setTime(date1); - calendar2.setTime(date2); - long milliseconds1 = calendar1.getTimeInMillis(); - long milliseconds2 = calendar2.getTimeInMillis(); - long diff = milliseconds2 - milliseconds1; - long diffDays = diff / (60 * 1000); - return Math.abs(diffDays); - } - - /** - * 获取当前时间的小时 - * - * @param date - * @return - */ - public static Integer getHourOfDate(Date date) { - Calendar cal = Calendar.getInstance(); - cal.setTime(date); - return cal.get(Calendar.HOUR_OF_DAY); - } - - /** - * 获取指定时间,在每月的几号 - * - * @param date - * @return - */ - public static Integer getDayOfMonth(Date date) { - Calendar cal = Calendar.getInstance(); - cal.setTime(date); - return cal.get(Calendar.DAY_OF_MONTH); - } - - /** - * 两个日期相差的天数 - * - * @param date1 - * @param date2 - * @return - */ - public static long getDateSpace(Date date1, Date date2) { - Calendar calendar1 = Calendar.getInstance(); - Calendar calendar2 = Calendar.getInstance(); - calendar1.setTime(date1); - calendar2.setTime(date2); - long milliseconds1 = calendar1.getTimeInMillis(); - long milliseconds2 = calendar2.getTimeInMillis(); - long diff = milliseconds2 - milliseconds1; - long diffDays = diff / (24 * 60 * 60 * 1000); - return Math.abs(diffDays); - } - - /** - * 获取今天还剩下多少秒 - * - * @return - */ - public static int getMiao(int num) { - Calendar curDate = Calendar.getInstance(); - //获取当前时间的第二天早上num点 - Calendar tommorowDate = new GregorianCalendar(curDate.get(Calendar.YEAR), curDate.get(Calendar.MONTH), curDate.get(Calendar.DATE) + 1, num, 0, 0); - return (int) (tommorowDate.getTimeInMillis() - curDate.getTimeInMillis()) / 1000; - } - - /** - * 时间相差多少秒 - */ - public static long secondsDifferen(Date d1, Date d2) { - long temp1 = d1.getTime(); - long temp2 = d2.getTime(); - return (long) ((temp2 - temp1) / 1000); - } - - /** - * 多少月后的时间 - */ - public static Date getTimeByMonth(int month) { - return getTimeByMonth(new Date(), month); - } - - public static Date getTimeByMonth(Date m1, int month) { - Calendar c = Calendar.getInstance(); - c.setTime(m1); - c.add(Calendar.MONTH, month); - Date m = c.getTime(); - return m; - } - - /** - * 天数转换为秒数 - */ - public static int dayConvertSecond(int day) { - //一天的秒数 - int secondOfDay = 60 * 60 * 24; - //计算N天的秒数 - return day * secondOfDay; - } - - /** - * 检查年月日是否合法 - * - * @param ymd - * @return - */ - public static boolean checkYearMonthDay(String ymd) { - if (ymd == null || ymd.length() == 0) { - return false; - } - String s = ymd.replaceAll("[/\\- ]", "/"); - SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd"); - try { - Date date = format.parse(s); - return true; - } catch (ParseException e) { - return false; - } - } - - - /** - * Java通过生日计算星座 生日格式必须为 yyyy-MM-dd - * - * @param birthday - * @return - */ - public static String getConstellation(String birthday) { - int month = 0; - int day = 0; - Date birthdayDateTime = DateTimeUtils.parseString2Date(birthday, "yyyy-MM-dd"); - if (null != birthdayDateTime) { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(birthdayDateTime); - month = calendar.get(Calendar.MONTH) + 1; - day = calendar.get(Calendar.DAY_OF_MONTH); - } - return day < dayArr[month - 1] ? constellationArr[month - 1] - : constellationArr[month]; - } - - /** - * 通过生日计算属相 - * - * @param year - * @return - */ - public static String getYear(int year) { - if (year < 1900) { - return "未知"; - } - int start = 1900; - String[] years = new String[]{"鼠", "牛", "虎", "兔", "龙", "蛇", "马", "羊", - "猴", "鸡", "狗", "猪"}; - return years[(year - start) % years.length]; - } - - /** - * 时分秒判断大小 - * - * @param s1 时间比较 - * @param s2 - * @return boolean true 大于 false 小于 - */ - public static boolean compareVehicle(String s1, String s2) { - boolean flag = true; - SimpleDateFormat sf = new SimpleDateFormat("HH:mm"); - try { - Date date1 = sf.parse(s1); - Date date2 = sf.parse(s2); - if (date1.getTime() > date2.getTime()) { - flag = true; - } else { - flag = false; - } - } catch (ParseException e) { - e.printStackTrace(); - } - return flag; - } - - /** - * 获得某天最大时间 2018-03-20 23:59:59 - * - * @param date - * @return - */ - public static String getEndOfDay(Date date) { - Calendar calendarEnd = Calendar.getInstance(); - calendarEnd.setTime(date); - calendarEnd.set(Calendar.HOUR_OF_DAY, 23); - calendarEnd.set(Calendar.MINUTE, 59); - calendarEnd.set(Calendar.SECOND, 59); - //防止mysql自动加一秒,毫秒设为0 - calendarEnd.set(Calendar.MILLISECOND, 0); - - return dateDefaultFormat(calendarEnd.getTime()); - } - - /** - * 获得某天最小时间 2018-03-20 00:00:00 - * - * @param date - * @return - */ - public static String getFirstOfDay(Date date) { - Calendar calendarStart = Calendar.getInstance(); - calendarStart.setTime(date); - calendarStart.set(Calendar.HOUR_OF_DAY, 0); - calendarStart.set(Calendar.MINUTE, 0); - calendarStart.set(Calendar.SECOND, 0); - calendarStart.set(Calendar.MILLISECOND, 0); - return dateDefaultFormat(calendarStart.getTime()); - } - - /** - * 两个时间相差距离多少天多少小时多少分多少秒 - * - * @param str1 时间参数 1 格式:1990-01-01 12:00:00 - * @param str2 时间参数 2 格式:2009-01-01 12:00:00 - * @return long[] 返回值为:{天, 时, 分, 秒} - */ - public static long[] getDistanceTimes(Date str1, Date str2) { - DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - Date one = str1; - Date two = str2; - long day = 0; - long hour = 0; - long min = 0; - long sec = 0; - long time1 = one.getTime(); - long time2 = two.getTime(); - long diff; - if (time1 < time2) { - diff = time2 - time1; - } else { - diff = time1 - time2; - } - day = diff / (24 * 60 * 60 * 1000); - hour = (diff / (60 * 60 * 1000) - day * 24); - min = ((diff / (60 * 1000)) - day * 24 * 60 - hour * 60); - sec = (diff / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60); - long[] times = {day, hour, min, sec}; - return times; - } - - /** - * 获取多少秒之后的日期 - * - * @param date - * @param second - * @return - */ - public static Date getLastDateBySecond(Date date, Integer second) { - SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//24小时制 - //SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");//12小时制 - if (date == null) { - return null; - } - Calendar cal = Calendar.getInstance(); - cal.setTime(date); - cal.add(Calendar.SECOND, second);//24小时制 - date = cal.getTime(); - cal = null; - return date; - } - - /** - * 根据年龄获取年份 - * - * @param age - * @return - */ - public static String getCalculateAge(int age) { - String toDay = DateTimeUtils.getFormatDate(new Date(), DateTimeUtils.YEAR_DATE_FORMAT); - if (age > Integer.valueOf(toDay)) { - return null; - } - Integer year = Integer.valueOf(toDay) - age; - return year.toString(); - } - - /** - * 获取N天前的字符串格式日期 - * - * @param format 如:yyyy-MM-dd - * @param nDay - * @return - */ - public static String getNDayAgoByDay(String format, Integer nDay) { - Calendar calendar = Calendar.getInstance(); - SimpleDateFormat sdf = new SimpleDateFormat(format); - calendar.add(Calendar.DATE, nDay); - String ndaysAgo = sdf.format(calendar.getTime()); - return ndaysAgo; - } - - /** - * 获取时间差,不考虑时分秒 - * - * @param dateBefore - * @param dateAfter - * @return int 1、昨天 2、近7天 3、近15天 4、近30天 - */ - public static Integer getTimeScope(Date dateBefore, Date dateAfter) { - int daysDifferent = compareDays(dateBefore, dateAfter);//1、昨天 2、近7天 3、近15天 4、近30天 - if (daysDifferent == 1) { - return 1; - } else if (daysDifferent >= 2 && daysDifferent <= 7) { - return 2; - } else if (daysDifferent >= 8 && daysDifferent <= 15) { - return 3; - } - return 4; - } - - public static int compareDays(Date datebefore, Date dateAfter) { - Calendar calendar1 = Calendar.getInstance(); - Calendar calendar2 = Calendar.getInstance(); - calendar1.setTime(datebefore); - calendar2.setTime(dateAfter); - int day1 = calendar1.get(Calendar.DAY_OF_YEAR); - int day2 = calendar2.get(Calendar.DAY_OF_YEAR); - int year1 = calendar1.get(Calendar.YEAR); - int year2 = calendar2.get(Calendar.YEAR); - if (year1 > year2) { - int tempyear = year1; - int tempday = day1; - day1 = day2; - day2 = tempday; - year1 = year2; - year2 = tempyear; - } - if (year1 == year2) { - return day2 - day1; - } else { - int DayCount = 0; - for (int i = year1; i < year2; i++) { - if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) { - DayCount += 366; - } else { - DayCount += 365; - } - } - return DayCount + (day2 - day1); - } - } - - public static Date asDate(LocalDateTime localDateTime) { - return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant()); - } - - /** - * 小于10 追加0 - * - * @param obj - * @return - */ - public static String appendZero(Integer obj) { - if (obj < 10) { - return '0' + String.valueOf(obj); - } else { - return String.valueOf(obj); - } - } - - /* - * 功能描述:
- * 获取时间与当前时间相差分钟数 - * @param: time - * @Return: int - * @Author: 97342 - * @Date: 2020/8/22 12:40 - */ - public static int getMinuteByNow(Date time) throws Exception { - Date date = new Date(); - long millsecond = date.getTime() - time.getTime(); - if (millsecond < 0) { - throw new Exception("时间超前异常"); - } - int minute = (int) millsecond / 60000; - return minute; - } - - /* - * 功能描述:
- * 时间戳转LocalDateTime - * @param: time - * @Return: java.time.LocalDateTime - * @Author: 97342 - * @Date: 2020/8/27 16:17 - */ - public static LocalDateTime longToLocalDateTime(Long time) { - LocalDateTime localDateTime = new Date(time).toInstant().atOffset(ZoneOffset.of("+08:00")).toLocalDateTime(); - return localDateTime; - } - - /** - * 获取 一天的开始时间 - * - * @param localDateTime - * @return java.time.LocalDateTime - * @author BNMZY - */ - public static LocalDateTime getTimeBegin(LocalDateTime localDateTime) { - String format = DateUtil.formatLocalDateTime(localDateTime); - Date date = DateUtil.parse(format); - DateTime dateTime = DateUtil.beginOfDay(date); - return DateUtil.toLocalDateTime(dateTime); - } - - /** - * 获取 一天结束的时间 - * - * @param localDateTime - * @return java.time.LocalDateTime - * @author BNMZY - */ - public static LocalDateTime getTimeEnd(LocalDateTime localDateTime) { - String format = DateUtil.formatLocalDateTime(localDateTime); - Date date = DateUtil.parse(format); - DateTime dateTime = DateUtil.endOfDay(date); - return DateUtil.toLocalDateTime(dateTime); - } - - /** - * 指定日期所在月的第一天 - * - * @param localDateTime - * @return - */ - public static LocalDateTime getMonthStart(LocalDateTime localDateTime) { - String format = DateUtil.formatLocalDateTime(localDateTime); - Date date = DateUtil.parse(format); - DateTime dateTime = DateUtil.beginOfMonth(date); - return DateUtil.toLocalDateTime(dateTime); - } - - /** - * 功能描述:
- * LocalDateTime 转String 格式 yyyy-MM-dd HH:mm:ss - * - * @param: time - * @Return: java.lang.String - * @Author: 97342 - * @Date: 2020/9/21 15:11 - */ - public static String LocalDateTimeToString(LocalDateTime time) { - - String format = time.format(DateTimeFormatter.ofPattern(FULL_DATE_FORMAT)); - return format; - - } - - /** - * 获取上周一的日期 - * - * @param localDateTime - * @return - */ - public static LocalDateTime getLastWeekMonday(LocalDateTime localDateTime) { - String format = DateUtil.formatLocalDateTime(localDateTime); - Date date = DateUtil.parse(format); - Calendar cal = Calendar.getInstance(); - cal.setTime(date); - cal.add(Calendar.DAY_OF_WEEK, -7); - date = cal.getTime(); - DateTime dateTime = DateUtil.beginOfWeek(date); - return DateUtil.toLocalDateTime(dateTime); - } - - /** - * 获取本周一的日期 - * - * @param localDateTime - * @return - */ - public static LocalDateTime getThisWeekMonday(LocalDateTime localDateTime) { - String format = DateUtil.formatLocalDateTime(localDateTime); - Date date = DateUtil.parse(format); - DateTime dateTime = DateUtil.beginOfWeek(date); - return DateUtil.toLocalDateTime(dateTime); - } - - /** - * 获取上周最后一天的日期 - * - * @param localDateTime - * @return - */ - public static LocalDateTime getLastWeekSunday(LocalDateTime localDateTime) { - String format = DateUtil.formatLocalDateTime(localDateTime); - Date date = DateUtil.parse(format); - Calendar cal = Calendar.getInstance(); - cal.setTime(date); - cal.add(Calendar.DAY_OF_WEEK, -7); - date = cal.getTime(); - DateTime dateTime = DateUtil.endOfWeek(date); - return DateUtil.toLocalDateTime(dateTime); - } - - /** - * 获取本月第一天的日期 - * - * @return - */ - public static LocalDateTime getFirstDayOfMonth(LocalDateTime localDateTime) { - String format = DateUtil.formatLocalDateTime(localDateTime); - Date date = DateUtil.parse(format); - DateTime dateTime = DateUtil.beginOfMonth(date); - return DateUtil.toLocalDateTime(dateTime); - } - - /** - * 获取上月第一天的日期 - * - * @return - */ - public static LocalDateTime getFirstDayLastMonth(LocalDateTime localDateTime) { - String format = DateUtil.formatLocalDateTime(localDateTime); - Date date = DateUtil.parse(format); - Calendar cal = Calendar.getInstance(); - cal.setTime(date); - cal.add(Calendar.MONTH, -1); - date = cal.getTime(); - DateTime dateTime = DateUtil.beginOfMonth(date); - return DateUtil.toLocalDateTime(dateTime); - } - - /** - * 获取上月最后一天的日期 - * - * @return - */ - public static LocalDateTime getLastDayLastMonth(LocalDateTime localDateTime) { - String format = DateUtil.formatLocalDateTime(localDateTime); - Date date = DateUtil.parse(format); - Calendar cal = Calendar.getInstance(); - cal.setTime(date); - cal.add(Calendar.MONTH, -1); - date = cal.getTime(); - DateTime dateTime = DateUtil.endOfMonth(date); - return DateUtil.toLocalDateTime(dateTime); - } - - /** - * - * @param startDay 开始日期 - * @param endDay 结束日期 - * @return 返回包含开始结束日期的集合 - */ - public static List getDays(LocalDate startDay, LocalDate endDay){ - List days = new ArrayList<>(); - LocalDate start= ObjectUtil.clone(startDay); - LocalDate end= ObjectUtil.clone(endDay); - days.add(start); - while (start.isBefore(end)){ - start=start.plusDays(1L); - days.add(start); - } - Collections.reverse(days); - return days; - } - + } \ No newline at end of file diff --git a/im-server/src/main/java/com/bx/imserver/IMServerApp.java b/im-server/src/main/java/com/bx/imserver/IMServerApp.java index 78574aa..889e20a 100644 --- a/im-server/src/main/java/com/bx/imserver/IMServerApp.java +++ b/im-server/src/main/java/com/bx/imserver/IMServerApp.java @@ -13,14 +13,11 @@ import org.springframework.scheduling.annotation.EnableScheduling; @EnableScheduling @ComponentScan(basePackages={"com.bx"}) @SpringBootApplication -public class IMServerApp implements CommandLineRunner { +public class IMServerApp { public static void main(String[] args) { SpringApplication.run(IMServerApp.class,args); } - - public void run(String... args) throws Exception { - } } diff --git a/im-server/src/main/java/com/bx/imserver/constant/ChannelAttrKey.java b/im-server/src/main/java/com/bx/imserver/constant/ChannelAttrKey.java index 0b9adcd..7a4daee 100644 --- a/im-server/src/main/java/com/bx/imserver/constant/ChannelAttrKey.java +++ b/im-server/src/main/java/com/bx/imserver/constant/ChannelAttrKey.java @@ -7,6 +7,6 @@ public class ChannelAttrKey { // 终端类型 public static final String TERMINAL_TYPE = "TERMINAL_TYPE"; // 心跳次数 - public static final String HEARTBEAt_TIMES = "HEARTBEAt_TIMES"; + public static final String HEARTBEAT_TIMES = "HEARTBEAt_TIMES"; } 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 8c94e1a..43c7174 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 @@ -4,7 +4,7 @@ import com.bx.imcommon.contant.RedisKey; import com.bx.imcommon.enums.IMCmdType; import com.bx.imcommon.model.IMSendInfo; import com.bx.imserver.constant.ChannelAttrKey; -import com.bx.imserver.netty.processor.MessageProcessor; +import com.bx.imserver.netty.processor.AbstractMessageProcessor; import com.bx.imserver.netty.processor.ProcessorFactory; import com.bx.imserver.util.SpringContextHolder; import io.netty.channel.ChannelHandlerContext; @@ -34,7 +34,7 @@ public class IMChannelHandler extends SimpleChannelInboundHandler { @Override protected void channelRead0(ChannelHandlerContext ctx, IMSendInfo sendInfo) throws Exception { // 创建处理器进行处理 - MessageProcessor processor = ProcessorFactory.createProcessor(IMCmdType.fromCode(sendInfo.getCmd())); + AbstractMessageProcessor processor = ProcessorFactory.createProcessor(IMCmdType.fromCode(sendInfo.getCmd())); processor.process(ctx,processor.transForm(sendInfo.getData())); } diff --git a/im-server/src/main/java/com/bx/imserver/netty/processor/MessageProcessor.java b/im-server/src/main/java/com/bx/imserver/netty/processor/AbstractMessageProcessor.java similarity index 83% rename from im-server/src/main/java/com/bx/imserver/netty/processor/MessageProcessor.java rename to im-server/src/main/java/com/bx/imserver/netty/processor/AbstractMessageProcessor.java index c600968..264edac 100644 --- a/im-server/src/main/java/com/bx/imserver/netty/processor/MessageProcessor.java +++ b/im-server/src/main/java/com/bx/imserver/netty/processor/AbstractMessageProcessor.java @@ -3,7 +3,7 @@ package com.bx.imserver.netty.processor; import io.netty.channel.ChannelHandlerContext; -public abstract class MessageProcessor { +public abstract class AbstractMessageProcessor { public void process(ChannelHandlerContext ctx,T data){} diff --git a/im-server/src/main/java/com/bx/imserver/netty/processor/GroupMessageProcessor.java b/im-server/src/main/java/com/bx/imserver/netty/processor/GroupMessageProcessor.java index 3d7eecb..b48628b 100644 --- a/im-server/src/main/java/com/bx/imserver/netty/processor/GroupMessageProcessor.java +++ b/im-server/src/main/java/com/bx/imserver/netty/processor/GroupMessageProcessor.java @@ -3,7 +3,6 @@ package com.bx.imserver.netty.processor; import com.bx.imcommon.contant.RedisKey; import com.bx.imcommon.enums.IMCmdType; import com.bx.imcommon.enums.IMSendCode; -import com.bx.imcommon.model.GroupMessageInfo; import com.bx.imcommon.model.IMRecvInfo; import com.bx.imcommon.model.IMSendInfo; import com.bx.imcommon.model.SendResult; @@ -19,7 +18,7 @@ import java.util.List; @Slf4j @Component -public class GroupMessageProcessor extends MessageProcessor { +public class GroupMessageProcessor extends AbstractMessageProcessor { @Autowired private RedisTemplate redisTemplate; 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 4c5da27..6a2a181 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 @@ -20,11 +20,11 @@ import java.util.concurrent.TimeUnit; @Slf4j @Component -public class HeartbeatProcessor extends MessageProcessor { +public class HeartbeatProcessor extends AbstractMessageProcessor { @Autowired - private WebSocketServer WSServer; + private WebSocketServer wsServer; @Autowired RedisTemplate redisTemplate; @@ -37,7 +37,7 @@ public class HeartbeatProcessor extends MessageProcessor { ctx.channel().writeAndFlush(sendInfo); // 设置属性 - AttributeKey heartBeatAttr = AttributeKey.valueOf(ChannelAttrKey.HEARTBEAt_TIMES); + AttributeKey heartBeatAttr = AttributeKey.valueOf(ChannelAttrKey.HEARTBEAT_TIMES); Long heartbeatTimes = ctx.channel().attr(heartBeatAttr).get(); ctx.channel().attr(heartBeatAttr).set(++heartbeatTimes); if(heartbeatTimes%10 == 0){ diff --git a/im-server/src/main/java/com/bx/imserver/netty/processor/LoginProcessor.java b/im-server/src/main/java/com/bx/imserver/netty/processor/LoginProcessor.java index 017e176..1fd570b 100644 --- a/im-server/src/main/java/com/bx/imserver/netty/processor/LoginProcessor.java +++ b/im-server/src/main/java/com/bx/imserver/netty/processor/LoginProcessor.java @@ -2,7 +2,6 @@ package com.bx.imserver.netty.processor; import cn.hutool.core.bean.BeanUtil; import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; import com.bx.imcommon.contant.Constant; import com.bx.imcommon.contant.RedisKey; import com.bx.imcommon.enums.IMCmdType; @@ -23,16 +22,11 @@ import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; import java.util.HashMap; -import java.util.Map; import java.util.concurrent.TimeUnit; @Slf4j @Component -public class LoginProcessor extends MessageProcessor { - - - @Autowired - private WebSocketServer WSServer; +public class LoginProcessor extends AbstractMessageProcessor { @Autowired RedisTemplate redisTemplate; diff --git a/im-server/src/main/java/com/bx/imserver/netty/processor/PrivateMessageProcessor.java b/im-server/src/main/java/com/bx/imserver/netty/processor/PrivateMessageProcessor.java index 4f55abd..c1c3a55 100644 --- a/im-server/src/main/java/com/bx/imserver/netty/processor/PrivateMessageProcessor.java +++ b/im-server/src/main/java/com/bx/imserver/netty/processor/PrivateMessageProcessor.java @@ -5,7 +5,6 @@ import com.bx.imcommon.enums.IMCmdType; import com.bx.imcommon.enums.IMSendCode; import com.bx.imcommon.model.IMRecvInfo; import com.bx.imcommon.model.IMSendInfo; -import com.bx.imcommon.model.PrivateMessageInfo; import com.bx.imcommon.model.SendResult; import com.bx.imserver.netty.UserChannelCtxMap; import io.netty.channel.ChannelHandlerContext; @@ -14,11 +13,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; -import java.util.Map; - @Slf4j @Component -public class PrivateMessageProcessor extends MessageProcessor { +public class PrivateMessageProcessor extends AbstractMessageProcessor { @Autowired private RedisTemplate redisTemplate; diff --git a/im-server/src/main/java/com/bx/imserver/netty/processor/ProcessorFactory.java b/im-server/src/main/java/com/bx/imserver/netty/processor/ProcessorFactory.java index c5e094b..b3c71d1 100644 --- a/im-server/src/main/java/com/bx/imserver/netty/processor/ProcessorFactory.java +++ b/im-server/src/main/java/com/bx/imserver/netty/processor/ProcessorFactory.java @@ -5,20 +5,20 @@ import com.bx.imserver.util.SpringContextHolder; public class ProcessorFactory { - public static MessageProcessor createProcessor(IMCmdType cmd){ - MessageProcessor processor = null; + public static AbstractMessageProcessor createProcessor(IMCmdType cmd){ + AbstractMessageProcessor processor = null; switch (cmd){ case LOGIN: - processor = (MessageProcessor) SpringContextHolder.getApplicationContext().getBean(LoginProcessor.class); + processor = (AbstractMessageProcessor) SpringContextHolder.getApplicationContext().getBean(LoginProcessor.class); break; case HEART_BEAT: - processor = (MessageProcessor) SpringContextHolder.getApplicationContext().getBean(HeartbeatProcessor.class); + processor = (AbstractMessageProcessor) SpringContextHolder.getApplicationContext().getBean(HeartbeatProcessor.class); break; case PRIVATE_MESSAGE: - processor = (MessageProcessor)SpringContextHolder.getApplicationContext().getBean(PrivateMessageProcessor.class); + processor = (AbstractMessageProcessor)SpringContextHolder.getApplicationContext().getBean(PrivateMessageProcessor.class); break; case GROUP_MESSAGE: - processor = (MessageProcessor)SpringContextHolder.getApplicationContext().getBean(GroupMessageProcessor.class); + processor = (AbstractMessageProcessor)SpringContextHolder.getApplicationContext().getBean(GroupMessageProcessor.class); break; default: break; diff --git a/im-server/src/main/java/com/bx/imserver/netty/tcp/endecode/MessageProtocolDecoder.java b/im-server/src/main/java/com/bx/imserver/netty/tcp/endecode/MessageProtocolDecoder.java index 0414568..923f732 100644 --- a/im-server/src/main/java/com/bx/imserver/netty/tcp/endecode/MessageProtocolDecoder.java +++ b/im-server/src/main/java/com/bx/imserver/netty/tcp/endecode/MessageProtocolDecoder.java @@ -13,6 +13,7 @@ import java.util.List; @Slf4j public class MessageProtocolDecoder extends ReplayingDecoder { + @Override protected void decode(ChannelHandlerContext channelHandlerContext, ByteBuf byteBuf, List list) throws Exception { if(byteBuf.readableBytes()< 4){ return; diff --git a/im-server/src/main/java/com/bx/imserver/task/AbstractPullMessageTask.java b/im-server/src/main/java/com/bx/imserver/task/AbstractPullMessageTask.java index d5dafe4..43617dd 100644 --- a/im-server/src/main/java/com/bx/imserver/task/AbstractPullMessageTask.java +++ b/im-server/src/main/java/com/bx/imserver/task/AbstractPullMessageTask.java @@ -7,11 +7,10 @@ import org.springframework.beans.factory.annotation.Autowired; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; +import java.util.concurrent.*; @Slf4j -public abstract class AbstractPullMessageTask{ +public abstract class AbstractPullMessageTask { private int threadNum = 1; private ExecutorService executorService; @@ -19,34 +18,34 @@ public abstract class AbstractPullMessageTask{ @Autowired private IMServerGroup serverGroup; - public AbstractPullMessageTask(){ + public AbstractPullMessageTask() { this.threadNum = 1; } - public AbstractPullMessageTask(int threadNum){ + public AbstractPullMessageTask(int threadNum) { this.threadNum = threadNum; } @PostConstruct - public void init(){ + public void init() { // 初始化定时器 executorService = Executors.newFixedThreadPool(threadNum); - for(int i=0;i redisTemplate; @@ -33,7 +28,7 @@ public class PullUnreadGroupMessageTask extends AbstractPullMessageTask { for(Object o: messageInfos){ redisTemplate.opsForList().leftPop(key); IMRecvInfo recvInfo = (IMRecvInfo)o; - MessageProcessor processor = ProcessorFactory.createProcessor(IMCmdType.GROUP_MESSAGE); + AbstractMessageProcessor processor = ProcessorFactory.createProcessor(IMCmdType.GROUP_MESSAGE); processor.process(recvInfo); } } diff --git a/im-server/src/main/java/com/bx/imserver/task/PullUnreadPrivateMessageTask.java b/im-server/src/main/java/com/bx/imserver/task/PullUnreadPrivateMessageTask.java index dd61d52..54d1232 100644 --- a/im-server/src/main/java/com/bx/imserver/task/PullUnreadPrivateMessageTask.java +++ b/im-server/src/main/java/com/bx/imserver/task/PullUnreadPrivateMessageTask.java @@ -4,11 +4,9 @@ package com.bx.imserver.task; import com.bx.imcommon.contant.RedisKey; import com.bx.imcommon.enums.IMCmdType; import com.bx.imcommon.model.IMRecvInfo; -import com.bx.imcommon.model.PrivateMessageInfo; import com.bx.imserver.netty.IMServerGroup; -import com.bx.imserver.netty.processor.MessageProcessor; +import com.bx.imserver.netty.processor.AbstractMessageProcessor; import com.bx.imserver.netty.processor.ProcessorFactory; -import com.bx.imserver.netty.ws.WebSocketServer; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; @@ -21,8 +19,6 @@ import java.util.List; @Component public class PullUnreadPrivateMessageTask extends AbstractPullMessageTask { - @Autowired - private WebSocketServer WSServer; @Autowired private RedisTemplate redisTemplate; @@ -35,7 +31,7 @@ public class PullUnreadPrivateMessageTask extends AbstractPullMessageTask { for(Object o: messageInfos){ redisTemplate.opsForList().leftPop(key); IMRecvInfo recvInfo = (IMRecvInfo)o; - MessageProcessor processor = ProcessorFactory.createProcessor(IMCmdType.PRIVATE_MESSAGE); + AbstractMessageProcessor processor = ProcessorFactory.createProcessor(IMCmdType.PRIVATE_MESSAGE); processor.process(recvInfo); }