Browse Source

更新消息排序规则

master
袁磊 8 months ago
parent
commit
9685b6648d
  1. 3
      App.vue
  2. 4
      uni_modules/vrapile-im/changelog.md
  3. 2
      uni_modules/vrapile-im/package.json
  4. 11
      utils/accessLog.js
  5. 36
      utils/nineTool.js
  6. 11
      utils/nodeId.js
  7. 11
      utils/request.js

3
App.vue

@ -2,8 +2,7 @@
import store from '@/store'
import socketStore from '@/uni_modules/vrapile-im/store'
import { getToken } from '@/utils/token'
import { setNodeId, getNodeId } from '@/utils/nodeId'
import { getLongRandom } from '@/utils/nineTool';
import { getNodeId } from '@/utils/nodeId'
export default {
globalData: {
// appId

4
uni_modules/vrapile-im/changelog.md

@ -1,3 +1,7 @@
## 1.1.13(2025-07-17)
更新消息排序规则
## 1.1.12(2025-07-17)
更新消息排序规则
## 1.1.11(2025-07-14)
更新readme说明文件
## 1.1.10(2025-04-11)

2
uni_modules/vrapile-im/package.json

@ -1,7 +1,7 @@
{
"id": "vrapile-im",
"displayName": "im页面组件",
"version": "1.1.11",
"version": "1.1.13",
"description": "实现WebSocket连接/好友/群组/新消息/历史消息,都是全局配置并本地化存储,已调试兼容H5/微信小程序/安卓App/PC多端同步通讯",
"keywords": [
"IM页面组件,websocket应用"

11
utils/accessLog.js

@ -1,24 +1,17 @@
import store from '@/store'
import { diyApi } from '@/utils/queryByDiy';
import { setNodeId, getNodeId } from '@/utils/nodeId'
import { getLongRandom } from '@/utils/nineTool';
import { getNodeId } from '@/utils/nodeId';
export function saveAccessLog(to, f) {
// 开发环境不保存日志
if(import.meta.env.VITE_APP_ENV == 'development'){
return;
}
// 生成一个nodeId,用于记录日志
let nodeId = getNodeId();
if(!nodeId){
nodeId = getLongRandom(24)
setNodeId(nodeId)
}
let flag = getApp().globalData.terminal + "_" + f;
let data = {
platform: getApp().globalData.appId,
terminal: getApp().globalData.terminal,
nodeId: nodeId,
nodeId: getNodeId(),
flag: getApp().globalData.terminal + "_" + f,
fullPath: to.url.split("?")[0],
allPath: to.url,

36
utils/nineTool.js

@ -65,7 +65,7 @@ export function parseTime(time, pattern) {
s: date.getSeconds(),
a: date.getDay()
}
const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
const time_str = format.replace(new RegExp(/{(y|m|d|h|i|s|a)+}/g), (result, key) => {
let value = formatObj[key]
// Note: getDay() returns 0 on Sunday
if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value] }
@ -163,6 +163,15 @@ export function formatTime(time, option) {
)
}
export function showRangeTime(date, start=1) {
if(start==1){
return date.replace(" 00:00:00", "")
}
if(start==2){
return date.replace(" 23:59:59", "")
}
}
// number:要格式化的数字,
// decimals:保留几位小数, 默认0位
// dec_point:小数点符号, 默认 .
@ -170,19 +179,19 @@ export function formatTime(time, option) {
// tail_add: 小数点后面数据是否添加0补足位数, 默认空字符
// null_default: 如果为空的值, 默认空字符
function numberFormat(number, decimals, tail_add="", thousands_sep, dec_point, null_default="") {
number = (number + '').replace(/[^0-9+-Ee.]/g, '');
var n = !isFinite(+number) ? 0 : +number,
number = (number + '').replace(new RegExp(/[^0-9+-Ee.]/g), '');
let n = !isFinite(+number) ? 0 : +number,
prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
s = '',
toFixedFix = function (n, prec) {
var k = Math.pow(10, prec);
let k = Math.pow(10, prec);
return '' + Math.round(n * k) / k;
};
s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
var re = /(-?\d+)(\d{3})/;
let re = new RegExp(/(-?\d+)(\d{3})/g);
if(sep.length > 0){
while (re.test(s[0])) {
s[0] = s[0].replace(re, "$1" + sep + "$2");
@ -211,9 +220,10 @@ export function formatNumber(number, decimals, tail_add, thousands_sep, dec_poin
}
// thousands_sep:千分位符号 默认空字符
export function formatPercent(number, decimals, tail_add, thousands_sep="", dec_point, null_default) {
if(isNull(number) || isNull(String(number).trim().replaceAll(",", ""))){return null_default;}
if(!isNumber(String(number).trim().replaceAll(",", ""))){return number;}
number = String(number).trim().replaceAll(",", "");
let re = new RegExp(/,/g)
if(isNull(number) || isNull(String(number).trim().replace(re, ""))){return null_default;}
if(!isNumber(String(number).trim().replace(re, ""))){return number;}
number = String(number).trim().replace(re, "");
let value = numberFormat(number*100, decimals, tail_add, thousands_sep, dec_point, null_default);
if(value){
return value + "%";
@ -323,7 +333,7 @@ export function getLongRandom(len){
while(data[index] == 0){
index++;
}
return parseTime(Date.now(), '{y}{m}{d}{h}{i}{s}') + "" + data.substr(index, len-16);
return parseTime(Date.now(), '{y}{m}{d}{h}{i}{s}') + "" + data.substr(index, len-14);
}
export function moveInArray(array, fromIndex, toIndex) {
@ -335,14 +345,14 @@ export function jsonCharBigInt(s){
if(typeof s !== 'string'){
return s
}
let re = /([\\]?['|"]{1})(\w+[\\]?['|"]{1}[ |\n|r|\t]*:[ |\n|r|\t]*)([-]?\d{15,})/g
return s.replaceAll(re, "$1$2$1$3$1")
const re = new RegExp(/([\\]?['|"]{1})(\w+[\\]?['|"]{1}[ |\n|r|\t]*:[ |\n|r|\t]*)([-]?\d{15,})/gm);
return s.replace(re, "$1$2$1$3$1")
}
export function jsonParse(s){
if(typeof s !== 'string'){
return s
}
let re = /([\\]?['|"]{1})(\w+[\\]?['|"]{1}[ |\n|r|\t]*:[ |\n|r|\t]*)([-]?\d{15,})/g
return JSON.parse(s.replaceAll(re, "$1$2$1$3$1"))
const re = new RegExp(/([\\]?['|"]{1})(\w+[\\]?['|"]{1}[ |\n|r|\t]*:[ |\n|r|\t]*)([-]?\d{15,})/gm);
return JSON.parse(s.replace(re, "$1$2$1$3$1"))
}

11
utils/nodeId.js

@ -1,7 +1,14 @@
import { getLongRandom } from '@/utils/nineTool';
const NodeIdKey = 'App-Node-Id'
export function getNodeId() {
return uni.getStorageSync(NodeIdKey)
export function getNodeId(len=18) {
let nodeId = uni.getStorageSync(NodeIdKey);
if(!nodeId){
nodeId = getLongRandom(len)
uni.setStorageSync(NodeIdKey, nodeId)
}
return nodeId
}
export function setNodeId(nodeId) {

11
utils/request.js

@ -1,7 +1,6 @@
import store from '@/store'
import { getToken } from '@/utils/token'
import { setNodeId, getNodeId } from '@/utils/nodeId'
import { getLongRandom } from '@/utils/nineTool';
import { getNodeId } from '@/utils/nodeId';
import errorCode from '@/utils/errorCode'
import { getSessionCache, setSessionCache } from '@/utils/cache'
import { toast, showConfirm, tansParams } from '@/utils/requestTool'
@ -19,15 +18,9 @@ const request = config => {
config.header['Authorization'] = 'Vrapile ' + getToken()
}
// 节点
let nodeId = getNodeId();
if(!nodeId){
nodeId = getLongRandom(24);
setNodeId(nodeId);
}
config.header["platform"] = getApp().globalData.appId;
config.header["terminal"] = getApp().globalData.terminal;
config.header["nodeId"] = nodeId;
config.header["nodeId"] = getNodeId();
// get请求映射params参数
if (config.params) {

Loading…
Cancel
Save