├── im-platform └── src │ └── main │ ├── resources │ ├── sensitive-words.txt │ ├── mapper │ │ ├── GroupMapper.xml │ │ ├── UserMapper.xml │ │ ├── FriendMapper.xml │ │ ├── GroupMemberMapper.xml │ │ ├── GroupMessageMapper.xml │ │ └── PrivateMessageMapper.xml │ └── application.yml │ └── java │ └── com │ └── bx │ └── implatform │ ├── config │ ├── ICEServer.java │ ├── ICEServerConfig.java │ ├── JwtProperties.java │ └── MinIoClientConfig.java │ ├── result │ └── Result.java │ ├── mapper │ ├── UserMapper.java │ ├── GroupMapper.java │ ├── FriendMapper.java │ ├── GroupMemberMapper.java │ ├── GroupMessageMapper.java │ └── PrivateMessageMapper.java │ ├── vo │ ├── UploadImageVO.java │ ├── OnlineTerminalVO.java │ ├── FriendVO.java │ ├── GroupInviteVO.java │ ├── GroupMemberVO.java │ ├── LoginVO.java │ ├── PrivateMessageVO.java │ ├── GroupMessageVO.java │ └── GroupVO.java │ ├── session │ ├── UserSession.java │ ├── WebrtcSession.java │ └── SessionContext.java │ ├── contant │ ├── Constant.java │ └── RedisKey.java │ ├── dto │ ├── ModifyPwdDTO.java │ ├── PrivateMessageDTO.java │ ├── LoginDTO.java │ ├── RegisterDTO.java │ └── GroupMessageDTO.java │ ├── enums │ ├── FileType.java │ ├── MessageStatus.java │ └── ResultCode.java │ ├── service │ └── IWebrtcService.java │ ├── IMPlatformApp.java │ ├── filter │ └── CacheFilter.java │ ├── util │ ├── FileUtil.java │ ├── DateTimeUtils.java │ └── BeanUtils.java │ └── exception │ └── GlobalException.java ├── im-api-example └── src │ └── main │ ├── resources │ ├── sensitive-words.txt │ └── application.yml │ └── java │ └── com │ └── bx │ └── api │ ├── mapper │ ├── UserMapper.java │ ├── GroupMapper.java │ ├── FriendMapper.java │ ├── GroupMemberMapper.java │ ├── GroupMessageMapper.java │ └── PrivateMessageMapper.java │ ├── result │ └── Result.java │ ├── session │ ├── UserSession.java │ ├── WebrtcSession.java │ └── SessionContext.java │ ├── controller │ ├── UserController.java │ └── HelloController.java │ ├── vo │ ├── FriendVO.java │ └── dto │ │ └── RegisterDTO.java │ ├── enums │ ├── FileType.java │ ├── MessageStatus.java │ └── ResultCode.java │ ├── config │ ├── JwtProperties.java │ └── MinIoClientConfig.java │ ├── ApiApp.java │ ├── util │ ├── FileUtil.java │ ├── DateTimeUtils.java │ └── BeanUtils.java │ ├── filter │ └── CacheFilter.java │ └── exception │ └── GlobalException.java ├── im-uniapp ├── uni_modules │ ├── uni-scss │ │ ├── index.scss │ │ ├── styles │ │ │ ├── setting │ │ │ │ ├── _border.scss │ │ │ │ └── _text.scss │ │ │ ├── index.scss │ │ │ └── tools │ │ │ │ └── functions.scss │ │ ├── changelog.md │ │ ├── readme.md │ │ └── theme.scss │ ├── uni-section │ │ ├── changelog.md │ │ └── readme.md │ ├── uni-fav │ │ ├── components │ │ │ └── uni-fav │ │ │ │ └── i18n │ │ │ │ ├── zh-Hans.json │ │ │ │ ├── zh-Hant.json │ │ │ │ ├── en.json │ │ │ │ └── index.js │ │ ├── readme.md │ │ └── changelog.md │ ├── uni-ui │ │ └── components │ │ │ └── uni-ui │ │ │ └── uni-ui.vue │ ├── uni-search-bar │ │ ├── components │ │ │ └── uni-search-bar │ │ │ │ └── i18n │ │ │ │ ├── zh-Hans.json │ │ │ │ ├── zh-Hant.json │ │ │ │ ├── en.json │ │ │ │ └── index.js │ │ ├── readme.md │ │ └── changelog.md │ ├── uni-icons │ │ ├── components │ │ │ └── uni-icons │ │ │ │ └── uniicons.ttf │ │ ├── readme.md │ │ └── changelog.md │ ├── uni-countdown │ │ ├── components │ │ │ └── uni-countdown │ │ │ │ └── i18n │ │ │ │ ├── en.json │ │ │ │ ├── zh-Hans.json │ │ │ │ ├── zh-Hant.json │ │ │ │ └── index.js │ │ ├── readme.md │ │ └── changelog.md │ ├── uni-pagination │ │ ├── components │ │ │ └── uni-pagination │ │ │ │ └── i18n │ │ │ │ ├── zh-Hans.json │ │ │ │ ├── zh-Hant.json │ │ │ │ ├── en.json │ │ │ │ ├── es.json │ │ │ │ ├── fr.json │ │ │ │ └── index.js │ │ ├── readme.md │ │ └── changelog.md │ ├── uni-load-more │ │ ├── components │ │ │ └── uni-load-more │ │ │ │ └── i18n │ │ │ │ ├── zh-Hans.json │ │ │ │ ├── zh-Hant.json │ │ │ │ ├── en.json │ │ │ │ └── index.js │ │ ├── readme.md │ │ └── changelog.md │ ├── uni-popup │ │ ├── components │ │ │ └── uni-popup │ │ │ │ ├── i18n │ │ │ │ ├── zh-Hant.json │ │ │ │ ├── zh-Hans.json │ │ │ │ ├── en.json │ │ │ │ └── index.js │ │ │ │ └── popup.js │ │ └── readme.md │ ├── uni-fab │ │ ├── readme.md │ │ └── changelog.md │ ├── uni-calendar │ │ ├── components │ │ │ └── uni-calendar │ │ │ │ └── i18n │ │ │ │ ├── index.js │ │ │ │ ├── zh-Hans.json │ │ │ │ ├── zh-Hant.json │ │ │ │ └── en.json │ │ └── changelog.md │ ├── uni-goods-nav │ │ ├── components │ │ │ └── uni-goods-nav │ │ │ │ └── i18n │ │ │ │ ├── index.js │ │ │ │ ├── zh-Hans.json │ │ │ │ ├── zh-Hant.json │ │ │ │ └── en.json │ │ ├── readme.md │ │ └── changelog.md │ ├── uni-grid │ │ ├── readme.md │ │ └── changelog.md │ ├── uni-drawer │ │ ├── readme.md │ │ └── changelog.md │ ├── uni-group │ │ ├── readme.md │ │ └── changelog.md │ ├── uni-combox │ │ ├── readme.md │ │ └── changelog.md │ ├── uni-datetime-picker │ │ ├── components │ │ │ └── uni-datetime-picker │ │ │ │ └── i18n │ │ │ │ ├── index.js │ │ │ │ ├── zh-Hans.json │ │ │ │ ├── zh-Hant.json │ │ │ │ └── en.json │ │ └── readme.md │ ├── uni-card │ │ ├── readme.md │ │ └── changelog.md │ ├── uni-tooltip │ │ ├── changelog.md │ │ └── readme.md │ ├── uni-data-select │ │ ├── readme.md │ │ └── changelog.md │ ├── uni-steps │ │ ├── readme.md │ │ └── changelog.md │ ├── uni-table │ │ ├── readme.md │ │ ├── i18n │ │ │ ├── zh-Hans.json │ │ │ ├── zh-Hant.json │ │ │ ├── index.js │ │ │ ├── en.json │ │ │ ├── es.json │ │ │ └── fr.json │ │ ├── components │ │ │ └── uni-tbody │ │ │ │ └── uni-tbody.vue │ │ └── changelog.md │ ├── uni-transition │ │ ├── readme.md │ │ └── changelog.md │ ├── uni-dateformat │ │ ├── readme.md │ │ └── changelog.md │ ├── uni-row │ │ ├── readme.md │ │ └── changelog.md │ ├── uni-swiper-dot │ │ ├── readme.md │ │ └── changelog.md │ ├── uni-tag │ │ ├── readme.md │ │ └── changelog.md │ ├── uni-rate │ │ ├── readme.md │ │ └── changelog.md │ ├── uni-badge │ │ └── readme.md │ ├── uni-indexed-list │ │ ├── readme.md │ │ └── changelog.md │ ├── uni-link │ │ ├── readme.md │ │ └── changelog.md │ ├── uni-notice-bar │ │ ├── readme.md │ │ └── changelog.md │ ├── uni-nav-bar │ │ ├── readme.md │ │ └── components │ │ │ └── uni-nav-bar │ │ │ └── uni-status-bar.vue │ ├── uni-number-box │ │ ├── readme.md │ │ └── changelog.md │ ├── uni-swipe-action │ │ ├── readme.md │ │ └── components │ │ │ └── uni-swipe-action-item │ │ │ └── isPC.js │ ├── uni-file-picker │ │ └── readme.md │ ├── uni-title │ │ ├── readme.md │ │ └── changelog.md │ ├── uni-segmented-control │ │ ├── readme.md │ │ └── changelog.md │ ├── uni-collapse │ │ └── readme.md │ ├── uni-easyinput │ │ └── readme.md │ ├── uni-data-checkbox │ │ └── readme.md │ ├── uni-forms │ │ └── readme.md │ └── uni-data-picker │ │ └── readme.md ├── static │ ├── emoji │ │ ├── 0.gif │ │ ├── 1.gif │ │ ├── 10.gif │ │ ├── 11.gif │ │ ├── 12.gif │ │ ├── 13.gif │ │ ├── 14.gif │ │ ├── 15.gif │ │ ├── 16.gif │ │ ├── 17.gif │ │ ├── 18.gif │ │ ├── 19.gif │ │ ├── 2.gif │ │ ├── 20.gif │ │ ├── 21.gif │ │ ├── 22.gif │ │ ├── 23.gif │ │ ├── 24.gif │ │ ├── 25.gif │ │ ├── 26.gif │ │ ├── 27.gif │ │ ├── 28.gif │ │ ├── 29.gif │ │ ├── 3.gif │ │ ├── 30.gif │ │ ├── 31.gif │ │ ├── 32.gif │ │ ├── 33.gif │ │ ├── 34.gif │ │ ├── 35.gif │ │ ├── 36.gif │ │ ├── 37.gif │ │ ├── 38.gif │ │ ├── 39.gif │ │ ├── 4.gif │ │ ├── 40.gif │ │ ├── 41.gif │ │ ├── 42.gif │ │ ├── 43.gif │ │ ├── 44.gif │ │ ├── 45.gif │ │ ├── 46.gif │ │ ├── 47.gif │ │ ├── 48.gif │ │ ├── 49.gif │ │ ├── 5.gif │ │ ├── 50.gif │ │ ├── 51.gif │ │ ├── 52.gif │ │ ├── 53.gif │ │ ├── 54.gif │ │ ├── 55.gif │ │ ├── 56.gif │ │ ├── 6.gif │ │ ├── 7.gif │ │ ├── 8.gif │ │ └── 9.gif │ ├── icon │ │ └── iconfont.ttf │ ├── tarbar │ │ ├── chat.png │ │ ├── friend.png │ │ ├── group.png │ │ ├── mine.png │ │ ├── chat_active.png │ │ ├── mine_active.png │ │ ├── friend_active.png │ │ └── group_active.png │ └── image │ │ ├── online_app.png │ │ └── online_web.png ├── uni.promisify.adaptor.js ├── vite.config.js ├── common │ ├── enums.js │ └── emotion.js ├── main.js ├── index.html ├── store │ ├── index.js │ └── userStore.js ├── package.json ├── components │ ├── group-item │ │ └── group-item.vue │ └── loading │ │ └── loading.vue └── pages │ └── friend │ └── friend-search.vue ├── im-server └── src │ └── main │ ├── resources │ ├── application.yml │ └── application-dev.yml │ └── java │ └── com │ └── bx │ └── imserver │ ├── netty │ ├── IMServer.java │ ├── processor │ │ ├── AbstractMessageProcessor.java │ │ └── ProcessorFactory.java │ ├── ws │ │ └── endecode │ │ │ ├── MessageProtocolDecoder.java │ │ │ └── MessageProtocolEncoder.java │ └── tcp │ │ └── endecode │ │ ├── MessageProtocolEncoder.java │ │ └── MessageProtocolDecoder.java │ ├── constant │ └── ChannelAttrKey.java │ └── IMServerApp.java ├── 截图 ├── 交流群.png ├── h5二维码.png ├── web │ ├── 私聊.jpg │ ├── 群聊1.jpg │ ├── 群聊2.jpg │ ├── 好友列表.jpg │ └── 群聊列表.jpg ├── 微信收款码.png ├── 消息推送集群化.jpg ├── web-老版 │ ├── 群聊.jpg │ ├── 发送语音.jpg │ ├── 好友列表.jpg │ ├── 文字聊天.jpg │ ├── 群聊列表.jpg │ └── 发送图片文件.jpg ├── wx-mp │ ├── 其他.jpg │ └── 聊天.jpg └── wx小程序二维码.jpg ├── im-ui ├── public │ ├── logo.png │ └── index.html ├── babel.config.js ├── src │ ├── assets │ │ ├── emoji │ │ │ ├── 0.gif │ │ │ ├── 1.gif │ │ │ ├── 10.gif │ │ │ ├── 11.gif │ │ │ ├── 12.gif │ │ │ ├── 13.gif │ │ │ ├── 14.gif │ │ │ ├── 15.gif │ │ │ ├── 16.gif │ │ │ ├── 17.gif │ │ │ ├── 18.gif │ │ │ ├── 19.gif │ │ │ ├── 2.gif │ │ │ ├── 20.gif │ │ │ ├── 21.gif │ │ │ ├── 22.gif │ │ │ ├── 23.gif │ │ │ ├── 24.gif │ │ │ ├── 25.gif │ │ │ ├── 26.gif │ │ │ ├── 27.gif │ │ │ ├── 28.gif │ │ │ ├── 29.gif │ │ │ ├── 3.gif │ │ │ ├── 30.gif │ │ │ ├── 31.gif │ │ │ ├── 32.gif │ │ │ ├── 33.gif │ │ │ ├── 34.gif │ │ │ ├── 35.gif │ │ │ ├── 36.gif │ │ │ ├── 37.gif │ │ │ ├── 38.gif │ │ │ ├── 39.gif │ │ │ ├── 4.gif │ │ │ ├── 40.gif │ │ │ ├── 41.gif │ │ │ ├── 42.gif │ │ │ ├── 43.gif │ │ │ ├── 44.gif │ │ │ ├── 45.gif │ │ │ ├── 46.gif │ │ │ ├── 47.gif │ │ │ ├── 48.gif │ │ │ ├── 49.gif │ │ │ ├── 5.gif │ │ │ ├── 50.gif │ │ │ ├── 51.gif │ │ │ ├── 52.gif │ │ │ ├── 53.gif │ │ │ ├── 54.gif │ │ │ ├── 55.gif │ │ │ ├── 56.gif │ │ │ ├── 6.gif │ │ │ ├── 7.gif │ │ │ ├── 8.gif │ │ │ └── 9.gif │ │ ├── audio │ │ │ ├── call.wav │ │ │ └── tip.wav │ │ ├── image │ │ │ ├── icp_logo.png │ │ │ ├── online_app.png │ │ │ └── online_web.png │ │ ├── iconfont │ │ │ ├── iconfont.ttf │ │ │ ├── iconfont.woff │ │ │ ├── iconfont.woff2 │ │ │ └── iconfont.css │ │ └── style │ │ │ └── global.css │ ├── components │ │ └── common │ │ │ └── Icp.vue │ ├── api │ │ ├── element.js │ │ ├── enums.js │ │ └── emotion.js │ ├── App.vue │ ├── store │ │ ├── userStore.js │ │ └── index.js │ ├── main.js │ └── router │ │ └── index.js ├── .env.development ├── .env.production ├── vue.config.js ├── .gitignore └── README.md ├── im-client ├── src │ └── main │ │ ├── resources │ │ └── META-INF │ │ │ └── spring.factories │ │ └── java │ │ └── com │ │ └── bx │ │ └── imclient │ │ ├── listener │ │ └── MessageListener.java │ │ ├── IMAutoConfiguration.java │ │ └── annotation │ │ └── IMListener.java └── pom.xml ├── minio └── minio.bat ├── im-commom └── src │ └── main │ └── java │ └── com │ └── bx │ └── imcommon │ ├── model │ ├── IMHeartbeatInfo.java │ ├── IMLoginInfo.java │ ├── IMSendInfo.java │ ├── IMSessionInfo.java │ ├── IMSendResult.java │ ├── IMUserInfo.java │ ├── IMRecvInfo.java │ ├── IMPrivateMessage.java │ └── IMGroupMessage.java │ ├── contant │ ├── IMConstant.java │ └── IMRedisKey.java │ ├── enums │ ├── IMListenerType.java │ ├── IMSendCode.java │ ├── IMCmdType.java │ └── IMTerminalType.java │ └── serializer │ └── DateToLongSerializer.java ├── .gitignore └── LICENSE /im-platform/src/main/resources/sensitive-words.txt: -------------------------------------------------------------------------------- 1 | 杀了你 2 | 傻逼 3 | 去死 -------------------------------------------------------------------------------- /im-api-example/src/main/resources/sensitive-words.txt: -------------------------------------------------------------------------------- 1 | 杀了你 2 | 傻逼 3 | 去死 -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-scss/index.scss: -------------------------------------------------------------------------------- 1 | @import './styles/index.scss'; 2 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-section/changelog.md: -------------------------------------------------------------------------------- 1 | ## 0.0.1(2022-07-22) 2 | - 初始化 3 | -------------------------------------------------------------------------------- /im-server/src/main/resources/application.yml: -------------------------------------------------------------------------------- 1 | spring: 2 | profiles: 3 | active: dev -------------------------------------------------------------------------------- /截图/交流群.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/截图/交流群.png -------------------------------------------------------------------------------- /截图/h5二维码.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/截图/h5二维码.png -------------------------------------------------------------------------------- /截图/web/私聊.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/截图/web/私聊.jpg -------------------------------------------------------------------------------- /截图/web/群聊1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/截图/web/群聊1.jpg -------------------------------------------------------------------------------- /截图/web/群聊2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/截图/web/群聊2.jpg -------------------------------------------------------------------------------- /截图/微信收款码.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/截图/微信收款码.png -------------------------------------------------------------------------------- /截图/消息推送集群化.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/截图/消息推送集群化.jpg -------------------------------------------------------------------------------- /截图/web-老版/群聊.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/截图/web-老版/群聊.jpg -------------------------------------------------------------------------------- /截图/web/好友列表.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/截图/web/好友列表.jpg -------------------------------------------------------------------------------- /截图/web/群聊列表.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/截图/web/群聊列表.jpg -------------------------------------------------------------------------------- /截图/wx-mp/其他.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/截图/wx-mp/其他.jpg -------------------------------------------------------------------------------- /截图/wx-mp/聊天.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/截图/wx-mp/聊天.jpg -------------------------------------------------------------------------------- /截图/wx小程序二维码.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/截图/wx小程序二维码.jpg -------------------------------------------------------------------------------- /截图/web-老版/发送语音.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/截图/web-老版/发送语音.jpg -------------------------------------------------------------------------------- /截图/web-老版/好友列表.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/截图/web-老版/好友列表.jpg -------------------------------------------------------------------------------- /截图/web-老版/文字聊天.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/截图/web-老版/文字聊天.jpg -------------------------------------------------------------------------------- /截图/web-老版/群聊列表.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/截图/web-老版/群聊列表.jpg -------------------------------------------------------------------------------- /im-ui/public/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/public/logo.png -------------------------------------------------------------------------------- /截图/web-老版/发送图片文件.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/截图/web-老版/发送图片文件.jpg -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-scss/styles/setting/_border.scss: -------------------------------------------------------------------------------- 1 | .uni-border { 2 | border: 1px $uni-border-1 solid; 3 | } -------------------------------------------------------------------------------- /im-ui/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset' 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/0.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/1.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/10.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/10.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/11.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/11.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/12.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/12.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/13.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/13.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/14.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/14.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/15.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/15.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/16.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/16.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/17.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/17.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/18.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/18.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/19.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/19.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/2.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/20.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/20.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/21.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/21.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/22.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/22.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/23.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/23.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/24.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/24.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/25.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/25.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/26.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/26.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/27.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/27.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/28.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/28.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/29.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/29.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/3.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/30.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/30.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/31.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/31.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/32.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/32.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/33.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/33.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/34.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/34.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/35.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/35.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/36.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/36.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/37.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/37.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/38.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/38.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/39.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/39.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/4.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/40.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/40.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/41.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/41.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/42.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/42.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/43.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/43.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/44.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/44.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/45.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/45.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/46.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/46.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/47.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/47.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/48.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/48.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/49.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/49.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/5.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/50.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/50.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/51.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/51.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/52.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/52.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/53.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/53.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/54.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/54.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/55.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/55.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/56.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/56.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/6.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/6.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/7.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/7.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/8.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/8.gif -------------------------------------------------------------------------------- /im-ui/src/assets/emoji/9.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/emoji/9.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/0.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/1.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/10.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/10.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/11.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/11.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/12.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/12.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/13.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/13.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/14.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/14.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/15.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/15.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/16.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/16.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/17.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/17.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/18.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/18.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/19.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/19.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/2.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/20.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/20.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/21.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/21.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/22.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/22.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/23.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/23.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/24.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/24.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/25.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/25.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/26.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/26.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/27.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/27.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/28.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/28.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/29.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/29.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/3.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/30.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/30.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/31.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/31.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/32.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/32.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/33.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/33.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/34.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/34.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/35.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/35.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/36.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/36.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/37.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/37.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/38.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/38.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/39.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/39.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/4.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/40.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/40.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/41.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/41.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/42.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/42.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/43.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/43.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/44.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/44.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/45.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/45.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/46.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/46.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/47.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/47.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/48.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/48.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/49.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/49.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/5.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/50.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/50.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/51.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/51.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/52.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/52.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/53.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/53.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/54.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/54.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/55.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/55.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/56.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/56.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/6.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/6.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/7.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/7.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/8.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/8.gif -------------------------------------------------------------------------------- /im-uniapp/static/emoji/9.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/emoji/9.gif -------------------------------------------------------------------------------- /im-ui/src/assets/audio/call.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/audio/call.wav -------------------------------------------------------------------------------- /im-ui/src/assets/audio/tip.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/audio/tip.wav -------------------------------------------------------------------------------- /im-uniapp/static/icon/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/icon/iconfont.ttf -------------------------------------------------------------------------------- /im-uniapp/static/tarbar/chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/tarbar/chat.png -------------------------------------------------------------------------------- /im-uniapp/static/tarbar/friend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/tarbar/friend.png -------------------------------------------------------------------------------- /im-uniapp/static/tarbar/group.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/tarbar/group.png -------------------------------------------------------------------------------- /im-uniapp/static/tarbar/mine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/tarbar/mine.png -------------------------------------------------------------------------------- /im-ui/src/assets/image/icp_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/image/icp_logo.png -------------------------------------------------------------------------------- /im-ui/src/assets/iconfont/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/iconfont/iconfont.ttf -------------------------------------------------------------------------------- /im-ui/src/assets/iconfont/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/iconfont/iconfont.woff -------------------------------------------------------------------------------- /im-ui/src/assets/image/online_app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/image/online_app.png -------------------------------------------------------------------------------- /im-ui/src/assets/image/online_web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/image/online_web.png -------------------------------------------------------------------------------- /im-uniapp/static/image/online_app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/image/online_app.png -------------------------------------------------------------------------------- /im-uniapp/static/image/online_web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/image/online_web.png -------------------------------------------------------------------------------- /im-uniapp/static/tarbar/chat_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/tarbar/chat_active.png -------------------------------------------------------------------------------- /im-uniapp/static/tarbar/mine_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/tarbar/mine_active.png -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "uni-fav.collect": "收藏", 3 | "uni-fav.collected": "已收藏" 4 | } 5 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "uni-fav.collect": "收藏", 3 | "uni-fav.collected": "已收藏" 4 | } 5 | -------------------------------------------------------------------------------- /im-ui/src/assets/iconfont/iconfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-ui/src/assets/iconfont/iconfont.woff2 -------------------------------------------------------------------------------- /im-uniapp/static/tarbar/friend_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/tarbar/friend_active.png -------------------------------------------------------------------------------- /im-uniapp/static/tarbar/group_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/static/tarbar/group_active.png -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-fav/components/uni-fav/i18n/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "uni-fav.collect": "collect", 3 | "uni-fav.collected": "collected" 4 | } 5 | -------------------------------------------------------------------------------- /im-client/src/main/resources/META-INF/spring.factories: -------------------------------------------------------------------------------- 1 | org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ 2 | com.bx.imclient.IMAutoConfiguration -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-ui/components/uni-ui/uni-ui.vue: -------------------------------------------------------------------------------- 1 | 4 | 6 | 8 | -------------------------------------------------------------------------------- /minio/minio.bat: -------------------------------------------------------------------------------- 1 | 2 | set MINIO_ACCESS_KEY=admin 3 | set MINIO_SECRET_KEY=12345678 4 | .\minio.exe server C:\data\minio --address ":9001" --console-address ":9002" -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "uni-search-bar.cancel": "取消", 3 | "uni-search-bar.placeholder": "请输入搜索内容" 4 | } 5 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "uni-search-bar.cancel": "取消", 3 | "uni-search-bar.placeholder": "請輸入搜索內容" 4 | } 5 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-search-bar/components/uni-search-bar/i18n/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "uni-search-bar.cancel": "cancel", 3 | "uni-search-bar.placeholder": "Search enter content" 4 | } -------------------------------------------------------------------------------- /im-commom/src/main/java/com/bx/imcommon/model/IMHeartbeatInfo.java: -------------------------------------------------------------------------------- 1 | package com.bx.imcommon.model; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class IMHeartbeatInfo { 7 | } 8 | -------------------------------------------------------------------------------- /im-ui/.env.development: -------------------------------------------------------------------------------- 1 | 2 | ENV = 'development' 3 | # app名称 4 | VUE_APP_NAME = "盒子IM" 5 | # 接口请求地址 6 | VUE_APP_BASE_API = '/api' 7 | # ws地址 8 | VUE_APP_WS_URL = 'ws://localhost:8878/im' -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-icons/components/uni-icons/uniicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/uni_modules/uni-icons/components/uni-icons/uniicons.ttf -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-countdown/components/uni-countdown/i18n/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "uni-countdown.day": "day", 3 | "uni-countdown.h": "h", 4 | "uni-countdown.m": "m", 5 | "uni-countdown.s": "s" 6 | } 7 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "uni-countdown.day": "天", 3 | "uni-countdown.h": "时", 4 | "uni-countdown.m": "分", 5 | "uni-countdown.s": "秒" 6 | } 7 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "uni-countdown.day": "天", 3 | "uni-countdown.h": "時", 4 | "uni-countdown.m": "分", 5 | "uni-countdown.s": "秒" 6 | } 7 | -------------------------------------------------------------------------------- /im-ui/.env.production: -------------------------------------------------------------------------------- 1 | ENV = 'production' 2 | 3 | # app名称 4 | VUE_APP_NAME = "盒子IM" 5 | # 接口地址 6 | VUE_APP_BASE_API = 'https://www.boxim.online/api' 7 | # ws地址 8 | VUE_APP_WS_URL = 'wss://www.boxim.online:81/im' -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "uni-pagination.prevText": "上一页", 3 | "uni-pagination.nextText": "下一页", 4 | "uni-pagination.piecePerPage": "条/页" 5 | } 6 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "uni-pagination.prevText": "上一頁", 3 | "uni-pagination.nextText": "下一頁", 4 | "uni-pagination.piecePerPage": "條/頁" 5 | } 6 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-pagination/components/uni-pagination/i18n/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "uni-pagination.prevText": "prev", 3 | "uni-pagination.nextText": "next", 4 | "uni-pagination.piecePerPage": "piece/page" 5 | } 6 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-pagination/components/uni-pagination/i18n/es.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stylesmile/box-im-springboot3/HEAD/im-uniapp/uni_modules/uni-pagination/components/uni-pagination/i18n/es.json -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "uni-load-more.contentdown": "上拉显示更多", 3 | "uni-load-more.contentrefresh": "正在加载...", 4 | "uni-load-more.contentnomore": "没有更多数据了" 5 | } 6 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "uni-load-more.contentdown": "上拉顯示更多", 3 | "uni-load-more.contentrefresh": "正在加載...", 4 | "uni-load-more.contentnomore": "沒有更多數據了" 5 | } 6 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-scss/changelog.md: -------------------------------------------------------------------------------- 1 | ## 1.0.3(2022-01-21) 2 | - 优化 组件示例 3 | ## 1.0.2(2021-11-22) 4 | - 修复 / 符号在 vue 不同版本兼容问题引起的报错问题 5 | ## 1.0.1(2021-11-22) 6 | - 修复 vue3中scss语法兼容问题 7 | ## 1.0.0(2021-11-18) 8 | - init 9 | -------------------------------------------------------------------------------- /im-commom/src/main/java/com/bx/imcommon/model/IMLoginInfo.java: -------------------------------------------------------------------------------- 1 | package com.bx.imcommon.model; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class IMLoginInfo { 7 | 8 | private String accessToken; 9 | } 10 | -------------------------------------------------------------------------------- /im-server/src/main/java/com/bx/imserver/netty/IMServer.java: -------------------------------------------------------------------------------- 1 | package com.bx.imserver.netty; 2 | 3 | public interface IMServer { 4 | 5 | boolean isReady(); 6 | 7 | void start(); 8 | 9 | void stop(); 10 | } 11 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-pagination/components/uni-pagination/i18n/fr.json: -------------------------------------------------------------------------------- 1 | { 2 | "uni-pagination.prevText": "précédente", 3 | "uni-pagination.nextText": "suivante", 4 | "uni-pagination.piecePerPage": "Articles/Pages" 5 | } 6 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "uni-popup.cancel": "取消", 3 | "uni-popup.ok": "確定", 4 | "uni-popup.placeholder": "請輸入", 5 | "uni-popup.title": "提示", 6 | "uni-popup.shareTitle": "分享到" 7 | } 8 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-load-more/components/uni-load-more/i18n/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "uni-load-more.contentdown": "Pull up to show more", 3 | "uni-load-more.contentrefresh": "loading...", 4 | "uni-load-more.contentnomore": "No more data" 5 | } 6 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "uni-popup.cancel": "取消", 3 | "uni-popup.ok": "确定", 4 | "uni-popup.placeholder": "请输入", 5 | "uni-popup.title": "提示", 6 | "uni-popup.shareTitle": "分享到" 7 | } 8 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-scss/readme.md: -------------------------------------------------------------------------------- 1 | `uni-sass` 是 `uni-ui`提供的一套全局样式 ,通过一些简单的类名和`sass`变量,实现简单的页面布局操作,比如颜色、边距、圆角等。 2 | 3 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-sass) 4 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-fab/readme.md: -------------------------------------------------------------------------------- 1 | ## Fab 悬浮按钮 2 | > **组件名:uni-fab** 3 | > 代码块: `uFab` 4 | 5 | 6 | 点击可展开一个图形按钮菜单 7 | 8 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-fab) 9 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-fav/components/uni-fav/i18n/index.js: -------------------------------------------------------------------------------- 1 | import en from './en.json' 2 | import zhHans from './zh-Hans.json' 3 | import zhHant from './zh-Hant.json' 4 | export default { 5 | en, 6 | 'zh-Hans': zhHans, 7 | 'zh-Hant': zhHant 8 | } 9 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-popup/components/uni-popup/i18n/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "uni-popup.cancel": "cancel", 3 | "uni-popup.ok": "ok", 4 | "uni-popup.placeholder": "pleace enter", 5 | "uni-popup.title": "Hint", 6 | "uni-popup.shareTitle": "Share to" 7 | } 8 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-popup/components/uni-popup/i18n/index.js: -------------------------------------------------------------------------------- 1 | import en from './en.json' 2 | import zhHans from './zh-Hans.json' 3 | import zhHant from './zh-Hant.json' 4 | export default { 5 | en, 6 | 'zh-Hans': zhHans, 7 | 'zh-Hant': zhHant 8 | } 9 | -------------------------------------------------------------------------------- /im-api-example/src/main/java/com/bx/api/mapper/UserMapper.java: -------------------------------------------------------------------------------- 1 | package com.bx.api.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.bx.api.entity.User; 5 | 6 | public interface UserMapper extends BaseMapper { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-calendar/components/uni-calendar/i18n/index.js: -------------------------------------------------------------------------------- 1 | import en from './en.json' 2 | import zhHans from './zh-Hans.json' 3 | import zhHant from './zh-Hant.json' 4 | export default { 5 | en, 6 | 'zh-Hans': zhHans, 7 | 'zh-Hant': zhHant 8 | } 9 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-countdown/components/uni-countdown/i18n/index.js: -------------------------------------------------------------------------------- 1 | import en from './en.json' 2 | import zhHans from './zh-Hans.json' 3 | import zhHant from './zh-Hant.json' 4 | export default { 5 | en, 6 | 'zh-Hans': zhHans, 7 | 'zh-Hant': zhHant 8 | } 9 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/index.js: -------------------------------------------------------------------------------- 1 | import en from './en.json' 2 | import zhHans from './zh-Hans.json' 3 | import zhHant from './zh-Hant.json' 4 | export default { 5 | en, 6 | 'zh-Hans': zhHans, 7 | 'zh-Hant': zhHant 8 | } 9 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-icons/readme.md: -------------------------------------------------------------------------------- 1 | ## Icons 图标 2 | > **组件名:uni-icons** 3 | > 代码块: `uIcons` 4 | 5 | 用于展示 icons 图标 。 6 | 7 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-icons) 8 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 9 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-load-more/components/uni-load-more/i18n/index.js: -------------------------------------------------------------------------------- 1 | import en from './en.json' 2 | import zhHans from './zh-Hans.json' 3 | import zhHant from './zh-Hant.json' 4 | export default { 5 | en, 6 | 'zh-Hans': zhHans, 7 | 'zh-Hant': zhHant 8 | } 9 | -------------------------------------------------------------------------------- /im-api-example/src/main/java/com/bx/api/mapper/GroupMapper.java: -------------------------------------------------------------------------------- 1 | package com.bx.api.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.bx.api.entity.Group; 5 | 6 | public interface GroupMapper extends BaseMapper { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-grid/readme.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Grid 宫格 4 | > **组件名:uni-grid** 5 | > 代码块: `uGrid` 6 | 7 | 8 | 宫格组件。 9 | 10 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-grid) 11 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-search-bar/components/uni-search-bar/i18n/index.js: -------------------------------------------------------------------------------- 1 | import en from './en.json' 2 | import zhHans from './zh-Hans.json' 3 | import zhHant from './zh-Hant.json' 4 | export default { 5 | en, 6 | 'zh-Hans': zhHans, 7 | 'zh-Hant': zhHant 8 | } 9 | -------------------------------------------------------------------------------- /im-api-example/src/main/java/com/bx/api/mapper/FriendMapper.java: -------------------------------------------------------------------------------- 1 | package com.bx.api.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.bx.api.entity.Friend; 5 | 6 | public interface FriendMapper extends BaseMapper { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-drawer/readme.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Drawer 抽屉 4 | > **组件名:uni-drawer** 5 | > 代码块: `uDrawer` 6 | 7 | 抽屉侧滑菜单。 8 | 9 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-drawer) 10 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-fav/readme.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Fav 收藏按钮 4 | > **组件名:uni-fav** 5 | > 代码块: `uFav` 6 | 7 | 用于收藏功能,可点击切换选中、不选中的状态。 8 | 9 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-fav) 10 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "uni-goods-nav.options.shop": "店铺", 3 | "uni-goods-nav.options.cart": "购物车", 4 | "uni-goods-nav.buttonGroup.addToCart": "加入购物车", 5 | "uni-goods-nav.buttonGroup.buyNow": "立即购买" 6 | } 7 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "uni-goods-nav.options.shop": "店鋪", 3 | "uni-goods-nav.options.cart": "購物車", 4 | "uni-goods-nav.buttonGroup.addToCart": "加入購物車", 5 | "uni-goods-nav.buttonGroup.buyNow": "立即購買" 6 | } 7 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-group/readme.md: -------------------------------------------------------------------------------- 1 | 2 | ## Group 分组 3 | > **组件名:uni-group** 4 | > 代码块: `uGroup` 5 | 6 | 分组组件可用于将组件分组,添加间隔,以产生明显的区块。 7 | 8 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-group) 9 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-combox/readme.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Combox 组合框 4 | > **组件名:uni-combox** 5 | > 代码块: `uCombox` 6 | 7 | 8 | 组合框组件。 9 | 10 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-combox) 11 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/index.js: -------------------------------------------------------------------------------- 1 | import en from './en.json' 2 | import zhHans from './zh-Hans.json' 3 | import zhHant from './zh-Hant.json' 4 | export default { 5 | en, 6 | 'zh-Hans': zhHans, 7 | 'zh-Hant': zhHant 8 | } 9 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "uni-goods-nav.options.shop": "shop", 3 | "uni-goods-nav.options.cart": "cart", 4 | "uni-goods-nav.buttonGroup.addToCart": "add to cart", 5 | "uni-goods-nav.buttonGroup.buyNow": "buy now" 6 | } 7 | -------------------------------------------------------------------------------- /im-api-example/src/main/java/com/bx/api/result/Result.java: -------------------------------------------------------------------------------- 1 | package com.bx.api.result; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class Result { 7 | 8 | private int code; 9 | 10 | private String message; 11 | 12 | private T data; 13 | 14 | } 15 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-card/readme.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Card 卡片 4 | > **组件名:uni-card** 5 | > 代码块: `uCard` 6 | 7 | 卡片视图组件。 8 | 9 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-card) 10 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 11 | 12 | 13 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-countdown/readme.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## CountDown 倒计时 4 | > **组件名:uni-countdown** 5 | > 代码块: `uCountDown` 6 | 7 | 倒计时组件。 8 | 9 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-countdown) 10 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-section/readme.md: -------------------------------------------------------------------------------- 1 | ## Section 标题栏 2 | > **组件名:uni-section** 3 | > 代码块: `uSection` 4 | 5 | uni-section 组件主要用于文章、列表详情等标题展示 6 | 7 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-section) 8 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 9 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-tooltip/changelog.md: -------------------------------------------------------------------------------- 1 | ## 0.2.1(2022-05-09) 2 | - 修复 content 为空时仍然弹出的bug 3 | ## 0.2.0(2022-05-07) 4 | **注意:破坏性更新** 5 | - 更新 text 属性变更为 content 6 | - 更新 移除 width 属性 7 | ## 0.1.1(2022-04-27) 8 | - 修复 组件根 text 嵌套组件 warning 9 | ## 0.1.0(2022-04-21) 10 | - 初始化 11 | -------------------------------------------------------------------------------- /im-api-example/src/main/java/com/bx/api/mapper/GroupMemberMapper.java: -------------------------------------------------------------------------------- 1 | package com.bx.api.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.bx.api.entity.GroupMember; 5 | 6 | public interface GroupMemberMapper extends BaseMapper { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /im-platform/src/main/java/com/bx/implatform/config/ICEServer.java: -------------------------------------------------------------------------------- 1 | package com.bx.implatform.config; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class ICEServer { 7 | private String urls; 8 | private String username; 9 | private String credential; 10 | 11 | } 12 | -------------------------------------------------------------------------------- /im-platform/src/main/java/com/bx/implatform/result/Result.java: -------------------------------------------------------------------------------- 1 | package com.bx.implatform.result; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class Result { 7 | 8 | private int code; 9 | 10 | private String message; 11 | 12 | private T data; 13 | 14 | } 15 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-goods-nav/readme.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## GoodsNav 商品导航 4 | > **组件名:uni-goods-nav** 5 | > 代码块: `uGoodsNav` 6 | 7 | 商品加入购物车,立即购买等。 8 | 9 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-goods-nav) 10 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 -------------------------------------------------------------------------------- /im-api-example/src/main/java/com/bx/api/mapper/GroupMessageMapper.java: -------------------------------------------------------------------------------- 1 | package com.bx.api.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.bx.api.entity.GroupMessage; 5 | 6 | public interface GroupMessageMapper extends BaseMapper { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-data-select/readme.md: -------------------------------------------------------------------------------- 1 | ## DataSelect 下拉框选择器 2 | > **组件名:uni-data-select** 3 | > 代码块: `uDataSelect` 4 | 5 | 当选项过多时,使用下拉菜单展示并选择内容 6 | 7 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-data-select) 8 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 9 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-steps/readme.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Steps 步骤条 4 | > **组件名:uni-steps** 5 | > 代码块: `uSteps` 6 | 7 | 8 | 步骤条,常用于显示进度 9 | 10 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-steps) 11 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 12 | 13 | 14 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-table/readme.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Table 表单 4 | > 组件名:``uni-table``,代码块: `uTable`。 5 | 6 | 用于展示多条结构类似的数据 7 | 8 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-table) 9 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-tooltip/readme.md: -------------------------------------------------------------------------------- 1 | ## Badge 数字角标 2 | > **组件名:uni-tooltip** 3 | > 代码块: `uTooltip` 4 | 5 | 数字角标一般和其它控件(列表、9宫格等)配合使用,用于进行数量提示,默认为实心灰色背景, 6 | 7 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-tooltip) 8 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 9 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-transition/readme.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Transition 过渡动画 4 | > **组件名:uni-transition** 5 | > 代码块: `uTransition` 6 | 7 | 8 | 元素过渡动画 9 | 10 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-transition) 11 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 -------------------------------------------------------------------------------- /im-api-example/src/main/java/com/bx/api/mapper/PrivateMessageMapper.java: -------------------------------------------------------------------------------- 1 | package com.bx.api.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.bx.api.entity.PrivateMessage; 5 | 6 | public interface PrivateMessageMapper extends BaseMapper { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-dateformat/readme.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ### DateFormat 日期格式化 4 | > **组件名:uni-dateformat** 5 | > 代码块: `uDateformat` 6 | 7 | 8 | 日期格式化组件。 9 | 10 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-dateformat) 11 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-row/readme.md: -------------------------------------------------------------------------------- 1 | ## Layout 布局 2 | 3 | > **组件名 uni-row、uni-col** 4 | > 代码块: `uRow`、`uCol` 5 | 6 | 7 | 流式栅格系统,随着屏幕或视口分为 24 份,可以迅速简便地创建布局。 8 | 9 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-row) 10 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-swiper-dot/readme.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## SwiperDot 轮播图指示点 4 | > **组件名:uni-swiper-dot** 5 | > 代码块: `uSwiperDot` 6 | 7 | 8 | 自定义轮播图指示点 9 | 10 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-swiper-dot) 11 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-tag/readme.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Tag 标签 4 | > **组件名:uni-tag** 5 | > 代码块: `uTag` 6 | 7 | 8 | 用于展示1个或多个文字标签,可点击切换选中、不选中的状态 。 9 | 10 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-tag) 11 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 12 | 13 | 14 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-rate/readme.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Rate 评分 4 | > **组件名:uni-rate** 5 | > 代码块: `uRate` 6 | > 关联组件:`uni-icons` 7 | 8 | 9 | 评分组件,多用于购买商品后,对商品进行评价等场景 10 | 11 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-rate) 12 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-scss/styles/index.scss: -------------------------------------------------------------------------------- 1 | @import './setting/_variables.scss'; 2 | @import './setting/_border.scss'; 3 | @import './setting/_color.scss'; 4 | @import './setting/_space.scss'; 5 | @import './setting/_radius.scss'; 6 | @import './setting/_text.scss'; 7 | @import './setting/_styles.scss'; 8 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-badge/readme.md: -------------------------------------------------------------------------------- 1 | ## Badge 数字角标 2 | > **组件名:uni-badge** 3 | > 代码块: `uBadge` 4 | 5 | 数字角标一般和其它控件(列表、9宫格等)配合使用,用于进行数量提示,默认为实心灰色背景, 6 | 7 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-badge) 8 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 9 | 10 | 11 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-indexed-list/readme.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## IndexedList 索引列表 4 | > **组件名:uni-indexed-list** 5 | > 代码块: `uIndexedList` 6 | 7 | 8 | 用于展示索引列表。 9 | 10 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-indexed-list) 11 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 12 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-link/readme.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Link 链接 4 | > **组件名:uni-link** 5 | > 代码块: `uLink` 6 | 7 | 8 | uni-link是一个外部网页超链接组件,在小程序内复制url,在app内打开外部浏览器,在h5端打开新网页。 9 | 10 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-link) 11 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-notice-bar/readme.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## NoticeBar 通告栏 4 | > **组件名:uni-notice-bar** 5 | > 代码块: `uNoticeBar` 6 | 7 | 8 | 通告栏组件 。 9 | 10 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-notice-bar) 11 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 12 | 13 | 14 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-pagination/readme.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Pagination 分页器 4 | > **组件名:uni-pagination** 5 | > 代码块: `uPagination` 6 | 7 | 8 | 分页器组件,用于展示页码、请求数据等。 9 | 10 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-pagination) 11 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 12 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-search-bar/readme.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## SearchBar 搜索栏 4 | 5 | > **组件名:uni-search-bar** 6 | > 代码块: `uSearchBar` 7 | 8 | 9 | 搜索栏组件 10 | 11 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-search-bar) 12 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 13 | 14 | 15 | -------------------------------------------------------------------------------- /im-client/src/main/java/com/bx/imclient/listener/MessageListener.java: -------------------------------------------------------------------------------- 1 | package com.bx.imclient.listener; 2 | 3 | 4 | import com.bx.imcommon.model.IMSendResult; 5 | 6 | import java.util.List; 7 | 8 | public interface MessageListener { 9 | 10 | void process(List> result); 11 | 12 | } 13 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-nav-bar/readme.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## NavBar 导航栏 4 | > **组件名:uni-nav-bar** 5 | > 代码块: `uNavBar` 6 | 7 | 导航栏组件,主要用于头部导航。 8 | 9 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-nav-bar) 10 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-number-box/readme.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## NumberBox 数字输入框 4 | > **组件名:uni-number-box** 5 | > 代码块: `uNumberBox` 6 | 7 | 8 | 带加减按钮的数字输入框。 9 | 10 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-number-box) 11 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 12 | 13 | 14 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-table/i18n/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "filter-dropdown.reset": "重置", 3 | "filter-dropdown.search": "搜索", 4 | "filter-dropdown.submit": "确定", 5 | "filter-dropdown.filter": "筛选", 6 | "filter-dropdown.gt": "大于等于", 7 | "filter-dropdown.lt": "小于等于", 8 | "filter-dropdown.date": "日期范围" 9 | } 10 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-table/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "filter-dropdown.reset": "重置", 3 | "filter-dropdown.search": "搜索", 4 | "filter-dropdown.submit": "確定", 5 | "filter-dropdown.filter": "篩選", 6 | "filter-dropdown.gt": "大於等於", 7 | "filter-dropdown.lt": "小於等於", 8 | "filter-dropdown.date": "日期範圍" 9 | } 10 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-table/i18n/index.js: -------------------------------------------------------------------------------- 1 | import en from './en.json' 2 | import es from './es.json' 3 | import fr from './fr.json' 4 | import zhHans from './zh-Hans.json' 5 | import zhHant from './zh-Hant.json' 6 | export default { 7 | en, 8 | es, 9 | fr, 10 | 'zh-Hans': zhHans, 11 | 'zh-Hant': zhHant 12 | } 13 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-swipe-action/readme.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## SwipeAction 滑动操作 4 | > **组件名:uni-swipe-action** 5 | > 代码块: `uSwipeAction`、`uSwipeActionItem` 6 | 7 | 8 | 通过滑动触发选项的容器 9 | 10 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-swipe-action) 11 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-file-picker/readme.md: -------------------------------------------------------------------------------- 1 | 2 | ## FilePicker 文件选择上传 3 | 4 | > **组件名:uni-file-picker** 5 | > 代码块: `uFilePicker` 6 | 7 | 8 | 文件选择上传组件,可以选择图片、视频等任意文件并上传到当前绑定的服务空间 9 | 10 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-file-picker) 11 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 -------------------------------------------------------------------------------- /im-commom/src/main/java/com/bx/imcommon/model/IMSendInfo.java: -------------------------------------------------------------------------------- 1 | package com.bx.imcommon.model; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class IMSendInfo { 7 | 8 | /** 9 | * 命令 10 | */ 11 | private Integer cmd; 12 | 13 | /** 14 | * 推送消息体 15 | */ 16 | private T data; 17 | 18 | } 19 | -------------------------------------------------------------------------------- /im-ui/vue.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | 3 | devServer: { 4 | proxy: { 5 | '/api': { 6 | target: 'http://127.0.0.1:8888', 7 | changeOrigin: true, 8 | ws: false, 9 | pathRewrite: { 10 | '^/api': '' 11 | } 12 | } 13 | } 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-load-more/readme.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ### LoadMore 加载更多 4 | > **组件名:uni-load-more** 5 | > 代码块: `uLoadMore` 6 | 7 | 8 | 用于列表中,做滚动加载使用,展示 loading 的各种状态。 9 | 10 | 11 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-load-more) 12 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 13 | 14 | 15 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-title/readme.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Title 标题 4 | > **组件名:uni-title** 5 | > 代码块: `uTitle` 6 | 7 | 8 | 章节标题,通常用于记录页面标题,使用当前组件,uni-app 如果开启统计,将会自动统计页面标题 。 9 | 10 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-title) 11 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /im-commom/src/main/java/com/bx/imcommon/model/IMSessionInfo.java: -------------------------------------------------------------------------------- 1 | package com.bx.imcommon.model; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class IMSessionInfo { 7 | /** 8 | * 用户id 9 | */ 10 | private Long userId; 11 | 12 | /** 13 | * 终端类型 14 | */ 15 | private Integer terminal; 16 | 17 | } 18 | -------------------------------------------------------------------------------- /im-platform/src/main/java/com/bx/implatform/mapper/UserMapper.java: -------------------------------------------------------------------------------- 1 | package com.bx.implatform.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.bx.implatform.entity.User; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | @Mapper 8 | public interface UserMapper extends BaseMapper { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-segmented-control/readme.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## SegmentedControl 分段器 4 | > **组件名:uni-segmented-control** 5 | > 代码块: `uSegmentedControl` 6 | 7 | 8 | 用作不同视图的显示 9 | 10 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-segmented-control) 11 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 12 | 13 | 14 | -------------------------------------------------------------------------------- /im-platform/src/main/java/com/bx/implatform/mapper/GroupMapper.java: -------------------------------------------------------------------------------- 1 | package com.bx.implatform.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.bx.implatform.entity.Group; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | @Mapper 8 | public interface GroupMapper extends BaseMapper { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-pagination/components/uni-pagination/i18n/index.js: -------------------------------------------------------------------------------- 1 | import en from './en.json' 2 | import es from './es.json' 3 | import fr from './fr.json' 4 | import zhHans from './zh-Hans.json' 5 | import zhHant from './zh-Hant.json' 6 | export default { 7 | en, 8 | es, 9 | fr, 10 | 'zh-Hans': zhHans, 11 | 'zh-Hant': zhHant 12 | } 13 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-popup/readme.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Popup 弹出层 4 | > **组件名:uni-popup** 5 | > 代码块: `uPopup` 6 | > 关联组件:`uni-transition` 7 | 8 | 9 | 弹出层组件,在应用中弹出一个消息提示窗口、提示框等 10 | 11 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-popup) 12 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /im-platform/src/main/java/com/bx/implatform/mapper/FriendMapper.java: -------------------------------------------------------------------------------- 1 | package com.bx.implatform.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.bx.implatform.entity.Friend; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | @Mapper 8 | public interface FriendMapper extends BaseMapper { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-table/i18n/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "filter-dropdown.reset": "Reset", 3 | "filter-dropdown.search": "Search", 4 | "filter-dropdown.submit": "Submit", 5 | "filter-dropdown.filter": "Filter", 6 | "filter-dropdown.gt": "Greater or equal to", 7 | "filter-dropdown.lt": "Less than or equal to", 8 | "filter-dropdown.date": "Date" 9 | } 10 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-table/i18n/es.json: -------------------------------------------------------------------------------- 1 | { 2 | "filter-dropdown.reset": "Reiniciar", 3 | "filter-dropdown.search": "Búsqueda", 4 | "filter-dropdown.submit": "Entregar", 5 | "filter-dropdown.filter": "Filtrar", 6 | "filter-dropdown.gt": "Mayor o igual a", 7 | "filter-dropdown.lt": "Menos que o igual a", 8 | "filter-dropdown.date": "Fecha" 9 | } 10 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-table/i18n/fr.json: -------------------------------------------------------------------------------- 1 | { 2 | "filter-dropdown.reset": "Réinitialiser", 3 | "filter-dropdown.search": "Chercher", 4 | "filter-dropdown.submit": "Soumettre", 5 | "filter-dropdown.filter": "Filtre", 6 | "filter-dropdown.gt": "Supérieur ou égal à", 7 | "filter-dropdown.lt": "Inférieur ou égal à", 8 | "filter-dropdown.date": "Date" 9 | } 10 | -------------------------------------------------------------------------------- /im-platform/src/main/java/com/bx/implatform/mapper/GroupMemberMapper.java: -------------------------------------------------------------------------------- 1 | package com.bx.implatform.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.bx.implatform.entity.GroupMember; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | @Mapper 8 | public interface GroupMemberMapper extends BaseMapper { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /im-platform/src/main/java/com/bx/implatform/mapper/GroupMessageMapper.java: -------------------------------------------------------------------------------- 1 | package com.bx.implatform.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.bx.implatform.entity.GroupMessage; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | @Mapper 8 | public interface GroupMessageMapper extends BaseMapper { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /im-uniapp/uni.promisify.adaptor.js: -------------------------------------------------------------------------------- 1 | uni.addInterceptor({ 2 | returnValue (res) { 3 | if (!(!!res && (typeof res === "object" || typeof res === "function") && typeof res.then === "function")) { 4 | return res; 5 | } 6 | return new Promise((resolve, reject) => { 7 | res.then((res) => res[0] ? reject(res[0]) : resolve(res[1])); 8 | }); 9 | }, 10 | }); -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /.idea/ 2 | /box-im.iml 3 | /im-server/im-server.iml 4 | /im-platform/im-platform.iml 5 | /im-platform/src/main/resources/application-prod.yml 6 | /im-platform/src/main/resources/logback-prod.xml 7 | /im-server/src/main/resources/application-prod.yml 8 | /im-server/src/main/resources/logback-prod.xml 9 | /im-commom/im-commom.iml 10 | /im-uniapp/node_modules/ 11 | -------------------------------------------------------------------------------- /im-platform/src/main/java/com/bx/implatform/mapper/PrivateMessageMapper.java: -------------------------------------------------------------------------------- 1 | package com.bx.implatform.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.bx.implatform.entity.PrivateMessage; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | @Mapper 8 | public interface PrivateMessageMapper extends BaseMapper { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-collapse/readme.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Collapse 折叠面板 4 | > **组件名:uni-collapse** 5 | > 代码块: `uCollapse` 6 | > 关联组件:`uni-collapse-item`、`uni-icons`。 7 | 8 | 9 | 折叠面板用来折叠/显示过长的内容或者是列表。通常是在多内容分类项使用,折叠不重要的内容,显示重要内容。点击可以展开折叠部分。 10 | 11 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-collapse) 12 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 -------------------------------------------------------------------------------- /im-client/src/main/java/com/bx/imclient/IMAutoConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.bx.imclient; 2 | 3 | import lombok.extern.slf4j.Slf4j; 4 | import org.springframework.context.annotation.ComponentScan; 5 | import org.springframework.context.annotation.Configuration; 6 | 7 | 8 | @Slf4j 9 | @Configuration 10 | @ComponentScan("com.bx.imclient") 11 | public class IMAutoConfiguration { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "uni-calender.ok": "确定", 3 | "uni-calender.cancel": "取消", 4 | "uni-calender.today": "今日", 5 | "uni-calender.SUN": "日", 6 | "uni-calender.MON": "一", 7 | "uni-calender.TUE": "二", 8 | "uni-calender.WED": "三", 9 | "uni-calender.THU": "四", 10 | "uni-calender.FRI": "五", 11 | "uni-calender.SAT": "六" 12 | } 13 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "uni-calender.ok": "確定", 3 | "uni-calender.cancel": "取消", 4 | "uni-calender.today": "今日", 5 | "uni-calender.SUN": "日", 6 | "uni-calender.MON": "一", 7 | "uni-calender.TUE": "二", 8 | "uni-calender.WED": "三", 9 | "uni-calender.THU": "四", 10 | "uni-calender.FRI": "五", 11 | "uni-calender.SAT": "六" 12 | } 13 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-calendar/components/uni-calendar/i18n/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "uni-calender.ok": "ok", 3 | "uni-calender.cancel": "cancel", 4 | "uni-calender.today": "today", 5 | "uni-calender.MON": "MON", 6 | "uni-calender.TUE": "TUE", 7 | "uni-calender.WED": "WED", 8 | "uni-calender.THU": "THU", 9 | "uni-calender.FRI": "FRI", 10 | "uni-calender.SAT": "SAT", 11 | "uni-calender.SUN": "SUN" 12 | } 13 | -------------------------------------------------------------------------------- /im-ui/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | 5 | 6 | # local env files 7 | .env.local 8 | .env.*.local 9 | 10 | # Log files 11 | npm-debug.log* 12 | yarn-debug.log* 13 | yarn-error.log* 14 | pnpm-debug.log* 15 | 16 | # Editor directories and files 17 | .idea 18 | .vscode 19 | *.suo 20 | *.ntvs* 21 | *.njsproj 22 | *.sln 23 | *.sw? 24 | 25 | # 26 | package-lock.json 27 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-easyinput/readme.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ### Easyinput 增强输入框 4 | > **组件名:uni-easyinput** 5 | > 代码块: `uEasyinput` 6 | 7 | 8 | easyinput 组件是对原生input组件的增强 ,是专门为配合表单组件[uni-forms](https://ext.dcloud.net.cn/plugin?id=2773)而设计的,easyinput 内置了边框,图标等,同时包含 input 所有功能 9 | 10 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-easyinput) 11 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 -------------------------------------------------------------------------------- /im-uniapp/vite.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "vite" 2 | import uni from "@dcloudio/vite-plugin-uni"; 3 | 4 | export default defineConfig({ 5 | plugins: [ 6 | uni() 7 | ], 8 | server: { 9 | proxy: { 10 | '/api': { 11 | rewrite: path => path.replace(/^\/api/, ''), 12 | logLevel: 'debug', 13 | target: 'http://localhost:8888', 14 | changeOrigin: true 15 | }, 16 | 17 | } 18 | } 19 | }) -------------------------------------------------------------------------------- /im-ui/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 盒子IM 9 | 10 | 11 |
12 | 13 | 14 | -------------------------------------------------------------------------------- /im-commom/src/main/java/com/bx/imcommon/contant/IMConstant.java: -------------------------------------------------------------------------------- 1 | package com.bx.imcommon.contant; 2 | 3 | public final class IMConstant { 4 | 5 | private IMConstant() { 6 | } 7 | 8 | /** 9 | * 在线状态过期时间 600s 10 | */ 11 | public static final long ONLINE_TIMEOUT_SECOND = 600; 12 | /** 13 | * 消息允许撤回时间 300s 14 | */ 15 | public static final long ALLOW_RECALL_SECOND = 300; 16 | 17 | 18 | } 19 | -------------------------------------------------------------------------------- /im-platform/src/main/resources/mapper/GroupMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /im-platform/src/main/resources/mapper/UserMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /im-server/src/main/resources/application-dev.yml: -------------------------------------------------------------------------------- 1 | server: 2 | port: 8678 3 | 4 | spring: 5 | data: 6 | redis: 7 | host: 127.0.0.1 8 | port: 6379 9 | database: 1 10 | password: 123456 11 | 12 | websocket: 13 | enable: true 14 | port: 8878 15 | 16 | tcpsocket: 17 | enable: false # 暂时不开启 18 | port: 8879 19 | 20 | jwt: 21 | accessToken: 22 | secret: MIIBIjANBgkq # 跟im-platfrom的secret必须一致 -------------------------------------------------------------------------------- /im-platform/src/main/resources/mapper/FriendMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-swipe-action/components/uni-swipe-action-item/isPC.js: -------------------------------------------------------------------------------- 1 | export function isPC() { 2 | var userAgentInfo = navigator.userAgent; 3 | var Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"]; 4 | var flag = true; 5 | for (let v = 0; v < Agents.length - 1; v++) { 6 | if (userAgentInfo.indexOf(Agents[v]) > 0) { 7 | flag = false; 8 | break; 9 | } 10 | } 11 | return flag; 12 | } 13 | -------------------------------------------------------------------------------- /im-platform/src/main/resources/mapper/GroupMemberMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /im-platform/src/main/resources/mapper/GroupMessageMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /im-ui/README.md: -------------------------------------------------------------------------------- 1 | # web 2 | 3 | ## Project setup 4 | ``` 5 | npm install 6 | ``` 7 | 8 | ### Compiles and hot-reloads for development 9 | ``` 10 | npm run serve 11 | ``` 12 | 13 | ### Compiles and minifies for production 14 | ``` 15 | npm run build 16 | ``` 17 | 18 | ### Lints and fixes files 19 | ``` 20 | npm run lint 21 | ``` 22 | 23 | ### Customize configuration 24 | See [Configuration Reference](https://cli.vuejs.org/config/). 25 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-title/changelog.md: -------------------------------------------------------------------------------- 1 | ## 1.1.1(2022-05-19) 2 | - 修改组件描述 3 | ## 1.1.0(2021-11-19) 4 | - 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) 5 | - 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-title](https://uniapp.dcloud.io/component/uniui/uni-title) 6 | ## 1.0.2(2021-05-12) 7 | - 新增 示例地址 8 | - 修复 示例项目缺少组件的Bug 9 | ## 1.0.1(2021-02-05) 10 | - 调整为uni_modules目录规范 11 | -------------------------------------------------------------------------------- /im-platform/src/main/resources/mapper/PrivateMessageMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /im-platform/src/main/java/com/bx/implatform/vo/UploadImageVO.java: -------------------------------------------------------------------------------- 1 | package com.bx.implatform.vo; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import io.swagger.v3.oas.annotations.media.Schema; 5 | import lombok.Data; 6 | 7 | @Data 8 | @Schema(description = "图片上传VO") 9 | public class UploadImageVO { 10 | 11 | @Schema(description = "原图") 12 | private String originUrl; 13 | 14 | @Schema(description = "缩略图") 15 | private String thumbUrl; 16 | } 17 | -------------------------------------------------------------------------------- /im-server/src/main/java/com/bx/imserver/netty/processor/AbstractMessageProcessor.java: -------------------------------------------------------------------------------- 1 | package com.bx.imserver.netty.processor; 2 | 3 | import io.netty.channel.ChannelHandlerContext; 4 | 5 | public abstract class AbstractMessageProcessor { 6 | 7 | public void process(ChannelHandlerContext ctx, T data) { 8 | } 9 | 10 | public void process(T data) { 11 | } 12 | 13 | public T transForm(Object o) { 14 | return (T) o; 15 | } 16 | 17 | 18 | } 19 | -------------------------------------------------------------------------------- /im-api-example/src/main/java/com/bx/api/session/UserSession.java: -------------------------------------------------------------------------------- 1 | package com.bx.api.session; 2 | 3 | import com.bx.imcommon.model.IMSessionInfo; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | 7 | @EqualsAndHashCode(callSuper = true) 8 | @Data 9 | public class UserSession extends IMSessionInfo { 10 | 11 | /** 12 | * 用户名称 13 | */ 14 | private String userName; 15 | 16 | /** 17 | * 用户昵称 18 | */ 19 | private String nickName; 20 | } 21 | -------------------------------------------------------------------------------- /im-platform/src/main/java/com/bx/implatform/session/UserSession.java: -------------------------------------------------------------------------------- 1 | package com.bx.implatform.session; 2 | 3 | import com.bx.imcommon.model.IMSessionInfo; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | 7 | @EqualsAndHashCode(callSuper = true) 8 | @Data 9 | public class UserSession extends IMSessionInfo { 10 | 11 | /** 12 | * 用户名称 13 | */ 14 | private String userName; 15 | 16 | /** 17 | * 用户昵称 18 | */ 19 | private String nickName; 20 | } 21 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-dateformat/changelog.md: -------------------------------------------------------------------------------- 1 | ## 1.0.0(2021-11-19) 2 | - 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) 3 | - 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-dateformat](https://uniapp.dcloud.io/component/uniui/uni-dateformat) 4 | ## 0.0.5(2021-07-08) 5 | - 调整 默认时间不再是当前时间,而是显示'-'字符 6 | ## 0.0.4(2021-05-12) 7 | - 新增 组件示例地址 8 | ## 0.0.3(2021-02-04) 9 | - 调整为uni_modules目录规范 10 | - 修复 iOS 平台日期格式化出错的问题 11 | -------------------------------------------------------------------------------- /im-api-example/src/main/java/com/bx/api/controller/UserController.java: -------------------------------------------------------------------------------- 1 | package com.bx.api.controller; 2 | 3 | import io.swagger.v3.oas.annotations.tags.Tag; 4 | import lombok.RequiredArgsConstructor; 5 | import org.springframework.web.bind.annotation.RequestMapping; 6 | import org.springframework.web.bind.annotation.RestController; 7 | 8 | @Tag(name = "用户") 9 | @RestController 10 | @RequestMapping("/api/user") 11 | @RequiredArgsConstructor 12 | public class UserController { 13 | 14 | 15 | 16 | } 17 | 18 | -------------------------------------------------------------------------------- /im-commom/src/main/java/com/bx/imcommon/model/IMSendResult.java: -------------------------------------------------------------------------------- 1 | package com.bx.imcommon.model; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class IMSendResult { 7 | 8 | /** 9 | * 发送方 10 | */ 11 | private IMUserInfo sender; 12 | 13 | /** 14 | * 接收方 15 | */ 16 | private IMUserInfo receiver; 17 | 18 | /** 19 | * 发送状态 IMCmdType 20 | */ 21 | private Integer code; 22 | 23 | /** 24 | * 消息内容 25 | */ 26 | private T data; 27 | 28 | } 29 | -------------------------------------------------------------------------------- /im-platform/src/main/java/com/bx/implatform/config/ICEServerConfig.java: -------------------------------------------------------------------------------- 1 | package com.bx.implatform.config; 2 | 3 | import lombok.Data; 4 | import org.springframework.boot.context.properties.ConfigurationProperties; 5 | import org.springframework.stereotype.Component; 6 | 7 | import java.util.ArrayList; 8 | import java.util.List; 9 | 10 | @Data 11 | @Component 12 | @ConfigurationProperties(prefix = "webrtc") 13 | public class ICEServerConfig { 14 | 15 | private List iceServers = new ArrayList<>(); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /im-platform/src/main/java/com/bx/implatform/contant/Constant.java: -------------------------------------------------------------------------------- 1 | package com.bx.implatform.contant; 2 | 3 | public final class Constant { 4 | 5 | private Constant() { 6 | } 7 | 8 | /** 9 | * 最大图片上传大小 10 | */ 11 | public static final long MAX_IMAGE_SIZE = 5 * 1024 * 1024; 12 | /** 13 | * 最大上传文件大小 14 | */ 15 | public static final long MAX_FILE_SIZE = 10 * 1024 * 1024; 16 | /** 17 | * 群聊最大人数 18 | */ 19 | public static final long MAX_GROUP_MEMBER = 500; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-table/components/uni-tbody/uni-tbody.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 27 | 28 | 30 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-row/changelog.md: -------------------------------------------------------------------------------- 1 | ## 1.0.0(2021-11-19) 2 | - 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) 3 | - 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-row](https://uniapp.dcloud.io/component/uniui/uni-row) 4 | ## 0.1.0(2021-07-13) 5 | - 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) 6 | ## 0.0.4(2021-05-12) 7 | - 新增 组件示例地址 8 | ## 0.0.3(2021-02-05) 9 | - 调整为uni_modules目录规范 10 | - 新增uni-row组件 11 | -------------------------------------------------------------------------------- /im-server/src/main/java/com/bx/imserver/constant/ChannelAttrKey.java: -------------------------------------------------------------------------------- 1 | package com.bx.imserver.constant; 2 | 3 | public final class ChannelAttrKey { 4 | 5 | private ChannelAttrKey() { 6 | } 7 | 8 | /** 9 | * 用户ID 10 | */ 11 | public static final String USER_ID = "USER_ID"; 12 | /** 13 | * 终端类型 14 | */ 15 | public static final String TERMINAL_TYPE = "TERMINAL_TYPE"; 16 | /** 17 | * 心跳次数 18 | */ 19 | public static final String HEARTBEAT_TIMES = "HEARTBEAt_TIMES"; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-scss/styles/setting/_text.scss: -------------------------------------------------------------------------------- 1 | @mixin get-styles($k,$c) { 2 | @if $k == size or $k == weight{ 3 | font-#{$k}:#{$c} 4 | }@else{ 5 | #{$k}:#{$c} 6 | } 7 | } 8 | 9 | @each $key, $child in $uni-headings { 10 | /* #ifndef APP-NVUE */ 11 | .uni-#{$key} { 12 | @each $k, $c in $child { 13 | @include get-styles($k,$c) 14 | } 15 | } 16 | /* #endif */ 17 | /* #ifdef APP-NVUE */ 18 | .container .uni-#{$key} { 19 | @each $k, $c in $child { 20 | @include get-styles($k,$c) 21 | } 22 | } 23 | /* #endif */ 24 | } 25 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-segmented-control/changelog.md: -------------------------------------------------------------------------------- 1 | ## 1.2.0(2021-11-19) 2 | - 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) 3 | - 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-segmented-control](https://uniapp.dcloud.io/component/uniui/uni-segmented-control) 4 | ## 1.1.0(2021-07-30) 5 | - 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) 6 | ## 1.0.5(2021-05-12) 7 | - 新增 项目示例地址 8 | ## 1.0.4(2021-02-05) 9 | - 调整为uni_modules目录规范 10 | -------------------------------------------------------------------------------- /im-commom/src/main/java/com/bx/imcommon/model/IMUserInfo.java: -------------------------------------------------------------------------------- 1 | package com.bx.imcommon.model; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * @author: 谢绍许 9 | * @date: 2023-09-24 09:23:11 10 | * @version: 1.0 11 | */ 12 | @Data 13 | @NoArgsConstructor 14 | @AllArgsConstructor 15 | public class IMUserInfo { 16 | 17 | /** 18 | * 用户id 19 | */ 20 | private Long id; 21 | 22 | /** 23 | * 用户终端类型 IMTerminalType 24 | */ 25 | private Integer terminal; 26 | 27 | 28 | } 29 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-popup/components/uni-popup/popup.js: -------------------------------------------------------------------------------- 1 | 2 | export default { 3 | data() { 4 | return { 5 | 6 | } 7 | }, 8 | created(){ 9 | this.popup = this.getParent() 10 | }, 11 | methods:{ 12 | /** 13 | * 获取父元素实例 14 | */ 15 | getParent(name = 'uniPopup') { 16 | let parent = this.$parent; 17 | let parentName = parent.$options.name; 18 | while (parentName !== name) { 19 | parent = parent.$parent; 20 | if (!parent) return false 21 | parentName = parent.$options.name; 22 | } 23 | return parent; 24 | }, 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /im-ui/src/components/common/Icp.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 10 | 11 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-status-bar.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 17 | 18 | 25 | -------------------------------------------------------------------------------- /im-client/src/main/java/com/bx/imclient/annotation/IMListener.java: -------------------------------------------------------------------------------- 1 | package com.bx.imclient.annotation; 2 | 3 | import com.bx.imcommon.enums.IMListenerType; 4 | import org.springframework.stereotype.Component; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | @Target({ElementType.TYPE,ElementType.FIELD}) 12 | @Retention(RetentionPolicy.RUNTIME) 13 | @Component 14 | public @interface IMListener { 15 | 16 | IMListenerType type(); 17 | 18 | } 19 | -------------------------------------------------------------------------------- /im-api-example/src/main/java/com/bx/api/session/WebrtcSession.java: -------------------------------------------------------------------------------- 1 | package com.bx.api.session; 2 | 3 | import lombok.Data; 4 | 5 | /* 6 | * webrtc 会话信息 7 | * @Author Blue 8 | * @Date 2022/10/21 9 | */ 10 | @Data 11 | public class WebrtcSession { 12 | /** 13 | * 发起者id 14 | */ 15 | private Long callerId; 16 | /** 17 | * 发起者终端类型 18 | */ 19 | private Integer callerTerminal; 20 | 21 | /** 22 | * 接受者id 23 | */ 24 | private Long acceptorId; 25 | 26 | /** 27 | * 接受者终端类型 28 | */ 29 | private Integer acceptorTerminal; 30 | } 31 | -------------------------------------------------------------------------------- /im-commom/src/main/java/com/bx/imcommon/enums/IMListenerType.java: -------------------------------------------------------------------------------- 1 | package com.bx.imcommon.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | 5 | @AllArgsConstructor 6 | public enum IMListenerType { 7 | /** 8 | * 全部消息 9 | */ 10 | ALL(0, "全部消息"), 11 | /** 12 | * 私聊消息 13 | */ 14 | PRIVATE_MESSAGE(1, "私聊消息"), 15 | /** 16 | * 群聊消息 17 | */ 18 | GROUP_MESSAGE(2, "群聊消息"); 19 | 20 | private final Integer code; 21 | 22 | private final String desc; 23 | 24 | public Integer code() { 25 | return this.code; 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /im-platform/src/main/java/com/bx/implatform/vo/OnlineTerminalVO.java: -------------------------------------------------------------------------------- 1 | package com.bx.implatform.vo; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @author: 谢绍许 11 | * @date: 2023-10-28 21:17:59 12 | * @version: 1.0 13 | */ 14 | @Data 15 | @AllArgsConstructor 16 | public class OnlineTerminalVO { 17 | 18 | @Schema(description = "用户id") 19 | private Long userId; 20 | 21 | @Schema(description = "在线终端类型") 22 | private List terminals; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /im-platform/src/main/java/com/bx/implatform/session/WebrtcSession.java: -------------------------------------------------------------------------------- 1 | package com.bx.implatform.session; 2 | 3 | import lombok.Data; 4 | 5 | /* 6 | * webrtc 会话信息 7 | * @Author Blue 8 | * @Date 2022/10/21 9 | */ 10 | @Data 11 | public class WebrtcSession { 12 | /** 13 | * 发起者id 14 | */ 15 | private Long callerId; 16 | /** 17 | * 发起者终端类型 18 | */ 19 | private Integer callerTerminal; 20 | 21 | /** 22 | * 接受者id 23 | */ 24 | private Long acceptorId; 25 | 26 | /** 27 | * 接受者终端类型 28 | */ 29 | private Integer acceptorTerminal; 30 | } 31 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-swiper-dot/changelog.md: -------------------------------------------------------------------------------- 1 | ## 1.2.0(2021-11-19) 2 | - 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) 3 | - 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-swiper-dot](https://uniapp.dcloud.io/component/uniui/uni-swiper-dot) 4 | ## 1.1.0(2021-07-30) 5 | - 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) 6 | ## 1.0.6(2021-05-12) 7 | - 新增 示例地址 8 | - 修复 示例项目缺少组件的Bug 9 | ## 1.0.5(2021-02-05) 10 | - 调整为uni_modules目录规范 11 | - 新增 clickItem 事件,支持指示点控制轮播 12 | - 新增 支持 pc 可用 13 | -------------------------------------------------------------------------------- /im-api-example/src/main/java/com/bx/api/vo/FriendVO.java: -------------------------------------------------------------------------------- 1 | package com.bx.api.vo; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import jakarta.validation.constraints.NotNull; 5 | import lombok.Data; 6 | 7 | @Data 8 | @Schema(description = "好友信息VO") 9 | public class FriendVO { 10 | 11 | @NotNull(message = "好友id不可为空") 12 | @Schema(description = "好友id") 13 | private Long id; 14 | 15 | @NotNull(message = "好友昵称不可为空") 16 | @Schema(description = "好友昵称") 17 | private String nickName; 18 | 19 | 20 | @Schema(description = "好友头像") 21 | private String headImage; 22 | } 23 | -------------------------------------------------------------------------------- /im-ui/src/api/element.js: -------------------------------------------------------------------------------- 1 | let fixTop = (e) => { 2 | var offset = e.offsetTop 3 | if (e.offsetParent != null) { 4 | offset += fixTop(e.offsetParent) 5 | } 6 | return offset 7 | } 8 | 9 | let fixLeft = (e) => { 10 | var offset = e.offsetLeft 11 | if (e.offsetParent != null) { 12 | offset += fixLeft(e.offsetParent) 13 | } 14 | return offset 15 | } 16 | 17 | let setTitleTip = (tip) => { 18 | let title = process.env.VUE_APP_NAME; 19 | if(tip){ 20 | title = `(${tip})${title}`; 21 | } 22 | document.title =title; 23 | 24 | } 25 | 26 | export default{ 27 | fixTop, 28 | fixLeft, 29 | setTitleTip 30 | } 31 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-grid/changelog.md: -------------------------------------------------------------------------------- 1 | ## 1.4.0(2021-11-19) 2 | - 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) 3 | - 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-grid](https://uniapp.dcloud.io/component/uniui/uni-grid) 4 | ## 1.3.2(2021-11-09) 5 | - 新增 提供组件设计资源,组件样式调整 6 | ## 1.3.1(2021-07-30) 7 | - 优化 vue3下事件警告的问题 8 | ## 1.3.0(2021-07-13) 9 | - 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) 10 | ## 1.2.4(2021-05-12) 11 | - 新增 组件示例地址 12 | ## 1.2.3(2021-02-05) 13 | - 调整为uni_modules目录规范 14 | -------------------------------------------------------------------------------- /im-platform/src/main/java/com/bx/implatform/vo/FriendVO.java: -------------------------------------------------------------------------------- 1 | package com.bx.implatform.vo; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import jakarta.validation.constraints.NotNull; 5 | import lombok.Data; 6 | 7 | 8 | @Data 9 | @Schema(description = "好友信息VO") 10 | public class FriendVO { 11 | 12 | @NotNull(message = "好友id不可为空") 13 | @Schema(description = "好友id") 14 | private Long id; 15 | 16 | @NotNull(message = "好友昵称不可为空") 17 | @Schema(description = "好友昵称") 18 | private String nickName; 19 | 20 | 21 | @Schema(description = "好友头像") 22 | private String headImage; 23 | } 24 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-drawer/changelog.md: -------------------------------------------------------------------------------- 1 | ## 1.2.1(2021-11-22) 2 | - 修复 vue3中个别scss变量无法找到的问题 3 | ## 1.2.0(2021-11-19) 4 | - 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) 5 | - 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-drawer](https://uniapp.dcloud.io/component/uniui/uni-drawer) 6 | ## 1.1.1(2021-07-30) 7 | - 优化 vue3下事件警告的问题 8 | ## 1.1.0(2021-07-13) 9 | - 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) 10 | ## 1.0.7(2021-05-12) 11 | - 新增 组件示例地址 12 | ## 1.0.6(2021-02-04) 13 | - 调整为uni_modules目录规范 14 | -------------------------------------------------------------------------------- /im-platform/src/main/java/com/bx/implatform/dto/ModifyPwdDTO.java: -------------------------------------------------------------------------------- 1 | package com.bx.implatform.dto; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import io.swagger.v3.oas.annotations.media.Schema; 5 | import lombok.Data; 6 | 7 | import jakarta.validation.constraints.NotEmpty; 8 | 9 | @Data 10 | @Schema(description = "修改密码DTO") 11 | public class ModifyPwdDTO { 12 | 13 | @NotEmpty(message = "旧用户密码不可为空") 14 | @Schema(description = "旧用户密码") 15 | private String oldPassword; 16 | 17 | @NotEmpty(message = "新用户密码不可为空") 18 | @Schema(description = "新用户密码") 19 | private String newPassword; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-link/changelog.md: -------------------------------------------------------------------------------- 1 | ## 1.0.0(2021-11-19) 2 | - 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) 3 | - 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-link](https://uniapp.dcloud.io/component/uniui/uni-link) 4 | ## 1.1.7(2021-11-08) 5 | ## 0.0.7(2021-09-03) 6 | - 修复 在 nvue 下不显示的 bug 7 | ## 0.0.6(2021-07-30) 8 | - 新增 支持自定义插槽 9 | ## 0.0.5(2021-06-21) 10 | - 新增 download 属性,H5平台下载文件名 11 | ## 0.0.4(2021-05-12) 12 | - 新增 组件示例地址 13 | ## 0.0.3(2021-03-09) 14 | - 新增 href 属性支持 tel:|mailto: 15 | 16 | ## 0.0.2(2021-02-05) 17 | - 调整为uni_modules目录规范 18 | -------------------------------------------------------------------------------- /im-api-example/src/main/java/com/bx/api/enums/FileType.java: -------------------------------------------------------------------------------- 1 | package com.bx.api.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | 5 | @AllArgsConstructor 6 | public enum FileType { 7 | 8 | /** 9 | * 文件 10 | */ 11 | FILE(0, "文件"), 12 | /** 13 | * 图片 14 | */ 15 | IMAGE(1, "图片"), 16 | /** 17 | * 视频 18 | */ 19 | VIDEO(2, "视频"), 20 | /** 21 | * 声音 22 | */ 23 | AUDIO(3, "声音"); 24 | 25 | private final Integer code; 26 | 27 | private final String desc; 28 | 29 | 30 | public Integer code() { 31 | return this.code; 32 | } 33 | 34 | 35 | } 36 | 37 | -------------------------------------------------------------------------------- /im-api-example/src/main/java/com/bx/api/enums/MessageStatus.java: -------------------------------------------------------------------------------- 1 | package com.bx.api.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | 5 | @AllArgsConstructor 6 | public enum MessageStatus { 7 | 8 | /** 9 | * 文件 10 | */ 11 | UNSEND(0, "未送达"), 12 | /** 13 | * 文件 14 | */ 15 | SENDED(1, "送达"), 16 | /** 17 | * 撤回 18 | */ 19 | RECALL(2, "撤回"), 20 | /** 21 | * 已读 22 | */ 23 | READED(3, "已读"); 24 | 25 | private final Integer code; 26 | 27 | private final String desc; 28 | 29 | 30 | public Integer code() { 31 | return this.code; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-steps/changelog.md: -------------------------------------------------------------------------------- 1 | ## 1.1.1(2021-11-22) 2 | - 修复 vue3中某些scss变量无法找到的问题 3 | ## 1.1.0(2021-11-19) 4 | - 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) 5 | - 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-steps](https://uniapp.dcloud.io/component/uniui/uni-steps) 6 | ## 1.0.8(2021-05-12) 7 | - 新增 项目示例地址 8 | ## 1.0.7(2021-05-06) 9 | - 修复 uni-steps 横向布局时,多行文字高度不合理的 bug 10 | ## 1.0.6(2021-04-21) 11 | - 优化 添加依赖 uni-icons, 导入后自动下载依赖 12 | ## 1.0.5(2021-02-05) 13 | - 优化 组件引用关系,通过uni_modules引用组件 14 | 15 | ## 1.0.4(2021-02-05) 16 | - 调整为uni_modules目录规范 17 | -------------------------------------------------------------------------------- /im-platform/src/main/java/com/bx/implatform/enums/FileType.java: -------------------------------------------------------------------------------- 1 | package com.bx.implatform.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | 5 | @AllArgsConstructor 6 | public enum FileType { 7 | 8 | /** 9 | * 文件 10 | */ 11 | FILE(0, "文件"), 12 | /** 13 | * 图片 14 | */ 15 | IMAGE(1, "图片"), 16 | /** 17 | * 视频 18 | */ 19 | VIDEO(2, "视频"), 20 | /** 21 | * 声音 22 | */ 23 | AUDIO(3, "声音"); 24 | 25 | private final Integer code; 26 | 27 | private final String desc; 28 | 29 | 30 | public Integer code() { 31 | return this.code; 32 | } 33 | 34 | 35 | } 36 | 37 | -------------------------------------------------------------------------------- /im-platform/src/main/java/com/bx/implatform/enums/MessageStatus.java: -------------------------------------------------------------------------------- 1 | package com.bx.implatform.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | 5 | @AllArgsConstructor 6 | public enum MessageStatus { 7 | 8 | /** 9 | * 文件 10 | */ 11 | UNSEND(0, "未送达"), 12 | /** 13 | * 文件 14 | */ 15 | SENDED(1, "送达"), 16 | /** 17 | * 撤回 18 | */ 19 | RECALL(2, "撤回"), 20 | /** 21 | * 已读 22 | */ 23 | READED(3, "已读"); 24 | 25 | private final Integer code; 26 | 27 | private final String desc; 28 | 29 | 30 | public Integer code() { 31 | return this.code; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /im-ui/src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 16 | 17 | 34 | -------------------------------------------------------------------------------- /im-api-example/src/main/java/com/bx/api/config/JwtProperties.java: -------------------------------------------------------------------------------- 1 | package com.bx.api.config; 2 | 3 | import lombok.Data; 4 | import org.springframework.beans.factory.annotation.Value; 5 | import org.springframework.stereotype.Component; 6 | 7 | @Data 8 | @Component 9 | public class JwtProperties { 10 | 11 | @Value("${jwt.accessToken.expireIn}") 12 | private Integer accessTokenExpireIn; 13 | 14 | @Value("${jwt.accessToken.secret}") 15 | private String accessTokenSecret; 16 | 17 | @Value("${jwt.refreshToken.expireIn}") 18 | private Integer refreshTokenExpireIn; 19 | 20 | @Value("${jwt.refreshToken.secret}") 21 | private String refreshTokenSecret; 22 | } 23 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-group/changelog.md: -------------------------------------------------------------------------------- 1 | ## 1.2.2(2022-05-30) 2 | - 新增 stat属性,是否开启uni统计功能 3 | ## 1.2.1(2021-11-22) 4 | - 修复 vue3中某些scss变量无法找到的问题 5 | ## 1.2.0(2021-11-19) 6 | - 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) 7 | - 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-group](https://uniapp.dcloud.io/component/uniui/uni-group) 8 | ## 1.1.7(2021-11-08) 9 | ## 1.1.0(2021-07-30) 10 | - 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) 11 | - 优化 组件文档 12 | ## 1.0.3(2021-05-12) 13 | - 新增 组件示例地址 14 | ## 1.0.2(2021-02-05) 15 | - 调整为uni_modules目录规范 16 | - 优化 兼容 nvue 页面 17 | -------------------------------------------------------------------------------- /im-commom/src/main/java/com/bx/imcommon/enums/IMSendCode.java: -------------------------------------------------------------------------------- 1 | package com.bx.imcommon.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | 5 | @AllArgsConstructor 6 | public enum IMSendCode { 7 | 8 | /** 9 | * 发送成功 10 | */ 11 | SUCCESS(0, "发送成功"), 12 | /** 13 | * 对方当前不在线 14 | */ 15 | NOT_ONLINE(1, "对方当前不在线"), 16 | /** 17 | * 未找到对方的channel 18 | */ 19 | NOT_FIND_CHANNEL(2, "未找到对方的channel"), 20 | /** 21 | * 未知异常 22 | */ 23 | UNKONW_ERROR(9999, "未知异常"); 24 | 25 | private final Integer code; 26 | private final String desc; 27 | 28 | public Integer code() { 29 | return this.code; 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /im-platform/src/main/java/com/bx/implatform/config/JwtProperties.java: -------------------------------------------------------------------------------- 1 | package com.bx.implatform.config; 2 | 3 | import lombok.Data; 4 | import org.springframework.beans.factory.annotation.Value; 5 | import org.springframework.stereotype.Component; 6 | 7 | @Data 8 | @Component 9 | public class JwtProperties { 10 | 11 | @Value("${jwt.accessToken.expireIn}") 12 | private Integer accessTokenExpireIn; 13 | 14 | @Value("${jwt.accessToken.secret}") 15 | private String accessTokenSecret; 16 | 17 | @Value("${jwt.refreshToken.expireIn}") 18 | private Integer refreshTokenExpireIn; 19 | 20 | @Value("${jwt.refreshToken.secret}") 21 | private String refreshTokenSecret; 22 | } 23 | -------------------------------------------------------------------------------- /im-server/src/main/java/com/bx/imserver/IMServerApp.java: -------------------------------------------------------------------------------- 1 | package com.bx.imserver; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | import org.springframework.context.annotation.ComponentScan; 6 | import org.springframework.scheduling.annotation.EnableAsync; 7 | import org.springframework.scheduling.annotation.EnableScheduling; 8 | 9 | @EnableAsync 10 | @EnableScheduling 11 | @ComponentScan(basePackages = {"com.bx"}) 12 | @SpringBootApplication 13 | public class IMServerApp { 14 | 15 | public static void main(String[] args) { 16 | SpringApplication.run(IMServerApp.class, args); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-combox/changelog.md: -------------------------------------------------------------------------------- 1 | ## 1.0.1(2021-11-23) 2 | - 优化 label、label-width 属性 3 | ## 1.0.0(2021-11-19) 4 | - 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) 5 | - 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-combox](https://uniapp.dcloud.io/component/uniui/uni-combox) 6 | ## 0.1.0(2021-07-30) 7 | - 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) 8 | ## 0.0.6(2021-05-12) 9 | - 新增 组件示例地址 10 | ## 0.0.5(2021-04-21) 11 | - 优化 添加依赖 uni-icons, 导入后自动下载依赖 12 | ## 0.0.4(2021-02-05) 13 | - 优化 组件引用关系,通过uni_modules引用组件 14 | ## 0.0.3(2021-02-04) 15 | - 调整为uni_modules目录规范 16 | -------------------------------------------------------------------------------- /im-platform/src/main/java/com/bx/implatform/vo/GroupInviteVO.java: -------------------------------------------------------------------------------- 1 | package com.bx.implatform.vo; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import io.swagger.v3.oas.annotations.media.Schema; 5 | import lombok.Data; 6 | 7 | import jakarta.validation.constraints.NotEmpty; 8 | import jakarta.validation.constraints.NotNull; 9 | import java.util.List; 10 | 11 | @Data 12 | @Schema(description = "邀请好友进群请求VO") 13 | public class GroupInviteVO { 14 | 15 | @NotNull(message = "群id不可为空") 16 | @Schema(description = "群id") 17 | private Long groupId; 18 | 19 | @NotNull(message = "群id不可为空") 20 | @Schema(description = "好友id列表不可为空") 21 | private List friendIds; 22 | } 23 | -------------------------------------------------------------------------------- /im-ui/src/api/enums.js: -------------------------------------------------------------------------------- 1 | 2 | const MESSAGE_TYPE = { 3 | TEXT: 0, 4 | IMAGE:1, 5 | FILE:2, 6 | AUDIO:3, 7 | VIDEO:4, 8 | RECALL:10, 9 | READED:11, 10 | TIP_TIME:20, 11 | RTC_CALL: 101, 12 | RTC_ACCEPT: 102, 13 | RTC_REJECT: 103, 14 | RTC_CANCEL: 104, 15 | RTC_FAILED: 105, 16 | RTC_HANDUP: 106, 17 | RTC_CANDIDATE: 107 18 | } 19 | 20 | const USER_STATE = { 21 | OFFLINE: 0, 22 | FREE: 1, 23 | BUSY: 2 24 | } 25 | 26 | const TERMINAL_TYPE = { 27 | WEB: 0, 28 | APP: 1 29 | } 30 | 31 | const MESSAGE_STATUS = { 32 | UNSEND: 0, 33 | SENDED: 1, 34 | RECALL:2, 35 | READED:3 36 | } 37 | 38 | 39 | export { 40 | MESSAGE_TYPE, 41 | USER_STATE, 42 | TERMINAL_TYPE, 43 | MESSAGE_STATUS 44 | } 45 | -------------------------------------------------------------------------------- /im-uniapp/common/enums.js: -------------------------------------------------------------------------------- 1 | 2 | const MESSAGE_TYPE = { 3 | TEXT: 0, 4 | IMAGE: 1, 5 | FILE:2, 6 | AUDIO:3, 7 | VIDEO:4, 8 | RECALL:10, 9 | READED:11, 10 | TIP_TIME:20, 11 | RTC_CALL: 101, 12 | RTC_ACCEPT: 102, 13 | RTC_REJECT: 103, 14 | RTC_CANCEL: 104, 15 | RTC_FAILED: 105, 16 | RTC_HANDUP: 106, 17 | RTC_CANDIDATE: 107 18 | } 19 | 20 | const USER_STATE = { 21 | OFFLINE: 0, 22 | FREE: 1, 23 | BUSY: 2 24 | } 25 | 26 | const TERMINAL_TYPE = { 27 | WEB: 0, 28 | APP: 1 29 | } 30 | 31 | const MESSAGE_STATUS = { 32 | UNSEND: 0, 33 | SENDED: 1, 34 | RECALL:2, 35 | READED:3 36 | } 37 | 38 | export { 39 | MESSAGE_TYPE, 40 | USER_STATE, 41 | TERMINAL_TYPE, 42 | MESSAGE_STATUS 43 | } 44 | -------------------------------------------------------------------------------- /im-api-example/src/main/java/com/bx/api/controller/HelloController.java: -------------------------------------------------------------------------------- 1 | package com.bx.api.controller; 2 | 3 | 4 | import io.swagger.v3.oas.annotations.Operation; 5 | import io.swagger.v3.oas.annotations.Parameter; 6 | import io.swagger.v3.oas.annotations.tags.Tag; 7 | import org.springframework.web.bind.annotation.GetMapping; 8 | import org.springframework.web.bind.annotation.RestController; 9 | 10 | @Tag(name = "hello首页模块") 11 | @RestController 12 | public class HelloController { 13 | @Parameter(name = "name", description = "姓名", required = true) 14 | @Operation(summary = "hello接口向客人问好") 15 | @GetMapping("hello") 16 | public String hello(String name) { 17 | return "hello"; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /im-api-example/src/main/resources/application.yml: -------------------------------------------------------------------------------- 1 | spring: 2 | profiles: 3 | active: dev 4 | 5 | # 上下文路径 6 | server: 7 | servlet: 8 | context-path: / 9 | 10 | knife4j: 11 | enable: true 12 | openapi: 13 | title: Knife4j官方文档 14 | description: "`我是测试`,**你知道吗** 15 | # aaa" 16 | email: xiaoymin@foxmail.com 17 | concat: 八一菜刀 18 | url: https://docs.xiaominfo.com 19 | version: v4.0 20 | license: Apache 2.0 21 | license-url: https://stackoverflow.com/ 22 | terms-of-service-url: https://stackoverflow.com/ 23 | group: 24 | test1: 25 | group-name: 分组名称 26 | api-rule: package 27 | api-rule-resources: 28 | - com.bx.implatform.controller 29 | 30 | -------------------------------------------------------------------------------- /im-platform/src/main/resources/application.yml: -------------------------------------------------------------------------------- 1 | spring: 2 | profiles: 3 | active: dev 4 | 5 | ## 上下文路径 6 | #server: 7 | # servlet: 8 | # context-path: / 9 | 10 | knife4j: 11 | enable: true 12 | openapi: 13 | title: Knife4j官方文档 14 | description: "`我是测试`,**你知道吗** 15 | # aaa" 16 | email: xiaoymin@foxmail.com 17 | concat: 八一菜刀 18 | url: https://docs.xiaominfo.com 19 | version: v4.0 20 | license: Apache 2.0 21 | license-url: https://stackoverflow.com/ 22 | terms-of-service-url: https://stackoverflow.com/ 23 | group: 24 | test1: 25 | group-name: 分组名称 26 | api-rule: package 27 | api-rule-resources: 28 | - com.bx.implatform.controller 29 | 30 | -------------------------------------------------------------------------------- /im-commom/src/main/java/com/bx/imcommon/model/IMRecvInfo.java: -------------------------------------------------------------------------------- 1 | package com.bx.imcommon.model; 2 | 3 | import lombok.Data; 4 | 5 | import java.util.List; 6 | 7 | @Data 8 | public class IMRecvInfo { 9 | 10 | /** 11 | * 命令类型 IMCmdType 12 | */ 13 | private Integer cmd; 14 | 15 | /** 16 | * 发送方 17 | */ 18 | private IMUserInfo sender; 19 | 20 | /** 21 | * 接收方用户列表 22 | */ 23 | List receivers; 24 | 25 | /** 26 | * 是否需要回调发送结果 27 | */ 28 | private Boolean sendResult; 29 | 30 | /** 31 | * 当前服务名(回调发送结果使用) 32 | */ 33 | private String serviceName; 34 | /** 35 | * 推送消息体 36 | */ 37 | private Object data; 38 | } 39 | 40 | 41 | -------------------------------------------------------------------------------- /im-platform/src/main/java/com/bx/implatform/vo/GroupMemberVO.java: -------------------------------------------------------------------------------- 1 | package com.bx.implatform.vo; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | 6 | @Data 7 | @Schema(description = "群成员信息VO") 8 | public class GroupMemberVO { 9 | 10 | @Schema(description = "用户id") 11 | private Long userId; 12 | 13 | @Schema(description = "群内显示名称") 14 | private String aliasName; 15 | 16 | @Schema(description = "头像") 17 | private String headImage; 18 | 19 | @Schema(description = "是否已退出") 20 | private Boolean quit; 21 | 22 | @Schema(description = "是否在线") 23 | private Boolean online; 24 | 25 | @Schema(description = "备注") 26 | private String remark; 27 | 28 | } 29 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-scss/theme.scss: -------------------------------------------------------------------------------- 1 | // 间距基础倍数 2 | $uni-space-root: 2; 3 | // 边框半径默认值 4 | $uni-radius-root:5px; 5 | // 主色 6 | $uni-primary: #2979ff; 7 | // 辅助色 8 | $uni-success: #4cd964; 9 | // 警告色 10 | $uni-warning: #f0ad4e; 11 | // 错误色 12 | $uni-error: #dd524d; 13 | // 描述色 14 | $uni-info: #909399; 15 | // 中性色 16 | $uni-main-color: #303133; 17 | $uni-base-color: #606266; 18 | $uni-secondary-color: #909399; 19 | $uni-extra-color: #C0C4CC; 20 | // 背景色 21 | $uni-bg-color: #f5f5f5; 22 | // 边框颜色 23 | $uni-border-1: #DCDFE6; 24 | $uni-border-2: #E4E7ED; 25 | $uni-border-3: #EBEEF5; 26 | $uni-border-4: #F2F6FC; 27 | 28 | // 常规色 29 | $uni-black: #000000; 30 | $uni-white: #ffffff; 31 | $uni-transparent: rgba($color: #000000, $alpha: 0); 32 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-indexed-list/changelog.md: -------------------------------------------------------------------------------- 1 | ## 1.2.1(2021-11-22) 2 | - 修复 vue3中某些scss变量无法找到的问题 3 | ## 1.2.0(2021-11-19) 4 | - 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) 5 | - 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-indexed-list](https://uniapp.dcloud.io/component/uniui/uni-indexed-list) 6 | ## 1.1.0(2021-07-30) 7 | - 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) 8 | ## 1.0.11(2021-05-12) 9 | - 新增 组件示例地址 10 | ## 1.0.10(2021-04-21) 11 | - 优化 添加依赖 uni-icons, 导入后自动下载依赖 12 | ## 1.0.9(2021-02-05) 13 | - 优化 组件引用关系,通过uni_modules引用组件 14 | 15 | ## 1.0.8(2021-02-05) 16 | - 调整为uni_modules目录规范 17 | - 新增 支持 PC 端 18 | -------------------------------------------------------------------------------- /im-platform/src/main/java/com/bx/implatform/vo/LoginVO.java: -------------------------------------------------------------------------------- 1 | package com.bx.implatform.vo; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import io.swagger.v3.oas.annotations.media.Schema; 5 | import lombok.Data; 6 | 7 | @Data 8 | @Schema(description = "用户登录VO") 9 | public class LoginVO { 10 | 11 | @Schema(description = "每次请求都必须在header中携带accessToken") 12 | private String accessToken; 13 | 14 | @Schema(description = "accessToken过期时间(秒)") 15 | private Integer accessTokenExpiresIn; 16 | 17 | @Schema(description = "accessToken过期后,通过refreshToken换取新的token") 18 | private String refreshToken; 19 | 20 | @Schema(description = "refreshToken过期时间(秒)") 21 | private Integer refreshTokenExpiresIn; 22 | 23 | } 24 | -------------------------------------------------------------------------------- /im-uniapp/main.js: -------------------------------------------------------------------------------- 1 | import App from './App' 2 | import request from './common/request'; 3 | import emotion from './common/emotion.js'; 4 | import * as enums from './common/enums.js'; 5 | import * as date from './common/date'; 6 | import * as socketApi from './common/wssocket'; 7 | import store from './store'; 8 | 9 | import { createSSRApp } from 'vue' 10 | 11 | export function createApp() { 12 | const app = createSSRApp(App) 13 | app.use(store); 14 | app.config.globalProperties.$http = request; 15 | app.config.globalProperties.$wsApi = socketApi; 16 | app.config.globalProperties.$emo = emotion; 17 | app.config.globalProperties.$enums = enums; 18 | app.config.globalProperties.$date = date; 19 | return { 20 | app 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-goods-nav/changelog.md: -------------------------------------------------------------------------------- 1 | ## 1.2.1(2022-05-30) 2 | - 新增 stat属性,是否开启uni统计功能 3 | ## 1.2.0(2021-11-19) 4 | - 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) 5 | - 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-goods-nav](https://uniapp.dcloud.io/component/uniui/uni-goods-nav) 6 | ## 1.1.1(2021-08-24) 7 | - 新增 支持国际化 8 | ## 1.1.0(2021-07-13) 9 | - 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) 10 | ## 1.0.7(2021-05-12) 11 | - 新增 组件示例地址 12 | ## 1.0.6(2021-04-21) 13 | - 优化 添加依赖 uni-icons, 导入后自动下载依赖 14 | ## 1.0.5(2021-02-05) 15 | - 优化 组件引用关系,通过uni_modules引用组件 16 | 17 | ## 1.0.4(2021-02-05) 18 | - 调整为uni_modules目录规范 19 | -------------------------------------------------------------------------------- /im-platform/src/main/java/com/bx/implatform/service/IWebrtcService.java: -------------------------------------------------------------------------------- 1 | package com.bx.implatform.service; 2 | 3 | import com.bx.implatform.config.ICEServer; 4 | import org.springframework.web.bind.annotation.RequestBody; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * webrtc 通信服务 10 | * 11 | * @author 12 | */ 13 | public interface IWebrtcService { 14 | 15 | void call(Long uid, String offer); 16 | 17 | void accept(Long uid, @RequestBody String answer); 18 | 19 | void reject(Long uid); 20 | 21 | void cancel(Long uid); 22 | 23 | void failed(Long uid, String reason); 24 | 25 | void leave(Long uid); 26 | 27 | void candidate(Long uid, String candidate); 28 | 29 | List getIceServers(); 30 | 31 | 32 | } 33 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-datetime-picker/readme.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | > `重要通知:组件升级更新 2.0.0 后,支持日期+时间范围选择,组件 ui 将使用日历选择日期,ui 变化较大,同时支持 PC 和 移动端。此版本不向后兼容,不再支持单独的时间选择(type=time)及相关的 hide-second 属性(时间选可使用内置组件 picker)。若仍需使用旧版本,可在插件市场下载*非uni_modules版本*,旧版本将不再维护` 4 | 5 | ## DatetimePicker 时间选择器 6 | 7 | > **组件名:uni-datetime-picker** 8 | > 代码块: `uDatetimePicker` 9 | 10 | 11 | 该组件的优势是,支持**时间戳**输入和输出(起始时间、终止时间也支持时间戳),可**同时选择**日期和时间。 12 | 13 | 若只是需要单独选择日期和时间,不需要时间戳输入和输出,可使用原生的 picker 组件。 14 | 15 | **_点击 picker 默认值规则:_** 16 | 17 | - 若设置初始值 value, 会显示在 picker 显示框中 18 | - 若无初始值 value,则初始值 value 为当前本地时间 Date.now(), 但不会显示在 picker 显示框中 19 | 20 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-datetime-picker) 21 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 -------------------------------------------------------------------------------- /im-uniapp/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-notice-bar/changelog.md: -------------------------------------------------------------------------------- 1 | ## 1.2.1(2022-09-05) 2 | - 新增 属性 fontSize,可修改文字大小。 3 | ## 1.2.0(2021-11-19) 4 | - 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) 5 | - 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-notice-bar](https://uniapp.dcloud.io/component/uniui/uni-notice-bar) 6 | ## 1.1.1(2021-11-09) 7 | - 新增 提供组件设计资源,组件样式调整 8 | ## 1.1.0(2021-07-30) 9 | - 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) 10 | ## 1.0.9(2021-05-12) 11 | - 新增 组件示例地址 12 | ## 1.0.8(2021-04-21) 13 | - 优化 添加依赖 uni-icons, 导入后自动下载依赖 14 | ## 1.0.7(2021-02-05) 15 | - 优化 组件引用关系,通过uni_modules引用组件 16 | 17 | ## 1.0.6(2021-02-05) 18 | - 调整为uni_modules目录规范 19 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-scss/styles/tools/functions.scss: -------------------------------------------------------------------------------- 1 | // 合并 map 2 | @function map-deep-merge($parent-map, $child-map){ 3 | $result: $parent-map; 4 | @each $key, $child in $child-map { 5 | $parent-has-key: map-has-key($result, $key); 6 | $parent-value: map-get($result, $key); 7 | $parent-type: type-of($parent-value); 8 | $child-type: type-of($child); 9 | $parent-is-map: $parent-type == map; 10 | $child-is-map: $child-type == map; 11 | 12 | @if (not $parent-has-key) or ($parent-type != $child-type) or (not ($parent-is-map and $child-is-map)){ 13 | $result: map-merge($result, ( $key: $child )); 14 | }@else { 15 | $result: map-merge($result, ( $key: map-deep-merge($parent-value, $child) )); 16 | } 17 | } 18 | @return $result; 19 | }; 20 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-data-checkbox/readme.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## DataCheckbox 数据驱动的单选复选框 4 | > **组件名:uni-data-checkbox** 5 | > 代码块: `uDataCheckbox` 6 | 7 | 8 | 本组件是基于uni-app基础组件checkbox的封装。本组件要解决问题包括: 9 | 10 | 1. 数据绑定型组件:给本组件绑定一个data,会自动渲染一组候选内容。再以往,开发者需要编写不少代码实现类似功能 11 | 2. 自动的表单校验:组件绑定了data,且符合[uni-forms](https://ext.dcloud.net.cn/plugin?id=2773)组件的表单校验规范,搭配使用会自动实现表单校验 12 | 3. 本组件合并了单选多选 13 | 4. 本组件有若干风格选择,如普通的单选多选框、并列button风格、tag风格。开发者可以快速选择需要的风格。但作为一个封装组件,样式代码虽然不用自己写了,却会牺牲一定的样式自定义性 14 | 15 | 在uniCloud开发中,`DB Schema`中配置了enum枚举等类型后,在web控制台的[自动生成表单](https://uniapp.dcloud.io/uniCloud/schema?id=autocode)功能中,会自动生成``uni-data-checkbox``组件并绑定好data 16 | 17 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-data-checkbox) 18 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-fav/changelog.md: -------------------------------------------------------------------------------- 1 | ## 1.2.1(2022-05-30) 2 | - 新增 stat 属性 ,是否开启uni统计功能 3 | ## 1.2.0(2021-11-19) 4 | - 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) 5 | - 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-fav](https://uniapp.dcloud.io/component/uniui/uni-fav) 6 | ## 1.1.1(2021-08-24) 7 | - 新增 支持国际化 8 | ## 1.1.0(2021-07-13) 9 | - 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) 10 | ## 1.0.6(2021-05-12) 11 | - 新增 组件示例地址 12 | ## 1.0.5(2021-04-21) 13 | - 优化 添加依赖 uni-icons, 导入后自动下载依赖 14 | ## 1.0.4(2021-02-05) 15 | - 优化 组件引用关系,通过uni_modules引用组件 16 | ## 1.0.3(2021-02-05) 17 | - 优化 组件引用关系,通过uni_modules引用组件 18 | ## 1.0.2(2021-02-05) 19 | - 调整为uni_modules目录规范 20 | -------------------------------------------------------------------------------- /im-api-example/src/main/java/com/bx/api/session/SessionContext.java: -------------------------------------------------------------------------------- 1 | package com.bx.api.session; 2 | 3 | import jakarta.servlet.http.HttpServletRequest; 4 | import org.springframework.web.context.request.RequestContextHolder; 5 | import org.springframework.web.context.request.ServletRequestAttributes; 6 | 7 | /* 8 | * @Description 9 | * @Author Blue 10 | * @Date 2022/10/21 11 | */ 12 | public class SessionContext { 13 | 14 | public static UserSession getSession() { 15 | // 从请求上下文里获取Request对象 16 | ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); 17 | HttpServletRequest request = requestAttributes.getRequest(); 18 | return (UserSession) request.getAttribute("session"); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /im-api-example/src/main/java/com/bx/api/ApiApp.java: -------------------------------------------------------------------------------- 1 | package com.bx.api; 2 | 3 | import lombok.extern.slf4j.Slf4j; 4 | import org.mybatis.spring.annotation.MapperScan; 5 | import org.springframework.boot.SpringApplication; 6 | import org.springframework.boot.autoconfigure.SpringBootApplication; 7 | import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration; 8 | import org.springframework.context.annotation.EnableAspectJAutoProxy; 9 | 10 | @Slf4j 11 | @EnableAspectJAutoProxy(exposeProxy = true) 12 | @MapperScan(basePackages = {"com.bx.api.mapper"}) 13 | @SpringBootApplication(exclude = {SecurityAutoConfiguration.class})// 禁用secrity 14 | public class ApiApp { 15 | 16 | public static void main(String[] args) { 17 | SpringApplication.run(ApiApp.class, args); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /im-platform/src/main/java/com/bx/implatform/session/SessionContext.java: -------------------------------------------------------------------------------- 1 | package com.bx.implatform.session; 2 | 3 | import org.springframework.web.context.request.RequestContextHolder; 4 | import org.springframework.web.context.request.ServletRequestAttributes; 5 | 6 | import jakarta.servlet.http.HttpServletRequest; 7 | 8 | /* 9 | * @Description 10 | * @Author Blue 11 | * @Date 2022/10/21 12 | */ 13 | public class SessionContext { 14 | 15 | public static UserSession getSession() { 16 | // 从请求上下文里获取Request对象 17 | ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); 18 | HttpServletRequest request = requestAttributes.getRequest(); 19 | return (UserSession) request.getAttribute("session"); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-load-more/changelog.md: -------------------------------------------------------------------------------- 1 | ## 1.3.3(2022-01-20) 2 | - 新增 showText属性 ,是否显示文本 3 | ## 1.3.2(2022-01-19) 4 | - 修复 nvue 平台下不显示文本的bug 5 | ## 1.3.1(2022-01-19) 6 | - 修复 微信小程序平台样式选择器报警告的问题 7 | ## 1.3.0(2021-11-19) 8 | - 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) 9 | - 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-load-more](https://uniapp.dcloud.io/component/uniui/uni-load-more) 10 | ## 1.2.1(2021-08-24) 11 | - 新增 支持国际化 12 | ## 1.2.0(2021-07-30) 13 | - 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) 14 | ## 1.1.8(2021-05-12) 15 | - 新增 组件示例地址 16 | ## 1.1.7(2021-03-30) 17 | - 修复 uni-load-more 在首页使用时,h5 平台报 'uni is not defined' 的 bug 18 | ## 1.1.6(2021-02-05) 19 | - 调整为uni_modules目录规范 20 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-icons/changelog.md: -------------------------------------------------------------------------------- 1 | ## 1.3.5(2022-01-24) 2 | - 优化 size 属性可以传入不带单位的字符串数值 3 | ## 1.3.4(2022-01-24) 4 | - 优化 size 支持其他单位 5 | ## 1.3.3(2022-01-17) 6 | - 修复 nvue 有些图标不显示的bug,兼容老版本图标 7 | ## 1.3.2(2021-12-01) 8 | - 优化 示例可复制图标名称 9 | ## 1.3.1(2021-11-23) 10 | - 优化 兼容旧组件 type 值 11 | ## 1.3.0(2021-11-19) 12 | - 新增 更多图标 13 | - 优化 自定义图标使用方式 14 | - 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) 15 | - 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-icons](https://uniapp.dcloud.io/component/uniui/uni-icons) 16 | ## 1.1.7(2021-11-08) 17 | ## 1.2.0(2021-07-30) 18 | - 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) 19 | ## 1.1.5(2021-05-12) 20 | - 新增 组件示例地址 21 | ## 1.1.4(2021-02-05) 22 | - 调整为uni_modules目录规范 23 | -------------------------------------------------------------------------------- /im-platform/src/main/java/com/bx/implatform/dto/PrivateMessageDTO.java: -------------------------------------------------------------------------------- 1 | package com.bx.implatform.dto; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import org.hibernate.validator.constraints.Length; 6 | 7 | import jakarta.validation.constraints.NotEmpty; 8 | import jakarta.validation.constraints.NotNull; 9 | 10 | @Data 11 | @Schema(description = "私聊消息DTO") 12 | public class PrivateMessageDTO { 13 | 14 | @NotNull(message = "接收用户id不可为空") 15 | @Schema(description = "接收用户id") 16 | private Long recvId; 17 | 18 | 19 | @Length(max = 1024, message = "内容长度不得大于1024") 20 | @NotEmpty(message = "发送内容不可为空") 21 | @Schema(description = "发送内容") 22 | private String content; 23 | 24 | @NotNull(message = "消息类型不可为空") 25 | @Schema(description = "消息类型") 26 | private Integer type; 27 | 28 | } 29 | -------------------------------------------------------------------------------- /im-uniapp/store/index.js: -------------------------------------------------------------------------------- 1 | import chatStore from './chatStore.js'; 2 | import friendStore from './friendStore.js'; 3 | import userStore from './userStore.js'; 4 | import groupStore from './groupStore.js'; 5 | import { 6 | createStore 7 | } from 'vuex'; 8 | const store = createStore({ 9 | modules: { 10 | chatStore, 11 | friendStore, 12 | userStore, 13 | groupStore 14 | }, 15 | state: {}, 16 | actions: { 17 | load(context) { 18 | return this.dispatch("loadUser").then(() => { 19 | const promises = []; 20 | promises.push(this.dispatch("loadFriend")); 21 | promises.push(this.dispatch("loadGroup")); 22 | promises.push(this.dispatch("loadChat")); 23 | return Promise.all(promises); 24 | }) 25 | }, 26 | unload(context){ 27 | context.commit("clear"); 28 | } 29 | }, 30 | strict: true 31 | }) 32 | 33 | export default store; -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-transition/changelog.md: -------------------------------------------------------------------------------- 1 | ## 1.3.2(2023-05-04) 2 | - 修复 NVUE 平台报错的问题 3 | ## 1.3.1(2021-11-23) 4 | - 修复 init 方法初始化问题 5 | ## 1.3.0(2021-11-19) 6 | - 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) 7 | - 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-transition](https://uniapp.dcloud.io/component/uniui/uni-transition) 8 | ## 1.2.1(2021-09-27) 9 | - 修复 init 方法不生效的 Bug 10 | ## 1.2.0(2021-07-30) 11 | - 组件兼容 vue3,如何创建 vue3 项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) 12 | ## 1.1.1(2021-05-12) 13 | - 新增 示例地址 14 | - 修复 示例项目缺少组件的 Bug 15 | ## 1.1.0(2021-04-22) 16 | - 新增 通过方法自定义动画 17 | - 新增 custom-class 非 NVUE 平台支持自定义 class 定制样式 18 | - 优化 动画触发逻辑,使动画更流畅 19 | - 优化 支持单独的动画类型 20 | - 优化 文档示例 21 | ## 1.0.2(2021-02-05) 22 | - 调整为 uni_modules 目录规范 23 | -------------------------------------------------------------------------------- /im-commom/src/main/java/com/bx/imcommon/model/IMPrivateMessage.java: -------------------------------------------------------------------------------- 1 | package com.bx.imcommon.model; 2 | 3 | import com.bx.imcommon.enums.IMTerminalType; 4 | import lombok.Data; 5 | 6 | import java.util.List; 7 | 8 | 9 | @Data 10 | public class IMPrivateMessage { 11 | 12 | /** 13 | * 发送方 14 | */ 15 | private IMUserInfo sender; 16 | 17 | /** 18 | * 接收者id 19 | */ 20 | private Long recvId; 21 | 22 | 23 | /** 24 | * 接收者终端类型,默认全部 25 | */ 26 | private List recvTerminals = IMTerminalType.codes(); 27 | 28 | /** 29 | * 是否发送给自己的其他终端,默认true 30 | */ 31 | private Boolean sendToSelf = true; 32 | 33 | /** 34 | * 是否需要回推发送结果,默认true 35 | */ 36 | private Boolean sendResult = true; 37 | 38 | /** 39 | * 消息内容 40 | */ 41 | private T data; 42 | 43 | 44 | } 45 | -------------------------------------------------------------------------------- /im-ui/src/assets/style/global.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | html { 4 | height: 100%; 5 | overflow: hidden; 6 | 7 | } 8 | 9 | body { 10 | height: 100%; 11 | margin: 0; 12 | overflow: hidden; 13 | 14 | } 15 | 16 | section { 17 | height: 100%; 18 | } 19 | 20 | .el-dialog__body{ 21 | padding: 10px 15px !important; 22 | } 23 | 24 | ::-webkit-scrollbar { 25 | width: 6px; 26 | height: 1px; 27 | } 28 | 29 | ::-webkit-scrollbar-thumb { 30 | /*滚动条里面小方块*/ 31 | border-radius: 2px; 32 | -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2); 33 | background: #535353; 34 | } 35 | 36 | ::-webkit-scrollbar-track { 37 | /*滚动条里面轨道*/ 38 | -webkit-box-shadow: inset 0 0 5px transparent; 39 | border-radius: 2px; 40 | background: #ededed; 41 | } 42 | 43 | /*# sourceMappingURL=v-im.cssss.map */ 44 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "uni-datetime-picker.selectDate": "选择日期", 3 | "uni-datetime-picker.selectTime": "选择时间", 4 | "uni-datetime-picker.selectDateTime": "选择日期时间", 5 | "uni-datetime-picker.startDate": "开始日期", 6 | "uni-datetime-picker.endDate": "结束日期", 7 | "uni-datetime-picker.startTime": "开始时间", 8 | "uni-datetime-picker.endTime": "结束时间", 9 | "uni-datetime-picker.ok": "确定", 10 | "uni-datetime-picker.clear": "清除", 11 | "uni-datetime-picker.cancel": "取消", 12 | "uni-datetime-picker.year": "年", 13 | "uni-datetime-picker.month": "月", 14 | "uni-calender.SUN": "日", 15 | "uni-calender.MON": "一", 16 | "uni-calender.TUE": "二", 17 | "uni-calender.WED": "三", 18 | "uni-calender.THU": "四", 19 | "uni-calender.FRI": "五", 20 | "uni-calender.SAT": "六", 21 | "uni-calender.confirm": "确认" 22 | } -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-calendar/changelog.md: -------------------------------------------------------------------------------- 1 | ## 1.4.10(2023-04-10) 2 | - 修复 某些情况 monthSwitch 未触发的Bug 3 | ## 1.4.9(2023-02-02) 4 | - 修复 某些情况切换月份错误的Bug 5 | ## 1.4.8(2023-01-30) 6 | - 修复 某些情况切换月份错误的Bug [详情](https://ask.dcloud.net.cn/question/161964) 7 | ## 1.4.7(2022-09-16) 8 | - 优化 支持使用 uni-scss 控制主题色 9 | ## 1.4.6(2022-09-08) 10 | - 修复 表头年月切换,导致改变当前日期为选择月1号,且未触发change事件的Bug 11 | ## 1.4.5(2022-02-25) 12 | - 修复 条件编译 nvue 不支持的 css 样式的Bug 13 | ## 1.4.4(2022-02-25) 14 | - 修复 条件编译 nvue 不支持的 css 样式的Bug 15 | ## 1.4.3(2021-09-22) 16 | - 修复 startDate、 endDate 属性失效的Bug 17 | ## 1.4.2(2021-08-24) 18 | - 新增 支持国际化 19 | ## 1.4.1(2021-08-05) 20 | - 修复 弹出层被 tabbar 遮盖的Bug 21 | ## 1.4.0(2021-07-30) 22 | - 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) 23 | ## 1.3.16(2021-05-12) 24 | - 新增 组件示例地址 25 | ## 1.3.15(2021-02-04) 26 | - 调整为uni_modules目录规范 27 | -------------------------------------------------------------------------------- /im-platform/src/main/java/com/bx/implatform/config/MinIoClientConfig.java: -------------------------------------------------------------------------------- 1 | package com.bx.implatform.config; 2 | 3 | import io.minio.MinioClient; 4 | import org.springframework.beans.factory.annotation.Value; 5 | import org.springframework.context.annotation.Bean; 6 | import org.springframework.context.annotation.Configuration; 7 | 8 | @Configuration 9 | public class MinIoClientConfig { 10 | 11 | @Value("${minio.endpoint}") 12 | private String endpoint; 13 | @Value("${minio.accessKey}") 14 | private String accessKey; 15 | @Value("${minio.secretKey}") 16 | private String secretKey; 17 | 18 | 19 | @Bean 20 | public MinioClient minioClient() { 21 | // 注入minio 客户端 22 | return MinioClient.builder() 23 | .endpoint(endpoint) 24 | .credentials(accessKey, secretKey) 25 | .build(); 26 | } 27 | } -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "uni-datetime-picker.selectDate": "選擇日期", 3 | "uni-datetime-picker.selectTime": "選擇時間", 4 | "uni-datetime-picker.selectDateTime": "選擇日期時間", 5 | "uni-datetime-picker.startDate": "開始日期", 6 | "uni-datetime-picker.endDate": "結束日期", 7 | "uni-datetime-picker.startTime": "開始时间", 8 | "uni-datetime-picker.endTime": "結束时间", 9 | "uni-datetime-picker.ok": "確定", 10 | "uni-datetime-picker.clear": "清除", 11 | "uni-datetime-picker.cancel": "取消", 12 | "uni-datetime-picker.year": "年", 13 | "uni-datetime-picker.month": "月", 14 | "uni-calender.SUN": "日", 15 | "uni-calender.MON": "一", 16 | "uni-calender.TUE": "二", 17 | "uni-calender.WED": "三", 18 | "uni-calender.THU": "四", 19 | "uni-calender.FRI": "五", 20 | "uni-calender.SAT": "六", 21 | "uni-calender.confirm": "確認" 22 | } -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-forms/readme.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Forms 表单 4 | 5 | > **组件名:uni-forms** 6 | > 代码块: `uForms`、`uni-forms-item` 7 | > 关联组件:`uni-forms-item`、`uni-easyinput`、`uni-data-checkbox`、`uni-group`。 8 | 9 | 10 | uni-app的内置组件已经有了 `
`组件,用于提交表单内容。 11 | 12 | 然而几乎每个表单都需要做表单验证,为了方便做表单验证,减少重复开发,`uni ui` 又基于 ``组件封装了 ``组件,内置了表单验证功能。 13 | 14 | `` 提供了 `rules`属性来描述校验规则、``子组件来包裹具体的表单项,以及给原生或三方组件提供了 `binddata()` 来设置表单值。 15 | 16 | 每个要校验的表单项,不管input还是checkbox,都必须放在``组件中,且一个``组件只能放置一个表单项。 17 | 18 | ``组件内部预留了显示error message的区域,默认是在表单项的底部。 19 | 20 | 另外,``组件下面的各个表单项,可以通过``包裹为不同的分组。同一``下的不同表单项目将聚拢在一起,同其他group保持垂直间距。``仅影响视觉效果。 21 | 22 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-forms) 23 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-tag/changelog.md: -------------------------------------------------------------------------------- 1 | ## 2.1.0(2021-11-19) 2 | - 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) 3 | - 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-tag](https://uniapp.dcloud.io/component/uniui/uni-tag) 4 | ## 2.0.0(2021-11-09) 5 | - 新增 提供组件设计资源,组件样式调整 6 | - 移除 插槽 7 | - 移除 type 属性的 royal 选项 8 | ## 1.1.1(2021-08-11) 9 | - type 不是 default 时,size 为 small 字体大小显示不正确 10 | ## 1.1.0(2021-07-30) 11 | - 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) 12 | ## 1.0.7(2021-06-18) 13 | - 修复 uni-tag 在字节跳动小程序上 css 类名编译错误的 bug 14 | ## 1.0.6(2021-06-04) 15 | - 修复 未定义 sass 变量 "$uni-color-royal" 的bug 16 | ## 1.0.5(2021-05-10) 17 | - 修复 royal 类型无效的bug 18 | - 修复 uni-tag 宽度不自适应的bug 19 | - 新增 uni-tag 支持属性 custom-style 自定义样式 20 | ## 1.0.4(2021-02-05) 21 | - 调整为uni_modules目录规范 22 | -------------------------------------------------------------------------------- /im-api-example/src/main/java/com/bx/api/vo/dto/RegisterDTO.java: -------------------------------------------------------------------------------- 1 | package com.bx.api.vo.dto; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import jakarta.validation.constraints.NotEmpty; 5 | import lombok.Data; 6 | import org.hibernate.validator.constraints.Length; 7 | 8 | @Data 9 | @Schema(description = "用户注册DTO") 10 | public class RegisterDTO { 11 | 12 | @Length(max = 64, message = "用户名不能大于64字符") 13 | @NotEmpty(message = "用户名不可为空") 14 | @Schema(description = "用户名") 15 | private String userName; 16 | 17 | @Length(min = 5, max = 20, message = "密码长度必须在5-20个字符之间") 18 | @NotEmpty(message = "用户密码不可为空") 19 | @Schema(description = "用户密码") 20 | private String password; 21 | 22 | @Length(max = 64, message = "昵称不能大于64字符") 23 | @NotEmpty(message = "用户昵称不可为空") 24 | @Schema(description = "用户昵称") 25 | private String nickName; 26 | 27 | 28 | } 29 | -------------------------------------------------------------------------------- /im-ui/src/store/userStore.js: -------------------------------------------------------------------------------- 1 | import {USER_STATE} from "../api/enums.js" 2 | import http from '../api/httpRequest.js' 3 | 4 | export default { 5 | 6 | state: { 7 | userInfo: { 8 | 9 | }, 10 | state: USER_STATE.FREE 11 | }, 12 | 13 | mutations: { 14 | setUserInfo(state, userInfo) { 15 | state.userInfo = userInfo 16 | }, 17 | setUserState(state, userState) { 18 | state.state = userState; 19 | }, 20 | clear(state){ 21 | state.userInfo = {}; 22 | state.state = USER_STATE.FREE; 23 | } 24 | }, 25 | actions:{ 26 | loadUser(context){ 27 | return new Promise((resolve, reject) => { 28 | http({ 29 | url: '/user/self', 30 | method: 'GET' 31 | }).then((userInfo) => { 32 | context.commit("setUserInfo",userInfo); 33 | resolve(); 34 | }).catch((res)=>{ 35 | reject(res); 36 | }); 37 | }) 38 | } 39 | } 40 | } -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-countdown/changelog.md: -------------------------------------------------------------------------------- 1 | ## 1.2.2(2022-01-19) 2 | - 修复 在微信小程序中样式不生效的bug 3 | ## 1.2.1(2022-01-18) 4 | - 新增 update 方法 ,在动态更新时间后,刷新组件 5 | ## 1.2.0(2021-11-19) 6 | - 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) 7 | - 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-countdown](https://uniapp.dcloud.io/component/uniui/uni-countdown) 8 | ## 1.1.3(2021-10-18) 9 | - 重构 10 | - 新增 font-size 支持自定义字体大小 11 | ## 1.1.2(2021-08-24) 12 | - 新增 支持国际化 13 | ## 1.1.1(2021-07-30) 14 | - 优化 vue3下小程序事件警告的问题 15 | ## 1.1.0(2021-07-30) 16 | - 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) 17 | ## 1.0.5(2021-06-18) 18 | - 修复 uni-countdown 重复赋值跳两秒的 bug 19 | ## 1.0.4(2021-05-12) 20 | - 新增 组件示例地址 21 | ## 1.0.3(2021-05-08) 22 | - 修复 uni-countdown 不能控制倒计时的 bug 23 | ## 1.0.2(2021-02-04) 24 | - 调整为uni_modules目录规范 25 | -------------------------------------------------------------------------------- /im-commom/src/main/java/com/bx/imcommon/model/IMGroupMessage.java: -------------------------------------------------------------------------------- 1 | package com.bx.imcommon.model; 2 | 3 | import com.bx.imcommon.enums.IMTerminalType; 4 | import lombok.Data; 5 | 6 | import java.util.LinkedList; 7 | import java.util.List; 8 | 9 | @Data 10 | public class IMGroupMessage { 11 | 12 | /** 13 | * 发送方 14 | */ 15 | private IMUserInfo sender; 16 | 17 | /** 18 | * 接收者id列表(群成员列表,为空则不会推送) 19 | */ 20 | private List recvIds = new LinkedList<>(); 21 | 22 | 23 | /** 24 | * 接收者终端类型,默认全部 25 | */ 26 | private List recvTerminals = IMTerminalType.codes(); 27 | 28 | /** 29 | * 是否发送给自己的其他终端,默认true 30 | */ 31 | private Boolean sendToSelf = true; 32 | 33 | /** 34 | * 是否需要回推发送结果,默认true 35 | */ 36 | private Boolean sendResult = true; 37 | 38 | /** 39 | * 消息内容 40 | */ 41 | private T data; 42 | 43 | 44 | } 45 | -------------------------------------------------------------------------------- /im-server/src/main/java/com/bx/imserver/netty/ws/endecode/MessageProtocolDecoder.java: -------------------------------------------------------------------------------- 1 | package com.bx.imserver.netty.ws.endecode; 2 | 3 | import com.bx.imcommon.model.IMSendInfo; 4 | import com.fasterxml.jackson.databind.ObjectMapper; 5 | import io.netty.channel.ChannelHandlerContext; 6 | import io.netty.handler.codec.MessageToMessageDecoder; 7 | import io.netty.handler.codec.http.websocketx.TextWebSocketFrame; 8 | 9 | import java.util.List; 10 | 11 | public class MessageProtocolDecoder extends MessageToMessageDecoder { 12 | 13 | @Override 14 | protected void decode(ChannelHandlerContext channelHandlerContext, TextWebSocketFrame textWebSocketFrame, List list) throws Exception { 15 | ObjectMapper objectMapper = new ObjectMapper(); 16 | IMSendInfo sendInfo = objectMapper.readValue(textWebSocketFrame.text(), IMSendInfo.class); 17 | list.add(sendInfo); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-rate/changelog.md: -------------------------------------------------------------------------------- 1 | ## 1.3.1(2022-02-25) 2 | - 修复 条件判断 `NaN` 错误的 bug 3 | ## 1.3.0(2021-11-19) 4 | - 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) 5 | - 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-rate](https://uniapp.dcloud.io/component/uniui/uni-rate) 6 | ## 1.2.2(2021-09-10) 7 | - 优化 默认值修改为 0 颗星 8 | ## 1.2.1(2021-07-30) 9 | - 优化 vue3下事件警告的问题 10 | ## 1.2.0(2021-07-13) 11 | - 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) 12 | ## 1.1.2(2021-05-12) 13 | - 新增 组件示例地址 14 | ## 1.1.1(2021-04-21) 15 | - 修复 布局变化后 uni-rate 星星计算不准确的 bug 16 | - 优化 添加依赖 uni-icons, 导入 uni-rate 自动下载依赖 17 | ## 1.1.0(2021-04-16) 18 | - 修复 uni-rate 属性 margin 值为 string 组件失效的 bug 19 | 20 | ## 1.0.9(2021-02-05) 21 | - 优化 组件引用关系,通过uni_modules引用组件 22 | 23 | ## 1.0.8(2021-02-05) 24 | - 调整为uni_modules目录规范 25 | - 支持 pc 端 26 | -------------------------------------------------------------------------------- /im-server/src/main/java/com/bx/imserver/netty/ws/endecode/MessageProtocolEncoder.java: -------------------------------------------------------------------------------- 1 | package com.bx.imserver.netty.ws.endecode; 2 | 3 | import com.bx.imcommon.model.IMSendInfo; 4 | import com.fasterxml.jackson.databind.ObjectMapper; 5 | import io.netty.channel.ChannelHandlerContext; 6 | import io.netty.handler.codec.MessageToMessageEncoder; 7 | import io.netty.handler.codec.http.websocketx.TextWebSocketFrame; 8 | 9 | import java.util.List; 10 | 11 | public class MessageProtocolEncoder extends MessageToMessageEncoder { 12 | 13 | @Override 14 | protected void encode(ChannelHandlerContext channelHandlerContext, IMSendInfo sendInfo, List list) throws Exception { 15 | ObjectMapper objectMapper = new ObjectMapper(); 16 | String text = objectMapper.writeValueAsString(sendInfo); 17 | TextWebSocketFrame frame = new TextWebSocketFrame(text); 18 | list.add(frame); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "uni-datetime-picker.selectDate": "select date", 3 | "uni-datetime-picker.selectTime": "select time", 4 | "uni-datetime-picker.selectDateTime": "select date and time", 5 | "uni-datetime-picker.startDate": "start date", 6 | "uni-datetime-picker.endDate": "end date", 7 | "uni-datetime-picker.startTime": "start time", 8 | "uni-datetime-picker.endTime": "end time", 9 | "uni-datetime-picker.ok": "ok", 10 | "uni-datetime-picker.clear": "clear", 11 | "uni-datetime-picker.cancel": "cancel", 12 | "uni-datetime-picker.year": "-", 13 | "uni-datetime-picker.month": "", 14 | "uni-calender.MON": "MON", 15 | "uni-calender.TUE": "TUE", 16 | "uni-calender.WED": "WED", 17 | "uni-calender.THU": "THU", 18 | "uni-calender.FRI": "FRI", 19 | "uni-calender.SAT": "SAT", 20 | "uni-calender.SUN": "SUN", 21 | "uni-calender.confirm": "confirm" 22 | } 23 | -------------------------------------------------------------------------------- /im-platform/src/main/java/com/bx/implatform/dto/LoginDTO.java: -------------------------------------------------------------------------------- 1 | package com.bx.implatform.dto; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import jakarta.validation.constraints.Max; 5 | import jakarta.validation.constraints.Min; 6 | import jakarta.validation.constraints.NotEmpty; 7 | import jakarta.validation.constraints.NotNull; 8 | import lombok.Data; 9 | 10 | @Data 11 | @Schema(description = "用户登录DTO") 12 | public class LoginDTO { 13 | 14 | @Max(value = 2, message = "登录终端类型取值范围:0,2") 15 | @Min(value = 0, message = "登录终端类型取值范围:0,2") 16 | @NotNull(message = "登录终端类型不可为空") 17 | @Schema(description = "登录终端 0:web 1:app 2:pc") 18 | private Integer terminal; 19 | 20 | @NotEmpty(message = "用户名不可为空") 21 | @Schema(description = "用户名") 22 | private String userName; 23 | 24 | @NotEmpty(message = "用户密码不可为空") 25 | @Schema(description = "用户密码") 26 | private String password; 27 | 28 | } 29 | -------------------------------------------------------------------------------- /im-uniapp/store/userStore.js: -------------------------------------------------------------------------------- 1 | import {USER_STATE} from "../common/enums" 2 | import http from '../common/request' 3 | 4 | 5 | export default { 6 | state: { 7 | userInfo: {}, 8 | state: USER_STATE.FREE 9 | }, 10 | 11 | mutations: { 12 | setUserInfo(state, userInfo) { 13 | // 使用深拷贝方式,否则小程序页面不刷新 14 | Object.assign(state.userInfo, userInfo); 15 | }, 16 | setUserState(state, userState) { 17 | state.state = userState; 18 | }, 19 | clear(state){ 20 | state.userInfo = {}; 21 | state.state = USER_STATE.FREE; 22 | } 23 | }, 24 | actions:{ 25 | loadUser(context){ 26 | return new Promise((resolve, reject) => { 27 | http({ 28 | url: '/user/self', 29 | method: 'GET' 30 | }).then((userInfo) => { 31 | console.log(userInfo) 32 | context.commit("setUserInfo",userInfo); 33 | resolve(); 34 | }).catch((res)=>{ 35 | reject(res); 36 | }); 37 | }) 38 | } 39 | } 40 | 41 | } -------------------------------------------------------------------------------- /im-platform/src/main/java/com/bx/implatform/contant/RedisKey.java: -------------------------------------------------------------------------------- 1 | package com.bx.implatform.contant; 2 | 3 | public final class RedisKey { 4 | 5 | private RedisKey() { 6 | } 7 | 8 | /** 9 | * 已读群聊消息位置(已读最大id) 10 | */ 11 | public static final String IM_GROUP_READED_POSITION = "im:readed:group:position"; 12 | /** 13 | * webrtc 会话信息 14 | */ 15 | public static final String IM_WEBRTC_SESSION = "im:webrtc:session"; 16 | /** 17 | * 缓存前缀 18 | */ 19 | public static final String IM_CACHE = "im:cache:"; 20 | /** 21 | * 缓存是否好友:bool 22 | */ 23 | public static final String IM_CACHE_FRIEND = IM_CACHE + "friend"; 24 | /** 25 | * 缓存群聊信息 26 | */ 27 | public static final String IM_CACHE_GROUP = IM_CACHE + "group"; 28 | /** 29 | * 缓存群聊成员id 30 | */ 31 | public static final String IM_CACHE_GROUP_MEMBER_ID = IM_CACHE + "group_member_ids"; 32 | 33 | } 34 | -------------------------------------------------------------------------------- /im-platform/src/main/java/com/bx/implatform/IMPlatformApp.java: -------------------------------------------------------------------------------- 1 | package com.bx.implatform; 2 | 3 | import lombok.extern.slf4j.Slf4j; 4 | import org.mybatis.spring.annotation.MapperScan; 5 | import org.springframework.boot.SpringApplication; 6 | import org.springframework.boot.autoconfigure.SpringBootApplication; 7 | import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration; 8 | import org.springframework.context.annotation.ComponentScan; 9 | import org.springframework.context.annotation.EnableAspectJAutoProxy; 10 | 11 | @Slf4j 12 | @EnableAspectJAutoProxy(exposeProxy = true) 13 | @MapperScan(basePackages = {"com.bx.implatform.mapper"}) 14 | @SpringBootApplication(exclude = {SecurityAutoConfiguration.class})// 禁用secrity 15 | @ComponentScan("com.bx") 16 | public class IMPlatformApp { 17 | 18 | public static void main(String[] args) { 19 | SpringApplication.run(IMPlatformApp.class, args); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /im-api-example/src/main/java/com/bx/api/config/MinIoClientConfig.java: -------------------------------------------------------------------------------- 1 | package com.bx.api.config;//package com.bx.api.config; 2 | // 3 | //import io.minio.MinioClient; 4 | //import org.springframework.beans.factory.annotation.Value; 5 | //import org.springframework.context.annotation.Bean; 6 | //import org.springframework.context.annotation.Configuration; 7 | // 8 | //@Configuration 9 | //public class MinIoClientConfig { 10 | // 11 | // @Value("${minio.endpoint}") 12 | // private String endpoint; 13 | // @Value("${minio.accessKey}") 14 | // private String accessKey; 15 | // @Value("${minio.secretKey}") 16 | // private String secretKey; 17 | // 18 | // 19 | // @Bean 20 | // public MinioClient minioClient() { 21 | // // 注入minio 客户端 22 | // return MinioClient.builder() 23 | // .endpoint(endpoint) 24 | // .credentials(accessKey, secretKey) 25 | // .build(); 26 | // } 27 | //} 28 | -------------------------------------------------------------------------------- /im-platform/src/main/java/com/bx/implatform/dto/RegisterDTO.java: -------------------------------------------------------------------------------- 1 | package com.bx.implatform.dto; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import io.swagger.v3.oas.annotations.media.Schema; 5 | import lombok.Data; 6 | import org.hibernate.validator.constraints.Length; 7 | 8 | import jakarta.validation.constraints.NotEmpty; 9 | 10 | @Data 11 | @Schema(description = "用户注册DTO") 12 | public class RegisterDTO { 13 | 14 | @Length(max = 64, message = "用户名不能大于64字符") 15 | @NotEmpty(message = "用户名不可为空") 16 | @Schema(description = "用户名") 17 | private String userName; 18 | 19 | @Length(min = 5, max = 20, message = "密码长度必须在5-20个字符之间") 20 | @NotEmpty(message = "用户密码不可为空") 21 | @Schema(description = "用户密码") 22 | private String password; 23 | 24 | @Length(max = 64, message = "昵称不能大于64字符") 25 | @NotEmpty(message = "用户昵称不可为空") 26 | @Schema(description = "用户昵称") 27 | private String nickName; 28 | 29 | 30 | } 31 | -------------------------------------------------------------------------------- /im-commom/src/main/java/com/bx/imcommon/contant/IMRedisKey.java: -------------------------------------------------------------------------------- 1 | package com.bx.imcommon.contant; 2 | 3 | public final class IMRedisKey { 4 | 5 | private IMRedisKey() {} 6 | 7 | /** 8 | * im-server最大id,从0开始递增 9 | */ 10 | public static final String IM_MAX_SERVER_ID = "im:max_server_id"; 11 | /** 12 | * 用户ID所连接的IM-server的ID 13 | */ 14 | public static final String IM_USER_SERVER_ID = "im:user:server_id"; 15 | /** 16 | * 未读私聊消息队列 17 | */ 18 | public static final String IM_MESSAGE_PRIVATE_QUEUE = "im:message:private"; 19 | /** 20 | * 未读群聊消息队列 21 | */ 22 | public static final String IM_MESSAGE_GROUP_QUEUE = "im:message:group"; 23 | /** 24 | * 私聊消息发送结果队列 25 | */ 26 | public static final String IM_RESULT_PRIVATE_QUEUE = "im:result:private"; 27 | /** 28 | * 群聊消息发送结果队列 29 | */ 30 | public static final String IM_RESULT_GROUP_QUEUE = "im:result:group"; 31 | 32 | } 33 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-data-picker/readme.md: -------------------------------------------------------------------------------- 1 | ## DataPicker 级联选择 2 | > **组件名:uni-data-picker** 3 | > 代码块: `uDataPicker` 4 | > 关联组件:`uni-data-pickerview`、`uni-load-more`。 5 | 6 | 7 | `` 是一个选择类[datacom组件](https://uniapp.dcloud.net.cn/component/datacom)。 8 | 9 | 支持单列、和多列级联选择。列数没有限制,如果屏幕显示不全,顶部tab区域会左右滚动。 10 | 11 | 候选数据支持一次性加载完毕,也支持懒加载,比如示例图中,选择了“北京”后,动态加载北京的区县数据。 12 | 13 | `` 组件尤其适用于地址选择、分类选择等选择类。 14 | 15 | `` 支持本地数据、云端静态数据(json),uniCloud云数据库数据。 16 | 17 | `` 可以通过JQL直连uniCloud云数据库,配套[DB Schema](https://uniapp.dcloud.net.cn/uniCloud/schema),可在schema2code中自动生成前端页面,还支持服务器端校验。 18 | 19 | 在uniCloud数据表中新建表“uni-id-address”和“opendb-city-china”,这2个表的schema自带foreignKey关联。在“uni-id-address”表的表结构页面使用schema2code生成前端页面,会自动生成地址管理的维护页面,自动从“opendb-city-china”表包含的中国所有省市区信息里选择地址。 20 | 21 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-data-picker) 22 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-data-select/changelog.md: -------------------------------------------------------------------------------- 1 | ## 1.0.6(2023-04-12) 2 | - 修复 微信小程序点击时会改变背景颜色的 bug 3 | ## 1.0.5(2023-02-03) 4 | - 修复 禁用时会显示清空按钮 5 | ## 1.0.4(2023-02-02) 6 | - 优化 查询条件短期内多次变更只查询最后一次变更后的结果 7 | - 调整 内部缓存键名调整为 uni-data-select-lastSelectedValue 8 | ## 1.0.3(2023-01-16) 9 | - 修复 不关联服务空间报错的问题 10 | ## 1.0.2(2023-01-14) 11 | - 新增 属性 `format` 可用于格式化显示选项内容 12 | ## 1.0.1(2022-12-06) 13 | - 修复 当where变化时,数据不会自动更新的问题 14 | ## 0.1.9(2022-09-05) 15 | - 修复 微信小程序下拉框出现后选择会点击到蒙板后面的输入框 16 | ## 0.1.8(2022-08-29) 17 | - 修复 点击的位置不准确 18 | ## 0.1.7(2022-08-12) 19 | - 新增 支持 disabled 属性 20 | ## 0.1.6(2022-07-06) 21 | - 修复 pc端宽度异常的bug 22 | ## 0.1.5 23 | - 修复 pc端宽度异常的bug 24 | ## 0.1.4(2022-07-05) 25 | - 优化 显示样式 26 | ## 0.1.3(2022-06-02) 27 | - 修复 localdata 赋值不生效的 bug 28 | - 新增 支持 uni.scss 修改颜色 29 | - 新增 支持选项禁用(数据选项设置 disabled: true 即禁用) 30 | ## 0.1.2(2022-05-08) 31 | - 修复 当 value 为 0 时选择不生效的 bug 32 | ## 0.1.1(2022-05-07) 33 | - 新增 记住上次的选项(仅 collection 存在时有效) 34 | ## 0.1.0(2022-04-22) 35 | - 初始化 36 | -------------------------------------------------------------------------------- /im-api-example/src/main/java/com/bx/api/util/FileUtil.java: -------------------------------------------------------------------------------- 1 | package com.bx.api.util; 2 | 3 | public final class FileUtil { 4 | 5 | private FileUtil() { 6 | } 7 | 8 | /** 9 | * 获取文件后缀 10 | * 11 | * @param fileName 文件名 12 | * @return boolean 13 | */ 14 | public static String getFileExtension(String fileName) { 15 | return fileName.substring(fileName.lastIndexOf(".") + 1); 16 | } 17 | 18 | /** 19 | * 判断文件是否图片类型 20 | * 21 | * @param fileName 文件名 22 | * @return boolean 23 | */ 24 | public static boolean isImage(String fileName) { 25 | String extension = getFileExtension(fileName); 26 | String[] imageExtension = new String[]{"jpeg", "jpg", "bmp", "png", "webp", "gif"}; 27 | for (String e : imageExtension) { 28 | if (extension.toLowerCase().equals(e)) { 29 | return true; 30 | } 31 | } 32 | 33 | return false; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /im-platform/src/main/java/com/bx/implatform/filter/CacheFilter.java: -------------------------------------------------------------------------------- 1 | package com.bx.implatform.filter; 2 | 3 | import jakarta.servlet.*; 4 | import jakarta.servlet.annotation.WebFilter; 5 | import org.springframework.boot.web.servlet.ServletComponentScan; 6 | import org.springframework.stereotype.Component; 7 | 8 | import jakarta.servlet.http.HttpServletRequest; 9 | import java.io.IOException; 10 | 11 | @Component 12 | @ServletComponentScan 13 | @WebFilter(urlPatterns = "/*", filterName = "xssFilter") 14 | public class CacheFilter implements Filter { 15 | 16 | @Override 17 | public void init(FilterConfig filterConfig) { 18 | } 19 | 20 | @Override 21 | public void destroy() { 22 | } 23 | 24 | @Override 25 | public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { 26 | chain.doFilter(new CacheHttpServletRequestWrapper((HttpServletRequest) request), response); 27 | } 28 | 29 | } -------------------------------------------------------------------------------- /im-platform/src/main/java/com/bx/implatform/util/FileUtil.java: -------------------------------------------------------------------------------- 1 | package com.bx.implatform.util; 2 | 3 | public final class FileUtil { 4 | 5 | private FileUtil() { 6 | } 7 | 8 | /** 9 | * 获取文件后缀 10 | * 11 | * @param fileName 文件名 12 | * @return boolean 13 | */ 14 | public static String getFileExtension(String fileName) { 15 | return fileName.substring(fileName.lastIndexOf(".") + 1); 16 | } 17 | 18 | /** 19 | * 判断文件是否图片类型 20 | * 21 | * @param fileName 文件名 22 | * @return boolean 23 | */ 24 | public static boolean isImage(String fileName) { 25 | String extension = getFileExtension(fileName); 26 | String[] imageExtension = new String[]{"jpeg", "jpg", "bmp", "png", "webp", "gif"}; 27 | for (String e : imageExtension) { 28 | if (extension.toLowerCase().equals(e)) { 29 | return true; 30 | } 31 | } 32 | 33 | return false; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /im-ui/src/store/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import Vuex from 'vuex'; 3 | import chatStore from './chatStore.js'; 4 | import friendStore from './friendStore.js'; 5 | import userStore from './userStore.js'; 6 | import groupStore from './groupStore.js'; 7 | import uiStore from './uiStore.js'; 8 | 9 | Vue.use(Vuex) 10 | 11 | export default new Vuex.Store({ 12 | modules: {chatStore,friendStore,userStore,groupStore,uiStore}, 13 | state: {}, 14 | mutations: { 15 | }, 16 | actions: { 17 | load(context) { 18 | console.log("load") 19 | return this.dispatch("loadUser").then(() => { 20 | const promises = []; 21 | promises.push(this.dispatch("loadFriend")); 22 | promises.push(this.dispatch("loadGroup")); 23 | promises.push(this.dispatch("loadChat")); 24 | return Promise.all(promises); 25 | }) 26 | }, 27 | unload(context){ 28 | context.commit("clear"); 29 | } 30 | }, 31 | strict: process.env.NODE_ENV !== 'production' 32 | }) 33 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-table/changelog.md: -------------------------------------------------------------------------------- 1 | ## 1.2.3(2023-03-28) 2 | - 修复 在vue3模式下可能会出现错误的问题 3 | ## 1.2.2(2022-11-29) 4 | - 优化 主题样式 5 | ## 1.2.1(2022-06-06) 6 | - 修复 微信小程序存在无使用组件的问题 7 | ## 1.2.0(2021-11-19) 8 | - 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) 9 | - 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-table](https://uniapp.dcloud.io/component/uniui/uni-table) 10 | ## 1.1.0(2021-07-30) 11 | - 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) 12 | ## 1.0.7(2021-07-08) 13 | - 新增 uni-th 支持 date 日期筛选范围 14 | ## 1.0.6(2021-07-05) 15 | - 新增 uni-th 支持 range 筛选范围 16 | ## 1.0.5(2021-06-28) 17 | - 新增 uni-th 筛选功能 18 | ## 1.0.4(2021-05-12) 19 | - 新增 示例地址 20 | - 修复 示例项目缺少组件的Bug 21 | ## 1.0.3(2021-04-16) 22 | - 新增 sortable 属性,是否开启单列排序 23 | - 优化 表格多选逻辑 24 | ## 1.0.2(2021-03-22) 25 | - uni-tr 添加 disabled 属性,用于 type=selection 时,设置某行是否可由全选按钮控制 26 | ## 1.0.1(2021-02-05) 27 | - 调整为uni_modules目录规范 28 | -------------------------------------------------------------------------------- /im-api-example/src/main/java/com/bx/api/enums/ResultCode.java: -------------------------------------------------------------------------------- 1 | package com.bx.api.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 响应码枚举 8 | * 9 | * @author Blue 10 | * @date 2020/10/19 11 | **/ 12 | @Getter 13 | @AllArgsConstructor 14 | public enum ResultCode { 15 | /** 16 | * 成功 17 | */ 18 | SUCCESS(200, "成功"), 19 | /** 20 | * 未登录 21 | */ 22 | NO_LOGIN(400, "未登录"), 23 | /** 24 | * token无效或已过期 25 | */ 26 | INVALID_TOKEN(401, "token无效或已过期"), 27 | /** 28 | * 系统繁忙,请稍后再试 29 | */ 30 | PROGRAM_ERROR(500, "系统繁忙,请稍后再试"), 31 | /** 32 | * 密码不正确 33 | */ 34 | PASSWOR_ERROR(10001, "密码不正确"), 35 | /** 36 | * 该用户名已注册 37 | */ 38 | USERNAME_ALREADY_REGISTER(10003, "该用户名已注册"), 39 | /** 40 | * 请不要输入非法内容 41 | */ 42 | XSS_PARAM_ERROR(10004, "请不要输入非法内容"); 43 | 44 | 45 | private final int code; 46 | private final String msg; 47 | 48 | 49 | } 50 | 51 | -------------------------------------------------------------------------------- /im-uniapp/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "uni-app": { 3 | "scripts": { 4 | "dev-h5": { 5 | "title": "开发环境-H5", 6 | "browser":"chrome", 7 | "env": { 8 | "UNI_PLATFORM": "h5", 9 | "BASE_URL": "/api", 10 | "WS_URL": "ws://127.0.0.1:8878/im" 11 | } 12 | }, 13 | "dev-wx-mini": { 14 | "title": "开发环境-微信小程序", 15 | "env": { 16 | "UNI_PLATFORM": "mp-weixin", 17 | "BASE_URL": "http://127.0.0.1:8888", 18 | "WS_URL": "ws://127.0.0.1:8878/im" 19 | } 20 | }, 21 | "prod-h5": { 22 | "title": "正式环境-H5", 23 | "browser":"chrome", 24 | "env": { 25 | "UNI_PLATFORM": "h5", 26 | "BASE_URL": "https://www.boxim.online/api", 27 | "WS_URL": "wss://www.boxim.online:81/im" 28 | } 29 | }, 30 | "prod-wx-mini": { 31 | "title": "正式环境-微信小程序", 32 | "env": { 33 | "UNI_PLATFORM": "mp-weixin", 34 | "BASE_URL": "https://www.boxim.online/api", 35 | "WS_URL": "wss://www.boxim.online:81/im" 36 | } 37 | } 38 | } 39 | } 40 | } -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-pagination/changelog.md: -------------------------------------------------------------------------------- 1 | ## 1.2.4(2022-09-19) 2 | - 修复,未对主题色设置默认色,导致未引入 uni-scss 变量文件报错。 3 | - 修复,未对移动端当前页文字做主题色适配。 4 | ## 1.2.3(2022-09-15) 5 | - 修复未使用 uni-scss 主题色的 bug。 6 | ## 1.2.2(2022-07-06) 7 | - 修复 es 语言 i18n 错误 8 | ## 1.2.1(2021-11-22) 9 | - 修复 vue3中某些scss变量无法找到的问题 10 | ## 1.2.0(2021-11-19) 11 | - 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) 12 | - 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-pagination](https://uniapp.dcloud.io/component/uniui/uni-pagination) 13 | ## 1.1.2(2021-10-08) 14 | - 修复 current 、value 属性未监听,导致高亮样式失效的 bug 15 | ## 1.1.1(2021-08-20) 16 | - 新增 支持国际化 17 | ## 1.1.0(2021-07-30) 18 | - 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) 19 | ## 1.0.7(2021-05-12) 20 | - 新增 组件示例地址 21 | ## 1.0.6(2021-04-12) 22 | - 新增 PC 和 移动端适配不同的 ui 23 | ## 1.0.5(2021-02-05) 24 | - 优化 组件引用关系,通过uni_modules引用组件 25 | 26 | ## 1.0.4(2021-02-05) 27 | - 调整为uni_modules目录规范 28 | -------------------------------------------------------------------------------- /im-platform/src/main/java/com/bx/implatform/enums/ResultCode.java: -------------------------------------------------------------------------------- 1 | package com.bx.implatform.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 响应码枚举 8 | * 9 | * @author Blue 10 | * @date 2020/10/19 11 | **/ 12 | @Getter 13 | @AllArgsConstructor 14 | public enum ResultCode { 15 | /** 16 | * 成功 17 | */ 18 | SUCCESS(200, "成功"), 19 | /** 20 | * 未登录 21 | */ 22 | NO_LOGIN(400, "未登录"), 23 | /** 24 | * token无效或已过期 25 | */ 26 | INVALID_TOKEN(401, "token无效或已过期"), 27 | /** 28 | * 系统繁忙,请稍后再试 29 | */ 30 | PROGRAM_ERROR(500, "系统繁忙,请稍后再试"), 31 | /** 32 | * 密码不正确 33 | */ 34 | PASSWOR_ERROR(10001, "密码不正确"), 35 | /** 36 | * 该用户名已注册 37 | */ 38 | USERNAME_ALREADY_REGISTER(10003, "该用户名已注册"), 39 | /** 40 | * 请不要输入非法内容 41 | */ 42 | XSS_PARAM_ERROR(10004, "请不要输入非法内容"); 43 | 44 | 45 | private final int code; 46 | private final String msg; 47 | 48 | 49 | } 50 | 51 | -------------------------------------------------------------------------------- /im-server/src/main/java/com/bx/imserver/netty/tcp/endecode/MessageProtocolEncoder.java: -------------------------------------------------------------------------------- 1 | package com.bx.imserver.netty.tcp.endecode; 2 | 3 | import com.bx.imcommon.model.IMSendInfo; 4 | import com.fasterxml.jackson.databind.ObjectMapper; 5 | import io.netty.buffer.ByteBuf; 6 | import io.netty.channel.ChannelHandlerContext; 7 | import io.netty.handler.codec.MessageToByteEncoder; 8 | 9 | import java.nio.charset.StandardCharsets; 10 | 11 | public class MessageProtocolEncoder extends MessageToByteEncoder { 12 | 13 | @Override 14 | protected void encode(ChannelHandlerContext channelHandlerContext, IMSendInfo sendInfo, ByteBuf byteBuf) throws Exception { 15 | ObjectMapper objectMapper = new ObjectMapper(); 16 | String content = objectMapper.writeValueAsString(sendInfo); 17 | byte[] bytes = content.getBytes(StandardCharsets.UTF_8); 18 | // 写入长度 19 | byteBuf.writeLong(bytes.length); 20 | // 写入命令体 21 | byteBuf.writeBytes(bytes); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /im-commom/src/main/java/com/bx/imcommon/enums/IMCmdType.java: -------------------------------------------------------------------------------- 1 | package com.bx.imcommon.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | 5 | @AllArgsConstructor 6 | public enum IMCmdType { 7 | 8 | /** 9 | * 登陆 10 | */ 11 | LOGIN(0, "登陆"), 12 | /** 13 | * 心跳 14 | */ 15 | HEART_BEAT(1, "心跳"), 16 | /** 17 | * 强制下线 18 | */ 19 | FORCE_LOGUT(2, "强制下线"), 20 | /** 21 | * 私聊消息 22 | */ 23 | PRIVATE_MESSAGE(3, "私聊消息"), 24 | /** 25 | * 群发消息 26 | */ 27 | GROUP_MESSAGE(4, "群发消息"); 28 | 29 | 30 | private final Integer code; 31 | 32 | private final String desc; 33 | 34 | 35 | public static IMCmdType fromCode(Integer code) { 36 | for (IMCmdType typeEnum : values()) { 37 | if (typeEnum.code.equals(code)) { 38 | return typeEnum; 39 | } 40 | } 41 | return null; 42 | } 43 | 44 | 45 | public Integer code() { 46 | return this.code; 47 | } 48 | 49 | 50 | } 51 | 52 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-card/changelog.md: -------------------------------------------------------------------------------- 1 | ## 1.4.0(2024-02-10) 2 | - 升级swagger 到 openapi3 3 | ## 1.3.1(2021-12-20) 4 | - 修复 在vue页面下略缩图显示不正常的bug 5 | ## 1.3.0(2021-11-19) 6 | - 重构插槽的用法 ,header 替换为 title 7 | - 新增 actions 插槽 8 | - 新增 cover 封面图属性和插槽 9 | - 新增 padding 内容默认内边距离 10 | - 新增 margin 卡片默认外边距离 11 | - 新增 spacing 卡片默认内边距 12 | - 新增 shadow 卡片阴影属性 13 | - 取消 mode 属性,可使用组合插槽代替 14 | - 取消 note 属性 ,使用actions插槽代替 15 | - 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) 16 | - 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-card](https://uniapp.dcloud.io/component/uniui/uni-card) 17 | ## 1.2.1(2021-07-30) 18 | - 优化 vue3下事件警告的问题 19 | ## 1.2.0(2021-07-13) 20 | - 组件兼容 vue3,如何创建vue3项目详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) 21 | ## 1.1.8(2021-07-01) 22 | - 优化 图文卡片无图片加载时,提供占位图标 23 | - 新增 header 插槽,自定义卡片头部( 图文卡片 mode="style" 时,不支持) 24 | - 修复 thumbnail 不存在仍然占位的 bug 25 | ## 1.1.7(2021-05-12) 26 | - 新增 组件示例地址 27 | ## 1.1.6(2021-02-04) 28 | - 调整为uni_modules目录规范 29 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-number-box/changelog.md: -------------------------------------------------------------------------------- 1 | ## 1.2.3(2023-05-23) 2 | 更新示例工程 3 | ## 1.2.2(2023-05-08) 4 | - 修复 change 事件执行顺序错误的问题 5 | ## 1.2.1(2021-11-22) 6 | - 修复 vue3中某些scss变量无法找到的问题 7 | ## 1.2.0(2021-11-19) 8 | - 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) 9 | - 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-number-box](https://uniapp.dcloud.io/component/uniui/uni-number-box) 10 | ## 1.1.2(2021-11-09) 11 | - 新增 提供组件设计资源,组件样式调整 12 | ## 1.1.1(2021-07-30) 13 | - 优化 vue3下事件警告的问题 14 | ## 1.1.0(2021-07-13) 15 | - 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) 16 | ## 1.0.7(2021-05-12) 17 | - 新增 组件示例地址 18 | ## 1.0.6(2021-04-20) 19 | - 修复 uni-number-box 浮点数运算不精确的 bug 20 | - 修复 uni-number-box change 事件触发不正确的 bug 21 | - 新增 uni-number-box v-model 双向绑定 22 | ## 1.0.5(2021-02-05) 23 | - 调整为uni_modules目录规范 24 | 25 | ## 1.0.7(2021-02-05) 26 | - 调整为uni_modules目录规范 27 | - 新增 支持 v-model 28 | - 新增 支持 focus、blur 事件 29 | - 新增 支持 PC 端 30 | -------------------------------------------------------------------------------- /im-platform/src/main/java/com/bx/implatform/dto/GroupMessageDTO.java: -------------------------------------------------------------------------------- 1 | package com.bx.implatform.dto; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import jakarta.validation.constraints.Size; 5 | import lombok.Data; 6 | import org.hibernate.validator.constraints.Length; 7 | 8 | import jakarta.validation.constraints.NotEmpty; 9 | import jakarta.validation.constraints.NotNull; 10 | import java.util.List; 11 | 12 | @Data 13 | @Schema(description = "群聊消息DTO") 14 | public class GroupMessageDTO { 15 | 16 | @NotNull(message = "群聊id不可为空") 17 | @Schema(description = "群聊id") 18 | private Long groupId; 19 | 20 | @Length(max = 1024, message = "发送内容长度不得大于1024") 21 | @NotEmpty(message = "发送内容不可为空") 22 | @Schema(description = "发送内容") 23 | private String content; 24 | 25 | @NotNull(message = "消息类型不可为空") 26 | @Schema(description = "消息类型") 27 | private Integer type; 28 | 29 | @Size(max = 20, message = "一次最多只能@20个小伙伴哦") 30 | @Schema(description = "被@用户列表") 31 | private List atUserIds; 32 | } 33 | -------------------------------------------------------------------------------- /im-api-example/src/main/java/com/bx/api/filter/CacheFilter.java: -------------------------------------------------------------------------------- 1 | package com.bx.api.filter;//package com.bx.api.filter; 2 | // 3 | //import org.springframework.boot.web.servlet.ServletComponentScan; 4 | //import org.springframework.stereotype.Component; 5 | // 6 | //import javax.servlet.*; 7 | //import javax.servlet.annotation.WebFilter; 8 | //import jakarta.servlet.http.HttpServletRequest; 9 | //import java.io.IOException; 10 | // 11 | //@Component 12 | //@ServletComponentScan 13 | //@WebFilter(urlPatterns = "/*", filterName = "xssFilter") 14 | //public class CacheFilter implements Filter { 15 | // 16 | // @Override 17 | // public void init(FilterConfig filterConfig) { 18 | // } 19 | // 20 | // @Override 21 | // public void destroy() { 22 | // } 23 | // 24 | // @Override 25 | // public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { 26 | // chain.doFilter(new CacheHttpServletRequestWrapper((HttpServletRequest) request), response); 27 | // } 28 | // 29 | //} 30 | -------------------------------------------------------------------------------- /im-ui/src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import App from './App' 3 | import router from './router' 4 | import ElementUI from 'element-ui'; 5 | import 'element-ui/lib/theme-chalk/index.css'; 6 | import './assets/iconfont/iconfont.css'; 7 | import httpRequest from './api/httpRequest'; 8 | import * as socketApi from './api/wssocket'; 9 | import emotion from './api/emotion.js'; 10 | import element from './api/element.js'; 11 | import store from './store'; 12 | import * as enums from './api/enums.js'; 13 | import * as date from './api/date.js'; 14 | import './utils/directive/dialogDrag'; 15 | 16 | Vue.use(ElementUI); 17 | // 挂载全局 18 | Vue.prototype.$wsApi = socketApi; 19 | Vue.prototype.$date = date; 20 | Vue.prototype.$http = httpRequest // http请求方法 21 | Vue.prototype.$emo = emotion; // emo表情 22 | Vue.prototype.$elm = element; // 元素操作 23 | Vue.prototype.$enums = enums; // 枚举 24 | Vue.config.productionTip = false; 25 | 26 | new Vue({ 27 | el: '#app', 28 | // 配置路由 29 | router, 30 | store, 31 | render: h=>h(App) 32 | }) 33 | -------------------------------------------------------------------------------- /im-api-example/src/main/java/com/bx/api/util/DateTimeUtils.java: -------------------------------------------------------------------------------- 1 | package com.bx.api.util; 2 | 3 | import org.apache.commons.lang3.StringUtils; 4 | import org.apache.commons.lang3.time.DateUtils; 5 | 6 | import java.text.SimpleDateFormat; 7 | import java.util.Date; 8 | 9 | /** 10 | * 日期处理工具类 11 | * 12 | * @version 1.0 13 | */ 14 | public final class DateTimeUtils extends DateUtils { 15 | 16 | private DateTimeUtils() { 17 | } 18 | 19 | public static final String FULL_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss"; 20 | public static final String PARTDATEFORMAT = "yyyyMMdd"; 21 | 22 | 23 | /** 24 | * 将日期类型转换为字符串 25 | * 26 | * @param date 日期 27 | * @param xFormat 格式 28 | * @return 日期 29 | */ 30 | public static String getFormatDate(Date date, String xFormat) { 31 | date = date == null ? new Date() : date; 32 | xFormat = StringUtils.isNotEmpty(xFormat) ? xFormat : FULL_DATE_FORMAT; 33 | SimpleDateFormat sdf = new SimpleDateFormat(xFormat); 34 | return sdf.format(date); 35 | } 36 | 37 | 38 | } 39 | -------------------------------------------------------------------------------- /im-platform/src/main/java/com/bx/implatform/util/DateTimeUtils.java: -------------------------------------------------------------------------------- 1 | package com.bx.implatform.util; 2 | 3 | import org.apache.commons.lang3.StringUtils; 4 | import org.apache.commons.lang3.time.DateUtils; 5 | 6 | import java.text.SimpleDateFormat; 7 | import java.util.Date; 8 | 9 | /** 10 | * 日期处理工具类 11 | * 12 | * @version 1.0 13 | */ 14 | public final class DateTimeUtils extends DateUtils { 15 | 16 | private DateTimeUtils() { 17 | } 18 | 19 | public static final String FULL_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss"; 20 | public static final String PARTDATEFORMAT = "yyyyMMdd"; 21 | 22 | 23 | /** 24 | * 将日期类型转换为字符串 25 | * 26 | * @param date 日期 27 | * @param xFormat 格式 28 | * @return 日期 29 | */ 30 | public static String getFormatDate(Date date, String xFormat) { 31 | date = date == null ? new Date() : date; 32 | xFormat = StringUtils.isNotEmpty(xFormat) ? xFormat : FULL_DATE_FORMAT; 33 | SimpleDateFormat sdf = new SimpleDateFormat(xFormat); 34 | return sdf.format(date); 35 | } 36 | 37 | 38 | } -------------------------------------------------------------------------------- /im-platform/src/main/java/com/bx/implatform/vo/PrivateMessageVO.java: -------------------------------------------------------------------------------- 1 | package com.bx.implatform.vo; 2 | 3 | import com.bx.imcommon.serializer.DateToLongSerializer; 4 | import com.fasterxml.jackson.databind.annotation.JsonSerialize; 5 | import io.swagger.v3.oas.annotations.media.Schema; 6 | import io.swagger.v3.oas.annotations.media.Schema; 7 | import lombok.Data; 8 | 9 | import java.util.Date; 10 | 11 | @Data 12 | @Schema(description = "私聊消息VO") 13 | public class PrivateMessageVO { 14 | 15 | @Schema(description = " 消息id") 16 | private Long id; 17 | 18 | @Schema(description = " 发送者id") 19 | private Long sendId; 20 | 21 | @Schema(description = " 接收者id") 22 | private Long recvId; 23 | 24 | @Schema(description = " 发送内容") 25 | private String content; 26 | 27 | @Schema(description = "消息内容类型 IMCmdType") 28 | private Integer type; 29 | 30 | @Schema(description = " 状态") 31 | private Integer status; 32 | 33 | @Schema(description = " 发送时间") 34 | @JsonSerialize(using = DateToLongSerializer.class) 35 | private Date sendTime; 36 | } 37 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-fab/changelog.md: -------------------------------------------------------------------------------- 1 | ## 1.2.5(2023-03-29) 2 | - 新增 pattern.icon 属性,可自定义图标 3 | ## 1.2.4(2022-09-07) 4 | 小程序端由于 style 使用了对象导致报错,[详情](https://ask.dcloud.net.cn/question/152790?item_id=211778&rf=false) 5 | ## 1.2.3(2022-09-05) 6 | - 修复 nvue 环境下,具有 tabBar 时,fab 组件下部位置无法正常获取 --window-bottom 的bug,详见:[https://ask.dcloud.net.cn/question/110638?notification_id=826310](https://ask.dcloud.net.cn/question/110638?notification_id=826310) 7 | ## 1.2.2(2021-12-29) 8 | - 更新 组件依赖 9 | ## 1.2.1(2021-11-19) 10 | - 修复 阴影颜色不正确的bug 11 | ## 1.2.0(2021-11-19) 12 | - 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) 13 | - 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-fab](https://uniapp.dcloud.io/component/uniui/uni-fab) 14 | ## 1.1.1(2021-11-09) 15 | - 新增 提供组件设计资源,组件样式调整 16 | ## 1.1.0(2021-07-30) 17 | - 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) 18 | ## 1.0.7(2021-05-12) 19 | - 新增 组件示例地址 20 | ## 1.0.6(2021-02-05) 21 | - 调整为uni_modules目录规范 22 | - 优化 按钮背景色调整 23 | - 优化 兼容pc端 24 | -------------------------------------------------------------------------------- /im-api-example/src/main/java/com/bx/api/exception/GlobalException.java: -------------------------------------------------------------------------------- 1 | package com.bx.api.exception; 2 | 3 | import com.bx.api.enums.ResultCode; 4 | import lombok.Data; 5 | 6 | import java.io.Serializable; 7 | 8 | @Data 9 | public class GlobalException extends RuntimeException implements Serializable { 10 | private static final long serialVersionUID = 8134030011662574394L; 11 | private Integer code; 12 | private String message; 13 | 14 | public GlobalException(Integer code, String message) { 15 | this.code = code; 16 | this.message = message; 17 | } 18 | 19 | public GlobalException(ResultCode resultCode, String message) { 20 | this.code = resultCode.getCode(); 21 | this.message = message; 22 | } 23 | 24 | public GlobalException(ResultCode resultCode) { 25 | this.code = resultCode.getCode(); 26 | this.message = resultCode.getMsg(); 27 | } 28 | 29 | public GlobalException(String message) { 30 | this.code = ResultCode.PROGRAM_ERROR.getCode(); 31 | this.message = message; 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /im-ui/src/assets/iconfont/iconfont.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: "iconfont"; /* Project id 3791506 */ 3 | src: url('iconfont.woff2?t=1669336625993') format('woff2'), 4 | url('iconfont.woff?t=1669336625993') format('woff'), 5 | url('iconfont.ttf?t=1669336625993') format('truetype'); 6 | } 7 | 8 | .iconfont { 9 | font-family: "iconfont" !important; 10 | font-size: 16px; 11 | font-style: normal; 12 | -webkit-font-smoothing: antialiased; 13 | -moz-osx-font-smoothing: grayscale; 14 | } 15 | 16 | .icon-biaoqing:before { 17 | content: "\e60c"; 18 | } 19 | 20 | .icon-youyinpin:before { 21 | content: "\e649"; 22 | } 23 | 24 | .icon-audio:before { 25 | content: "\e800"; 26 | } 27 | 28 | .icon-group_fill:before { 29 | content: "\e7f4"; 30 | } 31 | 32 | .icon-yinpin:before { 33 | content: "\e68a"; 34 | } 35 | 36 | .icon-emoji:before { 37 | content: "\e6f6"; 38 | } 39 | 40 | .icon-voiceprint:before { 41 | content: "\e953"; 42 | } 43 | 44 | .icon-phone-reject:before { 45 | content: "\e605"; 46 | } 47 | 48 | .icon-phone-accept:before { 49 | content: "\e8be"; 50 | } 51 | 52 | -------------------------------------------------------------------------------- /im-commom/src/main/java/com/bx/imcommon/enums/IMTerminalType.java: -------------------------------------------------------------------------------- 1 | package com.bx.imcommon.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | 5 | import java.util.Arrays; 6 | import java.util.List; 7 | import java.util.stream.Collectors; 8 | 9 | @AllArgsConstructor 10 | public enum IMTerminalType { 11 | 12 | /** 13 | * web 14 | */ 15 | WEB(0, "web"), 16 | /** 17 | * app 18 | */ 19 | APP(1, "app"), 20 | /** 21 | * pc 22 | */ 23 | PC(2, "pc"); 24 | 25 | private final Integer code; 26 | 27 | private final String desc; 28 | 29 | 30 | public static IMTerminalType fromCode(Integer code) { 31 | for (IMTerminalType typeEnum : values()) { 32 | if (typeEnum.code.equals(code)) { 33 | return typeEnum; 34 | } 35 | } 36 | return null; 37 | } 38 | 39 | public static List codes() { 40 | return Arrays.stream(values()).map(IMTerminalType::code).collect(Collectors.toList()); 41 | } 42 | 43 | public Integer code() { 44 | return this.code; 45 | } 46 | 47 | } 48 | -------------------------------------------------------------------------------- /im-platform/src/main/java/com/bx/implatform/exception/GlobalException.java: -------------------------------------------------------------------------------- 1 | package com.bx.implatform.exception; 2 | 3 | import com.bx.implatform.enums.ResultCode; 4 | import lombok.Data; 5 | 6 | import java.io.Serializable; 7 | 8 | @Data 9 | public class GlobalException extends RuntimeException implements Serializable { 10 | private static final long serialVersionUID = 8134030011662574394L; 11 | private Integer code; 12 | private String message; 13 | 14 | public GlobalException(Integer code, String message) { 15 | this.code = code; 16 | this.message = message; 17 | } 18 | 19 | public GlobalException(ResultCode resultCode, String message) { 20 | this.code = resultCode.getCode(); 21 | this.message = message; 22 | } 23 | 24 | public GlobalException(ResultCode resultCode) { 25 | this.code = resultCode.getCode(); 26 | this.message = resultCode.getMsg(); 27 | } 28 | 29 | public GlobalException(String message) { 30 | this.code = ResultCode.PROGRAM_ERROR.getCode(); 31 | this.message = message; 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 blue 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /im-ui/src/router/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import VueRouter from 'vue-router' 3 | import Login from '../view/Login' 4 | import Register from '../view/Register' 5 | import Home from '../view/Home' 6 | // 安装路由 7 | Vue.use(VueRouter); 8 | 9 | // 配置导出路由 10 | export default new VueRouter({ 11 | routes: [{ 12 | path: "/", 13 | redirect: "/login" 14 | }, 15 | { 16 | name: "Login", 17 | path: '/login', 18 | component: Login 19 | }, 20 | { 21 | name: "Register", 22 | path: '/register', 23 | component: Register 24 | }, 25 | { 26 | name: "Home", 27 | path: '/home', 28 | component: Home, 29 | children:[ 30 | { 31 | name: "Chat", 32 | path: "/home/chat", 33 | component: () => import("../view/Chat"), 34 | }, 35 | { 36 | name: "Friends", 37 | path: "/home/friend", 38 | component: () => import("../view/Friend"), 39 | }, 40 | { 41 | name: "Friends", 42 | path: "/home/group", 43 | component: () => import("../view/Group"), 44 | } 45 | ] 46 | } 47 | ] 48 | 49 | }); 50 | -------------------------------------------------------------------------------- /im-platform/src/main/java/com/bx/implatform/vo/GroupMessageVO.java: -------------------------------------------------------------------------------- 1 | package com.bx.implatform.vo; 2 | 3 | import com.bx.imcommon.serializer.DateToLongSerializer; 4 | import com.fasterxml.jackson.databind.annotation.JsonSerialize; 5 | import io.swagger.v3.oas.annotations.media.Schema; 6 | import lombok.Data; 7 | 8 | import java.util.Date; 9 | import java.util.List; 10 | 11 | @Data 12 | public class GroupMessageVO { 13 | 14 | @Schema(description = "消息id") 15 | private Long id; 16 | 17 | @Schema(description = "群聊id") 18 | private Long groupId; 19 | 20 | @Schema(description = " 发送者id") 21 | private Long sendId; 22 | 23 | @Schema(description = " 发送者昵称") 24 | private String sendNickName; 25 | 26 | @Schema(description = "消息内容") 27 | private String content; 28 | 29 | @Schema(description = "消息内容类型 具体枚举值由应用层定义") 30 | private Integer type; 31 | 32 | @Schema(description = "@用户列表") 33 | private List atUserIds; 34 | 35 | @Schema(description = " 状态") 36 | private Integer status; 37 | 38 | @Schema(description = "发送时间") 39 | @JsonSerialize(using = DateToLongSerializer.class) 40 | private Date sendTime; 41 | } 42 | -------------------------------------------------------------------------------- /im-uniapp/uni_modules/uni-search-bar/changelog.md: -------------------------------------------------------------------------------- 1 | ## 1.2.4(2023-05-09) 2 | - 修复 i18n 国际化不正确的 Bug 3 | ## 1.2.3(2022-05-24) 4 | - 新增 readonly 属性,组件只读 5 | ## 1.2.2(2022-05-06) 6 | - 修复 vue3 input 事件不生效的bug 7 | ## 1.2.1(2022-05-06) 8 | - 修复 多余代码导致的bug 9 | ## 1.2.0(2021-11-19) 10 | - 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) 11 | - 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-search-bar](https://uniapp.dcloud.io/component/uniui/uni-search-bar) 12 | ## 1.1.2(2021-08-30) 13 | - 修复 value 属性与 modelValue 属性不兼容的Bug 14 | ## 1.1.1(2021-08-24) 15 | - 新增 支持国际化 16 | ## 1.1.0(2021-07-30) 17 | - 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) 18 | ## 1.0.9(2021-05-12) 19 | - 新增 项目示例地址 20 | ## 1.0.8(2021-04-21) 21 | - 优化 添加依赖 uni-icons, 导入后自动下载依赖 22 | ## 1.0.7(2021-04-15) 23 | - uni-ui 新增 uni-search-bar 的 focus 事件 24 | 25 | ## 1.0.6(2021-02-05) 26 | - 优化 组件引用关系,通过uni_modules引用组件 27 | 28 | ## 1.0.5(2021-02-05) 29 | - 调整为uni_modules目录规范 30 | - 新增 支持双向绑定 31 | - 更改 input 事件的返回值,e={value:Number} --> e=value 32 | - 新增 支持图标插槽 33 | - 新增 支持 clear、blur 事件 34 | - 新增 支持 focus 属性 35 | - 去掉组件背景色 36 | -------------------------------------------------------------------------------- /im-server/src/main/java/com/bx/imserver/netty/tcp/endecode/MessageProtocolDecoder.java: -------------------------------------------------------------------------------- 1 | package com.bx.imserver.netty.tcp.endecode; 2 | 3 | import com.bx.imcommon.model.IMSendInfo; 4 | import com.fasterxml.jackson.databind.ObjectMapper; 5 | import io.netty.buffer.ByteBuf; 6 | import io.netty.channel.ChannelHandlerContext; 7 | import io.netty.handler.codec.ReplayingDecoder; 8 | import io.netty.util.CharsetUtil; 9 | import lombok.extern.slf4j.Slf4j; 10 | 11 | import java.util.List; 12 | 13 | @Slf4j 14 | public class MessageProtocolDecoder extends ReplayingDecoder { 15 | 16 | @Override 17 | protected void decode(ChannelHandlerContext channelHandlerContext, ByteBuf byteBuf, List list) throws Exception { 18 | if (byteBuf.readableBytes() < 4) { 19 | return; 20 | } 21 | // 获取到包的长度 22 | long length = byteBuf.readLong(); 23 | // 转成IMSendInfo 24 | ByteBuf contentBuf = byteBuf.readBytes((int) length); 25 | String content = contentBuf.toString(CharsetUtil.UTF_8); 26 | ObjectMapper objectMapper = new ObjectMapper(); 27 | IMSendInfo sendInfo = objectMapper.readValue(content, IMSendInfo.class); 28 | list.add(sendInfo); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /im-server/src/main/java/com/bx/imserver/netty/processor/ProcessorFactory.java: -------------------------------------------------------------------------------- 1 | package com.bx.imserver.netty.processor; 2 | 3 | import com.bx.imcommon.enums.IMCmdType; 4 | import com.bx.imserver.util.SpringContextHolder; 5 | 6 | public class ProcessorFactory { 7 | 8 | public static AbstractMessageProcessor createProcessor(IMCmdType cmd) { 9 | AbstractMessageProcessor processor = null; 10 | switch (cmd) { 11 | case LOGIN: 12 | processor = SpringContextHolder.getApplicationContext().getBean(LoginProcessor.class); 13 | break; 14 | case HEART_BEAT: 15 | processor = SpringContextHolder.getApplicationContext().getBean(HeartbeatProcessor.class); 16 | break; 17 | case PRIVATE_MESSAGE: 18 | processor = SpringContextHolder.getApplicationContext().getBean(PrivateMessageProcessor.class); 19 | break; 20 | case GROUP_MESSAGE: 21 | processor = SpringContextHolder.getApplicationContext().getBean(GroupMessageProcessor.class); 22 | break; 23 | default: 24 | break; 25 | } 26 | return processor; 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /im-ui/src/api/emotion.js: -------------------------------------------------------------------------------- 1 | const emoTextList = ['憨笑', '媚眼', '开心', '坏笑', '可怜', '爱心', '笑哭', '拍手', '惊喜', '打气', 2 | '大哭', '流泪', '饥饿', '难受', '健身', '示爱', '色色', '眨眼', '暴怒', '惊恐', 3 | '思考', '头晕', '大吐', '酷笑', '翻滚', '享受', '鼻涕', '快乐', '雀跃', '微笑', 4 | '贪婪', '红心', '粉心', '星星', '大火', '眼睛', '音符', "叹号", "问号", "绿叶", 5 | "燃烧", "喇叭", "警告", "信封", "房子", "礼物", "点赞", "举手", "拍手", "点头", 6 | "摇头", "偷瞄", "庆祝", "疾跑", "打滚", "惊吓", "起跳" 7 | ]; 8 | 9 | 10 | let transform = (content) => { 11 | return content.replace(/\#[\u4E00-\u9FA5]{1,3}\;/gi, textToImg); 12 | } 13 | 14 | // 将匹配结果替换表情图片 15 | let textToImg = (emoText) => { 16 | let word = emoText.replace(/\#|\;/gi, ''); 17 | let idx = emoTextList.indexOf(word); 18 | if(idx==-1){ 19 | return emoText; 20 | } 21 | let url = require(`@/assets/emoji/${idx}.gif`); 22 | return `` 23 | } 24 | 25 | let textToUrl = (emoText) => { 26 | let word = emoText.replace(/\#|\;/gi, ''); 27 | let idx = emoTextList.indexOf(word); 28 | if(idx==-1){ 29 | return ""; 30 | } 31 | let url = require(`@/assets/emoji/${idx}.gif`); 32 | return url; 33 | } 34 | 35 | export default { 36 | emoTextList, 37 | transform, 38 | textToImg, 39 | textToUrl 40 | } 41 | -------------------------------------------------------------------------------- /im-client/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | box-im 7 | com.bx 8 | 2.0.0 9 | 10 | 4.0.0 11 | 12 | im-client 13 | 14 | 15 | 16 | org.projectlombok 17 | lombok 18 | ${lombok.version} 19 | true 20 | 21 | 22 | com.bx 23 | im-commom 24 | 2.0.0 25 | 26 | 27 | 28 | org.springframework.boot 29 | spring-boot-starter-data-redis 30 | 31 | 32 | -------------------------------------------------------------------------------- /im-uniapp/components/group-item/group-item.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 31 | 32 | 57 | -------------------------------------------------------------------------------- /im-api-example/src/main/java/com/bx/api/util/BeanUtils.java: -------------------------------------------------------------------------------- 1 | package com.bx.api.util; 2 | 3 | import org.springframework.util.ReflectionUtils; 4 | 5 | public final class BeanUtils { 6 | 7 | private BeanUtils() { 8 | } 9 | 10 | private static void handleReflectionException(Exception e) { 11 | ReflectionUtils.handleReflectionException(e); 12 | } 13 | 14 | 15 | /** 16 | * 属性拷贝 17 | * 18 | * @param orig 源对象 19 | * @param destClass 目标 20 | * @return T 21 | */ 22 | public static T copyProperties(Object orig, Class destClass) { 23 | try { 24 | T target = destClass.newInstance(); 25 | if (orig == null) { 26 | return null; 27 | } 28 | copyProperties(orig, target); 29 | return target; 30 | } catch (Exception e) { 31 | handleReflectionException(e); 32 | return null; 33 | } 34 | } 35 | 36 | 37 | public static void copyProperties(Object orig, Object dest) { 38 | try { 39 | org.springframework.beans.BeanUtils.copyProperties(orig, dest); 40 | } catch (Exception e) { 41 | handleReflectionException(e); 42 | } 43 | } 44 | 45 | } 46 | -------------------------------------------------------------------------------- /im-commom/src/main/java/com/bx/imcommon/serializer/DateToLongSerializer.java: -------------------------------------------------------------------------------- 1 | package com.bx.imcommon.serializer; 2 | 3 | import com.fasterxml.jackson.core.JsonGenerator; 4 | import com.fasterxml.jackson.core.JsonToken; 5 | import com.fasterxml.jackson.core.type.WritableTypeId; 6 | import com.fasterxml.jackson.databind.JsonSerializer; 7 | import com.fasterxml.jackson.databind.SerializerProvider; 8 | import com.fasterxml.jackson.databind.jsontype.TypeSerializer; 9 | 10 | import java.io.IOException; 11 | import java.util.Date; 12 | 13 | public class DateToLongSerializer extends JsonSerializer { 14 | 15 | @Override 16 | public void serialize(Date date, JsonGenerator jsonGenerator, 17 | SerializerProvider serializerProvider) throws IOException { 18 | jsonGenerator.writeNumber(date.getTime()); 19 | } 20 | 21 | @Override 22 | public void serializeWithType(Date value, JsonGenerator gen, SerializerProvider serializers, TypeSerializer typeSer) throws IOException { 23 | WritableTypeId typeIdDef = typeSer.writeTypePrefix(gen, 24 | typeSer.typeId(value, JsonToken.VALUE_STRING)); 25 | serialize(value, gen, serializers); 26 | typeSer.writeTypeSuffix(gen, typeIdDef); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /im-uniapp/components/loading/loading.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 36 | 37 | -------------------------------------------------------------------------------- /im-platform/src/main/java/com/bx/implatform/util/BeanUtils.java: -------------------------------------------------------------------------------- 1 | package com.bx.implatform.util; 2 | 3 | import org.springframework.util.ReflectionUtils; 4 | 5 | public final class BeanUtils { 6 | 7 | private BeanUtils() { 8 | } 9 | 10 | private static void handleReflectionException(Exception e) { 11 | ReflectionUtils.handleReflectionException(e); 12 | } 13 | 14 | 15 | /** 16 | * 属性拷贝 17 | * 18 | * @param orig 源对象 19 | * @param destClass 目标 20 | * @return T 21 | */ 22 | public static T copyProperties(Object orig, Class destClass) { 23 | try { 24 | T target = destClass.newInstance(); 25 | if (orig == null) { 26 | return null; 27 | } 28 | copyProperties(orig, target); 29 | return target; 30 | } catch (Exception e) { 31 | handleReflectionException(e); 32 | return null; 33 | } 34 | } 35 | 36 | 37 | public static void copyProperties(Object orig, Object dest) { 38 | try { 39 | org.springframework.beans.BeanUtils.copyProperties(orig, dest); 40 | } catch (Exception e) { 41 | handleReflectionException(e); 42 | } 43 | } 44 | 45 | } -------------------------------------------------------------------------------- /im-platform/src/main/java/com/bx/implatform/vo/GroupVO.java: -------------------------------------------------------------------------------- 1 | package com.bx.implatform.vo; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import io.swagger.v3.oas.annotations.media.Schema; 5 | import lombok.Data; 6 | import org.hibernate.validator.constraints.Length; 7 | 8 | import jakarta.validation.constraints.NotEmpty; 9 | 10 | @Data 11 | @Schema(description = "群信息VO") 12 | public class GroupVO { 13 | 14 | @Schema(description = "群id") 15 | private Long id; 16 | 17 | @Length(max = 20, message = "群名称长度不能大于20") 18 | @NotEmpty(message = "群名称不可为空") 19 | @Schema(description = "群名称") 20 | private String name; 21 | 22 | @Schema(description = "群主id") 23 | private Long ownerId; 24 | 25 | @Schema(description = "头像") 26 | private String headImage; 27 | 28 | @Schema(description = "头像缩略图") 29 | private String headImageThumb; 30 | 31 | @Length(max = 1024, message = "群聊显示长度不能大于1024") 32 | @Schema(description = "群公告") 33 | private String notice; 34 | 35 | @Length(max = 20, message = "群聊显示长度不能大于20") 36 | @Schema(description = "用户在群显示昵称") 37 | private String aliasName; 38 | 39 | @Length(max = 20, message = "群聊显示长度不能大于20") 40 | @Schema(description = "群聊显示备注") 41 | private String remark; 42 | 43 | } 44 | -------------------------------------------------------------------------------- /im-uniapp/pages/friend/friend-search.vue: -------------------------------------------------------------------------------- 1 | 15 | 16 | 30 | 31 | -------------------------------------------------------------------------------- /im-uniapp/common/emotion.js: -------------------------------------------------------------------------------- 1 | const emoTextList = ['憨笑', '媚眼', '开心', '坏笑', '可怜', '爱心', '笑哭', '拍手', '惊喜', '打气', 2 | '大哭', '流泪', '饥饿', '难受', '健身', '示爱', '色色', '眨眼', '暴怒', '惊恐', 3 | '思考', '头晕', '大吐', '酷笑', '翻滚', '享受', '鼻涕', '快乐', '雀跃', '微笑', 4 | '贪婪', '红心', '粉心', '星星', '大火', '眼睛', '音符', "叹号", "问号", "绿叶", 5 | "燃烧", "喇叭", "警告", "信封", "房子", "礼物", "点赞", "举手", "拍手", "点头", 6 | "摇头", "偷瞄", "庆祝", "疾跑", "打滚", "惊吓", "起跳" 7 | ]; 8 | 9 | 10 | 11 | let transform = (content) => { 12 | return content.replace(/\#[\u4E00-\u9FA5]{1,3}\;/gi, textToImg); 13 | } 14 | 15 | 16 | // 将匹配结果替换表情图片 17 | let textToImg = (emoText) => { 18 | let word = emoText.replace(/\#|\;/gi, ''); 19 | let idx = emoTextList.indexOf(word); 20 | if (idx == -1) { 21 | return emoText; 22 | } 23 | let path = textToPath(emoText); 24 | // #ifdef MP 25 | // 微信小程序不能有前面的'/' 26 | path = path.slice(1); 27 | // #endif 28 | let img = ``; 30 | return img; 31 | } 32 | 33 | 34 | let textToPath = (emoText) => { 35 | let word = emoText.replace(/\#|\;/gi, ''); 36 | let idx = emoTextList.indexOf(word); 37 | return `/static/emoji/${idx}.gif`; 38 | } 39 | 40 | 41 | 42 | export default { 43 | emoTextList, 44 | transform, 45 | textToImg, 46 | textToPath 47 | } --------------------------------------------------------------------------------