private WXResponseMsgBase 查询绑定(string publicWX, WXRequestMsg msg) { string response = _DefaultResponse; var sid = new WXBindingBLL(WXManager.Current[publicWX].DBConnect).GetBindingStudentID(msg.FromUserName, msg.ToUserName); if (string.IsNullOrEmpty(sid)) { response = "您还没有绑定学号。"; } else { var s = new StudentBLL(WXManager.Current[publicWX].DBConnect).GetByID(sid).QueryObject; if (s == null) { response = string.Format("学号:{0}\n{1}", sid, "没有找到学生信息"); } else { StringBuilder sb = new StringBuilder(); sb.AppendLine(string.Format("学号:{0}", s.ID)); sb.AppendLine(string.Format("姓名:{0}", s.Name)); if (s.Grade.HasValue) { sb.AppendLine(string.Format("年级:{0}", GradeHelper.Instance.GetName(s.Grade.Value))); } if (!string.IsNullOrEmpty(s.ClassName)) { sb.AppendLine(string.Format("班级:{0}", s.ClassName)); } response = sb.ToString(); } } return(new WXTextResponseMsg(msg.FromUserName, msg.ToUserName, DateTime.Now, response)); }
private WXResponseMsgBase HandleSubscribeMsg(WXRequestMsg msg) { string response = "欢迎关注我们! \n" + "相信汇海,相信专业!\n"; return(new WXTextResponseMsg(msg.FromUserName, msg.ToUserName, DateTime.Now, response)); }
private WXResponseMsgBase 查看预约(string publicWX, WXRequestMsg msg) { string response = string.Empty; var wx = WXManager.Current[publicWX]; var sid = new WXBindingBLL(wx.DBConnect).GetBindingStudentID(msg.FromUserName, msg.ToUserName); if (string.IsNullOrEmpty(sid)) { return(new WXTextResponseMsg(msg.FromUserName, msg.ToUserName, DateTime.Now, "您还没有绑定学号,请先绑定学号")); } var client = new 中国美院接口Client("http://120.78.230.233:8081"); var ret = client.获取预约信息(sid); if (ret.Code == 0 && ret.预约信息 != null && ret.预约信息.Length > 0) { var sb = new StringBuilder(); sb.AppendLine("你已经预约如下这些项目:"); sb.AppendLine("----------------------------------------"); foreach (var item in ret.预约信息) { sb.AppendLine(string.Format("{0} 日期{1}", item.项目名称, item.测试日期.ToString("yyyy-MM-dd"))); } sb.AppendLine("----------------------------------------"); response = sb.ToString(); } else { response = "你没有可预约项目"; } return(new WXTextResponseMsg(msg.FromUserName, msg.ToUserName, DateTime.Now, response)); }
private WXResponseMsgBase 预约测试(string publicWX, WXRequestMsg msg) { string response = string.Empty; var wx = WXManager.Current[publicWX]; var sid = new WXBindingBLL(wx.DBConnect).GetBindingStudentID(msg.FromUserName, msg.ToUserName); if (string.IsNullOrEmpty(sid)) { return(new WXTextResponseMsg(msg.FromUserName, msg.ToUserName, DateTime.Now, "您还没有绑定学号,请先绑定学号")); } if (!string.IsNullOrEmpty(msg.Content)) { DateTime dt; if (msg.Content.Length >= 10) { var dttemp = msg.Content.Substring(0, 8); if (DateTime.TryParseExact(dttemp, "yyyyMMdd", null, System.Globalization.DateTimeStyles.None, out dt)) { var sheme = msg.Content.Substring(9); var client = new 中国美院接口Client("http://120.78.230.233:8081"); var ret = client.预约(sid, dt, sheme); if (ret.Code == 0) { response = "预约成功!"; } else { response = "预约失败"; } } } else { response = "输入的日期格式不正确,请重新输入"; } } else { var client = new 中国美院接口Client("http://120.78.230.233:8081"); var ret = client.获取可预约项目(sid); if (ret.Code == 0 && ret.Scores != null && ret.Scores.Length > 0) { var sb = new StringBuilder(); sb.AppendLine("你可以预约如下这些项目:"); sb.AppendLine("----------------------------------------"); foreach (var item in ret.Scores) { sb.AppendLine(string.Format("{0} 编号{1}", item.项目名称, item.编号)); } sb.AppendLine("----------------------------------------"); sb.AppendLine("预约请发送 年月日+项目编号 如:20180101+7"); response = sb.ToString(); } else { response = "你没有可预约项目"; } } return(new WXTextResponseMsg(msg.FromUserName, msg.ToUserName, DateTime.Now, response)); }
private WXResponseMsgBase 取消绑定(string publicWX, WXRequestMsg msg) { string response = _DefaultResponse; var ret = new WXBindingBLL(WXManager.Current[publicWX].DBConnect).UnRegister(msg.FromUserName, msg.ToUserName); if (ret.Result == ResultCode.Successful) { response = "你已经成功取消学号绑定"; } else { response = ret.Message; } return(new WXTextResponseMsg(msg.FromUserName, msg.ToUserName, DateTime.Now, response)); }
private WXResponseMsgBase 查询二维码(string publicWX, WXRequestMsg msg) { string response = _DefaultResponse; var wx = WXManager.Current[publicWX]; var sid = new WXBindingBLL(wx.DBConnect).GetBindingStudentID(msg.FromUserName, msg.ToUserName); if (string.IsNullOrEmpty(sid)) { return(new WXTextResponseMsg(msg.FromUserName, msg.ToUserName, DateTime.Now, "您还没有绑定学号,请先绑定学号")); } var s = new StudentBLL(wx.DBConnect).GetByID(sid).QueryObject; if (s == null) { return(new WXTextResponseMsg(msg.FromUserName, msg.ToUserName, DateTime.Now, "没有找到学生信息")); } response = string.Format(@"点击打开二维码 http://{0}/hhcloud/qr/{1}/{2}/", _Request.RequestUri.Host, publicWX, s.ID); return(new WXTextResponseMsg(msg.FromUserName, msg.ToUserName, DateTime.Now, response)); }
private WXResponseMsgBase 绑定学号(string publicWX, WXRequestMsg msg) { if (!string.IsNullOrEmpty(msg.Content)) { string sid = null; if (msg.Content.IndexOf(_regStudentID) == 0 && msg.Content.Length > _regStudentID.Length) { sid = msg.Content.Substring(_regStudentID.Length); // } else { sid = msg.Content; //通过菜单项然后输入学号 } var ret = new WXBindingBLL(WXManager.Current[publicWX].DBConnect).Register(msg.FromUserName, msg.ToUserName, sid); if (ret.Result != ResultCode.Successful) { return(new WXTextResponseMsg(msg.FromUserName, msg.ToUserName, DateTime.Now, ret.Message)); } return(new WXTextResponseMsg(msg.FromUserName, msg.ToUserName, DateTime.Now, string.Format("你已经成功绑定学号 {0}", sid))); } return(new WXTextResponseMsg(msg.FromUserName, msg.ToUserName, DateTime.Now, "请输入你要绑定的学号")); }
public WXResponseMsgBase HandleMsg(string publicWX, WXRequestMsg msg) { var wx = WXManager.Current[publicWX]; if (wx == null) { return(new WXTextResponseMsg(msg.FromUserName, msg.ToUserName, DateTime.Now, "系统没有提供此微信公众号服务")); } if (msg.MsgType == MsgType.Event) { string temp = null; _WaitingEvents.TryRemove(msg.FromUserName, out temp); //如果是事件 if (msg.Event == WXEventType.Subscribe) { return(HandleSubscribeMsg(msg)); } else if (msg.Event.ToUpper() == WXEventType.Click) { switch (msg.EventKey) { case "btn_绑定学号": { _WaitingEvents[msg.FromUserName] = msg.EventKey; return(绑定学号(publicWX, msg)); } case "btn_取消绑定": { _WaitingEvents[msg.FromUserName] = msg.EventKey; return(new WXTextResponseMsg(msg.FromUserName, msg.ToUserName, DateTime.Now, "是否取消绑定?确定取消请回复 \"是\"")); } case "btn_预约": { _WaitingEvents[msg.FromUserName] = msg.EventKey; return(预约测试(publicWX, msg)); } case "btn_查询学号": return(查询绑定(publicWX, msg)); case "btn_查询成绩": return(查询成绩(publicWX, msg)); case "btn_二维码": return(查询二维码(publicWX, msg)); case "btn_查看预约": return(查看预约(publicWX, msg)); } } else if (msg.Event == WXEventType.View) //VIEW菜单事件 { var url = msg.EventKey; } } else if (msg.MsgType == MsgType.Text) { if (_WaitingEvents.ContainsKey(msg.FromUserName)) { string eventKey = null; _WaitingEvents.TryRemove(msg.FromUserName, out eventKey); if (eventKey == "btn_绑定学号") { return(绑定学号(publicWX, msg)); } else if (eventKey == "btn_取消绑定" && msg.Content == "是") { return(取消绑定(publicWX, msg)); } else if (eventKey == "btn_预约") { return(预约测试(publicWX, msg)); } } else if (msg.Content == "@qr") { return(查询二维码(publicWX, msg)); } } return(new WXTextResponseMsg(msg.FromUserName, msg.ToUserName, DateTime.Now, _DefaultResponse)); }
private WXResponseMsgBase 查询成绩(string publicWX, WXRequestMsg msg) { string response = _DefaultResponse; var wx = WXManager.Current[publicWX]; var sid = new WXBindingBLL(wx.DBConnect).GetBindingStudentID(msg.FromUserName, msg.ToUserName); if (string.IsNullOrEmpty(sid)) { new WXTextResponseMsg(msg.FromUserName, msg.ToUserName, DateTime.Now, "您还没有绑定学号,请先绑定学号"); } var s = new StudentBLL(wx.DBConnect).GetByID(sid).QueryObject; if (s == null) { new WXTextResponseMsg(msg.FromUserName, msg.ToUserName, DateTime.Now, "没有找到学生信息"); } StringBuilder sb = new StringBuilder(); sb.AppendLine(string.Format("学号:{0}", s.ID)); sb.AppendLine(string.Format("姓名:{0}", s.Name)); sb.AppendLine(string.Format("性别:{0}", s.Sex == 1 ? "男" : "女")); if (s.Grade.HasValue) { sb.AppendLine(string.Format("年级:{0}", GradeHelper.Instance.GetName(s.Grade.Value))); } if (!string.IsNullOrEmpty(s.ClassName)) { sb.AppendLine(string.Format("班级:{0}", s.ClassName)); } var con = new StudentScoreSearchCondition() { Grade = s.Grade, StudentID = s.ID, ProjectID = "TizhiCheshi" }; var scores = new StudentScoreBLL(wx.DBConnect).GetItems(con).QueryObjects; scores = (from it in scores orderby it.PhysicalItem ascending select it).ToList(); var pis = UserSettings.Current.CreateDefaultFormula(s.Grade.Value, s.Sex); if (pis != null && pis.Length > 0) { if (scores != null && scores.Count > 0) { var total = CalTotal(s.Grade.Value, scores); if (total > 0) { sb.AppendLine(string.Format("总分:{0}", total)); } var jiafen = CalJiafen(scores); if (jiafen.HasValue) { sb.AppendLine(string.Format("加分:{0}", jiafen.Value.Trim())); } sb.AppendLine("----------------------"); foreach (var score in scores) { if (pis.Contains(score.PhysicalItem)) { if (!score.Result.HasValue || score.PhysicalItem == 1 || score.PhysicalItem == 2) { sb.AppendLine(string.Format("{0}:{1}", score.PhysicalName, score.Score)); } else { sb.AppendLine(string.Format("{0}:{1}_{2}分_{3}", score.PhysicalName, score.Score, score.Result.Value.Trim(), score.Rank)); } } } } if (pis.Any(it => scores == null || !scores.Exists(sc => sc.PhysicalItem == it))) { sb.AppendLine("------------------未测试科目"); foreach (var pi in pis) { if (scores == null || !scores.Exists(it => it.PhysicalItem == pi)) { sb.AppendLine(UserSettings.Current.GetPhysicalName(pi)); } } } response = sb.ToString(); } return(new WXTextResponseMsg(msg.FromUserName, msg.ToUserName, DateTime.Now, response)); }
/// <summary> /// 微信后台消息POST处理函数 /// </summary> /// <param name="id">微信公众号ID,系统可以托管多个公众号,用于区分各个公众号</param> /// <param name="signature">微信后台发过来的签名参数,用于验证是否是微信服务器发的消息</param> /// <param name="timestamp">微信后台发过来的签名参数,用于验证是否是微信服务器发的消息</param> /// <param name="nonce">微信后台发过来的签名参数,用于验证是否是微信服务器发的消息</param> /// <param name="msg">微信POST请求中的消息主体内容,后台会自动用XMLFORMATER反序列化</param> /// <returns></returns> public HttpResponseMessage Post(string id, string signature, string timestamp, string nonce, WXRequestMsg msg) { try { var wx = WXManager.Current[id]; //检查签名 if (wx == null || wx.GetSigniture(timestamp, nonce).ToUpper() != signature.ToUpper()) { return(Request.CreateResponse(HttpStatusCode.BadRequest)); } if (msg != null) { var ret = new WXRequestHandler(this.Request).HandleMsg(id, msg); if (ret != null) { var response = Request.CreateResponse(); response.Content = new StringContent(ret.ToXML()); return(response); } return(Request.CreateResponse()); } return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, new HttpError("消息不能解析"))); } catch (Exception ex) { return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, new HttpError(ex.Message))); } }