using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Net; using System.IO; using BP.WF; using BP.GPM.WeiXin; using BP.En; using BP.DA; using System.Text; using BP.Tools; using BP.Sys; using System.Data; namespace CCFlow.CCMobile { public partial class actionWX : System.Web.UI.Page { #region 参数。 public string DoType { get { return this.Request.QueryString["DoType"]; } } public string UserNo { get { return this.Request.QueryString["UserNo"]; } } public string Password { get { return this.Request.QueryString["Password"]; } } #endregion 参数。 /// /// 执行方法. /// public void DoTypeAction() { switch (this.DoType) { case "Login"://登录 BP.Port.Emp emp = new BP.Port.Emp(); emp.No = this.UserNo; if (emp.IsExits == false) { ReturnVal("0"); return; } if (emp.Pass == this.Password) { BP.WF.Dev2Interface.Port_Login(this.UserNo); ReturnVal("1"); return; } ReturnVal("0"); return; default: break; } } public void ReturnVal(string val) { if (string.IsNullOrEmpty(val)) val = ""; //组装ajax字符串格式,返回调用客户端 Response.Charset = "UTF-8"; Response.ContentEncoding = System.Text.Encoding.UTF8; Response.ContentType = "text/html"; Response.Expires = 0; Response.Write(val); Response.End(); } protected void Page_Load(object sender, EventArgs e) { //第一步:获取企业微信跳转页面中的code,每次登录,code都不一致 string code = Request["code"]; string state = Request["state"]; //重定向执行标记. //用户唯一标识 string openid = ""; //网页授权接口调用凭证 string access_token = ""; //用户刷新access_token string refresh_token = ""; //第二步:通过code换取网页授权access_token BP.WF.WeiXin.GZH.WeiXinGZHModel.AccessToken accessToken = new BP.WF.WeiXin.GZH.WeiXinGZHModel.AccessToken(); accessToken = BP.WF.WeiXin.WeiXinGZHEntity.getAccessToken(code); if (accessToken.errcode == "0" || DataType.IsNullOrEmpty(accessToken.errcode)) { openid = accessToken.openid; access_token = accessToken.access_token; refresh_token = accessToken.refresh_token; } else { this.Response.Write("@获取网页授权失败,errcode:" + accessToken.errcode); return; } //第三步:获取用户信息 BP.WF.WeiXin.GZH.WeiXinGZHModel.GZHUser user = new BP.WF.WeiXin.GZH.WeiXinGZHModel.GZHUser(); user = BP.WF.WeiXin.WeiXinGZHEntity.getUserInfo(access_token, openid); if (user.errcode != "0" && !DataType.IsNullOrEmpty(user.errcode)) { this.Response.Write("@获取用户信息失败,errcode:" + user.errcode); return; } //第四步:验证是否已注册本系统 BP.WF.WeiXin.Emp emp = new BP.WF.WeiXin.Emp(); if (emp.IsExit("OpenID", user.openid) == false) { emp.No = user.openid; emp.Name = user.nickname; emp.OpenID = user.openid; string sql = "SELECT No FROM Port_Dept WHERE NAME LIKE '%外部用户%' "; DataTable dt = DBAccess.RunSQLReturnTable(sql); if (dt.Rows.Count != 1) { this.Response.Write("@获取外部用户部门失败:,errcode:" + sql); return; } emp.FK_Dept = dt.Rows[0][0].ToString(); emp.Insert(); } BP.WF.Dev2Interface.Port_Login(emp.No); Response.Redirect("../CCMobilePortal/Home.htm?UserNo=" + emp.No + "&openID=" + emp.OpenID + "&FK_Dept=" + emp.FK_Dept, true); return; } /// /// 获得用户ID /// /// /// /// public string getUserId(string code, string accessToken) { //获取用户信息 string url = "https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token=" + accessToken + "&code=" + code + "&agentid=2"; return DataType.ReadURLContext(url, 39000, Encoding.UTF8); } } }