From 5a041ecaf5637b0ef7b87dd77694a1001660c61e Mon Sep 17 00:00:00 2001
From: dzc <2388224167@qq.com>
Date: Tue, 25 Nov 2025 11:50:02 +0800
Subject: [PATCH] init
---
.gitignore | 14 +
LICENSE | 21 +
README.md | 145 +
db/im-platform.sql | 112 +
db/敏感词库初始化.sql | 470 +
im-client/pom.xml | 21 +
.../com/bx/imclient/IMAutoConfiguration.java | 13 +
.../main/java/com/bx/imclient/IMClient.java | 92 +
.../bx/imclient/annotation/IMListener.java | 18 +
.../bx/imclient/listener/MessageListener.java | 12 +
.../listener/MessageListenerMulticaster.java | 46 +
.../java/com/bx/imclient/sender/IMSender.java | 262 +
.../task/AbstractMessageResultTask.java | 21 +
.../task/GroupMessageResultResultTask.java | 27 +
.../task/PrivateMessageResultResultTask.java | 26 +
.../task/SystemMessageResultResultTask.java | 25 +
...ot.autoconfigure.AutoConfiguration.imports | 1 +
im-common/pom.xml | 62 +
.../com/bx/imcommon/contant/IMConstant.java | 18 +
.../com/bx/imcommon/contant/IMRedisKey.java | 40 +
.../java/com/bx/imcommon/enums/IMCmdType.java | 55 +
.../com/bx/imcommon/enums/IMListenerType.java | 34 +
.../com/bx/imcommon/enums/IMSendCode.java | 32 +
.../com/bx/imcommon/enums/IMTerminalType.java | 51 +
.../com/bx/imcommon/model/IMGroupMessage.java | 44 +
.../bx/imcommon/model/IMHeartbeatInfo.java | 7 +
.../com/bx/imcommon/model/IMLoginInfo.java | 9 +
.../bx/imcommon/model/IMPrivateMessage.java | 44 +
.../com/bx/imcommon/model/IMRecvInfo.java | 40 +
.../com/bx/imcommon/model/IMSendInfo.java | 18 +
.../com/bx/imcommon/model/IMSendResult.java | 28 +
.../com/bx/imcommon/model/IMSessionInfo.java | 17 +
.../bx/imcommon/model/IMSystemMessage.java | 34 +
.../com/bx/imcommon/model/IMUserInfo.java | 28 +
.../com/bx/imcommon/mq/RedisMQConfig.java | 32 +
.../com/bx/imcommon/mq/RedisMQConsumer.java | 35 +
.../com/bx/imcommon/mq/RedisMQListener.java | 29 +
.../com/bx/imcommon/mq/RedisMQPullTask.java | 116 +
.../com/bx/imcommon/mq/RedisMQTemplate.java | 44 +
.../serializer/DateToLongSerializer.java | 28 +
.../com/bx/imcommon/util/CommaTextUtils.java | 89 +
.../java/com/bx/imcommon/util/JwtUtil.java | 89 +
.../util/ThreadPoolExecutorFactory.java | 87 +
im-platform/pom.xml | 111 +
.../java/com/bx/implatform/IMPlatformApp.java | 23 +
.../bx/implatform/annotation/OnlineCheck.java | 15 +
.../bx/implatform/annotation/RedisLock.java | 37 +
.../implatform/annotation/RepeatSubmit.java | 31 +
.../implatform/aspect/OnlineCheckAspect.java | 36 +
.../bx/implatform/aspect/RedisLockAspect.java | 85 +
.../implatform/aspect/RepeatSubmitAspect.java | 100 +
.../com/bx/implatform/config/ICEServer.java | 11 +
.../implatform/config/MinIoClientConfig.java | 19 +
.../com/bx/implatform/config/MvcConfig.java | 34 +
.../com/bx/implatform/config/RedisConfig.java | 74 +
.../bx/implatform/config/SwaggerConfig.java | 38 +
.../config/TaskSchedulerConfig.java | 27 +
.../bx/implatform/config/WebrtcConfig.java | 19 +
.../config/props/JwtProperties.java | 22 +
.../config/props/MinioProperties.java | 34 +
.../com/bx/implatform/contant/Constant.java | 33 +
.../com/bx/implatform/contant/RedisKey.java | 72 +
.../implatform/controller/FileController.java | 38 +
.../controller/FriendController.java | 64 +
.../controller/GroupController.java | 113 +
.../controller/GroupMessageController.java | 73 +
.../controller/LoginController.java | 51 +
.../controller/PrivateMessageController.java | 74 +
.../controller/SystemController.java | 36 +
.../implatform/controller/UserController.java | 65 +
.../controller/WebrtcPrivateController.java | 76 +
.../com/bx/implatform/dto/FriendDndDTO.java | 23 +
.../com/bx/implatform/dto/GroupBanDTO.java | 21 +
.../com/bx/implatform/dto/GroupDndDTO.java | 23 +
.../com/bx/implatform/dto/GroupInviteDTO.java | 23 +
.../implatform/dto/GroupMemberRemoveDTO.java | 28 +
.../bx/implatform/dto/GroupMessageDTO.java | 38 +
.../com/bx/implatform/dto/GroupUnbanDTO.java | 18 +
.../java/com/bx/implatform/dto/LoginDTO.java | 28 +
.../com/bx/implatform/dto/ModifyPwdDTO.java | 19 +
.../bx/implatform/dto/PrivateMessageDTO.java | 29 +
.../com/bx/implatform/dto/RegisterDTO.java | 27 +
.../com/bx/implatform/dto/UserBanDTO.java | 21 +
.../implatform/dto/WebrtcGroupAnswerDTO.java | 29 +
.../dto/WebrtcGroupCandidateDTO.java | 29 +
.../implatform/dto/WebrtcGroupDeviceDTO.java | 26 +
.../implatform/dto/WebrtcGroupFailedDTO.java | 23 +
.../implatform/dto/WebrtcGroupInviteDTO.java | 28 +
.../bx/implatform/dto/WebrtcGroupJoinDTO.java | 20 +
.../implatform/dto/WebrtcGroupOfferDTO.java | 29 +
.../implatform/dto/WebrtcGroupSetupDTO.java | 28 +
.../com/bx/implatform/entity/FileInfo.java | 67 +
.../java/com/bx/implatform/entity/Friend.java | 63 +
.../java/com/bx/implatform/entity/Group.java | 72 +
.../com/bx/implatform/entity/GroupMember.java | 86 +
.../bx/implatform/entity/GroupMessage.java | 88 +
.../bx/implatform/entity/PrivateMessage.java | 63 +
.../bx/implatform/entity/SensitiveWord.java | 50 +
.../java/com/bx/implatform/entity/User.java | 87 +
.../com/bx/implatform/enums/FileType.java | 32 +
.../bx/implatform/enums/MessageStatus.java | 33 +
.../com/bx/implatform/enums/MessageType.java | 74 +
.../com/bx/implatform/enums/ResultCode.java | 50 +
.../com/bx/implatform/enums/WebrtcMode.java | 27 +
.../implatform/exception/GlobalException.java | 34 +
.../exception/GlobalExceptionHandler.java | 100 +
.../com/bx/implatform/filter/CacheFilter.java | 29 +
.../CacheHttpServletRequestWrapper.java | 57 +
.../interceptor/AuthInterceptor.java | 50 +
.../interceptor/XssInterceptor.java | 50 +
.../listener/GroupMessageListener.java | 32 +
.../listener/PrivateMessageListener.java | 53 +
.../listener/SystemMessageListener.java | 26 +
.../bx/implatform/mapper/FileInfoMapper.java | 8 +
.../bx/implatform/mapper/FriendMapper.java | 8 +
.../com/bx/implatform/mapper/GroupMapper.java | 8 +
.../implatform/mapper/GroupMemberMapper.java | 8 +
.../implatform/mapper/GroupMessageMapper.java | 8 +
.../mapper/PrivateMessageMapper.java | 8 +
.../mapper/SensitiveWordMapper.java | 16 +
.../com/bx/implatform/mapper/UserMapper.java | 8 +
.../java/com/bx/implatform/result/Result.java | 14 +
.../com/bx/implatform/result/ResultUtils.java | 63 +
.../bx/implatform/service/FileService.java | 15 +
.../bx/implatform/service/FriendService.java | 81 +
.../service/GroupMemberService.java | 102 +
.../service/GroupMessageService.java | 65 +
.../bx/implatform/service/GroupService.java | 102 +
.../service/PrivateMessageService.java | 67 +
.../service/SensitiveWordService.java | 15 +
.../bx/implatform/service/UserService.java | 86 +
.../service/WebrtcPrivateService.java | 26 +
.../service/impl/FileServiceImpl.java | 212 +
.../service/impl/FriendServiceImpl.java | 289 +
.../service/impl/GroupMemberServiceImpl.java | 131 +
.../service/impl/GroupMessageServiceImpl.java | 470 +
.../service/impl/GroupServiceImpl.java | 418 +
.../impl/PrivateMessageServiceImpl.java | 271 +
.../impl/SensitiveWordServiceImpl.java | 30 +
.../service/impl/UserServiceImpl.java | 225 +
.../impl/WebrtcPrivateServiceImpl.java | 337 +
.../bx/implatform/session/SessionContext.java | 21 +
.../bx/implatform/session/UserSession.java | 20 +
.../session/WebrtcGroupSession.java | 33 +
.../session/WebrtcPrivateSession.java | 39 +
.../bx/implatform/session/WebrtcUserInfo.java | 28 +
.../consumer/GroupBannedConsumerTask.java | 68 +
.../task/consumer/GroupUnbanConsumerTask.java | 67 +
.../task/consumer/UserBannedConsumerTask.java | 42 +
.../task/schedule/FileExpireTask.java | 78 +
.../schedule/ReloadSensitiveWordTask.java | 26 +
.../implatform/thirdparty/MinioService.java | 156 +
.../com/bx/implatform/util/BeanUtils.java | 45 +
.../com/bx/implatform/util/DateTimeUtils.java | 35 +
.../java/com/bx/implatform/util/FileUtil.java | 43 +
.../com/bx/implatform/util/ImageUtil.java | 78 +
.../implatform/util/SensitiveFilterUtil.java | 207 +
.../bx/implatform/util/UserStateUtils.java | 44 +
.../java/com/bx/implatform/util/XssUtil.java | 21 +
.../java/com/bx/implatform/vo/FriendVO.java | 29 +
.../com/bx/implatform/vo/GroupMemberVO.java | 34 +
.../com/bx/implatform/vo/GroupMessageVO.java | 53 +
.../java/com/bx/implatform/vo/GroupVO.java | 63 +
.../java/com/bx/implatform/vo/LoginVO.java | 22 +
.../bx/implatform/vo/OnlineTerminalVO.java | 24 +
.../bx/implatform/vo/PrivateMessageVO.java | 38 +
.../com/bx/implatform/vo/SystemConfigVO.java | 21 +
.../com/bx/implatform/vo/SystemMessageVO.java | 26 +
.../com/bx/implatform/vo/UploadImageVO.java | 21 +
.../java/com/bx/implatform/vo/UserVO.java | 51 +
.../bx/implatform/vo/WebrtcGroupFailedVO.java | 22 +
.../bx/implatform/vo/WebrtcGroupInfoVO.java | 27 +
.../src/main/resources/application-dev.yml | 28 +
.../src/main/resources/application-prod.yml | 33 +
.../src/main/resources/application-test.yml | 32 +
.../src/main/resources/application.yml | 33 +
im-platform/src/main/resources/logback.xml | 48 +
.../src/main/resources/static/favicon.ico | Bin 0 -> 22710 bytes
im-server/pom.xml | 43 +
.../java/com/bx/imserver/IMServerApp.java | 19 +
.../bx/imserver/constant/ChannelAttrKey.java | 21 +
.../bx/imserver/netty/IMChannelHandler.java | 99 +
.../java/com/bx/imserver/netty/IMServer.java | 10 +
.../com/bx/imserver/netty/IMServerGroup.java | 55 +
.../bx/imserver/netty/UserChannelCtxMap.java | 46 +
.../processor/AbstractMessageProcessor.java | 18 +
.../processor/GroupMessageProcessor.java | 71 +
.../netty/processor/HeartbeatProcessor.java | 56 +
.../netty/processor/LoginProcessor.java | 83 +
.../processor/PrivateMessageProcessor.java | 67 +
.../netty/processor/ProcessorFactory.java | 19 +
.../processor/SystemMessageProcessor.java | 67 +
.../imserver/netty/tcp/TcpSocketServer.java | 98 +
.../tcp/endecode/MessageProtocolDecoder.java | 30 +
.../tcp/endecode/MessageProtocolEncoder.java | 24 +
.../bx/imserver/netty/ws/WebSocketServer.java | 107 +
.../ws/endecode/MessageProtocolDecoder.java | 19 +
.../ws/endecode/MessageProtocolEncoder.java | 20 +
.../task/AbstractPullMessageTask.java | 23 +
.../imserver/task/PullGroupMessageTask.java | 25 +
.../imserver/task/PullPrivateMessageTask.java | 25 +
.../imserver/task/PullSystemMessageTask.java | 28 +
.../bx/imserver/util/SpringContextHolder.java | 39 +
.../src/main/resources/application-dev.yml | 5 +
.../src/main/resources/application-prod.yml | 6 +
.../src/main/resources/application-test.yml | 6 +
im-server/src/main/resources/application.yml | 17 +
im-server/src/main/resources/logback.xml | 48 +
im-uniapp/.env.js | 27 +
im-uniapp/App.vue | 551 +
im-uniapp/common/date.js | 66 +
im-uniapp/common/emotion.js | 43 +
im-uniapp/common/enums.js | 70 +
im-uniapp/common/messageType.js | 40 +
im-uniapp/common/recorder-app.js | 67 +
im-uniapp/common/recorder-h5.js | 92 +
im-uniapp/common/request.js | 93 +
im-uniapp/common/str.js | 14 +
im-uniapp/common/url.js | 23 +
im-uniapp/common/wssocket.js | 154 +
im-uniapp/components/bar/arrow-bar.vue | 64 +
im-uniapp/components/bar/bar-group.vue | 17 +
im-uniapp/components/bar/btn-bar.vue | 68 +
im-uniapp/components/bar/switch-bar.vue | 61 +
.../components/chat-at-box/chat-at-box.vue | 173 +
.../chat-group-readed/chat-group-readed.vue | 133 +
im-uniapp/components/chat-item/chat-item.vue | 200 +
.../chat-message-item/chat-message-item.vue | 546 +
.../components/chat-record/chat-record.vue | 243 +
.../components/file-upload/file-upload.vue | 122 +
.../components/friend-item/friend-item.vue | 82 +
.../components/group-item/group-item.vue | 58 +
.../group-member-selector.vue | 180 +
.../group-rtc-join/group-rtc-join.vue | 88 +
.../components/head-image/head-image.vue | 129 +
.../components/image-upload/image-upload.vue | 100 +
im-uniapp/components/loading/loading.vue | 71 +
.../long-press-menu/long-press-menu.vue | 129 +
im-uniapp/components/nav-bar/nav-bar.vue | 121 +
.../virtual-scroller/virtual-scroller.vue | 60 +
im-uniapp/hybrid/html/rtc-group/index.html | 23 +
im-uniapp/hybrid/html/rtc-private/index.html | 23 +
im-uniapp/im-var.scss | 64 +
im-uniapp/im.scss | 258 +
im-uniapp/index.html | 20 +
im-uniapp/main.js | 65 +
im-uniapp/manifest.json | 136 +
im-uniapp/package.json | 12 +
im-uniapp/pages.json | 114 +
im-uniapp/pages/chat/chat-box.vue | 1358 +
im-uniapp/pages/chat/chat-group-video.vue | 138 +
im-uniapp/pages/chat/chat-private-video.vue | 100 +
im-uniapp/pages/chat/chat.vue | 207 +
im-uniapp/pages/common/external-link.vue | 20 +
im-uniapp/pages/common/user-info.vue | 254 +
im-uniapp/pages/friend/friend-add.vue | 146 +
im-uniapp/pages/friend/friend.vue | 192 +
im-uniapp/pages/group/group-edit.vue | 199 +
im-uniapp/pages/group/group-info.vue | 377 +
im-uniapp/pages/group/group-invite.vue | 176 +
im-uniapp/pages/group/group-member.vue | 127 +
im-uniapp/pages/group/group.vue | 119 +
im-uniapp/pages/login/login.vue | 293 +
im-uniapp/pages/mine/mine-edit.vue | 140 +
im-uniapp/pages/mine/mine-password.vue | 101 +
im-uniapp/pages/mine/mine.vue | 140 +
im-uniapp/pages/register/register.vue | 351 +
im-uniapp/pnpm-lock.yaml | 373 +
im-uniapp/static/emoji/0.gif | Bin 0 -> 17131 bytes
im-uniapp/static/emoji/1.gif | Bin 0 -> 14377 bytes
im-uniapp/static/emoji/10.gif | Bin 0 -> 17811 bytes
im-uniapp/static/emoji/11.gif | Bin 0 -> 21016 bytes
im-uniapp/static/emoji/12.gif | Bin 0 -> 13938 bytes
im-uniapp/static/emoji/13.gif | Bin 0 -> 18212 bytes
im-uniapp/static/emoji/14.gif | Bin 0 -> 12888 bytes
im-uniapp/static/emoji/15.gif | Bin 0 -> 5214 bytes
im-uniapp/static/emoji/16.gif | Bin 0 -> 17080 bytes
im-uniapp/static/emoji/17.gif | Bin 0 -> 3238 bytes
im-uniapp/static/emoji/18.gif | Bin 0 -> 19485 bytes
im-uniapp/static/emoji/19.gif | Bin 0 -> 13048 bytes
im-uniapp/static/emoji/2.gif | Bin 0 -> 18762 bytes
im-uniapp/static/emoji/20.gif | Bin 0 -> 19698 bytes
im-uniapp/static/emoji/21.gif | Bin 0 -> 19411 bytes
im-uniapp/static/emoji/22.gif | Bin 0 -> 21429 bytes
im-uniapp/static/emoji/23.gif | Bin 0 -> 10257 bytes
im-uniapp/static/emoji/24.gif | Bin 0 -> 12918 bytes
im-uniapp/static/emoji/25.gif | Bin 0 -> 19279 bytes
im-uniapp/static/emoji/26.gif | Bin 0 -> 15979 bytes
im-uniapp/static/emoji/27.gif | Bin 0 -> 12412 bytes
im-uniapp/static/emoji/28.gif | Bin 0 -> 16525 bytes
im-uniapp/static/emoji/29.gif | Bin 0 -> 10416 bytes
im-uniapp/static/emoji/3.gif | Bin 0 -> 20633 bytes
im-uniapp/static/emoji/30.gif | Bin 0 -> 19953 bytes
im-uniapp/static/emoji/31.gif | Bin 0 -> 8680 bytes
im-uniapp/static/emoji/32.gif | Bin 0 -> 11106 bytes
im-uniapp/static/emoji/33.gif | Bin 0 -> 9261 bytes
im-uniapp/static/emoji/34.gif | Bin 0 -> 9212 bytes
im-uniapp/static/emoji/35.gif | Bin 0 -> 8356 bytes
im-uniapp/static/emoji/36.gif | Bin 0 -> 4093 bytes
im-uniapp/static/emoji/37.gif | Bin 0 -> 17466 bytes
im-uniapp/static/emoji/38.gif | Bin 0 -> 11035 bytes
im-uniapp/static/emoji/39.gif | Bin 0 -> 10066 bytes
im-uniapp/static/emoji/4.gif | Bin 0 -> 6169 bytes
im-uniapp/static/emoji/40.gif | Bin 0 -> 18717 bytes
im-uniapp/static/emoji/41.gif | Bin 0 -> 5518 bytes
im-uniapp/static/emoji/42.gif | Bin 0 -> 17447 bytes
im-uniapp/static/emoji/43.gif | Bin 0 -> 9220 bytes
im-uniapp/static/emoji/44.gif | Bin 0 -> 7463 bytes
im-uniapp/static/emoji/45.gif | Bin 0 -> 14311 bytes
im-uniapp/static/emoji/46.gif | Bin 0 -> 13457 bytes
im-uniapp/static/emoji/47.gif | Bin 0 -> 13299 bytes
im-uniapp/static/emoji/48.gif | Bin 0 -> 13997 bytes
im-uniapp/static/emoji/49.gif | Bin 0 -> 10110 bytes
im-uniapp/static/emoji/5.gif | Bin 0 -> 20529 bytes
im-uniapp/static/emoji/50.gif | Bin 0 -> 12480 bytes
im-uniapp/static/emoji/51.gif | Bin 0 -> 12176 bytes
im-uniapp/static/emoji/52.gif | Bin 0 -> 16495 bytes
im-uniapp/static/emoji/53.gif | Bin 0 -> 13979 bytes
im-uniapp/static/emoji/54.gif | Bin 0 -> 10885 bytes
im-uniapp/static/emoji/55.gif | Bin 0 -> 7570 bytes
im-uniapp/static/emoji/56.gif | Bin 0 -> 8827 bytes
im-uniapp/static/emoji/6.gif | Bin 0 -> 16895 bytes
im-uniapp/static/emoji/7.gif | Bin 0 -> 20608 bytes
im-uniapp/static/emoji/8.gif | Bin 0 -> 8734 bytes
im-uniapp/static/emoji/9.gif | Bin 0 -> 21128 bytes
im-uniapp/static/icon/iconfont.css | 261 +
im-uniapp/static/icon/iconfont.ttf | Bin 0 -> 17428 bytes
im-uniapp/static/image/online_app.png | Bin 0 -> 2774 bytes
im-uniapp/static/image/online_web.png | Bin 0 -> 3467 bytes
im-uniapp/static/tab/chat.png | Bin 0 -> 6356 bytes
im-uniapp/static/tab/chat_active.png | Bin 0 -> 5647 bytes
im-uniapp/static/tab/friend.png | Bin 0 -> 5721 bytes
im-uniapp/static/tab/friend_active.png | Bin 0 -> 5124 bytes
im-uniapp/static/tab/group.png | Bin 0 -> 6880 bytes
im-uniapp/static/tab/group_active.png | Bin 0 -> 7803 bytes
im-uniapp/static/tab/mine.png | Bin 0 -> 6342 bytes
im-uniapp/static/tab/mine_active.png | Bin 0 -> 5902 bytes
im-uniapp/store/chatStore.js | 546 +
im-uniapp/store/configStore.js | 36 +
im-uniapp/store/friendStore.js | 96 +
im-uniapp/store/groupStore.js | 56 +
im-uniapp/store/userStore.js | 31 +
im-uniapp/uni.promisify.adaptor.js | 10 +
im-uniapp/uni.scss | 107 +
im-uniapp/uni_modules/lsj-upload/changelog.md | 120 +
.../components/lsj-upload/LsjFile.js | 414 +
.../components/lsj-upload/lsj-upload.vue | 338 +
.../lsj-upload/hybrid/html/js/vue.min.js | 8 +
.../lsj-upload/hybrid/html/uploadFile.html | 213 +
im-uniapp/uni_modules/lsj-upload/package.json | 80 +
im-uniapp/uni_modules/uni-badge/changelog.md | 33 +
.../components/uni-badge/uni-badge.vue | 268 +
im-uniapp/uni_modules/uni-badge/package.json | 85 +
im-uniapp/uni_modules/uni-badge/readme.md | 10 +
.../uni_modules/uni-calendar/changelog.md | 26 +
.../components/uni-calendar/calendar.js | 546 +
.../components/uni-calendar/i18n/en.json | 12 +
.../components/uni-calendar/i18n/index.js | 8 +
.../components/uni-calendar/i18n/zh-Hans.json | 12 +
.../components/uni-calendar/i18n/zh-Hant.json | 12 +
.../uni-calendar/uni-calendar-item.vue | 187 +
.../components/uni-calendar/uni-calendar.vue | 566 +
.../components/uni-calendar/util.js | 360 +
.../uni_modules/uni-calendar/package.json | 85 +
im-uniapp/uni_modules/uni-calendar/readme.md | 103 +
im-uniapp/uni_modules/uni-card/changelog.md | 26 +
.../uni-card/components/uni-card/uni-card.vue | 270 +
im-uniapp/uni_modules/uni-card/package.json | 90 +
im-uniapp/uni_modules/uni-card/readme.md | 12 +
.../uni_modules/uni-collapse/changelog.md | 36 +
.../uni-collapse-item/uni-collapse-item.vue | 402 +
.../components/uni-collapse/uni-collapse.vue | 147 +
.../uni_modules/uni-collapse/package.json | 89 +
im-uniapp/uni_modules/uni-collapse/readme.md | 12 +
im-uniapp/uni_modules/uni-combox/changelog.md | 15 +
.../components/uni-combox/uni-combox.vue | 275 +
im-uniapp/uni_modules/uni-combox/package.json | 90 +
im-uniapp/uni_modules/uni-combox/readme.md | 11 +
.../uni_modules/uni-countdown/changelog.md | 24 +
.../components/uni-countdown/i18n/en.json | 6 +
.../components/uni-countdown/i18n/index.js | 8 +
.../uni-countdown/i18n/zh-Hans.json | 6 +
.../uni-countdown/i18n/zh-Hant.json | 6 +
.../uni-countdown/uni-countdown.vue | 271 +
.../uni_modules/uni-countdown/package.json | 86 +
im-uniapp/uni_modules/uni-countdown/readme.md | 10 +
.../uni-data-checkbox/changelog.md | 45 +
.../uni-data-checkbox/uni-data-checkbox.vue | 821 +
.../uni-data-checkbox/package.json | 84 +
.../uni_modules/uni-data-checkbox/readme.md | 18 +
.../uni_modules/uni-data-picker/changelog.md | 75 +
.../components/uni-data-picker/keypress.js | 45 +
.../uni-data-picker/uni-data-picker.vue | 551 +
.../uni-data-pickerview/uni-data-picker.js | 622 +
.../uni-data-pickerview.vue | 323 +
.../uni_modules/uni-data-picker/package.json | 90 +
.../uni_modules/uni-data-picker/readme.md | 22 +
.../uni_modules/uni-data-select/changelog.md | 35 +
.../uni-data-select/uni-data-select.vue | 517 +
.../uni_modules/uni-data-select/package.json | 85 +
.../uni_modules/uni-data-select/readme.md | 8 +
.../uni_modules/uni-dateformat/changelog.md | 10 +
.../components/uni-dateformat/date-format.js | 200 +
.../uni-dateformat/uni-dateformat.vue | 88 +
.../uni_modules/uni-dateformat/package.json | 88 +
.../uni_modules/uni-dateformat/readme.md | 11 +
.../uni-datetime-picker/changelog.md | 140 +
.../uni-datetime-picker/calendar-item.vue | 177 +
.../uni-datetime-picker/calendar.vue | 929 +
.../uni-datetime-picker/i18n/en.json | 22 +
.../uni-datetime-picker/i18n/index.js | 8 +
.../uni-datetime-picker/i18n/zh-Hans.json | 22 +
.../uni-datetime-picker/i18n/zh-Hant.json | 22 +
.../uni-datetime-picker/time-picker.vue | 934 +
.../uni-datetime-picker.vue | 1032 +
.../components/uni-datetime-picker/util.js | 453 +
.../uni-datetime-picker/package.json | 87 +
.../uni_modules/uni-datetime-picker/readme.md | 21 +
im-uniapp/uni_modules/uni-drawer/changelog.md | 13 +
.../components/uni-drawer/keypress.js | 45 +
.../components/uni-drawer/uni-drawer.vue | 183 +
im-uniapp/uni_modules/uni-drawer/package.json | 87 +
im-uniapp/uni_modules/uni-drawer/readme.md | 10 +
.../uni_modules/uni-easyinput/changelog.md | 97 +
.../components/uni-easyinput/common.js | 56 +
.../uni-easyinput/uni-easyinput.vue | 657 +
.../uni_modules/uni-easyinput/package.json | 87 +
im-uniapp/uni_modules/uni-easyinput/readme.md | 11 +
im-uniapp/uni_modules/uni-fab/changelog.md | 23 +
.../uni-fab/components/uni-fab/uni-fab.vue | 491 +
im-uniapp/uni_modules/uni-fab/package.json | 84 +
im-uniapp/uni_modules/uni-fab/readme.md | 9 +
im-uniapp/uni_modules/uni-fav/changelog.md | 19 +
.../uni-fav/components/uni-fav/i18n/en.json | 4 +
.../uni-fav/components/uni-fav/i18n/index.js | 8 +
.../components/uni-fav/i18n/zh-Hans.json | 4 +
.../components/uni-fav/i18n/zh-Hant.json | 4 +
.../uni-fav/components/uni-fav/uni-fav.vue | 161 +
im-uniapp/uni_modules/uni-fav/package.json | 89 +
im-uniapp/uni_modules/uni-fav/readme.md | 10 +
.../uni_modules/uni-file-picker/changelog.md | 67 +
.../uni-file-picker/choose-and-upload-file.js | 224 +
.../uni-file-picker/uni-file-picker.vue | 667 +
.../uni-file-picker/upload-file.vue | 325 +
.../uni-file-picker/upload-image.vue | 292 +
.../components/uni-file-picker/utils.js | 109 +
.../uni_modules/uni-file-picker/package.json | 83 +
.../uni_modules/uni-file-picker/readme.md | 11 +
im-uniapp/uni_modules/uni-forms/changelog.md | 92 +
.../uni-forms-item/uni-forms-item.vue | 627 +
.../components/uni-forms/uni-forms.vue | 397 +
.../uni-forms/components/uni-forms/utils.js | 293 +
.../components/uni-forms/validate.js | 486 +
im-uniapp/uni_modules/uni-forms/package.json | 88 +
im-uniapp/uni_modules/uni-forms/readme.md | 23 +
.../uni_modules/uni-goods-nav/changelog.md | 18 +
.../components/uni-goods-nav/i18n/en.json | 6 +
.../components/uni-goods-nav/i18n/index.js | 8 +
.../uni-goods-nav/i18n/zh-Hans.json | 6 +
.../uni-goods-nav/i18n/zh-Hant.json | 6 +
.../uni-goods-nav/uni-goods-nav.vue | 229 +
.../uni_modules/uni-goods-nav/package.json | 88 +
im-uniapp/uni_modules/uni-goods-nav/readme.md | 10 +
im-uniapp/uni_modules/uni-grid/changelog.md | 13 +
.../uni-grid-item/uni-grid-item.vue | 127 +
.../uni-grid/components/uni-grid/uni-grid.vue | 142 +
im-uniapp/uni_modules/uni-grid/package.json | 86 +
im-uniapp/uni_modules/uni-grid/readme.md | 11 +
im-uniapp/uni_modules/uni-group/changelog.md | 16 +
.../components/uni-group/uni-group.vue | 134 +
im-uniapp/uni_modules/uni-group/package.json | 87 +
im-uniapp/uni_modules/uni-group/readme.md | 9 +
im-uniapp/uni_modules/uni-icons/changelog.md | 22 +
.../uni-icons/components/uni-icons/icons.js | 1169 +
.../components/uni-icons/uni-icons.vue | 96 +
.../components/uni-icons/uniicons.css | 663 +
.../components/uni-icons/uniicons.ttf | Bin 0 -> 35760 bytes
im-uniapp/uni_modules/uni-icons/package.json | 86 +
im-uniapp/uni_modules/uni-icons/readme.md | 8 +
.../uni_modules/uni-indexed-list/changelog.md | 17 +
.../uni-indexed-list-item.vue | 144 +
.../uni-indexed-list/uni-indexed-list.vue | 367 +
.../uni_modules/uni-indexed-list/package.json | 89 +
.../uni_modules/uni-indexed-list/readme.md | 11 +
im-uniapp/uni_modules/uni-link/changelog.md | 17 +
.../uni-link/components/uni-link/uni-link.vue | 128 +
im-uniapp/uni_modules/uni-link/package.json | 87 +
im-uniapp/uni_modules/uni-link/readme.md | 11 +
im-uniapp/uni_modules/uni-list/changelog.md | 46 +
.../components/uni-list-ad/uni-list-ad.vue | 107 +
.../uni-list-chat/uni-list-chat.scss | 58 +
.../uni-list-chat/uni-list-chat.vue | 593 +
.../uni-list-item/uni-list-item.vue | 534 +
.../uni-list/components/uni-list/uni-list.vue | 123 +
.../components/uni-list/uni-refresh.vue | 65 +
.../components/uni-list/uni-refresh.wxs | 87 +
im-uniapp/uni_modules/uni-list/package.json | 88 +
im-uniapp/uni_modules/uni-list/readme.md | 346 +
.../uni_modules/uni-load-more/changelog.md | 19 +
.../components/uni-load-more/i18n/en.json | 5 +
.../components/uni-load-more/i18n/index.js | 8 +
.../uni-load-more/i18n/zh-Hans.json | 5 +
.../uni-load-more/i18n/zh-Hant.json | 5 +
.../uni-load-more/uni-load-more.vue | 399 +
.../uni_modules/uni-load-more/package.json | 86 +
im-uniapp/uni_modules/uni-load-more/readme.md | 14 +
.../uni_modules/uni-nav-bar/changelog.md | 51 +
.../components/uni-nav-bar/uni-nav-bar.vue | 357 +
.../components/uni-nav-bar/uni-status-bar.vue | 24 +
.../uni_modules/uni-nav-bar/package.json | 86 +
im-uniapp/uni_modules/uni-nav-bar/readme.md | 15 +
.../uni_modules/uni-notice-bar/changelog.md | 18 +
.../uni-notice-bar/uni-notice-bar.vue | 426 +
.../uni_modules/uni-notice-bar/package.json | 87 +
.../uni_modules/uni-notice-bar/readme.md | 13 +
.../uni_modules/uni-number-box/changelog.md | 29 +
.../uni-number-box/uni-number-box.vue | 221 +
.../uni_modules/uni-number-box/package.json | 82 +
.../uni_modules/uni-number-box/readme.md | 13 +
.../uni_modules/uni-pagination/changelog.md | 27 +
.../components/uni-pagination/i18n/en.json | 5 +
.../components/uni-pagination/i18n/es.json | 5 +
.../components/uni-pagination/i18n/fr.json | 5 +
.../components/uni-pagination/i18n/index.js | 12 +
.../uni-pagination/i18n/zh-Hans.json | 5 +
.../uni-pagination/i18n/zh-Hant.json | 5 +
.../uni-pagination/uni-pagination.vue | 465 +
.../uni_modules/uni-pagination/package.json | 83 +
.../uni_modules/uni-pagination/readme.md | 11 +
im-uniapp/uni_modules/uni-popup/changelog.md | 68 +
.../components/uni-popup-dialog/keypress.js | 45 +
.../uni-popup-dialog/uni-popup-dialog.vue | 275 +
.../uni-popup-message/uni-popup-message.vue | 143 +
.../uni-popup-share/uni-popup-share.vue | 187 +
.../components/uni-popup/i18n/en.json | 7 +
.../components/uni-popup/i18n/index.js | 8 +
.../components/uni-popup/i18n/zh-Hans.json | 7 +
.../components/uni-popup/i18n/zh-Hant.json | 7 +
.../components/uni-popup/keypress.js | 45 +
.../uni-popup/components/uni-popup/popup.js | 26 +
.../components/uni-popup/uni-popup.vue | 473 +
im-uniapp/uni_modules/uni-popup/package.json | 87 +
im-uniapp/uni_modules/uni-popup/readme.md | 17 +
im-uniapp/uni_modules/uni-rate/changelog.md | 25 +
.../uni-rate/components/uni-rate/uni-rate.vue | 361 +
im-uniapp/uni_modules/uni-rate/package.json | 88 +
im-uniapp/uni_modules/uni-rate/readme.md | 12 +
im-uniapp/uni_modules/uni-row/changelog.md | 10 +
.../uni-row/components/uni-col/uni-col.vue | 317 +
.../uni-row/components/uni-row/uni-row.vue | 190 +
im-uniapp/uni_modules/uni-row/package.json | 87 +
im-uniapp/uni_modules/uni-row/readme.md | 10 +
im-uniapp/uni_modules/uni-scss/changelog.md | 8 +
im-uniapp/uni_modules/uni-scss/index.scss | 1 +
im-uniapp/uni_modules/uni-scss/package.json | 82 +
im-uniapp/uni_modules/uni-scss/readme.md | 4 +
.../uni_modules/uni-scss/styles/index.scss | 7 +
.../uni-scss/styles/setting/_border.scss | 3 +
.../uni-scss/styles/setting/_color.scss | 66 +
.../uni-scss/styles/setting/_radius.scss | 55 +
.../uni-scss/styles/setting/_space.scss | 56 +
.../uni-scss/styles/setting/_styles.scss | 167 +
.../uni-scss/styles/setting/_text.scss | 24 +
.../uni-scss/styles/setting/_variables.scss | 146 +
.../uni-scss/styles/tools/functions.scss | 19 +
im-uniapp/uni_modules/uni-scss/theme.scss | 31 +
im-uniapp/uni_modules/uni-scss/variables.scss | 62 +
.../uni_modules/uni-search-bar/changelog.md | 35 +
.../components/uni-search-bar/i18n/en.json | 4 +
.../components/uni-search-bar/i18n/index.js | 8 +
.../uni-search-bar/i18n/zh-Hans.json | 4 +
.../uni-search-bar/i18n/zh-Hant.json | 4 +
.../uni-search-bar/uni-search-bar.vue | 298 +
.../uni_modules/uni-search-bar/package.json | 86 +
.../uni_modules/uni-search-bar/readme.md | 14 +
.../uni_modules/uni-section/changelog.md | 2 +
.../components/uni-section/uni-section.vue | 167 +
.../uni_modules/uni-section/package.json | 87 +
im-uniapp/uni_modules/uni-section/readme.md | 8 +
.../uni-segmented-control/changelog.md | 9 +
.../uni-segmented-control.vue | 145 +
.../uni-segmented-control/package.json | 87 +
.../uni-segmented-control/readme.md | 13 +
im-uniapp/uni_modules/uni-steps/changelog.md | 16 +
.../components/uni-steps/uni-steps.vue | 269 +
im-uniapp/uni_modules/uni-steps/package.json | 89 +
im-uniapp/uni_modules/uni-steps/readme.md | 13 +
.../uni_modules/uni-swipe-action/changelog.md | 43 +
.../uni-swipe-action-item/bindingx.js | 302 +
.../components/uni-swipe-action-item/isPC.js | 12 +
.../uni-swipe-action-item/mpalipay.js | 195 +
.../uni-swipe-action-item/mpother.js | 260 +
.../components/uni-swipe-action-item/mpwxs.js | 84 +
.../uni-swipe-action-item/render.js | 270 +
.../uni-swipe-action-item.vue | 347 +
.../components/uni-swipe-action-item/wx.wxs | 341 +
.../uni-swipe-action/uni-swipe-action.vue | 60 +
.../uni_modules/uni-swipe-action/package.json | 84 +
.../uni_modules/uni-swipe-action/readme.md | 11 +
.../uni_modules/uni-swiper-dot/changelog.md | 12 +
.../uni-swiper-dot/uni-swiper-dot.vue | 218 +
.../uni_modules/uni-swiper-dot/package.json | 87 +
.../uni_modules/uni-swiper-dot/readme.md | 11 +
im-uniapp/uni_modules/uni-table/changelog.md | 27 +
.../components/uni-table/uni-table.vue | 455 +
.../components/uni-tbody/uni-tbody.vue | 29 +
.../uni-table/components/uni-td/uni-td.vue | 90 +
.../components/uni-th/filter-dropdown.vue | 511 +
.../uni-table/components/uni-th/uni-th.vue | 285 +
.../components/uni-thead/uni-thead.vue | 129 +
.../components/uni-tr/table-checkbox.vue | 179 +
.../uni-table/components/uni-tr/uni-tr.vue | 171 +
im-uniapp/uni_modules/uni-table/i18n/en.json | 9 +
im-uniapp/uni_modules/uni-table/i18n/es.json | 9 +
im-uniapp/uni_modules/uni-table/i18n/fr.json | 9 +
im-uniapp/uni_modules/uni-table/i18n/index.js | 12 +
.../uni_modules/uni-table/i18n/zh-Hans.json | 9 +
.../uni_modules/uni-table/i18n/zh-Hant.json | 9 +
im-uniapp/uni_modules/uni-table/package.json | 83 +
im-uniapp/uni_modules/uni-table/readme.md | 13 +
im-uniapp/uni_modules/uni-tag/changelog.md | 21 +
.../uni-tag/components/uni-tag/uni-tag.vue | 252 +
im-uniapp/uni_modules/uni-tag/package.json | 87 +
im-uniapp/uni_modules/uni-tag/readme.md | 13 +
im-uniapp/uni_modules/uni-title/changelog.md | 10 +
.../components/uni-title/uni-title.vue | 171 +
im-uniapp/uni_modules/uni-title/package.json | 88 +
im-uniapp/uni_modules/uni-title/readme.md | 14 +
.../uni_modules/uni-tooltip/changelog.md | 10 +
.../components/uni-tooltip/uni-tooltip.vue | 68 +
.../uni_modules/uni-tooltip/package.json | 83 +
im-uniapp/uni_modules/uni-tooltip/readme.md | 8 +
.../uni_modules/uni-transition/changelog.md | 22 +
.../uni-transition/createAnimation.js | 131 +
.../uni-transition/uni-transition.vue | 286 +
.../uni_modules/uni-transition/package.json | 84 +
.../uni_modules/uni-transition/readme.md | 11 +
im-uniapp/uni_modules/uni-ui/changelog.md | 541 +
.../uni-ui/components/uni-ui/uni-ui.vue | 7 +
im-uniapp/uni_modules/uni-ui/package.json | 129 +
im-uniapp/uni_modules/uni-ui/readme.md | 247 +
im-uniapp/uni_modules/uview-plus/LICENSE | 21 +
im-uniapp/uni_modules/uview-plus/README.md | 64 +
im-uniapp/uni_modules/uview-plus/changelog.md | 242 +
.../uview-plus/components/u--form/u--form.vue | 80 +
.../components/u--image/u--image.vue | 50 +
.../components/u--input/u--input.vue | 74 +
.../uview-plus/components/u--text/u--text.vue | 45 +
.../components/u--textarea/u--textarea.vue | 47 +
.../components/u-action-sheet/props.js | 57 +
.../u-action-sheet/u-action-sheet.vue | 281 +
.../uview-plus/components/u-album/props.js | 61 +
.../uview-plus/components/u-album/u-album.vue | 264 +
.../uview-plus/components/u-alert/props.js | 46 +
.../uview-plus/components/u-alert/u-alert.vue | 249 +
.../components/u-avatar-group/props.js | 54 +
.../u-avatar-group/u-avatar-group.vue | 110 +
.../uview-plus/components/u-avatar/props.js | 81 +
.../components/u-avatar/u-avatar.vue | 180 +
.../uview-plus/components/u-back-top/props.js | 56 +
.../components/u-back-top/u-back-top.vue | 133 +
.../uview-plus/components/u-badge/props.js | 79 +
.../uview-plus/components/u-badge/u-badge.vue | 177 +
.../uview-plus/components/u-button/nvue.scss | 46 +
.../uview-plus/components/u-button/props.js | 154 +
.../components/u-button/u-button.vue | 503 +
.../uview-plus/components/u-button/vue.scss | 81 +
.../components/u-calendar/header.vue | 101 +
.../components/u-calendar/month.vue | 585 +
.../uview-plus/components/u-calendar/props.js | 147 +
.../components/u-calendar/u-calendar.vue | 409 +
.../uview-plus/components/u-calendar/util.js | 86 +
.../components/u-car-keyboard/props.js | 17 +
.../u-car-keyboard/u-car-keyboard.vue | 315 +
.../components/u-cell-group/props.js | 16 +
.../components/u-cell-group/u-cell-group.vue | 67 +
.../uview-plus/components/u-cell/props.js | 112 +
.../uview-plus/components/u-cell/u-cell.vue | 249 +
.../components/u-checkbox-group/props.js | 93 +
.../u-checkbox-group/u-checkbox-group.vue | 133 +
.../uview-plus/components/u-checkbox/props.js | 76 +
.../components/u-checkbox/u-checkbox.vue | 376 +
.../components/u-circle-progress/props.js | 10 +
.../u-circle-progress/u-circle-progress.vue | 201 +
.../components/u-code-input/props.js | 90 +
.../components/u-code-input/u-code-input.vue | 266 +
.../uview-plus/components/u-code/props.js | 36 +
.../uview-plus/components/u-code/u-code.vue | 137 +
.../uview-plus/components/u-col/props.js | 31 +
.../uview-plus/components/u-col/u-col.vue | 170 +
.../components/u-collapse-item/props.js | 61 +
.../u-collapse-item/u-collapse-item.vue | 240 +
.../uview-plus/components/u-collapse/props.js | 21 +
.../components/u-collapse/u-collapse.vue | 91 +
.../components/u-column-notice/props.js | 57 +
.../u-column-notice/u-column-notice.vue | 165 +
.../uview-plus/components/u-copy/u-copy.vue | 70 +
.../components/u-count-down/props.js | 26 +
.../components/u-count-down/u-count-down.vue | 171 +
.../components/u-count-down/utils.js | 62 +
.../uview-plus/components/u-count-to/props.js | 61 +
.../components/u-count-to/u-count-to.vue | 189 +
.../components/u-datetime-picker/props.js | 145 +
.../u-datetime-picker/u-datetime-picker.vue | 455 +
.../uview-plus/components/u-divider/props.js | 46 +
.../components/u-divider/u-divider.vue | 121 +
.../components/u-dropdown-item/props.js | 47 +
.../u-dropdown-item/u-dropdown-item.vue | 121 +
.../uview-plus/components/u-dropdown/props.js | 61 +
.../components/u-dropdown/u-dropdown.vue | 254 +
.../uview-plus/components/u-empty/props.js | 61 +
.../uview-plus/components/u-empty/u-empty.vue | 133 +
.../components/u-form-item/props.js | 55 +
.../components/u-form-item/u-form-item.vue | 245 +
.../uview-plus/components/u-form/props.js | 47 +
.../uview-plus/components/u-form/u-form.vue | 218 +
.../uview-plus/components/u-gap/props.js | 26 +
.../uview-plus/components/u-gap/u-gap.vue | 41 +
.../components/u-grid-item/props.js | 16 +
.../components/u-grid-item/u-grid-item.vue | 232 +
.../uview-plus/components/u-grid/props.js | 21 +
.../uview-plus/components/u-grid/u-grid.vue | 113 +
.../uview-plus/components/u-icon/icons.js | 214 +
.../uview-plus/components/u-icon/props.js | 91 +
.../uview-plus/components/u-icon/u-icon.vue | 242 +
.../uview-plus/components/u-image/props.js | 86 +
.../uview-plus/components/u-image/u-image.vue | 237 +
.../components/u-index-anchor/props.js | 31 +
.../u-index-anchor/u-index-anchor.vue | 95 +
.../components/u-index-item/props.js | 8 +
.../components/u-index-item/u-index-item.vue | 90 +
.../components/u-index-list/props.js | 31 +
.../components/u-index-list/u-index-list.vue | 447 +
.../uview-plus/components/u-input/props.js | 198 +
.../uview-plus/components/u-input/u-input.vue | 386 +
.../uview-plus/components/u-keyboard/props.js | 86 +
.../components/u-keyboard/u-keyboard.vue | 167 +
.../components/u-lazy-load/u-lazy-load.vue | 251 +
.../components/u-line-progress/props.js | 30 +
.../u-line-progress/u-line-progress.vue | 149 +
.../uview-plus/components/u-line/props.js | 35 +
.../uview-plus/components/u-line/u-line.vue | 65 +
.../uview-plus/components/u-link/props.js | 41 +
.../uview-plus/components/u-link/u-link.vue | 87 +
.../components/u-list-item/props.js | 11 +
.../components/u-list-item/u-list-item.vue | 119 +
.../uview-plus/components/u-list/props.js | 101 +
.../uview-plus/components/u-list/u-list.vue | 183 +
.../components/u-loading-icon/props.js | 61 +
.../u-loading-icon/u-loading-icon.vue | 347 +
.../components/u-loading-page/props.js | 52 +
.../u-loading-page/u-loading-page.vue | 120 +
.../uview-plus/components/u-loadmore/props.js | 96 +
.../components/u-loadmore/u-loadmore.vue | 155 +
.../u-message-input/u-message-input.vue | 318 +
.../uview-plus/components/u-modal/props.js | 86 +
.../uview-plus/components/u-modal/u-modal.vue | 234 +
.../uview-plus/components/u-navbar/props.js | 87 +
.../components/u-navbar/u-navbar.vue | 193 +
.../components/u-no-network/props.js | 21 +
.../components/u-no-network/u-no-network.vue | 223 +
.../components/u-notice-bar/props.js | 72 +
.../components/u-notice-bar/u-notice-bar.vue | 105 +
.../uview-plus/components/u-notify/props.js | 51 +
.../components/u-notify/u-notify.vue | 222 +
.../components/u-number-box/props.js | 120 +
.../components/u-number-box/u-number-box.vue | 465 +
.../components/u-number-keyboard/props.js | 21 +
.../u-number-keyboard/u-number-keyboard.vue | 198 +
.../uview-plus/components/u-overlay/props.js | 26 +
.../components/u-overlay/u-overlay.vue | 71 +
.../components/u-parse/node/node.vue | 576 +
.../uview-plus/components/u-parse/parser.js | 1333 +
.../uview-plus/components/u-parse/props.js | 48 +
.../uview-plus/components/u-parse/u-parse.vue | 505 +
.../components/u-picker-column/props.js | 7 +
.../u-picker-column/u-picker-column.vue | 29 +
.../uview-plus/components/u-picker/props.js | 98 +
.../components/u-picker/u-picker.vue | 336 +
.../uview-plus/components/u-popup/props.js | 81 +
.../uview-plus/components/u-popup/u-popup.vue | 308 +
.../uview-plus/components/u-qrcode/qrcode.js | 1206 +
.../components/u-qrcode/u-qrcode.vue | 199 +
.../components/u-radio-group/props.js | 95 +
.../u-radio-group/u-radio-group.vue | 128 +
.../uview-plus/components/u-radio/props.js | 71 +
.../uview-plus/components/u-radio/u-radio.vue | 348 +
.../uview-plus/components/u-rate/props.js | 80 +
.../uview-plus/components/u-rate/u-rate.vue | 328 +
.../components/u-read-more/props.js | 63 +
.../components/u-read-more/u-read-more.vue | 167 +
.../components/u-row-notice/props.js | 41 +
.../components/u-row-notice/u-row-notice.vue | 344 +
.../uview-plus/components/u-row/props.js | 21 +
.../uview-plus/components/u-row/u-row.vue | 97 +
.../components/u-safe-bottom/props.js | 7 +
.../u-safe-bottom/u-safe-bottom.vue | 59 +
.../components/u-scroll-list/nvue.js | 31 +
.../components/u-scroll-list/other.js | 0
.../components/u-scroll-list/props.js | 36 +
.../components/u-scroll-list/scrollWxs.wxs | 50 +
.../u-scroll-list/u-scroll-list.vue | 232 +
.../uview-plus/components/u-search/props.js | 134 +
.../components/u-search/u-search.vue | 331 +
.../uview-plus/components/u-skeleton/props.js | 61 +
.../components/u-skeleton/u-skeleton.vue | 249 +
.../uview-plus/components/u-slider/mpother.js | 113 +
.../uview-plus/components/u-slider/mpwxs.js | 43 +
.../uview-plus/components/u-slider/mpwxs.wxs | 121 +
.../components/u-slider/nvue - 副本.js | 180 +
.../uview-plus/components/u-slider/nvue.js | 193 +
.../uview-plus/components/u-slider/props.js | 65 +
.../components/u-slider/u-slider.vue | 71 +
.../components/u-status-bar/props.js | 10 +
.../components/u-status-bar/u-status-bar.vue | 49 +
.../components/u-steps-item/props.js | 26 +
.../components/u-steps-item/u-steps-item.vue | 320 +
.../uview-plus/components/u-steps/props.js | 41 +
.../uview-plus/components/u-steps/u-steps.vue | 83 +
.../uview-plus/components/u-sticky/props.js | 42 +
.../components/u-sticky/u-sticky.vue | 221 +
.../components/u-subsection/props.js | 51 +
.../components/u-subsection/u-subsection.vue | 318 +
.../components/u-swipe-action-item/alipay.sjs | 229 +
.../u-swipe-action-item/index - backup.wxs | 256 +
.../components/u-swipe-action-item/index.wxs | 229 +
.../u-swipe-action-item/nvue - backup.js | 270 +
.../components/u-swipe-action-item/nvue.js | 179 +
.../components/u-swipe-action-item/other.js | 171 +
.../components/u-swipe-action-item/props.js | 43 +
.../u-swipe-action-item.vue | 229 +
.../components/u-swipe-action-item/wxs.js | 15 +
.../components/u-swipe-action/props.js | 11 +
.../u-swipe-action/u-swipe-action.vue | 69 +
.../components/u-swiper-indicator/props.js | 31 +
.../u-swiper-indicator/u-swiper-indicator.vue | 115 +
.../uview-plus/components/u-swiper/props.js | 127 +
.../components/u-swiper/u-swiper.vue | 267 +
.../uview-plus/components/u-switch/props.js | 64 +
.../components/u-switch/u-switch.vue | 216 +
.../components/u-tabbar-item/props.js | 37 +
.../u-tabbar-item/u-tabbar-item.vue | 156 +
.../uview-plus/components/u-tabbar/props.js | 47 +
.../components/u-tabbar/u-tabbar.vue | 145 +
.../uview-plus/components/u-table/props.js | 7 +
.../uview-plus/components/u-table/u-table.vue | 31 +
.../components/u-tabs-item/props.js | 7 +
.../components/u-tabs-item/u-tabs-item.vue | 31 +
.../uview-plus/components/u-tabs/props.js | 66 +
.../uview-plus/components/u-tabs/u-tabs.vue | 362 +
.../uview-plus/components/u-tag/props.js | 90 +
.../uview-plus/components/u-tag/u-tag.vue | 368 +
.../uview-plus/components/u-td/props.js | 7 +
.../uview-plus/components/u-td/u-td.vue | 33 +
.../uview-plus/components/u-text/props.js | 112 +
.../uview-plus/components/u-text/u-text.vue | 228 +
.../uview-plus/components/u-text/value.js | 87 +
.../uview-plus/components/u-textarea/props.js | 127 +
.../components/u-textarea/u-textarea.vue | 278 +
.../uview-plus/components/u-toast/u-toast.vue | 301 +
.../uview-plus/components/u-toolbar/props.js | 36 +
.../components/u-toolbar/u-toolbar.vue | 105 +
.../uview-plus/components/u-tooltip/props.js | 61 +
.../components/u-tooltip/u-tooltip.vue | 342 +
.../uview-plus/components/u-tr/props.js | 7 +
.../uview-plus/components/u-tr/u-tr.vue | 33 +
.../components/u-transition/nvue-ani-map.js | 68 +
.../components/u-transition/props.js | 26 +
.../components/u-transition/transition.js | 163 +
.../components/u-transition/u-transition.vue | 96 +
.../u-transition/vue.ani-style.scss | 113 +
.../uview-plus/components/u-upload/mixin.js | 23 +
.../uview-plus/components/u-upload/props.js | 130 +
.../components/u-upload/u-upload.vue | 581 +
.../uview-plus/components/u-upload/utils.js | 160 +
.../components/u-waterfall/u-waterfall.vue | 225 +
.../components/uview-plus/uview-plus.vue | 15 +
im-uniapp/uni_modules/uview-plus/index.js | 94 +
im-uniapp/uni_modules/uview-plus/index.scss | 24 +
.../uview-plus/libs/config/color.js | 17 +
.../uview-plus/libs/config/config.js | 33 +
.../uview-plus/libs/config/props.js | 190 +
.../libs/config/props/actionSheet.js | 25 +
.../uview-plus/libs/config/props/album.js | 25 +
.../uview-plus/libs/config/props/alert.js | 22 +
.../uview-plus/libs/config/props/avatar.js | 28 +
.../libs/config/props/avatarGroup.js | 23 +
.../uview-plus/libs/config/props/backtop.js | 27 +
.../uview-plus/libs/config/props/badge.js | 27 +
.../uview-plus/libs/config/props/button.js | 42 +
.../uview-plus/libs/config/props/calendar.js | 42 +
.../libs/config/props/carKeyboard.js | 15 +
.../uview-plus/libs/config/props/cell.js | 35 +
.../uview-plus/libs/config/props/cellGroup.js | 17 +
.../uview-plus/libs/config/props/checkbox.js | 27 +
.../libs/config/props/checkboxGroup.js | 29 +
.../libs/config/props/circleProgress.js | 15 +
.../uview-plus/libs/config/props/code.js | 21 +
.../uview-plus/libs/config/props/codeInput.js | 29 +
.../uview-plus/libs/config/props/col.js | 19 +
.../uview-plus/libs/config/props/collapse.js | 17 +
.../libs/config/props/collapseItem.js | 25 +
.../libs/config/props/columnNotice.js | 24 +
.../uview-plus/libs/config/props/countDown.js | 18 +
.../uview-plus/libs/config/props/countTo.js | 25 +
.../libs/config/props/datetimePicker.js | 37 +
.../uview-plus/libs/config/props/divider.js | 23 +
.../uview-plus/libs/config/props/empty.js | 26 +
.../uview-plus/libs/config/props/form.js | 22 +
.../uview-plus/libs/config/props/formItem.js | 24 +
.../uview-plus/libs/config/props/gap.js | 19 +
.../uview-plus/libs/config/props/grid.js | 17 +
.../uview-plus/libs/config/props/gridItem.js | 16 +
.../uview-plus/libs/config/props/icon.js | 36 +
.../uview-plus/libs/config/props/image.js | 30 +
.../libs/config/props/indexAnchor.js | 19 +
.../uview-plus/libs/config/props/indexList.js | 19 +
.../uview-plus/libs/config/props/input.js | 48 +
.../uview-plus/libs/config/props/keyboard.js | 30 +
.../uview-plus/libs/config/props/line.js | 20 +
.../libs/config/props/lineProgress.js | 19 +
.../uview-plus/libs/config/props/link.js | 26 +
.../uview-plus/libs/config/props/list.js | 28 +
.../uview-plus/libs/config/props/listItem.js | 15 +
.../libs/config/props/loadingIcon.js | 30 +
.../libs/config/props/loadingPage.js | 23 +
.../uview-plus/libs/config/props/loadmore.js | 32 +
.../uview-plus/libs/config/props/modal.js | 30 +
.../uview-plus/libs/config/props/navbar.js | 32 +
.../uview-plus/libs/config/props/noNetwork.js | 18 +
.../uview-plus/libs/config/props/noticeBar.js | 27 +
.../uview-plus/libs/config/props/notify.js | 22 +
.../uview-plus/libs/config/props/numberBox.js | 35 +
.../libs/config/props/numberKeyboard.js | 17 +
.../uview-plus/libs/config/props/overlay.js | 18 +
.../uview-plus/libs/config/props/parse.js | 22 +
.../uview-plus/libs/config/props/picker.js | 30 +
.../uview-plus/libs/config/props/popup.js | 29 +
.../uview-plus/libs/config/props/radio.js | 27 +
.../libs/config/props/radioGroup.js | 30 +
.../uview-plus/libs/config/props/rate.js | 26 +
.../uview-plus/libs/config/props/readMore.js | 22 +
.../uview-plus/libs/config/props/row.js | 17 +
.../uview-plus/libs/config/props/rowNotice.js | 21 +
.../libs/config/props/scrollList.js | 20 +
.../uview-plus/libs/config/props/search.js | 37 +
.../uview-plus/libs/config/props/section.js | 24 +
.../uview-plus/libs/config/props/skeleton.js | 25 +
.../uview-plus/libs/config/props/slider.js | 25 +
.../uview-plus/libs/config/props/statusBar.js | 15 +
.../uview-plus/libs/config/props/steps.js | 21 +
.../uview-plus/libs/config/props/stepsItem.js | 18 +
.../uview-plus/libs/config/props/sticky.js | 20 +
.../libs/config/props/subsection.js | 23 +
.../libs/config/props/swipeAction.js | 15 +
.../libs/config/props/swipeActionItem.js | 21 +
.../uview-plus/libs/config/props/swiper.js | 39 +
.../libs/config/props/swipterIndicator.js | 19 +
.../uview-plus/libs/config/props/switch.js | 24 +
.../uview-plus/libs/config/props/tabbar.js | 22 +
.../libs/config/props/tabbarItem.js | 20 +
.../uview-plus/libs/config/props/tabs.js | 32 +
.../uview-plus/libs/config/props/tag.js | 30 +
.../uview-plus/libs/config/props/text.js | 38 +
.../uview-plus/libs/config/props/textarea.js | 36 +
.../uview-plus/libs/config/props/toast.js | 30 +
.../uview-plus/libs/config/props/toolbar.js | 21 +
.../uview-plus/libs/config/props/tooltip.js | 25 +
.../libs/config/props/transition.js | 18 +
.../uview-plus/libs/config/props/upload.js | 37 +
.../uview-plus/libs/config/zIndex.js | 20 +
.../uview-plus/libs/css/color.scss | 155 +
.../uview-plus/libs/css/common.scss | 102 +
.../uview-plus/libs/css/components.scss | 25 +
.../uni_modules/uview-plus/libs/css/flex.scss | 299 +
.../uni_modules/uview-plus/libs/css/h5.scss | 0
.../uview-plus/libs/css/mixin.scss | 8 +
.../uni_modules/uview-plus/libs/css/mp.scss | 0
.../uni_modules/uview-plus/libs/css/nvue.scss | 0
.../uni_modules/uview-plus/libs/css/vue.scss | 27 +
.../uview-plus/libs/function/colorGradient.js | 134 +
.../uview-plus/libs/function/debounce.js | 29 +
.../uview-plus/libs/function/digit.js | 167 +
.../uview-plus/libs/function/index.js | 724 +
.../uview-plus/libs/function/platform.js | 75 +
.../uview-plus/libs/function/test.js | 288 +
.../uview-plus/libs/function/throttle.js | 30 +
.../libs/luch-request/adapters/index.js | 97 +
.../luch-request/core/InterceptorManager.js | 50 +
.../libs/luch-request/core/Request.js | 198 +
.../libs/luch-request/core/buildFullPath.js | 20 +
.../libs/luch-request/core/defaults.js | 29 +
.../libs/luch-request/core/dispatchRequest.js | 3 +
.../libs/luch-request/core/mergeConfig.js | 103 +
.../libs/luch-request/core/settle.js | 16 +
.../libs/luch-request/helpers/buildURL.js | 69 +
.../libs/luch-request/helpers/combineURLs.js | 14 +
.../luch-request/helpers/isAbsoluteURL.js | 14 +
.../uview-plus/libs/luch-request/index.d.ts | 116 +
.../uview-plus/libs/luch-request/index.js | 3 +
.../uview-plus/libs/luch-request/utils.js | 131 +
.../libs/luch-request/utils/clone.js | 264 +
.../uview-plus/libs/mixin/button.js | 18 +
.../uview-plus/libs/mixin/mixin.js | 176 +
.../uview-plus/libs/mixin/mpMixin.js | 13 +
.../uview-plus/libs/mixin/mpShare.js | 26 +
.../uview-plus/libs/mixin/openType.js | 27 +
.../uview-plus/libs/mixin/style.js | 249 +
.../uview-plus/libs/mixin/touch.js | 61 +
.../uview-plus/libs/util/async-validator.js | 1343 +
.../uview-plus/libs/util/calendar.js | 546 +
.../uview-plus/libs/util/emitter.js | 51 +
.../uni_modules/uview-plus/libs/util/route.js | 124 +
im-uniapp/uni_modules/uview-plus/libs/vue.js | 3 +
im-uniapp/uni_modules/uview-plus/package.json | 93 +
im-uniapp/uni_modules/uview-plus/theme.scss | 44 +
.../uni_modules/uview-plus/types/comps.d.ts | 99 +
.../uview-plus/types/comps/_common.d.ts | 9 +
.../uview-plus/types/comps/actionSheet.d.ts | 121 +
.../uview-plus/types/comps/album.d.ts | 72 +
.../uview-plus/types/comps/alert.d.ts | 55 +
.../uview-plus/types/comps/avatar.d.ts | 85 +
.../uview-plus/types/comps/avatarGroup.d.ts | 62 +
.../uview-plus/types/comps/backTop.d.ts | 74 +
.../uview-plus/types/comps/badge.d.ts | 76 +
.../uview-plus/types/comps/button.d.ts | 169 +
.../uview-plus/types/comps/calendar.d.ts | 164 +
.../uview-plus/types/comps/cell.d.ts | 133 +
.../uview-plus/types/comps/cellGroup.d.ts | 27 +
.../uview-plus/types/comps/checkbox.d.ts | 69 +
.../uview-plus/types/comps/checkboxGroup.d.ts | 93 +
.../uview-plus/types/comps/code.d.ts | 69 +
.../uview-plus/types/comps/codeInput.d.ts | 98 +
.../uview-plus/types/comps/col.d.ts | 43 +
.../uview-plus/types/comps/collapse.d.ts | 52 +
.../uview-plus/types/comps/collapseItem.d.ts | 83 +
.../uview-plus/types/comps/countDown.d.ts | 60 +
.../uview-plus/types/comps/countTo.d.ts | 88 +
.../types/comps/datetimePicker.d.ts | 146 +
.../uview-plus/types/comps/divider.d.ts | 58 +
.../uview-plus/types/comps/empty.d.ts | 72 +
.../uview-plus/types/comps/form.d.ts | 76 +
.../uview-plus/types/comps/formItem.d.ts | 68 +
.../uview-plus/types/comps/gap.d.ts | 35 +
.../uview-plus/types/comps/grid.d.ts | 34 +
.../uview-plus/types/comps/gridItem.d.ts | 28 +
.../uview-plus/types/comps/icon.d.ts | 93 +
.../uview-plus/types/comps/image.d.ts | 119 +
.../uview-plus/types/comps/indexAnchor.d.ts | 38 +
.../uview-plus/types/comps/indexItem.d.ts | 18 +
.../uview-plus/types/comps/indexList.d.ts | 39 +
.../uview-plus/types/comps/input.d.ts | 234 +
.../uview-plus/types/comps/keyboard.d.ts | 125 +
.../uview-plus/types/comps/line.d.ts | 44 +
.../uview-plus/types/comps/lineProgress.d.ts | 51 +
.../uview-plus/types/comps/link.d.ts | 51 +
.../uview-plus/types/comps/list.d.ts | 92 +
.../uview-plus/types/comps/listItem.d.ts | 18 +
.../uview-plus/types/comps/loadMore.d.ts | 108 +
.../uview-plus/types/comps/loadingIcon.d.ts | 68 +
.../uview-plus/types/comps/loadingPage.d.ts | 58 +
.../uview-plus/types/comps/modal.d.ts | 115 +
.../uview-plus/types/comps/navbar.d.ts | 113 +
.../uview-plus/types/comps/noNetwork.d.ts | 40 +
.../uview-plus/types/comps/noticeBar.d.ts | 85 +
.../uview-plus/types/comps/notify.d.ts | 73 +
.../uview-plus/types/comps/numberBox.d.ts | 155 +
.../uview-plus/types/comps/overlay.d.ts | 46 +
.../uview-plus/types/comps/parse.d.ts | 101 +
.../uview-plus/types/comps/picker.d.ts | 115 +
.../uview-plus/types/comps/popup.d.ts | 103 +
.../uview-plus/types/comps/radio.d.ts | 77 +
.../uview-plus/types/comps/radioGroup.d.ts | 97 +
.../uview-plus/types/comps/rate.d.ts | 85 +
.../uview-plus/types/comps/readMore.d.ts | 80 +
.../uview-plus/types/comps/row.d.ts | 34 +
.../uview-plus/types/comps/scrollList.d.ts | 51 +
.../uview-plus/types/comps/search.d.ts | 167 +
.../uview-plus/types/comps/skeleton.d.ts | 70 +
.../uview-plus/types/comps/slider.d.ts | 79 +
.../uview-plus/types/comps/steps.d.ts | 48 +
.../uview-plus/types/comps/stepsItem.d.ts | 41 +
.../uview-plus/types/comps/sticky.d.ts | 48 +
.../uview-plus/types/comps/subsection.d.ts | 64 +
.../uview-plus/types/comps/swipeAction.d.ts | 24 +
.../types/comps/swipeActionItem.d.ts | 58 +
.../uview-plus/types/comps/swiper.d.ts | 142 +
.../types/comps/swiperIndicator.d.ts | 37 +
.../uview-plus/types/comps/switch.d.ts | 73 +
.../uview-plus/types/comps/tabbar.d.ts | 54 +
.../uview-plus/types/comps/tabbarItem.d.ts | 52 +
.../uview-plus/types/comps/tabs.d.ts | 85 +
.../uview-plus/types/comps/tag.d.ts | 93 +
.../uview-plus/types/comps/text.d.ts | 110 +
.../uview-plus/types/comps/textarea.d.ts | 158 +
.../uview-plus/types/comps/toast.d.ts | 59 +
.../uview-plus/types/comps/tooltip.d.ts | 71 +
.../uview-plus/types/comps/transition.d.ts | 61 +
.../uview-plus/types/comps/upload.d.ts | 163 +
.../uni_modules/uview-plus/types/index.d.ts | 47 +
.../uni_modules/uview-plus/types/package.json | 26 +
.../dist/cache/.vite/deps/_metadata.json | 31 +
.../dist/cache/.vite/deps/chunk-Y2F7D3TJ.js | 9 +
.../cache/.vite/deps/chunk-Y2F7D3TJ.js.map | 7 +
.../dist/cache/.vite/deps/package.json | 3 +
.../dist/cache/.vite/deps/pinyin-pro.js | 24931 ++++++++++++++++
.../dist/cache/.vite/deps/pinyin-pro.js.map | 7 +
.../cache/.vite/deps/quill-image-resize-mp.js | 988 +
.../.vite/deps/quill-image-resize-mp.js.map | 7 +
.../unpackage/dist/cache/.vite/deps/quill.js | 11733 ++++++++
.../dist/cache/.vite/deps/quill.js.map | 7 +
im-uniapp/unpackage/res/icons/1024x1024.png | Bin 0 -> 210018 bytes
im-uniapp/unpackage/res/icons/120x120.png | Bin 0 -> 7823 bytes
im-uniapp/unpackage/res/icons/144x144.png | Bin 0 -> 10005 bytes
im-uniapp/unpackage/res/icons/152x152.png | Bin 0 -> 10801 bytes
im-uniapp/unpackage/res/icons/167x167.png | Bin 0 -> 12308 bytes
im-uniapp/unpackage/res/icons/180x180.png | Bin 0 -> 13839 bytes
im-uniapp/unpackage/res/icons/192x192.png | Bin 0 -> 14965 bytes
im-uniapp/unpackage/res/icons/20x20.png | Bin 0 -> 839 bytes
im-uniapp/unpackage/res/icons/29x29.png | Bin 0 -> 1267 bytes
im-uniapp/unpackage/res/icons/40x40.png | Bin 0 -> 1908 bytes
im-uniapp/unpackage/res/icons/58x58.png | Bin 0 -> 3017 bytes
im-uniapp/unpackage/res/icons/60x60.png | Bin 0 -> 3211 bytes
im-uniapp/unpackage/res/icons/72x72.png | Bin 0 -> 4042 bytes
im-uniapp/unpackage/res/icons/76x76.png | Bin 0 -> 4355 bytes
im-uniapp/unpackage/res/icons/80x80.png | Bin 0 -> 4678 bytes
im-uniapp/unpackage/res/icons/87x87.png | Bin 0 -> 5214 bytes
im-uniapp/unpackage/res/icons/96x96.png | Bin 0 -> 5809 bytes
im-uniapp/vite.config.js | 17 +
im-web/.env.development | 8 +
im-web/.env.production | 8 +
im-web/README.md | 24 +
im-web/babel.config.js | 5 +
im-web/package.json | 63 +
im-web/public/index.html | 13 +
im-web/public/logo.png | Bin 0 -> 143941 bytes
im-web/src/App.vue | 24 +
im-web/src/api/camera.js | 72 +
im-web/src/api/date.js | 66 +
im-web/src/api/element.js | 30 +
im-web/src/api/emotion.js | 40 +
im-web/src/api/enums.js | 72 +
im-web/src/api/eventBus.js | 3 +
im-web/src/api/httpRequest.js | 106 +
im-web/src/api/messageType.js | 40 +
im-web/src/api/rtcGroupApi.js | 151 +
im-web/src/api/rtcPrivateApi.js | 75 +
im-web/src/api/str.js | 14 +
im-web/src/api/url.js | 15 +
im-web/src/api/webrtc.js | 120 +
im-web/src/api/wssocket.js | 145 +
im-web/src/assets/audio/call.wav | Bin 0 -> 190044 bytes
im-web/src/assets/audio/tip.mp3 | Bin 0 -> 9188 bytes
im-web/src/assets/emoji/0.gif | Bin 0 -> 25453 bytes
im-web/src/assets/emoji/1.gif | Bin 0 -> 21025 bytes
im-web/src/assets/emoji/10.gif | Bin 0 -> 26326 bytes
im-web/src/assets/emoji/11.gif | Bin 0 -> 31166 bytes
im-web/src/assets/emoji/12.gif | Bin 0 -> 20518 bytes
im-web/src/assets/emoji/13.gif | Bin 0 -> 26710 bytes
im-web/src/assets/emoji/14.gif | Bin 0 -> 18572 bytes
im-web/src/assets/emoji/15.gif | Bin 0 -> 6813 bytes
im-web/src/assets/emoji/16.gif | Bin 0 -> 25676 bytes
im-web/src/assets/emoji/17.gif | Bin 0 -> 3941 bytes
im-web/src/assets/emoji/18.gif | Bin 0 -> 28136 bytes
im-web/src/assets/emoji/19.gif | Bin 0 -> 19070 bytes
im-web/src/assets/emoji/2.gif | Bin 0 -> 27832 bytes
im-web/src/assets/emoji/20.gif | Bin 0 -> 28772 bytes
im-web/src/assets/emoji/21.gif | Bin 0 -> 28910 bytes
im-web/src/assets/emoji/22.gif | Bin 0 -> 30881 bytes
im-web/src/assets/emoji/23.gif | Bin 0 -> 14550 bytes
im-web/src/assets/emoji/24.gif | Bin 0 -> 18907 bytes
im-web/src/assets/emoji/25.gif | Bin 0 -> 27966 bytes
im-web/src/assets/emoji/26.gif | Bin 0 -> 23448 bytes
im-web/src/assets/emoji/27.gif | Bin 0 -> 18056 bytes
im-web/src/assets/emoji/28.gif | Bin 0 -> 24473 bytes
im-web/src/assets/emoji/29.gif | Bin 0 -> 15014 bytes
im-web/src/assets/emoji/3.gif | Bin 0 -> 30063 bytes
im-web/src/assets/emoji/30.gif | Bin 0 -> 29712 bytes
im-web/src/assets/emoji/31.gif | Bin 0 -> 11899 bytes
im-web/src/assets/emoji/32.gif | Bin 0 -> 15778 bytes
im-web/src/assets/emoji/33.gif | Bin 0 -> 12778 bytes
im-web/src/assets/emoji/34.gif | Bin 0 -> 12700 bytes
im-web/src/assets/emoji/35.gif | Bin 0 -> 11496 bytes
im-web/src/assets/emoji/36.gif | Bin 0 -> 5239 bytes
im-web/src/assets/emoji/37.gif | Bin 0 -> 25648 bytes
im-web/src/assets/emoji/38.gif | Bin 0 -> 16059 bytes
im-web/src/assets/emoji/39.gif | Bin 0 -> 14181 bytes
im-web/src/assets/emoji/4.gif | Bin 0 -> 8534 bytes
im-web/src/assets/emoji/40.gif | Bin 0 -> 26853 bytes
im-web/src/assets/emoji/41.gif | Bin 0 -> 7578 bytes
im-web/src/assets/emoji/42.gif | Bin 0 -> 26805 bytes
im-web/src/assets/emoji/43.gif | Bin 0 -> 13418 bytes
im-web/src/assets/emoji/44.gif | Bin 0 -> 10462 bytes
im-web/src/assets/emoji/45.gif | Bin 0 -> 20958 bytes
im-web/src/assets/emoji/46.gif | Bin 0 -> 19709 bytes
im-web/src/assets/emoji/47.gif | Bin 0 -> 19470 bytes
im-web/src/assets/emoji/48.gif | Bin 0 -> 20357 bytes
im-web/src/assets/emoji/49.gif | Bin 0 -> 15067 bytes
im-web/src/assets/emoji/5.gif | Bin 0 -> 30181 bytes
im-web/src/assets/emoji/50.gif | Bin 0 -> 18193 bytes
im-web/src/assets/emoji/51.gif | Bin 0 -> 18456 bytes
im-web/src/assets/emoji/52.gif | Bin 0 -> 24389 bytes
im-web/src/assets/emoji/53.gif | Bin 0 -> 20781 bytes
im-web/src/assets/emoji/54.gif | Bin 0 -> 15802 bytes
im-web/src/assets/emoji/55.gif | Bin 0 -> 10814 bytes
im-web/src/assets/emoji/56.gif | Bin 0 -> 12603 bytes
im-web/src/assets/emoji/6.gif | Bin 0 -> 24978 bytes
im-web/src/assets/emoji/7.gif | Bin 0 -> 30431 bytes
im-web/src/assets/emoji/8.gif | Bin 0 -> 12217 bytes
im-web/src/assets/emoji/9.gif | Bin 0 -> 31401 bytes
im-web/src/assets/iconfont/iconfont.css | 153 +
im-web/src/assets/iconfont/iconfont.ttf | Bin 0 -> 10720 bytes
im-web/src/assets/image/icp_logo.png | Bin 0 -> 11143 bytes
im-web/src/assets/style/element.scss | 130 +
im-web/src/assets/style/im.scss | 115 +
im-web/src/assets/style/thems.scss | 6 +
im-web/src/components/chat/ChatAtBox.vue | 133 +
im-web/src/components/chat/ChatBox.vue | 991 +
.../src/components/chat/ChatGroupMember.vue | 64 +
.../src/components/chat/ChatGroupReaded.vue | 189 +
im-web/src/components/chat/ChatGroupSide.vue | 274 +
im-web/src/components/chat/ChatHistory.vue | 171 +
im-web/src/components/chat/ChatInput.vue | 549 +
im-web/src/components/chat/ChatItem.vue | 222 +
.../src/components/chat/ChatMessageItem.vue | 474 +
im-web/src/components/chat/ChatRecord.vue | 137 +
im-web/src/components/common/Emotion.vue | 71 +
im-web/src/components/common/FileUpload.vue | 109 +
im-web/src/components/common/FullImage.vue | 86 +
im-web/src/components/common/HeadImage.vue | 137 +
im-web/src/components/common/Icp.vue | 26 +
.../src/components/common/ResizableAside.vue | 131 +
im-web/src/components/common/RightMenu.vue | 90 +
im-web/src/components/common/UserInfo.vue | 173 +
.../src/components/common/VirtualScroller.vue | 74 +
im-web/src/components/friend/AddFriend.vue | 141 +
im-web/src/components/friend/FriendItem.vue | 132 +
.../src/components/group/AddGroupMember.vue | 173 +
im-web/src/components/group/GroupItem.vue | 62 +
im-web/src/components/group/GroupMember.vue | 62 +
.../src/components/group/GroupMemberItem.vue | 69 +
.../components/group/GroupMemberSelector.vue | 178 +
im-web/src/components/rtc/RtcGroupJoin.vue | 118 +
im-web/src/components/rtc/RtcGroupVideo.vue | 45 +
.../src/components/rtc/RtcPrivateAcceptor.vue | 127 +
im-web/src/components/rtc/RtcPrivateVideo.vue | 497 +
im-web/src/components/setting/Setting.vue | 140 +
im-web/src/main.js | 54 +
im-web/src/router/index.js | 49 +
im-web/src/store/chatStore.js | 573 +
im-web/src/store/configStore.js | 37 +
im-web/src/store/friendStore.js | 99 +
im-web/src/store/groupStore.js | 67 +
im-web/src/store/userStore.js | 48 +
im-web/src/utils/directive/dialogDrag.js | 72 +
im-web/src/view/Chat.vue | 129 +
im-web/src/view/Friend.vue | 290 +
im-web/src/view/Group.vue | 496 +
im-web/src/view/Home.vue | 626 +
im-web/src/view/Login.vue | 235 +
im-web/src/view/Register.vue | 234 +
im-web/vue.config.js | 18 +
pom.xml | 90 +
截图/app/1.png | Bin 0 -> 1281504 bytes
截图/app/2.png | Bin 0 -> 1872579 bytes
截图/h5二维码.png | Bin 0 -> 15355 bytes
截图/web/单人通话.jpg | Bin 0 -> 172593 bytes
截图/web/多人通话.jpg | Bin 0 -> 206414 bytes
截图/web/好友.jpg | Bin 0 -> 144521 bytes
截图/web/私聊.jpg | Bin 0 -> 147180 bytes
截图/web/群列表.jpg | Bin 0 -> 193436 bytes
截图/web/群聊.jpg | Bin 0 -> 191729 bytes
截图/消息推送集群化.jpg | Bin 0 -> 135767 bytes
1273 files changed, 158507 insertions(+)
create mode 100644 .gitignore
create mode 100644 LICENSE
create mode 100644 README.md
create mode 100644 db/im-platform.sql
create mode 100644 db/敏感词库初始化.sql
create mode 100644 im-client/pom.xml
create mode 100644 im-client/src/main/java/com/bx/imclient/IMAutoConfiguration.java
create mode 100644 im-client/src/main/java/com/bx/imclient/IMClient.java
create mode 100644 im-client/src/main/java/com/bx/imclient/annotation/IMListener.java
create mode 100644 im-client/src/main/java/com/bx/imclient/listener/MessageListener.java
create mode 100644 im-client/src/main/java/com/bx/imclient/listener/MessageListenerMulticaster.java
create mode 100644 im-client/src/main/java/com/bx/imclient/sender/IMSender.java
create mode 100644 im-client/src/main/java/com/bx/imclient/task/AbstractMessageResultTask.java
create mode 100644 im-client/src/main/java/com/bx/imclient/task/GroupMessageResultResultTask.java
create mode 100644 im-client/src/main/java/com/bx/imclient/task/PrivateMessageResultResultTask.java
create mode 100644 im-client/src/main/java/com/bx/imclient/task/SystemMessageResultResultTask.java
create mode 100644 im-client/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
create mode 100644 im-common/pom.xml
create mode 100644 im-common/src/main/java/com/bx/imcommon/contant/IMConstant.java
create mode 100644 im-common/src/main/java/com/bx/imcommon/contant/IMRedisKey.java
create mode 100644 im-common/src/main/java/com/bx/imcommon/enums/IMCmdType.java
create mode 100644 im-common/src/main/java/com/bx/imcommon/enums/IMListenerType.java
create mode 100644 im-common/src/main/java/com/bx/imcommon/enums/IMSendCode.java
create mode 100644 im-common/src/main/java/com/bx/imcommon/enums/IMTerminalType.java
create mode 100644 im-common/src/main/java/com/bx/imcommon/model/IMGroupMessage.java
create mode 100644 im-common/src/main/java/com/bx/imcommon/model/IMHeartbeatInfo.java
create mode 100644 im-common/src/main/java/com/bx/imcommon/model/IMLoginInfo.java
create mode 100644 im-common/src/main/java/com/bx/imcommon/model/IMPrivateMessage.java
create mode 100644 im-common/src/main/java/com/bx/imcommon/model/IMRecvInfo.java
create mode 100644 im-common/src/main/java/com/bx/imcommon/model/IMSendInfo.java
create mode 100644 im-common/src/main/java/com/bx/imcommon/model/IMSendResult.java
create mode 100644 im-common/src/main/java/com/bx/imcommon/model/IMSessionInfo.java
create mode 100644 im-common/src/main/java/com/bx/imcommon/model/IMSystemMessage.java
create mode 100644 im-common/src/main/java/com/bx/imcommon/model/IMUserInfo.java
create mode 100644 im-common/src/main/java/com/bx/imcommon/mq/RedisMQConfig.java
create mode 100644 im-common/src/main/java/com/bx/imcommon/mq/RedisMQConsumer.java
create mode 100644 im-common/src/main/java/com/bx/imcommon/mq/RedisMQListener.java
create mode 100644 im-common/src/main/java/com/bx/imcommon/mq/RedisMQPullTask.java
create mode 100644 im-common/src/main/java/com/bx/imcommon/mq/RedisMQTemplate.java
create mode 100644 im-common/src/main/java/com/bx/imcommon/serializer/DateToLongSerializer.java
create mode 100644 im-common/src/main/java/com/bx/imcommon/util/CommaTextUtils.java
create mode 100644 im-common/src/main/java/com/bx/imcommon/util/JwtUtil.java
create mode 100644 im-common/src/main/java/com/bx/imcommon/util/ThreadPoolExecutorFactory.java
create mode 100644 im-platform/pom.xml
create mode 100644 im-platform/src/main/java/com/bx/implatform/IMPlatformApp.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/annotation/OnlineCheck.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/annotation/RedisLock.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/annotation/RepeatSubmit.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/aspect/OnlineCheckAspect.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/aspect/RedisLockAspect.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/aspect/RepeatSubmitAspect.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/config/ICEServer.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/config/MinIoClientConfig.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/config/MvcConfig.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/config/RedisConfig.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/config/SwaggerConfig.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/config/TaskSchedulerConfig.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/config/WebrtcConfig.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/config/props/JwtProperties.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/config/props/MinioProperties.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/contant/Constant.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/contant/RedisKey.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/controller/FileController.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/controller/FriendController.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/controller/GroupController.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/controller/GroupMessageController.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/controller/LoginController.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/controller/PrivateMessageController.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/controller/SystemController.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/controller/UserController.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/controller/WebrtcPrivateController.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/dto/FriendDndDTO.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/dto/GroupBanDTO.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/dto/GroupDndDTO.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/dto/GroupInviteDTO.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/dto/GroupMemberRemoveDTO.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/dto/GroupMessageDTO.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/dto/GroupUnbanDTO.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/dto/LoginDTO.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/dto/ModifyPwdDTO.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/dto/PrivateMessageDTO.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/dto/RegisterDTO.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/dto/UserBanDTO.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupAnswerDTO.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupCandidateDTO.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupDeviceDTO.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupFailedDTO.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupInviteDTO.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupJoinDTO.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupOfferDTO.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupSetupDTO.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/entity/FileInfo.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/entity/Friend.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/entity/Group.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/entity/GroupMember.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/entity/GroupMessage.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/entity/PrivateMessage.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/entity/SensitiveWord.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/entity/User.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/enums/FileType.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/enums/MessageStatus.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/enums/MessageType.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/enums/ResultCode.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/enums/WebrtcMode.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/exception/GlobalException.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/exception/GlobalExceptionHandler.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/filter/CacheFilter.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/filter/CacheHttpServletRequestWrapper.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/interceptor/AuthInterceptor.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/interceptor/XssInterceptor.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/listener/GroupMessageListener.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/listener/PrivateMessageListener.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/listener/SystemMessageListener.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/mapper/FileInfoMapper.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/mapper/FriendMapper.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/mapper/GroupMapper.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/mapper/GroupMemberMapper.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/mapper/GroupMessageMapper.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/mapper/PrivateMessageMapper.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/mapper/SensitiveWordMapper.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/mapper/UserMapper.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/result/Result.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/result/ResultUtils.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/service/FileService.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/service/FriendService.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/service/GroupMemberService.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/service/GroupMessageService.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/service/GroupService.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/service/PrivateMessageService.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/service/SensitiveWordService.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/service/UserService.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/service/WebrtcPrivateService.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/service/impl/FileServiceImpl.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/service/impl/FriendServiceImpl.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/service/impl/GroupMemberServiceImpl.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/service/impl/GroupMessageServiceImpl.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/service/impl/GroupServiceImpl.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/service/impl/PrivateMessageServiceImpl.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/service/impl/SensitiveWordServiceImpl.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/service/impl/UserServiceImpl.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/service/impl/WebrtcPrivateServiceImpl.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/session/SessionContext.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/session/UserSession.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/session/WebrtcGroupSession.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/session/WebrtcPrivateSession.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/session/WebrtcUserInfo.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/task/consumer/GroupBannedConsumerTask.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/task/consumer/GroupUnbanConsumerTask.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/task/consumer/UserBannedConsumerTask.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/task/schedule/FileExpireTask.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/task/schedule/ReloadSensitiveWordTask.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/thirdparty/MinioService.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/util/BeanUtils.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/util/DateTimeUtils.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/util/FileUtil.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/util/ImageUtil.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/util/SensitiveFilterUtil.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/util/UserStateUtils.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/util/XssUtil.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/vo/FriendVO.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/vo/GroupMemberVO.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/vo/GroupMessageVO.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/vo/GroupVO.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/vo/LoginVO.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/vo/OnlineTerminalVO.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/vo/PrivateMessageVO.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/vo/SystemConfigVO.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/vo/SystemMessageVO.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/vo/UploadImageVO.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/vo/UserVO.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/vo/WebrtcGroupFailedVO.java
create mode 100644 im-platform/src/main/java/com/bx/implatform/vo/WebrtcGroupInfoVO.java
create mode 100644 im-platform/src/main/resources/application-dev.yml
create mode 100644 im-platform/src/main/resources/application-prod.yml
create mode 100644 im-platform/src/main/resources/application-test.yml
create mode 100644 im-platform/src/main/resources/application.yml
create mode 100644 im-platform/src/main/resources/logback.xml
create mode 100644 im-platform/src/main/resources/static/favicon.ico
create mode 100644 im-server/pom.xml
create mode 100644 im-server/src/main/java/com/bx/imserver/IMServerApp.java
create mode 100644 im-server/src/main/java/com/bx/imserver/constant/ChannelAttrKey.java
create mode 100644 im-server/src/main/java/com/bx/imserver/netty/IMChannelHandler.java
create mode 100644 im-server/src/main/java/com/bx/imserver/netty/IMServer.java
create mode 100644 im-server/src/main/java/com/bx/imserver/netty/IMServerGroup.java
create mode 100644 im-server/src/main/java/com/bx/imserver/netty/UserChannelCtxMap.java
create mode 100644 im-server/src/main/java/com/bx/imserver/netty/processor/AbstractMessageProcessor.java
create mode 100644 im-server/src/main/java/com/bx/imserver/netty/processor/GroupMessageProcessor.java
create mode 100644 im-server/src/main/java/com/bx/imserver/netty/processor/HeartbeatProcessor.java
create mode 100644 im-server/src/main/java/com/bx/imserver/netty/processor/LoginProcessor.java
create mode 100644 im-server/src/main/java/com/bx/imserver/netty/processor/PrivateMessageProcessor.java
create mode 100644 im-server/src/main/java/com/bx/imserver/netty/processor/ProcessorFactory.java
create mode 100644 im-server/src/main/java/com/bx/imserver/netty/processor/SystemMessageProcessor.java
create mode 100644 im-server/src/main/java/com/bx/imserver/netty/tcp/TcpSocketServer.java
create mode 100644 im-server/src/main/java/com/bx/imserver/netty/tcp/endecode/MessageProtocolDecoder.java
create mode 100644 im-server/src/main/java/com/bx/imserver/netty/tcp/endecode/MessageProtocolEncoder.java
create mode 100644 im-server/src/main/java/com/bx/imserver/netty/ws/WebSocketServer.java
create mode 100644 im-server/src/main/java/com/bx/imserver/netty/ws/endecode/MessageProtocolDecoder.java
create mode 100644 im-server/src/main/java/com/bx/imserver/netty/ws/endecode/MessageProtocolEncoder.java
create mode 100644 im-server/src/main/java/com/bx/imserver/task/AbstractPullMessageTask.java
create mode 100644 im-server/src/main/java/com/bx/imserver/task/PullGroupMessageTask.java
create mode 100644 im-server/src/main/java/com/bx/imserver/task/PullPrivateMessageTask.java
create mode 100644 im-server/src/main/java/com/bx/imserver/task/PullSystemMessageTask.java
create mode 100644 im-server/src/main/java/com/bx/imserver/util/SpringContextHolder.java
create mode 100644 im-server/src/main/resources/application-dev.yml
create mode 100644 im-server/src/main/resources/application-prod.yml
create mode 100644 im-server/src/main/resources/application-test.yml
create mode 100644 im-server/src/main/resources/application.yml
create mode 100644 im-server/src/main/resources/logback.xml
create mode 100644 im-uniapp/.env.js
create mode 100644 im-uniapp/App.vue
create mode 100644 im-uniapp/common/date.js
create mode 100644 im-uniapp/common/emotion.js
create mode 100644 im-uniapp/common/enums.js
create mode 100644 im-uniapp/common/messageType.js
create mode 100644 im-uniapp/common/recorder-app.js
create mode 100644 im-uniapp/common/recorder-h5.js
create mode 100644 im-uniapp/common/request.js
create mode 100644 im-uniapp/common/str.js
create mode 100644 im-uniapp/common/url.js
create mode 100644 im-uniapp/common/wssocket.js
create mode 100644 im-uniapp/components/bar/arrow-bar.vue
create mode 100644 im-uniapp/components/bar/bar-group.vue
create mode 100644 im-uniapp/components/bar/btn-bar.vue
create mode 100644 im-uniapp/components/bar/switch-bar.vue
create mode 100644 im-uniapp/components/chat-at-box/chat-at-box.vue
create mode 100644 im-uniapp/components/chat-group-readed/chat-group-readed.vue
create mode 100644 im-uniapp/components/chat-item/chat-item.vue
create mode 100644 im-uniapp/components/chat-message-item/chat-message-item.vue
create mode 100644 im-uniapp/components/chat-record/chat-record.vue
create mode 100644 im-uniapp/components/file-upload/file-upload.vue
create mode 100644 im-uniapp/components/friend-item/friend-item.vue
create mode 100644 im-uniapp/components/group-item/group-item.vue
create mode 100644 im-uniapp/components/group-member-selector/group-member-selector.vue
create mode 100644 im-uniapp/components/group-rtc-join/group-rtc-join.vue
create mode 100644 im-uniapp/components/head-image/head-image.vue
create mode 100644 im-uniapp/components/image-upload/image-upload.vue
create mode 100644 im-uniapp/components/loading/loading.vue
create mode 100644 im-uniapp/components/long-press-menu/long-press-menu.vue
create mode 100644 im-uniapp/components/nav-bar/nav-bar.vue
create mode 100644 im-uniapp/components/virtual-scroller/virtual-scroller.vue
create mode 100644 im-uniapp/hybrid/html/rtc-group/index.html
create mode 100644 im-uniapp/hybrid/html/rtc-private/index.html
create mode 100644 im-uniapp/im-var.scss
create mode 100644 im-uniapp/im.scss
create mode 100644 im-uniapp/index.html
create mode 100644 im-uniapp/main.js
create mode 100644 im-uniapp/manifest.json
create mode 100644 im-uniapp/package.json
create mode 100644 im-uniapp/pages.json
create mode 100644 im-uniapp/pages/chat/chat-box.vue
create mode 100644 im-uniapp/pages/chat/chat-group-video.vue
create mode 100644 im-uniapp/pages/chat/chat-private-video.vue
create mode 100644 im-uniapp/pages/chat/chat.vue
create mode 100644 im-uniapp/pages/common/external-link.vue
create mode 100644 im-uniapp/pages/common/user-info.vue
create mode 100644 im-uniapp/pages/friend/friend-add.vue
create mode 100644 im-uniapp/pages/friend/friend.vue
create mode 100644 im-uniapp/pages/group/group-edit.vue
create mode 100644 im-uniapp/pages/group/group-info.vue
create mode 100644 im-uniapp/pages/group/group-invite.vue
create mode 100644 im-uniapp/pages/group/group-member.vue
create mode 100644 im-uniapp/pages/group/group.vue
create mode 100644 im-uniapp/pages/login/login.vue
create mode 100644 im-uniapp/pages/mine/mine-edit.vue
create mode 100644 im-uniapp/pages/mine/mine-password.vue
create mode 100644 im-uniapp/pages/mine/mine.vue
create mode 100644 im-uniapp/pages/register/register.vue
create mode 100644 im-uniapp/pnpm-lock.yaml
create mode 100644 im-uniapp/static/emoji/0.gif
create mode 100644 im-uniapp/static/emoji/1.gif
create mode 100644 im-uniapp/static/emoji/10.gif
create mode 100644 im-uniapp/static/emoji/11.gif
create mode 100644 im-uniapp/static/emoji/12.gif
create mode 100644 im-uniapp/static/emoji/13.gif
create mode 100644 im-uniapp/static/emoji/14.gif
create mode 100644 im-uniapp/static/emoji/15.gif
create mode 100644 im-uniapp/static/emoji/16.gif
create mode 100644 im-uniapp/static/emoji/17.gif
create mode 100644 im-uniapp/static/emoji/18.gif
create mode 100644 im-uniapp/static/emoji/19.gif
create mode 100644 im-uniapp/static/emoji/2.gif
create mode 100644 im-uniapp/static/emoji/20.gif
create mode 100644 im-uniapp/static/emoji/21.gif
create mode 100644 im-uniapp/static/emoji/22.gif
create mode 100644 im-uniapp/static/emoji/23.gif
create mode 100644 im-uniapp/static/emoji/24.gif
create mode 100644 im-uniapp/static/emoji/25.gif
create mode 100644 im-uniapp/static/emoji/26.gif
create mode 100644 im-uniapp/static/emoji/27.gif
create mode 100644 im-uniapp/static/emoji/28.gif
create mode 100644 im-uniapp/static/emoji/29.gif
create mode 100644 im-uniapp/static/emoji/3.gif
create mode 100644 im-uniapp/static/emoji/30.gif
create mode 100644 im-uniapp/static/emoji/31.gif
create mode 100644 im-uniapp/static/emoji/32.gif
create mode 100644 im-uniapp/static/emoji/33.gif
create mode 100644 im-uniapp/static/emoji/34.gif
create mode 100644 im-uniapp/static/emoji/35.gif
create mode 100644 im-uniapp/static/emoji/36.gif
create mode 100644 im-uniapp/static/emoji/37.gif
create mode 100644 im-uniapp/static/emoji/38.gif
create mode 100644 im-uniapp/static/emoji/39.gif
create mode 100644 im-uniapp/static/emoji/4.gif
create mode 100644 im-uniapp/static/emoji/40.gif
create mode 100644 im-uniapp/static/emoji/41.gif
create mode 100644 im-uniapp/static/emoji/42.gif
create mode 100644 im-uniapp/static/emoji/43.gif
create mode 100644 im-uniapp/static/emoji/44.gif
create mode 100644 im-uniapp/static/emoji/45.gif
create mode 100644 im-uniapp/static/emoji/46.gif
create mode 100644 im-uniapp/static/emoji/47.gif
create mode 100644 im-uniapp/static/emoji/48.gif
create mode 100644 im-uniapp/static/emoji/49.gif
create mode 100644 im-uniapp/static/emoji/5.gif
create mode 100644 im-uniapp/static/emoji/50.gif
create mode 100644 im-uniapp/static/emoji/51.gif
create mode 100644 im-uniapp/static/emoji/52.gif
create mode 100644 im-uniapp/static/emoji/53.gif
create mode 100644 im-uniapp/static/emoji/54.gif
create mode 100644 im-uniapp/static/emoji/55.gif
create mode 100644 im-uniapp/static/emoji/56.gif
create mode 100644 im-uniapp/static/emoji/6.gif
create mode 100644 im-uniapp/static/emoji/7.gif
create mode 100644 im-uniapp/static/emoji/8.gif
create mode 100644 im-uniapp/static/emoji/9.gif
create mode 100644 im-uniapp/static/icon/iconfont.css
create mode 100644 im-uniapp/static/icon/iconfont.ttf
create mode 100644 im-uniapp/static/image/online_app.png
create mode 100644 im-uniapp/static/image/online_web.png
create mode 100644 im-uniapp/static/tab/chat.png
create mode 100644 im-uniapp/static/tab/chat_active.png
create mode 100644 im-uniapp/static/tab/friend.png
create mode 100644 im-uniapp/static/tab/friend_active.png
create mode 100644 im-uniapp/static/tab/group.png
create mode 100644 im-uniapp/static/tab/group_active.png
create mode 100644 im-uniapp/static/tab/mine.png
create mode 100644 im-uniapp/static/tab/mine_active.png
create mode 100644 im-uniapp/store/chatStore.js
create mode 100644 im-uniapp/store/configStore.js
create mode 100644 im-uniapp/store/friendStore.js
create mode 100644 im-uniapp/store/groupStore.js
create mode 100644 im-uniapp/store/userStore.js
create mode 100644 im-uniapp/uni.promisify.adaptor.js
create mode 100644 im-uniapp/uni.scss
create mode 100644 im-uniapp/uni_modules/lsj-upload/changelog.md
create mode 100644 im-uniapp/uni_modules/lsj-upload/components/lsj-upload/LsjFile.js
create mode 100644 im-uniapp/uni_modules/lsj-upload/components/lsj-upload/lsj-upload.vue
create mode 100644 im-uniapp/uni_modules/lsj-upload/hybrid/html/js/vue.min.js
create mode 100644 im-uniapp/uni_modules/lsj-upload/hybrid/html/uploadFile.html
create mode 100644 im-uniapp/uni_modules/lsj-upload/package.json
create mode 100644 im-uniapp/uni_modules/uni-badge/changelog.md
create mode 100644 im-uniapp/uni_modules/uni-badge/components/uni-badge/uni-badge.vue
create mode 100644 im-uniapp/uni_modules/uni-badge/package.json
create mode 100644 im-uniapp/uni_modules/uni-badge/readme.md
create mode 100644 im-uniapp/uni_modules/uni-calendar/changelog.md
create mode 100644 im-uniapp/uni_modules/uni-calendar/components/uni-calendar/calendar.js
create mode 100644 im-uniapp/uni_modules/uni-calendar/components/uni-calendar/i18n/en.json
create mode 100644 im-uniapp/uni_modules/uni-calendar/components/uni-calendar/i18n/index.js
create mode 100644 im-uniapp/uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hans.json
create mode 100644 im-uniapp/uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hant.json
create mode 100644 im-uniapp/uni_modules/uni-calendar/components/uni-calendar/uni-calendar-item.vue
create mode 100644 im-uniapp/uni_modules/uni-calendar/components/uni-calendar/uni-calendar.vue
create mode 100644 im-uniapp/uni_modules/uni-calendar/components/uni-calendar/util.js
create mode 100644 im-uniapp/uni_modules/uni-calendar/package.json
create mode 100644 im-uniapp/uni_modules/uni-calendar/readme.md
create mode 100644 im-uniapp/uni_modules/uni-card/changelog.md
create mode 100644 im-uniapp/uni_modules/uni-card/components/uni-card/uni-card.vue
create mode 100644 im-uniapp/uni_modules/uni-card/package.json
create mode 100644 im-uniapp/uni_modules/uni-card/readme.md
create mode 100644 im-uniapp/uni_modules/uni-collapse/changelog.md
create mode 100644 im-uniapp/uni_modules/uni-collapse/components/uni-collapse-item/uni-collapse-item.vue
create mode 100644 im-uniapp/uni_modules/uni-collapse/components/uni-collapse/uni-collapse.vue
create mode 100644 im-uniapp/uni_modules/uni-collapse/package.json
create mode 100644 im-uniapp/uni_modules/uni-collapse/readme.md
create mode 100644 im-uniapp/uni_modules/uni-combox/changelog.md
create mode 100644 im-uniapp/uni_modules/uni-combox/components/uni-combox/uni-combox.vue
create mode 100644 im-uniapp/uni_modules/uni-combox/package.json
create mode 100644 im-uniapp/uni_modules/uni-combox/readme.md
create mode 100644 im-uniapp/uni_modules/uni-countdown/changelog.md
create mode 100644 im-uniapp/uni_modules/uni-countdown/components/uni-countdown/i18n/en.json
create mode 100644 im-uniapp/uni_modules/uni-countdown/components/uni-countdown/i18n/index.js
create mode 100644 im-uniapp/uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hans.json
create mode 100644 im-uniapp/uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hant.json
create mode 100644 im-uniapp/uni_modules/uni-countdown/components/uni-countdown/uni-countdown.vue
create mode 100644 im-uniapp/uni_modules/uni-countdown/package.json
create mode 100644 im-uniapp/uni_modules/uni-countdown/readme.md
create mode 100644 im-uniapp/uni_modules/uni-data-checkbox/changelog.md
create mode 100644 im-uniapp/uni_modules/uni-data-checkbox/components/uni-data-checkbox/uni-data-checkbox.vue
create mode 100644 im-uniapp/uni_modules/uni-data-checkbox/package.json
create mode 100644 im-uniapp/uni_modules/uni-data-checkbox/readme.md
create mode 100644 im-uniapp/uni_modules/uni-data-picker/changelog.md
create mode 100644 im-uniapp/uni_modules/uni-data-picker/components/uni-data-picker/keypress.js
create mode 100644 im-uniapp/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue
create mode 100644 im-uniapp/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-picker.js
create mode 100644 im-uniapp/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-pickerview.vue
create mode 100644 im-uniapp/uni_modules/uni-data-picker/package.json
create mode 100644 im-uniapp/uni_modules/uni-data-picker/readme.md
create mode 100644 im-uniapp/uni_modules/uni-data-select/changelog.md
create mode 100644 im-uniapp/uni_modules/uni-data-select/components/uni-data-select/uni-data-select.vue
create mode 100644 im-uniapp/uni_modules/uni-data-select/package.json
create mode 100644 im-uniapp/uni_modules/uni-data-select/readme.md
create mode 100644 im-uniapp/uni_modules/uni-dateformat/changelog.md
create mode 100644 im-uniapp/uni_modules/uni-dateformat/components/uni-dateformat/date-format.js
create mode 100644 im-uniapp/uni_modules/uni-dateformat/components/uni-dateformat/uni-dateformat.vue
create mode 100644 im-uniapp/uni_modules/uni-dateformat/package.json
create mode 100644 im-uniapp/uni_modules/uni-dateformat/readme.md
create mode 100644 im-uniapp/uni_modules/uni-datetime-picker/changelog.md
create mode 100644 im-uniapp/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue
create mode 100644 im-uniapp/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.vue
create mode 100644 im-uniapp/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json
create mode 100644 im-uniapp/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/index.js
create mode 100644 im-uniapp/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hans.json
create mode 100644 im-uniapp/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hant.json
create mode 100644 im-uniapp/uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue
create mode 100644 im-uniapp/uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue
create mode 100644 im-uniapp/uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js
create mode 100644 im-uniapp/uni_modules/uni-datetime-picker/package.json
create mode 100644 im-uniapp/uni_modules/uni-datetime-picker/readme.md
create mode 100644 im-uniapp/uni_modules/uni-drawer/changelog.md
create mode 100644 im-uniapp/uni_modules/uni-drawer/components/uni-drawer/keypress.js
create mode 100644 im-uniapp/uni_modules/uni-drawer/components/uni-drawer/uni-drawer.vue
create mode 100644 im-uniapp/uni_modules/uni-drawer/package.json
create mode 100644 im-uniapp/uni_modules/uni-drawer/readme.md
create mode 100644 im-uniapp/uni_modules/uni-easyinput/changelog.md
create mode 100644 im-uniapp/uni_modules/uni-easyinput/components/uni-easyinput/common.js
create mode 100644 im-uniapp/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue
create mode 100644 im-uniapp/uni_modules/uni-easyinput/package.json
create mode 100644 im-uniapp/uni_modules/uni-easyinput/readme.md
create mode 100644 im-uniapp/uni_modules/uni-fab/changelog.md
create mode 100644 im-uniapp/uni_modules/uni-fab/components/uni-fab/uni-fab.vue
create mode 100644 im-uniapp/uni_modules/uni-fab/package.json
create mode 100644 im-uniapp/uni_modules/uni-fab/readme.md
create mode 100644 im-uniapp/uni_modules/uni-fav/changelog.md
create mode 100644 im-uniapp/uni_modules/uni-fav/components/uni-fav/i18n/en.json
create mode 100644 im-uniapp/uni_modules/uni-fav/components/uni-fav/i18n/index.js
create mode 100644 im-uniapp/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hans.json
create mode 100644 im-uniapp/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hant.json
create mode 100644 im-uniapp/uni_modules/uni-fav/components/uni-fav/uni-fav.vue
create mode 100644 im-uniapp/uni_modules/uni-fav/package.json
create mode 100644 im-uniapp/uni_modules/uni-fav/readme.md
create mode 100644 im-uniapp/uni_modules/uni-file-picker/changelog.md
create mode 100644 im-uniapp/uni_modules/uni-file-picker/components/uni-file-picker/choose-and-upload-file.js
create mode 100644 im-uniapp/uni_modules/uni-file-picker/components/uni-file-picker/uni-file-picker.vue
create mode 100644 im-uniapp/uni_modules/uni-file-picker/components/uni-file-picker/upload-file.vue
create mode 100644 im-uniapp/uni_modules/uni-file-picker/components/uni-file-picker/upload-image.vue
create mode 100644 im-uniapp/uni_modules/uni-file-picker/components/uni-file-picker/utils.js
create mode 100644 im-uniapp/uni_modules/uni-file-picker/package.json
create mode 100644 im-uniapp/uni_modules/uni-file-picker/readme.md
create mode 100644 im-uniapp/uni_modules/uni-forms/changelog.md
create mode 100644 im-uniapp/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue
create mode 100644 im-uniapp/uni_modules/uni-forms/components/uni-forms/uni-forms.vue
create mode 100644 im-uniapp/uni_modules/uni-forms/components/uni-forms/utils.js
create mode 100644 im-uniapp/uni_modules/uni-forms/components/uni-forms/validate.js
create mode 100644 im-uniapp/uni_modules/uni-forms/package.json
create mode 100644 im-uniapp/uni_modules/uni-forms/readme.md
create mode 100644 im-uniapp/uni_modules/uni-goods-nav/changelog.md
create mode 100644 im-uniapp/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/en.json
create mode 100644 im-uniapp/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/index.js
create mode 100644 im-uniapp/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hans.json
create mode 100644 im-uniapp/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hant.json
create mode 100644 im-uniapp/uni_modules/uni-goods-nav/components/uni-goods-nav/uni-goods-nav.vue
create mode 100644 im-uniapp/uni_modules/uni-goods-nav/package.json
create mode 100644 im-uniapp/uni_modules/uni-goods-nav/readme.md
create mode 100644 im-uniapp/uni_modules/uni-grid/changelog.md
create mode 100644 im-uniapp/uni_modules/uni-grid/components/uni-grid-item/uni-grid-item.vue
create mode 100644 im-uniapp/uni_modules/uni-grid/components/uni-grid/uni-grid.vue
create mode 100644 im-uniapp/uni_modules/uni-grid/package.json
create mode 100644 im-uniapp/uni_modules/uni-grid/readme.md
create mode 100644 im-uniapp/uni_modules/uni-group/changelog.md
create mode 100644 im-uniapp/uni_modules/uni-group/components/uni-group/uni-group.vue
create mode 100644 im-uniapp/uni_modules/uni-group/package.json
create mode 100644 im-uniapp/uni_modules/uni-group/readme.md
create mode 100644 im-uniapp/uni_modules/uni-icons/changelog.md
create mode 100644 im-uniapp/uni_modules/uni-icons/components/uni-icons/icons.js
create mode 100644 im-uniapp/uni_modules/uni-icons/components/uni-icons/uni-icons.vue
create mode 100644 im-uniapp/uni_modules/uni-icons/components/uni-icons/uniicons.css
create mode 100644 im-uniapp/uni_modules/uni-icons/components/uni-icons/uniicons.ttf
create mode 100644 im-uniapp/uni_modules/uni-icons/package.json
create mode 100644 im-uniapp/uni_modules/uni-icons/readme.md
create mode 100644 im-uniapp/uni_modules/uni-indexed-list/changelog.md
create mode 100644 im-uniapp/uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list-item.vue
create mode 100644 im-uniapp/uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list.vue
create mode 100644 im-uniapp/uni_modules/uni-indexed-list/package.json
create mode 100644 im-uniapp/uni_modules/uni-indexed-list/readme.md
create mode 100644 im-uniapp/uni_modules/uni-link/changelog.md
create mode 100644 im-uniapp/uni_modules/uni-link/components/uni-link/uni-link.vue
create mode 100644 im-uniapp/uni_modules/uni-link/package.json
create mode 100644 im-uniapp/uni_modules/uni-link/readme.md
create mode 100644 im-uniapp/uni_modules/uni-list/changelog.md
create mode 100644 im-uniapp/uni_modules/uni-list/components/uni-list-ad/uni-list-ad.vue
create mode 100644 im-uniapp/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.scss
create mode 100644 im-uniapp/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.vue
create mode 100644 im-uniapp/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue
create mode 100644 im-uniapp/uni_modules/uni-list/components/uni-list/uni-list.vue
create mode 100644 im-uniapp/uni_modules/uni-list/components/uni-list/uni-refresh.vue
create mode 100644 im-uniapp/uni_modules/uni-list/components/uni-list/uni-refresh.wxs
create mode 100644 im-uniapp/uni_modules/uni-list/package.json
create mode 100644 im-uniapp/uni_modules/uni-list/readme.md
create mode 100644 im-uniapp/uni_modules/uni-load-more/changelog.md
create mode 100644 im-uniapp/uni_modules/uni-load-more/components/uni-load-more/i18n/en.json
create mode 100644 im-uniapp/uni_modules/uni-load-more/components/uni-load-more/i18n/index.js
create mode 100644 im-uniapp/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hans.json
create mode 100644 im-uniapp/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hant.json
create mode 100644 im-uniapp/uni_modules/uni-load-more/components/uni-load-more/uni-load-more.vue
create mode 100644 im-uniapp/uni_modules/uni-load-more/package.json
create mode 100644 im-uniapp/uni_modules/uni-load-more/readme.md
create mode 100644 im-uniapp/uni_modules/uni-nav-bar/changelog.md
create mode 100644 im-uniapp/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue
create mode 100644 im-uniapp/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-status-bar.vue
create mode 100644 im-uniapp/uni_modules/uni-nav-bar/package.json
create mode 100644 im-uniapp/uni_modules/uni-nav-bar/readme.md
create mode 100644 im-uniapp/uni_modules/uni-notice-bar/changelog.md
create mode 100644 im-uniapp/uni_modules/uni-notice-bar/components/uni-notice-bar/uni-notice-bar.vue
create mode 100644 im-uniapp/uni_modules/uni-notice-bar/package.json
create mode 100644 im-uniapp/uni_modules/uni-notice-bar/readme.md
create mode 100644 im-uniapp/uni_modules/uni-number-box/changelog.md
create mode 100644 im-uniapp/uni_modules/uni-number-box/components/uni-number-box/uni-number-box.vue
create mode 100644 im-uniapp/uni_modules/uni-number-box/package.json
create mode 100644 im-uniapp/uni_modules/uni-number-box/readme.md
create mode 100644 im-uniapp/uni_modules/uni-pagination/changelog.md
create mode 100644 im-uniapp/uni_modules/uni-pagination/components/uni-pagination/i18n/en.json
create mode 100644 im-uniapp/uni_modules/uni-pagination/components/uni-pagination/i18n/es.json
create mode 100644 im-uniapp/uni_modules/uni-pagination/components/uni-pagination/i18n/fr.json
create mode 100644 im-uniapp/uni_modules/uni-pagination/components/uni-pagination/i18n/index.js
create mode 100644 im-uniapp/uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hans.json
create mode 100644 im-uniapp/uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hant.json
create mode 100644 im-uniapp/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue
create mode 100644 im-uniapp/uni_modules/uni-pagination/package.json
create mode 100644 im-uniapp/uni_modules/uni-pagination/readme.md
create mode 100644 im-uniapp/uni_modules/uni-popup/changelog.md
create mode 100644 im-uniapp/uni_modules/uni-popup/components/uni-popup-dialog/keypress.js
create mode 100644 im-uniapp/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue
create mode 100644 im-uniapp/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue
create mode 100644 im-uniapp/uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue
create mode 100644 im-uniapp/uni_modules/uni-popup/components/uni-popup/i18n/en.json
create mode 100644 im-uniapp/uni_modules/uni-popup/components/uni-popup/i18n/index.js
create mode 100644 im-uniapp/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json
create mode 100644 im-uniapp/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json
create mode 100644 im-uniapp/uni_modules/uni-popup/components/uni-popup/keypress.js
create mode 100644 im-uniapp/uni_modules/uni-popup/components/uni-popup/popup.js
create mode 100644 im-uniapp/uni_modules/uni-popup/components/uni-popup/uni-popup.vue
create mode 100644 im-uniapp/uni_modules/uni-popup/package.json
create mode 100644 im-uniapp/uni_modules/uni-popup/readme.md
create mode 100644 im-uniapp/uni_modules/uni-rate/changelog.md
create mode 100644 im-uniapp/uni_modules/uni-rate/components/uni-rate/uni-rate.vue
create mode 100644 im-uniapp/uni_modules/uni-rate/package.json
create mode 100644 im-uniapp/uni_modules/uni-rate/readme.md
create mode 100644 im-uniapp/uni_modules/uni-row/changelog.md
create mode 100644 im-uniapp/uni_modules/uni-row/components/uni-col/uni-col.vue
create mode 100644 im-uniapp/uni_modules/uni-row/components/uni-row/uni-row.vue
create mode 100644 im-uniapp/uni_modules/uni-row/package.json
create mode 100644 im-uniapp/uni_modules/uni-row/readme.md
create mode 100644 im-uniapp/uni_modules/uni-scss/changelog.md
create mode 100644 im-uniapp/uni_modules/uni-scss/index.scss
create mode 100644 im-uniapp/uni_modules/uni-scss/package.json
create mode 100644 im-uniapp/uni_modules/uni-scss/readme.md
create mode 100644 im-uniapp/uni_modules/uni-scss/styles/index.scss
create mode 100644 im-uniapp/uni_modules/uni-scss/styles/setting/_border.scss
create mode 100644 im-uniapp/uni_modules/uni-scss/styles/setting/_color.scss
create mode 100644 im-uniapp/uni_modules/uni-scss/styles/setting/_radius.scss
create mode 100644 im-uniapp/uni_modules/uni-scss/styles/setting/_space.scss
create mode 100644 im-uniapp/uni_modules/uni-scss/styles/setting/_styles.scss
create mode 100644 im-uniapp/uni_modules/uni-scss/styles/setting/_text.scss
create mode 100644 im-uniapp/uni_modules/uni-scss/styles/setting/_variables.scss
create mode 100644 im-uniapp/uni_modules/uni-scss/styles/tools/functions.scss
create mode 100644 im-uniapp/uni_modules/uni-scss/theme.scss
create mode 100644 im-uniapp/uni_modules/uni-scss/variables.scss
create mode 100644 im-uniapp/uni_modules/uni-search-bar/changelog.md
create mode 100644 im-uniapp/uni_modules/uni-search-bar/components/uni-search-bar/i18n/en.json
create mode 100644 im-uniapp/uni_modules/uni-search-bar/components/uni-search-bar/i18n/index.js
create mode 100644 im-uniapp/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hans.json
create mode 100644 im-uniapp/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hant.json
create mode 100644 im-uniapp/uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue
create mode 100644 im-uniapp/uni_modules/uni-search-bar/package.json
create mode 100644 im-uniapp/uni_modules/uni-search-bar/readme.md
create mode 100644 im-uniapp/uni_modules/uni-section/changelog.md
create mode 100644 im-uniapp/uni_modules/uni-section/components/uni-section/uni-section.vue
create mode 100644 im-uniapp/uni_modules/uni-section/package.json
create mode 100644 im-uniapp/uni_modules/uni-section/readme.md
create mode 100644 im-uniapp/uni_modules/uni-segmented-control/changelog.md
create mode 100644 im-uniapp/uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control.vue
create mode 100644 im-uniapp/uni_modules/uni-segmented-control/package.json
create mode 100644 im-uniapp/uni_modules/uni-segmented-control/readme.md
create mode 100644 im-uniapp/uni_modules/uni-steps/changelog.md
create mode 100644 im-uniapp/uni_modules/uni-steps/components/uni-steps/uni-steps.vue
create mode 100644 im-uniapp/uni_modules/uni-steps/package.json
create mode 100644 im-uniapp/uni_modules/uni-steps/readme.md
create mode 100644 im-uniapp/uni_modules/uni-swipe-action/changelog.md
create mode 100644 im-uniapp/uni_modules/uni-swipe-action/components/uni-swipe-action-item/bindingx.js
create mode 100644 im-uniapp/uni_modules/uni-swipe-action/components/uni-swipe-action-item/isPC.js
create mode 100644 im-uniapp/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpalipay.js
create mode 100644 im-uniapp/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpother.js
create mode 100644 im-uniapp/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpwxs.js
create mode 100644 im-uniapp/uni_modules/uni-swipe-action/components/uni-swipe-action-item/render.js
create mode 100644 im-uniapp/uni_modules/uni-swipe-action/components/uni-swipe-action-item/uni-swipe-action-item.vue
create mode 100644 im-uniapp/uni_modules/uni-swipe-action/components/uni-swipe-action-item/wx.wxs
create mode 100644 im-uniapp/uni_modules/uni-swipe-action/components/uni-swipe-action/uni-swipe-action.vue
create mode 100644 im-uniapp/uni_modules/uni-swipe-action/package.json
create mode 100644 im-uniapp/uni_modules/uni-swipe-action/readme.md
create mode 100644 im-uniapp/uni_modules/uni-swiper-dot/changelog.md
create mode 100644 im-uniapp/uni_modules/uni-swiper-dot/components/uni-swiper-dot/uni-swiper-dot.vue
create mode 100644 im-uniapp/uni_modules/uni-swiper-dot/package.json
create mode 100644 im-uniapp/uni_modules/uni-swiper-dot/readme.md
create mode 100644 im-uniapp/uni_modules/uni-table/changelog.md
create mode 100644 im-uniapp/uni_modules/uni-table/components/uni-table/uni-table.vue
create mode 100644 im-uniapp/uni_modules/uni-table/components/uni-tbody/uni-tbody.vue
create mode 100644 im-uniapp/uni_modules/uni-table/components/uni-td/uni-td.vue
create mode 100644 im-uniapp/uni_modules/uni-table/components/uni-th/filter-dropdown.vue
create mode 100644 im-uniapp/uni_modules/uni-table/components/uni-th/uni-th.vue
create mode 100644 im-uniapp/uni_modules/uni-table/components/uni-thead/uni-thead.vue
create mode 100644 im-uniapp/uni_modules/uni-table/components/uni-tr/table-checkbox.vue
create mode 100644 im-uniapp/uni_modules/uni-table/components/uni-tr/uni-tr.vue
create mode 100644 im-uniapp/uni_modules/uni-table/i18n/en.json
create mode 100644 im-uniapp/uni_modules/uni-table/i18n/es.json
create mode 100644 im-uniapp/uni_modules/uni-table/i18n/fr.json
create mode 100644 im-uniapp/uni_modules/uni-table/i18n/index.js
create mode 100644 im-uniapp/uni_modules/uni-table/i18n/zh-Hans.json
create mode 100644 im-uniapp/uni_modules/uni-table/i18n/zh-Hant.json
create mode 100644 im-uniapp/uni_modules/uni-table/package.json
create mode 100644 im-uniapp/uni_modules/uni-table/readme.md
create mode 100644 im-uniapp/uni_modules/uni-tag/changelog.md
create mode 100644 im-uniapp/uni_modules/uni-tag/components/uni-tag/uni-tag.vue
create mode 100644 im-uniapp/uni_modules/uni-tag/package.json
create mode 100644 im-uniapp/uni_modules/uni-tag/readme.md
create mode 100644 im-uniapp/uni_modules/uni-title/changelog.md
create mode 100644 im-uniapp/uni_modules/uni-title/components/uni-title/uni-title.vue
create mode 100644 im-uniapp/uni_modules/uni-title/package.json
create mode 100644 im-uniapp/uni_modules/uni-title/readme.md
create mode 100644 im-uniapp/uni_modules/uni-tooltip/changelog.md
create mode 100644 im-uniapp/uni_modules/uni-tooltip/components/uni-tooltip/uni-tooltip.vue
create mode 100644 im-uniapp/uni_modules/uni-tooltip/package.json
create mode 100644 im-uniapp/uni_modules/uni-tooltip/readme.md
create mode 100644 im-uniapp/uni_modules/uni-transition/changelog.md
create mode 100644 im-uniapp/uni_modules/uni-transition/components/uni-transition/createAnimation.js
create mode 100644 im-uniapp/uni_modules/uni-transition/components/uni-transition/uni-transition.vue
create mode 100644 im-uniapp/uni_modules/uni-transition/package.json
create mode 100644 im-uniapp/uni_modules/uni-transition/readme.md
create mode 100644 im-uniapp/uni_modules/uni-ui/changelog.md
create mode 100644 im-uniapp/uni_modules/uni-ui/components/uni-ui/uni-ui.vue
create mode 100644 im-uniapp/uni_modules/uni-ui/package.json
create mode 100644 im-uniapp/uni_modules/uni-ui/readme.md
create mode 100644 im-uniapp/uni_modules/uview-plus/LICENSE
create mode 100644 im-uniapp/uni_modules/uview-plus/README.md
create mode 100644 im-uniapp/uni_modules/uview-plus/changelog.md
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u--form/u--form.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u--image/u--image.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u--input/u--input.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u--text/u--text.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u--textarea/u--textarea.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-action-sheet/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-action-sheet/u-action-sheet.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-album/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-album/u-album.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-alert/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-alert/u-alert.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-avatar-group/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-avatar-group/u-avatar-group.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-avatar/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-avatar/u-avatar.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-back-top/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-back-top/u-back-top.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-badge/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-badge/u-badge.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-button/nvue.scss
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-button/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-button/u-button.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-button/vue.scss
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-calendar/header.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-calendar/month.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-calendar/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-calendar/u-calendar.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-calendar/util.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-car-keyboard/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-car-keyboard/u-car-keyboard.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-cell-group/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-cell-group/u-cell-group.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-cell/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-cell/u-cell.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-checkbox-group/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-checkbox-group/u-checkbox-group.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-checkbox/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-checkbox/u-checkbox.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-circle-progress/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-circle-progress/u-circle-progress.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-code-input/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-code-input/u-code-input.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-code/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-code/u-code.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-col/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-col/u-col.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-collapse-item/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-collapse-item/u-collapse-item.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-collapse/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-collapse/u-collapse.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-column-notice/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-column-notice/u-column-notice.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-copy/u-copy.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-count-down/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-count-down/u-count-down.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-count-down/utils.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-count-to/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-count-to/u-count-to.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-datetime-picker/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-datetime-picker/u-datetime-picker.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-divider/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-divider/u-divider.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-dropdown-item/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-dropdown-item/u-dropdown-item.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-dropdown/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-dropdown/u-dropdown.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-empty/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-empty/u-empty.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-form-item/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-form-item/u-form-item.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-form/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-form/u-form.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-gap/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-gap/u-gap.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-grid-item/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-grid-item/u-grid-item.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-grid/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-grid/u-grid.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-icon/icons.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-icon/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-icon/u-icon.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-image/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-image/u-image.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-index-anchor/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-index-anchor/u-index-anchor.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-index-item/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-index-item/u-index-item.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-index-list/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-index-list/u-index-list.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-input/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-input/u-input.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-keyboard/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-keyboard/u-keyboard.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-lazy-load/u-lazy-load.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-line-progress/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-line-progress/u-line-progress.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-line/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-line/u-line.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-link/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-link/u-link.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-list-item/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-list-item/u-list-item.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-list/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-list/u-list.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-loading-icon/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-loading-icon/u-loading-icon.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-loading-page/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-loading-page/u-loading-page.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-loadmore/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-loadmore/u-loadmore.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-message-input/u-message-input.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-modal/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-modal/u-modal.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-navbar/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-navbar/u-navbar.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-no-network/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-no-network/u-no-network.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-notice-bar/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-notice-bar/u-notice-bar.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-notify/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-notify/u-notify.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-number-box/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-number-box/u-number-box.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-number-keyboard/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-number-keyboard/u-number-keyboard.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-overlay/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-overlay/u-overlay.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-parse/node/node.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-parse/parser.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-parse/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-parse/u-parse.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-picker-column/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-picker-column/u-picker-column.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-picker/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-picker/u-picker.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-popup/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-popup/u-popup.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-qrcode/qrcode.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-qrcode/u-qrcode.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-radio-group/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-radio-group/u-radio-group.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-radio/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-radio/u-radio.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-rate/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-rate/u-rate.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-read-more/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-read-more/u-read-more.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-row-notice/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-row-notice/u-row-notice.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-row/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-row/u-row.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-safe-bottom/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-safe-bottom/u-safe-bottom.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-scroll-list/nvue.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-scroll-list/other.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-scroll-list/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-scroll-list/scrollWxs.wxs
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-scroll-list/u-scroll-list.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-search/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-search/u-search.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-skeleton/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-skeleton/u-skeleton.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-slider/mpother.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-slider/mpwxs.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-slider/mpwxs.wxs
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-slider/nvue - 副本.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-slider/nvue.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-slider/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-slider/u-slider.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-status-bar/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-status-bar/u-status-bar.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-steps-item/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-steps-item/u-steps-item.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-steps/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-steps/u-steps.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-sticky/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-sticky/u-sticky.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-subsection/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-subsection/u-subsection.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-swipe-action-item/alipay.sjs
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-swipe-action-item/index - backup.wxs
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-swipe-action-item/index.wxs
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-swipe-action-item/nvue - backup.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-swipe-action-item/nvue.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-swipe-action-item/other.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-swipe-action-item/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-swipe-action-item/u-swipe-action-item.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-swipe-action-item/wxs.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-swipe-action/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-swipe-action/u-swipe-action.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-swiper-indicator/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-swiper-indicator/u-swiper-indicator.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-swiper/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-swiper/u-swiper.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-switch/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-switch/u-switch.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-tabbar-item/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-tabbar-item/u-tabbar-item.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-tabbar/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-tabbar/u-tabbar.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-table/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-table/u-table.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-tabs-item/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-tabs-item/u-tabs-item.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-tabs/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-tabs/u-tabs.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-tag/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-tag/u-tag.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-td/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-td/u-td.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-text/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-text/u-text.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-text/value.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-textarea/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-textarea/u-textarea.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-toast/u-toast.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-toolbar/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-toolbar/u-toolbar.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-tooltip/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-tooltip/u-tooltip.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-tr/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-tr/u-tr.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-transition/nvue-ani-map.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-transition/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-transition/transition.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-transition/u-transition.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-transition/vue.ani-style.scss
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-upload/mixin.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-upload/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-upload/u-upload.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-upload/utils.js
create mode 100644 im-uniapp/uni_modules/uview-plus/components/u-waterfall/u-waterfall.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/components/uview-plus/uview-plus.vue
create mode 100644 im-uniapp/uni_modules/uview-plus/index.js
create mode 100644 im-uniapp/uni_modules/uview-plus/index.scss
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/color.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/config.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/actionSheet.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/album.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/alert.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/avatar.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/avatarGroup.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/backtop.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/badge.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/button.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/calendar.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/carKeyboard.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/cell.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/cellGroup.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/checkbox.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/checkboxGroup.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/circleProgress.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/code.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/codeInput.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/col.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/collapse.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/collapseItem.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/columnNotice.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/countDown.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/countTo.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/datetimePicker.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/divider.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/empty.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/form.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/formItem.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/gap.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/grid.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/gridItem.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/icon.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/image.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/indexAnchor.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/indexList.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/input.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/keyboard.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/line.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/lineProgress.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/link.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/list.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/listItem.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/loadingIcon.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/loadingPage.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/loadmore.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/modal.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/navbar.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/noNetwork.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/noticeBar.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/notify.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/numberBox.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/numberKeyboard.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/overlay.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/parse.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/picker.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/popup.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/radio.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/radioGroup.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/rate.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/readMore.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/row.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/rowNotice.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/scrollList.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/search.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/section.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/skeleton.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/slider.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/statusBar.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/steps.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/stepsItem.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/sticky.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/subsection.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/swipeAction.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/swipeActionItem.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/swiper.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/swipterIndicator.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/switch.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/tabbar.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/tabbarItem.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/tabs.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/tag.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/text.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/textarea.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/toast.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/toolbar.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/tooltip.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/transition.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/props/upload.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/config/zIndex.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/css/color.scss
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/css/common.scss
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/css/components.scss
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/css/flex.scss
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/css/h5.scss
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/css/mixin.scss
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/css/mp.scss
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/css/nvue.scss
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/css/vue.scss
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/function/colorGradient.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/function/debounce.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/function/digit.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/function/index.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/function/platform.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/function/test.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/function/throttle.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/luch-request/adapters/index.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/luch-request/core/InterceptorManager.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/luch-request/core/Request.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/luch-request/core/buildFullPath.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/luch-request/core/defaults.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/luch-request/core/dispatchRequest.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/luch-request/core/mergeConfig.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/luch-request/core/settle.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/luch-request/helpers/buildURL.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/luch-request/helpers/combineURLs.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/luch-request/helpers/isAbsoluteURL.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/luch-request/index.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/luch-request/index.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/luch-request/utils.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/luch-request/utils/clone.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/mixin/button.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/mixin/mixin.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/mixin/mpMixin.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/mixin/mpShare.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/mixin/openType.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/mixin/style.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/mixin/touch.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/util/async-validator.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/util/calendar.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/util/emitter.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/util/route.js
create mode 100644 im-uniapp/uni_modules/uview-plus/libs/vue.js
create mode 100644 im-uniapp/uni_modules/uview-plus/package.json
create mode 100644 im-uniapp/uni_modules/uview-plus/theme.scss
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/_common.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/actionSheet.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/album.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/alert.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/avatar.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/avatarGroup.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/backTop.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/badge.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/button.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/calendar.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/cell.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/cellGroup.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/checkbox.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/checkboxGroup.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/code.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/codeInput.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/col.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/collapse.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/collapseItem.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/countDown.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/countTo.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/datetimePicker.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/divider.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/empty.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/form.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/formItem.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/gap.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/grid.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/gridItem.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/icon.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/image.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/indexAnchor.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/indexItem.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/indexList.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/input.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/keyboard.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/line.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/lineProgress.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/link.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/list.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/listItem.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/loadMore.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/loadingIcon.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/loadingPage.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/modal.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/navbar.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/noNetwork.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/noticeBar.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/notify.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/numberBox.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/overlay.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/parse.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/picker.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/popup.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/radio.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/radioGroup.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/rate.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/readMore.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/row.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/scrollList.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/search.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/skeleton.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/slider.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/steps.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/stepsItem.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/sticky.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/subsection.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/swipeAction.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/swipeActionItem.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/swiper.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/swiperIndicator.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/switch.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/tabbar.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/tabbarItem.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/tabs.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/tag.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/text.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/textarea.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/toast.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/tooltip.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/transition.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/comps/upload.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/index.d.ts
create mode 100644 im-uniapp/uni_modules/uview-plus/types/package.json
create mode 100644 im-uniapp/unpackage/dist/cache/.vite/deps/_metadata.json
create mode 100644 im-uniapp/unpackage/dist/cache/.vite/deps/chunk-Y2F7D3TJ.js
create mode 100644 im-uniapp/unpackage/dist/cache/.vite/deps/chunk-Y2F7D3TJ.js.map
create mode 100644 im-uniapp/unpackage/dist/cache/.vite/deps/package.json
create mode 100644 im-uniapp/unpackage/dist/cache/.vite/deps/pinyin-pro.js
create mode 100644 im-uniapp/unpackage/dist/cache/.vite/deps/pinyin-pro.js.map
create mode 100644 im-uniapp/unpackage/dist/cache/.vite/deps/quill-image-resize-mp.js
create mode 100644 im-uniapp/unpackage/dist/cache/.vite/deps/quill-image-resize-mp.js.map
create mode 100644 im-uniapp/unpackage/dist/cache/.vite/deps/quill.js
create mode 100644 im-uniapp/unpackage/dist/cache/.vite/deps/quill.js.map
create mode 100644 im-uniapp/unpackage/res/icons/1024x1024.png
create mode 100644 im-uniapp/unpackage/res/icons/120x120.png
create mode 100644 im-uniapp/unpackage/res/icons/144x144.png
create mode 100644 im-uniapp/unpackage/res/icons/152x152.png
create mode 100644 im-uniapp/unpackage/res/icons/167x167.png
create mode 100644 im-uniapp/unpackage/res/icons/180x180.png
create mode 100644 im-uniapp/unpackage/res/icons/192x192.png
create mode 100644 im-uniapp/unpackage/res/icons/20x20.png
create mode 100644 im-uniapp/unpackage/res/icons/29x29.png
create mode 100644 im-uniapp/unpackage/res/icons/40x40.png
create mode 100644 im-uniapp/unpackage/res/icons/58x58.png
create mode 100644 im-uniapp/unpackage/res/icons/60x60.png
create mode 100644 im-uniapp/unpackage/res/icons/72x72.png
create mode 100644 im-uniapp/unpackage/res/icons/76x76.png
create mode 100644 im-uniapp/unpackage/res/icons/80x80.png
create mode 100644 im-uniapp/unpackage/res/icons/87x87.png
create mode 100644 im-uniapp/unpackage/res/icons/96x96.png
create mode 100644 im-uniapp/vite.config.js
create mode 100644 im-web/.env.development
create mode 100644 im-web/.env.production
create mode 100644 im-web/README.md
create mode 100644 im-web/babel.config.js
create mode 100644 im-web/package.json
create mode 100644 im-web/public/index.html
create mode 100644 im-web/public/logo.png
create mode 100644 im-web/src/App.vue
create mode 100644 im-web/src/api/camera.js
create mode 100644 im-web/src/api/date.js
create mode 100644 im-web/src/api/element.js
create mode 100644 im-web/src/api/emotion.js
create mode 100644 im-web/src/api/enums.js
create mode 100644 im-web/src/api/eventBus.js
create mode 100644 im-web/src/api/httpRequest.js
create mode 100644 im-web/src/api/messageType.js
create mode 100644 im-web/src/api/rtcGroupApi.js
create mode 100644 im-web/src/api/rtcPrivateApi.js
create mode 100644 im-web/src/api/str.js
create mode 100644 im-web/src/api/url.js
create mode 100644 im-web/src/api/webrtc.js
create mode 100644 im-web/src/api/wssocket.js
create mode 100644 im-web/src/assets/audio/call.wav
create mode 100644 im-web/src/assets/audio/tip.mp3
create mode 100644 im-web/src/assets/emoji/0.gif
create mode 100644 im-web/src/assets/emoji/1.gif
create mode 100644 im-web/src/assets/emoji/10.gif
create mode 100644 im-web/src/assets/emoji/11.gif
create mode 100644 im-web/src/assets/emoji/12.gif
create mode 100644 im-web/src/assets/emoji/13.gif
create mode 100644 im-web/src/assets/emoji/14.gif
create mode 100644 im-web/src/assets/emoji/15.gif
create mode 100644 im-web/src/assets/emoji/16.gif
create mode 100644 im-web/src/assets/emoji/17.gif
create mode 100644 im-web/src/assets/emoji/18.gif
create mode 100644 im-web/src/assets/emoji/19.gif
create mode 100644 im-web/src/assets/emoji/2.gif
create mode 100644 im-web/src/assets/emoji/20.gif
create mode 100644 im-web/src/assets/emoji/21.gif
create mode 100644 im-web/src/assets/emoji/22.gif
create mode 100644 im-web/src/assets/emoji/23.gif
create mode 100644 im-web/src/assets/emoji/24.gif
create mode 100644 im-web/src/assets/emoji/25.gif
create mode 100644 im-web/src/assets/emoji/26.gif
create mode 100644 im-web/src/assets/emoji/27.gif
create mode 100644 im-web/src/assets/emoji/28.gif
create mode 100644 im-web/src/assets/emoji/29.gif
create mode 100644 im-web/src/assets/emoji/3.gif
create mode 100644 im-web/src/assets/emoji/30.gif
create mode 100644 im-web/src/assets/emoji/31.gif
create mode 100644 im-web/src/assets/emoji/32.gif
create mode 100644 im-web/src/assets/emoji/33.gif
create mode 100644 im-web/src/assets/emoji/34.gif
create mode 100644 im-web/src/assets/emoji/35.gif
create mode 100644 im-web/src/assets/emoji/36.gif
create mode 100644 im-web/src/assets/emoji/37.gif
create mode 100644 im-web/src/assets/emoji/38.gif
create mode 100644 im-web/src/assets/emoji/39.gif
create mode 100644 im-web/src/assets/emoji/4.gif
create mode 100644 im-web/src/assets/emoji/40.gif
create mode 100644 im-web/src/assets/emoji/41.gif
create mode 100644 im-web/src/assets/emoji/42.gif
create mode 100644 im-web/src/assets/emoji/43.gif
create mode 100644 im-web/src/assets/emoji/44.gif
create mode 100644 im-web/src/assets/emoji/45.gif
create mode 100644 im-web/src/assets/emoji/46.gif
create mode 100644 im-web/src/assets/emoji/47.gif
create mode 100644 im-web/src/assets/emoji/48.gif
create mode 100644 im-web/src/assets/emoji/49.gif
create mode 100644 im-web/src/assets/emoji/5.gif
create mode 100644 im-web/src/assets/emoji/50.gif
create mode 100644 im-web/src/assets/emoji/51.gif
create mode 100644 im-web/src/assets/emoji/52.gif
create mode 100644 im-web/src/assets/emoji/53.gif
create mode 100644 im-web/src/assets/emoji/54.gif
create mode 100644 im-web/src/assets/emoji/55.gif
create mode 100644 im-web/src/assets/emoji/56.gif
create mode 100644 im-web/src/assets/emoji/6.gif
create mode 100644 im-web/src/assets/emoji/7.gif
create mode 100644 im-web/src/assets/emoji/8.gif
create mode 100644 im-web/src/assets/emoji/9.gif
create mode 100644 im-web/src/assets/iconfont/iconfont.css
create mode 100644 im-web/src/assets/iconfont/iconfont.ttf
create mode 100644 im-web/src/assets/image/icp_logo.png
create mode 100644 im-web/src/assets/style/element.scss
create mode 100644 im-web/src/assets/style/im.scss
create mode 100644 im-web/src/assets/style/thems.scss
create mode 100644 im-web/src/components/chat/ChatAtBox.vue
create mode 100644 im-web/src/components/chat/ChatBox.vue
create mode 100644 im-web/src/components/chat/ChatGroupMember.vue
create mode 100644 im-web/src/components/chat/ChatGroupReaded.vue
create mode 100644 im-web/src/components/chat/ChatGroupSide.vue
create mode 100644 im-web/src/components/chat/ChatHistory.vue
create mode 100644 im-web/src/components/chat/ChatInput.vue
create mode 100644 im-web/src/components/chat/ChatItem.vue
create mode 100644 im-web/src/components/chat/ChatMessageItem.vue
create mode 100644 im-web/src/components/chat/ChatRecord.vue
create mode 100644 im-web/src/components/common/Emotion.vue
create mode 100644 im-web/src/components/common/FileUpload.vue
create mode 100644 im-web/src/components/common/FullImage.vue
create mode 100644 im-web/src/components/common/HeadImage.vue
create mode 100644 im-web/src/components/common/Icp.vue
create mode 100644 im-web/src/components/common/ResizableAside.vue
create mode 100644 im-web/src/components/common/RightMenu.vue
create mode 100644 im-web/src/components/common/UserInfo.vue
create mode 100644 im-web/src/components/common/VirtualScroller.vue
create mode 100644 im-web/src/components/friend/AddFriend.vue
create mode 100644 im-web/src/components/friend/FriendItem.vue
create mode 100644 im-web/src/components/group/AddGroupMember.vue
create mode 100644 im-web/src/components/group/GroupItem.vue
create mode 100644 im-web/src/components/group/GroupMember.vue
create mode 100644 im-web/src/components/group/GroupMemberItem.vue
create mode 100644 im-web/src/components/group/GroupMemberSelector.vue
create mode 100644 im-web/src/components/rtc/RtcGroupJoin.vue
create mode 100644 im-web/src/components/rtc/RtcGroupVideo.vue
create mode 100644 im-web/src/components/rtc/RtcPrivateAcceptor.vue
create mode 100644 im-web/src/components/rtc/RtcPrivateVideo.vue
create mode 100644 im-web/src/components/setting/Setting.vue
create mode 100644 im-web/src/main.js
create mode 100644 im-web/src/router/index.js
create mode 100644 im-web/src/store/chatStore.js
create mode 100644 im-web/src/store/configStore.js
create mode 100644 im-web/src/store/friendStore.js
create mode 100644 im-web/src/store/groupStore.js
create mode 100644 im-web/src/store/userStore.js
create mode 100644 im-web/src/utils/directive/dialogDrag.js
create mode 100644 im-web/src/view/Chat.vue
create mode 100644 im-web/src/view/Friend.vue
create mode 100644 im-web/src/view/Group.vue
create mode 100644 im-web/src/view/Home.vue
create mode 100644 im-web/src/view/Login.vue
create mode 100644 im-web/src/view/Register.vue
create mode 100644 im-web/vue.config.js
create mode 100644 pom.xml
create mode 100644 截图/app/1.png
create mode 100644 截图/app/2.png
create mode 100644 截图/h5二维码.png
create mode 100644 截图/web/单人通话.jpg
create mode 100644 截图/web/多人通话.jpg
create mode 100644 截图/web/好友.jpg
create mode 100644 截图/web/私聊.jpg
create mode 100644 截图/web/群列表.jpg
create mode 100644 截图/web/群聊.jpg
create mode 100644 截图/消息推送集群化.jpg
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..09144bf
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,14 @@
+/.idea/
+/box-im.iml
+/im-server/im-server.iml
+/im-platform/im-platform.iml
+/im-client/im-client.iml
+/im-common/im-common.iml
+/im-server/target/
+/im-platform/target/
+/im-client/target/
+/im-common/target/
+/im-web/node_modules/
+/im-web/dist/
+/im-uniapp/node_modules/
+/im-uniapp/package-lock.json
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..edc4cb5
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2022 blue
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..96a5f4c
--- /dev/null
+++ b/README.md
@@ -0,0 +1,145 @@
+
+### **盒子IM**
+
+[](https://gitee.com/bluexsx/box-im)
+[](https://github.com/bluexsx/box-im)
+
+
+1. 盒子IM是一个仿微信实现的网页版聊天软件,不依赖任何第三方收费组件。
+1. 支持私聊、群聊、离线消息、发送语音、图片、文件、已读未读、群@等功能
+1. 支持音视频通话(基于原生webrtc实现,需要ssl证书)
+1. uniapp端兼容app、h5、微信小程序,可与web端同时在线,并保持消息同步
+1. 后端采用springboot+netty实现,网页端使用vue,移动端使用uniapp
+1. 服务器支持集群化部署,具有良好的横向扩展能力
+
+
+详细文档:https://www.yuque.com/u1475064/mufu2a
+官方论坛: https://bbs.boxim.online
+
+#### 近期更新
+发布3.0版本:
+
+- 后台管理端上线,后台管理代码仓库地址:https://gitee.com/bluexsx/box-im-admin
+- 框架和组件版本全面升级: jdk17、springboot3.3、node18等
+- 部分界面,功能、性能优化
+
+
+#### 在线体验
+
+网页端:https://www.boxim.online
+
+移动安卓端:已上架至各大主流手机应用市场以及腾讯应用宝,搜索"盒子IM",下载安装即可
+
+移动ios端: 已上架至app store,搜索"盒子IM",下载安装即可
+
+小程序段: 已上架至微信小程序,搜索“盒子IM”进入即可
+
+移动H5端: https://www.boxim.online/h5/ ,或扫码:
+
+
+
+测试账号:张三/Aa123123 李四/Aa123123,也可以自行注册
+
+说明:
+1.**请勿利用测试账号辱骂他人、发布低俗内容,否则将直接对您的IP进行封禁**
+2.由于部分厂商上架审核要求实名制,app端隐藏了"用户名注册"注册通道,可通过长按注册页面蓝色文字标题解除限制
+3.由于微信小程序每次发布审核过于严苛和繁琐,暂时不再提供体验环境,但uniapp端依然会继续兼容小程序
+4.体验环境部署的是商业版本,与开源版本功能存在一定差异,具体请参考:
+https://www.yuque.com/u1475064/imk5n2/qtezcg32q1d0dr29#SbvXq
+
+
+#### 付费服务
+商业版源码: https://www.yuque.com/u1475064/imk5n2/qtezcg32q1d0dr29
+远程协助: https://www.yuque.com/u1475064/imk5n2/fettd57rvzc29s5r
+环境搭建: https://www.yuque.com/u1475064/imk5n2/qgq5cvgmavallqnl
+
+
+#### 项目结构
+| 模块 | 功能 |
+|-------------|----------------------------------|
+| im-platform | 业务平台服务,负责处理来自用户的业务请求(http) |
+| im-server | 消息推送服务,不依赖业务,负责将消息推送给用户(ws) |
+| im-client | 消息推送sdk, 其他服务可集成此sdk与im-server通信 |
+| im-common | 公共包,后端服务均依赖此包 |
+| im-web | web页面 |
+| im-uniapp | uniapp页面,可打包成app、h5、微信小程序 |
+
+#### 消息推送方案
+当消息的发送者和接收者连的不是同一个server时,消息是无法直接推送的,所以我们设计出了能够支持跨节点推送的方案:
+
+
+- 利用了redis的list数据实现消息推送,其中key为im:unread:${serverid},每个key的数据可以看做一个queue,每个im-server根据自身的id只消费属于自己的queue
+- redis记录了每个用户的websocket连接的是哪个im-server,当用户发送消息时,im-platform将根据所连接的im-server的id,决定将消息推向哪个queue
+
+
+#### 本地启动
+1.安装运行环境
+- 安装node:v18.19.0
+- 安装jdk:17
+- 安装maven:3.9.6
+- 安装mysql:8.0,账号密码分别为root/root,创建名为im_platform的数据库,运行db/im_platfrom.sql脚本
+- 安装redis:6.2
+- 安装minio:RELEASE.2024-xx,使用默认账号、密码、端口
+
+2.启动后端服务
+```
+mvn clean package
+java -jar ./im-platform/target/im-platform.jar
+java -jar ./im-server/target/im-server.jar
+```
+
+3.启动前端web
+```
+cd im-web
+npm install
+npm run serve
+```
+访问 http://localhost:8080
+
+4.启动uniapp-h5
+将im-uniapp目录导入HBuilderX,点击菜单"运行"->"开发环境-h5"
+访问 http://localhost:5173
+
+
+#### 界面截图
+私聊:
+
+
+群聊:
+
+
+群通话(商业版):
+
+
+好友列表:
+
+
+群列表:
+
+
+移动端APP:
+
+
+
+
+
+#### 加入交流群
+群1: 741174521(已满)
+群2: 937470451(已满)
+群3: 1012017031(已满)
+群4: 765849133
+
+欢迎进群与小伙们一起交流, **申请加群前请务必先star哦**
+
+
+#### 点下star吧
+如果项目对您有帮助,请点亮右上方的star,支持一下作者吧!
+
+
+#### 说明几点
+
+1. 本系统允许用于商业用途,且不收费,**但切记不要用于任何非法用途** ,本软件作者不会为此承担任何责任
+1. 基于本系统二次开发后再次开源的项目,请注明引用出处,以避免引发不必要的误会
+1. 为方便管理,要pr的同学请将代码提交到v_3.0.0分支,作者会在功能上线时合并到master分支
+1. 允许商用不代表可以随意倒卖开源代码,尤其是代码、名字、截图一点都不改就拿去卖钱的,我劝你们善良一点!
+
diff --git a/db/im-platform.sql b/db/im-platform.sql
new file mode 100644
index 0000000..20d1c71
--- /dev/null
+++ b/db/im-platform.sql
@@ -0,0 +1,112 @@
+create table `im_user`(
+ `id` bigint not null auto_increment primary key comment 'id',
+ `user_name` varchar(255) not null comment '用户名',
+ `nick_name` varchar(255) not null comment '用户昵称',
+ `head_image` varchar(255) default '' comment '用户头像',
+ `head_image_thumb` varchar(255) default '' comment '用户头像缩略图',
+ `password` varchar(255) not null comment '密码',
+ `sex` tinyint(1) default 0 comment '性别 0:男 1:女',
+ `is_banned` tinyint(1) default 0 comment '是否被封禁 0:否 1:是',
+ `reason` varchar(255) default '' comment '被封禁原因',
+ `type` smallint default 1 comment '用户类型 1:普通用户 2:审核账户',
+ `signature` varchar(1024) default '' comment '个性签名',
+ `last_login_time` datetime DEFAULT null comment '最后登录时间',
+ `created_time` datetime DEFAULT CURRENT_TIMESTAMP comment '创建时间',
+ unique key `idx_user_name`(user_name),
+ key `idx_nick_name`(nick_name)
+) ENGINE=InnoDB CHARSET=utf8mb4 comment '用户';
+
+create table `im_friend`(
+ `id` bigint not null auto_increment primary key comment 'id',
+ `user_id` bigint not null comment '用户id',
+ `friend_id` bigint not null comment '好友id',
+ `friend_nick_name` varchar(255) not null comment '好友昵称',
+ `friend_head_image` varchar(255) default '' comment '好友头像',
+ `is_dnd` tinyint comment '免打扰标识(Do Not Disturb) 0:关闭 1:开启',
+ `deleted` tinyint comment '删除标识 0:正常 1:已删除',
+ `created_time` datetime DEFAULT CURRENT_TIMESTAMP comment '创建时间',
+ key `idx_user_id` (`user_id`),
+ key `idx_friend_id` (`friend_id`)
+) ENGINE=InnoDB CHARSET=utf8mb4 comment '好友';
+
+create table `im_private_message`(
+ `id` bigint not null auto_increment primary key comment 'id',
+ `tmp_id` varchar(32) comment '临时id,由前端生成',
+ `send_id` bigint not null comment '发送用户id',
+ `recv_id` bigint not null comment '接收用户id',
+ `content` text comment '发送内容',
+ `type` tinyint(1) NOT NULL comment '消息类型 0:文字 1:图片 2:文件 3:语音 4:视频 21:提示',
+ `status` tinyint(1) NOT NULL comment '状态 0:未读 1:已读 2:撤回 3:已读',
+ `send_time` datetime DEFAULT CURRENT_TIMESTAMP comment '发送时间',
+ key `idx_send_id` (`send_id`),
+ key `idx_recv_id` (`recv_id`)
+)ENGINE=InnoDB CHARSET=utf8mb4 comment '私聊消息';
+
+
+create table `im_group`(
+ `id` bigint not null auto_increment primary key comment 'id',
+ `name` varchar(255) not null comment '群名字',
+ `owner_id` bigint not null comment '群主id',
+ `head_image` varchar(255) default '' comment '群头像',
+ `head_image_thumb` varchar(255) default '' comment '群头像缩略图',
+ `notice` varchar(1024) default '' comment '群公告',
+ `is_banned` tinyint(1) default 0 comment '是否被封禁 0:否 1:是',
+ `reason` varchar(255) default '' comment '被封禁原因',
+ `dissolve` tinyint(1) default 0 comment '是否已解散',
+ `created_time` datetime default CURRENT_TIMESTAMP comment '创建时间'
+)ENGINE=InnoDB CHARSET=utf8mb4 comment '群';
+
+create table `im_group_member`(
+ `id` bigint not null auto_increment primary key comment 'id',
+ `group_id` bigint not null comment '群id',
+ `user_id` bigint not null comment '用户id',
+ `user_nick_name` varchar(255) DEFAULT '' comment '用户昵称',
+ `remark_nick_name` varchar(255) DEFAULT '' comment '显示昵称备注',
+ `head_image` varchar(255) DEFAULT '' comment '用户头像',
+ `remark_group_name` varchar(255) DEFAULT '' comment '显示群名备注',
+ `is_dnd` tinyint comment '免打扰标识(Do Not Disturb) 0:关闭 1:开启',
+ `quit` tinyint(1) DEFAULT 0 comment '是否已退出',
+ `quit_time` datetime DEFAULT NULL comment '退出时间',
+ `created_time` datetime DEFAULT CURRENT_TIMESTAMP comment '创建时间',
+ key `idx_group_id`(`group_id`),
+ key `idx_user_id`(`user_id`)
+)ENGINE=InnoDB CHARSET=utf8mb4 comment '群成员';
+
+create table `im_group_message`(
+ `id` bigint not null auto_increment primary key comment 'id',
+ `tmp_id` varchar(32) comment '临时id,由前端生成',
+ `group_id` bigint not null comment '群id',
+ `send_id` bigint not null comment '发送用户id',
+ `send_nick_name` varchar(255) DEFAULT '' comment '发送用户昵称',
+ `recv_ids` varchar(1024) DEFAULT '' comment '接收用户id,逗号分隔,为空表示发给所有成员',
+ `content` text comment '发送内容',
+ `at_user_ids` varchar(1024) comment '被@的用户id列表,逗号分隔',
+ `receipt` tinyint DEFAULT 0 comment '是否回执消息',
+ `receipt_ok` tinyint DEFAULT 0 comment '回执消息是否完成',
+ `type` tinyint(1) NOT NULL comment '消息类型 0:文字 1:图片 2:文件 3:语音 4:视频 21:提示' ,
+ `status` tinyint(1) DEFAULT 0 comment '状态 0:未发出 2:撤回 ',
+ `send_time` datetime DEFAULT CURRENT_TIMESTAMP comment '发送时间',
+ key `idx_group_id` (group_id)
+)ENGINE=InnoDB CHARSET=utf8mb4 comment '群消息';
+
+create table `im_sensitive_word`(
+ `id` bigint not null auto_increment primary key comment 'id',
+ `content` varchar(64) not null comment '敏感词内容',
+ `enabled` tinyint DEFAULT 0 COMMENT '是否启用 0:未启用 1:启用',
+ `creator` bigint DEFAULT NULL COMMENT '创建者',
+ `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'
+)ENGINE=InnoDB CHARSET=utf8mb4 comment '敏感词';
+
+CREATE TABLE `im_file_info` (
+ `id` BIGINT NOT NULL auto_increment PRIMARY key comment 'id',
+ `file_name` VARCHAR(255) NOT NULL comment '文件名',
+ `file_path` VARCHAR(255) NOT NULL comment '文件地址',
+ `file_size` INTEGER NOT NULL comment '文件大小',
+ `file_type` tinyint NOT NULL comment '0:普通文件 1:图片 2:视频',
+ `compressed_path` VARCHAR(255) DEFAULT NULL comment '压缩文件路径',
+ `cover_path` VARCHAR(255) DEFAULT NULL comment '封面文件路径,仅视频文件有效',
+ `upload_time` datetime DEFAULT CURRENT_TIMESTAMP comment '上传时间',
+ `is_permanent` tinyint DEFAULT 0 comment '是否永久文件',
+ `md5` VARCHAR(64) NOT NULL comment '文件md5',
+ KEY `idx_md5` (md5)
+) ENGINE = InnoDB CHARSET = utf8mb4 comment '文件';
\ No newline at end of file
diff --git a/db/敏感词库初始化.sql b/db/敏感词库初始化.sql
new file mode 100644
index 0000000..f6e46aa
--- /dev/null
+++ b/db/敏感词库初始化.sql
@@ -0,0 +1,470 @@
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('爱液', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('按摩棒', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('拔出来', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('爆草', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('包二奶', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('暴干', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('暴奸', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('暴乳', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('爆乳', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('暴淫', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('屄', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('被操', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('被插', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('被干', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('逼奸', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('仓井空', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('插暴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('操逼', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('操黑', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('操烂', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('肏你', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('肏死', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('操死', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('操我', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('厕奴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('插比', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('插逼', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('插进', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('插你', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('插我', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('插阴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('潮吹', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('潮喷', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('人电影', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('人论坛', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('人小说', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('人电', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('人电影', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('人卡通', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('人聊', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('人片', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('人视', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('人图', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('人小', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('人电影', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('人论坛', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('人色情', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('人网站', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('人小说', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('艳情小说', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('人游戏', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('吃精', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('赤裸', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('抽插', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('扌由插', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('抽一插', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('春药', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('大波', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('大力抽送', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('大乳', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('荡妇', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('荡女', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('盗撮', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('多人轮', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('发浪', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('放尿', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('肥逼', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('粉穴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('封面女郎', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('风月大陆', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('干死你', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('干穴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('肛交', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('肛门', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('龟头', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('裹本', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('好嫩', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('豪乳', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('黑逼', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('后庭', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('后穴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('虎骑', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('花花公子', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('换妻俱乐部', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('黄片', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('几吧', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('鸡吧', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('鸡巴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('鸡奸', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('寂寞男', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('寂寞女', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('妓女', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('激情', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('集体淫', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('奸情', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('叫床', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('脚交', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('精液', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('就去日', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('巨屌', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('菊花洞', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('菊门', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('巨奶', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('巨乳', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('菊穴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('开苞', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('口爆', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('口活', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('口交', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('口射', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('口淫', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('裤袜', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('狂操', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('狂插', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('浪逼', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('浪妇', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('浪叫', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('浪女', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('狼友', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('聊性', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('流淫', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('铃木麻', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('凌辱', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('漏乳', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('乱交', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('乱伦', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('轮暴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('轮操', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('轮奸', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('裸陪', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('买春', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('美逼', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('美少妇', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('美乳', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('美腿', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('美穴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('美幼', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('秘唇', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('迷奸', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('密穴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('蜜穴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('蜜液', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('摸奶', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('摸胸', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('母奸', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('奈美', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('奶子', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('男奴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('内射', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('嫩逼', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('嫩女', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('嫩穴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('捏弄', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('女优', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('炮友', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('砲友', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('喷精', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('屁眼', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('品香堂', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('前凸后翘', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('强暴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('强奸处女', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('情趣用品', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('情色', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('拳交', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('全裸', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('群交', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('惹火身材', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('人妻', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('人兽', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('日逼', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('日烂', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('肉棒', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('肉逼', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('肉唇', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('肉洞', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('肉缝', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('肉棍', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('肉茎', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('肉具', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('揉乳', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('肉穴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('肉欲', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('乳爆', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('乳房', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('乳沟', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('乳交', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('乳头', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('三级片', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('骚逼', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('骚比', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('骚女', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('骚水', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('骚穴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('色逼', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('色界', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('色猫', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('色盟', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('色情网站', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('色区', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('色诱', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('色欲', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('射爽', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('射颜', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('食精', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('释欲', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('兽奸', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('兽交', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('手淫', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('兽欲', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('熟妇', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('熟母', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('熟女', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('爽片', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('爽死我了', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('双臀', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('死逼', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('丝袜', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('丝诱', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('松岛枫', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('酥痒', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('汤加丽', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('套弄', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('体奸', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('体位', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('舔脚', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('舔阴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('调教', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('偷欢', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('偷拍', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('推油', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('脱内裤', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('文做', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('我就色', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('无码', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('舞女', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('无修正', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('吸精', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('夏川纯', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('相奸', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('小逼', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('校鸡', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('小穴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('写真', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('性感妖娆', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('性感诱惑', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('性虎', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('性饥渴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('性技巧', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('性交', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('性奴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('性虐', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('性息', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('性欲', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('胸推', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('穴口', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('学生妹', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('穴图', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('亚情', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('颜射', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('阳具', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('杨思敏', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('要射了', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('夜勤病栋', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('一本道', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('一夜欢', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('一夜情', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('阴部', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫虫', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('阴唇', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫荡', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('阴道', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫电影', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('阴阜', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫妇', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫河', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('阴核', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('阴户', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫贱', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫叫', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫教师', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('阴茎', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('阴精', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫浪', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫媚', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫糜', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫魔', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫母', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫女', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫虐', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫妻', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫情', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫色', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫声浪语', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫兽学园', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫书', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫术炼金士', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫水', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫娃', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫威', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫亵', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫样', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫液', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫照', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('应召', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('幼交', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('幼男', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('幼女', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('欲火', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('欲女', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('玉女心经', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('玉蒲团', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('玉乳', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('欲仙欲死', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('玉穴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('援交', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('原味内衣', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('援助交际', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('张筱雨', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('招鸡', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('招妓', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('中年美妇', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('抓胸', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('自拍', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('自慰', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('作爱', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('贱人', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('傻逼', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('煞逼', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('煞笔', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('刹笔', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('傻比', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('沙比', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('欠干', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('婊子养的', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('我日你', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('我操', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('我草', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('卧艹', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('卧槽', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('爆你菊', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('艹你', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('你他妈', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('真他妈', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('别他吗', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('草你吗', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('草你丫', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('操你妈', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('擦你妈', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('操你娘', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('操他妈', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('日你妈', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('干你妈', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('干你娘', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('娘西皮', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('狗操', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('狗草', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('狗杂种', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('狗日的', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('操你祖宗', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('操你全家', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('操你大爷', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('妈逼', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('你麻痹', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('麻痹的', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('妈了个逼', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('马勒', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('狗娘养', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('贱比', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('下贱', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('死全家', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('全家死光', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('全家不得好死', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('全家死绝', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('白痴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('无耻', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('你妈的', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('婊子', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('贱货', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('人渣', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('混蛋', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('媚外', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('和弦', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('兼职', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('限量', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('铃声', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('性伴侣', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('男公关', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('火辣', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('精子', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('射精', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('诱奸', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('强奸', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('做爱', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('性爱', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('发生关系', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('按摩', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('快感', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('处男', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('猛男', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('少妇', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('屌', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('屁股', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('下体', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('内裤', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('浑圆', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('咪咪', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('发情', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('刺激', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('白嫩', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('粉嫩', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('兽性', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('风骚', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('呻吟', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('阉割', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('高潮', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('裸露', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('不穿', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('一丝不挂', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('脱光', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('干你', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('干死', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('我干', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('裙中性运动', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('乱奸', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('乱伦', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('乱伦类', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('乱伦小', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('伦理大', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('伦理电影', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('伦理毛', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('伦理片', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('裸聊', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('裸聊网', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('裸体写真', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('裸舞视', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('裸照', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('美女裸体', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('性交', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('性交视频', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('性交图片', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('性奴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('性奴集中营', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('性虐', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('阴唇', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('阴道', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('阴蒂', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('阴户', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('阴间来电', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('阴茎', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('阴茎增大', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('阴茎助勃', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('阴毛', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('陰唇', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('陰道', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('陰戶', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫荡', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫荡美女', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫荡视频', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫荡照片', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫乱', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫靡', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫魔', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫魔舞', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫女', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫情女', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫肉', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫騷妹', 1, 10000);
+
+
diff --git a/im-client/pom.xml b/im-client/pom.xml
new file mode 100644
index 0000000..dbe3d30
--- /dev/null
+++ b/im-client/pom.xml
@@ -0,0 +1,21 @@
+
+
+
+ box-im
+ com.bx
+ 3.0.0
+
+ 4.0.0
+
+ im-client
+
+
+
+ com.bx
+ im-common
+ 3.0.0
+
+
+
\ No newline at end of file
diff --git a/im-client/src/main/java/com/bx/imclient/IMAutoConfiguration.java b/im-client/src/main/java/com/bx/imclient/IMAutoConfiguration.java
new file mode 100644
index 0000000..c172099
--- /dev/null
+++ b/im-client/src/main/java/com/bx/imclient/IMAutoConfiguration.java
@@ -0,0 +1,13 @@
+package com.bx.imclient;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+
+
+@Slf4j
+@Configuration
+@ComponentScan(basePackages = {"com.bx.imclient", "com.bx.imcommon"})
+public class IMAutoConfiguration {
+
+}
diff --git a/im-client/src/main/java/com/bx/imclient/IMClient.java b/im-client/src/main/java/com/bx/imclient/IMClient.java
new file mode 100644
index 0000000..1630d64
--- /dev/null
+++ b/im-client/src/main/java/com/bx/imclient/IMClient.java
@@ -0,0 +1,92 @@
+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 com.bx.imcommon.model.IMSystemMessage;
+import lombok.AllArgsConstructor;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.List;
+import java.util.Map;
+
+@Configuration
+@AllArgsConstructor
+public class IMClient {
+
+ private final IMSender imSender;
+
+ /**
+ * 判断用户是否在线
+ *
+ * @param userId 用户id
+ */
+ public Boolean isOnline(Long userId){
+ return imSender.isOnline(userId);
+ }
+
+ /**
+ * 判断用户是否在线
+ *
+ * @param userId 用户id
+ * @param terminal 终端可惜
+ */
+ public Boolean isOnline(Long userId,IMTerminalType terminal){
+ return imSender.isOnline(userId,terminal);
+ }
+
+
+ /**
+ * 判断多个用户是否在线
+ *
+ * @param userIds 用户id列表
+ * @return 在线的用户列表
+ */
+ public List getOnlineUser(List userIds){
+ return imSender.getOnlineUser(userIds);
+ }
+
+
+ /**
+ * 判断多个用户是否在线
+ *
+ * @param userIds 用户id列表
+ * @return 在线的用户终端
+ */
+ public Map> getOnlineTerminal(List userIds){
+ return imSender.getOnlineTerminal(userIds);
+ }
+
+ /**
+ * 发送系统消息(发送结果通过MessageListener接收)
+ *
+ * @param message 私有消息
+ */
+ public void sendSystemMessage(IMSystemMessage message){
+ imSender.sendSystemMessage(message);
+ }
+
+
+ /**
+ * 发送私聊消息(发送结果通过MessageListener接收)
+ *
+ * @param message 私有消息
+ */
+ public void sendPrivateMessage(IMPrivateMessage message){
+ imSender.sendPrivateMessage(message);
+ }
+
+ /**
+ * 发送群聊消息(发送结果通过MessageListener接收)
+ *
+ * @param message 群聊消息
+ */
+ public void sendGroupMessage(IMGroupMessage message){
+ imSender.sendGroupMessage(message);
+ }
+
+
+
+
+}
diff --git a/im-client/src/main/java/com/bx/imclient/annotation/IMListener.java b/im-client/src/main/java/com/bx/imclient/annotation/IMListener.java
new file mode 100644
index 0000000..4f54bf9
--- /dev/null
+++ b/im-client/src/main/java/com/bx/imclient/annotation/IMListener.java
@@ -0,0 +1,18 @@
+package com.bx.imclient.annotation;
+
+import com.bx.imcommon.enums.IMListenerType;
+import org.springframework.stereotype.Component;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target({ElementType.TYPE,ElementType.FIELD})
+@Retention(RetentionPolicy.RUNTIME)
+@Component
+public @interface IMListener {
+
+ IMListenerType type();
+
+}
diff --git a/im-client/src/main/java/com/bx/imclient/listener/MessageListener.java b/im-client/src/main/java/com/bx/imclient/listener/MessageListener.java
new file mode 100644
index 0000000..0ee2af3
--- /dev/null
+++ b/im-client/src/main/java/com/bx/imclient/listener/MessageListener.java
@@ -0,0 +1,12 @@
+package com.bx.imclient.listener;
+
+
+import com.bx.imcommon.model.IMSendResult;
+
+import java.util.List;
+
+public interface MessageListener {
+
+ void process(List> result);
+
+}
diff --git a/im-client/src/main/java/com/bx/imclient/listener/MessageListenerMulticaster.java b/im-client/src/main/java/com/bx/imclient/listener/MessageListenerMulticaster.java
new file mode 100644
index 0000000..bd95284
--- /dev/null
+++ b/im-client/src/main/java/com/bx/imclient/listener/MessageListenerMulticaster.java
@@ -0,0 +1,46 @@
+package com.bx.imclient.listener;
+
+
+import cn.hutool.core.collection.CollUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.bx.imclient.annotation.IMListener;
+import com.bx.imcommon.enums.IMListenerType;
+import com.bx.imcommon.model.IMSendResult;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+import java.util.Collections;
+import java.util.List;
+
+@Component
+public class MessageListenerMulticaster {
+
+ @Autowired(required = false)
+ private List messageListeners = Collections.emptyList();
+
+ public void multicast(IMListenerType listenerType, List results){
+ if(CollUtil.isEmpty(results)){
+ return;
+ }
+ for(MessageListener listener:messageListeners){
+ IMListener annotation = listener.getClass().getAnnotation(IMListener.class);
+ if(annotation!=null && (annotation.type().equals(IMListenerType.ALL) || annotation.type().equals(listenerType))){
+ results.forEach(result->{
+ // 将data转回对象类型
+ if(result.getData() instanceof JSONObject){
+ Type superClass = listener.getClass().getGenericInterfaces()[0];
+ Type type = ((ParameterizedType) superClass).getActualTypeArguments()[0];
+ JSONObject data = (JSONObject)result.getData();
+ result.setData(data.toJavaObject(type));
+ }
+ });
+ // 回调到调用方处理
+ listener.process(results);
+ }
+ }
+ }
+
+
+}
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
new file mode 100644
index 0000000..1ced811
--- /dev/null
+++ b/im-client/src/main/java/com/bx/imclient/sender/IMSender.java
@@ -0,0 +1,262 @@
+package com.bx.imclient.sender;
+
+import cn.hutool.core.collection.CollUtil;
+import com.bx.imclient.listener.MessageListenerMulticaster;
+import com.bx.imcommon.contant.IMRedisKey;
+import com.bx.imcommon.enums.IMCmdType;
+import com.bx.imcommon.enums.IMListenerType;
+import com.bx.imcommon.enums.IMSendCode;
+import com.bx.imcommon.enums.IMTerminalType;
+import com.bx.imcommon.model.*;
+import com.bx.imcommon.mq.RedisMQTemplate;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+
+@Service
+@RequiredArgsConstructor
+public class IMSender {
+
+ @Autowired
+ private RedisMQTemplate redisMQTemplate;
+
+ @Value("${spring.application.name}")
+ private String appName;
+
+ private final MessageListenerMulticaster listenerMulticaster;
+
+
+ public void sendSystemMessage(IMSystemMessage message){
+ // 根据群聊每个成员所连的IM-server,进行分组
+ Map sendMap = new HashMap<>();
+ for (Integer terminal : message.getRecvTerminals()) {
+ message.getRecvIds().forEach(id -> {
+ String key = String.join(":", IMRedisKey.IM_USER_SERVER_ID, id.toString(), terminal.toString());
+ sendMap.put(key,new IMUserInfo(id, terminal));
+ });
+ }
+ // 批量拉取
+ List