<%@ 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 sid = context.Request["sid"]; string deptId = context.Request["deptid"]; if (string.IsNullOrEmpty(sid)) { return; } if (string.IsNullOrEmpty(deptId)) { deptId = "6"; } 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 login, xingming,phone,mailAddress,IsExpired from COM_YHB where id in("+sid +")"; DataTable dTable = dbo.ExecuteTable(sql); 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}\",", row["login"]); sb.AppendFormat("\"name\": \"{0}\",", row["xingming"]); sb.AppendFormat("\"department\": {0},",deptId); //if (!Convert.IsDBNull(row["phone"])) //{ // sb.AppendFormat("\"mobile\": \"{0}\",", row["phone"]); //} //if (!Convert.IsDBNull(row["mailAddress"])) //{ // sb.AppendFormat("\"email\":\"{0}\" ", row["mailAddress"]); //} sb.Append("}"); EditUser(sb.ToString()); RefreshUser(row["login"].ToString()); } 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,WX_DEPT_ID 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; row["wx_dept_id"] = list.dept; 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; } public string[] department { set; get; } public string dept { get { string s = ""; foreach (string str in department) { s += str + ","; } return s.TrimEnd(','); } } } }