├── .DS_Store ├── .gitignore ├── Ice-chat-uniapp ├── .hbuilderx │ └── launch.json ├── App.vue ├── changelog.md ├── common │ ├── common.js │ ├── common.scss │ ├── config.js │ ├── db.js │ ├── func.js │ ├── iscroll.js │ ├── poster.js │ ├── request.js │ └── store.js ├── components │ ├── a-loading.vue │ ├── expression │ │ └── expression.css │ ├── iconfont │ │ └── iconfont.css │ ├── number-keyboard │ │ └── number-keyboard.vue │ ├── password-input │ │ └── password-input.vue │ ├── use-action-sheet │ │ └── use-action-sheet.vue │ ├── use-address │ │ ├── city-data │ │ │ ├── area.js │ │ │ ├── city.js │ │ │ └── province.js │ │ └── use-address.vue │ ├── use-copyright │ │ └── use-copyright.vue │ ├── use-count-down │ │ └── use-count-down.vue │ ├── use-empty │ │ └── use-empty.vue │ ├── use-header │ │ └── use-header.vue │ ├── use-list-title │ │ └── use-list-title.vue │ ├── use-loadmore │ │ └── use-loadmore.vue │ ├── use-login │ │ └── use-login.vue │ ├── use-mask │ │ └── use-mask.vue │ ├── use-number-box │ │ └── use-number-box.vue │ ├── use-pickeraddr │ │ ├── data.js │ │ └── use-pickeraddr.vue │ ├── use-popup │ │ └── use-popup.vue │ ├── use-qrcode │ │ ├── qrcode.js │ │ └── use-qrcode.vue │ ├── use-rate │ │ └── use-rate.vue │ ├── use-stepper │ │ └── use-stepper.vue │ ├── use-totop │ │ └── use-totop.vue │ ├── use-upload │ │ └── use-upload.vue │ └── yt-txl │ │ ├── index.vue │ │ └── pinyin.js ├── favicon.ico ├── main.js ├── manifest.json ├── package.json ├── pages.json ├── pages │ ├── chat │ │ ├── chat.vue │ │ ├── groupchat.vue │ │ ├── home.vue │ │ ├── newgroup.vue │ │ ├── order.vue │ │ ├── payment.vue │ │ ├── product.vue │ │ ├── signal.vue │ │ └── user.vue │ ├── content │ │ ├── rich-text.vue │ │ └── web.vue │ ├── engineer │ │ └── list.vue │ ├── login │ │ ├── login-guide.vue │ │ └── login.vue │ ├── search │ │ ├── apply.vue │ │ ├── friend-add.vue │ │ ├── search-result.vue │ │ ├── search.vue │ │ └── searchall.vue │ └── user │ │ ├── assist │ │ ├── assist.vue │ │ └── coupon.vue │ │ ├── collect │ │ └── collect.vue │ │ ├── friend │ │ └── list.vue │ │ ├── order │ │ ├── order-detail.vue │ │ └── order.vue │ │ ├── personal.vue │ │ ├── profit │ │ ├── cashout.vue │ │ └── profit.vue │ │ ├── setting │ │ └── setting.vue │ │ └── user.vue ├── readme.md ├── static │ ├── .DS_Store │ ├── hm-friends-requests-card │ │ └── images │ │ │ ├── img_24029_0_0.png │ │ │ ├── img_24029_0_1.png │ │ │ ├── img_24029_0_2.png │ │ │ ├── img_24029_0_3.png │ │ │ ├── img_24029_0_4.png │ │ │ └── img_24029_0_5.png │ ├── images │ │ ├── .DS_Store │ │ ├── empty │ │ │ ├── cart.jpg │ │ │ ├── empty.jpg │ │ │ ├── message.03a0abb5.png │ │ │ └── search.jpg │ │ ├── headimg │ │ │ ├── face_12.jpg │ │ │ ├── face_13.jpg │ │ │ ├── face_2.jpg │ │ │ ├── face_4.jpg │ │ │ ├── face_5.jpg │ │ │ └── face_6.jpg │ │ ├── login-bg.png │ │ ├── logo.png │ │ ├── mescroll-progress.png │ │ ├── mescroll-slogan.png │ │ ├── pg-02.png │ │ ├── tobar │ │ │ ├── .DS_Store │ │ │ ├── contact.png │ │ │ ├── contact2.png │ │ │ ├── message.png │ │ │ ├── message2.png │ │ │ ├── my.png │ │ │ └── my2.png │ │ └── user │ │ │ ├── default.jpg │ │ │ └── default.png │ └── star.png ├── uni.scss ├── uniCloud-aliyun │ └── database │ │ ├── JQL数据库管理.jql │ │ └── JQL查询.jql ├── uni_modules │ ├── mescroll-uni │ │ ├── changelog.md │ │ ├── components │ │ │ ├── mescroll-body │ │ │ │ ├── mescroll-body.css │ │ │ │ └── mescroll-body.vue │ │ │ ├── mescroll-diy │ │ │ │ ├── beibei │ │ │ │ │ ├── components │ │ │ │ │ │ ├── mescroll-down.css │ │ │ │ │ │ └── mescroll-down.vue │ │ │ │ │ ├── mescroll-body.vue │ │ │ │ │ ├── mescroll-uni-option.js │ │ │ │ │ └── mescroll-uni.vue │ │ │ │ └── xinlang │ │ │ │ │ ├── components │ │ │ │ │ ├── mescroll-down.css │ │ │ │ │ ├── mescroll-down.vue │ │ │ │ │ ├── mescroll-up.css │ │ │ │ │ └── mescroll-up.vue │ │ │ │ │ ├── mescroll-body.vue │ │ │ │ │ ├── mescroll-uni-option.js │ │ │ │ │ └── mescroll-uni.vue │ │ │ ├── mescroll-empty │ │ │ │ └── mescroll-empty.vue │ │ │ └── mescroll-uni │ │ │ │ ├── components │ │ │ │ ├── mescroll-down.css │ │ │ │ ├── mescroll-down.vue │ │ │ │ ├── mescroll-top.vue │ │ │ │ ├── mescroll-up.css │ │ │ │ └── mescroll-up.vue │ │ │ │ ├── mescroll-i18n.js │ │ │ │ ├── mescroll-mixins.js │ │ │ │ ├── mescroll-uni-option.js │ │ │ │ ├── mescroll-uni.css │ │ │ │ ├── mescroll-uni.js │ │ │ │ ├── mescroll-uni.vue │ │ │ │ ├── mixins │ │ │ │ ├── mescroll-comp.js │ │ │ │ ├── mescroll-more-item.js │ │ │ │ └── mescroll-more.js │ │ │ │ └── wxs │ │ │ │ ├── mixins.js │ │ │ │ ├── renderjs.js │ │ │ │ └── wxs.wxs │ │ ├── package.json │ │ └── readme.md │ ├── uni-captcha │ │ ├── changelog.md │ │ ├── package.json │ │ ├── readme.md │ │ └── uniCloud │ │ │ └── cloudfunctions │ │ │ └── common │ │ │ └── uni-captcha │ │ │ ├── LICENSE.md │ │ │ ├── index.js │ │ │ └── package.json │ ├── uni-config-center │ │ ├── changelog.md │ │ ├── package.json │ │ ├── readme.md │ │ └── uniCloud │ │ │ └── cloudfunctions │ │ │ └── common │ │ │ └── uni-config-center │ │ │ ├── index.js │ │ │ ├── package.json │ │ │ └── uni-id │ │ │ └── config.json │ ├── uni-id │ │ ├── changelog.md │ │ ├── package.json │ │ ├── readme.md │ │ └── uniCloud │ │ │ └── cloudfunctions │ │ │ └── common │ │ │ └── uni-id │ │ │ ├── LICENSE.md │ │ │ ├── index.js │ │ │ ├── package-lock.json │ │ │ └── package.json │ ├── uni-load-more │ │ ├── changelog.md │ │ ├── components │ │ │ └── uni-load-more │ │ │ │ └── uni-load-more.vue │ │ ├── package.json │ │ └── readme.md │ ├── uni-popup │ │ ├── changelog.md │ │ ├── components │ │ │ ├── uni-popup-share │ │ │ │ └── uni-popup-share.vue │ │ │ └── uni-popup │ │ │ │ ├── keypress.js │ │ │ │ ├── message.js │ │ │ │ ├── popup.js │ │ │ │ ├── share.js │ │ │ │ └── uni-popup.vue │ │ ├── package.json │ │ └── readme.md │ └── uni-transition │ │ ├── changelog.md │ │ ├── components │ │ └── uni-transition │ │ │ └── uni-transition.vue │ │ ├── package.json │ │ └── readme.md ├── unpackage │ └── dist │ │ └── build │ │ ├── .automator │ │ └── h5 │ │ │ └── .automator.json │ │ └── h5 │ │ ├── index.html │ │ └── static │ │ ├── hm-friends-requests-card │ │ └── images │ │ │ ├── img_24029_0_0.png │ │ │ ├── img_24029_0_1.png │ │ │ ├── img_24029_0_2.png │ │ │ ├── img_24029_0_3.png │ │ │ ├── img_24029_0_4.png │ │ │ └── img_24029_0_5.png │ │ ├── images │ │ ├── empty │ │ │ ├── cart.jpg │ │ │ ├── empty.jpg │ │ │ ├── message.03a0abb5.png │ │ │ └── search.jpg │ │ ├── headimg │ │ │ ├── face_12.jpg │ │ │ ├── face_13.jpg │ │ │ ├── face_2.jpg │ │ │ ├── face_4.jpg │ │ │ ├── face_5.jpg │ │ │ └── face_6.jpg │ │ ├── login-bg.png │ │ ├── logo.png │ │ ├── mescroll-progress.png │ │ ├── mescroll-slogan.png │ │ ├── pg-02.png │ │ ├── tobar │ │ │ ├── contact.png │ │ │ ├── contact2.png │ │ │ ├── message.png │ │ │ ├── message2.png │ │ │ ├── my.png │ │ │ └── my2.png │ │ └── user │ │ │ ├── default.jpg │ │ │ └── default.png │ │ ├── img │ │ ├── face_12.0bdad333.jpg │ │ ├── mescroll-slogan.40aa47ed.png │ │ ├── message.03a0abb5.5712d6eb.png │ │ └── star.a7215108.png │ │ ├── index.b0707a6a.css │ │ ├── js │ │ ├── chunk-vendors.e9107b99.js │ │ ├── index.ccc4701c.js │ │ ├── pages-chat-chat.bba82e24.js │ │ ├── pages-chat-chat~pages-chat-groupchat~pages-chat-home~pages-user-setting-setting.2bbf43a9.js │ │ ├── pages-chat-groupchat.0dd28dbb.js │ │ ├── pages-chat-home.1f7fc635.js │ │ ├── pages-chat-newgroup.2e0a0864.js │ │ ├── pages-chat-order.efff320a.js │ │ ├── pages-chat-payment.24084b2d.js │ │ ├── pages-chat-product.387c2b1d.js │ │ ├── pages-chat-signal.87de0e2a.js │ │ ├── pages-chat-user.41fd10cc.js │ │ ├── pages-content-rich-text.5bc790b0.js │ │ ├── pages-content-web.1140cde4.js │ │ ├── pages-engineer-list.67a431f9.js │ │ ├── pages-login-login-guide.bd1c7d70.js │ │ ├── pages-login-login.a011354a.js │ │ ├── pages-search-apply.9e4a7014.js │ │ ├── pages-search-friend-add.a7484405.js │ │ ├── pages-search-search-result.00412cbd.js │ │ ├── pages-search-search.6a1c5602.js │ │ ├── pages-search-searchall.eb001551.js │ │ ├── pages-user-assist-assist.6d2fa7d2.js │ │ ├── pages-user-assist-coupon.8d9dfd12.js │ │ ├── pages-user-collect-collect.91909847.js │ │ ├── pages-user-friend-list.6bfa21d9.js │ │ ├── pages-user-order-order-detail.a60b64db.js │ │ ├── pages-user-order-order.25699cc8.js │ │ ├── pages-user-personal.9fbbbf75.js │ │ ├── pages-user-profit-cashout.4edddaee.js │ │ ├── pages-user-profit-profit.de03d12d.js │ │ ├── pages-user-setting-setting.5020cea7.js │ │ └── pages-user-user.ba556d61.js │ │ └── star.png └── utils │ └── date.js ├── LICENSE ├── README.md ├── identifier.sqlite ├── pom.xml ├── sqlite.log ├── src ├── .DS_Store ├── main │ ├── .DS_Store │ ├── java │ │ └── com │ │ │ └── ninespace │ │ │ ├── .DS_Store │ │ │ └── sqlite │ │ │ ├── SpringDataSqliteApplication.java │ │ │ ├── configuration │ │ │ ├── CorsConfig.java │ │ │ ├── Knife4jConfiguration.java │ │ │ ├── RedisConfig.java │ │ │ ├── WebSocketConfig.java │ │ │ └── WebSocketServer.java │ │ │ ├── controller │ │ │ ├── FriendController.java │ │ │ ├── GroupController.java │ │ │ ├── MessageController.java │ │ │ ├── TestController.java │ │ │ └── UserController.java │ │ │ ├── entity │ │ │ ├── Friend.java │ │ │ ├── Group.java │ │ │ ├── OfflineMsg.java │ │ │ └── User.java │ │ │ ├── mapper │ │ │ ├── FriendMapper.java │ │ │ ├── GroupMapper.java │ │ │ ├── OfflineMsgMapper.java │ │ │ └── UserMapper.java │ │ │ ├── service │ │ │ ├── FriendService.java │ │ │ ├── GroupService.java │ │ │ ├── OfflineMsgService.java │ │ │ ├── UserService.java │ │ │ └── impl │ │ │ │ ├── FriendServiceImpl.java │ │ │ │ ├── GroupServiceImpl.java │ │ │ │ ├── OfflineMsgServiceImpl.java │ │ │ │ └── UserServiceImpl.java │ │ │ ├── task │ │ │ └── GetRedisData.java │ │ │ ├── util │ │ │ └── RedisUtil.java │ │ │ └── vo │ │ │ ├── Result.java │ │ │ └── UserGroup.java │ └── resources │ │ ├── .DS_Store │ │ ├── application.yml │ │ ├── mapper │ │ └── userMapper.xml │ │ ├── sql │ │ ├── data.sql │ │ └── schema.sql │ │ └── static │ │ ├── .DS_Store │ │ └── cloud.db └── test │ └── java │ └── com │ └── ninespace │ └── sqlite │ └── SpringDataSqliteApplicationTests.java └── target ├── classes ├── application.yml ├── com │ └── ninespace │ │ └── sqlite │ │ ├── SpringDataSqliteApplication.class │ │ ├── configuration │ │ ├── CorsConfig.class │ │ ├── Knife4jConfiguration.class │ │ ├── RedisConfig.class │ │ ├── WebSocketConfig.class │ │ └── WebSocketServer.class │ │ ├── controller │ │ ├── FriendController.class │ │ ├── GroupController.class │ │ ├── MessageController.class │ │ └── UserController.class │ │ ├── entity │ │ ├── Friend.class │ │ ├── Group.class │ │ ├── OfflineMsg.class │ │ └── User.class │ │ ├── mapper │ │ ├── FriendMapper.class │ │ ├── GroupMapper.class │ │ ├── OfflineMsgMapper.class │ │ └── UserMapper.class │ │ ├── service │ │ ├── FriendService.class │ │ ├── GroupService.class │ │ ├── OfflineMsgService.class │ │ ├── UserService.class │ │ └── impl │ │ │ ├── FriendServiceImpl.class │ │ │ ├── GroupServiceImpl.class │ │ │ ├── OfflineMsgServiceImpl.class │ │ │ └── UserServiceImpl.class │ │ ├── task │ │ └── GetRedisData.class │ │ ├── util │ │ └── RedisUtil.class │ │ └── vo │ │ ├── Result.class │ │ └── UserGroup.class ├── mapper │ └── userMapper.xml ├── sql │ ├── data.sql │ └── schema.sql └── static │ └── cloud.db ├── maven-archiver └── pom.properties ├── maven-status └── maven-compiler-plugin │ ├── compile │ └── default-compile │ │ ├── createdFiles.lst │ │ └── inputFiles.lst │ └── testCompile │ └── default-testCompile │ ├── createdFiles.lst │ └── inputFiles.lst ├── sqlite-0.0.1-SNAPSHOT.jar ├── sqlite-0.0.1-SNAPSHOT.jar.original └── test-classes └── com └── ninespace └── sqlite └── SpringDataSqliteApplicationTests.class /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/.DS_Store -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.class 2 | .DS_Store 3 | 4 | # Mobile Tools for Java (J2ME) 5 | .mtj.tmp/ 6 | 7 | # Package Files # 8 | *.jar 9 | *.war 10 | *.ear 11 | 12 | *.gz 13 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml 14 | hs_err_pid* 15 | 16 | /target/ 17 | ./target/ 18 | .idea 19 | *.iml 20 | *.iws 21 | 22 | /IcePay-ment 23 | pom.xml 24 | 25 | .classpath 26 | .project 27 | .settings 28 | /Ice-chat/target/ 29 | 30 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/.hbuilderx/launch.json: -------------------------------------------------------------------------------- 1 | { // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/ 2 | // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数 3 | "version": "0.0", 4 | "configurations": [{ 5 | "default" : 6 | { 7 | "launchtype" : "local" 8 | }, 9 | "h5" : 10 | { 11 | "launchtype" : "local" 12 | }, 13 | "type" : "uniCloud" 14 | } 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/changelog.md: -------------------------------------------------------------------------------- 1 | ## 1.0.2(2022-08-03) 2 | ##### 新增线上体验版。 3 | 4 | 【体验】步骤 5 | 【体验】1. 微信扫码授权登录 [https://usekf.use-cloud.com](https://usekf.use-cloud.com)(PC端客服系统,建议使用谷歌浏览器体验) 6 | 【体验】2. 微信搜索 [用云客服] 微信小程序,授权登录后点击联系客服(可选择PC端自己登录的客服进行体验) 7 | 8 | 【反馈】感谢 9 | 【反馈】1. 欢迎提出宝贵建议 10 | 【反馈】2. 相关bug 可统一收集整理后发给我们 11 | 12 | ###### 【咨询】加QQ群([1020565856](https://qm.qq.com/cgi-bin/qm/qr?k=BNUlrZAQXPolwALtcBm_rMabq0bx3_n-&jump_from=usecloud)) 技术咨询。 13 | 14 | ## 1.0.1(2021-07-09) 15 | ## 【添加】本插件采集的数据、发送的服务器地址、以及数据用途说明: 16 | 【计划】用云IM 使用的 websocket 采用 netcore + redis 技术实现,服务器将使用微信的云开发进行托管。 17 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/common/config.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let config = { 4 | debug: !0, 5 | version: '1.0.9', 6 | 7 | route: { 8 | home: '/pages/tabbar/home', 9 | login: '/pages/login/login', 10 | order: '/pages/user/order/order', 11 | pay: '/pages/pay/pay', 12 | search: '/pages/home/search/search', 13 | goods: '/pages/goods/goods', 14 | goodslist: '/pages/goods/goods-list' 15 | }, 16 | provider: '', 17 | provider_names: { 18 | 'weixin': '微信', 19 | 'qq': 'QQ', 20 | 'alipay': '支付宝', 21 | 'baidu': '百度', 22 | 'toutiao': '头条', 23 | }, 24 | 25 | const: { 26 | __app: '__app', 27 | __member: '__member', 28 | __access_token: 'USE_ACCESS_TOKEN' 29 | }, 30 | 31 | url: 'https://useim.use-cloud.com/use/', 32 | url_beta: 'https://useim.use-cloud.com/use/', 33 | 34 | get_url: () => { 35 | return config.debug ? config.url_beta : config.url; 36 | } 37 | }; 38 | 39 | export default config -------------------------------------------------------------------------------- /Ice-chat-uniapp/common/func.js: -------------------------------------------------------------------------------- 1 | 2 | import $config from './config.js' 3 | import $api from './common.js' 4 | 5 | let func = {}; 6 | 7 | func = new Proxy(func, { 8 | get: function(target, key) { 9 | return new FuncContext(key); 10 | } 11 | }); 12 | 13 | function FuncContext(name) { 14 | this.funcname = name; 15 | this.response = { 16 | code: 200, 17 | datas: {}, 18 | msg: '' 19 | } 20 | } 21 | 22 | FuncContext.prototype = { 23 | funcname: '', // 云函数名称 24 | response: {} // 统一响应格式 25 | }; 26 | 27 | /** 28 | * 调用云函数 29 | * action controller 函数路径 30 | * data controller 数据参数 31 | * */ 32 | FuncContext.prototype.call = function(action, data) { 33 | uni.showNavigationBarLoading(); 34 | return uniCloud.callFunction({ 35 | name: this.funcname, 36 | data: { 37 | action, 38 | data 39 | } 40 | }).then(res => { 41 | if ($config.debug) { 42 | console.log(this.funcname + '/' + action + ' call', res); 43 | } 44 | if (res.result) { 45 | this.response.code = res.result.code === 0 ? 200 : res.result.code; 46 | if (this.response.code != 200) { 47 | this.response.msg = res.result.msg || res.result.message; 48 | } else { 49 | this.response.msg = res.result.msg 50 | } 51 | this.response.datas = res.result.datas || res.result; 52 | return Promise.resolve(this.response); 53 | } 54 | 55 | return Promise.reject(res); 56 | }).catch(err => { 57 | if ($config.debug) { 58 | console.log(this.table + ' call catch', err); 59 | $api.alert(JSON.stringify(err)); 60 | } 61 | return Promise.reject(err); 62 | }).finally(res => { 63 | uni.hideNavigationBarLoading(); 64 | }); 65 | } 66 | 67 | export default func; 68 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/common/store.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Vuex from 'vuex' 3 | import $config from './config.js' 4 | 5 | Vue.use(Vuex) 6 | 7 | const store = new Vuex.Store({ 8 | state: { 9 | islogin: false, 10 | member: {}, 11 | token: '', 12 | token_expired: 0, 13 | 14 | __key_member: 'usemall_member', 15 | __key_token: 'uni_id_token', 16 | __key_token_expired: 'uni_id_token_expired', 17 | }, 18 | mutations: { 19 | // 登录成功 20 | login(state, res) { 21 | // 用户已登录 22 | state.islogin = true; 23 | 24 | state.member = res.member; 25 | state.token = res.user.token; 26 | state.token_expired = res.user.tokenExpired; 27 | 28 | // 存储会员 member 数据 29 | uni.setStorage({ 30 | key: state.__key_member, 31 | data: state.member 32 | }) 33 | 34 | // 存储uid token 数据 35 | uni.setStorage({ 36 | key: state.__key_token, 37 | data: state.token 38 | }) 39 | // 存储uid token_expired 数据 40 | uni.setStorage({ 41 | key: state.__key_token_expired, 42 | data: state.token_expired 43 | }) 44 | }, 45 | 46 | // 加载 Token 47 | loadToken(state) { 48 | state.member = uni.getStorageSync(state.__key_member); 49 | state.token = uni.getStorageSync(state.__key_token); 50 | state.token_expired = uni.getStorageSync(state.__key_token_expired); 51 | 52 | if (state.token_expired > new Date().getTime()) { 53 | state.islogin = true; 54 | } 55 | }, 56 | 57 | // 注销 58 | logout(state) { 59 | state.islogin = false; 60 | state.member = {}; 61 | state.token = ''; 62 | state.token_expired = 0; 63 | 64 | uni.removeStorage({ 65 | key: state.__key_member 66 | }) 67 | uni.removeStorage({ 68 | key: state.__key_token 69 | }) 70 | uni.removeStorage({ 71 | key: state.__key_token_expired 72 | }) 73 | }, 74 | 75 | // token 令牌 76 | token(state, token, token_expired) { 77 | state.token = token; 78 | state.token_expired = token_expired; 79 | 80 | // 存储uid token 数据 81 | uni.setStorage({ 82 | key: state.__key_token, 83 | data: state.token 84 | }) 85 | // 存储uid token_expired 数据 86 | uni.setStorage({ 87 | key: state.__key_token_expired, 88 | data: state.token_expired 89 | }) 90 | }, 91 | 92 | // 修改 member 数据 93 | putMember (state, user) { 94 | state.member = user; 95 | 96 | // 存储会员 member 数据 97 | uni.setStorage({ 98 | key: state.__key_member, 99 | data: state.member 100 | }) 101 | } 102 | }, 103 | actions: { 104 | 105 | } 106 | }) 107 | 108 | export default store 109 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/components/password-input/password-input.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 42 | 43 | 83 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/components/use-address/city-data/province.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | var provinceData = [{ 3 | "label": "北京市", 4 | "value": "11" 5 | }, 6 | { 7 | "label": "天津市", 8 | "value": "12" 9 | }, 10 | { 11 | "label": "河北省", 12 | "value": "13" 13 | }, 14 | { 15 | "label": "山西省", 16 | "value": "14" 17 | }, 18 | { 19 | "label": "内蒙古自治区", 20 | "value": "15" 21 | }, 22 | { 23 | "label": "辽宁省", 24 | "value": "21" 25 | }, 26 | { 27 | "label": "吉林省", 28 | "value": "22" 29 | }, 30 | { 31 | "label": "黑龙江省", 32 | "value": "23" 33 | }, 34 | { 35 | "label": "上海市", 36 | "value": "31" 37 | }, 38 | { 39 | "label": "江苏省", 40 | "value": "32" 41 | }, 42 | { 43 | "label": "浙江省", 44 | "value": "33" 45 | }, 46 | { 47 | "label": "安徽省", 48 | "value": "34" 49 | }, 50 | { 51 | "label": "福建省", 52 | "value": "35" 53 | }, 54 | { 55 | "label": "江西省", 56 | "value": "36" 57 | }, 58 | { 59 | "label": "山东省", 60 | "value": "37" 61 | }, 62 | { 63 | "label": "河南省", 64 | "value": "41" 65 | }, 66 | { 67 | "label": "湖北省", 68 | "value": "42" 69 | }, 70 | { 71 | "label": "湖南省", 72 | "value": "43" 73 | }, 74 | { 75 | "label": "广东省", 76 | "value": "44" 77 | }, 78 | { 79 | "label": "广西壮族自治区", 80 | "value": "45" 81 | }, 82 | { 83 | "label": "海南省", 84 | "value": "46" 85 | }, 86 | { 87 | "label": "重庆市", 88 | "value": "50" 89 | }, 90 | { 91 | "label": "四川省", 92 | "value": "51" 93 | }, 94 | { 95 | "label": "贵州省", 96 | "value": "52" 97 | }, 98 | { 99 | "label": "云南省", 100 | "value": "53" 101 | }, 102 | { 103 | "label": "西藏自治区", 104 | "value": "54" 105 | }, 106 | { 107 | "label": "陕西省", 108 | "value": "61" 109 | }, 110 | { 111 | "label": "甘肃省", 112 | "value": "62" 113 | }, 114 | { 115 | "label": "青海省", 116 | "value": "63" 117 | }, 118 | { 119 | "label": "宁夏回族自治区", 120 | "value": "64" 121 | }, 122 | { 123 | "label": "新疆维吾尔自治区", 124 | "value": "65" 125 | }, 126 | { 127 | "label": "台湾", 128 | "value": "66" 129 | }, 130 | { 131 | "label": "香港", 132 | "value": "67" 133 | }, 134 | { 135 | "label": "澳门", 136 | "value": "68" 137 | }, 138 | { 139 | "label": "钓鱼岛", 140 | "value": "69" 141 | } 142 | ] 143 | export default provinceData; 144 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/components/use-copyright/use-copyright.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 30 | 31 | 41 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/components/use-empty/use-empty.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 83 | 84 | 110 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/components/use-header/use-header.vue: -------------------------------------------------------------------------------- 1 | 17 | 18 | 66 | 67 | 74 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/components/use-list-title/use-list-title.vue: -------------------------------------------------------------------------------- 1 | 16 | 17 | 70 | 71 | 91 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/components/use-loadmore/use-loadmore.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 43 | 44 | 47 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/components/use-mask/use-mask.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 64 | 65 | 77 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/components/use-pickeraddr/use-pickeraddr.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 103 | 104 | 106 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/components/use-rate/use-rate.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 79 | 80 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/components/use-totop/use-totop.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 68 | 69 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/components/use-upload/use-upload.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 94 | 95 | 118 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/favicon.ico -------------------------------------------------------------------------------- /Ice-chat-uniapp/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import App from './App' 3 | 4 | import $config from './common/config.js' 5 | import $api from './common/common.js' 6 | import $db from './common/db.js' 7 | import $func from './common/func.js' 8 | import $request from './common/request.js' 9 | import $store from './common/store.js' 10 | // main.js 11 | import aLoading from "@/components/a-loading.vue"; 12 | Vue.component('a-loading',aLoading) 13 | 14 | // #ifdef H5 || MP-360 15 | import $iscroll from './common/iscroll.js' 16 | Vue.prototype.$iscroll = $iscroll 17 | 18 | Vue.prototype.serviceUrl = "http://157.245.86.35:9090" 19 | 20 | uni.canIUse = function(name) { 21 | return name in uni; 22 | } 23 | // #endif 24 | 25 | // 测试阶段 26 | $config.debug = process.env.NODE_ENV === 'development'; 27 | 28 | if (!$config.debug) { 29 | // 取消日志打印功能 30 | console.log = () => { } 31 | } 32 | 33 | // 注册当前环境 34 | $api.register_env((env) => { 35 | Vue.prototype.$env = env; 36 | }); 37 | 38 | // 全局 request 配置 39 | $request.config.baseurl = $config.get_url(); 40 | // 测试阶段,开启 debug 日志 41 | $request.config.debug = $config.debug; 42 | 43 | // 全局 request 拦截器 44 | // 全局请求拦截器 45 | $request.interceptor.request = (config => { 46 | // 添加 access_token 访问令牌 47 | if (!config.header['access_token']) { 48 | config.header['access_token'] = uni.getStorageSync('access_token') || ''; 49 | } 50 | 51 | // 默认提示异常信息 52 | if (config.err_tip === undefined) { 53 | config.err_tip = true 54 | } 55 | 56 | // 默认加上 loading 57 | if (config.loading == undefined) 58 | config.loading = '加载中'; 59 | 60 | return config; 61 | }) 62 | 63 | // 全局响应拦截器 64 | $request.interceptor.response = ((res, config) => { 65 | 66 | if (res.code === 401) { 67 | $api.msg(res.msg); 68 | // token 失效,需要重新登录 69 | // uni.navigateTo({ 70 | // url: '/pages/public/login' 71 | // }) 72 | 73 | return false; 74 | } 75 | 76 | if(config && config.header && config.header['access_token']) config.header['access_token'] = ''; 77 | 78 | return true; 79 | }) 80 | 81 | // 全局错误异常处理 82 | $request.interceptor.fail = ((res, config) => { 83 | let ret = res; 84 | let msg = '' 85 | 86 | if (res.statusCode === 200) { 87 | msg = res.data.msg 88 | ret = res.data 89 | } else if (res.statusCode > 0) { 90 | msg = '服务器异常[' + res.statusCode + ']' 91 | } else { 92 | msg = res.errMsg 93 | } 94 | 95 | if (config.err_tip) { 96 | uni.showToast({ 97 | title: msg, 98 | duration: 5000, 99 | icon: 'none' 100 | }) 101 | } 102 | 103 | return ret; 104 | }) 105 | 106 | 107 | Vue.config.productionTip = false 108 | 109 | Vue.prototype.$config = $config 110 | Vue.prototype.$api = $api 111 | Vue.prototype.$db = $db 112 | Vue.prototype.$dbcmd = uniCloud.database().command; 113 | Vue.prototype.$func = $func 114 | Vue.prototype.$request = $request 115 | Vue.prototype.$store = $store 116 | 117 | App.mpType = 'app' 118 | 119 | const app = new Vue({ 120 | ...App 121 | }) 122 | 123 | app.$mount() 124 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "Usecloud-useim", 3 | "name": "用云·IM uniCloud 版", 4 | "version": "1.0.2", 5 | "description": "基于 uni-app + uni-push2.0 + uniCloud 实现,客服应用 + 即时通讯(加好友、群聊等)", 6 | "keywords": [ 7 | "用云客服", 8 | "即时通讯IM", 9 | "uni-im", 10 | "uni-push2.0", 11 | "uniCloud" 12 | ], 13 | "displayName": "用云IM uniCloud 版", 14 | "repository": "", 15 | "dcloudext": { 16 | "sale": { 17 | "regular": { 18 | "price": "0.00" 19 | }, 20 | "sourcecode": { 21 | "price": "0.00" 22 | } 23 | }, 24 | "contact": { 25 | "qq": "" 26 | }, 27 | "declaration": { 28 | "ads": "无", 29 | "data": "基于 uniCloud + uni-push2.0 实现", 30 | "permissions": "无" 31 | }, 32 | "npmurl": "", 33 | "type": "unicloud-template-project" 34 | }, 35 | "uni_modules": { 36 | "platforms": { 37 | "cloud": { 38 | "tcb": "y", 39 | "aliyun": "y" 40 | }, 41 | "client": { 42 | "App": { 43 | "app-vue": "y", 44 | "app-nvue": "u" 45 | }, 46 | "H5-mobile": { 47 | "Safari": "u", 48 | "Android Browser": "y", 49 | "微信浏览器(Android)": "y", 50 | "QQ浏览器(Android)": "y" 51 | }, 52 | "H5-pc": { 53 | "Chrome": "y", 54 | "IE": "u", 55 | "Edge": "y", 56 | "Firefox": "y", 57 | "Safari": "y" 58 | }, 59 | "小程序": { 60 | "微信": "y", 61 | "阿里": "u", 62 | "百度": "u", 63 | "字节跳动": "u", 64 | "QQ": "u" 65 | }, 66 | "快应用": { 67 | "华为": "u", 68 | "联盟": "u" 69 | } 70 | } 71 | } 72 | } 73 | } -------------------------------------------------------------------------------- /Ice-chat-uniapp/pages/chat/payment.vue: -------------------------------------------------------------------------------- 1 | 37 | 38 | 59 | 60 | 67 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/pages/chat/product.vue: -------------------------------------------------------------------------------- 1 | 34 | 35 | 108 | 109 | 122 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/pages/content/rich-text.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 37 | 38 | 51 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/pages/content/web.vue: -------------------------------------------------------------------------------- 1 | 6 | 28 | 29 | 31 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/pages/login/login-guide.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 57 | 58 | 98 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/pages/search/apply.vue: -------------------------------------------------------------------------------- 1 | 20 | 21 | 43 | 44 | 55 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/pages/user/collect/collect.vue: -------------------------------------------------------------------------------- 1 | 46 | 47 | 56 | 57 | 60 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/pages/user/profit/cashout.vue: -------------------------------------------------------------------------------- 1 | 24 | 25 | 40 | 41 | 47 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/pages/user/profit/profit.vue: -------------------------------------------------------------------------------- 1 | 82 | 83 | 100 | 101 | 104 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/readme.md: -------------------------------------------------------------------------------- 1 | # Usecloud.useim Ice-chat·IM v1.0.2 2 | **Ice-chat·IM,基于 uni-app + uni-push2.0,客服应用 + 即时通讯(加好友、群聊等)** 3 | 4 | 说明:目前支持平台有微信小程序、h5Weixin、h5、iOS、Android,其他平台持续更新中。(**当前为体验版,有任何问题可联系我们进行咨询**) 5 | 6 | qq:23339097 7 | wx:17630505717 8 | 9 | **Ice-chat · 让开发更简单!** 10 | ## Ice-chat团队项目推荐 11 | > **[1. 社区图片视频圈子CMS 版前后端开源](https://ext.dcloud.net.cn/plugin?id=9261)** 12 | 13 | ## [java后端](https://github.com/Thecosy/Ice-chat) 14 | 15 | ## [点击体验 PC端 IM](http://chat.snym.cn) 16 | > 体验步骤 17 | > 1. 登录 [](http://chat.snym.cn) (PC端客服系统,建议使用谷歌浏览器体验) 18 | > 2. 点击登陆,输入测试账户17630505717 密码 1234 19 | 20 | > 体验反馈 21 | > 1. 欢迎提出宝贵意见 22 | > 2. 相关bug 可统一收集整理后发给我们 谢谢 23 | 24 | ## 加QQ群([951286996](https://qm.qq.com/cgi-bin/qm/qr?k=XLX0hSw6GGuOgNbC53r-Pc7Lrubwcm4q&authKey=AaNuGPfAWTSyaN6MR5yGYFQ0+4AKsZQq7kI0uRASo+v5ttyrc6xvh7gfNEMQ7UDR&noverify=0)) 25 | 26 | ## 新手指南 27 | 1. 下载 [HBuilderX](https://www.dcloud.io/hbuilderx.html) 开发者工具 28 | 2. 插件安装
工具栏 -> 工具(T) -> 插件安装 -> 安装新插件([scss/sass编译](https://ext.dcloud.net.cn/plugin?id=2046)) 29 | 30 | ## 创作不易,请勿以差评的评论方式提问,谢谢!有任何问题欢迎加群咨询。 31 | 32 | ## 加QQ群、实时版本更新通知([951286996](https://qm.qq.com/cgi-bin/qm/qr?k=XLX0hSw6GGuOgNbC53r-Pc7Lrubwcm4q&authKey=AaNuGPfAWTSyaN6MR5yGYFQ0+4AKsZQq7kI0uRASo+v5ttyrc6xvh7gfNEMQ7UDR&noverify=0)) 33 | 34 | ## Ice-chat团队项目推荐 35 | > **[1. 社区图片视频圈子CMS 版前后端开源](https://ext.dcloud.net.cn/plugin?id=9261)** 36 | 37 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/static/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/static/.DS_Store -------------------------------------------------------------------------------- /Ice-chat-uniapp/static/hm-friends-requests-card/images/img_24029_0_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/static/hm-friends-requests-card/images/img_24029_0_0.png -------------------------------------------------------------------------------- /Ice-chat-uniapp/static/hm-friends-requests-card/images/img_24029_0_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/static/hm-friends-requests-card/images/img_24029_0_1.png -------------------------------------------------------------------------------- /Ice-chat-uniapp/static/hm-friends-requests-card/images/img_24029_0_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/static/hm-friends-requests-card/images/img_24029_0_2.png -------------------------------------------------------------------------------- /Ice-chat-uniapp/static/hm-friends-requests-card/images/img_24029_0_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/static/hm-friends-requests-card/images/img_24029_0_3.png -------------------------------------------------------------------------------- /Ice-chat-uniapp/static/hm-friends-requests-card/images/img_24029_0_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/static/hm-friends-requests-card/images/img_24029_0_4.png -------------------------------------------------------------------------------- /Ice-chat-uniapp/static/hm-friends-requests-card/images/img_24029_0_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/static/hm-friends-requests-card/images/img_24029_0_5.png -------------------------------------------------------------------------------- /Ice-chat-uniapp/static/images/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/static/images/.DS_Store -------------------------------------------------------------------------------- /Ice-chat-uniapp/static/images/empty/cart.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/static/images/empty/cart.jpg -------------------------------------------------------------------------------- /Ice-chat-uniapp/static/images/empty/empty.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/static/images/empty/empty.jpg -------------------------------------------------------------------------------- /Ice-chat-uniapp/static/images/empty/message.03a0abb5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/static/images/empty/message.03a0abb5.png -------------------------------------------------------------------------------- /Ice-chat-uniapp/static/images/empty/search.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/static/images/empty/search.jpg -------------------------------------------------------------------------------- /Ice-chat-uniapp/static/images/headimg/face_12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/static/images/headimg/face_12.jpg -------------------------------------------------------------------------------- /Ice-chat-uniapp/static/images/headimg/face_13.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/static/images/headimg/face_13.jpg -------------------------------------------------------------------------------- /Ice-chat-uniapp/static/images/headimg/face_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/static/images/headimg/face_2.jpg -------------------------------------------------------------------------------- /Ice-chat-uniapp/static/images/headimg/face_4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/static/images/headimg/face_4.jpg -------------------------------------------------------------------------------- /Ice-chat-uniapp/static/images/headimg/face_5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/static/images/headimg/face_5.jpg -------------------------------------------------------------------------------- /Ice-chat-uniapp/static/images/headimg/face_6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/static/images/headimg/face_6.jpg -------------------------------------------------------------------------------- /Ice-chat-uniapp/static/images/login-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/static/images/login-bg.png -------------------------------------------------------------------------------- /Ice-chat-uniapp/static/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/static/images/logo.png -------------------------------------------------------------------------------- /Ice-chat-uniapp/static/images/mescroll-progress.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/static/images/mescroll-progress.png -------------------------------------------------------------------------------- /Ice-chat-uniapp/static/images/mescroll-slogan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/static/images/mescroll-slogan.png -------------------------------------------------------------------------------- /Ice-chat-uniapp/static/images/pg-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/static/images/pg-02.png -------------------------------------------------------------------------------- /Ice-chat-uniapp/static/images/tobar/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/static/images/tobar/.DS_Store -------------------------------------------------------------------------------- /Ice-chat-uniapp/static/images/tobar/contact.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/static/images/tobar/contact.png -------------------------------------------------------------------------------- /Ice-chat-uniapp/static/images/tobar/contact2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/static/images/tobar/contact2.png -------------------------------------------------------------------------------- /Ice-chat-uniapp/static/images/tobar/message.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/static/images/tobar/message.png -------------------------------------------------------------------------------- /Ice-chat-uniapp/static/images/tobar/message2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/static/images/tobar/message2.png -------------------------------------------------------------------------------- /Ice-chat-uniapp/static/images/tobar/my.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/static/images/tobar/my.png -------------------------------------------------------------------------------- /Ice-chat-uniapp/static/images/tobar/my2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/static/images/tobar/my2.png -------------------------------------------------------------------------------- /Ice-chat-uniapp/static/images/user/default.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/static/images/user/default.jpg -------------------------------------------------------------------------------- /Ice-chat-uniapp/static/images/user/default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/static/images/user/default.png -------------------------------------------------------------------------------- /Ice-chat-uniapp/static/star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/static/star.png -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni.scss: -------------------------------------------------------------------------------- 1 | 2 | /* 页面左右间距 */ 3 | $page-row-spacing: 30upx; 4 | $page-col-spacing: 20upx; 5 | $page-color-base: #f5f5f5; 6 | $page-color-light: #f8f6fc; 7 | $base-color: #4d9ff3; 8 | 9 | /* 文字尺寸 */ 10 | $font-sm: 24upx; 11 | $font-base: 28upx; 12 | $font-lg: 32upx; 13 | /*文字颜色*/ 14 | $font-color-dark: #303133; 15 | $font-color-base: #75787d; 16 | $font-color-light: #909399; 17 | $font-color-disabled: #C0C4CC; 18 | $font-color-spec: #4399fc; 19 | /* 边框颜色 */ 20 | $border-color-dark: #DCDFE6; 21 | $border-color-base: #E4E7ED; 22 | $border-color-light: #EBEEF5; 23 | /* 图片加载中颜色 */ 24 | $image-bg-color: #eee; 25 | 26 | /* 颜色变量 */ 27 | 28 | /* 行为相关颜色 */ 29 | $uni-color-primary: #4d9ff3; 30 | $uni-color-success: #4cd964; 31 | $uni-color-warning: #f0ad4e; 32 | $uni-color-error: #dd524d; 33 | 34 | /* 文字基本颜色 */ 35 | $uni-text-color:#333;//基本色 36 | $uni-text-color-inverse:#fff;//反色 37 | $uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息 38 | $uni-text-color-placeholder: #808080; 39 | $uni-text-color-disable:#c0c0c0; 40 | 41 | /* 背景颜色 */ 42 | $uni-bg-color:#fff; 43 | $uni-bg-color-grey:#f8f8f8; 44 | $uni-bg-color-hover:#f1f1f1;//点击状态颜色 45 | $uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色 46 | 47 | /* 边框颜色 */ 48 | $uni-border-color:#c8c7cc; 49 | 50 | /* 尺寸变量 */ 51 | 52 | /* 文字尺寸 */ 53 | $uni-font-size-sm:24rpx; 54 | $uni-font-size-base:28rpx; 55 | $uni-font-size-lg:32rpx; 56 | 57 | /* 图片尺寸 */ 58 | $uni-img-size-sm:40rpx; 59 | $uni-img-size-base:52rpx; 60 | $uni-img-size-lg:80rpx; 61 | 62 | /* Border Radius */ 63 | $uni-border-radius-sm: 4rpx; 64 | $uni-border-radius-base: 6rpx; 65 | $uni-border-radius-lg: 20rpx; 66 | $uni-border-radius-circle: 50%; 67 | 68 | /* 水平间距 */ 69 | $uni-spacing-row-sm: 10px; 70 | $uni-spacing-row-base: 20rpx; 71 | $uni-spacing-row-lg: 30rpx; 72 | 73 | /* 垂直间距 */ 74 | $uni-spacing-col-sm: 8rpx; 75 | $uni-spacing-col-base: 16rpx; 76 | $uni-spacing-col-lg: 24rpx; 77 | 78 | /* 透明度 */ 79 | $uni-opacity-disabled: 0.3; // 组件禁用态的透明度 80 | 81 | /* 文章场景相关 */ 82 | $uni-color-title: #2C405A; // 文章标题颜色 83 | $uni-font-size-title:40rpx; 84 | $uni-color-subtitle: #555555; // 二级标题颜色 85 | $uni-font-size-subtitle:36rpx; 86 | $uni-color-paragraph: #3F536E; // 文章段落颜色 87 | $uni-font-size-paragraph:30rpx; -------------------------------------------------------------------------------- /Ice-chat-uniapp/uniCloud-aliyun/database/JQL数据库管理.jql: -------------------------------------------------------------------------------- 1 | // 本文件用于,使用JQL语法操作项目关联的uniCloud空间的数据库,方便开发调试和远程数据库管理 2 | // 编写clientDB的js API(也支持常规js语法,比如var),可以对云数据库进行增删改查操作。不支持uniCloud-db组件写法 3 | // 可以全部运行,也可以选中部分代码运行。点击工具栏上的运行按钮或者按下【F5】键运行代码 4 | // 如果文档中存在多条JQL语句,只有最后一条语句生效 5 | // 如果混写了普通js,最后一条语句需是数据库操作语句 6 | // 此处代码运行不受DB Schema的权限控制,移植代码到实际业务中注意在schema中配好permission 7 | // 不支持clientDB的action 8 | // 数据库查询有最大返回条数限制,详见:https://uniapp.dcloud.net.cn/uniCloud/cf-database?id=limit 9 | // 详细JQL语法,请参考 https://uniapp.dcloud.net.cn/uniCloud/clientdb?id=jsquery 10 | 11 | // 下面示例查询uni-id-users表的所有数据 12 | db.collection('uni-id-users').get(); 13 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/uniCloud-aliyun/database/JQL查询.jql: -------------------------------------------------------------------------------- 1 | // 本文件用于,使用JQL语法操作项目关联的uniCloud空间的数据库,方便开发调试和远程数据库管理 2 | // 编写clientDB的js API(也支持常规js语法,比如var),可以对云数据库进行增删改查操作。不支持uniCloud-db组件写法 3 | // 可以全部运行,也可以选中部分代码运行。点击工具栏上的运行按钮或者按下【F5】键运行代码 4 | // 如果文档中存在多条JQL语句,只有最后一条语句生效 5 | // 如果混写了普通js,最后一条语句需是数据库操作语句 6 | // 此处代码运行不受DB Schema的权限控制,移植代码到实际业务中注意在schema中配好permission 7 | // 不支持clientDB的action 8 | // 数据库查询有最大返回条数限制,详见:https://uniapp.dcloud.net.cn/uniCloud/cf-database.html#limit 9 | // 详细JQL语法,请参考:https://uniapp.dcloud.net.cn/uniCloud/jql.html 10 | 11 | // 下面示例查询uni-id-users表的所有数据 12 | db.collection('uni-id-users').get(); 13 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/mescroll-uni/changelog.md: -------------------------------------------------------------------------------- 1 | ## 1.3.7(2021-04-13) 2 | 1. 新增`mescroll-swiper-sticky.vue`的示例, 轮播吸顶菜单导航 3 | 2. 新增`mescroll-empty.vue`的示例, 单独使用空布局组件 4 | 3. 简化tabs在具体项目中的使用,并简化对应的示例 5 | 4. mescroll-uni 支持动态禁止滚动的属性 disableScroll (注: mescroll-body不支持) 6 | -by 小瑾同学 7 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/mescroll-uni/components/mescroll-body/mescroll-body.css: -------------------------------------------------------------------------------- 1 | .mescroll-body { 2 | position: relative; /* 下拉刷新区域相对自身定位 */ 3 | height: auto; /* 不可固定高度,否则overflow:hidden导致无法滑动; 同时使设置的最小高生效,实现列表不满屏仍可下拉*/ 4 | overflow: hidden; /* 当有元素写在mescroll-body标签前面时,可遮住下拉刷新区域 */ 5 | box-sizing: border-box; /* 避免设置padding出现双滚动条的问题 */ 6 | } 7 | 8 | /* 使sticky生效: 父元素不能overflow:hidden或者overflow:auto属性 */ 9 | .mescroll-body.mescorll-sticky{ 10 | overflow: unset !important 11 | } 12 | 13 | /* 适配 iPhoneX */ 14 | @supports (bottom: constant(safe-area-inset-bottom)) or (bottom: env(safe-area-inset-bottom)) { 15 | .mescroll-safearea { 16 | padding-bottom: constant(safe-area-inset-bottom); 17 | padding-bottom: env(safe-area-inset-bottom); 18 | } 19 | } -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/mescroll-uni/components/mescroll-diy/beibei/components/mescroll-down.css: -------------------------------------------------------------------------------- 1 | /*下拉刷新--标语*/ 2 | .mescroll-downwarp .downwarp-slogan{ 3 | display: block; 4 | width: 420rpx; 5 | height: 168rpx; 6 | margin: auto; 7 | } 8 | /*下拉刷新--向下进度动画*/ 9 | .mescroll-downwarp .downwarp-progress{ 10 | display: inline-block; 11 | width: 40rpx; 12 | height: 40rpx; 13 | border: none; 14 | margin: auto; 15 | background-size: contain; 16 | background-repeat: no-repeat; 17 | background-position: center; 18 | background-image: url('@/static/images/mescroll-progress.png'); 19 | transition: all 300ms; 20 | } 21 | /*下拉刷新--进度条*/ 22 | .mescroll-downwarp .downwarp-loading{ 23 | display: inline-block; 24 | width: 32rpx; 25 | height: 32rpx; 26 | border-radius: 50%; 27 | border: 2rpx solid #60aaff; 28 | border-bottom-color: transparent; 29 | } 30 | /*下拉刷新--吉祥物*/ 31 | .mescroll-downwarp .downwarp-mascot{ 32 | position: absolute; 33 | right: 16rpx; 34 | bottom: 0; 35 | width: 100rpx; 36 | height: 100rpx; 37 | background-size: contain; 38 | background-repeat: no-repeat; 39 | animation: animMascot .6s steps(1,end) infinite; 40 | } 41 | @keyframes animMascot { 42 | 0% {background-image: url(https://www.mescroll.com/img/beibei/mescroll-bb1.png)} 43 | 25% {background-image: url(https://www.mescroll.com/img/beibei/mescroll-bb2.png)} 44 | 50% {background-image: url(https://www.mescroll.com/img/beibei/mescroll-bb3.png)} 45 | 75% {background-image: url(https://www.mescroll.com/img/beibei/mescroll-bb4.png)} 46 | 100% {background-image: url(https://www.mescroll.com/img/beibei/mescroll-bb1.png)} 47 | } -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/mescroll-uni/components/mescroll-diy/beibei/components/mescroll-down.vue: -------------------------------------------------------------------------------- 1 | 2 | 12 | 13 | 35 | 36 | 40 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/mescroll-uni/components/mescroll-diy/beibei/mescroll-uni-option.js: -------------------------------------------------------------------------------- 1 | // mescroll-uni和mescroll-body 的全局配置 2 | const GlobalOption = { 3 | down: { 4 | // 其他down的配置参数也可以写,这里只展示了常用的配置: 5 | offset: uni.upx2px(140), // 在列表顶部,下拉大于140upx,松手即可触发下拉刷新的回调 6 | native: false // 是否使用系统自带的下拉刷新; 默认false; 仅在mescroll-body生效 (值为true时,还需在pages配置enablePullDownRefresh:true;详请参考mescroll-native的案例) 7 | }, 8 | up: { 9 | // 其他up的配置参数也可以写,这里只展示了常用的配置: 10 | offset: 150, // 距底部多远时,触发upCallback 11 | toTop: { 12 | // 回到顶部按钮,需配置src才显示 13 | src: "https://www.mescroll.com/img/mescroll-totop.png", // 图片路径 (建议放入static目录, 如 /static/img/mescroll-totop.png ) 14 | offset: 1000, // 列表滚动多少距离才显示回到顶部按钮,默认1000px 15 | right: 20, // 到右边的距离, 默认20 (支持"20rpx", "20px", "20%"格式的值, 纯数字则默认单位rpx) 16 | bottom: 120, // 到底部的距离, 默认120 (支持"20rpx", "20px", "20%"格式的值, 纯数字则默认单位rpx) 17 | width: 72 // 回到顶部图标的宽度, 默认72 (支持"20rpx", "20px", "20%"格式的值, 纯数字则默认单位rpx) 18 | }, 19 | empty: { 20 | use: true, // 是否显示空布局 21 | icon: "https://www.mescroll.com/img/mescroll-empty.png" // 图标路径 (建议放入static目录, 如 /static/img/mescroll-empty.png ) 22 | } 23 | }, 24 | // 国际化配置 25 | i18n: { 26 | // 中文 27 | zh: { 28 | up: { 29 | textLoading: '加载中 ...', // 加载中的提示文本 30 | textNoMore: '-- END --', // 没有更多数据的提示文本 31 | empty: { 32 | tip: '~ 暂无相关数据 ~' // 空提示 33 | } 34 | } 35 | }, 36 | // 英文 37 | en: { 38 | up: { 39 | textLoading: 'loading ...', 40 | textNoMore: '-- END --', 41 | empty: { 42 | tip: '~ absolutely empty ~' 43 | } 44 | } 45 | } 46 | } 47 | } 48 | 49 | export default GlobalOption -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/mescroll-uni/components/mescroll-diy/xinlang/components/mescroll-down.css: -------------------------------------------------------------------------------- 1 | /*下拉刷新--上下箭头*/ 2 | .mescroll-downwarp .downwarp-arrow { 3 | display: inline-block; 4 | width: 20px; 5 | height: 20px; 6 | margin: 10px; 7 | background-image: url(https://www.mescroll.com/img/xinlang/mescroll-arrow.png); 8 | background-size: contain; 9 | vertical-align: middle; 10 | transition: all 300ms; 11 | } 12 | 13 | /*下拉刷新--旋转进度条*/ 14 | .mescroll-downwarp .downwarp-progress{ 15 | width: 36px; 16 | height: 36px; 17 | border: none; 18 | margin: auto; 19 | background-size: contain; 20 | animation: progressRotate 0.6s steps(6, start) infinite; 21 | } 22 | @keyframes progressRotate { 23 | 0% { 24 | background-image: url(https://www.mescroll.com/img/xinlang/mescroll-progress1.png); 25 | } 26 | 16% { 27 | background-image: url(https://www.mescroll.com/img/xinlang/mescroll-progress2.png); 28 | } 29 | 32% { 30 | background-image: url(https://www.mescroll.com/img/xinlang/mescroll-progress3.png); 31 | } 32 | 48% { 33 | background-image: url(https://www.mescroll.com/img/xinlang/mescroll-progress4.png); 34 | } 35 | 64% { 36 | background-image: url(https://www.mescroll.com/img/xinlang/mescroll-progress5.png); 37 | } 38 | 80% { 39 | background-image: url(https://www.mescroll.com/img/xinlang/mescroll-progress6.png); 40 | } 41 | 100% { 42 | background-image: url(https://www.mescroll.com/img/xinlang/mescroll-progress1.png); 43 | } 44 | } -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/mescroll-uni/components/mescroll-diy/xinlang/components/mescroll-down.vue: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | 49 | 50 | 54 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/mescroll-uni/components/mescroll-diy/xinlang/components/mescroll-up.css: -------------------------------------------------------------------------------- 1 | /*上拉加载--旋转进度条*/ 2 | .mescroll-upwarp .upwarp-progress { 3 | width: 36px; 4 | height: 36px; 5 | border: none; 6 | margin: auto; 7 | background-size: contain; 8 | animation: progressRotate 0.6s steps(6, start) infinite; 9 | } 10 | @keyframes progressRotate { 11 | 0% { 12 | background-image: url(https://www.mescroll.com/img/xinlang/mescroll-progress1.png); 13 | } 14 | 16% { 15 | background-image: url(https://www.mescroll.com/img/xinlang/mescroll-progress2.png); 16 | } 17 | 32% { 18 | background-image: url(https://www.mescroll.com/img/xinlang/mescroll-progress3.png); 19 | } 20 | 48% { 21 | background-image: url(https://www.mescroll.com/img/xinlang/mescroll-progress4.png); 22 | } 23 | 64% { 24 | background-image: url(https://www.mescroll.com/img/xinlang/mescroll-progress5.png); 25 | } 26 | 80% { 27 | background-image: url(https://www.mescroll.com/img/xinlang/mescroll-progress6.png); 28 | } 29 | 100% { 30 | background-image: url(https://www.mescroll.com/img/xinlang/mescroll-progress1.png); 31 | } 32 | } -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/mescroll-uni/components/mescroll-diy/xinlang/components/mescroll-up.vue: -------------------------------------------------------------------------------- 1 | 2 | 13 | 14 | 36 | 37 | 41 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/mescroll-uni/components/mescroll-diy/xinlang/mescroll-uni-option.js: -------------------------------------------------------------------------------- 1 | // 全局配置 2 | // mescroll-body 和 mescroll-uni 通用 3 | const GlobalOption = { 4 | down: { 5 | // 其他down的配置参数也可以写,这里只展示了常用的配置: 6 | offset: 80, // 在列表顶部,下拉大于80px,松手即可触发下拉刷新的回调 7 | native: false // 是否使用系统自带的下拉刷新; 默认false; 仅在mescroll-body生效 (值为true时,还需在pages配置enablePullDownRefresh:true;详请参考mescroll-native的案例) 8 | }, 9 | up: { 10 | // 其他up的配置参数也可以写,这里只展示了常用的配置: 11 | offset: 150, // 距底部多远时,触发upCallback,仅mescroll-uni生效 ( mescroll-body配置的是pages.json的 onReachBottomDistance ) 12 | toTop: { 13 | // 回到顶部按钮,需配置src才显示 14 | src: "https://www.mescroll.com/img/mescroll-totop.png", // 图片路径 (建议放入static目录, 如 /static/img/mescroll-totop.png ) 15 | offset: 1000, // 列表滚动多少距离才显示回到顶部按钮,默认1000px 16 | right: 20, // 到右边的距离, 默认20 (支持"20rpx", "20px", "20%"格式的值, 纯数字则默认单位rpx) 17 | bottom: 120, // 到底部的距离, 默认120 (支持"20rpx", "20px", "20%"格式的值, 纯数字则默认单位rpx) 18 | width: 72 // 回到顶部图标的宽度, 默认72 (支持"20rpx", "20px", "20%"格式的值, 纯数字则默认单位rpx) 19 | }, 20 | empty: { 21 | use: true, // 是否显示空布局 22 | icon: "https://www.mescroll.com/img/mescroll-empty.png" // 图标路径 (建议放入static目录, 如 /static/img/mescroll-empty.png ) 23 | } 24 | }, 25 | // 国际化配置 26 | i18n: { 27 | // 中文 28 | zh: { 29 | down: { 30 | textInOffset: '下拉刷新', // 下拉的距离在offset范围内的提示文本 31 | textOutOffset: '释放更新', // 下拉的距离大于offset范围的提示文本 32 | textLoading: '加载中 ...', // 加载中的提示文本 33 | textSuccess: '加载成功', // 加载成功的文本 34 | textErr: '加载失败', // 加载失败的文本 35 | }, 36 | up: { 37 | textLoading: '加载中 ...', // 加载中的提示文本 38 | textNoMore: '-- END --', // 没有更多数据的提示文本 39 | empty: { 40 | tip: '~ 空空如也 ~' // 空提示 41 | } 42 | } 43 | }, 44 | // 英文 45 | en: { 46 | down: { 47 | textInOffset: 'drop down refresh', 48 | textOutOffset: 'release updates', 49 | textLoading: 'loading ...', 50 | textSuccess: 'loaded successfully', 51 | textErr: 'loading failed' 52 | }, 53 | up: { 54 | textLoading: 'loading ...', 55 | textNoMore: '-- END --', 56 | empty: { 57 | tip: '~ absolutely empty ~' 58 | } 59 | } 60 | } 61 | } 62 | } 63 | 64 | export default GlobalOption 65 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/mescroll-uni/components/mescroll-empty/mescroll-empty.vue: -------------------------------------------------------------------------------- 1 | 5 | 12 | 13 | 74 | 75 | 117 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/mescroll-uni/components/mescroll-uni/components/mescroll-down.css: -------------------------------------------------------------------------------- 1 | /* 下拉刷新区域 */ 2 | .mescroll-downwarp { 3 | position: absolute; 4 | top: -100%; 5 | left: 0; 6 | width: 100%; 7 | height: 100%; 8 | text-align: center; 9 | } 10 | 11 | /* 下拉刷新--内容区,定位于区域底部 */ 12 | .mescroll-downwarp .downwarp-content { 13 | position: absolute; 14 | left: 0; 15 | bottom: 0; 16 | width: 100%; 17 | min-height: 60rpx; 18 | padding: 20rpx 0; 19 | text-align: center; 20 | } 21 | 22 | /* 下拉刷新--提示文本 */ 23 | .mescroll-downwarp .downwarp-tip { 24 | display: inline-block; 25 | font-size: 28rpx; 26 | vertical-align: middle; 27 | margin-left: 16rpx; 28 | /* color: gray; 已在style设置color,此处删去*/ 29 | } 30 | 31 | /* 下拉刷新--旋转进度条 */ 32 | .mescroll-downwarp .downwarp-progress { 33 | display: inline-block; 34 | width: 32rpx; 35 | height: 32rpx; 36 | border-radius: 50%; 37 | border: 2rpx solid gray; 38 | border-bottom-color: transparent !important; /*已在style设置border-color,此处需加 !important*/ 39 | vertical-align: middle; 40 | } 41 | 42 | /* 旋转动画 */ 43 | .mescroll-downwarp .mescroll-rotate { 44 | animation: mescrollDownRotate 0.6s linear infinite; 45 | } 46 | 47 | @keyframes mescrollDownRotate { 48 | 0% { 49 | transform: rotate(0deg); 50 | } 51 | 52 | 100% { 53 | transform: rotate(360deg); 54 | } 55 | } -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/mescroll-uni/components/mescroll-uni/components/mescroll-down.vue: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 44 | 45 | 48 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/mescroll-uni/components/mescroll-uni/components/mescroll-top.vue: -------------------------------------------------------------------------------- 1 | 2 | 13 | 14 | 49 | 50 | 84 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/mescroll-uni/components/mescroll-uni/components/mescroll-up.css: -------------------------------------------------------------------------------- 1 | /* 上拉加载区域 */ 2 | .mescroll-upwarp { 3 | box-sizing: border-box; 4 | min-height: 110rpx; 5 | padding: 30rpx 0; 6 | text-align: center; 7 | clear: both; 8 | } 9 | 10 | /*提示文本 */ 11 | .mescroll-upwarp .upwarp-tip, 12 | .mescroll-upwarp .upwarp-nodata { 13 | display: inline-block; 14 | font-size: 28rpx; 15 | vertical-align: middle; 16 | /* color: gray; 已在style设置color,此处删去*/ 17 | } 18 | 19 | .mescroll-upwarp .upwarp-tip { 20 | margin-left: 16rpx; 21 | } 22 | 23 | /*旋转进度条 */ 24 | .mescroll-upwarp .upwarp-progress { 25 | display: inline-block; 26 | width: 32rpx; 27 | height: 32rpx; 28 | border-radius: 50%; 29 | border: 2rpx solid gray; 30 | border-bottom-color: transparent !important; /*已在style设置border-color,此处需加 !important*/ 31 | vertical-align: middle; 32 | } 33 | 34 | /* 旋转动画 */ 35 | .mescroll-upwarp .mescroll-rotate { 36 | animation: mescrollUpRotate 0.6s linear infinite; 37 | } 38 | 39 | @keyframes mescrollUpRotate { 40 | 0% { 41 | transform: rotate(0deg); 42 | } 43 | 44 | 100% { 45 | transform: rotate(360deg); 46 | } 47 | } -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/mescroll-uni/components/mescroll-uni/components/mescroll-up.vue: -------------------------------------------------------------------------------- 1 | 2 | 13 | 14 | 36 | 37 | 40 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-i18n.js: -------------------------------------------------------------------------------- 1 | // 国际化工具类 2 | const mescrollI18n = { 3 | // 默认语言 4 | def: "zh", 5 | // 获取当前语言类型 6 | getType(){ 7 | return uni.getStorageSync("mescroll-i18n") || this.def 8 | }, 9 | // 设置当前语言类型 10 | setType(type){ 11 | uni.setStorageSync("mescroll-i18n", type) 12 | } 13 | } 14 | 15 | export default mescrollI18n 16 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js: -------------------------------------------------------------------------------- 1 | // mescroll-body 和 mescroll-uni 通用 2 | const MescrollMixin = { 3 | data() { 4 | return { 5 | mescroll: null //mescroll实例对象 6 | } 7 | }, 8 | // 注册系统自带的下拉刷新 (配置down.native为true时生效, 还需在pages配置enablePullDownRefresh:true;详请参考mescroll-native的案例) 9 | onPullDownRefresh(){ 10 | this.mescroll && this.mescroll.onPullDownRefresh(); 11 | }, 12 | // 注册列表滚动事件,用于判定在顶部可下拉刷新,在指定位置可显示隐藏回到顶部按钮 (此方法为页面生命周期,无法在子组件中触发, 仅在mescroll-body生效) 13 | onPageScroll(e) { 14 | this.mescroll && this.mescroll.onPageScroll(e); 15 | }, 16 | // 注册滚动到底部的事件,用于上拉加载 (此方法为页面生命周期,无法在子组件中触发, 仅在mescroll-body生效) 17 | onReachBottom() { 18 | this.mescroll && this.mescroll.onReachBottom(); 19 | }, 20 | methods: { 21 | // mescroll组件初始化的回调,可获取到mescroll对象 22 | mescrollInit(mescroll) { 23 | this.mescroll = mescroll; 24 | this.mescrollInitByRef(); // 兼容字节跳动小程序 25 | }, 26 | // 以ref的方式初始化mescroll对象 (兼容字节跳动小程序) 27 | mescrollInitByRef() { 28 | if(!this.mescroll || !this.mescroll.resetUpScroll){ 29 | let mescrollRef = this.$refs.mescrollRef; 30 | if(mescrollRef) this.mescroll = mescrollRef.mescroll 31 | } 32 | }, 33 | // 下拉刷新的回调 (mixin默认resetUpScroll) 34 | downCallback() { 35 | if(this.mescroll.optUp.use){ 36 | this.mescroll.resetUpScroll() 37 | }else{ 38 | setTimeout(()=>{ 39 | this.mescroll.endSuccess(); 40 | }, 500) 41 | } 42 | }, 43 | // 上拉加载的回调 44 | upCallback() { 45 | // mixin默认延时500自动结束加载 46 | setTimeout(()=>{ 47 | this.mescroll.endErr(); 48 | }, 500) 49 | } 50 | }, 51 | mounted() { 52 | this.mescrollInitByRef(); // 兼容字节跳动小程序, 避免未设置@init或@init此时未能取到ref的情况 53 | } 54 | 55 | } 56 | 57 | export default MescrollMixin; 58 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-uni-option.js: -------------------------------------------------------------------------------- 1 | // 全局配置 2 | // mescroll-body 和 mescroll-uni 通用 3 | const GlobalOption = { 4 | down: { 5 | // 其他down的配置参数也可以写,这里只展示了常用的配置: 6 | offset: 80, // 在列表顶部,下拉大于80px,松手即可触发下拉刷新的回调 7 | native: false // 是否使用系统自带的下拉刷新; 默认false; 仅在mescroll-body生效 (值为true时,还需在pages配置enablePullDownRefresh:true;详请参考mescroll-native的案例) 8 | }, 9 | up: { 10 | // 其他up的配置参数也可以写,这里只展示了常用的配置: 11 | offset: 150, // 距底部多远时,触发upCallback,仅mescroll-uni生效 ( mescroll-body配置的是pages.json的 onReachBottomDistance ) 12 | toTop: { 13 | // 回到顶部按钮,需配置src才显示 14 | src: "https://www.mescroll.com/img/mescroll-totop.png", // 图片路径 (建议放入static目录, 如 /static/img/mescroll-totop.png ) 15 | offset: 1000, // 列表滚动多少距离才显示回到顶部按钮,默认1000px 16 | right: 20, // 到右边的距离, 默认20 (支持"20rpx", "20px", "20%"格式的值, 纯数字则默认单位rpx) 17 | bottom: 120, // 到底部的距离, 默认120 (支持"20rpx", "20px", "20%"格式的值, 纯数字则默认单位rpx) 18 | width: 72 // 回到顶部图标的宽度, 默认72 (支持"20rpx", "20px", "20%"格式的值, 纯数字则默认单位rpx) 19 | }, 20 | empty: { 21 | use: true, // 是否显示空布局 22 | icon: "https://www.mescroll.com/img/mescroll-empty.png" // 图标路径 (建议放入static目录, 如 /static/img/mescroll-empty.png ) 23 | } 24 | }, 25 | // 国际化配置 26 | i18n: { 27 | // 中文 28 | zh: { 29 | down: { 30 | textInOffset: '下拉刷新', // 下拉的距离在offset范围内的提示文本 31 | textOutOffset: '释放更新', // 下拉的距离大于offset范围的提示文本 32 | textLoading: '加载中 ...', // 加载中的提示文本 33 | textSuccess: '加载成功', // 加载成功的文本 34 | textErr: '加载失败', // 加载失败的文本 35 | }, 36 | up: { 37 | textLoading: '加载中 ...', // 加载中的提示文本 38 | textNoMore: '-- END --', // 没有更多数据的提示文本 39 | empty: { 40 | tip: '~ 空空如也 ~' // 空提示 41 | } 42 | } 43 | }, 44 | // 英文 45 | en: { 46 | down: { 47 | textInOffset: 'drop down refresh', 48 | textOutOffset: 'release updates', 49 | textLoading: 'loading ...', 50 | textSuccess: 'loaded successfully', 51 | textErr: 'loading failed' 52 | }, 53 | up: { 54 | textLoading: 'loading ...', 55 | textNoMore: '-- END --', 56 | empty: { 57 | tip: '~ absolutely empty ~' 58 | } 59 | } 60 | } 61 | } 62 | } 63 | 64 | export default GlobalOption 65 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-uni.css: -------------------------------------------------------------------------------- 1 | .mescroll-uni-warp{ 2 | height: 100%; 3 | } 4 | 5 | .mescroll-uni-content{ 6 | height: 100%; 7 | } 8 | 9 | .mescroll-uni { 10 | position: relative; 11 | width: 100%; 12 | height: 100%; 13 | min-height: 200rpx; 14 | overflow-y: auto; 15 | box-sizing: border-box; /* 避免设置padding出现双滚动条的问题 */ 16 | } 17 | 18 | /* 定位的方式固定高度 */ 19 | .mescroll-uni-fixed{ 20 | z-index: 1; 21 | position: fixed; 22 | top: 0; 23 | left: 0; 24 | right: 0; 25 | bottom: 0; 26 | width: auto; /* 使right生效 */ 27 | height: auto; /* 使bottom生效 */ 28 | } 29 | 30 | /* 适配 iPhoneX */ 31 | @supports (bottom: constant(safe-area-inset-bottom)) or (bottom: env(safe-area-inset-bottom)) { 32 | .mescroll-safearea { 33 | padding-bottom: constant(safe-area-inset-bottom); 34 | padding-bottom: env(safe-area-inset-bottom); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/mescroll-uni/components/mescroll-uni/mixins/mescroll-comp.js: -------------------------------------------------------------------------------- 1 | /** 2 | * mescroll-body写在子组件时,需通过mescroll的mixins补充子组件缺少的生命周期 3 | */ 4 | const MescrollCompMixin = { 5 | // 因为子组件无onPageScroll和onReachBottom的页面生命周期,需在页面传递进到子组件 (一级) 6 | onPageScroll(e) { 7 | this.handlePageScroll(e) 8 | }, 9 | onReachBottom() { 10 | this.handleReachBottom() 11 | }, 12 | // 当down的native: true时, 还需传递此方法进到子组件 13 | onPullDownRefresh(){ 14 | this.handlePullDownRefresh() 15 | }, 16 | data() { 17 | return { 18 | mescroll: { // mescroll-body写在子子子...组件的情况 (多级) 19 | onPageScroll: e=>{ 20 | this.handlePageScroll(e) 21 | }, 22 | onReachBottom: ()=>{ 23 | this.handleReachBottom() 24 | }, 25 | onPullDownRefresh: ()=>{ 26 | this.handlePullDownRefresh() 27 | } 28 | } 29 | } 30 | }, 31 | methods:{ 32 | handlePageScroll(e){ 33 | let item = this.$refs["mescrollItem"]; 34 | if(item && item.mescroll) item.mescroll.onPageScroll(e); 35 | }, 36 | handleReachBottom(){ 37 | let item = this.$refs["mescrollItem"]; 38 | if(item && item.mescroll) item.mescroll.onReachBottom(); 39 | }, 40 | handlePullDownRefresh(){ 41 | let item = this.$refs["mescrollItem"]; 42 | if(item && item.mescroll) item.mescroll.onPullDownRefresh(); 43 | } 44 | } 45 | } 46 | 47 | export default MescrollCompMixin; 48 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/mescroll-uni/components/mescroll-uni/mixins/mescroll-more-item.js: -------------------------------------------------------------------------------- 1 | /** 2 | * mescroll-more-item的mixins, 仅在多个 mescroll-body 写在子组件时使用 (参考 mescroll-more 案例) 3 | */ 4 | const MescrollMoreItemMixin = { 5 | // 支付宝小程序不支持props的mixin,需写在具体的页面中 6 | // #ifndef MP-ALIPAY || MP-DINGTALK 7 | props:{ 8 | i: Number, // 每个tab页的专属下标 9 | index: { // 当前tab的下标 10 | type: Number, 11 | default(){ 12 | return 0 13 | } 14 | } 15 | }, 16 | // #endif 17 | data() { 18 | return { 19 | downOption:{ 20 | auto:false // 不自动加载 21 | }, 22 | upOption:{ 23 | auto:false // 不自动加载 24 | }, 25 | isInit: false // 当前tab是否已初始化 26 | } 27 | }, 28 | watch:{ 29 | // 监听下标的变化 30 | index(val){ 31 | if (this.i === val && !this.isInit) this.mescrollTrigger() 32 | } 33 | }, 34 | methods: { 35 | // 以ref的方式初始化mescroll对象 (兼容字节跳动小程序) 36 | mescrollInitByRef() { 37 | if(!this.mescroll || !this.mescroll.resetUpScroll){ 38 | // 字节跳动小程序编辑器不支持一个页面存在相同的ref, 多mescroll的ref需动态生成, 格式为'mescrollRef下标' 39 | let mescrollRef = this.$refs.mescrollRef || this.$refs['mescrollRef'+this.i]; 40 | if(mescrollRef) this.mescroll = mescrollRef.mescroll 41 | } 42 | }, 43 | // mescroll组件初始化的回调,可获取到mescroll对象 (覆盖mescroll-mixins.js的mescrollInit, 为了标记isInit) 44 | mescrollInit(mescroll) { 45 | this.mescroll = mescroll; 46 | this.mescrollInitByRef && this.mescrollInitByRef(); // 兼容字节跳动小程序 47 | // 自动加载当前tab的数据 48 | if(this.i === this.index){ 49 | this.mescrollTrigger() 50 | } 51 | }, 52 | // 主动触发加载 53 | mescrollTrigger(){ 54 | this.isInit = true; // 标记为true 55 | if (this.mescroll) { 56 | if (this.mescroll.optDown.use) { 57 | this.mescroll.triggerDownScroll(); 58 | } else{ 59 | this.mescroll.triggerUpScroll(); 60 | } 61 | } 62 | } 63 | } 64 | } 65 | 66 | export default MescrollMoreItemMixin; 67 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/mescroll-uni/components/mescroll-uni/mixins/mescroll-more.js: -------------------------------------------------------------------------------- 1 | /** 2 | * mescroll-body写在子组件时, 需通过mescroll的mixins补充子组件缺少的生命周期 3 | */ 4 | const MescrollMoreMixin = { 5 | data() { 6 | return { 7 | tabIndex: 0, // 当前tab下标 8 | mescroll: { // mescroll-body写在子子子...组件的情况 (多级) 9 | onPageScroll: e=>{ 10 | this.handlePageScroll(e) 11 | }, 12 | onReachBottom: ()=>{ 13 | this.handleReachBottom() 14 | }, 15 | onPullDownRefresh: ()=>{ 16 | this.handlePullDownRefresh() 17 | } 18 | } 19 | } 20 | }, 21 | // 因为子组件无onPageScroll和onReachBottom的页面生命周期,需在页面传递进到子组件 22 | onPageScroll(e) { 23 | this.handlePageScroll(e) 24 | }, 25 | onReachBottom() { 26 | this.handleReachBottom() 27 | }, 28 | // 当down的native: true时, 还需传递此方法进到子组件 29 | onPullDownRefresh(){ 30 | this.handlePullDownRefresh() 31 | }, 32 | methods:{ 33 | handlePageScroll(e){ 34 | let mescroll = this.getMescroll(this.tabIndex); 35 | mescroll && mescroll.onPageScroll(e); 36 | }, 37 | handleReachBottom(){ 38 | let mescroll = this.getMescroll(this.tabIndex); 39 | mescroll && mescroll.onReachBottom(); 40 | }, 41 | handlePullDownRefresh(){ 42 | let mescroll = this.getMescroll(this.tabIndex); 43 | mescroll && mescroll.onPullDownRefresh(); 44 | }, 45 | // 根据下标获取对应子组件的mescroll 46 | getMescroll(i){ 47 | if(!this.mescrollItems) this.mescrollItems = []; 48 | if(!this.mescrollItems[i]) { 49 | // v-for中的refs 50 | let vForItem = this.$refs["mescrollItem"]; 51 | if(vForItem){ 52 | this.mescrollItems[i] = vForItem[i] 53 | }else{ 54 | // 普通的refs,不可重复 55 | this.mescrollItems[i] = this.$refs["mescrollItem"+i]; 56 | } 57 | } 58 | let item = this.mescrollItems[i] 59 | return item ? item.mescroll : null 60 | }, 61 | // 切换tab,恢复滚动条位置 62 | tabChange(i){ 63 | let mescroll = this.getMescroll(i); 64 | if(mescroll){ 65 | // 延时(比$nextTick靠谱一些),确保元素已渲染 66 | setTimeout(()=>{ 67 | mescroll.scrollTo(mescroll.getScrollTop(),0) 68 | },30) 69 | } 70 | } 71 | } 72 | } 73 | 74 | export default MescrollMoreMixin; 75 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/mescroll-uni/components/mescroll-uni/wxs/renderjs.js: -------------------------------------------------------------------------------- 1 | // 使用renderjs直接操作window对象,实现动态控制app和h5的bounce 2 | // bounce: iOS橡皮筋,Android半月弧,h5浏览器下拉背景等效果 (下拉刷新时禁止) 3 | // https://uniapp.dcloud.io/frame?id=renderjs 4 | 5 | // 与wxs的me实例一致 6 | var me = {} 7 | 8 | // 初始化window对象的touch事件 (仅初始化一次) 9 | if(window && !window.$mescrollRenderInit){ 10 | window.$mescrollRenderInit = true 11 | 12 | 13 | window.addEventListener('touchstart', function(e){ 14 | if (me.disabled()) return; 15 | me.startPoint = me.getPoint(e); // 记录起点 16 | }, {passive: true}) 17 | 18 | 19 | window.addEventListener('touchmove', function(e){ 20 | if (me.disabled()) return; 21 | if (me.getScrollTop() > 0) return; // 需在顶部下拉,才禁止bounce 22 | 23 | var curPoint = me.getPoint(e); // 当前点 24 | var moveY = curPoint.y - me.startPoint.y; // 和起点比,移动的距离,大于0向下拉,小于0向上拉 25 | // 向下拉 26 | if (moveY > 0) { 27 | // 可下拉的条件 28 | if (!me.isDownScrolling && !me.optDown.isLock && (!me.isUpScrolling || (me.isUpScrolling && me.isUpBoth))) { 29 | 30 | // 只有touch在mescroll的view上面,才禁止bounce 31 | var el = e.target; 32 | var isMescrollTouch = false; 33 | while (el && el.tagName && el.tagName !== 'UNI-PAGE-BODY' && el.tagName != "BODY") { 34 | var cls = el.classList; 35 | if (cls && cls.contains('mescroll-render-touch')) { 36 | isMescrollTouch = true 37 | break; 38 | } 39 | el = el.parentNode; // 继续检查其父元素 40 | } 41 | // 禁止bounce (不会对swiper和iOS侧滑返回造成影响) 42 | if (isMescrollTouch && e.cancelable && !e.defaultPrevented) e.preventDefault(); 43 | } 44 | } 45 | }, {passive: false}) 46 | } 47 | 48 | /* 获取滚动条的位置 */ 49 | me.getScrollTop = function() { 50 | return me.scrollTop || 0 51 | } 52 | 53 | /* 是否禁用下拉刷新 */ 54 | me.disabled = function(){ 55 | return !me.optDown || !me.optDown.use || me.optDown.native 56 | } 57 | 58 | /* 根据点击滑动事件获取第一个手指的坐标 */ 59 | me.getPoint = function(e) { 60 | if (!e) { 61 | return {x: 0,y: 0} 62 | } 63 | if (e.touches && e.touches[0]) { 64 | return {x: e.touches[0].pageX,y: e.touches[0].pageY} 65 | } else if (e.changedTouches && e.changedTouches[0]) { 66 | return {x: e.changedTouches[0].pageX,y: e.changedTouches[0].pageY} 67 | } else { 68 | return {x: e.clientX,y: e.clientY} 69 | } 70 | } 71 | 72 | /** 73 | * 监听逻辑层数据的变化 (实时更新数据) 74 | */ 75 | function propObserver(wxsProp) { 76 | me.optDown = wxsProp.optDown 77 | me.scrollTop = wxsProp.scrollTop 78 | me.isDownScrolling = wxsProp.isDownScrolling 79 | me.isUpScrolling = wxsProp.isUpScrolling 80 | me.isUpBoth = wxsProp.isUpBoth 81 | } 82 | 83 | /* 导出模块 */ 84 | const renderBiz = { 85 | data() { 86 | return { 87 | propObserver: propObserver, 88 | } 89 | } 90 | } 91 | 92 | export default renderBiz; -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/mescroll-uni/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "mescroll-uni", 3 | "displayName": "【wxs+renderjs实现】高性能的下拉刷新上拉加载组件", 4 | "version": "1.3.7", 5 | "description": "mescroll - 支持uni-app的下拉刷新和上拉加载的组件,支持原生页面和局部区域滚动", 6 | "keywords": [ 7 | "下拉刷新", 8 | "上拉加载", 9 | "翻页", 10 | "分页", 11 | "wxs" 12 | ], 13 | "repository": "https://github.com/mescroll/mescroll", 14 | "engines": { 15 | "HBuilderX": "^3.1.0" 16 | }, 17 | "dcloudext": { 18 | "category": [ 19 | "前端组件", 20 | "通用组件" 21 | ], 22 | "sale": { 23 | "regular": { 24 | "price": "0.00" 25 | }, 26 | "sourcecode": { 27 | "price": "0.00" 28 | } 29 | }, 30 | "contact": { 31 | "qq": "" 32 | }, 33 | "declaration": { 34 | "ads": "无", 35 | "data": "无", 36 | "permissions": "无" 37 | }, 38 | "npmurl": "https://www.npmjs.com/package/mescroll-uni" 39 | }, 40 | "uni_modules": { 41 | "dependencies": [], 42 | "encrypt": [], 43 | "platforms": { 44 | "cloud": { 45 | "tcb": "y", 46 | "aliyun": "y" 47 | }, 48 | "client": { 49 | "App": { 50 | "app-vue": "y", 51 | "app-nvue": "y" 52 | }, 53 | "H5-mobile": { 54 | "Safari": "y", 55 | "Android Browser": "y", 56 | "微信浏览器(Android)": "y", 57 | "QQ浏览器(Android)": "y" 58 | }, 59 | "H5-pc": { 60 | "Chrome": "y", 61 | "IE": "y", 62 | "Edge": "y", 63 | "Firefox": "y", 64 | "Safari": "y" 65 | }, 66 | "小程序": { 67 | "微信": "y", 68 | "阿里": "y", 69 | "百度": "y", 70 | "字节跳动": "y", 71 | "QQ": "y" 72 | }, 73 | "快应用": { 74 | "华为": "y", 75 | "联盟": "y" 76 | } 77 | } 78 | } 79 | } 80 | } -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/mescroll-uni/readme.md: -------------------------------------------------------------------------------- 1 | ## mescroll --【wxs+renderjs实现】高性能的下拉刷新上拉加载组件 2 | 1. mescroll的uni版本 是专门用在uni-app的下拉刷新和上拉加载的组件 3 | 4 | 2. mescroll的uni版本 继承了mescroll.js的实用功能: 自动处理分页, 自动控制无数据, 空布局提示, 回到顶部按钮 .. 5 | 6 | 3. mescroll的uni版本 丰富的案例, 自由灵活的api, 超详细的注释, 可让您快速自定义真正属于自己的下拉上拉组件 7 | 8 |
9 | 10 | 11 | ## 最新文档(1.3.7版本): https://www.mescroll.com/uni.html 12 | 2021-04-13 by 小瑾同学 (文档可能会有缓存,建议打开时刷新一下) 13 | 14 | 15 | ## 1.3.5版本已调整为[uni_modules](https://uniapp.dcloud.io/uni_modules) 16 | uni_modules版本的mescroll-body 和 mescroll-empty 支持 [easycom规范](https://uniapp.dcloud.io/collocation/pages?id=easycom) 17 | 所以 main.js 无需再为mescroll-body注册全局组件 18 | 所以个别页面要单独使用 mescroll-empty , 也无需手动注册 19 | #### 1.3.5以前的用户升级为uni_modules版本: 20 | ``` 21 | 1. 删除原来的 @/components/mescroll-uni 组件 22 | 2. 删除 main.js 注册的 mescroll 组件 23 | 3. 从插件市场导入最新mescroll组件 (1.3.5+uni_modules版本) 24 | 4. 全局搜索 '@/components/mescroll-uni/' 替换为 '@/uni_modules/mescroll-uni/components/mescroll-uni/' 25 | 5. mescroll-empty遵循easycom规范, 若某些页面单独使用 'mescroll-empty.vue', 可删除手动导入的代码 26 | ``` 27 | 28 | ## 近期已更新优化的内容: 29 | 1. 微信小程序, app, h5使用高性能wxs和renderjs, 下拉刷新更流畅丝滑, 尤其能明显解决Android小程序下拉卡顿的问题 30 | 2. 新增`入门极简`示例, 国际化`mescroll-i18n.vue`示例, 轮播吸顶菜单`mescroll-swiper-sticky.vue`示例 31 | 3. 新增 "局部区域滚动" 的案例: mescroll-body-part.vue 和 mescroll-uni-part.vue 32 | 4. 新增 me-video 视频组件, 解决APP端视频下拉悬浮错位的问题, 参考 mescroll-options.vue 示例 33 | 5. 新增 me-tabs 组件,tabs支持水平滑动; 优化mescroll-more和mescroll-swiper的案例, 顶部tab支持水平滑动 34 | 6. 吸顶悬浮提供了原生sticky和监听滚动条实现的示例: sticky.vue 和 sticky-scroll.vue (推荐使用sticky样式实现) 35 | 7. mescroll.scrollTo(y)的y支持css选择器, 包括跨自定义组件的后代选择器, 支持滚动到子组件的view (参考 mescroll-options.vue) 36 | 8. topbar 顶部是否预留状态栏的高度, 默认false; 还可支持设置状态栏背景: 如 '#ffff00', 'url(xxx) 0 0/100% 100%', 'linear-gradient(xx)' 37 | 9. down.bgColor 和 up.bgColor 加载区域的背景,不仅支持色值, 而且还是支持背景图和渐变: 如 'url(xxx) 0 0/100% 100%', 'linear-gradient(xx)' 38 | 10. topbar,bgColor支持一行代码定义background: [https://www.runoob.com/cssref/css3-pr-background.html](https://www.runoob.com/cssref/css3-pr-background.html) 39 |
40 |
41 | 查看更多 ... 42 | 43 |
44 | 45 | #### mescroll不支持nvue,也暂无支持的计划哈,so sorry~ -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/uni-captcha/changelog.md: -------------------------------------------------------------------------------- 1 | ## 0.1.0(2021-03-01) 2 | - 调整为uni_modules目录规范 3 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/uni-captcha/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "uni-captcha", 3 | "displayName": "uni-captcha", 4 | "version": "0.1.0", 5 | "description": "简洁、高效、灵活可配置的云端验证码模块", 6 | "keywords": [ 7 | "uniCloud", 8 | "captcha", 9 | "验证码", 10 | "图形验证码", 11 | "人机验证" 12 | ], 13 | "repository": "https://gitee.com/dcloud/uni-captcha", 14 | "engines": { 15 | "HBuilderX": "^3.1.0" 16 | }, 17 | "dcloudext": { 18 | "category": [ 19 | "uniCloud", 20 | "云函数模板" 21 | ], 22 | "sale": { 23 | "regular": { 24 | "price": "0.00" 25 | }, 26 | "sourcecode": { 27 | "price": "0.00" 28 | } 29 | }, 30 | "contact": { 31 | "qq": "" 32 | }, 33 | "declaration": { 34 | "ads": "无", 35 | "data": "无", 36 | "permissions": "无" 37 | }, 38 | "npmurl": "" 39 | }, 40 | "uni_modules": { 41 | "dependencies": [], 42 | "encrypt": [], 43 | "platforms": { 44 | "cloud": { 45 | "tcb": "y", 46 | "aliyun": "y" 47 | }, 48 | "client": { 49 | "App": { 50 | "app-vue": "u", 51 | "app-nvue": "u" 52 | }, 53 | "H5-mobile": { 54 | "Safari": "u", 55 | "Android Browser": "u", 56 | "微信浏览器(Android)": "u", 57 | "QQ浏览器(Android)": "u" 58 | }, 59 | "H5-pc": { 60 | "Chrome": "u", 61 | "IE": "u", 62 | "Edge": "u", 63 | "Firefox": "u", 64 | "Safari": "u" 65 | }, 66 | "小程序": { 67 | "微信": "u", 68 | "阿里": "u", 69 | "百度": "u", 70 | "字节跳动": "u", 71 | "QQ": "u" 72 | }, 73 | "快应用": { 74 | "华为": "u", 75 | "联盟": "u" 76 | } 77 | } 78 | } 79 | } 80 | } -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/uni-captcha/uniCloud/cloudfunctions/common/uni-captcha/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "uni-captcha", 3 | "version": "0.1.0", 4 | "description": "uni-captcha", 5 | "main": "index.js", 6 | "homepage": "https://ext.dcloud.net.cn/plugin?id=4048", 7 | "repository": { 8 | "type": "git", 9 | "url": "git+https://gitee.com/dcloud/uni-captcha" 10 | }, 11 | "author": "DCloud", 12 | "license": "Apache-2.0" 13 | } -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/uni-config-center/changelog.md: -------------------------------------------------------------------------------- 1 | ## 0.0.1(2021-03-15) 2 | - 初始化项目 3 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/uni-config-center/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "uni-config-center", 3 | "displayName": "uni-config-center", 4 | "version": "0.0.1", 5 | "description": "uniCloud 配置中心", 6 | "keywords": [ 7 | "配置", 8 | "配置中心" 9 | ], 10 | "repository": "", 11 | "engines": { 12 | "HBuilderX": "^3.1.0" 13 | }, 14 | "dcloudext": { 15 | "category": [ 16 | "uniCloud", 17 | "云函数模板" 18 | ], 19 | "sale": { 20 | "regular": { 21 | "price": 0 22 | }, 23 | "sourcecode": { 24 | "price": 0 25 | } 26 | }, 27 | "contact": { 28 | "qq": "" 29 | }, 30 | "declaration": { 31 | "ads": "无", 32 | "data": "无", 33 | "permissions": "无" 34 | }, 35 | "npmurl": "" 36 | }, 37 | "directories": { 38 | "example": "../../../scripts/dist" 39 | }, 40 | "uni_modules": { 41 | "dependencies": [], 42 | "encrypt": [], 43 | "platforms": { 44 | "cloud": { 45 | "tcb": "y", 46 | "aliyun": "y" 47 | }, 48 | "client": { 49 | "App": { 50 | "app-vue": "u", 51 | "app-nvue": "u" 52 | }, 53 | "H5-mobile": { 54 | "Safari": "u", 55 | "Android Browser": "u", 56 | "微信浏览器(Android)": "u", 57 | "QQ浏览器(Android)": "u" 58 | }, 59 | "H5-pc": { 60 | "Chrome": "u", 61 | "IE": "u", 62 | "Edge": "u", 63 | "Firefox": "u", 64 | "Safari": "u" 65 | }, 66 | "小程序": { 67 | "微信": "u", 68 | "阿里": "u", 69 | "百度": "u", 70 | "字节跳动": "u", 71 | "QQ": "u" 72 | }, 73 | "快应用": { 74 | "华为": "u", 75 | "联盟": "u" 76 | } 77 | } 78 | } 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/uni-config-center/readme.md: -------------------------------------------------------------------------------- 1 | # 为什么使用uni-config-center 2 | 3 | 实际开发中很多插件需要配置文件才可以正常运行,如果每个插件都单独进行配置的话就会产生下面这样的目录结构 4 | 5 | ```bash 6 | cloudfunctions 7 | └─────common 公共模块 8 | ├─plugin-a // 插件A对应的目录 9 | │ ├─index.js 10 | │ ├─config.json // plugin-a对应的配置文件 11 | │ └─other-file.cert // plugin-a依赖的其他文件 12 | └─plugin-b // plugin-b对应的目录 13 | ├─index.js 14 | └─config.json // plugin-b对应的配置文件 15 | ``` 16 | 17 | 假设插件作者要发布一个项目模板,里面使用了很多需要配置的插件,无论是作者发布还是用户使用都是一个大麻烦。 18 | 19 | uni-config-center就是用了统一管理这些配置文件的,使用uni-config-center后的目录结构如下 20 | 21 | ```bash 22 | cloudfunctions 23 | └─────common 公共模块 24 | ├─plugin-a // 插件A对应的目录 25 | │ └─index.js 26 | ├─plugin-b // plugin-b对应的目录 27 | │ └─index.js 28 | └─uni-config-center 29 | ├─index.js // config-center入口文件 30 | ├─plugin-a 31 | │ ├─config.json // plugin-a对应的配置文件 32 | │ └─other-file.cert // plugin-a依赖的其他文件 33 | └─plugin-b 34 | └─config.json // plugin-b对应的配置文件 35 | ``` 36 | 37 | 使用uni-config-center后的优势 38 | 39 | - 配置文件统一管理,对插件作者来说发布插件更简单了,对用户来说使用也更简单了 40 | - 支持对config.json设置schema,插件使用者在HBuilderX内编写config.json文件时会有更好的提示(后续HBuilderX会提供支持) 41 | 42 | # 用法 43 | 44 | 在要使用uni-config-center的公共模块或云函数内引入uni-config-center依赖,请参考:[使用公共模块](https://uniapp.dcloud.net.cn/uniCloud/cf-common) 45 | 46 | ```js 47 | const createConfig = require('uni-config-center') 48 | 49 | const uniIdConfig = createConfig({ 50 | pluginId: 'uni-id', // 插件id 51 | defaultConfig: { // 默认配置 52 | tokenExpiresIn: 7200, 53 | tokenExpiresThreshold: 600, 54 | }, 55 | customMerge: function(defaultConfig, userConfig) { // 自定义默认配置和用户配置的合并规则,不设置的情况侠会对默认配置和用户配置进行深度合并 56 | // defaudltConfig 默认配置 57 | // userConfig 用户配置 58 | return Object.assign(defaultConfig, userConfig) 59 | } 60 | }) 61 | 62 | 63 | // 以如下配置为例 64 | // { 65 | // "tokenExpiresIn": 7200, 66 | // "passwordErrorLimit": 6, 67 | // "bindTokenToDevice": false, 68 | // "passwordErrorRetryTime": 3600, 69 | // "app-plus": { 70 | // "tokenExpiresIn": 2592000 71 | // }, 72 | // "service": { 73 | // "sms": { 74 | // "codeExpiresIn": 300 75 | // } 76 | // } 77 | // } 78 | 79 | // 获取配置 80 | uniIdConfig.config() // 获取全部配置,注意:uni-config-center内不存在对应插件目录时会返回空对象 81 | uniIdConfig.config('tokenExpiresIn') // 指定键值获取配置,返回:7200 82 | uniIdConfig.config('service.sms.codeExpiresIn') // 指定键值获取配置,返回:300 83 | uniIdConfig.config('tokenExpiresThreshold', 600) // 指定键值获取配置,如果不存在则取传入的默认值,返回:600 84 | 85 | // 获取文件绝对路径 86 | uniIdConfig.resolve('custom-token.js') // 获取uni-config-center/uni-id/custom-token.js文件的路径 87 | 88 | // 引用文件(require) 89 | uniIDConfig.requireFile('custom-token.js') // 使用require方式引用uni-config-center/uni-id/custom-token.js文件。文件不存在时返回undefined,文件内有其他错误导致require失败时会抛出错误。 90 | 91 | // 判断是否包含某文件 92 | uniIDConfig.hasFile('custom-token.js') // 配置目录是否包含某文件,true: 文件存在,false: 文件不存在 93 | ``` -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "uni-config-center", 3 | "version": "0.0.1", 4 | "description": "配置中心", 5 | "main": "index.js", 6 | "keywords": [], 7 | "author": "fxy060608", 8 | "license": "Apache-2.0" 9 | } -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center/uni-id/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "passwordSecret": "passwordSecret-demo", 3 | "tokenSecret": "tokenSecret-demo", 4 | "tokenExpiresIn": 7200, 5 | "tokenExpiresThreshold": 600, 6 | "passwordErrorLimit": 6, 7 | "passwordErrorRetryTime": 3600, 8 | "autoSetInviteCode": false, 9 | "forceInviteCode": false, 10 | "app-plus": { 11 | "tokenExpiresIn": 2592000, 12 | "oauth" : { 13 | "weixin" : { 14 | "appid" : "weixin appid", 15 | "appsecret" : "weixin appsecret" 16 | } 17 | } 18 | }, 19 | "mp-weixin": { 20 | "oauth" : { 21 | "weixin" : { 22 | "appid" : "wx24f9bf180110784b", 23 | "appsecret" : "wx24f9bf180110784b" 24 | } 25 | } 26 | }, 27 | "mp-alipay": { 28 | "oauth" : { 29 | "alipay" : { 30 | "appid" : "alipay appid", 31 | "privateKey" : "alipay privateKey" 32 | } 33 | } 34 | }, 35 | "service": { 36 | "sms": { 37 | "name": "DCloud", 38 | "codeExpiresIn": 300, 39 | "smsKey": "your sms key", 40 | "smsSecret": "your sms secret" 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/uni-id/changelog.md: -------------------------------------------------------------------------------- 1 | ## 3.0.12(2021-04-13) 2 | - 调整bindTokenToDevice默认值为false 3 | ## 3.0.11(2021-04-12) 4 | - 修复3.0.7版本引出的多个用户访问时可能出现30201报错的Bug 5 | ## 3.0.10(2021-04-08) 6 | - 优化错误提示 7 | ## 3.0.9(2021-04-08) 8 | - bindMobile接口支持通过一键登录的方式绑定 9 | - 优化错误提示 10 | ## 3.0.8(2021-03-19) 11 | - 修复 3.0.7版本某些情况下生成token报错的Bug 12 | ## 3.0.7(2021-03-19) 13 | - 新增 支持uni-config-center,更新uni-id无须再担心配置被覆盖 [详情](https://uniapp.dcloud.io/uniCloud/uni-id?id=uni-config-center) 14 | - 新增 自定义token内容,可以缓存角色权限之外的更多信息到客户端 [详情](https://uniapp.dcloud.io/uniCloud/uni-id?id=custom-token) 15 | - 新增 支持传入context获取uni-id实例,防止单实例多并发时全局context混乱 [详情](https://uniapp.dcloud.io/uniCloud/uni-id?id=create-instance) 16 | ## 3.0.6(2021-03-05) 17 | - 新增[uniID.wxBizDataCrypt](https://uniapp.dcloud.io/uniCloud/uni-id?id=%e5%be%ae%e4%bf%a1%e6%95%b0%e6%8d%ae%e8%a7%a3%e5%af%86)方法 18 | - 优化loginByApple方法,提高接口响应速度 19 | ## 3.0.5(2021-02-03) 20 | - 调整为uni_modules目录规范 21 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/uni-id/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "uni-id", 3 | "displayName": "uni-id", 4 | "version": "3.0.12", 5 | "description": "简单、统一、可扩展的用户中心", 6 | "keywords": [ 7 | "uniid", 8 | "uni-id", 9 | "用户管理", 10 | "用户中心", 11 | "短信验证码" 12 | ], 13 | "repository": "https://gitee.com/dcloud/uni-id.git", 14 | "engines": { 15 | "HBuilderX": "^3.1.0" 16 | }, 17 | "dcloudext": { 18 | "category": [ 19 | "uniCloud", 20 | "云函数模板" 21 | ], 22 | "sale": { 23 | "regular": { 24 | "price": "0.00" 25 | }, 26 | "sourcecode": { 27 | "price": "0.00" 28 | } 29 | }, 30 | "contact": { 31 | "qq": "" 32 | }, 33 | "declaration": { 34 | "ads": "无", 35 | "data": "无", 36 | "permissions": "无" 37 | }, 38 | "npmurl": "" 39 | }, 40 | "uni_modules": { 41 | "dependencies": ["uni-config-center"], 42 | "encrypt": [], 43 | "platforms": { 44 | "cloud": { 45 | "tcb": "y", 46 | "aliyun": "y" 47 | }, 48 | "client": { 49 | "App": { 50 | "app-vue": "u", 51 | "app-nvue": "u" 52 | }, 53 | "H5-mobile": { 54 | "Safari": "u", 55 | "Android Browser": "u", 56 | "微信浏览器(Android)": "u", 57 | "QQ浏览器(Android)": "u" 58 | }, 59 | "H5-pc": { 60 | "Chrome": "u", 61 | "IE": "u", 62 | "Edge": "u", 63 | "Firefox": "u", 64 | "Safari": "u" 65 | }, 66 | "小程序": { 67 | "微信": "u", 68 | "阿里": "u", 69 | "百度": "u", 70 | "字节跳动": "u", 71 | "QQ": "u" 72 | }, 73 | "快应用": { 74 | "华为": "u", 75 | "联盟": "u" 76 | } 77 | } 78 | } 79 | } 80 | } -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/uni-id/readme.md: -------------------------------------------------------------------------------- 1 | **文档已移至[uni-id文档](https://uniapp.dcloud.net.cn/uniCloud/uni-id)** 2 | 3 | > 一般uni-id升级大版本时为不兼容更新,从低版本迁移到高版本请参考:[uni-id迁移指南](https://uniapp.dcloud.net.cn/uniCloud/uni-id?id=migration) 4 | 5 | ## 重要升级说明 6 | 7 | **uni-id 3.x版本,搭配的uniCloud admin版本需大于1.2.10。** 8 | 9 | ### 缓存角色权限 10 | 11 | 自`uni-id 3.0.0`起,支持在token内缓存用户的角色权限,默认开启此功能,各登录接口的needPermission参数不再生效。如需关闭请在config内配置`"removePermissionAndRoleFromToken": true`。 12 | 13 | 为什么要缓存角色权限?要知道云数据库是按照读写次数来收取费用的,并且读写数据库会拖慢接口响应速度。未配置`"removePermissionAndRoleFromToken": true`的情况下,可以在调用checkToken接口时不查询数据库获取用户角色权限。 14 | 15 | 详细checkToken流程如下: 16 | 17 | ![](https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/ed45d350-5a4d-11eb-b997-9918a5dda011.jpg) 18 | 19 | 可以看出,旧版token(removePermissionAndRoleFromToken为true时生成的)在checkToken时如需返回权限需要进行两次数据库查询。新版token不需要查库即可返回权限信息。 20 | 21 | **注意** 22 | 23 | - 由于角色权限缓存在token内,可能会存在权限已经更新但是用户token未过期之前依然是旧版角色权限的情况。可以调短一些token过期时间来减少这种情况的影响。 24 | - admin角色token内不包含permission,如需自行判断用户是否有某个权限,要注意admin角色需要额外判断一下,写法如下 25 | ```js 26 | const { 27 | role, 28 | permission 29 | } = await uniID.checkToken(event.uniIdToken) 30 | if(role.includes('admin') || permission.includes('your permission id')) { 31 | // 当前角色拥有'your permission id'对应的权限 32 | } 33 | ``` -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "uni-id", 3 | "version": "3.0.12", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "uni-config-center": { 8 | "version": "file:../../../../../uni-config-center/uniCloud/cloudfunctions/common/uni-config-center" 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "uni-id", 3 | "version": "3.0.12", 4 | "description": "uni-id for uniCloud", 5 | "main": "index.js", 6 | "homepage": "https://uniapp.dcloud.io/uniCloud/uni-id", 7 | "repository": { 8 | "type": "git", 9 | "url": "git+https://gitee.com/dcloud/uni-id.git" 10 | }, 11 | "author": "", 12 | "license": "Apache-2.0", 13 | "dependencies": { 14 | "uni-config-center": "file:../../../../../uni-config-center/uniCloud/cloudfunctions/common/uni-config-center" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/uni-load-more/changelog.md: -------------------------------------------------------------------------------- 1 | ## 1.1.6(2021-02-05) 2 | - 调整为uni_modules目录规范 3 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/uni-load-more/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "uni-load-more", 3 | "displayName": "LoadMore 加载更多", 4 | "version": "1.1.6", 5 | "description": "LoadMore 组件,常用在列表里面,做滚动加载使用。", 6 | "keywords": [ 7 | "loadmore", 8 | "uni-ui", 9 | "加载更多", 10 | "load-more" 11 | ], 12 | "repository": "https://github.com/dcloudio/uni-ui", 13 | "engines": { 14 | "HBuilderX": "" 15 | }, 16 | "directories": { 17 | "example": "../../temps/example_temps" 18 | }, 19 | "dcloudext": { 20 | "category": [ 21 | "前端组件", 22 | "通用组件" 23 | ], 24 | "sale": { 25 | "regular": { 26 | "price": "0.00" 27 | }, 28 | "sourcecode": { 29 | "price": "0.00" 30 | } 31 | }, 32 | "contact": { 33 | "qq": "" 34 | }, 35 | "declaration": { 36 | "ads": "无", 37 | "data": "无", 38 | "permissions": "无" 39 | }, 40 | "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" 41 | }, 42 | "uni_modules": { 43 | "dependencies": [], 44 | "encrypt": [], 45 | "platforms": { 46 | "cloud": { 47 | "tcb": "y", 48 | "aliyun": "y" 49 | }, 50 | "client": { 51 | "App": { 52 | "app-vue": "y", 53 | "app-nvue": "y" 54 | }, 55 | "H5-mobile": { 56 | "Safari": "y", 57 | "Android Browser": "y", 58 | "微信浏览器(Android)": "y", 59 | "QQ浏览器(Android)": "y" 60 | }, 61 | "H5-pc": { 62 | "Chrome": "y", 63 | "IE": "y", 64 | "Edge": "y", 65 | "Firefox": "y", 66 | "Safari": "y" 67 | }, 68 | "小程序": { 69 | "微信": "y", 70 | "阿里": "y", 71 | "百度": "y", 72 | "字节跳动": "y", 73 | "QQ": "y" 74 | }, 75 | "快应用": { 76 | "华为": "u", 77 | "联盟": "u" 78 | } 79 | } 80 | } 81 | } 82 | } -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/uni-load-more/readme.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ### LoadMore 加载更多 4 | > 代码块: `uLoadMore` 5 | 6 | 7 | 用于列表中,做滚动加载使用,展示 loading 的各种状态。 8 | 9 | ### 安装方式 10 | 11 | 本组件符合[easycom](https://uniapp.dcloud.io/collocation/pages?id=easycom)规范,`HBuilderX 2.5.5`起,只需将本组件导入项目,在页面`template`中即可直接使用,无需在页面中`import`和注册`components`。 12 | 13 | 如需通过`npm`方式使用`uni-ui`组件,另见文档:[https://ext.dcloud.net.cn/plugin?id=55](https://ext.dcloud.net.cn/plugin?id=55) 14 | 15 | ### 使用方式 16 | 17 | 在 ``template`` 中使用组件 18 | 19 | ```html 20 | 21 | ``` 22 | 23 | ## API 24 | 25 | ### LoadMore Props 26 | 27 | |属性名 |类型 | 可选值 |默认值 |说明 | 28 | |:-: |:-: |:-: |:-: |:-: | 29 | |iconSize |Number |- |24 |指定图标大小 | 30 | |status |String |more/loading/moMore |more |loading 的状态 | 31 | |showIcon |Boolean|- |true |是否显示 loading 图标 | 32 | |iconType |String |snow/circle/auto |auto |指定图标样式| 33 | |color |String |- |#777777 |图标和文字颜色 | 34 | |contentText|Object|- |{contentdown: "上拉显示更多",contentrefresh: "正在加载...",contentnomore: "没有更多数据了"}|各状态文字说明 | 35 | 36 | 37 | #### Status Options 38 | |参数名称 |说明 | 39 | |:-: |:-: | 40 | |more |loading前 | 41 | |loading|loading前中 | 42 | |more |没有更多数据 | 43 | 44 | #### IconType Options 45 | |参数名称 |说明 | 46 | |:-: |:-: | 47 | |snow |ios雪花加载样式 | 48 | |circle |安卓环形加载样式 | 49 | |auto |根据平台自动选择加载样式 | 50 | 51 | 52 | 53 | 54 | > `iconType`为`snow`时,在`APP-NVUE`平台不可设置大小,在非`APP-NVUE`平台不可设置颜色 55 | 56 | 57 | 58 | ### 事件说明 59 | 60 | |事件名 |说明 |返回值 | 61 | |:-: |:-: |:-: | 62 | |clickLoadMore |点击加载更多时触发 |e.detail={status:'loading'}| 63 | 64 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/uni-popup/changelog.md: -------------------------------------------------------------------------------- 1 | ## 1.2.9(2021-02-05) 2 | - 优化 组件引用关系,通过uni_modules引用组件 3 | ## 1.2.8(2021-02-05) 4 | - 调整为uni_modules目录规范 5 | ## 1.2.7(2021-02-05) 6 | - 调整为uni_modules目录规范 7 | - 新增 支持 PC 端 8 | - 新增 uni-popup-message 、uni-popup-dialog扩展组件支持 PC 端 9 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/uni-popup/components/uni-popup/keypress.js: -------------------------------------------------------------------------------- 1 | // #ifdef H5 2 | export default { 3 | name: 'Keypress', 4 | props: { 5 | disable: { 6 | type: Boolean, 7 | default: false 8 | } 9 | }, 10 | mounted () { 11 | const keyNames = { 12 | esc: ['Esc', 'Escape'], 13 | tab: 'Tab', 14 | enter: 'Enter', 15 | space: [' ', 'Spacebar'], 16 | up: ['Up', 'ArrowUp'], 17 | left: ['Left', 'ArrowLeft'], 18 | right: ['Right', 'ArrowRight'], 19 | down: ['Down', 'ArrowDown'], 20 | delete: ['Backspace', 'Delete', 'Del'] 21 | } 22 | const listener = ($event) => { 23 | if (this.disable) { 24 | return 25 | } 26 | const keyName = Object.keys(keyNames).find(key => { 27 | const keyName = $event.key 28 | const value = keyNames[key] 29 | return value === keyName || (Array.isArray(value) && value.includes(keyName)) 30 | }) 31 | if (keyName) { 32 | // 避免和其他按键事件冲突 33 | setTimeout(() => { 34 | this.$emit(keyName, {}) 35 | }, 0) 36 | } 37 | } 38 | document.addEventListener('keyup', listener) 39 | this.$once('hook:beforeDestroy', () => { 40 | document.removeEventListener('keyup', listener) 41 | }) 42 | }, 43 | render: () => {} 44 | } 45 | // #endif 46 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/uni-popup/components/uni-popup/message.js: -------------------------------------------------------------------------------- 1 | export default { 2 | created() { 3 | if (this.type === 'message') { 4 | // 不显示遮罩 5 | this.maskShow = false 6 | // 获取子组件对象 7 | this.childrenMsg = null 8 | } 9 | }, 10 | methods: { 11 | customOpen() { 12 | if (this.childrenMsg) { 13 | this.childrenMsg.open() 14 | } 15 | }, 16 | customClose() { 17 | if (this.childrenMsg) { 18 | this.childrenMsg.close() 19 | } 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/uni-popup/components/uni-popup/popup.js: -------------------------------------------------------------------------------- 1 | import message from './message.js'; 2 | // 定义 type 类型:弹出类型:top/bottom/center 3 | const config = { 4 | // 顶部弹出 5 | top: 'top', 6 | // 底部弹出 7 | bottom: 'bottom', 8 | // 居中弹出 9 | center: 'center', 10 | // 消息提示 11 | message: 'top', 12 | // 对话框 13 | dialog: 'center', 14 | // 分享 15 | share: 'bottom', 16 | } 17 | 18 | export default { 19 | data() { 20 | return { 21 | config: config, 22 | popupWidth: 0, 23 | popupHeight: 0 24 | } 25 | }, 26 | mixins: [message], 27 | computed: { 28 | isDesktop() { 29 | return this.popupWidth >= 500 && this.popupHeight >= 500 30 | } 31 | }, 32 | mounted() { 33 | const fixSize = () => { 34 | const { 35 | windowWidth, 36 | windowHeight, 37 | windowTop 38 | } = uni.getSystemInfoSync() 39 | this.popupWidth = windowWidth 40 | this.popupHeight = windowHeight + windowTop 41 | } 42 | fixSize() 43 | // #ifdef H5 44 | window.addEventListener('resize', fixSize) 45 | this.$once('hook:beforeDestroy', () => { 46 | window.removeEventListener('resize', fixSize) 47 | }) 48 | // #endif 49 | }, 50 | } 51 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/uni-popup/components/uni-popup/share.js: -------------------------------------------------------------------------------- 1 | export default { 2 | created() { 3 | if (this.type === 'share') { 4 | // 关闭点击 5 | this.mkclick = false 6 | } 7 | }, 8 | methods: { 9 | customOpen() { 10 | console.log('share 打开了'); 11 | }, 12 | customClose() { 13 | console.log('share 关闭了'); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/uni-popup/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "uni-popup", 3 | "displayName": "PopUp 弹出层", 4 | "version": "1.2.9", 5 | "description": " Popup 组件,提供常用的弹层", 6 | "keywords": [ 7 | "popup", 8 | "uni-ui", 9 | "弹出层", 10 | "uni-popup" 11 | ], 12 | "repository": "https://github.com/dcloudio/uni-ui", 13 | "engines": { 14 | "HBuilderX": "" 15 | }, 16 | "directories": { 17 | "example": "../../temps/example_temps" 18 | }, 19 | "dcloudext": { 20 | "category": [ 21 | "前端组件", 22 | "通用组件" 23 | ], 24 | "sale": { 25 | "regular": { 26 | "price": "0.00" 27 | }, 28 | "sourcecode": { 29 | "price": "0.00" 30 | } 31 | }, 32 | "contact": { 33 | "qq": "" 34 | }, 35 | "declaration": { 36 | "ads": "无", 37 | "data": "无", 38 | "permissions": "无" 39 | }, 40 | "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" 41 | }, 42 | "uni_modules": { 43 | "dependencies": [ 44 | "uni-transition" 45 | ], 46 | "encrypt": [], 47 | "platforms": { 48 | "cloud": { 49 | "tcb": "y", 50 | "aliyun": "y" 51 | }, 52 | "client": { 53 | "App": { 54 | "app-vue": "y", 55 | "app-nvue": "y" 56 | }, 57 | "H5-mobile": { 58 | "Safari": "y", 59 | "Android Browser": "y", 60 | "微信浏览器(Android)": "y", 61 | "QQ浏览器(Android)": "y" 62 | }, 63 | "H5-pc": { 64 | "Chrome": "y", 65 | "IE": "y", 66 | "Edge": "y", 67 | "Firefox": "y", 68 | "Safari": "y" 69 | }, 70 | "小程序": { 71 | "微信": "y", 72 | "阿里": "y", 73 | "百度": "y", 74 | "字节跳动": "y", 75 | "QQ": "y" 76 | }, 77 | "快应用": { 78 | "华为": "u", 79 | "联盟": "u" 80 | } 81 | } 82 | } 83 | } 84 | } -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/uni-transition/changelog.md: -------------------------------------------------------------------------------- 1 | ## 1.0.2(2021-02-05) 2 | - 调整为uni_modules目录规范 3 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/uni-transition/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "uni-transition", 3 | "displayName": "Transition 过渡动画", 4 | "version": "1.0.2", 5 | "description": "元素的简单过渡动画", 6 | "keywords": [ 7 | "动画", 8 | "过渡", 9 | "uni-transition", 10 | "过渡动画" 11 | ], 12 | "repository": "https://github.com/dcloudio/uni-ui", 13 | "engines": { 14 | "HBuilderX": "" 15 | }, 16 | "directories": { 17 | "example": "../../temps/example_temps" 18 | }, 19 | "dcloudext": { 20 | "category": [ 21 | "前端组件", 22 | "通用组件" 23 | ], 24 | "sale": { 25 | "regular": { 26 | "price": "0.00" 27 | }, 28 | "sourcecode": { 29 | "price": "0.00" 30 | } 31 | }, 32 | "contact": { 33 | "qq": "" 34 | }, 35 | "declaration": { 36 | "ads": "无", 37 | "data": "无", 38 | "permissions": "无" 39 | }, 40 | "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" 41 | }, 42 | "uni_modules": { 43 | "dependencies": [], 44 | "encrypt": [], 45 | "platforms": { 46 | "cloud": { 47 | "tcb": "y", 48 | "aliyun": "y" 49 | }, 50 | "client": { 51 | "App": { 52 | "app-vue": "y", 53 | "app-nvue": "y" 54 | }, 55 | "H5-mobile": { 56 | "Safari": "y", 57 | "Android Browser": "y", 58 | "微信浏览器(Android)": "y", 59 | "QQ浏览器(Android)": "y" 60 | }, 61 | "H5-pc": { 62 | "Chrome": "y", 63 | "IE": "y", 64 | "Edge": "y", 65 | "Firefox": "y", 66 | "Safari": "y" 67 | }, 68 | "小程序": { 69 | "微信": "y", 70 | "阿里": "y", 71 | "百度": "y", 72 | "字节跳动": "y", 73 | "QQ": "y" 74 | }, 75 | "快应用": { 76 | "华为": "u", 77 | "联盟": "u" 78 | } 79 | } 80 | } 81 | } 82 | } -------------------------------------------------------------------------------- /Ice-chat-uniapp/uni_modules/uni-transition/readme.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Transition 过渡动画 4 | > 代码块: `uTransition` 5 | 6 | 7 | 元素的简单过渡动画,组件名:`uni-transition` 8 | 9 | ### 安装方式 10 | 11 | 本组件符合[easycom](https://uniapp.dcloud.io/collocation/pages?id=easycom)规范,`HBuilderX 2.5.5`起,只需将本组件导入项目,在页面`template`中即可直接使用,无需在页面中`import`和注册`components`。 12 | 13 | 如需通过`npm`方式使用`uni-ui`组件,另见文档:[https://ext.dcloud.net.cn/plugin?id=55](https://ext.dcloud.net.cn/plugin?id=55) 14 | 15 | ### 基本用法 16 | 17 | 在 ``template`` 中使用组件 18 | 19 | ```html 20 | 26 | ``` 27 | ``` javascript 28 | 29 | import uniTransition from '@/components/uni-transition/uni-transition.vue' 30 | export default { 31 | components: { 32 | uniTransition 33 | }, 34 | data() { 35 | return { 36 | show: false, 37 | } 38 | }, 39 | onLoad() {}, 40 | methods: { 41 | open(mode) { 42 | this.show = !this.show 43 | }, 44 | change() { 45 | console.log('触发动画') 46 | } 47 | } 48 | } 49 | ``` 50 | 51 | ## API 52 | 53 | ### Transition Props 54 | 55 | |属性名 |类型 |默认值 |说明 | 56 | |:-: |:-: |:-: |:-:| 57 | |show |Boolean|false |控制组件显示或隐藏, | 58 | |modeClass |Array |- |过渡动画类型 | 59 | |duration |Number |300 |过渡动画持续时间 | 60 | |styles |Object |- |组件样式,同 css 样式,注意带’-‘连接符的属性需要使用小驼峰写法如:`backgroundColor:red` | 61 | 62 | #### modeClass 类型说明 63 | **格式为** :`['fade','slide-top']` 64 | 65 | |属性名 |说明 | 66 | |:-: |:-: | 67 | |fade |渐隐渐出过渡 | 68 | |slide-top |由上至下过渡 | 69 | |slide-right |由右至左过渡 | 70 | |slide-bottom |由下至上过渡 | 71 | |slide-left |由左至右过渡 | 72 | |zoom-in |由小到大过渡 | 73 | |zoom-out |由大到小过渡 | 74 | 75 | **注意** 76 | 77 | 组合使用时,同一种类型相反的过渡动画如(slide-top、slide-bottom)同时使用时,只有最后一个生效 78 | 79 | ### Transition Events 80 | 81 | |事件称名 |说明 |返回值 | 82 | |:-: |:-: |:-: | 83 | |click |点击组件触发 |- | 84 | |change |过渡动画结束时触发 | e = {detail:true} | 85 | -------------------------------------------------------------------------------- /Ice-chat-uniapp/unpackage/dist/build/.automator/h5/.automator.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/unpackage/dist/build/.automator/h5/.automator.json -------------------------------------------------------------------------------- /Ice-chat-uniapp/unpackage/dist/build/h5/index.html: -------------------------------------------------------------------------------- 1 | 用云IM uniCloud 版
-------------------------------------------------------------------------------- /Ice-chat-uniapp/unpackage/dist/build/h5/static/hm-friends-requests-card/images/img_24029_0_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/unpackage/dist/build/h5/static/hm-friends-requests-card/images/img_24029_0_0.png -------------------------------------------------------------------------------- /Ice-chat-uniapp/unpackage/dist/build/h5/static/hm-friends-requests-card/images/img_24029_0_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/unpackage/dist/build/h5/static/hm-friends-requests-card/images/img_24029_0_1.png -------------------------------------------------------------------------------- /Ice-chat-uniapp/unpackage/dist/build/h5/static/hm-friends-requests-card/images/img_24029_0_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/unpackage/dist/build/h5/static/hm-friends-requests-card/images/img_24029_0_2.png -------------------------------------------------------------------------------- /Ice-chat-uniapp/unpackage/dist/build/h5/static/hm-friends-requests-card/images/img_24029_0_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/unpackage/dist/build/h5/static/hm-friends-requests-card/images/img_24029_0_3.png -------------------------------------------------------------------------------- /Ice-chat-uniapp/unpackage/dist/build/h5/static/hm-friends-requests-card/images/img_24029_0_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/unpackage/dist/build/h5/static/hm-friends-requests-card/images/img_24029_0_4.png -------------------------------------------------------------------------------- /Ice-chat-uniapp/unpackage/dist/build/h5/static/hm-friends-requests-card/images/img_24029_0_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/unpackage/dist/build/h5/static/hm-friends-requests-card/images/img_24029_0_5.png -------------------------------------------------------------------------------- /Ice-chat-uniapp/unpackage/dist/build/h5/static/images/empty/cart.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/unpackage/dist/build/h5/static/images/empty/cart.jpg -------------------------------------------------------------------------------- /Ice-chat-uniapp/unpackage/dist/build/h5/static/images/empty/empty.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/unpackage/dist/build/h5/static/images/empty/empty.jpg -------------------------------------------------------------------------------- /Ice-chat-uniapp/unpackage/dist/build/h5/static/images/empty/message.03a0abb5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/unpackage/dist/build/h5/static/images/empty/message.03a0abb5.png -------------------------------------------------------------------------------- /Ice-chat-uniapp/unpackage/dist/build/h5/static/images/empty/search.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/unpackage/dist/build/h5/static/images/empty/search.jpg -------------------------------------------------------------------------------- /Ice-chat-uniapp/unpackage/dist/build/h5/static/images/headimg/face_12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/unpackage/dist/build/h5/static/images/headimg/face_12.jpg -------------------------------------------------------------------------------- /Ice-chat-uniapp/unpackage/dist/build/h5/static/images/headimg/face_13.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/unpackage/dist/build/h5/static/images/headimg/face_13.jpg -------------------------------------------------------------------------------- /Ice-chat-uniapp/unpackage/dist/build/h5/static/images/headimg/face_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/unpackage/dist/build/h5/static/images/headimg/face_2.jpg -------------------------------------------------------------------------------- /Ice-chat-uniapp/unpackage/dist/build/h5/static/images/headimg/face_4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/unpackage/dist/build/h5/static/images/headimg/face_4.jpg -------------------------------------------------------------------------------- /Ice-chat-uniapp/unpackage/dist/build/h5/static/images/headimg/face_5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/unpackage/dist/build/h5/static/images/headimg/face_5.jpg -------------------------------------------------------------------------------- /Ice-chat-uniapp/unpackage/dist/build/h5/static/images/headimg/face_6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/unpackage/dist/build/h5/static/images/headimg/face_6.jpg -------------------------------------------------------------------------------- /Ice-chat-uniapp/unpackage/dist/build/h5/static/images/login-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/unpackage/dist/build/h5/static/images/login-bg.png -------------------------------------------------------------------------------- /Ice-chat-uniapp/unpackage/dist/build/h5/static/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/unpackage/dist/build/h5/static/images/logo.png -------------------------------------------------------------------------------- /Ice-chat-uniapp/unpackage/dist/build/h5/static/images/mescroll-progress.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/unpackage/dist/build/h5/static/images/mescroll-progress.png -------------------------------------------------------------------------------- /Ice-chat-uniapp/unpackage/dist/build/h5/static/images/mescroll-slogan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/unpackage/dist/build/h5/static/images/mescroll-slogan.png -------------------------------------------------------------------------------- /Ice-chat-uniapp/unpackage/dist/build/h5/static/images/pg-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/unpackage/dist/build/h5/static/images/pg-02.png -------------------------------------------------------------------------------- /Ice-chat-uniapp/unpackage/dist/build/h5/static/images/tobar/contact.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/unpackage/dist/build/h5/static/images/tobar/contact.png -------------------------------------------------------------------------------- /Ice-chat-uniapp/unpackage/dist/build/h5/static/images/tobar/contact2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/unpackage/dist/build/h5/static/images/tobar/contact2.png -------------------------------------------------------------------------------- /Ice-chat-uniapp/unpackage/dist/build/h5/static/images/tobar/message.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/unpackage/dist/build/h5/static/images/tobar/message.png -------------------------------------------------------------------------------- /Ice-chat-uniapp/unpackage/dist/build/h5/static/images/tobar/message2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/unpackage/dist/build/h5/static/images/tobar/message2.png -------------------------------------------------------------------------------- /Ice-chat-uniapp/unpackage/dist/build/h5/static/images/tobar/my.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/unpackage/dist/build/h5/static/images/tobar/my.png -------------------------------------------------------------------------------- /Ice-chat-uniapp/unpackage/dist/build/h5/static/images/tobar/my2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/unpackage/dist/build/h5/static/images/tobar/my2.png -------------------------------------------------------------------------------- /Ice-chat-uniapp/unpackage/dist/build/h5/static/images/user/default.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/unpackage/dist/build/h5/static/images/user/default.jpg -------------------------------------------------------------------------------- /Ice-chat-uniapp/unpackage/dist/build/h5/static/images/user/default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/unpackage/dist/build/h5/static/images/user/default.png -------------------------------------------------------------------------------- /Ice-chat-uniapp/unpackage/dist/build/h5/static/img/face_12.0bdad333.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/unpackage/dist/build/h5/static/img/face_12.0bdad333.jpg -------------------------------------------------------------------------------- /Ice-chat-uniapp/unpackage/dist/build/h5/static/img/mescroll-slogan.40aa47ed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/unpackage/dist/build/h5/static/img/mescroll-slogan.40aa47ed.png -------------------------------------------------------------------------------- /Ice-chat-uniapp/unpackage/dist/build/h5/static/img/message.03a0abb5.5712d6eb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/unpackage/dist/build/h5/static/img/message.03a0abb5.5712d6eb.png -------------------------------------------------------------------------------- /Ice-chat-uniapp/unpackage/dist/build/h5/static/img/star.a7215108.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/unpackage/dist/build/h5/static/img/star.a7215108.png -------------------------------------------------------------------------------- /Ice-chat-uniapp/unpackage/dist/build/h5/static/js/pages-content-rich-text.5bc790b0.js: -------------------------------------------------------------------------------- 1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["pages-content-rich-text"],{"17d8":function(n,t,e){"use strict";var a=e("73a0"),r=e.n(a);r.a},"3f87":function(n,t,e){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a={data:function(){return{content:""}},onShow:function(){var n=uni.getStorageSync("__rich_text");this.content=n}};t.default=a},"49d2":function(n,t,e){var a=e("24fb");t=a(!1),t.push([n.i,'@charset "UTF-8";\n/* 页面左右间距 */\n/* 文字尺寸 */\n/*文字颜色*/\n/* 边框颜色 */\n/* 图片加载中颜色 */\n/* 颜色变量 */\n/* 行为相关颜色 */\n/* 文字基本颜色 */\n/* 背景颜色 */\n/* 边框颜色 */\n/* 尺寸变量 */\n/* 文字尺寸 */\n/* 图片尺寸 */\n/* Border Radius */\n/* 水平间距 */\n/* 垂直间距 */\n/* 透明度 */\n/* 文章场景相关 */.pro-detail[data-v-3abc11b6]{width:100%;overflow:hidden;-webkit-touch-callout:none}.pro-detail img[data-v-3abc11b6]{width:100%;max-width:100%;overflow:hidden}',""]),n.exports=t},"6f0a":function(n,t,e){"use strict";var a;e.d(t,"b",(function(){return r})),e.d(t,"c",(function(){return o})),e.d(t,"a",(function(){return a}));var r=function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("v-uni-view",[e("v-uni-rich-text",{staticClass:"pro-detail",attrs:{nodes:n.content}})],1)},o=[]},"73a0":function(n,t,e){var a=e("49d2");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[n.i,a,""]]),a.locals&&(n.exports=a.locals);var r=e("4f06").default;r("60fa409b",a,!0,{sourceMap:!1,shadowMode:!1})},b88e:function(n,t,e){"use strict";e.r(t);var a=e("6f0a"),r=e("bd38");for(var o in r)"default"!==o&&function(n){e.d(t,n,(function(){return r[n]}))}(o);e("17d8");var i,u=e("f0c5"),c=Object(u["a"])(r["default"],a["b"],a["c"],!1,null,"3abc11b6",null,!1,a["a"],i);t["default"]=c.exports},bd38:function(n,t,e){"use strict";e.r(t);var a=e("3f87"),r=e.n(a);for(var o in a)"default"!==o&&function(n){e.d(t,n,(function(){return a[n]}))}(o);t["default"]=r.a}}]); -------------------------------------------------------------------------------- /Ice-chat-uniapp/unpackage/dist/build/h5/static/js/pages-content-web.1140cde4.js: -------------------------------------------------------------------------------- 1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["pages-content-web"],{"83db":function(t,e,n){"use strict";var r;n.d(e,"b",(function(){return u})),n.d(e,"c",(function(){return i})),n.d(e,"a",(function(){return r}));var u=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("v-uni-view",[n("v-uni-web-view",{attrs:{"webview-styles":t.webviewStyles,src:t.weburl}})],1)},i=[]},a010:function(t,e,n){"use strict";n.r(e);var r=n("83db"),u=n("cfa9");for(var i in u)"default"!==i&&function(t){n.d(e,t,(function(){return u[t]}))}(i);var a,c=n("f0c5"),o=Object(c["a"])(u["default"],r["b"],r["c"],!1,null,"25c59372",null,!1,r["a"],a);e["default"]=o.exports},cb64:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var r={data:function(){return{webviewStyles:{progress:{color:"#ff6a6c"}},weburl:""}},onLoad:function(t){this.weburl=t.url,uni.setNavigationBarTitle({title:"用云 "+(t.title||"")})}};e.default=r},cfa9:function(t,e,n){"use strict";n.r(e);var r=n("cb64"),u=n.n(r);for(var i in r)"default"!==i&&function(t){n.d(e,t,(function(){return r[t]}))}(i);e["default"]=u.a}}]); -------------------------------------------------------------------------------- /Ice-chat-uniapp/unpackage/dist/build/h5/static/js/pages-search-apply.9e4a7014.js: -------------------------------------------------------------------------------- 1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["pages-search-apply"],{"54d4":function(n,t,a){"use strict";a.r(t);var i=a("81a2"),e=a.n(i);for(var o in i)"default"!==o&&function(n){a.d(t,n,(function(){return i[n]}))}(o);t["default"]=e.a},5646:function(n,t,a){var i=a("7663");i.__esModule&&(i=i.default),"string"===typeof i&&(i=[[n.i,i,""]]),i.locals&&(n.exports=i.locals);var e=a("4f06").default;e("259a6526",i,!0,{sourceMap:!1,shadowMode:!1})},7663:function(n,t,a){var i=a("24fb");t=i(!1),t.push([n.i,'@charset "UTF-8";\n/* 页面左右间距 */\n/* 文字尺寸 */\n/*文字颜色*/\n/* 边框颜色 */\n/* 图片加载中颜色 */\n/* 颜色变量 */\n/* 行为相关颜色 */\n/* 文字基本颜色 */\n/* 背景颜色 */\n/* 边框颜色 */\n/* 尺寸变量 */\n/* 文字尺寸 */\n/* 图片尺寸 */\n/* Border Radius */\n/* 水平间距 */\n/* 垂直间距 */\n/* 透明度 */\n/* 文章场景相关 */uni-page-body[data-v-0ed98c62]{width:100%;height:100%}.imgWh[data-v-0ed98c62]{width:%?300?%;height:%?300?%}',""]),n.exports=t},"81a2":function(n,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i={data:function(){return{profile:""}},onLoad:function(n){this.profile=n.profile,console.log("options",this.profile)},methods:{toback:function(){uni.navigateBack()}}};t.default=i},8646:function(n,t,a){"use strict";var i;a.d(t,"b",(function(){return e})),a.d(t,"c",(function(){return o})),a.d(t,"a",(function(){return i}));var e=function(){var n=this,t=n.$createElement,a=n._self._c||t;return a("v-uni-view",{staticClass:"wh-full pos-r"},[a("v-uni-view",{staticClass:"pos-a pos-tl-c tac",staticStyle:{top:"30%"}},[a("v-uni-image",{staticClass:"imgWh",attrs:{src:n.profile,mode:""}}),a("v-uni-view",{},[a("v-uni-view",{},[n._v("好友申请已发送")]),a("v-uni-view",{},[n._v("等待对方验证通过")])],1)],1),a("v-uni-view",{staticClass:"pos-a pos-tl-c",staticStyle:{color:"#fff",top:"75%","background-color":"#4d9ff4",padding:"20rpx 70rpx","border-radius":"20rpx"},on:{click:function(t){arguments[0]=t=n.$handleEvent(t),n.toback.apply(void 0,arguments)}}},[n._v("返回")])],1)},o=[]},d7a0:function(n,t,a){"use strict";var i=a("5646"),e=a.n(i);e.a},da1b:function(n,t,a){"use strict";a.r(t);var i=a("8646"),e=a("54d4");for(var o in e)"default"!==o&&function(n){a.d(t,n,(function(){return e[n]}))}(o);a("d7a0");var r,u=a("f0c5"),c=Object(u["a"])(e["default"],i["b"],i["c"],!1,null,"0ed98c62",null,!1,i["a"],r);t["default"]=c.exports}}]); -------------------------------------------------------------------------------- /Ice-chat-uniapp/unpackage/dist/build/h5/static/js/pages-user-collect-collect.91909847.js: -------------------------------------------------------------------------------- 1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["pages-user-collect-collect"],{6208:function(t,i,a){"use strict";a.r(i);var e=a("c0f0"),n=a("cb9b");for(var s in n)"default"!==s&&function(t){a.d(i,t,(function(){return n[t]}))}(s);var r,d=a("f0c5"),c=Object(d["a"])(n["default"],e["b"],e["c"],!1,null,"31fbb2ef",null,!1,e["a"],r);i["default"]=c.exports},"893d":function(t,i,a){"use strict";Object.defineProperty(i,"__esModule",{value:!0}),i.default=void 0;var e={data:function(){return{}}};i.default=e},c0f0:function(t,i,a){"use strict";var e;a.d(i,"b",(function(){return n})),a.d(i,"c",(function(){return s})),a.d(i,"a",(function(){return e}));var n=function(){var t=this,i=t.$createElement,a=t._self._c||i;return a("v-uni-view",[a("v-uni-view",{staticClass:"padding-lr margin-top"},[a("v-uni-view",{staticClass:"border-radius padding-lr bg-drak padding-tb",staticStyle:{"align-items":"center"}},[a("v-uni-view",{},[a("v-uni-view",{staticClass:" "},[t._v("bug已经修复了吗?")]),a("v-uni-view",{staticClass:"font_color padding-top-sm"},[t._v("沙发上的猫 2020.20.19")])],1)],1)],1),a("v-uni-view",{staticClass:"padding-lr margin-top"},[a("v-uni-view",{staticClass:"border-radius padding-lr bg-drak padding-tb",staticStyle:{"align-items":"center"}},[a("v-uni-view",{},[a("v-uni-view",{staticClass:" "},[a("v-uni-image",{staticClass:"border-radius",staticStyle:{width:"120rpx",height:"120rpx"},attrs:{src:"/static/images/headimg/face_12.jpg",mode:""}})],1),a("v-uni-view",{staticClass:"font_color padding-top-sm"},[t._v("沙发上的猫 2020.20.19")])],1)],1)],1),a("v-uni-view",{staticClass:"padding-lr margin-top"},[a("v-uni-view",{staticClass:"border-radius padding-lr bg-drak padding-tb",staticStyle:{"align-items":"center"}},[a("v-uni-view",{},[a("v-uni-view",{staticClass:"dflex-b"},[a("v-uni-view",{},[a("v-uni-image",{staticClass:"border-radius",staticStyle:{width:"120rpx",height:"120rpx"},attrs:{src:"/static/images/headimg/face_12.jpg",mode:""}})],1),a("v-uni-view",{staticStyle:{width:"75%","align-self":"start"}},[t._v("用这套方法,配出来的颜色很难不高级!快收藏起来吧~")])],1),a("v-uni-view",{staticClass:"ft-dark padding-top-sm"},[t._v("沙发上的猫 2020.20.19")])],1)],1)],1)],1)},s=[]},cb9b:function(t,i,a){"use strict";a.r(i);var e=a("893d"),n=a.n(e);for(var s in e)"default"!==s&&function(t){a.d(i,t,(function(){return e[t]}))}(s);i["default"]=n.a}}]); -------------------------------------------------------------------------------- /Ice-chat-uniapp/unpackage/dist/build/h5/static/js/pages-user-profit-cashout.4edddaee.js: -------------------------------------------------------------------------------- 1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["pages-user-profit-cashout"],{1143:function(t,e,i){"use strict";i.r(e);var n=i("c628"),a=i("3106");for(var s in a)"default"!==s&&function(t){i.d(e,t,(function(){return a[t]}))}(s);i("52ee");var c,o=i("f0c5"),d=Object(o["a"])(a["default"],n["b"],n["c"],!1,null,"35ed86ec",null,!1,n["a"],c);e["default"]=d.exports},3106:function(t,e,i){"use strict";i.r(e);var n=i("bae8"),a=i.n(n);for(var s in n)"default"!==s&&function(t){i.d(e,t,(function(){return n[t]}))}(s);e["default"]=a.a},"486c":function(t,e,i){var n=i("64d3");n.__esModule&&(n=n.default),"string"===typeof n&&(n=[[t.i,n,""]]),n.locals&&(t.exports=n.locals);var a=i("4f06").default;a("0c95c3f2",n,!0,{sourceMap:!1,shadowMode:!1})},"52ee":function(t,e,i){"use strict";var n=i("486c"),a=i.n(n);a.a},"64d3":function(t,e,i){var n=i("24fb");e=n(!1),e.push([t.i,".box[data-v-35ed86ec]{width:60%;border-bottom:%?2?% solid #d4d4d4}",""]),t.exports=e},bae8:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n={data:function(){return{money:""}},methods:{withdraw:function(){this.$api.msg("提现")}}};e.default=n},c628:function(t,e,i){"use strict";var n;i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return s})),i.d(e,"a",(function(){return n}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("v-uni-view",[i("v-uni-view",{staticClass:"dflex-c",staticStyle:{"margin-top":"150rpx","flex-direction":"column"}},[i("v-uni-view",{staticClass:"dflex box padding-tb-xs"},[i("v-uni-text",{staticClass:"fs-34 padding-right-sm",staticStyle:{"font-weight":"bold"}},[t._v("¥")]),i("v-uni-input",{attrs:{type:"text",value:"",placeholder:"输入提现金额"},model:{value:t.money,callback:function(e){t.money=e},expression:"money"}})],1),i("v-uni-view",{staticClass:"dflex-flow-c dflex-c padding-top-xs",staticStyle:{"align-self":"stretch",width:"67%"}},[t._v("可提现收益¥580")])],1),i("v-uni-view",{staticClass:" padding-lr-sm padding-bottom w-full fixed pos-bottom"},[i("v-uni-view",{staticClass:"tac padding-tb"},[t._v("提现金额自动转入微信零钱")]),i("v-uni-view",{staticClass:"padding-tb bg-main border-radius-lg tac padding-lr-sm bg-base",on:{click:function(e){arguments[0]=e=t.$handleEvent(e),t.withdraw.apply(void 0,arguments)}}},[i("v-uni-view",{staticClass:" "},[t._v("提现")])],1)],1)],1)},s=[]}}]); -------------------------------------------------------------------------------- /Ice-chat-uniapp/unpackage/dist/build/h5/static/js/pages-user-profit-profit.de03d12d.js: -------------------------------------------------------------------------------- 1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["pages-user-profit-profit"],{3704:function(i,t,s){"use strict";var e;s.d(t,"b",(function(){return a})),s.d(t,"c",(function(){return n})),s.d(t,"a",(function(){return e}));var a=function(){var i=this,t=i.$createElement,s=i._self._c||t;return s("v-uni-view",[s("v-uni-view",{staticClass:"padding-lr margin-top"},[s("v-uni-view",{staticClass:"padding-tb-sm dflex padding-lr-lg border-radius dflex-b",staticStyle:{"background-color":"#4d9ff3"}},[s("v-uni-view",{},[s("v-uni-view",{staticClass:"ft-white"},[s("v-uni-text",{staticClass:"fs-xs"},[i._v("¥")]),s("v-uni-text",{staticClass:"fs-xxl fwb"},[i._v("290")])],1),s("v-uni-view",{staticClass:"ft-white margin-left"},[i._v("总收益")])],1),s("v-uni-view",{staticClass:"ft-white border-radius-xs padding-tb-xs tac bg-main",staticStyle:{width:"19%",color:"#4d9ff3"},on:{click:function(t){arguments[0]=t=i.$handleEvent(t),i.deposit.apply(void 0,arguments)}}},[i._v("提现")])],1)],1),s("v-uni-view",{staticClass:"padding-lr margin-top"},[s("v-uni-view",{staticClass:"fs-34",staticStyle:{"font-weight":"bold"}},[i._v("收益明细")])],1),s("v-uni-view",{staticClass:"padding-lr margin-bottom"},[s("v-uni-view",{staticClass:"padding-tb-sm border-line"},[s("v-uni-view",{staticClass:"dflex-b"},[s("v-uni-view",{},[i._v("打赏")]),s("v-uni-view",{staticClass:"fs-34 ft-base",staticStyle:{"font-weight":"bold"}},[i._v("¥50")])],1),s("v-uni-view",{staticClass:"dflex-b ft-dark"},[s("v-uni-view",{},[i._v("2020-01-20 15:05:36")]),s("v-uni-view",{},[i._v("余额: ¥290")])],1)],1),s("v-uni-view",{staticClass:"padding-tb-sm border-line"},[s("v-uni-view",{staticClass:"dflex-b"},[s("v-uni-view",{},[i._v("打赏")]),s("v-uni-view",{staticClass:"fs-34 ft-base",staticStyle:{"font-weight":"bold"}},[i._v("¥50")])],1),s("v-uni-view",{staticClass:"dflex-b ft-dark"},[s("v-uni-view",{},[i._v("2020-01-20 15:05:36")]),s("v-uni-view",{},[i._v("余额: ¥290")])],1)],1),s("v-uni-view",{staticClass:"padding-tb-sm border-line"},[s("v-uni-view",{staticClass:"dflex-b"},[s("v-uni-view",{},[i._v("打赏")]),s("v-uni-view",{staticClass:"fs-34 ft-base",staticStyle:{"font-weight":"bold"}},[i._v("¥50")])],1),s("v-uni-view",{staticClass:"dflex-b ft-dark"},[s("v-uni-view",{},[i._v("2020-01-20 15:05:36")]),s("v-uni-view",{},[i._v("余额: ¥290")])],1)],1)],1)],1)},n=[]},"6c36":function(i,t,s){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var e={data:function(){return{}},methods:{deposit:function(){uni.navigateTo({url:"/pages/user/profit/cashout"})}}};t.default=e},"7a97":function(i,t,s){"use strict";s.r(t);var e=s("6c36"),a=s.n(e);for(var n in e)"default"!==n&&function(i){s.d(t,i,(function(){return e[i]}))}(n);t["default"]=a.a},"86c3":function(i,t,s){"use strict";s.r(t);var e=s("3704"),a=s("7a97");for(var n in a)"default"!==n&&function(i){s.d(t,i,(function(){return a[i]}))}(n);var v,u=s("f0c5"),l=Object(u["a"])(a["default"],e["b"],e["c"],!1,null,"724ee60d",null,!1,e["a"],v);t["default"]=l.exports}}]); -------------------------------------------------------------------------------- /Ice-chat-uniapp/unpackage/dist/build/h5/static/star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/Ice-chat-uniapp/unpackage/dist/build/h5/static/star.png -------------------------------------------------------------------------------- /Ice-chat-uniapp/utils/date.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable quotes */ 2 | /* eslint-disable no-array-constructor */ 3 | /* eslint-disable spaced-comment */ 4 | export function formatDate(date, fmt) { 5 | if (/(y+)/.test(fmt)) { 6 | fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length)) 7 | } 8 | const o = { 9 | 'M+': date.getMonth() + 1, 10 | 'd+': date.getDate(), 11 | 'h+': date.getHours(), 12 | 'm+': date.getMinutes(), 13 | 's+': date.getSeconds() 14 | } 15 | for (const k in o) { 16 | if (new RegExp(`(${k})`).test(fmt)) { 17 | const str = o[k] + '' 18 | fmt = fmt.replace(RegExp.$1, RegExp.$1.length === 1 ? str : padLeftZero(str)) 19 | } 20 | } 21 | return fmt 22 | } 23 | 24 | function padLeftZero(str) { 25 | return ('00' + str).substr(str.length) 26 | } 27 | 28 | export function Todate(num) { //Fri Oct 31 18:00:00 UTC+0800 2008 29 | num = num + '' 30 | var date = '' 31 | var month = new Array() 32 | month["Jan"] = 1; month["Feb"] = 2; month["Mar"] = 3; month["Apr"] = 4; month["May"] = 5; month["Jan"] = 6 33 | month["Jul"] = 7; month["Aug"] = 8; month["Sep"] = 9; month["Oct"] = 10; month["Nov"] = 11; month["Dec"] = 12 34 | var week = new Array() 35 | week["Mon"] = "一"; week["Tue"] = "二"; week["Wed"] = "三"; week["Thu"] = "四"; week["Fri"] = "五"; week["Sat"] = "六"; week["Sun"] = "日" 36 | const str = num.split(" ") 37 | date = str[3] + "-" 38 | date = date + month[str[1]] + "-" + str[2] + " " + str[4] 39 | return date 40 | } 41 | 42 | export function GetWeekdate(intime) { //Fri Oct 31 18:00:00 UTC+0800 2008 43 | 44 | var dateString = intime; 45 | var dateObject = new Date(dateString); 46 | dateObject.getDay()//返回值是 0(周日) 到 6(周六) 之间的一个整数。 47 | return dateObject.getDay() 48 | } 49 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Ice-chat概述 2 | Ice-chat是一个基于spring boot的多端聊天系统。支持群聊与点对点聊天。当前包括uniapp客户端与Java服务器端。3分钟就可以整套系统跑起来。 3 | 4 | ### 项目官方网站 5 | 6 | 7 | ### 功能与特点 8 | 9 | ##### 功能列表 10 | 11 | * 频道里群聊 12 | * 与其他用户点对点聊天 13 | * 聊天支持文字、表情、URL等 14 | * 注册用户(不需要密码) 15 | * 创建频道、加入频道 16 | * 我的最近聊天、我的频道 17 | * 聊天记录缓存(在服务器端) 18 | * 客户端选择聊天服务器、添加聊天服务器 19 | 20 | ##### 特点 21 | 22 | * 简单到极致的 http 聊天服务器:一个 jar 包跑起来 23 | * 轻量级客户端:聊天界面使用 Webview 的方式 24 | 25 | ## 快速开始 26 | Docker部署方式(推荐,可用于快速上线或测试) 27 | 28 | # 未安装docker的请先安装docker,已经安装的跳过此步 29 | yum install docker-ce -y 30 | #启动docker 31 | systemctl start docker 32 | # 配置国内源 33 | # 创建docker目录 34 | sudo mkdir -p /etc/docker 35 | # 创建配置文件 36 | sudo tee /etc/docker/daemon.json <<-'EOF' 37 | { 38 | "registry-mirrors": ["https://registry.docker-cn.com"] 39 | } 40 | EOF 41 | # 加载新的配置文件 42 | sudo systemctl daemon-reload 43 | # 重启docker服务 44 | sudo systemctl restart docker 45 | 46 | 1.运行redis容器 47 | docker run -p 6379:6379 --name redis -d redis 48 | 49 | 2.运行Spring容器 50 | docker run -d -p 9090:9090 \ 51 | --name icechat\ 52 | --link redis:redis\ 53 | thecosy/ice-chat:latest 54 | 55 | ### 聊天服务器 56 | 57 | Ice-chat的服务器端使用 Java 语言编写,基于最简单实用的开源框架。 58 | 59 | * http 服务器使用 [websocket](http://www.eclipse.org/jetty/):轻量级的 Java Servlet 容器。 60 | * 数据库使用 [sqlite](http://http://www.h2database.com/): 轻量级的 Java 内存/文件数据库。 61 | * 页面模板使用 [uniapp](http://freemarker.sourceforge.net/):轻量级的 Java 页面模板引擎。 62 | * 打包时集成为一个整体 jar 包(包含所有的依赖包) 63 | 64 | 要运行Ice-chat服务器端,请在 github项目界面相关版本下载 dist/ 目录下的 .jar 文件。 65 | 66 | 要打包 server-java,请在项目该目录下执行 mvn package 命令。 67 | 68 | 使用如下命令运行服务器: 69 | 70 | java -Dfile.encoding=UTF-8 -jar pushtalk-server-with-dependencies.jar 71 | 72 | `注:实际的文件名后边一般会加上一个版本号。` 73 | 74 | 上述命令运行后: 75 | 76 | * 一个 http server 启动了,监听端口为 10010 77 | * 浏览器里输入 http://localhost:10010 则可以访问到界面 78 | * 要正确地运行服务器,需要通过客户端访问 79 | 80 | Ice-chat服务器默认使用 `10010` 端口。可以在上述命令后指定使用另外的端口。比如以下命令指定使用 `10011` 来启动Ice-chat聊天服务器: 81 | 82 | java -Dfile.encoding=UTF-8 -jar pushtalk-server-with-dependencies.jar 10011 83 | 84 | 85 | ### 移动 客户端 86 | 87 | ![](https://github.com/downloads/good-life/PushTalk/pushtalk_client.png) 88 | 89 | 客户端运行,请在 github 文件下载页 下载 Android apk 安装到 Android 手机即可。 90 | 91 | 你也可以自己编译 `/client-android` 项目之后安装到手机。 92 | 93 | 客户端默认内置官方聊天服务器地址。也可以直接在客户端添加新的服务器,选择新的聊天服务器。 94 | 95 | 如果你有服务器资源,可以长期运行,欢迎你架设Ice-chat聊天服务器,请添加到以下的页面。经过测试没有问题,会被选择预置到客户端代码里: 96 | 97 | 98 | 99 | 100 | ### 开发者支持 101 | 102 | 欢迎广大开发者加入本开源项目,大家一起来不断地丰满、完善Ice-chat。 103 | 104 | 本人是因为兴趣业余时间来开发Ice-chat,考虑到 IM 占用的时间太多,所以请谅解,不提供任何 IM 的沟通方式。希望大家以如下的方式交流: 105 | 106 | * Email: <23339097@qq.com> 107 | * PushTalk频道:`pushtalk`, `报告bug`, `新功能讨论` 等 108 | 109 | 代码提交方式:请先提交Bug修复,把 diff 以文件方式发邮件给我。合作多次后,我可以把你加入到本项目贡献者里来,你就可以随时自由地提交代码了。 110 | 111 | 你也可以自由地 fork 本项目,自己去发布新的版本。 112 | 113 | Ice-chat使用的开源协议:[Apache License 2.0](http://www.apache.org/licenses/LICENSE-2.0) 114 | 115 | -------------------------------------------------------------------------------- /identifier.sqlite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/identifier.sqlite -------------------------------------------------------------------------------- /src/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/src/.DS_Store -------------------------------------------------------------------------------- /src/main/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/src/main/.DS_Store -------------------------------------------------------------------------------- /src/main/java/com/ninespace/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/src/main/java/com/ninespace/.DS_Store -------------------------------------------------------------------------------- /src/main/java/com/ninespace/sqlite/SpringDataSqliteApplication.java: -------------------------------------------------------------------------------- 1 | package com.ninespace.sqlite; 2 | 3 | import org.mybatis.spring.annotation.MapperScan; 4 | import org.springframework.boot.SpringApplication; 5 | import org.springframework.boot.autoconfigure.SpringBootApplication; 6 | import org.springframework.cache.annotation.EnableCaching; 7 | import org.springframework.scheduling.annotation.EnableScheduling; 8 | import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc; 9 | 10 | @EnableScheduling 11 | @MapperScan("com.ninespace.sqlite.mapper") 12 | @EnableCaching 13 | @SpringBootApplication 14 | @EnableSwagger2WebMvc 15 | public class SpringDataSqliteApplication { 16 | 17 | public static void main(String[] args) { 18 | SpringApplication.run(SpringDataSqliteApplication.class, args); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/ninespace/sqlite/configuration/CorsConfig.java: -------------------------------------------------------------------------------- 1 | package com.ninespace.sqlite.configuration; 2 | 3 | import org.springframework.context.annotation.Configuration; 4 | import org.springframework.web.servlet.config.annotation.CorsRegistry; 5 | import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; 6 | 7 | @Configuration 8 | public class CorsConfig implements WebMvcConfigurer { 9 | @Override 10 | public void addCorsMappings(CorsRegistry registry) { 11 | registry.addMapping("/**") 12 | .allowedOrigins("*") 13 | .allowedMethods("GET","HEAD","POST","PUT","DELETE","OPTIONS") 14 | .allowCredentials(true) 15 | .maxAge(3600) 16 | .allowedHeaders("*"); 17 | } 18 | } 19 | 20 | -------------------------------------------------------------------------------- /src/main/java/com/ninespace/sqlite/configuration/Knife4jConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.ninespace.sqlite.configuration; 2 | 3 | import org.springframework.context.annotation.Bean; 4 | import org.springframework.context.annotation.Configuration; 5 | import springfox.documentation.builders.ApiInfoBuilder; 6 | import springfox.documentation.builders.PathSelectors; 7 | import springfox.documentation.builders.RequestHandlerSelectors; 8 | import springfox.documentation.spi.DocumentationType; 9 | import springfox.documentation.spring.web.plugins.Docket; 10 | import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc; 11 | 12 | @Configuration 13 | @EnableSwagger2WebMvc 14 | public class Knife4jConfiguration { 15 | 16 | @Bean(value = "dockerBean") 17 | public Docket dockerBean() { 18 | //指定使用Swagger2规范 19 | Docket docket=new Docket(DocumentationType.SWAGGER_2) 20 | .apiInfo(new ApiInfoBuilder() 21 | //描述字段支持Markdown语法 22 | .description("# Knife4j RESTful APIs") 23 | .termsOfServiceUrl("https://doc.xiaominfo.com/") 24 | .contact("xiaoymin@foxmail.com") 25 | .version("1.0") 26 | .build()) 27 | //分组名称 28 | .groupName("用户服务") 29 | .select() 30 | //这里指定Controller扫描包路径 31 | .apis(RequestHandlerSelectors.basePackage("com.ninespace.sqlite.controller")) 32 | .paths(PathSelectors.any()) 33 | .build(); 34 | return docket; 35 | } 36 | } -------------------------------------------------------------------------------- /src/main/java/com/ninespace/sqlite/configuration/RedisConfig.java: -------------------------------------------------------------------------------- 1 | package com.ninespace.sqlite.configuration; 2 | 3 | import org.springframework.context.annotation.Bean; 4 | import org.springframework.context.annotation.Configuration; 5 | import org.springframework.data.redis.connection.RedisConnectionFactory; 6 | import org.springframework.data.redis.core.RedisTemplate; 7 | import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; 8 | import org.springframework.data.redis.serializer.StringRedisSerializer; 9 | import com.fasterxml.jackson.annotation.JsonAutoDetect; 10 | import com.fasterxml.jackson.annotation.PropertyAccessor; 11 | import com.fasterxml.jackson.databind.ObjectMapper; 12 | 13 | @Configuration 14 | public class RedisConfig { 15 | @Bean 16 | @SuppressWarnings("all") 17 | public RedisTemplate redisTemplate(RedisConnectionFactory factory) { 18 | RedisTemplate template = new RedisTemplate(); 19 | template.setConnectionFactory(factory); 20 | Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); 21 | ObjectMapper om = new ObjectMapper(); 22 | om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); 23 | om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); 24 | jackson2JsonRedisSerializer.setObjectMapper(om); 25 | StringRedisSerializer stringRedisSerializer = new StringRedisSerializer(); 26 | // key采用String的序列化方式 27 | template.setKeySerializer(stringRedisSerializer); 28 | // hash的key也采用String的序列化方式 29 | template.setHashKeySerializer(stringRedisSerializer); 30 | // value序列化方式采用jackson 31 | template.setValueSerializer(jackson2JsonRedisSerializer); 32 | // hash的value序列化方式采用jackson 33 | template.setHashValueSerializer(jackson2JsonRedisSerializer); 34 | template.afterPropertiesSet(); 35 | return template; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/com/ninespace/sqlite/configuration/WebSocketConfig.java: -------------------------------------------------------------------------------- 1 | package com.ninespace.sqlite.configuration; 2 | 3 | import org.springframework.context.annotation.Bean; 4 | import org.springframework.context.annotation.Configuration; 5 | import org.springframework.web.socket.server.standard.ServerEndpointExporter; 6 | 7 | @Configuration 8 | public class WebSocketConfig { 9 | 10 | /** 11 | * 注入一个ServerEndpointExporter,该Bean会自动注册使用@ServerEndpoint注解申明的websocket endpoint 12 | */ 13 | @Bean 14 | public ServerEndpointExporter serverEndpointExporter() { 15 | return new ServerEndpointExporter(); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/ninespace/sqlite/controller/TestController.java: -------------------------------------------------------------------------------- 1 | package com.ninespace.sqlite.controller; 2 | 3 | 4 | import com.ninespace.sqlite.entity.User; 5 | import com.ninespace.sqlite.service.UserService; 6 | import com.ninespace.sqlite.vo.Result; 7 | import io.swagger.annotations.Api; 8 | import io.swagger.annotations.ApiOperation; 9 | import org.springframework.beans.factory.annotation.Autowired; 10 | import org.springframework.web.bind.annotation.GetMapping; 11 | import org.springframework.web.bind.annotation.PathVariable; 12 | import org.springframework.web.bind.annotation.RequestMapping; 13 | import org.springframework.web.bind.annotation.RestController; 14 | 15 | import java.util.Date; 16 | import java.util.concurrent.ArrayBlockingQueue; 17 | import java.util.concurrent.Executors; 18 | import java.util.concurrent.ThreadPoolExecutor; 19 | import java.util.concurrent.TimeUnit; 20 | 21 | @RestController 22 | @Api(tags = "测试接口") 23 | @RequestMapping("/test") 24 | public class TestController { 25 | 26 | @Autowired 27 | private UserService userService; 28 | 29 | //采用线程池技术来生成数据。部分参数参考自己的配置进行设置。 30 | // 我这里采用核心线程数10,最大线程数20,阻塞队列容量10w 31 | // 拒绝策略CallerRunsPolicy的参数来生成。 32 | @ApiOperation(value = "生成测试数据") 33 | @GetMapping("/create}") 34 | public Integer createData(Integer password) { 35 | if (password != 1024) { 36 | return 0; 37 | } 38 | ThreadPoolExecutor poolExecutor = new ThreadPoolExecutor(10, 39 | 20, 1, TimeUnit.MINUTES, 40 | new ArrayBlockingQueue(100000), 41 | Executors.defaultThreadFactory(), new ThreadPoolExecutor.CallerRunsPolicy()); 42 | int max = 1000000; 43 | for (int i = 0; i < max; i++) { 44 | poolExecutor.execute(() -> { 45 | Date now = new Date(); 46 | User user = new User(); 47 | // user.setStatus(0); 48 | // user.setUserName(UUID.randomUUID().toString().replace("-", "")); 49 | // user.setAddress(""); 50 | // user.setCreateTime(now); 51 | // user.setUpdateTime(now); 52 | userService.save(user); 53 | }); 54 | } 55 | return 1; 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /src/main/java/com/ninespace/sqlite/entity/Friend.java: -------------------------------------------------------------------------------- 1 | package com.ninespace.sqlite.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import lombok.Data; 7 | 8 | /** 9 | * @program: spring-data-sqlite 10 | * @description: 11 | * @author: hewei 12 | * @date: 2021-10-21 17:42 13 | **/ 14 | @Data 15 | @TableName(schema = "main",value = "c_friend") 16 | public class Friend { 17 | 18 | @TableId(value = "id",type = IdType.AUTO) 19 | private Long id; 20 | private Integer userId; 21 | private Integer friendId; 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/ninespace/sqlite/entity/Group.java: -------------------------------------------------------------------------------- 1 | package com.ninespace.sqlite.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import lombok.Data; 7 | import org.w3c.dom.Text; 8 | 9 | /** 10 | * @program: spring-data-sqlite 11 | * @description: 12 | * @author: hewei 13 | * @date: 2021-10-21 17:42 14 | **/ 15 | @Data 16 | @TableName(schema = "main",value = "c_group") 17 | public class Group { 18 | 19 | @TableId(value = "id",type = IdType.AUTO) 20 | private Long id; 21 | private String groupName; 22 | private Long groupOwner; 23 | private String members; 24 | private String profile; 25 | private String intro; 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/ninespace/sqlite/entity/OfflineMsg.java: -------------------------------------------------------------------------------- 1 | package com.ninespace.sqlite.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import lombok.Data; 7 | 8 | import java.util.Date; 9 | 10 | @Data 11 | @TableName(schema = "main",value = "offline_msg") 12 | public class OfflineMsg{ 13 | 14 | private static final long serialVersionUID = 1L; 15 | 16 | @TableId(value = "id",type = IdType.AUTO) 17 | private String id; 18 | private String fromId; 19 | private String toId; 20 | private String msg; 21 | private String time; 22 | private Integer type; 23 | private String groupId; 24 | private String profile; 25 | 26 | } 27 | 28 | -------------------------------------------------------------------------------- /src/main/java/com/ninespace/sqlite/entity/User.java: -------------------------------------------------------------------------------- 1 | package com.ninespace.sqlite.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import lombok.Data; 7 | 8 | /** 9 | * @program: spring-data-sqlite 10 | * @description: 11 | * @author: hewei 12 | * @date: 2021-10-21 17:42 13 | **/ 14 | @Data 15 | @TableName(schema = "main",value = "c_user") 16 | public class User { 17 | 18 | @TableId(value = "id",type = IdType.AUTO) 19 | private Integer id; 20 | private String name; 21 | private Long phone; 22 | private String addr; 23 | private String gender; 24 | private String intro; 25 | private String profile; 26 | private String email; 27 | private String username; 28 | private String password; 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/ninespace/sqlite/mapper/FriendMapper.java: -------------------------------------------------------------------------------- 1 | package com.ninespace.sqlite.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.ninespace.sqlite.entity.Friend; 5 | import com.ninespace.sqlite.entity.User; 6 | import org.springframework.stereotype.Repository; 7 | 8 | @Repository 9 | public interface FriendMapper extends BaseMapper { 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/com/ninespace/sqlite/mapper/GroupMapper.java: -------------------------------------------------------------------------------- 1 | package com.ninespace.sqlite.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.ninespace.sqlite.entity.Friend; 5 | import com.ninespace.sqlite.entity.Group; 6 | import org.springframework.stereotype.Repository; 7 | 8 | @Repository 9 | public interface GroupMapper extends BaseMapper { 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/com/ninespace/sqlite/mapper/OfflineMsgMapper.java: -------------------------------------------------------------------------------- 1 | package com.ninespace.sqlite.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.ninespace.sqlite.entity.OfflineMsg; 5 | import org.springframework.stereotype.Repository; 6 | 7 | @Repository 8 | public interface OfflineMsgMapper extends BaseMapper { 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java/com/ninespace/sqlite/mapper/UserMapper.java: -------------------------------------------------------------------------------- 1 | package com.ninespace.sqlite.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.ninespace.sqlite.entity.User; 5 | import org.apache.ibatis.annotations.Param; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * @program: spring-data-sqlite 12 | * @description: 13 | * @author: hewei 14 | * @date: 2021-10-21 17:40 15 | **/ 16 | @Repository 17 | public interface UserMapper extends BaseMapper { 18 | List selectByAddr(@Param("addr") String addr); 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/ninespace/sqlite/service/FriendService.java: -------------------------------------------------------------------------------- 1 | package com.ninespace.sqlite.service; 2 | 3 | import cn.hutool.json.JSONObject; 4 | import com.baomidou.mybatisplus.extension.service.IService; 5 | import com.ninespace.sqlite.entity.Friend; 6 | import com.ninespace.sqlite.entity.OfflineMsg; 7 | import org.springframework.stereotype.Repository; 8 | 9 | @Repository 10 | public interface FriendService extends IService { 11 | JSONObject getFriendList(Integer userid); 12 | JSONObject getOnlyFriendList(Integer userid); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/com/ninespace/sqlite/service/GroupService.java: -------------------------------------------------------------------------------- 1 | package com.ninespace.sqlite.service; 2 | 3 | import cn.hutool.json.JSONObject; 4 | import com.baomidou.mybatisplus.extension.service.IService; 5 | import com.ninespace.sqlite.entity.Friend; 6 | import com.ninespace.sqlite.entity.Group; 7 | import org.springframework.stereotype.Repository; 8 | 9 | @Repository 10 | public interface GroupService extends IService { 11 | JSONObject getOnlyGroupList(Integer userid); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/com/ninespace/sqlite/service/OfflineMsgService.java: -------------------------------------------------------------------------------- 1 | package com.ninespace.sqlite.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.ninespace.sqlite.entity.OfflineMsg; 5 | import org.springframework.stereotype.Repository; 6 | 7 | @Repository 8 | public interface OfflineMsgService extends IService { 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java/com/ninespace/sqlite/service/UserService.java: -------------------------------------------------------------------------------- 1 | package com.ninespace.sqlite.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.ninespace.sqlite.entity.OfflineMsg; 5 | import com.ninespace.sqlite.entity.User; 6 | import org.springframework.stereotype.Repository; 7 | 8 | @Repository 9 | 10 | public interface UserService extends IService { 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/com/ninespace/sqlite/service/impl/OfflineMsgServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.ninespace.sqlite.service.impl; 2 | 3 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 4 | import com.ninespace.sqlite.entity.OfflineMsg; 5 | import com.ninespace.sqlite.mapper.OfflineMsgMapper; 6 | import com.ninespace.sqlite.service.OfflineMsgService; 7 | import org.springframework.stereotype.Service; 8 | 9 | @Service 10 | public class OfflineMsgServiceImpl extends ServiceImpl implements OfflineMsgService { 11 | 12 | } -------------------------------------------------------------------------------- /src/main/java/com/ninespace/sqlite/service/impl/UserServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.ninespace.sqlite.service.impl; 2 | 3 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 4 | import com.ninespace.sqlite.entity.OfflineMsg; 5 | import com.ninespace.sqlite.entity.User; 6 | import com.ninespace.sqlite.mapper.OfflineMsgMapper; 7 | import com.ninespace.sqlite.mapper.UserMapper; 8 | import com.ninespace.sqlite.service.OfflineMsgService; 9 | import com.ninespace.sqlite.service.UserService; 10 | import org.springframework.stereotype.Service; 11 | 12 | @Service 13 | public class UserServiceImpl extends ServiceImpl implements UserService { 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/ninespace/sqlite/task/GetRedisData.java: -------------------------------------------------------------------------------- 1 | package com.ninespace.sqlite.task; 2 | 3 | import com.ninespace.sqlite.controller.UserController; 4 | import com.ninespace.sqlite.entity.User; 5 | import com.ninespace.sqlite.mapper.UserMapper; 6 | import com.ninespace.sqlite.util.RedisUtil; 7 | import org.springframework.scheduling.annotation.Scheduled; 8 | import org.springframework.stereotype.Component; 9 | 10 | import javax.annotation.PreDestroy; 11 | import javax.annotation.Resource; 12 | import java.util.HashMap; 13 | import java.util.List; 14 | import java.util.Map; 15 | 16 | @Component 17 | public class GetRedisData { 18 | 19 | @Resource 20 | private UserMapper userMapper; 21 | 22 | @Resource 23 | private RedisUtil redisUtils; 24 | 25 | public void getData(){ 26 | System.out.println("开启刷新热点数据"); 27 | //系统启动中。。。从数据库获取值 28 | // List users = userMapper.selectList(null); 29 | // for (User user : users) { 30 | // //存入redis,以便于后面都从redis获取值,而不是每次从数据库直接查询 31 | // redisUtils.set(user.getUsername(),user.getProfile()); 32 | // } 33 | } 34 | 35 | @PreDestroy 36 | public void destroy() { 37 | //系统运行结束 38 | } 39 | 40 | @Scheduled(cron = "0/60 0/1 * * * ? ") 41 | public void getDataSchedul() { 42 | //每隔10秒执行一次 43 | getData(); 44 | } 45 | 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/com/ninespace/sqlite/vo/Result.java: -------------------------------------------------------------------------------- 1 | package com.ninespace.sqlite.vo; 2 | 3 | import lombok.Data; 4 | import lombok.experimental.Accessors; 5 | 6 | import java.util.HashMap; 7 | import java.util.Map; 8 | 9 | @Data 10 | @Accessors(chain = true) 11 | public class Result { 12 | 13 | private Integer code; //响应码 14 | private String message; //响应消息 15 | private Map data = new HashMap<>(); 16 | 17 | public static Result ok(){ 18 | Result result = new Result(); 19 | result.setCode(400); 20 | result.setMessage("成功"); 21 | return result; 22 | } 23 | 24 | public static Result error(){ 25 | Result result = new Result(); 26 | result.setCode(401); 27 | result.setMessage("失败"); 28 | return result; 29 | } 30 | 31 | public static Result other(){ 32 | Result result = new Result(); 33 | result.setCode(402); 34 | result.setMessage("其他"); 35 | return result; 36 | } 37 | 38 | public Result data(String key, Object value){ 39 | this.data.put(key, value); 40 | return this; 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /src/main/java/com/ninespace/sqlite/vo/UserGroup.java: -------------------------------------------------------------------------------- 1 | package com.ninespace.sqlite.vo; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import lombok.Data; 7 | 8 | import java.util.Date; 9 | 10 | /** 11 | * @program: spring-data-sqlite 12 | * @description: 13 | * @author: hewei 14 | * @date: 2021-10-21 17:42 15 | **/ 16 | @Data 17 | @TableName(schema = "main",value = "c_user") 18 | public class UserGroup { 19 | 20 | @TableId(value = "id",type = IdType.AUTO) 21 | private Integer id; 22 | private String name; 23 | private Long phone; 24 | private String addr; 25 | private String gender; 26 | private String intro; 27 | private String profile; 28 | private String email; 29 | private String username; 30 | private String password; 31 | private String type; 32 | private Integer unMessages; 33 | private String newMessages; 34 | private String newTime; 35 | } 36 | -------------------------------------------------------------------------------- /src/main/resources/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/src/main/resources/.DS_Store -------------------------------------------------------------------------------- /src/main/resources/application.yml: -------------------------------------------------------------------------------- 1 | # Tomcat 2 | server: 3 | tomcat: 4 | uri-encoding: UTF-8 5 | port: 9090 6 | #spring 7 | spring: 8 | redis: 9 | database: 0 10 | timeout: 0 11 | # Redis服务器地址 12 | host: 127.0.0.1 13 | # Redis服务器连接端口 14 | port: 6379 15 | # Redis服务器连接密码(默认为空) 16 | password: 17 | # 连接池最大连接数(使用负值表示没有限制) 18 | pool: 19 | max-active: 8 20 | # 连接池最大阻塞等待时间(使用负值表示没有限制) 21 | max-wait: -1 22 | # 连接池中的最大空闲连接 23 | max-idle: 8 24 | # 连接池中的最小空闲连接 25 | min-idle: 0 26 | mvc: 27 | pathmatch: 28 | # 配置策略 29 | matching-strategy: ant-path-matcher 30 | application: 31 | name: spring-data-sqlite 32 | # 指定静态资源的路径 33 | resources: 34 | static-locations: classpath:/static/,classpath:/views/,file:${web.upload},file:${web.ueditorUpload} 35 | datasource: 36 | type: com.alibaba.druid.pool.DruidDataSource 37 | driver-class-name: org.sqlite.JDBC 38 | # 初始化模式: 1.embedded 内存数据库 2.always 始终初始化 3.never 不初始化 39 | initialization-mode: never 40 | schema: classpath:sql/schema.sql 41 | data: classpath:sql/data.sql 42 | # 方式一: 引用外部文件 43 | # url: jdbc:sqlite:D:/eclipse/xy.db 44 | #方式二: 引用项目中的文件 45 | url: jdbc:sqlite::resource:static/cloud.db 46 | username: root 47 | password: 123456 48 | 49 | # MyBatisPlus配置 50 | mybatis-plus: 51 | configuration: 52 | log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 53 | map-underscore-to-camel-case: false 54 | mapper-locations: 55 | - classpath:mapper/**/*.xml 56 | type-aliases-package: com.ninespace.sqlite.model 57 | #config-location: classpath:mybatis.xml 58 | global-config: 59 | db-config: 60 | # 全局默认主键类型 61 | id-type: UUID 62 | # 表名、是否使用下划线命名,默认数据库表使用下划线命名 63 | table-underline: true 64 | # 逻辑已删除值(默认为 1) 65 | logic-delete-value: true 66 | # 逻辑未删除值(默认为 0) 67 | logic-not-delete-value: false 68 | #分页 69 | pagehelper: 70 | helper-dialect: sqlite 71 | reasonable: true 72 | support-methods-arguments: true 73 | params: count=countsql 74 | # sql打印 75 | logging: 76 | level: debug 77 | level.com.ninespace.sqlite.mapper: debug 78 | file: 79 | path: logs/ 80 | name: sqlite.log 81 | 82 | -------------------------------------------------------------------------------- /src/main/resources/mapper/userMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/main/resources/sql/data.sql: -------------------------------------------------------------------------------- 1 | INSERT INTO `c_user` VALUES (1,'test', 17630505717, 'test123', '男', '这个人很懒没有留下简介', 'https://img2.woyaogexing.com/2022/07/17/5bbaa5352282a8f7!400x400.jpg', '23339097@qq.com', 'admin', '123123'); 2 | INSERT INTO `c_user` VALUES (2,'test01', 17630505716, 'test001', '女', '这个人很懒没有留下简介', 'https://img2.woyaogexing.com/2022/08/27/90e40f8c47330f70!400x400.jpg', '23339097@qq.com', 'admin01', '123123'); 3 | INSERT INTO `c_user` VALUES (3,'test02', 17630505715, 'test002', '男', '这个人很懒没有留下简介', 'https://img2.woyaogexing.com/2022/08/27/3529e15f0532682c!400x400.jpg', '23339097@qq.com', 'admin02', '123123'); 4 | INSERT INTO `c_user` VALUES (4,'test123', 17630505714, 'test123', '男', '这个人很懒没有留下简介', 'https://img2.woyaogexing.com/2022/08/27/783ea61ff2bbbdaf!400x400.png', '23339097@qq.com', 'admin123', '123123'); 5 | INSERT INTO `c_user` VALUES (5,'test9089', 17630505713, 'test001', '男', '这个人很懒没有留下简介', 'https://img2.woyaogexing.com/2022/08/27/6807ea2da585504c!400x400.jpg', '23339097@qq.com', 'admin9089', '123123'); 6 | 7 | INSERT INTO `offline_msg` VALUES (10001,'test9089', 'test001','test001','', 1, 100001, 'https://img2.woyaogexing.com/2022/08/27/6807ea2da585504c!400x400.jpg'); 8 | 9 | INSERT INTO `c_group` VALUES (100001,'广场',1,'','这个群聊很懒','https://img2.woyaogexing.com/2022/08/27/6807ea2da585504c!400x400.jpg'); 10 | 11 | -------------------------------------------------------------------------------- /src/main/resources/sql/schema.sql: -------------------------------------------------------------------------------- 1 | /** 2 | 用户表 3 | */ 4 | DROP TABLE IF EXISTS `c_user`; 5 | CREATE TABLE 'c_user'( 6 | 'id' INTEGER PRIMARY KEY AUTOINCREMENT, --主键 7 | 'name' VARCHAR (20), --姓名 8 | 'phone' INTEGER (20), --手机号 9 | 'addr' VARCHAR (50), --地址 10 | 'gender' VARCHAR (10), --性别 11 | 'intro' VARCHAR (50), --简介 12 | 'profile' VARCHAR (50), --头像 13 | 'email' VARCHAR (50), --邮箱 14 | 'username' VARCHAR (20), --用户名 15 | 'password' VARCHAR (20) --密码 16 | ); 17 | /** 18 | 用户好友表 19 | */ 20 | DROP TABLE IF EXISTS `c_friend`; 21 | CREATE TABLE 'c_friend'( 22 | 'id' INTEGER PRIMARY KEY AUTOINCREMENT, --主键 23 | 'userId' VARCHAR (20) NULL DEFAULT NULL, --用户id 24 | 'friendId' VARCHAR (20) NULL DEFAULT NULL --接朋友id 25 | ); 26 | /** 27 | 群聊表(包含用户) 28 | */ 29 | DROP TABLE IF EXISTS `c_group`; 30 | CREATE TABLE 'c_group'( 31 | 'id' INTEGER PRIMARY KEY AUTOINCREMENT, --主键 32 | 'groupName' VARCHAR (20) NULL DEFAULT NULL,--群聊名称 33 | 'groupOwner' INTEGER NULL DEFAULT NULL,--群聊拥有者 34 | 'members' TEXT, 35 | 'intro' VARCHAR (20) NULL DEFAULT NULL,--群聊名称 36 | 'profile' VARCHAR (20) NULL DEFAULT NULL--群聊名称 37 | ); 38 | /** 39 | 用户群聊表 40 | */ 41 | -- DROP TABLE IF EXISTS `c_user_group`; 42 | -- CREATE TABLE 'c_user_group'( 43 | -- 'id' INTEGER PRIMARY KEY AUTOINCREMENT, --主键 44 | -- 'userId' VARCHAR (20) NULL DEFAULT NULL, --用户id 45 | -- 'groupId' VARCHAR (20) NULL DEFAULT NULL --群聊id 46 | -- ); 47 | /** 48 | 消息缓存表 49 | */ 50 | DROP TABLE IF EXISTS `offline_msg`; 51 | CREATE TABLE 'offline_msg'( 52 | 'id' INTEGER PRIMARY KEY AUTOINCREMENT, --主键 53 | 'fromId' VARCHAR (20) NULL DEFAULT NULL, --发送者id 54 | 'toId' VARCHAR (20) NULL DEFAULT NULL, --接收者id 55 | 'msg' VARCHAR (255) NULL DEFAULT NULL, --消息 56 | 'time' DATE, --时间 57 | 'type' INTEGER NULL DEFAULT NULL, --type 58 | 'groupId' INTEGER, --groupId 59 | 'profile' VARCHAR (20) --接收者id 60 | ); 61 | 62 | -------------------------------------------------------------------------------- /src/main/resources/static/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/src/main/resources/static/.DS_Store -------------------------------------------------------------------------------- /src/main/resources/static/cloud.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/src/main/resources/static/cloud.db -------------------------------------------------------------------------------- /src/test/java/com/ninespace/sqlite/SpringDataSqliteApplicationTests.java: -------------------------------------------------------------------------------- 1 | package com.ninespace.sqlite; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class SpringDataSqliteApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /target/classes/application.yml: -------------------------------------------------------------------------------- 1 | # Tomcat 2 | server: 3 | tomcat: 4 | uri-encoding: UTF-8 5 | port: 9090 6 | #spring 7 | spring: 8 | redis: 9 | database: 0 10 | timeout: 0 11 | # Redis服务器地址 12 | host: redis 13 | # Redis服务器连接端口 14 | port: 6379 15 | # Redis服务器连接密码(默认为空) 16 | password: 17 | # 连接池最大连接数(使用负值表示没有限制) 18 | pool: 19 | max-active: 8 20 | # 连接池最大阻塞等待时间(使用负值表示没有限制) 21 | max-wait: -1 22 | # 连接池中的最大空闲连接 23 | max-idle: 8 24 | # 连接池中的最小空闲连接 25 | min-idle: 0 26 | mvc: 27 | pathmatch: 28 | # 配置策略 29 | matching-strategy: ant-path-matcher 30 | application: 31 | name: spring-data-sqlite 32 | # 指定静态资源的路径 33 | resources: 34 | static-locations: classpath:/static/,classpath:/views/,file:${web.upload},file:${web.ueditorUpload} 35 | datasource: 36 | type: com.alibaba.druid.pool.DruidDataSource 37 | driver-class-name: org.sqlite.JDBC 38 | # 初始化模式: 1.embedded 内存数据库 2.always 始终初始化 3.never 不初始化 39 | initialization-mode: never 40 | schema: classpath:sql/schema.sql 41 | data: classpath:sql/data.sql 42 | # 方式一: 引用外部文件 43 | # url: jdbc:sqlite:D:/eclipse/xy.db 44 | #方式二: 引用项目中的文件 45 | url: jdbc:sqlite::resource:static/cloud.db 46 | username: root 47 | password: 123456 48 | 49 | # MyBatisPlus配置 50 | mybatis-plus: 51 | configuration: 52 | log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 53 | map-underscore-to-camel-case: false 54 | mapper-locations: 55 | - classpath:mapper/**/*.xml 56 | type-aliases-package: com.ninespace.sqlite.model 57 | #config-location: classpath:mybatis.xml 58 | global-config: 59 | db-config: 60 | # 全局默认主键类型 61 | id-type: UUID 62 | # 表名、是否使用下划线命名,默认数据库表使用下划线命名 63 | table-underline: true 64 | # 逻辑已删除值(默认为 1) 65 | logic-delete-value: true 66 | # 逻辑未删除值(默认为 0) 67 | logic-not-delete-value: false 68 | #分页 69 | pagehelper: 70 | helper-dialect: sqlite 71 | reasonable: true 72 | support-methods-arguments: true 73 | params: count=countsql 74 | # sql打印 75 | logging: 76 | level: debug 77 | level.com.ninespace.sqlite.mapper: debug 78 | file: 79 | path: logs/ 80 | name: sqlite.log 81 | 82 | -------------------------------------------------------------------------------- /target/classes/com/ninespace/sqlite/SpringDataSqliteApplication.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/target/classes/com/ninespace/sqlite/SpringDataSqliteApplication.class -------------------------------------------------------------------------------- /target/classes/com/ninespace/sqlite/configuration/CorsConfig.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/target/classes/com/ninespace/sqlite/configuration/CorsConfig.class -------------------------------------------------------------------------------- /target/classes/com/ninespace/sqlite/configuration/Knife4jConfiguration.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/target/classes/com/ninespace/sqlite/configuration/Knife4jConfiguration.class -------------------------------------------------------------------------------- /target/classes/com/ninespace/sqlite/configuration/RedisConfig.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/target/classes/com/ninespace/sqlite/configuration/RedisConfig.class -------------------------------------------------------------------------------- /target/classes/com/ninespace/sqlite/configuration/WebSocketConfig.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/target/classes/com/ninespace/sqlite/configuration/WebSocketConfig.class -------------------------------------------------------------------------------- /target/classes/com/ninespace/sqlite/configuration/WebSocketServer.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/target/classes/com/ninespace/sqlite/configuration/WebSocketServer.class -------------------------------------------------------------------------------- /target/classes/com/ninespace/sqlite/controller/FriendController.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/target/classes/com/ninespace/sqlite/controller/FriendController.class -------------------------------------------------------------------------------- /target/classes/com/ninespace/sqlite/controller/GroupController.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/target/classes/com/ninespace/sqlite/controller/GroupController.class -------------------------------------------------------------------------------- /target/classes/com/ninespace/sqlite/controller/MessageController.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/target/classes/com/ninespace/sqlite/controller/MessageController.class -------------------------------------------------------------------------------- /target/classes/com/ninespace/sqlite/controller/UserController.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/target/classes/com/ninespace/sqlite/controller/UserController.class -------------------------------------------------------------------------------- /target/classes/com/ninespace/sqlite/entity/Friend.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/target/classes/com/ninespace/sqlite/entity/Friend.class -------------------------------------------------------------------------------- /target/classes/com/ninespace/sqlite/entity/Group.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/target/classes/com/ninespace/sqlite/entity/Group.class -------------------------------------------------------------------------------- /target/classes/com/ninespace/sqlite/entity/OfflineMsg.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/target/classes/com/ninespace/sqlite/entity/OfflineMsg.class -------------------------------------------------------------------------------- /target/classes/com/ninespace/sqlite/entity/User.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/target/classes/com/ninespace/sqlite/entity/User.class -------------------------------------------------------------------------------- /target/classes/com/ninespace/sqlite/mapper/FriendMapper.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/target/classes/com/ninespace/sqlite/mapper/FriendMapper.class -------------------------------------------------------------------------------- /target/classes/com/ninespace/sqlite/mapper/GroupMapper.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/target/classes/com/ninespace/sqlite/mapper/GroupMapper.class -------------------------------------------------------------------------------- /target/classes/com/ninespace/sqlite/mapper/OfflineMsgMapper.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/target/classes/com/ninespace/sqlite/mapper/OfflineMsgMapper.class -------------------------------------------------------------------------------- /target/classes/com/ninespace/sqlite/mapper/UserMapper.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/target/classes/com/ninespace/sqlite/mapper/UserMapper.class -------------------------------------------------------------------------------- /target/classes/com/ninespace/sqlite/service/FriendService.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/target/classes/com/ninespace/sqlite/service/FriendService.class -------------------------------------------------------------------------------- /target/classes/com/ninespace/sqlite/service/GroupService.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/target/classes/com/ninespace/sqlite/service/GroupService.class -------------------------------------------------------------------------------- /target/classes/com/ninespace/sqlite/service/OfflineMsgService.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/target/classes/com/ninespace/sqlite/service/OfflineMsgService.class -------------------------------------------------------------------------------- /target/classes/com/ninespace/sqlite/service/UserService.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/target/classes/com/ninespace/sqlite/service/UserService.class -------------------------------------------------------------------------------- /target/classes/com/ninespace/sqlite/service/impl/FriendServiceImpl.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/target/classes/com/ninespace/sqlite/service/impl/FriendServiceImpl.class -------------------------------------------------------------------------------- /target/classes/com/ninespace/sqlite/service/impl/GroupServiceImpl.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/target/classes/com/ninespace/sqlite/service/impl/GroupServiceImpl.class -------------------------------------------------------------------------------- /target/classes/com/ninespace/sqlite/service/impl/OfflineMsgServiceImpl.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/target/classes/com/ninespace/sqlite/service/impl/OfflineMsgServiceImpl.class -------------------------------------------------------------------------------- /target/classes/com/ninespace/sqlite/service/impl/UserServiceImpl.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/target/classes/com/ninespace/sqlite/service/impl/UserServiceImpl.class -------------------------------------------------------------------------------- /target/classes/com/ninespace/sqlite/task/GetRedisData.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/target/classes/com/ninespace/sqlite/task/GetRedisData.class -------------------------------------------------------------------------------- /target/classes/com/ninespace/sqlite/util/RedisUtil.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/target/classes/com/ninespace/sqlite/util/RedisUtil.class -------------------------------------------------------------------------------- /target/classes/com/ninespace/sqlite/vo/Result.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/target/classes/com/ninespace/sqlite/vo/Result.class -------------------------------------------------------------------------------- /target/classes/com/ninespace/sqlite/vo/UserGroup.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/target/classes/com/ninespace/sqlite/vo/UserGroup.class -------------------------------------------------------------------------------- /target/classes/mapper/userMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /target/classes/sql/data.sql: -------------------------------------------------------------------------------- 1 | INSERT INTO `c_user` VALUES (1,'test', 17630505717, 'test123', '男', '这个人很懒没有留下简介', 'https://img2.woyaogexing.com/2022/07/17/5bbaa5352282a8f7!400x400.jpg', '23339097@qq.com', 'admin', '123123'); 2 | INSERT INTO `c_user` VALUES (2,'test01', 17630505716, 'test001', '女', '这个人很懒没有留下简介', 'https://img2.woyaogexing.com/2022/08/27/90e40f8c47330f70!400x400.jpg', '23339097@qq.com', 'admin01', '123123'); 3 | INSERT INTO `c_user` VALUES (3,'test02', 17630505715, 'test002', '男', '这个人很懒没有留下简介', 'https://img2.woyaogexing.com/2022/08/27/3529e15f0532682c!400x400.jpg', '23339097@qq.com', 'admin02', '123123'); 4 | INSERT INTO `c_user` VALUES (4,'test123', 17630505714, 'test123', '男', '这个人很懒没有留下简介', 'https://img2.woyaogexing.com/2022/08/27/783ea61ff2bbbdaf!400x400.png', '23339097@qq.com', 'admin123', '123123'); 5 | INSERT INTO `c_user` VALUES (5,'test9089', 17630505713, 'test001', '男', '这个人很懒没有留下简介', 'https://img2.woyaogexing.com/2022/08/27/6807ea2da585504c!400x400.jpg', '23339097@qq.com', 'admin9089', '123123'); 6 | 7 | INSERT INTO `offline_msg` VALUES (10001,'test9089', 'test001','test001','', 1, 100001, 'https://img2.woyaogexing.com/2022/08/27/6807ea2da585504c!400x400.jpg'); 8 | 9 | INSERT INTO `c_group` VALUES (100001,'广场',1,'','这个群聊很懒','https://img2.woyaogexing.com/2022/08/27/6807ea2da585504c!400x400.jpg'); 10 | 11 | -------------------------------------------------------------------------------- /target/classes/sql/schema.sql: -------------------------------------------------------------------------------- 1 | /** 2 | 用户表 3 | */ 4 | DROP TABLE IF EXISTS `c_user`; 5 | CREATE TABLE 'c_user'( 6 | 'id' INTEGER PRIMARY KEY AUTOINCREMENT, --主键 7 | 'name' VARCHAR (20), --姓名 8 | 'phone' INTEGER (20), --手机号 9 | 'addr' VARCHAR (50), --地址 10 | 'gender' VARCHAR (10), --性别 11 | 'intro' VARCHAR (50), --简介 12 | 'profile' VARCHAR (50), --头像 13 | 'email' VARCHAR (50), --邮箱 14 | 'username' VARCHAR (20), --用户名 15 | 'password' VARCHAR (20) --密码 16 | ); 17 | /** 18 | 用户好友表 19 | */ 20 | DROP TABLE IF EXISTS `c_friend`; 21 | CREATE TABLE 'c_friend'( 22 | 'id' INTEGER PRIMARY KEY AUTOINCREMENT, --主键 23 | 'userId' VARCHAR (20) NULL DEFAULT NULL, --用户id 24 | 'friendId' VARCHAR (20) NULL DEFAULT NULL --接朋友id 25 | ); 26 | /** 27 | 群聊表(包含用户) 28 | */ 29 | DROP TABLE IF EXISTS `c_group`; 30 | CREATE TABLE 'c_group'( 31 | 'id' INTEGER PRIMARY KEY AUTOINCREMENT, --主键 32 | 'groupName' VARCHAR (20) NULL DEFAULT NULL,--群聊名称 33 | 'groupOwner' INTEGER NULL DEFAULT NULL,--群聊拥有者 34 | 'members' TEXT, 35 | 'intro' VARCHAR (20) NULL DEFAULT NULL,--群聊名称 36 | 'profile' VARCHAR (20) NULL DEFAULT NULL--群聊名称 37 | ); 38 | /** 39 | 用户群聊表 40 | */ 41 | -- DROP TABLE IF EXISTS `c_user_group`; 42 | -- CREATE TABLE 'c_user_group'( 43 | -- 'id' INTEGER PRIMARY KEY AUTOINCREMENT, --主键 44 | -- 'userId' VARCHAR (20) NULL DEFAULT NULL, --用户id 45 | -- 'groupId' VARCHAR (20) NULL DEFAULT NULL --群聊id 46 | -- ); 47 | /** 48 | 消息缓存表 49 | */ 50 | DROP TABLE IF EXISTS `offline_msg`; 51 | CREATE TABLE 'offline_msg'( 52 | 'id' INTEGER PRIMARY KEY AUTOINCREMENT, --主键 53 | 'fromId' VARCHAR (20) NULL DEFAULT NULL, --发送者id 54 | 'toId' VARCHAR (20) NULL DEFAULT NULL, --接收者id 55 | 'msg' VARCHAR (255) NULL DEFAULT NULL, --消息 56 | 'time' DATE, --时间 57 | 'type' INTEGER NULL DEFAULT NULL, --type 58 | 'groupId' INTEGER, --groupId 59 | 'profile' VARCHAR (20) --接收者id 60 | ); 61 | 62 | -------------------------------------------------------------------------------- /target/classes/static/cloud.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/target/classes/static/cloud.db -------------------------------------------------------------------------------- /target/maven-archiver/pom.properties: -------------------------------------------------------------------------------- 1 | #Generated by Maven 2 | #Thu Sep 29 15:41:03 CST 2022 3 | groupId=com.ninespace 4 | artifactId=sqlite 5 | version=0.0.1-SNAPSHOT 6 | -------------------------------------------------------------------------------- /target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst: -------------------------------------------------------------------------------- 1 | com/ninespace/sqlite/SpringDataSqliteApplication.class 2 | com/ninespace/sqlite/controller/UserController.class 3 | com/ninespace/sqlite/mapper/UserMapper.class 4 | -------------------------------------------------------------------------------- /target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst: -------------------------------------------------------------------------------- 1 | com/ninespace/sqlite/SpringDataSqliteApplicationTests.class 2 | -------------------------------------------------------------------------------- /target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst: -------------------------------------------------------------------------------- 1 | /Users/apple/Documents/JavaPrograme/Ice-chat/src/test/java/com/ninespace/sqlite/SpringDataSqliteApplicationTests.java 2 | -------------------------------------------------------------------------------- /target/sqlite-0.0.1-SNAPSHOT.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/target/sqlite-0.0.1-SNAPSHOT.jar -------------------------------------------------------------------------------- /target/sqlite-0.0.1-SNAPSHOT.jar.original: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/target/sqlite-0.0.1-SNAPSHOT.jar.original -------------------------------------------------------------------------------- /target/test-classes/com/ninespace/sqlite/SpringDataSqliteApplicationTests.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thecosy/Ice-chat/499034728e53b6a8fbf9ef22e74b07c9a39c3185/target/test-classes/com/ninespace/sqlite/SpringDataSqliteApplicationTests.class --------------------------------------------------------------------------------