162 lines
6.3 KiB
C#
162 lines
6.3 KiB
C#
using System.Text.RegularExpressions;
|
||
|
||
namespace WX.CRM.Common
|
||
{
|
||
public class PhoneHelper
|
||
{
|
||
/// <summary>
|
||
/// 格式化以手机号码作为用户名的username
|
||
/// </summary>
|
||
/// <param name="username"></param>
|
||
/// <returns></returns>
|
||
public static string FormatPhoneUserName(string username)
|
||
{
|
||
string newUsername = GetFormatPhoneUserName(username);//手机号码格式化
|
||
//newUsername = FormatUserName(newUsername);//用户名格式化
|
||
//return newUsername;
|
||
return newUsername;
|
||
}
|
||
/// <summary>
|
||
/// 格式化以手机号码作为用户名的username(存在多个用户名)
|
||
/// </summary>
|
||
/// <param name="username"></param>
|
||
/// <returns></returns>
|
||
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;
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 格式化以手机号码作为用户名的username
|
||
/// </summary>
|
||
/// <param name="username">需要改动的用户名</param>
|
||
/// <param name="ntype"></param>
|
||
/// <returns></returns>
|
||
public static string FormatPhoneUserNameContent(string username)
|
||
{
|
||
string newUsername = GetFormatPhoneUserName(username);//手机号码格式化
|
||
return newUsername;
|
||
}
|
||
/// <summary>
|
||
/// 格式化以手机号码作为用户名的username
|
||
/// </summary>
|
||
/// <param name="username">需要改动的用户名</param>
|
||
/// <param name="username">需要改动的用户名</param>
|
||
/// <param name="ntype"></param>
|
||
/// <returns></returns>
|
||
public static string FormatPhoneUserNameContent(string username, string subTypeCode)
|
||
{
|
||
string newUsername = GetFormatPhoneUserName(username);//手机号码格式化
|
||
if (subTypeCode != "SMS_ResetPwd")
|
||
return newUsername;
|
||
//创建对象
|
||
Regex regex = new Regex("账号(?<value>[\\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("帐号(?<value>[\\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;
|
||
}
|
||
/// <summary>
|
||
/// 用户名
|
||
/// </summary>
|
||
/// <param name="userName"></param>
|
||
/// <returns></returns>
|
||
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;
|
||
}
|
||
/// <summary>
|
||
/// 格式化以手机号码作为用户名的username
|
||
/// </summary>
|
||
/// <param name="username"></param>
|
||
/// <returns></returns>
|
||
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;
|
||
}
|
||
/// <summary>
|
||
/// 获取星号
|
||
/// </summary>
|
||
/// <param name="number">需要返回的星号数量</param>
|
||
/// <returns></returns>
|
||
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;
|
||
}
|
||
}
|
||
}
|