using System; using System.Collections.Generic; using System.Common; using System.IRepositories; using System.Linq; using System.Model; using System.Security.Claims; using System.Threading.Tasks; using System.Utility; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Configuration; namespace TVShoppingCallCenter_ZLJ.Controllers.CallCenter { /// /// 呼入控制器 /// [Authorize] [Produces("application/json")] [Route("api/[controller]")] public class CallInOptController : BaseController { private readonly IConfiguration config; private readonly ISys_MobileDataRepository busMobileDataRepository; public CallInOptController( IConfiguration _configuration, ISys_MobileDataRepository _busMobileDataRepository) { config = _configuration; busMobileDataRepository = _busMobileDataRepository; } /// /// 外呼判断本地外地以及加前缀返回 /// /// /// [HttpPost("GetCallOutprefix")] public async Task GetCallOutprefix(string phone) { string phone1 = StringHelper.ToDBC(StringHelper.RemoveNotNumber(StringHelper.NoHtml(phone))); string tophone = phone1; string fix = ""; string bfix = ""; string wfix = ""; string zipcode = config["appSettings:CallOutZipCode"]; bfix = config["appSettings:CallOutBPre"]; wfix = config["appSettings:CallOutWPre"]; int zip =await GetZipCodeByPhone(phone1, zipcode); if (zip == 1) { fix = bfix; } else if (zip == 2) { fix = wfix; } else { tophone = phone1.TrimStart('0'); if (zip == 3) {//本地固话去0加9 比如:988888517,937188888517 fix = bfix; } else if (zip == 4) {//外地固话前加9 比如:9037188888517 fix = wfix; } } var obj = new { phone = fix + tophone, fix = fix }; return Success("外呼号码加前缀", obj); } /// /// 根据号码和区号判断号码是否为归属地号码 /// 返回0为分机号或特殊号码 /// 返回1为本地号码 /// 返回2为外地号码 /// /// /// /// [NonAction] public async Task GetZipCodeByPhone(string phone, string zipcode) { int res = 0; if (phone.Trim().Length >= 7) { //7位及7位以上是固定电话或手机 //判断是否手机 if (phone.Trim().Length == 11 && phone[0] == '1') {//号码为11位,首位是1,为手机号 string p7 = phone.Substring(0, 7); T_Sys_MobileData mobileModel = await busMobileDataRepository.GetFirst(q=>q.F_MobileNum== p7); if (mobileModel != null) { if (mobileModel.F_ZipCode.Equals(zipcode)) { res = 1; } else { res = 2; } } } else { if (phone.Trim().Length == 11 && phone.Substring(0, 3).Equals(zipcode)) {//号码为11位 //截取前三位区号判断是否本地 bool resbd3 = phone.Substring(0, 3).Equals(zipcode); //截取前四位区号判断是否本地 bool resbd4 = phone.Substring(0, 4).Equals(zipcode); if (resbd3 || resbd4) { res = 3; } else { res = 4; } } else if (phone.Trim().Length < 11) {//号码小于11位,为本地 res = 1; } else if (phone.Trim().Length < 11) {//号码小于11位,为本地 res = 3; } else if (phone.Trim().Length > 11 && phone.Substring(0, 4).Equals(zipcode)) {//号码大于11位,截取前四位区号判断是否本地 res = 3; } else { res = 4; } } } return res; } } }