community-srv-cloud-utils
Version:
微信小程序通用工具库 - 前后端共用,社区服务项目
283 lines (214 loc) • 6.08 kB
Markdown
# @community-srv/cloud-utils
微信小程序通用工具库 - 前后端共用,社区服务项目专用工具函数
## 安装
```bash
npm install @community-srv/cloud-utils --registry=https://registry.npmjs.org
```
## 使用
```javascript
const { formatTimeAgo, isValidEmail, generateRandomString } = require('@community-srv/cloud-utils')
// 时间格式化
const timeAgo = formatTimeAgo(new Date())
console.log(timeAgo) // "刚刚" 或 "5分钟前" 等
// 邮箱验证
const isValid = isValidEmail('user@example.com')
// 生成随机字符串
const randomStr = generateRandomString(10)
```
## API 文档
### 时间相关
#### formatTimeAgo(date)
将时间戳转换为相对时间显示
**参数:**
- `date` (Date|string|number): 时间
**返回:**
- `string`: 格式化后的时间字符串
**示例:**
```javascript
formatTimeAgo(new Date()) // "刚刚"
formatTimeAgo(Date.now() - 300000) // "5分钟前"
formatTimeAgo(Date.now() - 3600000) // "1小时前"
formatTimeAgo(Date.now() - 86400000) // "1天前"
```
#### formatFullTime(date)
格式化完整时间显示
**参数:**
- `date` (Date|string|number): 时间
**返回:**
- `string`: 格式化后的时间字符串
**示例:**
```javascript
formatFullTime(new Date()) // "2024-01-15 14:30:00"
```
### 验证函数
#### validateJobData(data)
招聘信息数据验证
**参数:**
- `data` (Object): 招聘信息数据对象
**返回:**
- `Object`: `{ isValid: boolean, errors: string[] }`
**示例:**
```javascript
const jobData = {
company: '测试公司',
position: '前端开发',
salary: '8000-12000',
count: 2,
address: '北京市朝阳区',
contact: '张经理',
phone: '13800138000',
communities: ['community1', 'community2']
}
const validation = validateJobData(jobData)
if (!validation.isValid) {
console.log('验证失败:', validation.errors)
}
```
#### validateId(id, fieldName)
验证ID参数
**参数:**
- `id` (string): 要验证的ID
- `fieldName` (string): 字段名称,默认'ID'
**返回:**
- `Object`: `{ isValid: boolean, error: string }`
#### validateStatus(status, validStatuses, fieldName)
验证状态值
**参数:**
- `status` (string): 要验证的状态值
- `validStatuses` (Array): 有效状态数组
- `fieldName` (string): 字段名称,默认'状态'
**返回:**
- `Object`: `{ isValid: boolean, error: string }`
#### isValidEmail(email)
验证邮箱格式
**参数:**
- `email` (string): 邮箱地址
**返回:**
- `boolean`: 是否为有效邮箱
#### isValidPhone(phone)
验证手机号格式
**参数:**
- `phone` (string): 手机号
**返回:**
- `boolean`: 是否为有效手机号
### 工具函数
#### generateRandomString(length)
生成随机字符串
**参数:**
- `length` (number): 长度,默认8
**返回:**
- `string`: 随机字符串
#### calculateSimilarity(text1, text2)
计算文本相似度(简单的编辑距离算法)
**参数:**
- `text1` (string): 文本1
- `text2` (string): 文本2
**返回:**
- `number`: 相似度(0-1)
## 在云函数中使用
### 1. 安装依赖
```bash
cd cloudfunctions/your-function
npm install @community-srv/cloud-utils --registry=https://registry.npmjs.org
```
### 2. 引用工具函数
```javascript
const { formatTimeAgo, isValidEmail } = require('@community-srv/cloud-utils')
// 使用
const timeAgo = formatTimeAgo(item.createTime)
const isValid = isValidEmail(userEmail)
```
### 3. 更新package.json
```json
{
"dependencies": {
"wx-server-sdk": "~2.6.3",
"@community-srv/cloud-utils": "^2.0.0"
}
}
```
## 在前端中使用
### 1. 安装依赖
```bash
cd miniprogram
npm install @community-srv/cloud-utils --registry=https://registry.npmjs.org
```
### 2. 构建npm包
在微信开发者工具中:
1. 点击 "工具" -> "构建npm"
2. 等待构建完成
### 3. 使用工具函数
```javascript
// 在页面或组件中
const { formatTimeAgo, isValidEmail, validateJobData } = require('@community-srv/cloud-utils')
Page({
data: {
timeAgo: '',
isEmailValid: false,
jobData: {}
},
onLoad() {
// 格式化时间
this.setData({
timeAgo: formatTimeAgo(new Date())
})
// 验证邮箱
const isValid = isValidEmail('user@example.com')
this.setData({
isEmailValid: isValid
})
},
// 表单提交验证
onSubmit() {
const validation = validateJobData(this.data.jobData)
if (!validation.isValid) {
wx.showToast({
title: validation.errors[0],
icon: 'none'
})
return
}
// 验证通过,继续提交
console.log('数据验证通过')
}
})
```
## 管理员权限和用户映射功能
**注意:** 从 v2.0.0 开始,管理员权限验证和用户昵称映射功能已迁移到 `util` 云函数中,请通过以下方式调用:
```javascript
// 在云函数中调用 util 云函数
const result = await cloud.callFunction({
name: 'util',
data: {
action: 'isAdmin',
openid: 'user_openid'
}
})
const userMapping = await cloud.callFunction({
name: 'util',
data: {
action: 'getUserNameMapping',
openids: ['openid1', 'openid2']
}
})
```
## 版本历史
### 2.1.0
- **新增功能:** 添加数据验证方法
- 新增 `validateJobData()` 招聘信息验证
- 新增 `validateId()` ID参数验证
- 新增 `validateStatus()` 状态值验证
- 支持前后端统一的验证逻辑
- 更新文档和使用示例
### 2.0.0
- **重大更新:** 移除对 wx-server-sdk 的依赖
- 成为真正的前后端共用工具库
- 移除 isAdmin 和 getUserNameMapping 函数(已迁移到 util 云函数)
- 新增前端使用示例和文档
### 1.0.0
- 初始版本
- 包含时间格式化、用户管理、工具函数等基础功能
## 许可证
MIT License
## 贡献
欢迎提交 Issue 和 Pull Request