yzh
2022-05-26 3b18a48485f7207438d9d0eb3038d979e069431d
web/web/GwClient.ashx
@@ -1,5 +1,6 @@
<%@ WebHandler Language="C#" Class="GwClientHandler" %>
using System;
using System.Linq;
using System.Web;
using Dao;
using Model;
@@ -9,15 +10,29 @@
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 = "";
    private string initPwd = ConfigurationManager.AppSettings["initPwd"];
    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)
        {
@@ -49,6 +64,12 @@
            case "updateBlack":
                return UpdateBlack(context);
            //批量分配客户的个性产品
            case "batchUpdateClientProduct":
                return BatchUpdateClientProduct(context);
            //重置密码
            case "resetPwd":
                return ResetPwd(context);
            default:
                throw new Exception("Invalid Action=" + action);
@@ -66,8 +87,12 @@
    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 SupportStaff = context.GetString("SupportStaff");
        string ProductId = context.GetString("ProductId");
        int pageIndex = context.GetInt("pageIndex", 1);
        string Agent = context.GetString("Agent");
@@ -75,10 +100,12 @@
        int pageSize = context.GetInt("pageSize", 20);
        string serverIp = ConfigurationManager.AppSettings["serverIp"];
        string clientPort = ConfigurationManager.AppSettings["clientPort"];
        string str = "";
        using (GwClientDao dao = new GwClientDao())
        {
            var list = dao.LoadInfoList(out recordCount, pageIndex, pageSize, ClientID, ClientName, Telephone, Agent);
            string permissionsSQL = dao.GetClientPermissions(_userId, _userType, null);
            var list = dao.LoadInfoList(out recordCount, pageIndex, pageSize, ClientID, ClientName, Telephone, Agent, Company, Salesman, SupportStaff, ProductId, permissionsSQL);
            if (list != null && list.Count > 0)
            {
@@ -89,7 +116,11 @@
                    {
                        Certification_StatusResult = "已认证";
                    }
                    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>";
                    //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 += @"<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>";
                    str += @"<td>";
                    string loginStr = "http://" + serverIp + ":" + clientPort + "/Attachedlogin.aspx?action=Attachedlogin&account=" + item.Account + "&password=" + item.Password;
@@ -108,6 +139,10 @@
                    str += @"黑名单";
                    str += @"</a>&nbsp;";
                    str += string.Format(@"<a class=""action-modal-resetPwd btn btn-xs btn-primary"" href=""javascript:;"" data-id=""{0}"">", item.ClientID);
                    str += @"重置密码";
                    str += @"</a>&nbsp;";
                    str += string.Format(@"<a class=""action-delete btn btn-xs btn-default"" href=""javascript:;"" data-id=""{0}"">", item.ClientID);
                    str += @"删除";
                    str += @"</a>";
@@ -117,7 +152,7 @@
            }
            else
            {
                str += @"<tr><td colspan=""8"">暂无信息</td></tr>";
                str += @"<tr><td colspan=""9"">暂无信息</td></tr>";
            }
        }
@@ -192,6 +227,20 @@
        return new JsonPageResult(true, _Dao.GetBlackList(clientID));
    }
        //重置密码
    private JsonPageResult ResetPwd(PageContext<Model.SysUser> context)
    {
        string clientID = context.GetString("clientID");
        string password = string.IsNullOrEmpty(initPwd ) ? "123456" : initPwd;
        //密码MD5加密,
        password = DataHelper.MD5Hex(password);
        _Dao.UpdatePassword(clientID, password);
        return new JsonPageResult(true, "重置密码成功!");
    }
    /// <summary>
    /// 通过账号名获取代理商信息
    /// </summary>
@@ -236,6 +285,13 @@
        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"))
        {
@@ -262,18 +318,74 @@
            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 = 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);
@@ -292,6 +404,13 @@
        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"))
        {
@@ -313,6 +432,11 @@
            throw new ArgumentException("客户密码不能为空,且必须为4-10位英文或数字字符组合!");
        }
        if (string.IsNullOrEmpty(clientName) || string.IsNullOrEmpty(telephone))
        {
            throw new ArgumentException("联系人/联系电话,不能为空!");
        }
        //if (string.IsNullOrEmpty(clientName))
        //{
        //    throw new ArgumentException("客户名称不能为空!");
@@ -321,6 +445,41 @@
        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;
@@ -360,8 +519,14 @@
                    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;
@@ -376,10 +541,20 @@
        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)
        {
@@ -392,9 +567,92 @@
                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;
        }
    }
    //管理端用户ID转名称
    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}", (object)sysUser.UserName);
        return string.Empty;
    }
}