<%@ WebHandler Language="C#" Class="GwClientHandler" %>
|
using System;
|
using System.Linq;
|
using System.Web;
|
using Dao;
|
using Model;
|
using Common;
|
using System.Collections.Generic;
|
using System.Configuration;
|
using System.Text;
|
using System.Text.RegularExpressions;
|
using System.IO;
|
using Newtonsoft.Json;
|
|
|
|
|
public class GwClientHandler : PageHandler<Model.SysUser>
|
{
|
|
private UserDao _SysUserDao = new UserDao();
|
private List<SysUser> _SysUserList;
|
|
private int _userId = -1;
|
private int _userType = -1;
|
private string _account = "";
|
|
public override JsonPageResult ProcessRequestInternal(PageContext<Model.SysUser> context)
|
{
|
string action = context.GetString("action");
|
|
_userId = context.SessionObject.UserID;
|
_userType = context.SessionObject.UserType;
|
_account = context.SessionObject.Account;
|
|
switch (action)
|
{
|
case "clientSpList":
|
return this.GetGwspList(context);
|
|
case "loadGwClientPageList":
|
return LoadGwClientPageList(context);
|
case "save":
|
return Save(context);
|
|
case "delete":
|
return Delete(context);
|
|
case "update":
|
return Update(context);
|
|
case "get":
|
return Get(context);
|
|
case "getWhite":
|
return GetWhite(context);
|
|
case "getBlack":
|
return GetBlack(context);
|
|
case "updateWhite":
|
return UpdateWhite(context);
|
|
case "updateBlack":
|
return UpdateBlack(context);
|
//批量分配客户的个性产品
|
case "batchUpdateClientProduct":
|
return BatchUpdateClientProduct(context);
|
|
default:
|
throw new Exception("Invalid Action=" + action);
|
}
|
}
|
private Dao.GwClientDao _Dao = new Dao.GwClientDao();
|
private GwSpDao _GwSpDao = new GwSpDao();
|
|
|
/// <summary>
|
/// 加载代理商账号列表
|
/// </summary>
|
/// <param name="context"></param>
|
/// <returns></returns>
|
private JsonPageResult LoadGwClientPageList(PageContext<Model.SysUser> context)
|
{
|
string ClientID = context.GetString("ClientID");
|
string Company = context.GetString("Company");
|
string ClientName = context.GetString("ClientName");
|
string Telephone = context.GetString("Telephone");
|
string Salesman = context.GetString("Salesman");
|
string ProductId = context.GetString("ProductId");
|
int pageIndex = context.GetInt("pageIndex", 1);
|
|
string Agent = context.GetString("Agent");
|
int recordCount = 0;
|
int pageSize = context.GetInt("pageSize", 20);
|
string serverIp = ConfigurationManager.AppSettings["serverIp"];
|
string clientPort = ConfigurationManager.AppSettings["clientPort"];
|
|
string str = "";
|
using (GwClientDao dao = new GwClientDao())
|
{
|
string permissionsSQL = dao.GetClientPermissions(_userId, _userType, null);
|
var list = dao.LoadInfoList(out recordCount, pageIndex, pageSize, ClientID, ClientName, Telephone, Agent, Company, Salesman, ProductId, permissionsSQL);
|
|
if (list != null && list.Count > 0)
|
{
|
foreach (Model.GwClient item in list)
|
{
|
string Certification_StatusResult = "未认证";
|
if (item.Certification_Status == 1)
|
{
|
Certification_StatusResult = "已认证";
|
}
|
//edit:yangzh by 20220511
|
//str += @"<tr ><td>" + item.ClientID + "</td><td>" + item.Company + "</td><td>" + item.ClientName + "</td><td>" + item.Telephone + "</td><td>" + item.Top_up_Amount_Total + "元</td><td>" + item.Agent + "</td><td>" + Certification_StatusResult + "</td>";
|
//str += @"<tr ><td>" + item.ClientID + "</td><td>" + item.Company + "</td><td>" + item.ClientName + "</td><td>" + item.Telephone + "</td><td>" + item.Balance/1000 + "元</td><td>" + item.Top_up_Amount_Total/1000 + "元</td><td>" + item.Agent + "</td><td>" + Certification_StatusResult + "</td>";
|
str += @"<tr ><td rowspan='1' ><input type='checkbox' name='checkbox' value='" + item.ClientID + "'/></td><td>" + item.ClientID + "</td><td>" + item.Company + "</td><td>" + item.ClientName + "</td><td>" + item.Telephone + "</td><td>" + item.Balance/1000 + "元</td><td>" + item.Top_up_Amount_Total/1000 + "元</td><td>" + SysUserName(string.IsNullOrEmpty(item.Salesman)? 0: int.Parse(item.Salesman) ) + "</td><td>" + Certification_StatusResult + "</td>";
|
|
|
str += @"<td>";
|
string loginStr = "http://" + serverIp + ":" + clientPort + "/Attachedlogin.aspx?action=Attachedlogin&account=" + item.Account + "&password=" + item.Password;
|
str += string.Format("<a class=\"action-modal-login btn btn-success btn-xs \" href=\"{0}\" data-id=\"{1}\" target=\"_blank\">", (object)loginStr, (object)item.ClientID);
|
str += " 登录</a> ";
|
|
str += string.Format(@"<a class=""action-modal-edit btn btn-xs btn-primary"" href=""javascript:;"" data-id=""{0}"">", item.ClientID);
|
str += @"编辑";
|
str += @"</a> ";
|
|
str += string.Format(@"<a class=""action-modal-white btn btn-xs btn-primary"" href=""javascript:;"" data-id=""{0}"">", item.ClientID);
|
str += @"白名单";
|
str += @"</a> ";
|
|
str += string.Format(@"<a class=""action-modal-black btn btn-xs btn-primary"" href=""javascript:;"" data-id=""{0}"">", item.ClientID);
|
str += @"黑名单";
|
str += @"</a> ";
|
|
str += string.Format(@"<a class=""action-delete btn btn-xs btn-default"" href=""javascript:;"" data-id=""{0}"">", item.ClientID);
|
str += @"删除";
|
str += @"</a>";
|
str += @"</td>";
|
str += @"</tr>";
|
}
|
}
|
else
|
{
|
str += @"<tr><td colspan=""10"">暂无信息</td></tr>";
|
}
|
|
}
|
return new JsonPageResult(true, new { Table = str.ToString(), TotalCount = recordCount });
|
}
|
|
|
|
|
//add 2017-10-21
|
private JsonPageResult GetGwspList(PageContext<Model.SysUser> context)
|
{
|
string clientID = context.GetString("clientID");
|
Model.GwClient gwClient = new GwClientDao().Get(clientID);
|
StringBuilder stringBuilder = new StringBuilder();
|
using (GwSpDao gwSpDao = new GwSpDao())
|
{
|
List<Model.GwSp> list = gwSpDao.LoadSpList(clientID);
|
if (list.Count != 0)
|
{
|
stringBuilder.AppendFormat("<option value=\"{0}\" selected>{1}</option>", (object)0, (object)"请选择账号");
|
foreach (Model.GwSp gwSp in list)
|
{
|
if (Convert.ToString(980001) == gwSp.SpID)
|
stringBuilder.AppendFormat("<option value=\"{0}\" selected>{1}-{2}</option>", (object)gwSp.SpID, (object)gwSp.ClientID, (object)gwSp.SpID);
|
else
|
stringBuilder.AppendFormat("<option value=\"{0}\">{1}-{2}</option>", (object)gwSp.SpID, (object)gwSp.ClientID, (object)gwSp.SpID);
|
}
|
}
|
}
|
return new JsonPageResult(true, (object)new
|
{
|
Datasp = stringBuilder.ToString(),
|
get = gwClient
|
});
|
}
|
|
//end
|
|
|
private JsonPageResult UpdateWhite(PageContext<Model.SysUser> context)
|
{
|
string clientID = context.GetString("clientID");
|
string mobileData = context.GetString("mobileData");
|
|
_Dao.UpdateWhiteList(clientID, mobileData);
|
|
return new JsonPageResult(true, "客户白名单保存成功!");
|
}
|
|
private JsonPageResult UpdateBlack(PageContext<Model.SysUser> context)
|
{
|
string clientID = context.GetString("clientID");
|
string mobileData = context.GetString("mobileData");
|
|
_Dao.UpdateBlackList(clientID, mobileData);
|
|
return new JsonPageResult(true, "客户黑名单保存成功!");
|
}
|
|
private JsonPageResult GetWhite(PageContext<Model.SysUser> context)
|
{
|
string clientID = context.GetString("clientID");
|
|
return new JsonPageResult(true, _Dao.GetWhiteList(clientID));
|
}
|
|
private JsonPageResult GetBlack(PageContext<Model.SysUser> context)
|
{
|
string clientID = context.GetString("clientID");
|
|
return new JsonPageResult(true, _Dao.GetBlackList(clientID));
|
}
|
|
/// <summary>
|
/// 通过账号名获取代理商信息
|
/// </summary>
|
/// <param name="context"></param>
|
/// <returns></returns>
|
private JsonPageResult Get(PageContext<Model.SysUser> context)
|
{
|
string clientID = context.GetString("clientID");
|
|
return new JsonPageResult(true, _Dao.Get(clientID));
|
}
|
|
private JsonPageResult Delete(PageContext<Model.SysUser> context)
|
{
|
string clientID = context.GetString("clientID");
|
|
if (string.IsNullOrEmpty(clientID))//add
|
throw new ArgumentException("你的账号信息获取失败!");//add
|
|
if (this._GwSpDao.ClientCount(clientID) > 0)//add
|
throw new ArgumentException("你删除的客户下有账号正在使用,请先删除此客户下正在使用的账号!");//add
|
|
_Dao.Delete(clientID);
|
|
return new JsonPageResult(true, "删除客户资料成功!");
|
}
|
|
|
/// <summary>
|
/// 保存客户资料
|
/// </summary>
|
/// <param name="context"></param>
|
/// <returns></returns>
|
private JsonPageResult Update(PageContext<Model.SysUser> context)
|
{
|
int id = Int32.Parse(context.GetString("id"));
|
string clientID = context.GetString("clientID");
|
string company = context.GetString("company");
|
string password = context.GetString("password");
|
string clientName = context.GetString("clientName");
|
string address = context.GetString("address");
|
string telephone = context.GetString("telephone");
|
string remark = context.GetString("remark");
|
string agent = context.GetString("agent");
|
string salesman = context.GetString("salesman");
|
string customerManager = context.GetString("customerManager");
|
string supportStaff = context.GetString("supportStaff");
|
string financialStaff = context.GetString("financialStaff");
|
string chargeType = context.GetString("chargeType");
|
string smsStatusReport = context.GetString("smsStatusReport");
|
string mmsStatusReport = context.GetString("mmsStatusReport");
|
string data = context.GetString("permissionData");
|
if(data.Contains("1"))
|
{
|
data += ",sp.aspx,GwTaskSmssend,SpPrePattern.aspx";
|
}
|
if(data.Contains("2"))
|
{
|
data += ",molog.aspx,mtlog.aspx#stat,mtlog.aspx,statis.aspx";
|
}
|
string permissionData = Newtonsoft.Json.JsonConvert.SerializeObject(data.Split(','));
|
|
if (string.IsNullOrEmpty(clientID))
|
{
|
throw new ArgumentException("客户账号不能为空,且必须为公司名称!");
|
}
|
|
if (string.IsNullOrEmpty(password) || !System.Text.RegularExpressions.Regex.IsMatch(password, @"[a-zA-Z0-9]{4,10}"))
|
{
|
throw new ArgumentException("客户密码不能为空,且必须为4-10位英文或数字字符组合!");
|
}
|
|
if (string.IsNullOrEmpty(clientName) || string.IsNullOrEmpty(telephone))
|
{
|
throw new ArgumentException("联系人/联系电话,不能为空!");
|
}
|
|
if (string.IsNullOrEmpty(customerManager))
|
{
|
throw new ArgumentException("归属客户经理不能为空,请选择!");
|
}
|
|
if (string.IsNullOrEmpty(salesman))
|
{
|
throw new ArgumentException("归属业务员不能为空,请选择!");
|
}
|
|
if (string.IsNullOrEmpty(supportStaff))
|
{
|
throw new ArgumentException("归属客服人员不能为空,请选择!");
|
}
|
|
if (string.IsNullOrEmpty(financialStaff))
|
{
|
throw new ArgumentException("归属财务人员不能为空,请选择!");
|
}
|
|
if (string.IsNullOrEmpty(chargeType))
|
{
|
throw new ArgumentException("计费方式不能为空,请选择!");
|
}
|
|
if (string.IsNullOrEmpty(smsStatusReport))
|
{
|
throw new ArgumentException("短信是否支持显示状态报告不能为空,请选择!");
|
}
|
|
if (string.IsNullOrEmpty(mmsStatusReport))
|
{
|
throw new ArgumentException("彩信是否支持显示状态报告不能为空,请选择!");
|
}
|
|
string savePassword = "";
|
if (!string.IsNullOrEmpty(clientID))
|
{
|
GwClient gwClient = this._Dao.Get(clientID);
|
savePassword = (gwClient.Password == password ? gwClient.Password : DataHelper.MD5Hex(password) );
|
}
|
else
|
{
|
savePassword = DataHelper.MD5Hex(password);
|
}
|
|
|
var client = new Model.GwClient();
|
|
client.Id = id;
|
client.ClientID = clientID;
|
client.Company = company;
|
//client.Password = password;
|
client.Password = savePassword;
|
|
client.ClientName = clientName;
|
client.Address = address;
|
client.Remark = remark;
|
client.Telephone = telephone;
|
client.Agent = agent;
|
|
client.CustomerManager = customerManager;
|
client.Salesman = salesman;
|
client.SupportStaff = supportStaff;
|
client.FinancialStaff = financialStaff;
|
client.ChargeType = string.IsNullOrEmpty(chargeType) ? 0 : int.Parse(chargeType);
|
client.SmsStatusReport = string.IsNullOrEmpty(smsStatusReport) ? 0 : int.Parse(smsStatusReport);
|
client.MmsStatusReport = string.IsNullOrEmpty(mmsStatusReport) ? 0 : int.Parse(mmsStatusReport);
|
client.PermissionData = permissionData;
|
|
_Dao.Update(client);
|
|
return new JsonPageResult(true, "修改客户资料成功!");
|
}
|
|
///创建新客户
|
private JsonPageResult Save(PageContext<Model.SysUser> context)
|
{
|
string clientID = context.GetString("clientID");
|
string password = context.GetString("password");
|
string clientName = context.GetString("clientName");
|
string address = context.GetString("address");
|
string telephone = context.GetString("telephone");
|
string remark = context.GetString("remark");
|
string agent = context.GetString("agent");
|
string company = context.GetString("company");
|
string salesman = context.GetString("salesman");
|
string customerManager = context.GetString("customerManager");
|
string supportStaff = context.GetString("supportStaff");
|
string financialStaff = context.GetString("financialStaff");
|
string chargeType = context.GetString("chargeType");
|
string smsStatusReport = context.GetString("smsStatusReport");
|
string mmsStatusReport = context.GetString("mmsStatusReport");
|
string data = context.GetString("permissionData");
|
if(data.Contains("1"))
|
{
|
data += ",sp.aspx,GwTaskSmssend,SpPrePattern.aspx";
|
}
|
if(data.Contains("2"))
|
{
|
data += ",molog.aspx,mtlog.aspx#stat,mtlog.aspx,statis.aspx";
|
}
|
string permissionData = Newtonsoft.Json.JsonConvert.SerializeObject(data.Split(','));
|
|
if (string.IsNullOrEmpty(clientID))
|
{
|
throw new ArgumentException("客户账号不能为空,且必须为公司名称!");
|
}
|
|
if (string.IsNullOrEmpty(password) || !System.Text.RegularExpressions.Regex.IsMatch(password, @"[a-zA-Z0-9]{4,10}"))
|
{
|
throw new ArgumentException("客户密码不能为空,且必须为4-10位英文或数字字符组合!");
|
}
|
|
if (string.IsNullOrEmpty(clientName) || string.IsNullOrEmpty(telephone))
|
{
|
throw new ArgumentException("联系人/联系电话,不能为空!");
|
}
|
|
//if (string.IsNullOrEmpty(clientName))
|
//{
|
// throw new ArgumentException("客户名称不能为空!");
|
//}
|
|
if (_Dao.IsIDExists(clientID))
|
{
|
throw new ArgumentException("客户账号已经存在!");
|
}
|
|
if (string.IsNullOrEmpty(customerManager))
|
{
|
throw new ArgumentException("归属客户经理不能为空,请选择!");
|
}
|
|
if (string.IsNullOrEmpty(salesman))
|
{
|
throw new ArgumentException("归属业务员不能为空,请选择!");
|
}
|
|
if (string.IsNullOrEmpty(supportStaff))
|
{
|
throw new ArgumentException("归属客服人员不能为空,请选择!");
|
}
|
|
if (string.IsNullOrEmpty(financialStaff))
|
{
|
throw new ArgumentException("归属财务人员不能为空,请选择!");
|
}
|
|
if (string.IsNullOrEmpty(chargeType))
|
{
|
throw new ArgumentException("计费方式不能为空,请选择!");
|
}
|
|
if (string.IsNullOrEmpty(smsStatusReport))
|
{
|
throw new ArgumentException("短信是否支持显示状态报告不能为空,请选择!");
|
}
|
|
if (string.IsNullOrEmpty(mmsStatusReport))
|
{
|
throw new ArgumentException("彩信是否支持显示状态报告不能为空,请选择!");
|
}
|
|
HttpFileCollection _file = HttpContext.Current.Request.Files;
|
if (_file.Count > 0)
|
{
|
long size = _file[0].ContentLength; //文件大小
|
string type = _file[0].ContentType; //文件类型
|
string name = _file[0].FileName; //文件名
|
string _tp = Path.GetExtension(name);//文件扩展名
|
if (_tp.ToLower() == ".jpg" || _tp.ToLower() == ".jpeg" || _tp.ToLower() == ".gif" || _tp.ToLower() == ".png")
|
{
|
Stream stream = _file[0].InputStream;//获取文件流
|
string savaName = clientID + "-" + DateTime.Now.ToString("yyyyMMddHHssmm") + _tp; //保存文件。文件名
|
string filepath = "\\UploadFile\\" + savaName;
|
string path = AppDomain.CurrentDomain.BaseDirectory + filepath;//图片路径
|
_file[0].SaveAs(path);
|
|
try
|
{
|
//创建审核通过的记录
|
Model.GwClientCertification gwClientCertification = new Model.GwClientCertification();
|
gwClientCertification.Client_ID = clientID;
|
gwClientCertification.Certificate_Path = path;
|
gwClientCertification.Client_Classes = 0;//类型:0-企业、1-个人
|
gwClientCertification.Audit_Status = 1;//审核状态,0-待审核,1-通过,2-不通过
|
gwClientCertification.Certification_Time = DateTime.Now;//认证审核时间
|
gwClientCertification.Operator = context.OperatorID;//操作审核人
|
gwClientCertification.Upload_Time = DateTime.Now;//上传时间
|
gwClientCertification.Remark = "管理后台操作创建";
|
|
//保存审核记录
|
GwClientCertificationDao certificationDao = new GwClientCertificationDao();
|
certificationDao.Insert(gwClientCertification);
|
}
|
catch (Exception ex)
|
{
|
return new JsonPageResult(false, "上传图片处理异常:" + ex.Message);
|
}
|
}
|
else
|
{
|
throw new ArgumentException("文件格式错误,请确认是否为jpg|jpeg|gif|png。");
|
}
|
}
|
|
//密码加密
|
password = DataHelper.MD5Hex(password);
|
|
var client = new Model.GwClient();
|
client.ClientID = clientID;
|
client.Password = password;
|
|
client.ClientName = clientName;
|
client.Address = address;
|
client.Remark = remark;
|
client.Telephone = telephone;
|
client.Agent = agent;
|
client.PermissionData = permissionData;
|
client.ParentId = context.OperatorID;
|
client.Certification_Status = 1;
|
client.Company = company;
|
client.CustomerManager = customerManager;
|
client.Salesman = salesman;
|
client.SupportStaff = supportStaff;
|
client.FinancialStaff = financialStaff;
|
client.ChargeType = string.IsNullOrEmpty(chargeType) ? 0 : int.Parse(chargeType);
|
client.SmsStatusReport = string.IsNullOrEmpty(smsStatusReport) ? 0 : int.Parse(smsStatusReport);
|
client.MmsStatusReport = string.IsNullOrEmpty(mmsStatusReport) ? 0 : int.Parse(mmsStatusReport);
|
|
_Dao.Add(client);//插入数据库。创建账户
|
|
//保存产品记录
|
//获取启用的默认的产品
|
/**
|
//edit:在客户激活时添加记录
|
List<string> defaultProductList = GwProductDao.Instance.GetDefaultProduct();
|
if (defaultProductList.Count > 0)
|
{
|
foreach (string productId in defaultProductList)
|
{
|
GwClientProduct gcp = new GwClientProduct();
|
gcp.Id = Guid.NewGuid().ToString();
|
gcp.ClientId = clientID;
|
gcp.ProductId = productId;
|
GwClientProductDao.Instance.Add(gcp);
|
}
|
}
|
**/
|
|
return new JsonPageResult(true, "创建账户成功!");
|
}
|
|
//分配客户的个性产品
|
private JsonPageResult BatchUpdateClientProduct(PageContext<SysUser> context)
|
{
|
string productId = context.GetString("productId");
|
string idArray = context.GetString("idArray");
|
if (string.IsNullOrEmpty(productId))
|
{
|
|
throw new ArgumentException("个性产品不能为空,请选择!");
|
}
|
|
Model.GwProduct gwProduct = new GwProductDao().Get(productId);
|
if (gwProduct == null)
|
{
|
throw new ArgumentException("指定的个性产品不存在,请重新选择!");
|
}
|
string clientIds = gwProduct.ClientIds;
|
|
List<string> tmpList = new List<string>();
|
if(!string.IsNullOrEmpty(clientIds))
|
{ //字符串转数组,再数组合并
|
tmpList.AddRange( clientIds.Split(',') );
|
}
|
//数组合并
|
tmpList.AddRange( JsonConvert.DeserializeObject<string[]>(context.GetString("idArray")) );
|
|
//数组去重
|
string[] tmpArray = DelRepeatData(tmpList.ToArray() );
|
clientIds = string.Join(",", tmpArray) ;
|
|
if (!string.IsNullOrEmpty(clientIds))
|
{
|
new GwProductDao().UpdateClientIds(clientIds, productId);
|
}
|
|
|
return new JsonPageResult(true, (object)"批量分配客户个性产品成功!");
|
}
|
|
/// <summary>
|
/// 移除数组中重复数据
|
/// </summary>
|
/// <param name="array">需要除重的数组</param>
|
/// <returns>不重复数组</returns>
|
public static string[] DelRepeatData(string[] array)
|
{
|
return array.GroupBy(p => p).Select(p => p.Key).ToArray();
|
}
|
|
|
|
//获取管理端账户列表
|
private List<SysUser> SysUserList
|
{
|
get
|
{
|
if (this._SysUserList == null)
|
{
|
|
using (UserDao sysUserDao = new UserDao())
|
{
|
int recordCount = 0;
|
int int1 = 999999999;
|
int int2 = 1;
|
this._SysUserList = sysUserDao.LoadInfoList(out recordCount, int1, int2);
|
}
|
}
|
return this._SysUserList;
|
}
|
}
|
|
//管理端账户名称
|
private string SysUserName(int userId)
|
{
|
if (this.SysUserList == null)
|
return string.Empty;
|
SysUser sysUser = this._SysUserList.Find((Predicate<SysUser>)(bean => bean.UserID == userId));
|
if (sysUser != null)
|
return string.Format("{0}-{1}", (object)sysUser.UserID, (object)sysUser.UserName);
|
return string.Empty;
|
}
|
}
|
|
|
|
|
|
|