From 730cbe8b62133097369b9768ef30aa490551063d Mon Sep 17 00:00:00 2001
From: yzh <snbbt@21cn.com>
Date: 星期一, 23 五月 2022 01:04:44 +0800
Subject: [PATCH] 客户操作权限数据隔离

---
 web/web/GwClient.ashx |  371 +++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 346 insertions(+), 25 deletions(-)

diff --git a/web/web/GwClient.ashx b/web/web/GwClient.ashx
index 2f0b866..667d11a 100644
--- a/web/web/GwClient.ashx
+++ b/web/web/GwClient.ashx
@@ -1,27 +1,43 @@
 锘�<%@ 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":
@@ -47,6 +63,9 @@
 
             case "updateBlack":
                 return UpdateBlack(context);
+            //鎵归噺鍒嗛厤瀹㈡埛鐨勪釜鎬т骇鍝�
+            case "batchUpdateClientProduct":
+                return BatchUpdateClientProduct(context);
 
             default:
                 throw new Exception("Invalid Action=" + action);
@@ -55,7 +74,7 @@
     private Dao.GwClientDao _Dao = new Dao.GwClientDao();
     private GwSpDao _GwSpDao = new GwSpDao();
 
-    
+
     /// <summary>
     /// 鍔犺浇浠g悊鍟嗚处鍙峰垪琛�
     /// </summary>
@@ -64,8 +83,11 @@
     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");
@@ -73,16 +95,27 @@
         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, ProductId, permissionsSQL);
+
             if (list != null && list.Count > 0)
             {
                 foreach (Model.GwClient item in list)
                 {
-                    str += @"<tr ><td>" + item.ClientID + "</td><td>" + item.ClientName + "</td><td>" + item.Telephone + "</td><td>" +item.TotalAmount / 1000 + "鍏�/" + item.Balance / 1000 + "鍏�</td><td>" + item.Agent + "</td><td>" + item.Remark + "</td>";
+                    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;
@@ -110,15 +143,17 @@
             }
             else
             {
-                str += @"<tr><td colspan=""8"">鏆傛棤淇℃伅</td></tr>";
+                str += @"<tr><td colspan=""10"">鏆傛棤淇℃伅</td></tr>";
             }
-            
+
         }
         return new JsonPageResult(true, new { Table = str.ToString(), TotalCount = recordCount });
     }
 
-    //add 2017-10-21
 
+
+
+    //add 2017-10-21
     private JsonPageResult GetGwspList(PageContext<Model.SysUser> context)
     {
         string clientID = context.GetString("clientID");
@@ -145,10 +180,10 @@
             get = gwClient
         });
     }
-    
+
     //end
-    
-    
+
+
     private JsonPageResult UpdateWhite(PageContext<Model.SysUser> context)
     {
         string clientID = context.GetString("clientID");
@@ -210,7 +245,7 @@
         return new JsonPageResult(true, "鍒犻櫎瀹㈡埛璧勬枡鎴愬姛锛�");
     }
 
- 
+
     /// <summary>
     /// 淇濆瓨瀹㈡埛璧勬枡
     /// </summary>
@@ -220,13 +255,30 @@
     {
         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 permissionData = Newtonsoft.Json.JsonConvert.SerializeObject(context.GetString("permissionData").Split(','));
+        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))
         {
@@ -243,17 +295,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.Password = password;
+        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);
@@ -261,7 +370,7 @@
         return new JsonPageResult(true, "淇敼瀹㈡埛璧勬枡鎴愬姛锛�");
     }
 
-    //鍒涘缓鏂板鎴�
+    ///鍒涘缓鏂板鎴�
     private JsonPageResult Save(PageContext<Model.SysUser> context)
     {
         string clientID = context.GetString("clientID");
@@ -271,7 +380,24 @@
         string telephone = context.GetString("telephone");
         string remark = context.GetString("remark");
         string agent = context.GetString("agent");
-        string permissionData = Newtonsoft.Json.JsonConvert.SerializeObject(context.GetString("permissionData").Split(','));
+        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))
         {
@@ -283,20 +409,106 @@
             throw new ArgumentException("瀹㈡埛瀵嗙爜涓嶈兘涓虹┖锛屼笖蹇呴』涓�4-10浣嶈嫳鏂囨垨鏁板瓧瀛楃缁勫悎锛�");
         }
 
-        if (string.IsNullOrEmpty(clientName))
+        if (string.IsNullOrEmpty(clientName) || string.IsNullOrEmpty(telephone))
         {
-            throw new ArgumentException("瀹㈡埛鍚嶇О涓嶈兘涓虹┖锛�");
+            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("鏂囦欢鏍煎紡閿欒锛岃纭鏄惁涓簀pg|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;
@@ -304,12 +516,121 @@
         client.Agent = agent;
         client.PermissionData = permissionData;
         client.ParentId = context.OperatorID;
-        
-        _Dao.Add(client);
+        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);
 
-        return new JsonPageResult(true, "鍒涘缓瀹㈡埛鎴愬姛锛�");
+        _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;
+    }
+}
 
 
 

--
Gitblit v1.9.1