From 6a3d1f8ab19830adde3a653f48f89fd7c88afbde Mon Sep 17 00:00:00 2001
From: yzh <snbbt@21cn.com>
Date: 星期五, 13 五月 2022 16:03:59 +0800
Subject: [PATCH] 代理商功能优化 产品功能优化 增加产品分类功能 用户功能优化

---
 web/web/Bin/Dao.dll                                        |    0 
 web/Model/obj/Debug/Model.pdb                              |    0 
 web/Dao/obj/Debug/Dao.dll                                  |    0 
 web/Model/obj/Debug/Model.dll                              |    0 
 web/Dao/obj/Debug/Dao.csproj.AssemblyReference.cache       |    0 
 web/Lib/Model.dll                                          |    0 
 web/web/GwProduct.aspx                                     |   35 ++-
 web/web/Bin/Dao.pdb                                        |    0 
 web/web/GwProduct.ashx                                     |   90 ++++++-
 web/Lib/Model.pdb                                          |    0 
 web/Model/Model/SysUser.cs                                 |    4 
 web/web/GwClient.aspx.cs                                   |   49 ++++
 web/Dao/obj/Debug/Dao.pdb                                  |    0 
 web/Lib/Dao.dll                                            |    0 
 web/web/Index.aspx                                         |    1 
 web/web/GwClient.ashx                                      |   67 +++++
 web/web/SysUser.aspx                                       |   52 ++++
 web/web/Bin/Model.pdb                                      |    0 
 web/.vs/Web/v16/.suo                                       |    0 
 web/Dao/UserDao.cs                                         |   34 ++
 web/UMCLib/obj/Debug/UMCLib.csproj.AssemblyReference.cache |    0 
 web/web/GwClient.aspx                                      |   40 +++
 web/web/GwProduct.aspx.cs                                  |    4 
 web/web/SysUser.ashx                                       |  284 ++++++++++++++-----------
 web/Model/obj/Debug/Model.csproj.AssemblyReference.cache   |    0 
 web/web/Bin/Model.dll                                      |    0 
 web/Lib/Dao.pdb                                            |    0 
 27 files changed, 484 insertions(+), 176 deletions(-)

diff --git a/web/.vs/Web/v16/.suo b/web/.vs/Web/v16/.suo
index 9291d3a..31623f2 100644
--- a/web/.vs/Web/v16/.suo
+++ b/web/.vs/Web/v16/.suo
Binary files differ
diff --git a/web/Dao/UserDao.cs b/web/Dao/UserDao.cs
index a049159..e973d65 100644
--- a/web/Dao/UserDao.cs
+++ b/web/Dao/UserDao.cs
@@ -130,6 +130,7 @@
             e.UserID = oracleReaderWrapper.GetInt("USER_ID", 0);
             e.Account = oracleReaderWrapper.GetString("ACCOUNT", "");
             e.Password = oracleReaderWrapper.GetString("PASSWORD", "");
+            e.UserName = oracleReaderWrapper.GetString("USER_NAME", "");
             e.ExpireTime = oracleReaderWrapper.GetDateTime("EXPIRE_TIME");
             e.CreateTime = oracleReaderWrapper.GetDateTime("CREATE_TIME");
             e.Remark = oracleReaderWrapper.GetString("REMARK", "");
@@ -141,6 +142,7 @@
             e.IsEncryption = oracleReaderWrapper.GetInt("ISENCRYPTION", 0);
             e.IsVerification = oracleReaderWrapper.GetInt("ISVERIFICATION", 0);
             e.ClientIp = oracleReaderWrapper.GetString("CLIENTIP", "");
+            e.Status = oracleReaderWrapper.GetInt("STATUS", 0);
             return true;
         }
 
@@ -197,14 +199,42 @@
             return Convert.ToInt32(OracleHelper.ExecuteScalar("select COUNT(*) from SYS_USER WHERE ACCOUNT=:ACCOUNT", OracleHelper.Connection, new OracleParameter(":ACCOUNT", (object)account))) > 0;
         }
 
