Пример #1
0
        public override IResponseMessage OnTextRequest(IRequestMessage requestMessage)
        {
            IResponseMessage responseMessage = null;

            DateTime        retdate;
            IFormatProvider ifp   = new System.Globalization.CultureInfo("zh-CN", true);
            var             bDate = DateTime.TryParseExact(requestMessage.Content, "yyyyMM", ifp, System.Globalization.DateTimeStyles.None, out retdate);


            if (requestMessage.Content.Length != 6 || !bDate)
            {
                responseMessage         = ResponseMessage.CreateFromRequestMessage(requestMessage, QY.Enums.ResponseType.Text);
                responseMessage.Content = "您输入的格式有误。";
                return(responseMessage);
            }

            var jsonObj = JObject.Parse(JsonSend.GetQyUserinfo(postModel.CorpId, postModel.Secret, requestMessage.FromUserName));
            var sUserid = (string)jsonObj["userid"];

            Debug.WriteLine(sUserid);
            if (sUserid == "1")
            {
                sUserid = "330421199506040511";
            }

            var sSelect = "SELECT * FROM 考勤期间 AS T1 INNER JOIN 考勤汇总_明细 AS T2 ON T1.ExcelServerRCID=T2.ExcelServerRCID INNER JOIN (SELECT 人员编号 as 'id' FROM 人员档案 AS T1 WHERE T1.证件号码 = '{0}') AS T3 ON T3.id = T2.人员编号 WHERE T1.年=SUBSTRING('{1}',1,4) AND T1.月=SUBSTRING('{1}',5,2)";

            sSelect = string.Format(sSelect, sUserid, requestMessage.Content);

            var ds = SqlHelper.ExecuteDataset(QyWeixin.QyEntry.sqlConnectstr, CommandType.Text, sSelect);

            if (ds.Tables[0].Rows.Count == 0)
            {
                Debug.WriteLine(sSelect);
                responseMessage         = ResponseMessage.CreateFromRequestMessage(requestMessage, QY.Enums.ResponseType.Text);
                responseMessage.Content = "查询不到关于你的数据。";
                return(responseMessage);
            }
            var sID          = (string)ds.Tables[0].Rows[0]["id"];
            var sName        = (string)ds.Tables[0].Rows[0]["姓名"];
            var sStardard    = Math.Round((decimal)ds.Tables[0].Rows[0]["标准工时"], 1);
            var sReal        = Math.Round((decimal)ds.Tables[0].Rows[0]["实出勤"], 1);
            var sJiaban      = sReal - sStardard > 0 ? sReal - sStardard : 0;
            var sQuanqin     = (string)ds.Tables[0].Rows[0]["是否全勤"];
            var sDescription = "{0},该月标准工时{1}小时,您实际出勤{2}小时,其中{3}小时将作为加班工时为您结算加班工资。全勤:{4}";
            var sUrl         = "http://www.skyflag.com:6018/kaoqin.aspx?id={0}&date={1}&name={2}";
            var sDate        = requestMessage.Content;

            sUrl         = string.Format(sUrl, sID, sDate, sName);
            sDescription = string.Format(sDescription, sName, sStardard, sReal, sJiaban, sQuanqin);
            Debug.WriteLine(sUserid);
            Debug.WriteLine(sSelect);
            responseMessage = ResponseMessage.CreateFromRequestMessage(requestMessage, QY.Enums.ResponseType.News);
            var art1 = new ResponseMessageInnerType.Article
            {
                Title       = requestMessage.Content + "考勤数据",
                Description = sDescription,
                Url         = sUrl,
                PicUrl      = "http://www.skyflag.com:6018/img/salary.jpg"
            };

            responseMessage.Articles.Add(art1);
            return(responseMessage);
        }
Пример #2
0
        public override IResponseMessage OnEventRequest(IRequestMessage requestMessage)
        {
            IResponseMessage responseMessage = null;

            switch (requestMessage.EventKey)
            {
            case "考勤数据":
            {
                var jsonObj = JObject.Parse(JsonSend.GetQyUserinfo(postModel.CorpId, postModel.Secret, requestMessage.FromUserName));

                responseMessage = ResponseMessage.CreateFromRequestMessage(requestMessage, QY.Enums.ResponseType.Text);
                var sSelect = "SELECT DISTINCT TOP 1 CAST(T1.年 AS nvarchar) + CASE WHEN T1.月<10 THEN '0' ELSE '' END + CAST(T1.月 AS nvarchar) AS 日期 FROM 考勤期间 AS T1 INNER JOIN 考勤明细 AS T2 ON T1.ExcelServerRCID = T2.ExcelServerRCID INNER JOIN (SELECT 人员编号 as 'id' FROM 人员档案 AS T1 WHERE T1.证件号码 = '330421198112112514') AS T3 ON T2.人员编号 = T3.id ORDER BY 日期 DESC";
                var dr      = SqlHelper.ExecuteReader(QyWeixin.QyEntry.sqlConnectstr, CommandType.Text, sSelect);
                var s       = "";
                while (dr.Read())
                {
                    s += dr["日期"];
                }
                responseMessage.Content = string.Format("欢迎使用企业号,{0}\n您现在最新可查询的考勤批次是:{1}\n请在输入框中以如上格式输入您要查询的考勤批次", jsonObj["name"], s);

                //var biz = new JsonMessage
                //{
                //    touser = requestMessage.FromUserName,
                //    msgtype = "text",
                //    agentid = requestMessage.AgentID.ToString(),
                //    text = new JsonMessageInnerType.textcontent { content = responseMessage.Content },
                //    safe = 0
                //};
                //var error = JsonSend.SendQyMessage(postModel.CorpId, postModel.Secret, XLH.SerializeJsonToString(biz), System.Text.Encoding.UTF8);
            }
            break;

            case "手动打卡":
            {
                var jsonObj = JObject.Parse(JsonSend.GetQyUserinfo(postModel.CorpId, postModel.Secret, requestMessage.FromUserName));
                Debug.WriteLine(jsonObj["department"].ToString());
                var jsonArray = (JArray)jsonObj["department"];

                foreach (var item in jsonArray)
                {
                    if ((int)item != 2 && (int)item != 6)
                    {
                        responseMessage         = ResponseMessage.CreateFromRequestMessage(requestMessage, QY.Enums.ResponseType.Text);
                        responseMessage.Content = "你没有权限操作,请联系负责人补打。";
                    }
                    else
                    {
                        responseMessage = ResponseMessage.CreateFromRequestMessage(requestMessage, QY.Enums.ResponseType.News);
                        string surl      = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx87c90793c5376e09&redirect_uri={0}&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect";
                        string encodeurl = System.Web.HttpUtility.UrlEncode("http://senderwood.vicp.net/clock.aspx");
                        Debug.WriteLine(string.Format(surl, encodeurl));
                        responseMessage.Articles.Add(new ResponseMessageInnerType.Article
                            {
                                Url         = "http://pinhuadashi.ticp.net/timerecords.html",
                                Description = "点击进行操作",
                                Title       = "手动打卡"
                            });
                    }
                }
            }
            break;
            }

            return(responseMessage);
        }