using System;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Text.Encodings.Web;
using System.Text.Json;
using System.Text.Json.Serialization;
using System.Text.RegularExpressions;
using System.Text.Unicode;
namespace SimApi.Helpers;
public static class SimApiUtil
{
///
/// 当前CST时间
///
public static DateTime CstNow => DateTime.UtcNow.AddHours(8);
///
/// JSON序列化常规选项
///
public static JsonSerializerOptions JsonOption => new()
{
Encoder = JavaScriptEncoder.Create(UnicodeRanges.All),
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull
};
///
/// 当前秒级时间戳
///
public static double TimestampNow => (DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalSeconds;
///
/// 检测手机号是否正确
///
/// 手机号码
///
public static bool CheckCell(string cell)
{
var regex = new Regex("^1[3456789]\\d{9}$");
return regex.IsMatch(cell);
}
///
/// MD5加密字符串
///
/// 源字符串
/// 加密结果"x2"结果为32位,"x3"结果为48位,"x4"结果为64位
///
public static string Md5(string source, string mode = "x2")
{
var sourceBytes = Encoding.UTF8.GetBytes(source);
var result = MD5.HashData(sourceBytes);
var stringBuilder = new StringBuilder(40);
foreach (var t in result)
{
stringBuilder.Append(t.ToString(mode));
}
return stringBuilder.ToString();
}
///
/// 将对象序列化成JSON (控制台输出中文不会被编码)
///
///
///
public static string Json(object obj)
{
return JsonSerializer.Serialize(obj, JsonOption);
}
///
/// 分页
///
///
/// 页码
/// 每页数量
///
///
public static IQueryable Paginate(this IQueryable query, int page, int count)
{
if (page < 1)
page = 1;
if (count <= 0)
count = 10;
return query.Skip((page - 1) * count).Take(count);
}
}