+        public bool UserNameExists(string userName, int userId)//鏌ヨ鐢ㄦ埛鍚嶇О
+        {
+            //return Convert.ToInt32(OracleHelper.ExecuteScalar("select COUNT(*) from SYS_USER WHERE USER_NAME=:USER_NAME AND USER_ID!=:USER_ID", OracleHelper.Connection, new OracleParameter(":USER_NAME", (object)userName), new OracleParameter(":USER_ID", (object)userId))) > 0;
+
+            using (OracleDataReader reader = OracleHelper.ExecuteReader("select * from SYS_USER WHERE USER_NAME=:USER_NAME ", OracleHelper.Connection, new OracleParameter(":USER_NAME", (object)userName) ))
+            {
+                while (((DbDataReader)reader).Read())
+                {
+                    SysUser e = new SysUser();
+                    if (this.ReadInfo(reader, e))
+                    {
+                        if(e.UserID!= userId)
+                        {
+                            return true;
+                        }
+                    }
+                }
+            }
+
+            return false;
+        }
+
         public bool Update(SysUser o)//淇敼璐﹀彿
         {
-            return OracleHelper.ExecuteSql("update SYS_USER SET ACCOUNT=:ACCOUNT,PASSWORD=:PASSWORD,EXPIRE_TIME=:EXPIRE_TIME,REMARK=:REMARK,MOBILE=:MOBILE,EMAIL=:EMAIL,MOBILE_FLAG=:MOBILE_FLAG,EMAIL_FLAG=:EMAIL_FLAG,ISENCRYPTION=:ISENCRYPTION,ISVERIFICATION=:ISVERIFICATION,CLIENTIP=:CLIENTIP,CREATE_TIME=:CREATE_TIME WHERE USER_ID=:USER_ID", OracleHelper.Connection, new OracleParameter(":ACCOUNT", (object)o.Account), new OracleParameter(":PASSWORD", (object)o.Password), new OracleParameter(":EXPIRE_TIME", (object)o.ExpireTime), new OracleParameter(":REMARK", (object)o.Remark), new OracleParameter(":USER_ID", (object)o.UserID), new OracleParameter(":MOBILE", (object)o.Mobile), new OracleParameter(":EMAIL", (object)o.Email), new OracleParameter(":MOBILE_FLAG", (object)o.MobileFlag), new OracleParameter(":EMAIL_FLAG", (object)o.EmailFlag), new OracleParameter(":ISENCRYPTION", (object)o.IsEncryption), new OracleParameter(":ISVERIFICATION", (object)o.IsVerification), new OracleParameter(":CLIENTIP", (object)o.ClientIp), new OracleParameter(":CREATE_TIME", (object)o.CreateTime)) > 0;
+            return OracleHelper.ExecuteSql("update SYS_USER SET ACCOUNT=:ACCOUNT,PASSWORD=:PASSWORD,USER_NAME=:USER_NAME,EXPIRE_TIME=:EXPIRE_TIME,REMARK=:REMARK,MOBILE=:MOBILE,EMAIL=:EMAIL,MOBILE_FLAG=:MOBILE_FLAG,EMAIL_FLAG=:EMAIL_FLAG,ISENCRYPTION=:ISENCRYPTION,ISVERIFICATION=:ISVERIFICATION,CLIENTIP=:CLIENTIP,CREATE_TIME=:CREATE_TIME WHERE USER_ID=:USER_ID", OracleHelper.Connection, new OracleParameter(":ACCOUNT", (object)o.Account), new OracleParameter(":PASSWORD", (object)o.Password), new OracleParameter(":USER_NAME", (object)o.UserName), new OracleParameter(":EXPIRE_TIME", (object)o.ExpireTime), new OracleParameter(":REMARK", (object)o.Remark), new OracleParameter(":USER_ID", (object)o.UserID), new OracleParameter(":MOBILE", (object)o.Mobile), new OracleParameter(":EMAIL", (object)o.Email), new OracleParameter(":MOBILE_FLAG", (object)o.MobileFlag), new OracleParameter(":EMAIL_FLAG", (object)o.EmailFlag), new OracleParameter(":ISENCRYPTION", (object)o.IsEncryption), new OracleParameter(":ISVERIFICATION", (object)o.IsVerification), new OracleParameter(":CLIENTIP", (object)o.ClientIp), new OracleParameter(":CREATE_TIME", (object)o.CreateTime) ) > 0;
+        }
+
+        //鏇存柊鐘舵��
+        public bool UpdateStatus(SysUser o)//淇敼璐﹀彿
+        {
+            return OracleHelper.ExecuteSql("update SYS_USER SET STATUS=:STATUS WHERE USER_ID=:USER_ID", OracleHelper.Connection, new OracleParameter(":USER_ID", (object)o.UserID), new OracleParameter(":STATUS", (object)o.Status)) > 0;
         }
 
         public bool Add(SysUser e)//娣诲姞璐﹀彿
         {
-            return OracleHelper.ExecuteSql("INSERT INTO SYS_USER(USER_ID,ACCOUNT,PASSWORD,EXPIRE_TIME,REMARK,MOBILE,EMAIL,MOBILE_FLAG,EMAIL_FLAG,ISENCRYPTION,ISVERIFICATION,CLIENTIP,CREATE_TIME) VALUES(SYS_USER_ID_SEQ.NextVal,:ACCOUNT,:PASSWORD,:EXPIRE_TIME,:REMARK,:MOBILE,:EMAIL,:MOBILE_FLAG,:EMAIL_FLAG,:ISENCRYPTION,:ISVERIFICATION,:CLIENTIP,:CREATE_TIME)", OracleHelper.Connection, new OracleParameter(":ACCOUNT", (object)e.Account), new OracleParameter(":PASSWORD", (object)e.Password), new OracleParameter(":EXPIRE_TIME", (object)e.ExpireTime), new OracleParameter(":REMARK", (object)e.Remark), new OracleParameter(":MOBILE", (object)e.Mobile), new OracleParameter(":EMAIL", (object)e.Email), new OracleParameter(":MOBILE_FLAG", (object)e.MobileFlag), new OracleParameter(":EMAIL_FLAG", (object)e.EmailFlag), new OracleParameter(":ISENCRYPTION", (object)e.IsEncryption), new OracleParameter(":ISVERIFICATION", (object)e.IsVerification), new OracleParameter(":CLIENTIP", (object)e.ClientIp), new OracleParameter(":CREATE_TIME", (object)e.CreateTime)) > 0;
+            return OracleHelper.ExecuteSql("INSERT INTO SYS_USER(USER_ID,ACCOUNT,PASSWORD, USER_NAME, EXPIRE_TIME,REMARK,MOBILE,EMAIL,MOBILE_FLAG,EMAIL_FLAG,ISENCRYPTION,ISVERIFICATION,CLIENTIP,CREATE_TIME, STATUS) VALUES(SYS_USER_ID_SEQ.NextVal,:ACCOUNT,:PASSWORD, :USER_NAME,:EXPIRE_TIME,:REMARK,:MOBILE,:EMAIL,:MOBILE_FLAG,:EMAIL_FLAG,:ISENCRYPTION,:ISVERIFICATION,:CLIENTIP,:CREATE_TIME, :STATUS)", OracleHelper.Connection, new OracleParameter(":ACCOUNT", (object)e.Account), new OracleParameter(":PASSWORD", (object)e.Password), new OracleParameter(":USER_NAME", (object)e.UserName), new OracleParameter(":EXPIRE_TIME", (object)e.ExpireTime), new OracleParameter(":REMARK", (object)e.Remark), new OracleParameter(":MOBILE", (object)e.Mobile), new OracleParameter(":EMAIL", (object)e.Email), new OracleParameter(":MOBILE_FLAG", (object)e.MobileFlag), new OracleParameter(":EMAIL_FLAG", (object)e.EmailFlag), new OracleParameter(":ISENCRYPTION", (object)e.IsEncryption), new OracleParameter(":ISVERIFICATION", (object)e.IsVerification), new OracleParameter(":CLIENTIP", (object)e.ClientIp), new OracleParameter(":CREATE_TIME", (object)e.CreateTime), new OracleParameter(":STATUS", (object)e.Status)) > 0;
         }
 
         public bool UpdatePassword(int userID, string oldPassword, string newPassword)
diff --git a/web/Dao/obj/Debug/Dao.csproj.AssemblyReference.cache b/web/Dao/obj/Debug/Dao.csproj.AssemblyReference.cache
index bddb077..6473010 100644
--- a/web/Dao/obj/Debug/Dao.csproj.AssemblyReference.cache
+++ b/web/Dao/obj/Debug/Dao.csproj.AssemblyReference.cache
Binary files differ
diff --git a/web/Dao/obj/Debug/Dao.dll b/web/Dao/obj/Debug/Dao.dll
index 2f2838e..eebe2f1 100644
--- a/web/Dao/obj/Debug/Dao.dll
+++ b/web/Dao/obj/Debug/Dao.dll
Binary files differ
diff --git a/web/Dao/obj/Debug/Dao.pdb b/web/Dao/obj/Debug/Dao.pdb
index a30e763..ba096d7 100644
--- a/web/Dao/obj/Debug/Dao.pdb
+++ b/web/Dao/obj/Debug/Dao.pdb
Binary files differ
diff --git a/web/Lib/Dao.dll b/web/Lib/Dao.dll
index 2f2838e..eebe2f1 100644
--- a/web/Lib/Dao.dll
+++ b/web/Lib/Dao.dll
Binary files differ
diff --git a/web/Lib/Dao.pdb b/web/Lib/Dao.pdb
index a30e763..ba096d7 100644
--- a/web/Lib/Dao.pdb
+++ b/web/Lib/Dao.pdb
Binary files differ
diff --git a/web/Lib/Model.dll b/web/Lib/Model.dll
index 26230f0..0e02822 100644
--- a/web/Lib/Model.dll
+++ b/web/Lib/Model.dll
Binary files differ
diff --git a/web/Lib/Model.pdb b/web/Lib/Model.pdb
index 8b3f111..b86b743 100644
--- a/web/Lib/Model.pdb
+++ b/web/Lib/Model.pdb
Binary files differ
diff --git a/web/Model/Model/SysUser.cs b/web/Model/Model/SysUser.cs
index c343d7b..67b6a91 100644
--- a/web/Model/Model/SysUser.cs
+++ b/web/Model/Model/SysUser.cs
@@ -14,6 +14,8 @@
 
         public string Password { get; set; }
 
+        public string UserName { get; set; }
+
         public DateTime ExpireTime { get; set; }
 
         public DateTime CreateTime { get; set; }
@@ -36,6 +38,8 @@
 
         public string ClientIp { get; set; }
 
+        public int Status { get; set; }
+
         public Dictionary<string, SysUserMenu> MenuIDList { get; set; }
 
         public bool HasRight(string code)
