TG.WXCRM.V4/Common/PhoneHelper.cs

170 lines
6.5 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;
}
}
public class PhoneLogModel
{
public string Method { get; set; }
public decimal userid { get; set; } = 0;
}
}