using System.Text.RegularExpressions;
namespace WX.CRM.Common
{
public class PhoneHelper
{
///
/// 格式化以手机号码作为用户名的username
///
///
///
public static string FormatPhoneUserName(string username)
{
string newUsername = GetFormatPhoneUserName(username);//手机号码格式化
//newUsername = FormatUserName(newUsername);//用户名格式化
//return newUsername;
return newUsername;
}
///
/// 格式化以手机号码作为用户名的username(存在多个用户名)
///
///
///
public static string FormatPhoneMoreUserName(string username)
{
string newUsername = GetFormatPhoneUserName(username);//手机号码格式化
if (string.IsNullOrEmpty(newUsername))
return newUsername;
string userNames = string.Empty;
foreach (var item in newUsername.Split(','))
{
userNames += FormatUserName(item) + ",";//用户名格式化
}
userNames = userNames.Substring(0, userNames.Length - 1);
return userNames;
}
///
/// 格式化以手机号码作为用户名的username
///
/// 需要改动的用户名
///
///
public static string FormatPhoneUserNameContent(string username)
{
string newUsername = GetFormatPhoneUserName(username);//手机号码格式化
return newUsername;
}
///
/// 格式化以手机号码作为用户名的username
///
/// 需要改动的用户名
/// 需要改动的用户名
///
///
public static string FormatPhoneUserNameContent(string username, string subTypeCode)
{
string newUsername = GetFormatPhoneUserName(username);//手机号码格式化
if (subTypeCode != "SMS_ResetPwd")
return newUsername;
//创建对象
Regex regex = new Regex("账号(?[\\s\\S]*?)的", RegexOptions.Multiline);
//匹配
MatchCollection match = regex.Matches(username);
//取得第一个值
if (match.Count > 0)
{
string value = match[0].Groups["value"].ToString();
string newValue = FormatUserName(value);
newUsername = newUsername.Replace(string.Format("账号{0}的", value), string.Format("账号{0}的", newValue));
}
//创建对象
Regex regex2 = new Regex("帐号(?[\\s\\S]*?),", RegexOptions.Multiline);
//匹配
MatchCollection match2 = regex2.Matches(newUsername);
//取得第一个值
if (match2.Count > 0)
{
string value1 = match2[0].Groups["value"].ToString();
string newValue1 = FormatUserName(value1);
newUsername = newUsername.Replace(string.Format("帐号{0},", value1), string.Format("帐号{0},", newValue1));
}
return newUsername;
}
///
/// 用户名
///
///
///
public static string FormatUserName(string userName)
{
/*
用户名屏蔽规则:
1、手机号形式的按原处理规则中间几位屏蔽;
2、否则看用户名长度,小于等于5位的,第一位不屏蔽,后面的屏蔽,比如“test1”,处理后为“t****”;
3、5位以上的,用户名长度除2向下取整,再减1做为起始值,从起始值开始后面4位用*号;比如“test123”,处理后为“te****3”
*/
if (string.IsNullOrEmpty(userName))
return "";
if (userName == "未设置")
return userName;
string newUserName = userName;
//判断 是否已经在手机号屏蔽的时候屏蔽过一次
if (userName.IndexOf("*****") > -1)
{
return newUserName;
}
int nameLth = newUserName.Length;
if (nameLth <= 5)
{
newUserName = newUserName.Substring(0, 1) + GetAsterisk(nameLth - 1);
}
else
{
int startIndex = nameLth / 2;
startIndex = startIndex - 1;
newUserName = newUserName.Substring(0, startIndex) + "****" + newUserName.Substring(startIndex + 4, nameLth - startIndex - 4);
}
return newUserName;
}
///
/// 格式化以手机号码作为用户名的username
///
///
///
private static string GetFormatPhoneUserName(string username)
{
string newUsername = username;
if (string.IsNullOrWhiteSpace(newUsername))
return newUsername;
while (Utility.ContainMobile(newUsername))
{
string phone = Utility.GetMobile(newUsername);
if (string.IsNullOrWhiteSpace(phone))
break;
newUsername = newUsername.Replace(phone, (phone.Substring(0, 3) + "*****" + phone.Substring(8, 3)));
}
return newUsername;
}
///
/// 获取星号
///
/// 需要返回的星号数量
///
private static string GetAsterisk(int number)
{
string xingHao = string.Empty;
if (number == 0)
return xingHao;
for (int i = 0; i < number; i++)
{
xingHao += "*";
}
return xingHao;
}
}
public class PhoneLogModel
{
public string Method { get; set; }
public decimal userid { get; set; } = 0;
}
}