diff --git a/web/Model/obj/Debug/Model.csproj.AssemblyReference.cache b/web/Model/obj/Debug/Model.csproj.AssemblyReference.cache
index 659dda6..f5e894a 100644
--- a/web/Model/obj/Debug/Model.csproj.AssemblyReference.cache
+++ b/web/Model/obj/Debug/Model.csproj.AssemblyReference.cache
Binary files differ
diff --git a/web/Model/obj/Debug/Model.dll b/web/Model/obj/Debug/Model.dll
index 26230f0..0e02822 100644
--- a/web/Model/obj/Debug/Model.dll
+++ b/web/Model/obj/Debug/Model.dll
Binary files differ
diff --git a/web/Model/obj/Debug/Model.pdb b/web/Model/obj/Debug/Model.pdb
index 8b3f111..b86b743 100644
--- a/web/Model/obj/Debug/Model.pdb
+++ b/web/Model/obj/Debug/Model.pdb
Binary files differ
diff --git a/web/UMCLib/obj/Debug/UMCLib.csproj.AssemblyReference.cache b/web/UMCLib/obj/Debug/UMCLib.csproj.AssemblyReference.cache
index bf88f7e..519d9ba 100644
--- a/web/UMCLib/obj/Debug/UMCLib.csproj.AssemblyReference.cache
+++ b/web/UMCLib/obj/Debug/UMCLib.csproj.AssemblyReference.cache
Binary files differ
diff --git a/web/web/Bin/Dao.dll b/web/web/Bin/Dao.dll
index 2f2838e..eebe2f1 100644
--- a/web/web/Bin/Dao.dll
+++ b/web/web/Bin/Dao.dll
Binary files differ
diff --git a/web/web/Bin/Dao.pdb b/web/web/Bin/Dao.pdb
index a30e763..ba096d7 100644
--- a/web/web/Bin/Dao.pdb
+++ b/web/web/Bin/Dao.pdb
Binary files differ
diff --git a/web/web/Bin/Model.dll b/web/web/Bin/Model.dll
index 26230f0..0e02822 100644
--- a/web/web/Bin/Model.dll
+++ b/web/web/Bin/Model.dll
Binary files differ
diff --git a/web/web/Bin/Model.pdb b/web/web/Bin/Model.pdb
index 8b3f111..b86b743 100644
--- a/web/web/Bin/Model.pdb
+++ b/web/web/Bin/Model.pdb
Binary files differ
diff --git a/web/web/GwClient.ashx b/web/web/GwClient.ashx
index 151e4be..ba332cc 100644
--- a/web/web/GwClient.ashx
+++ b/web/web/GwClient.ashx
@@ -15,6 +15,10 @@
 
 public class GwClientHandler : PageHandler<Model.SysUser>
 {
+
+    private UserDao _SysUserDao = new UserDao();
+    private List<SysUser> _SysUserList;
+
     public override JsonPageResult ProcessRequestInternal(PageContext<Model.SysUser> context)
     {
         string action = context.GetString("action");
@@ -91,7 +95,9 @@
                     }
                     //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>" + 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>" + 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.Agent)? 0: int.Parse(item.Agent) ) + "</td><td>" + Certification_StatusResult + "</td>";
+
 
                     str += @"<td>";
                     string loginStr = "http://" + serverIp + ":" + clientPort + "/Attachedlogin.aspx?action=Attachedlogin&account=" + item.Account + "&password=" + item.Password;
@@ -264,13 +270,26 @@
             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;
@@ -313,6 +332,11 @@
         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))
@@ -362,8 +386,14 @@
                     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;
@@ -400,6 +430,39 @@
 
         return new JsonPageResult(true, "鍒涘缓璐︽埛鎴愬姛锛�");
     }
+
+
+
+    //鑾峰彇绠$悊绔处鎴峰垪琛�
+    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;
+    }
 }
 
 
diff --git a/web/web/GwClient.aspx b/web/web/GwClient.aspx
index 7218cb1..20a576e 100644
--- a/web/web/GwClient.aspx
+++ b/web/web/GwClient.aspx
@@ -56,7 +56,21 @@
                     $("#clientDialog .modal-title").text("鍒涘缓瀹㈡埛璐︽埛");
                     $("#clientDialog input").attr("readonly", false);
                     $("#clientDialog input[name=action]").val("save");
+
+                    //$("#clientDialog #id").val("");
+                    $("#clientDialog #clientID").val("");
+                    $("#clientDialog #company").val("");
+                    $("#clientDialog #clientName").val("");
+                    $("#clientDialog #agent").val("");
+                    $("#clientDialog #address").val("");
+                    $("#clientDialog #telephone").val("");
+                    $("#clientDialog #remark").val("");
+                    $("#clientDialog input[name=permissionData]").iCheck("uncheck");
+
                     $("#clientDialog").modal("show");
