feat: 添加 moment-timezone 依赖,更新许可证过期时间逻辑为中国时区,优化日期处理

This commit is contained in:
chengchongzhen
2024-12-31 09:27:15 +08:00
parent 9bf7217fa2
commit e5539045b8
6 changed files with 69 additions and 19 deletions

View File

@@ -3,9 +3,9 @@ const express = require('express');
const mongoose = require('mongoose');
const cors = require('cors');
const crypto = require('crypto');
const moment = require('moment');
const License = require('./models/License');
const LicenseKey = require('./models/LicenseKey');
const { formatChinaTime, getNowChinaTime, getNowChinaTimeString } = require('./utils/date');
const app = express();
@@ -154,16 +154,16 @@ app.post('/activate', async (req, res) => {
});
}
// 创建新的许可证并标记许可证密钥为已使用
const expiryDate = moment().add(1, 'month').toDate();
// 更新过期时间计算,使用中国时区
const expiryDate = formatChinaTime(getNowChinaTime().add(1, 'month'), 'YYYY-MM-DD');
await License.create([{
licenseKey: license_key,
machineCode: machine_code,
activationDate: activation_date || new Date(),
activationDate: activation_date ? activation_date : getNowChinaTimeString(),
expiryDate: expiryDate,
isActive: true,
maxUsageCount: process.env.MAX_USAGE_COUNT || 10, // 如果未指定默认为100次
maxUsageCount: process.env.MAX_USAGE_COUNT || 10,
currentUsageCount: 0
}]);
@@ -175,7 +175,7 @@ app.post('/activate', async (req, res) => {
return res.json({
success: true,
message: '激活成功',
expiry_date: expiryDate.toISOString().split('T')[0]
expiry_date: expiryDate
});
} catch (error) {
console.error('激活错误:', error);
@@ -235,8 +235,8 @@ app.post('/verify', async (req, res) => {
});
}
// Check expiry
if (moment().isAfter(license.expiryDate)) {
// 使用中国时区检查过期时间
if (getNowChinaTime().isAfter(license.expiryDate)) {
return res.status(400).json({
success: false,
message: '许可证已过期'
@@ -258,7 +258,7 @@ app.post('/verify', async (req, res) => {
return res.json({
success: true,
message: '许可证有效',
expiry_date: license.expiryDate.toISOString().split('T')[0],
expiry_date: formatChinaTime(license.expiryDate, 'YYYY-MM-DD'),
usage_count: {
current: license.currentUsageCount,
max: license.maxUsageCount