增加time的函数,crypto的函数
This commit is contained in:
307
docs/factory.md
307
docs/factory.md
@@ -27,6 +27,8 @@
|
||||
| **短信** | `SendSMS()` | `fac.SendSMS(phones, params)` |
|
||||
| **存储** | `UploadFile()`, `GetFileURL()` | `fac.UploadFile(ctx, key, file)` |
|
||||
| **日期时间** | `Now()`, `ParseDateTime()`, `FormatDateTime()` 等 | `fac.Now("Asia/Shanghai")` |
|
||||
| **时间工具** | `GetTimestamp()`, `IsToday()`, `GetBeginOfWeek()` 等 | `fac.GetTimestamp()` |
|
||||
| **加密工具** | `HashPassword()`, `MD5()`, `SHA256()`, `GenerateSMSCode()` 等 | `fac.HashPassword("password")` |
|
||||
| **金额计算** | `YuanToCents()`, `CentsToYuan()`, `FormatYuan()` | `fac.YuanToCents(100.5)` |
|
||||
| **版本信息** | `GetVersion()` | `fac.GetVersion()` |
|
||||
| **HTTP响应** | `Success()`, `Error()`, `SuccessPage()` | `fac.Success(w, data)` |
|
||||
@@ -203,7 +205,42 @@ unix := fac.ToUnix(now)
|
||||
t2 := fac.FromUnix(unix, "Asia/Shanghai")
|
||||
```
|
||||
|
||||
### 9. 金额计算(黑盒模式)
|
||||
### 9. 时间操作(黑盒模式)
|
||||
|
||||
```go
|
||||
// 时间戳
|
||||
timestamp := fac.GetTimestamp() // 当前时间戳(秒)
|
||||
millisTimestamp := fac.GetMillisTimestamp() // 当前时间戳(毫秒)
|
||||
utcTimestamp := fac.GetUTCTimestamp() // UTC时间戳
|
||||
|
||||
// 自定义格式格式化
|
||||
str := fac.FormatTimeWithLayout(now, "2006年01月02日 15:04:05")
|
||||
|
||||
// 自定义格式解析
|
||||
t, _ := fac.ParseTime("2024-01-01 12:00:00", "2006-01-02 15:04:05")
|
||||
|
||||
// 时间计算(补充)
|
||||
nextHour := fac.AddHours(now, 1)
|
||||
nextMinute := fac.AddMinutes(now, 30)
|
||||
|
||||
// 周相关
|
||||
beginOfWeek := fac.GetBeginOfWeek(now)
|
||||
endOfWeek := fac.GetEndOfWeek(now)
|
||||
|
||||
// 时间判断
|
||||
if fac.IsToday(t) {
|
||||
fmt.Println("是今天")
|
||||
}
|
||||
if fac.IsYesterday(t) {
|
||||
fmt.Println("是昨天")
|
||||
}
|
||||
|
||||
// 生成详细时间信息
|
||||
timeInfo := fac.GenerateTimeInfoWithTimezone(now, "Asia/Shanghai")
|
||||
fmt.Printf("UTC: %s, Local: %s, Unix: %d\n", timeInfo.UTC, timeInfo.Local, timeInfo.Unix)
|
||||
```
|
||||
|
||||
### 10. 金额计算(黑盒模式)
|
||||
|
||||
```go
|
||||
// 元转分
|
||||
@@ -216,14 +253,14 @@ yuan := fac.CentsToYuan(10050) // 100.5
|
||||
str := fac.FormatYuan(10050) // "100.50"
|
||||
```
|
||||
|
||||
### 10. 版本信息(黑盒模式)
|
||||
### 12. 版本信息(黑盒模式)
|
||||
|
||||
```go
|
||||
version := fac.GetVersion()
|
||||
fmt.Println("当前版本:", version)
|
||||
```
|
||||
|
||||
### 11. HTTP响应(黑盒模式)
|
||||
### 13. HTTP响应(黑盒模式)
|
||||
|
||||
```go
|
||||
import "net/http"
|
||||
@@ -240,7 +277,7 @@ fac.Error(w, 1001, "用户不存在")
|
||||
fac.SystemError(w, "系统错误")
|
||||
```
|
||||
|
||||
### 12. HTTP请求解析(黑盒模式)
|
||||
### 14. HTTP请求解析(黑盒模式)
|
||||
|
||||
```go
|
||||
import "net/http"
|
||||
@@ -257,7 +294,7 @@ keyword := fac.GetQuery(r, "keyword", "")
|
||||
timezone := fac.GetTimezone(r)
|
||||
```
|
||||
|
||||
### 13. Redis操作(获取客户端对象)
|
||||
### 15. Redis操作(获取客户端对象)
|
||||
|
||||
```go
|
||||
import (
|
||||
@@ -735,6 +772,266 @@ fac.Success(w, user, "获取成功") // 自定义消息
|
||||
|
||||
计算两个时间之间的秒数差。
|
||||
|
||||
### 加密工具方法(黑盒模式)
|
||||
|
||||
#### 密码加密
|
||||
|
||||
##### HashPassword(password string) (string, error)
|
||||
|
||||
使用bcrypt加密密码。
|
||||
|
||||
**参数:**
|
||||
- `password`: 原始密码
|
||||
|
||||
**返回:** 加密后的密码哈希值和错误信息
|
||||
|
||||
**示例:**
|
||||
```go
|
||||
hashedPassword, err := fac.HashPassword("myPassword")
|
||||
```
|
||||
|
||||
##### CheckPassword(password, hash string) bool
|
||||
|
||||
验证密码。
|
||||
|
||||
**参数:**
|
||||
- `password`: 原始密码
|
||||
- `hash`: 加密后的密码哈希值
|
||||
|
||||
**返回:** 密码是否正确
|
||||
|
||||
**示例:**
|
||||
```go
|
||||
isValid := fac.CheckPassword("myPassword", hashedPassword)
|
||||
```
|
||||
|
||||
#### 哈希计算
|
||||
|
||||
##### MD5(text string) string
|
||||
|
||||
计算MD5哈希值。
|
||||
|
||||
**参数:**
|
||||
- `text`: 要计算哈希的文本
|
||||
|
||||
**返回:** MD5哈希值(十六进制字符串)
|
||||
|
||||
**示例:**
|
||||
```go
|
||||
hash := fac.MD5("text")
|
||||
```
|
||||
|
||||
##### SHA256(text string) string
|
||||
|
||||
计算SHA256哈希值。
|
||||
|
||||
**参数:**
|
||||
- `text`: 要计算哈希的文本
|
||||
|
||||
**返回:** SHA256哈希值(十六进制字符串)
|
||||
|
||||
**示例:**
|
||||
```go
|
||||
hash := fac.SHA256("text")
|
||||
```
|
||||
|
||||
#### 随机字符串生成
|
||||
|
||||
##### GenerateRandomString(length int) string
|
||||
|
||||
生成指定长度的随机字符串。
|
||||
|
||||
**参数:**
|
||||
- `length`: 字符串长度
|
||||
|
||||
**返回:** 随机字符串(包含大小写字母和数字)
|
||||
|
||||
**示例:**
|
||||
```go
|
||||
randomStr := fac.GenerateRandomString(16)
|
||||
```
|
||||
|
||||
##### GenerateRandomNumber(length int) string
|
||||
|
||||
生成指定长度的随机数字字符串。
|
||||
|
||||
**参数:**
|
||||
- `length`: 字符串长度
|
||||
|
||||
**返回:** 随机数字字符串
|
||||
|
||||
**示例:**
|
||||
```go
|
||||
randomNum := fac.GenerateRandomNumber(6)
|
||||
```
|
||||
|
||||
#### 业务相关随机码生成
|
||||
|
||||
##### GenerateSMSCode() string
|
||||
|
||||
生成短信验证码。
|
||||
|
||||
**返回:** 6位数字验证码
|
||||
|
||||
**示例:**
|
||||
```go
|
||||
code := fac.GenerateSMSCode()
|
||||
```
|
||||
|
||||
##### GenerateOrderNo(prefix string) string
|
||||
|
||||
生成订单号。
|
||||
|
||||
**参数:**
|
||||
- `prefix`: 订单号前缀
|
||||
|
||||
**返回:** 订单号(格式:前缀+时间戳+6位随机数)
|
||||
|
||||
**示例:**
|
||||
```go
|
||||
orderNo := fac.GenerateOrderNo("ORD")
|
||||
```
|
||||
|
||||
##### GeneratePaymentNo() string
|
||||
|
||||
生成支付单号。
|
||||
|
||||
**返回:** 支付单号(格式:PAY+时间戳+6位随机数)
|
||||
|
||||
**示例:**
|
||||
```go
|
||||
paymentNo := fac.GeneratePaymentNo()
|
||||
```
|
||||
|
||||
##### GenerateRefundNo() string
|
||||
|
||||
生成退款单号。
|
||||
|
||||
**返回:** 退款单号(格式:RF+时间戳+6位随机数)
|
||||
|
||||
**示例:**
|
||||
```go
|
||||
refundNo := fac.GenerateRefundNo()
|
||||
```
|
||||
|
||||
##### GenerateTransferNo() string
|
||||
|
||||
生成调拨单号。
|
||||
|
||||
**返回:** 调拨单号(格式:TF+时间戳+6位随机数)
|
||||
|
||||
**示例:**
|
||||
```go
|
||||
transferNo := fac.GenerateTransferNo()
|
||||
```
|
||||
|
||||
### 时间工具方法(黑盒模式)
|
||||
|
||||
**说明**:Time 工具提供基础时间操作、时间戳、时间判断等功能,与 DateTime 工具的区别:
|
||||
- **DateTime**:专注于时区相关、格式化、解析、UTC转换
|
||||
- **Time**:专注于基础时间操作、时间戳、时间判断、时间信息生成
|
||||
|
||||
#### 时间戳方法
|
||||
|
||||
##### GetTimestamp() int64
|
||||
|
||||
获取当前时间戳(秒)。
|
||||
|
||||
##### GetMillisTimestamp() int64
|
||||
|
||||
获取当前时间戳(毫秒)。
|
||||
|
||||
##### GetUTCTimestamp() int64
|
||||
|
||||
获取UTC时间戳(秒)。
|
||||
|
||||
##### GetUTCTimestampFromTime(t time.Time) int64
|
||||
|
||||
从指定时间获取UTC时间戳(秒)。
|
||||
|
||||
#### 格式化方法(自定义格式)
|
||||
|
||||
##### FormatTimeWithLayout(t time.Time, layout string) string
|
||||
|
||||
格式化时间(自定义格式)。
|
||||
|
||||
**参数:**
|
||||
- `t`: 时间对象
|
||||
- `layout`: 时间格式,如 "2006-01-02 15:04:05",如果为空则使用默认格式
|
||||
|
||||
##### FormatTimeUTC(t time.Time) string
|
||||
|
||||
格式化时间为UTC字符串(ISO 8601格式)。
|
||||
|
||||
##### GetCurrentTime() string
|
||||
|
||||
获取当前时间字符串(使用默认格式 "2006-01-02 15:04:05")。
|
||||
|
||||
#### 解析方法(自定义格式)
|
||||
|
||||
##### ParseTime(timeStr, layout string) (time.Time, error)
|
||||
|
||||
解析时间字符串(自定义格式)。
|
||||
|
||||
**参数:**
|
||||
- `timeStr`: 时间字符串
|
||||
- `layout`: 时间格式,如 "2006-01-02 15:04:05",如果为空则使用默认格式
|
||||
|
||||
#### 时间计算(补充 DateTime 的 Add 系列)
|
||||
|
||||
##### AddHours(t time.Time, hours int) time.Time
|
||||
|
||||
增加小时数。
|
||||
|
||||
##### AddMinutes(t time.Time, minutes int) time.Time
|
||||
|
||||
增加分钟数。
|
||||
|
||||
#### 时间范围(周相关)
|
||||
|
||||
##### GetBeginOfWeek(t time.Time) time.Time
|
||||
|
||||
获取某周的开始时间(周一)。
|
||||
|
||||
##### GetEndOfWeek(t time.Time) time.Time
|
||||
|
||||
获取某周的结束时间(周日)。
|
||||
|
||||
#### 时间判断
|
||||
|
||||
##### IsToday(t time.Time) bool
|
||||
|
||||
判断是否为今天。
|
||||
|
||||
##### IsYesterday(t time.Time) bool
|
||||
|
||||
判断是否为昨天。
|
||||
|
||||
##### IsTomorrow(t time.Time) bool
|
||||
|
||||
判断是否为明天。
|
||||
|
||||
#### 时间信息生成
|
||||
|
||||
##### GenerateTimeInfoWithTimezone(t time.Time, timezone string) TimeInfo
|
||||
|
||||
生成详细时间信息(指定时区)。
|
||||
|
||||
**参数:**
|
||||
- `t`: 时间对象
|
||||
- `timezone`: 时区字符串,如 "Asia/Shanghai"
|
||||
|
||||
**返回:** TimeInfo 结构体,包含:
|
||||
- `UTC`: UTC时间(RFC3339格式)
|
||||
- `Local`: 本地时间(RFC3339格式)
|
||||
- `Unix`: Unix时间戳(秒)
|
||||
- `Timezone`: 时区名称
|
||||
- `Offset`: 时区偏移量(小时)
|
||||
- `RFC3339`: RFC3339格式时间
|
||||
- `DateTime`: 日期时间格式(2006-01-02 15:04:05)
|
||||
- `Date`: 日期格式(2006-01-02)
|
||||
- `Time`: 时间格式(15:04:05)
|
||||
|
||||
### 金额工具方法(黑盒模式)
|
||||
|
||||
#### GetMoneyCalculator() *tools.MoneyCalculator
|
||||
|
||||
Reference in New Issue
Block a user