+
+                    $("#password").val(randomString(8));
+
                 });
 
                 $(document).on("click", ".action-generate-password", function () {
@@ -238,7 +252,7 @@
                     <div class="modal-body">
                         <div class="form-group">
                             <label class="control-label  col-sm-2">
-                                鐧诲綍璐︽埛
+                                鐧诲綍璐︽埛 <span style="color:red">*</span>
                             </label>
                             <div class="col-sm-4">
                                 <input type="text" name="clientID" id="clientID" value="" class="form-control" />
@@ -259,7 +273,7 @@
 
                         <div class="form-group">
                             <label class="control-label  col-sm-2">
-                                鐧诲綍瀵嗙爜
+                                鐧诲綍瀵嗙爜 <span style="color:red">*</span>
                             </label>
                             <div class="col-sm-4">
                                 <input type="text" name="password" id="password" value="123456" class="form-control" />
@@ -270,14 +284,15 @@
                         </div>
                         <div class="form-group">
                             <label class="control-label col-sm-2">
-                                鑱旂郴浜�</label>
+                                鑱旂郴浜� <span style="color:red">*</span>
+                            </label>
                             <div class="col-sm-4">
                                 <input type="text" name="clientName" id="clientName" value="" class="form-control" />
                             </div>
                         </div>
                         <div class="form-group ">
                             <label class="control-label col-sm-2">
-                                鑱旂郴鐢佃瘽
+                                鑱旂郴鐢佃瘽 <span style="color:red">*</span>
                             </label>
                             <div class="col-sm-4">
                                 <input type="text" name="telephone" id="telephone" value="" class="form-control" />
@@ -291,6 +306,7 @@
                                 <input type="text" name="address" id="address" value="" class="form-control" />
                             </div>
                         </div>
+                        <!--
                         <div class="form-group">
                             <label class="control-label  col-sm-2">
                                 褰掑睘涓氬姟鍛�
@@ -299,22 +315,36 @@
                                 <input type="text" name="agent" id="agent" value="" class="form-control" />
                             </div>
                         </div>
+                        -->
+                        <div class="form-group">
+                            <label class="control-label  col-sm-2">
+                                褰掑睘涓氬姟鍛�
+                            </label>
+                            <div class="col-sm-4">
+                                    <select name="agent" id="agent" class="form-control">
+                                        <%=SysUserOptions(0)%>
+                                    </select>
+                            </div>
+                        </div>
+                        <!--
                         <div class="form-group">
                             <label class="control-label col-sm-2">钀ヤ笟鎵х収</label>
                             <div class="col-sm-4">
                                 <input type="file" name="txt_file" id="txt_file" class="file-loading" />
                             </div>
                         </div>
-
+                        -->
                         <div class="form-group">
                             <label class="control-label  col-sm-2">
                                 鏉冮檺绠$悊
                             </label>
                             <div class="col-sm-10">
                              <input type="checkbox" class="icheck-me" value="GwClientList.aspx" name="permissionData" />浠g悊鍟嗙鐞�(*鏄惁鏀寔鍒涘缓涓嬬骇浠g悊)
+                                <!--
                              <input type="checkbox" class="icheck-me" value="LgSmsDetailReport.aspx" name="permissionData" />鏌ョ湅鐘舵�佹姤鍛�
                              <input type="checkbox" class="icheck-me" value="1" name="permissionData" />鍙戦�佹潈闄�
                              <input type="checkbox" class="icheck-me" value="2" name="permissionData" />鏌ョ湅鏁版嵁鏉冮檺
+                                -->
                             </div>
                         </div>
                         <div class="form-group">
diff --git a/web/web/GwClient.aspx.cs b/web/web/GwClient.aspx.cs
index 0cb9c4f..4acc808 100644
--- a/web/web/GwClient.aspx.cs
+++ b/web/web/GwClient.aspx.cs
@@ -5,12 +5,59 @@
 using System.Web;
 using System.Web.Profile;
 using System.Web.SessionState;
+using Dao;
+using System.Collections.Generic;
+using System.Text;
 
 public partial class _GwClient : PageBase<SysUser>, IRequiresSessionState
-{ 
+{
+
+    protected List<SysUser> SysUserList;
+
     protected void Page_Load(object sender, EventArgs e)
     {
         //鏉冮檺鏍¢獙
         this.CheckRight("301", FailedOperation.ErrorMsgOnly);
+
+        //鑾峰彇鍚敤鐨勪骇鍝佸垎绫�
+        using (UserDao userDao = new UserDao())
+        {
+
+            int recordCount = 0;
+            int int1 = 999999999;
+            int int2 = 1;
+            this.SysUserList = userDao.LoadInfoList(out recordCount, int1, int2);
+
+        }
     }
+
+
+    //鑾峰彇浜у搧鍒嗙被淇℃伅
+    public string SysUserOptions(int userId)
+    {
+        StringBuilder stringBuilder = new StringBuilder();
+        if (this.SysUserList.Count == 0)
+            return "<option value=''>鏃�</option>";
+        stringBuilder.AppendFormat("<option value=\"{0}\" >{1}</option>", (object)0, (object)"鏃�");
+        foreach (SysUser bean in this.SysUserList)
+        {
+            //鍋滅敤鐨勭敤鎴蜂笉鍐嶆樉绀�
+            if (bean.Status == 0)
+            {
+                continue;
+            }
+            //杩囨护瓒呯骇绠$悊鍛�
+            if (bean.UserID == 1)
+            {
+                continue;
+            }
+
+            if (userId == bean.UserID)
+                stringBuilder.AppendFormat("<option value=\"{0}\" selected>{0}-{1}</option>", (object)bean.UserID, (object)bean.UserName);
+            else
+                stringBuilder.AppendFormat("<option value=\"{0}\">{0}-{1}</option>", (object)bean.UserID, (object)bean.UserName);
+        }
+        return stringBuilder.ToString();
+    }
+
 }
diff --git a/web/web/GwProduct.ashx b/web/web/GwProduct.ashx
index 8134fa4..261a614 100644
--- a/web/web/GwProduct.ashx
+++ b/web/web/GwProduct.ashx
@@ -35,7 +35,9 @@
             case "add":
                 return this.Add(context);       //娣诲姞
             case "list":
-                return this.List(context);      //鏌ヨ
+                return this.List(context);      //浜у搧鏌ヨ
+            case "productClassesList":
+                return this.ProductClassesList(context);      //浜у搧鏌ヨ
             case "get":
                 return this.Get(context);      //鑾峰彇璁板綍淇℃伅                    
             case "updateStatus":
@@ -68,6 +70,7 @@
             int num = 0;
             foreach (GwProduct bean in list)
             {
+
                 ++num;
                 //str1 = str1 + (object) "<tr><td>" +  "<img src=\"../static/images/productIcon/" + (object) bean.Icon + "\" >";
                 if (bean.Classes == 1 && !string.IsNullOrEmpty(bean.Icon))
@@ -79,15 +82,9 @@
                     str1 += "<tr><td>" + (object)bean.Icon  + "</td>";
                 }
 
+                str1 = str1 + "<td>" + ProductToName(bean.ParentId) + "</td>";
                 str1 += "<td>" + bean.Name + "</td>";
-                str1 = string.Concat(new object[4]
-                {
-                         str1,
-                          "<td>",
-                         bean.Instructions,
-                         "</td>"
-                });
-                str1 = str1 + "<td>" + (object)this.ClassesToName(bean.Classes) + "</td>";
+                //str1 = str1 + "<td>" + (object)this.ClassesToName(bean.Classes) + "</td>";
                 if (bean.RouterType == 1)
                 {
                     str1 += "<td rowspan=\"1\"><div class=\"btn  btn-primary btn-xs\">鐐硅矾鐢�</div>";
@@ -102,16 +99,16 @@
                 {
                     str1 += "<td rowspan=\"1\"></td>";
                 }
-                str1 = str1 + "<td>" + ProductToName(bean.ParentId) + "</td>";
                 str1 = str1 + "<td>" + IsDefaultToName(bean.IsDefault) + "</td>";
                 str1 = str1 + "<td>" + IsEnableToName(bean.IsEnable) + "</td>";
-                str1 = string.Concat(new object[4]
-                {
-                         str1,
-                         "<td>",
-                         bean.Sort,
-                         "</td>"
-                });
+                /**
+            str1 = string.Concat(new object[4]
+            {
+                     str1,
+                     "<td>",
+                     bean.Sort,
+                     "</td>"
+            });**/
                 str1 = string.Concat(new object[4]
                 {
                         str1,
@@ -122,6 +119,13 @@
 
                 str1 += string.Format("<td>{0}鍏�/鏉�</td>", (object)(Convert.ToDecimal(bean.Price) / new Decimal(1000)));
                 str1 = str1 + "<td>" + bean.CreateTime + "</td>";
+                str1 = string.Concat(new object[4]
+                {
+                         str1,
+                          "<td>",
+                         bean.Instructions,
+                         "</td>"
+                });
                 str1 += "<td  class=\"text-right\">";
                 str1 = bean.IsEnable != 0 ? str1 + string.Format("<a href=\"javascript:;\" data-id=\"{0}\" data-is_enable=\"0\" class=\"action-update-status btn btn-primary btn-xs\"><i class=\"fa fa-toggle-off\"></i>&nbsp;鍋滅敤</a> ", (object) bean.Id ) : str1 + string.Format("<a href=\"javascript:;\" data-id=\"{0}\" data-is_enable=\"1\" class=\"action-update-status btn  btn-default btn-xs\"><i class=\"fa fa-toggle-on\"/></i>&nbsp;鍚敤</a> ", (object) bean.Id );
                 str1 += string.Format("<a href=\"javascript:;\" data-id=\"{0}\" class=\"action-modal-edit btn  btn-success btn-xs\"><i class=\"fa fa-edit\"></i>&nbsp;缂栬緫</a> ", (object) bean.Id);
@@ -131,7 +135,57 @@
             }
         }
         else
-            str1 += "<tr><td colspan=\"13\" style=\"padding-left:5px; text-align: center;\">鏆傛棤淇℃伅</td></tr>";
+            str1 += "<tr><td colspan=\"11\" style=\"padding-left:5px; text-align: center;\">鏆傛棤淇℃伅</td></tr>";
+
+        return new JsonPageResult(true,  new
+        {
+            Table = str1.ToString(),
+            TotalCount = recordCount
+        });
+    }
+
+
+
+    //鍔犺浇浜у搧鍒嗙被淇℃伅
+    private JsonPageResult ProductClassesList(PageContext<SysUser> context)
+    {
+        //Console.WriteLine("List.............[" + context.GetInt("name") + "][" + context.GetInt("classes") + "]");
+        int classes = context.GetInt("classes");
+        string name = context.GetString("name");
+
+        int recordCount = 0;
+        int pageSize = context.GetInt("pageSize", 50);
+        int pageIndex = context.GetInt("pageIndex", 1);
+
+        List<GwProduct> list = _Dao.LoadInfoList(classes, name, pageSize, pageIndex, out recordCount);
+
+        string str1 = "";
+        if (list != null && list.Count > 0)
+        {
+
+            int num = 0;
+            foreach (GwProduct bean in list)
+            {
+
+                ++num;
+
+                str1 += "<tr>";
+                str1 += "<td>" + bean.Name + "</td>";
+                str1 +=  "<td>" + ProductToName(bean.ParentId) + "</td>";
+                str1 = str1 + "<td>" + IsEnableToName(bean.IsEnable) + "</td>";
+                str1 = str1 + "<td>" + bean.CreateTime + "</td>";
+                str1 = str1 + "<td>" + bean.Remark + "</td>";
+
+                str1 += "<td  class=\"text-right\">";
+                str1 = bean.IsEnable != 0 ? str1 + string.Format("<a href=\"javascript:;\" data-id=\"{0}\" data-is_enable=\"0\" class=\"action-update-status btn btn-primary btn-xs\"><i class=\"fa fa-toggle-off\"></i>&nbsp;鍋滅敤</a> ", (object) bean.Id ) : str1 + string.Format("<a href=\"javascript:;\" data-id=\"{0}\" data-is_enable=\"1\" class=\"action-update-status btn  btn-default btn-xs\"><i class=\"fa fa-toggle-on\"/></i>&nbsp;鍚敤</a> ", (object) bean.Id );
+                str1 += string.Format("<a href=\"javascript:;\" data-id=\"{0}\" class=\"action-modal-edit btn  btn-success btn-xs\"><i class=\"fa fa-edit\"></i>&nbsp;缂栬緫</a> ", (object) bean.Id);
+                str1 += string.Format("<a href=\"javascript:;\" data-id=\"{0}\" class=\"action-delete btn  btn-default btn-xs\"><i class=\"fa fa-trash\"></i>&nbsp;鍒犻櫎</a> ", (object) bean.Id);
+                str1 += "</td>";
+                str1 += "</tr>";
+            }
+        }
+        else
+            str1 += "<tr><td colspan=\"11\" style=\"padding-left:5px; text-align: center;\">鏆傛棤淇℃伅</td></tr>";
 
         return new JsonPageResult(true,  new
         {
diff --git a/web/web/GwProduct.aspx b/web/web/GwProduct.aspx
index de239c9..fa56267 100644
--- a/web/web/GwProduct.aspx
+++ b/web/web/GwProduct.aspx
@@ -12,7 +12,8 @@
 
         function loadPageList() {
             var name = $("#Name").val();
-            var classes = $("#Classes").val();
+            //var classes = $("#Classes").val();
+            var classes = 1;
             $.ajax({
                 url: "GwProduct.ashx",
                 type: "POST",
@@ -31,16 +32,16 @@
         }
 
         $(document).on("click", ".action-modal-add", function() {
-            $("#productDialog .modal-title").text("娣诲姞浜у搧鎴栦骇鍝佸垎绫�");
+            $("#productDialog .modal-title").text("娣诲姞浜у搧");
             $("#productDialog #action").val("add");
             $("#productDialog #id").val("").attr("readonly", false);
             $("#productDialog #name").val("");
             $("#productDialog #icon").val("");
             $("#productDialog #instructions").val("");
-            $("#productDialog #classes").val("");
+            //$("#productDialog #classes").val("");
             $("#productDialog #parentId").val("");
             //$("#productDialog #path").val("");
-            $("#productDialog #isDefault").val("");
+            //$("#productDialog #isDefault").val("");
             $("#productDialog #isDnable").val(1);
             $("#productDialog #sort").val(1);
             $("#productDialog #routerType").val(1);
@@ -101,7 +102,7 @@
 
         $(document).on("click", ".action-modal-edit", function() {
             var id = $(this).data("id");
-            $("#productDialog .modal-title").text("缂栬緫浜у搧鎴栦骇鍝佸垎绫�");
+            $("#productDialog .modal-title").text("缂栬緫浜у搧");
             $("#productDialog #id").val(id).attr("readonly", true);
 
             $.get("gwProduct.ashx", { "action": "get", id: id }, function(r) {
@@ -198,7 +199,7 @@
     });
     </script>
  </asp:Content> 
-<asp:Content runat="server" ID="Content2" ContentPlaceHolderID="title">浜у搧鎴栦骇鍝佸垎绫荤鐞�</asp:Content> 
+<asp:Content runat="server" ID="Content2" ContentPlaceHolderID="title">浜у搧绠$悊</asp:Content> 
 <asp:Content ID="Content3" ContentPlaceHolderID="content" runat="Server">
    
     <form name="queryForm" method="get" action="GwProduct.aspx" id="queryForm" class="form-inline"
@@ -210,6 +211,7 @@
                     <input type="text" name="Name" id="Name" class="form-control" />
                 </div>
             </div>
+            <!--
             <div class="form-group">
                 <div class="input-group">
                     <select name="Classes" id="Classes" class="form-control">
@@ -219,6 +221,7 @@
                     </select>
                 </div>
             </div>
+            -->
             <div class="form-group">
                 <div class="input-group">
                     <input type="button" value="鏌ヨ" class="btn btn-primary action-btn-GwProductQuery" />&nbsp;&nbsp;&nbsp;
@@ -231,27 +234,31 @@
                 <tr class="header">
                     <th>鍥炬爣
                     </th>
+                    <th>浜у搧绫诲埆
+                    </th>
                     <th>鍚嶇О
                     </th>
-                    <th>浣跨敤璇存槑
-                    </th>
+                    <!--
                     <th>绫诲埆
                     </th>
+                        -->
                     <th>閫氶亾
-                    </th>
-                    <th>鐖剁骇浜у搧鍒嗙被ID
                     </th>
                     <th>鏄惁榛樿
                     </th>
                     <th>鏄惁鍚敤
                     </th>
+                    <!--
                     <th>鎺掑簭
                     </th>
+                    -->
                     <th>璧犻�佹潯鏁�
                     </th>
                     <th>鍙傝�冨崟浠�
                     </th>
                     <th>鍒涘缓鏃堕棿
+                    </th>
+                    <th>浣跨敤璇存槑
                     </th>
                     <th class="text-right">鎿嶄綔
                     </th>
@@ -279,7 +286,7 @@
                         <h4 class="modal-title">缂栬緫浜у搧璧勬枡</h4>
                     </div>
                     <div class="modal-body">
-                        <div class="form-group">
+                        <div class="form-group" style="display: none">
                             <label class="col-sm-2 control-label">
                                 绫诲埆</label>
                             <div class="col-sm-4 ">
@@ -316,7 +323,8 @@
                         </div>
                         <div class="form-group">
                             <label class="col-sm-2 control-label">
-                                鍚嶇О</label>
+                                鍚嶇О <span style="color:red">*</span>
+                            </label>
                             <div class="col-sm-4 ">
                                 <input type="text" class="form-control" name="name" id="name" value="" />
                             </div>
@@ -336,7 +344,6 @@
                                 <input type="text" class="form-control" name="path" id="path" value="" />
                             </div>
                         </div>
-                        -->
                         <div class="form-group classes-span classes-span-1">
                             <label class="col-sm-2 control-label">
                                 鎺ㄥ箍鏂瑰紡</label>
@@ -348,6 +355,8 @@
                             </div>
                             <span class="help-block m-b-none">涓�у寲瀹㈡埛鏄寚鐗规畩鎺ㄩ�佺粰瀹㈡埛锛涚郴缁熼粯璁ゆ槸鎸囩郴缁熼粯璁ゅ彲鎺ㄩ�佹墍鏈夊鎴枫��</span>
                         </div>
+                        -->
+                        <input type="hidden" class="form-control" name="isDefault" id="isDefault" value="1" />
                         <div class="form-group">
                             <label class="col-sm-2 control-label">
                                 鏄惁鍚敤</label>
diff --git a/web/web/GwProduct.aspx.cs b/web/web/GwProduct.aspx.cs
index b0c391a..2fdda61 100644
--- a/web/web/GwProduct.aspx.cs
+++ b/web/web/GwProduct.aspx.cs
@@ -9,6 +9,10 @@
 using System.Web.Profile;
 using System.Web.SessionState;
 
+/**
+ * 浜у搧绠$悊
+ * 
+ */
 public partial class _GwProduct : PageBase<SysUser>, IRequiresSessionState
 {
     protected List<GwProduct> GwProductList;
diff --git a/web/web/Index.aspx b/web/web/Index.aspx
index 8f99ee6..b4a7faf 100644
--- a/web/web/Index.aspx
+++ b/web/web/Index.aspx
@@ -171,6 +171,7 @@
                         </a>
                         <ul class="nav nav-second-level">
                             <!--<li><a href="pages/gwProduct/GwProduct.aspx" class="J_menuItem">浜у搧鍒楄〃</a> </li>-->
+                            <li><a href="GwProductClasses.aspx" class="J_menuItem">浜у搧鍒嗙被</a> </li>
                             <li><a href="GwProduct.aspx" class="J_menuItem">浜у搧鍒楄〃</a> </li>
                         </ul>
                     </li>
diff --git a/web/web/SysUser.ashx b/web/web/SysUser.ashx
index ffb5d7b..ec17789 100644
--- a/web/web/SysUser.ashx
+++ b/web/web/SysUser.ashx
@@ -1,5 +1,5 @@
 锘�<%@ WebHandler Language="C#" Class="SysUserHandler" %>
- 
+
 using Common;
 using Dao;
 using Model;
@@ -10,146 +10,172 @@
 
 public class SysUserHandler : PageHandler<SysUser>
 {
-  private UserDao _Dao = new UserDao();
+    private UserDao _Dao = new UserDao();
 
-  public override JsonPageResult ProcessRequestInternal(PageContext<SysUser> context)
-  {
-    string @string = context.GetString("action");
-    switch (@string)
+    public override JsonPageResult ProcessRequestInternal(PageContext<SysUser> context)
     {
-      case "saveUser":
-        return this.SaveUser(context);
-      case "loadUserList":
-        return this.LoadUserList(context);
-      case "deleteUser":
-        return this.DeleteUser(context);
-      case "loadUserInfo":
-        return this.LoadUserInfo(context);
-      case "loadUserMenuList":
-        return this.LoadUserMenuList(context);
-      case "updatePermission":
-        return this.UpdatePermission(context);
-      default:
-        throw new Exception("Invalid Action=" + @string);
+        string @string = context.GetString("action");
+        switch (@string)
+        {
+            case "saveUser":
+                return this.SaveUser(context);
+            case "loadUserList":
+                return this.LoadUserList(context);
+            case "deleteUser":
+                return this.DeleteUser(context);
+            case "loadUserInfo":
+                return this.LoadUserInfo(context);
+            case "loadUserMenuList":
+                return this.LoadUserMenuList(context);
+            case "updatePermission":
+                return this.UpdatePermission(context);
+            case "updateStatus":
+                return this.UpdateStatus(context);
+                    
+            default:
+                throw new Exception("Invalid Action=" + @string);
+        }
     }
-  }
 
-  private JsonPageResult UpdatePermission(PageContext<SysUser> context)
-  {
-    context.CheckRight("1042", FailedOperation.PromptOnly);
-    string @string = context.GetString("menuIDArray");
-    int @int = context.GetInt("userid");
-    string[] menuIDArray = JsonConvert.DeserializeObject<string[]>(@string);
-    if (menuIDArray == null)
-      throw new ArgumentException("鑿滃崟鏁版嵁寮傚父锛�");
-    if (@int == 0)
-      throw new ArgumentException("USERID鍙傛暟寮傚父锛�");
-    this._Dao.UpdatePermission(@int, menuIDArray);
-    return new JsonPageResult(true, (object) "淇濆瓨鏉冮檺鎴愬姛锛�");
-  }
-
-  private JsonPageResult LoadUserList(PageContext<SysUser> context)
-  {
-    context.CheckRight("104", FailedOperation.PromptOnly);
-    int recordCount = 0;
-    int int1 = context.GetInt("pageSize", 20);
-    int int2 = context.GetInt("pageIndex", 1);
-    List<SysUser> list = this._Dao.LoadInfoList(out recordCount, int1, int2);
-    list.ForEach((Action<SysUser>) (u => u.Password = ""));
-    return new JsonPageResult(true, (object) new
+    private JsonPageResult UpdatePermission(PageContext<SysUser> context)
     {
-      Table = list,
-      TotalCount = recordCount
-    });
-  }
-
-  private JsonPageResult DeleteUser(PageContext<SysUser> context)
-  {
-    context.CheckRight("1044", FailedOperation.PromptOnly);
-    int @int = context.GetInt("userid");
-    if (@int == 1)
-      throw new ArgumentException("绯荤粺榛樿璐︽埛涓嶈兘鍒犻櫎锛�");
-    this._Dao.Delete(@int);
-    return new JsonPageResult(true, (object) "鍒犻櫎鐢ㄦ埛鎴愬姛锛�");
-  }
-
-  private JsonPageResult LoadUserInfo(PageContext<SysUser> context)
-  {
-    context.CheckRight("104", FailedOperation.PromptOnly);
-    return new JsonPageResult(true, (object) this._Dao.GetUserInfo(context.GetInt("userid")));
-  }
-
-  private JsonPageResult LoadUserMenuList(PageContext<SysUser> context)
-  {
-    context.CheckRight("104", FailedOperation.PromptOnly);
-    return new JsonPageResult(true, (object) this._Dao.LoadUserMenuList(context.GetInt("userid")).Keys);
-  }
-
-  private JsonPageResult SaveUser(PageContext<SysUser> context)
-  {
-    int int1 = context.GetInt("userid");
-    string string1 = context.GetString("account");
-    string string2 = context.GetString("password");
-    string string3 = context.GetString("email");
-    string string4 = context.GetString("mobile");
-    int int2 = context.GetInt("emailFlag");
-    int int3 = context.GetInt("mobileFlag");
-    int num = 0;
-    if (string.IsNullOrEmpty(string1) || !Regex.IsMatch(string1, "\\w{3,}"))
-      throw new ArgumentException("璐︽埛鑷冲皯3浣嶅彲瑙佸瓧绗︼紝璇烽噸鏂拌緭鍏ワ紒");
-    if (string.IsNullOrEmpty(string2) || string2.Length < 6)
-      throw new ArgumentException("璐︽埛瀵嗙爜鑷冲皯6浣嶏紝璇烽噸鏂拌緭鍏ワ紒");
-    if (context.GetBoolean("isVerification"))
-      num = 1;
-    string string5 = context.GetString("clientIp");
-    if (num == 1)
-    {
-      if (string.IsNullOrEmpty(string5))
-        throw new ArgumentException("IP鍦板潃涓嶈兘涓虹┖锛岃杈撳叆锛�");
-      if (string.IsNullOrEmpty(string4.ToString()) || !Regex.IsMatch(string4, "1\\d{10}"))
-        throw new ArgumentException("鎵嬫満鍙风爜鏃犳晥锛岃閲嶆柊杈撳叆锛�");
+        context.CheckRight("1042", FailedOperation.PromptOnly);
+        string @string = context.GetString("menuIDArray");
+        int @int = context.GetInt("userid");
+        string[] menuIDArray = JsonConvert.DeserializeObject<string[]>(@string);
+        if (menuIDArray == null)
+            throw new ArgumentException("鑿滃崟鏁版嵁寮傚父锛�");
+        if (@int == 0)
+            throw new ArgumentException("USERID鍙傛暟寮傚父锛�");
+        this._Dao.UpdatePermission(@int, menuIDArray);
+        return new JsonPageResult(true, (object) "淇濆瓨鏉冮檺鎴愬姛锛�");
     }
-    if (!string.IsNullOrEmpty(string4.ToString()) && !Regex.IsMatch(string4, "1\\d{10}"))
-      throw new ArgumentException("鎵嬫満鍙风爜鏃犳晥锛岃閲嶆柊杈撳叆锛�");
-    if (!string.IsNullOrEmpty(string3) && !Regex.IsMatch(string3, "^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+"))
-      throw new ArgumentException("閭鍦板潃鏃犳晥,璇烽噸鏂拌緭鍏ワ紒");
-    if ((int3 == 1 || int3 == 2 || (int3 == 3 || int3 == 4) || int3 == 5) && !Regex.IsMatch(string4, "1\\d{10}"))
-      throw new ArgumentException("鎵嬫満鍙风爜鏃犳晥锛岃閲嶆柊杈撳叆锛�");
-    if ((int2 == 1 || int2 == 2 || (int2 == 3 || int2 == 4) || int2 == 5) && !Regex.IsMatch(string3, "^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+"))
-      throw new ArgumentException("閭鍦板潃鏃犳晥锛岃閲嶆柊杈撳叆锛�");
-    SysUser sysUser = new SysUser();
-    sysUser.UserID = int1;
-    sysUser.Account = string1;
-    sysUser.CreateTime = DateTime.Now;
-    if (int1 > 0)
+
+    private JsonPageResult LoadUserList(PageContext<SysUser> context)
     {
-      SysUser userInfo = this._Dao.GetUserInfo(int1);
-      sysUser.Password = userInfo.Password == string2 ? userInfo.Password : DataHelper.MD5Hex(string2);
-      sysUser.IsEncryption = userInfo.Password == string2 ? userInfo.IsEncryption : 1;
+        context.CheckRight("104", FailedOperation.PromptOnly);
+        int recordCount = 0;
+        int int1 = context.GetInt("pageSize", 20);
+        int int2 = context.GetInt("pageIndex", 1);
+        List<SysUser> list = this._Dao.LoadInfoList(out recordCount, int1, int2);
+        list.ForEach((Action<SysUser>) (u => u.Password = ""));
+        return new JsonPageResult(true, (object) new
+        {
+            Table = list,
+            TotalCount = recordCount
+        });
     }
-    else
+
+    private JsonPageResult DeleteUser(PageContext<SysUser> context)
     {
-      sysUser.Password = DataHelper.MD5Hex(string2);
-      sysUser.IsEncryption = 1;
+        context.CheckRight("1044", FailedOperation.PromptOnly);
+        int @int = context.GetInt("userid");
+        if (@int == 1)
+            throw new ArgumentException("绯荤粺榛樿璐︽埛涓嶈兘鍒犻櫎锛�");
+        this._Dao.Delete(@int);
+        return new JsonPageResult(true, (object) "鍒犻櫎鐢ㄦ埛鎴愬姛锛�");
     }
-    sysUser.Email = string3;
-    sysUser.Mobile = string4;
-    sysUser.MobileFlag = int3;
-    sysUser.EmailFlag = int2;
-    sysUser.IsVerification = num;
-    sysUser.ClientIp = string5;
-    if (int1 > 0)
+
+    private JsonPageResult LoadUserInfo(PageContext<SysUser> context)
     {
-      context.CheckRight("1042", FailedOperation.PromptOnly);
-      this._Dao.Update(sysUser);
+        context.CheckRight("104", FailedOperation.PromptOnly);
+        return new JsonPageResult(true, (object) this._Dao.GetUserInfo(context.GetInt("userid")));
     }
-    else
+
+    private JsonPageResult LoadUserMenuList(PageContext<SysUser> context)
     {
-      context.CheckRight("1041", FailedOperation.PromptOnly);
-      if (this._Dao.Exists(string1))
-        throw new ArgumentException("璐︽埛宸茬粡瀛樺湪锛岃閲嶆柊杈撳叆锛�");
-      this._Dao.Add(sysUser);
+        context.CheckRight("104", FailedOperation.PromptOnly);
+        return new JsonPageResult(true, (object) this._Dao.LoadUserMenuList(context.GetInt("userid")).Keys);
     }
-    return new JsonPageResult(true, (object) "璐︽埛淇濆瓨鎴愬姛锛�");
-  }
+
+    private JsonPageResult SaveUser(PageContext<SysUser> context)
+    {
+        int int1 = context.GetInt("userid");
+        string string1 = context.GetString("account");
+        string string2 = context.GetString("password");
+        string userName = context.GetString("userName");
+        string string3 = context.GetString("email");
+        string string4 = context.GetString("mobile");
+        int int2 = context.GetInt("emailFlag");
+        int int3 = context.GetInt("mobileFlag");
+        int num = 0;
+        if (string.IsNullOrEmpty(string1) || !Regex.IsMatch(string1, "\\w{3,}"))
+            throw new ArgumentException("璐︽埛鑷冲皯3浣嶅彲瑙佸瓧绗︼紝璇烽噸鏂拌緭鍏ワ紒");
+        if (string.IsNullOrEmpty(string2) || string2.Length < 6)
+            throw new ArgumentException("璐︽埛瀵嗙爜鑷冲皯6浣嶏紝璇烽噸鏂拌緭鍏ワ紒");
+        if (string.IsNullOrEmpty(userName))
+            throw new ArgumentException("璐﹀彿鍚嶇О涓嶈兘涓虹┖锛岃杈撳叆锛�");
+        if (context.GetBoolean("isVerification"))
+            num = 1;
+        string string5 = context.GetString("clientIp");
+        if (num == 1)
+        {
+            if (string.IsNullOrEmpty(string5))
+                throw new ArgumentException("IP鍦板潃涓嶈兘涓虹┖锛岃杈撳叆锛�");
+            if (string.IsNullOrEmpty(string4.ToString()) || !Regex.IsMatch(string4, "1\\d{10}"))
+                throw new ArgumentException("鎵嬫満鍙风爜鏃犳晥锛岃閲嶆柊杈撳叆锛�");
+        }
+        if (!string.IsNullOrEmpty(string4.ToString()) && !Regex.IsMatch(string4, "1\\d{10}"))
+            throw new ArgumentException("鎵嬫満鍙风爜鏃犳晥锛岃閲嶆柊杈撳叆锛�");
+        if (!string.IsNullOrEmpty(string3) && !Regex.IsMatch(string3, "^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+"))
+            throw new ArgumentException("閭鍦板潃鏃犳晥,璇烽噸鏂拌緭鍏ワ紒");
+        if ((int3 == 1 || int3 == 2 || (int3 == 3 || int3 == 4) || int3 == 5) && !Regex.IsMatch(string4, "1\\d{10}"))
+            throw new ArgumentException("鎵嬫満鍙风爜鏃犳晥锛岃閲嶆柊杈撳叆锛�");
+        if ((int2 == 1 || int2 == 2 || (int2 == 3 || int2 == 4) || int2 == 5) && !Regex.IsMatch(string3, "^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+"))
+            throw new ArgumentException("閭鍦板潃鏃犳晥锛岃閲嶆柊杈撳叆锛�");
+        SysUser sysUser = new SysUser();
+        sysUser.UserID = int1;
+        sysUser.Account = string1;
+
+        if (this._Dao.UserNameExists(userName, int1))
+            throw new ArgumentException("璐︽埛鍚嶇О宸茬粡瀛樺湪锛岃閲嶆柊杈撳叆锛�");
+
+        sysUser.UserName = userName;
+        sysUser.CreateTime = DateTime.Now;
+        if (int1 > 0)
+        {
+            SysUser userInfo = this._Dao.GetUserInfo(int1);
+            sysUser.Password = userInfo.Password == string2 ? userInfo.Password : DataHelper.MD5Hex(string2);
+            sysUser.IsEncryption = userInfo.Password == string2 ? userInfo.IsEncryption : 1;
+        }
+        else
+        {
+            sysUser.Password = DataHelper.MD5Hex(string2);
+            sysUser.IsEncryption = 1;
+        }
+        sysUser.Email = string3;
+        sysUser.Mobile = string4;
+        sysUser.MobileFlag = int3;
+        sysUser.EmailFlag = int2;
+        sysUser.IsVerification = num;
+        sysUser.ClientIp = string5;
+        if (int1 > 0)
+        {
+            context.CheckRight("1042", FailedOperation.PromptOnly);
+            this._Dao.Update(sysUser);
+        }
+        else
+        {
+            context.CheckRight("1041", FailedOperation.PromptOnly);
+            if (this._Dao.Exists(string1))
+                throw new ArgumentException("璐︽埛宸茬粡瀛樺湪锛岃閲嶆柊杈撳叆锛�");
+            this._Dao.Add(sysUser);
+        }
+        return new JsonPageResult(true, (object) "璐︽埛淇濆瓨鎴愬姛锛�");
+    }
+
+
+    //鏇存柊淇℃伅鍚敤鎴栧仠鐢�
+    private JsonPageResult UpdateStatus(PageContext<SysUser> context)
+    {
+        int userId = context.GetInt("userId");
+        int status = context.GetInt("status");
+
+        SysUser sysUser = new SysUser();
+            sysUser.UserID = userId;
+            sysUser.Status = status;
+        this._Dao.UpdateStatus(sysUser);
+        return new JsonPageResult(true, "鏇存柊淇℃伅鐘舵�佹垚鍔燂紒");
+
+    }
 }
diff --git a/web/web/SysUser.aspx b/web/web/SysUser.aspx
index 45918c6..925802e 100644
--- a/web/web/SysUser.aspx
+++ b/web/web/SysUser.aspx
@@ -19,6 +19,7 @@
                         $.each(result.Message.Table, function(i) {
                             html.push("<tr>");
                             html.push("<td>" + this.Account + "</td>");
+                            html.push("<td>" + this.UserName + "</td>");
                             html.push("<td>" + this.Mobile + "</td>");
                             html.push("<td>" + formatFlagIcon(this.MobileFlag) + "</td>");
 
@@ -27,7 +28,15 @@
                             html.push("<td>" + this.ClientIp + "</td>");
                             html.push("<td>" + (this.IsVerification == 1 ? "<span class='label label-primary'>寮�鍚�</span>" : "<span class='label label-default'>鍏抽棴</span>") + "</td>");
                             html.push("<td>" + this.CreateTime + "</td>");
-                            html.push("<td >");
+                            html.push("<td>" + (this.Status == 1 ? "<span class='label label-primary'>鍚敤</span>" : "<span class='label label-default'>鍋滅敤</span>") + "</td>");
+                            //html.push("<td>" + (this.Status == 1 ? "<a href='javascript:;' class='btn btn-primary btn-xs action-update-status' data-id=" + this.UserID + " data-status=0 ><i class='fa fa-toggle-off'></i>&nbsp;鍚敤</a>" : "<a href='javascript:;' class='btn btn-default btn-xs action-update-status' data-id=" + this.UserID + " data-status=1 ><i class='fa fa-toggle-on'></i>鍋滅敤</a>") + "</td>");
+                            html.push("<td class='text-right' >");
+                            if (this.Status == 0) {
+                                html.push("<a href='javascript:;' class='btn btn-primary btn-xs action-update-status' data-id=" + this.UserID + " data-status=1 ><i class='fa fa-toggle-off'></i>鍚敤</a>&nbsp;&nbsp;" );
+                            }
+                            else {
+                                html.push("<a href='javascript:;' class='btn btn-default btn-xs action-update-status' data-id=" + this.UserID + " data-status=0 ><i class='fa fa-toggle-on'></i>鍋滅敤</a>&nbsp;&nbsp;");
+                            }
                             html.push("<a href='javascript:;' class='btn btn-success btn-xs action-edit' data-id='" + this.UserID + "'><i class='fa fa-edit'></i>&nbsp;缂栬緫</a>&nbsp;&nbsp;");
                             html.push("<a href='javascript:;' data-id='" + this.UserID + "' class='action-permission  btn btn-info btn-xs'><i class='fa fa-edit'></i>&nbsp;鏉冮檺</a>&nbsp;&nbsp;");
                             html.push("<a href='javascript:;' data-id='" + this.UserID + "' class='action-delete   btn btn-default btn-xs'><i class='fa fa-trash'></i>&nbsp;鍒犻櫎</a>");
@@ -35,7 +44,7 @@
                             html.push("</tr>");
                         });
                         if (result.Message.TotalCount == 0) {
-                            html.push("<tr><td colspan=\"10\" style=\"padding-left:5px; text-align: center;\">鏆傛棤淇℃伅</td></tr>");
+                            html.push("<tr><td colspan=\"11\" style=\"padding-left:5px; text-align: center;\">鏆傛棤淇℃伅</td></tr>");
                         }
 
                         $("#mainTable>tbody").html(html.join(""));
@@ -68,10 +77,26 @@
                 });
             });
 
+            $(document).on("click", ".action-update-status", function () {
+                //data鐨勫睘鎬у弬鏁颁笉鑳藉惈鏈夊ぇ鍐欏瓧姣嶃��
+                var userId = $(this).data("id");
+                var status = $(this).data("status");
+                mytek.confirm("鏄惁鏇存柊淇℃伅鐘舵�侊紵", "璇疯皑鎱庢搷浣滐紒", function (b) {
+                    if (b) {
+                        $.post("sysuser.ashx", { "action": "updateStatus", userId: userId, status: status }, function (r) {
+                            mytek.alert(r.Message, r.OK, function () {
+                                loadUserList();
+                            });
+                        });
+                    }
+                });
+            });
+
             $(document).on("click", ".action-save", function() {
                 var userid = $("#userDialog").data("id");
                 var account = $("#userDialog #account").val();
                 var password = $("#userDialog #password").val();
+                var userName = $("#userDialog #userName").val();
                 var mobile = $("#userDialog #mobile").val();
                 var email = $("#userDialog #email").val();
                 var emailFlag = $("#userDialog #emailFlag").val();
@@ -80,7 +105,7 @@
 
                 var clientIp = $("#userDialog #clientIp").val();
 
-                $.post("sysuser.ashx", { action: "saveUser", userid: userid, account: account, password: password, mobile: mobile, email: email, mobileFlag: mobileFlag, emailFlag: emailFlag, isVerification: isVerification, clientIp: clientIp },
+                $.post("sysuser.ashx", { action: "saveUser", userid: userid, account: account, password: password, userName:userName, mobile: mobile, email: email, mobileFlag: mobileFlag, emailFlag: emailFlag, isVerification: isVerification, clientIp: clientIp },
              function(result) {
                  mytek.alert(result.Message, result.OK, function() {
                      if (result.OK) {
@@ -96,6 +121,7 @@
                 $("#userDialog").data("id", 0);
                 $("#userDialog #account").val("");
                 $("#userDialog #password").val("");
+                $("#userDialog #userName").val("");
                 $("#userDialog #mobile").val("");
                 $("#userDialog #email").val("");
                 $("#userDialog input[name=isVerification]").iCheck("uncheck");
@@ -169,6 +195,7 @@
                     $("#userDialog").data("id", id);
                     $("#userDialog #account").val(user.Account);
                     $("#userDialog #password").val(user.Password);
+                    $("#userDialog #userName").val(user.UserName);
                     $("#userDialog #mobile").val(user.Mobile);
                     $("#userDialog #email").val(user.Email);
                     $("#userDialog #emailFlag").val(user.EmailFlag);
@@ -200,16 +227,23 @@
                 <div class="modal-body">
                     <div class="form-group">
                         <label class="col-sm-2 control-label">
-                            璐︽埛</label>
+                            璐︽埛 <span style="color:red">*</span></label>
                         <div class="col-sm-10">
                             <input type="text" name="account" id="account" value="" class="form-control" />
                         </div>
                     </div>
                     <div class="form-group">
                         <label class="col-sm-2 control-label">
-                            瀵嗙爜</label>
+                            瀵嗙爜 <span style="color:red">*</span></label>
                         <div class="col-sm-10">
                             <input type="password" name="password" id="password" value="" class="form-control" />
+                        </div>
+                    </div>
+                    <div class="form-group">
+                        <label class="col-sm-2 control-label">
+                            璐︽埛鍚嶇О <span style="color:red">*</span></label>
+                        <div class="col-sm-10">
+                            <input type="text" name="userName" id="userName" value="" class="form-control" />
                         </div>
                     </div>
                     <div class="form-group">
@@ -304,6 +338,9 @@
                         璐﹀彿
                     </th>
                     <th>
+                        鐢ㄦ埛鍚嶇О
+                    </th>
+                    <th>
                         鎵嬫満
                     </th>
                     <th>
@@ -324,7 +361,10 @@
                     <th>
                         鍒涘缓鏃堕棿
                     </th>
-                    <th style="width: 200px;">
+                    <th>
+                        鐘舵��
+                    </th>
+                    <th style="width: 240px;">
                         鎿嶄綔
                     </th>
                 </tr>

--
Gitblit v1.9.1