<%@ WebHandler Language="C#" Class="manageUser" Debug="true" %> using System; using System.Web; using Tencent; using System.Web.Script.Serialization; using System.Collections.Generic; using System.Data; using eMIS.Data; using System.Net; using System.IO; public class manageUser : IHttpHandler,System.Web.SessionState.IReadOnlySessionState { public void ProcessRequest (HttpContext context) { if (context.Session["userid"] == null) { return; } string uid = context.Request["uid"]; string flag = context.Request["flag"]; if (string.IsNullOrEmpty(uid) || string.IsNullOrEmpty(flag)) { return; } eDbManager manager = new eDbManager(eMIS.Data.WebConfigManager.DefaultDb); eDbOperator dbo = manager.CreateDbOperator(); try { Tencent.Weixin wx = new Weixin(context); wx.Messager.GetAccesstoken(); string sql = "select xingming,phone,mailAddress,IsExpired from COM_YHB where login=?"; DataTable dTable = dbo.ExecuteTable(sql,CommandType.Text,uid); System.Text.StringBuilder sb = new System.Text.StringBuilder(); foreach (DataRow row in dTable.Rows) { sb = new System.Text.StringBuilder(); sb.Append("{"); sb.AppendFormat("\"userid\": \"{0}\",", uid); sb.AppendFormat("\"name\": \"{0}\",", row["xingming"]); sb.Append("\"department\": 6,"); //6:jv if (!Convert.IsDBNull(row["phone"])) { sb.AppendFormat("\"mobile\": \"{0}\",", row["phone"]); } if (!Convert.IsDBNull(row["mailAddress"])) { sb.AppendFormat("\"email\":\"{0}\" ", row["mailAddress"]); } if (flag == "d") { sb.Append("\"enable\":0 "); } sb.Append("}"); } //throw new Exception(sb.ToString()); switch (flag) { case "d": //delete RemoveUser(uid); dbo.ExecuteNonQuery("delete from XT_WeiXinUsers where userid=?", uid); break; case "n": //new AddUser(sb.ToString()); RefreshUser(uid); break; case "e": //edit EditUser(sb.ToString()); RefreshUser(uid); break; } context.Response.ContentType = "text/plain"; context.Response.Write("ok"); } catch (Exception ex) { context.Response.ContentType = "text/plain"; context.Response.Write(ex.Message); } } public bool IsReusable { get { return false; } } private void RemoveUser(string userId) { string surl = "https://qyapi.weixin.qq.com/cgi-bin/user/delete?access_token={0}&userid="+ userId; surl = string.Format(surl, Tencent.WeixinStatic.AccessToken.Token); System.Net.HttpWebRequest request = WebRequest.Create(surl) as HttpWebRequest; request.ProtocolVersion = HttpVersion.Version10; request.Method = "GET"; HttpWebResponse resp = (HttpWebResponse)request.GetResponse(); System.IO.StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream()); string str = sr.ReadToEnd(); var serializer = new JavaScriptSerializer(); var list = serializer.Deserialize(str); if (list.errcode != "0") { throw new Exception(list.errmsg); } else { } } private void AddUser(string jsstr) { string surl = "https://qyapi.weixin.qq.com/cgi-bin/user/create?access_token={0}"; surl = string.Format(surl, Tencent.WeixinStatic.AccessToken.Token); System.Net.HttpWebRequest request = WebRequest.Create(surl) as HttpWebRequest; request.Method = "post"; request.ServicePoint.Expect100Continue = false; request.Timeout = 1000 * 10; byte[] b = System.Text.Encoding.UTF8.GetBytes(jsstr); Stream sender = request.GetRequestStream(); sender.Write(b, 0, b.Length); sender.Close(); WebResponse result = null; result = request.GetResponse(); Stream receiveStream = result.GetResponseStream(); StreamReader sr = new StreamReader(receiveStream); string str = sr.ReadToEnd(); var serializer = new JavaScriptSerializer(); var list = serializer.Deserialize(str); if (list.errcode != "0") { throw new Exception(list.errmsg); } else { } } private void EditUser(string jsstr) { string surl = "https://qyapi.weixin.qq.com/cgi-bin/user/update?access_token={0}"; surl = string.Format(surl, Tencent.WeixinStatic.AccessToken.Token); System.Net.HttpWebRequest request = WebRequest.Create(surl) as HttpWebRequest; request.Method = "post"; request.ServicePoint.Expect100Continue = false; request.Timeout = 1000 * 10; byte[] b = System.Text.Encoding.UTF8.GetBytes(jsstr); Stream sender = request.GetRequestStream(); sender.Write(b, 0, b.Length); sender.Close(); WebResponse result = null; result = request.GetResponse(); Stream receiveStream = result.GetResponseStream(); StreamReader sr = new StreamReader(receiveStream); string str = sr.ReadToEnd(); var serializer = new JavaScriptSerializer(); var list = serializer.Deserialize(str); if (list.errcode != "0") { throw new Exception(list.errmsg); } else { } } private void RefreshUser(string userId) { string surl = "https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token={0}&userid=" + userId; surl = string.Format(surl, Tencent.WeixinStatic.AccessToken.Token); System.Net.HttpWebRequest request = WebRequest.Create(surl) as HttpWebRequest; request.ProtocolVersion = HttpVersion.Version10; request.Method = "GET"; HttpWebResponse resp = (HttpWebResponse)request.GetResponse(); System.IO.StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream()); string str = sr.ReadToEnd(); //UserIdResult user = (UserIdResult)Serialization.Deserialize(str, typeof(UserIdResult)); var serializer = new JavaScriptSerializer(); var list = serializer.Deserialize(str); if(list.errcode!="0") throw new Exception(list.errmsg); eDbManager manager = new eDbManager(eMIS.Data.WebConfigManager.DefaultDb); eDbOperator dbo = manager.CreateDbOperator(); string sql = "select userid,wx_phone,wx_email,wx_status from XT_WeiXinUsers where userid='"+ userId + "'"; DataTable dTable = dbo.ExecuteTable(sql); DataRow row; if (dTable.Rows.Count > 0) { row = dTable.Rows[0]; } else { row = dTable.NewRow(); row["userid"] = userId; dTable.Rows.Add(row); } row["wx_phone"] = list.mobile; row["wx_email"] = list.email; row["wx_status"] = list.status; dbo.Write(dTable, "XT_WeiXinUsers", "userid"); } class WXResult { public string errcode { set; get; } public string errmsg { set; get; } } class U { public string errcode { set; get; } public string errmsg { set; get; } public string userid { set; get; } public string name { set; get; } public string mobile { set; get; } public string email { set; get; } public string status { set; get; } } }