Ejemplo n.º 1
0
 /// <summary>
 /// 添加用户
 /// </summary>
 /// <param name="CreateUserid">操作者ID</param>
 /// <param name="errMsg">返回错误信息</param>
 /// <param name="wxDepartmentID"></param>
 /// <returns></returns>
 public bool AddMember(string CreateUserid, ref string errMsg, string wxDepartmentID = null)
 {
     try
     {
         QYConfig.RegistWX();
         var accessToken = AccessTokenContainer.GetToken(QYConfig.CorpId);
         var result      = MailListApi.CreateMember(accessToken, UserId, Name, new int[] { int.Parse(wxDepartmentID ?? DepartMent.DepartmentID) }, Position, Mobile, null, Email, Weixinid, 0);
         if (result.errcode.ToString() == "请求成功")
         {
             var gresult = MailListApi.GetMember(accessToken, UserId);
             Avatar = gresult.avatar;
             if (MembertDA.AddMember(UserId, Name, Position, Mobile, Email, Weixinid, Avatar, Status, CreateBy, DepartmentPKId.ToString()))
             {
                 return(true);
             }
             else
             {
                 errMsg = result.errcode + ":" + result.errmsg;
                 return(false);
             }
         }
         else
         {
             return(false);
         }
     }
     catch (Exception e)
     {
         Logger.Log4Net.Error("add Member error:" + e);
         errMsg = "操作失敗:" + e.Message;
         return(false);
     }
 }
        public ActionResult EditTicket(string id, int appId)
        {
            //var obj = GetObject(id);
            var obj          = _objService.Repository.GetByKey(int.Parse(id));
            var questionView = _objService.GetQuestionDetail(id, obj);
            var user         = _objUserService.GetBylillyId(obj.CreatedUserId);

            if (user != null)
            {
                questionView.Tel = user.Tel;
            }

            var objConfig = WeChatCommonService.GetWeChatConfig(obj.AppId.GetValueOrDefault());

            string strToken = AccessTokenContainer.TryGetToken(objConfig.WeixinCorpId, objConfig.WeixinCorpSecret);

            var objone = MailListApi.GetMember(strToken, obj.CreatedUserId);

            if (objone != null)
            {
                questionView.EMail = objone.email;
            }

            if (!string.IsNullOrEmpty(id) && id != "0")
            {
                AppDataPermissionCheck(_permissionService, appId, obj.AppId.GetValueOrDefault());
            }


            return(Json(questionView, JsonRequestBehavior.AllowGet));
        }
Ejemplo n.º 3
0
        //[TestMethod]
        public void UpdateMemberTest(string userId)
        {
            var accessToken = AccessTokenContainer.GetToken(_corpId, base._corpSecret);

            var memberUpdateRequest = new MemberUpdateRequest()
            {
                userid       = userId,
                english_name = "new english name",
                department   = new long[] { 2 },
                gender       = "1",
                email        = "*****@*****.**"
            };

            var result = MailListApi.UpdateMember(accessToken, memberUpdateRequest);

            Assert.IsNotNull(result);
            Assert.IsTrue(result.errcode == ReturnCode_Work.请求成功);

            //校验更新成功
            var newMemberData = MailListApi.GetMember(accessToken, userId);

            Assert.AreEqual(memberUpdateRequest.english_name, newMemberData.english_name);
            Assert.AreEqual(memberUpdateRequest.email, newMemberData.email);

            Console.WriteLine("new user info:" + newMemberData.ToJson());
        }
Ejemplo n.º 4
0
        public ResultJSON<UserDTO> Get(string id)
        {
            r.CurrentUser = UserName;

            var result = new UserDTO
            {
                WorkInfo = MailListApi.GetMember(option.AccessToken, id)
            };

            var model = r.FirstOrDefault(u => u.UserId == id);
            if (model == null)
            {
                var user = new User
                {
                    Name = result.WorkInfo.name,
                    UserId = result.WorkInfo.userid,
                    AccountName = result.WorkInfo.name
                };
                model = r.Insert(user);
            }

            result.LocalInfo = model;

            return new ResultJSON<UserDTO>
            {
                Code = 0,
                Data = result
            };
        }
Ejemplo n.º 5
0
        public WorkJsonResult GetMember(GetMemberDto dto)
        {
            //dto.AccessToken = GetAccessToken(QyConfig.CorpID, QyConfig.CorpSecret);
            var result = MailListApi.GetMember(dto.AccessToken, dto.ID);

            return(result);
        }
Ejemplo n.º 6
0
        public string GetDisplayName(string appId, int AccountManageID, string userIds = "", string groupIds = "")
        {
            var           appInfo = lstSysWeChatConfig.SingleOrDefault(a => a.AccountManageId == AccountManageID);
            var           token   = CommonApi.GetToken(appInfo.WeixinCorpId, appInfo.WeixinCorpSecret);
            StringBuilder sb      = new StringBuilder();

            if (!string.IsNullOrEmpty(userIds))
            {
                var users = userIds.Split(',');
                foreach (var user in users)
                {
                    sb.Append(MailListApi.GetMember(token.access_token, user).name).Append(",");
                }
            }
            if (!string.IsNullOrEmpty(groupIds))
            {
                sb.Append("|");
                var groups = groupIds.Split(',');
                foreach (var group in groups)
                {
                    sb.Append(MailListApi.GetDepartmentList(token.access_token, Int32.Parse(group)).department[0].name).Append(",");
                }
            }
            return(sb.ToString().TrimEnd(','));
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 跳转通过oauth获取ticket, 主要逻辑以及跳转在WeChatBaseController中完成
        /// </summary>
        /// <param name="appId"></param>
        /// <param name="uri"></param>
        /// <returns></returns>
        public ActionResult GetTicketExt(int appId, string uri)
        {
            string UserId = ViewBag.WeChatUserID;

            if (string.IsNullOrEmpty(UserId))
            {
                return(Content("用户ID为空,请确定您已经关注企业号并且您的状态是在职!"));
            }

            log.Debug("API GetTicket Start  UserID:{0} Uri:{1} URL:{2}", UserId, uri, Request.Url);

            string enTicket = EncryptionHelper.ConvertBase64(DesHelper.Encrypt(UserId + "|" + DateTime.UtcNow.ToFileTime().ToString(), CommonService.GetSysConfig("EncryptKey", "")));

            string backUrl;//= EncryptionHelper.DecodeFrom64(uri) + enTicket;

            if (uri.IndexOf("_") >= 0)
            {
                var u  = uri.Split('_');
                var u1 = EncryptionHelper.DecodeFrom64(u[0]);

                backUrl = u1;
                // backUrl = (u1.IndexOf("?") >= 0 ? "&" : "?") + EncryptionHelper.DecodeFrom64(u[1]) + enTicket;
            }
            else
            {
                backUrl = EncryptionHelper.DecodeFrom64(uri);
            }

            string strRet = "";

            if (backUrl.IndexOf("ticket=") > 0)
            {
                strRet = backUrl + enTicket;
            }
            else
            {
                strRet = backUrl + (backUrl.IndexOf("?") >= 0 ? "&" : "?") + "ticket=" + enTicket;
            }

            var strToken = GetTokenExt();
            var userInfo = MailListApi.GetMember(strToken, UserId);

            // var userInfo = UserApi.Info(weChatConfig.WeixinAppId, weChatConfig.WeixinCorpSecret, openid);

            strRet = strRet + "&extend1=";

            if (userInfo != null)
            {
                strRet = strRet + userInfo;
            }
            else
            {
                log.Error("用户不存在: userid:{0}", UserId);
            }

            log.Debug("API GetTicket End  backUrl:{0}", strRet);

            return(Redirect(strRet));
        }
Ejemplo n.º 8
0
        public ActionResult GetSFCode(string lillyID, string openID, string clientID)
        {
            if (!VerifyNewParam("lillyid,openid", clientID, _signCheckService))
            {
                return(ErrMsg());
            }

            var result   = false;
            var strToken = GetToken();
            var userInfo = MailListApi.GetMember(strToken, lillyID);

            System.Random r  = new Random();
            int           rr = r.Next(100000, 999999);

            DateTime dttemp   = DateTime.Now.AddMinutes(-5);
            var      sfSearch = _shunFengInfoService.Repository.Entities.Where(
                t => t.LillyId == lillyID.ToUpper() && t.ValidBefore >= dttemp && t.IsValid == 0).FirstOrDefault();

            //int inttemp = sfSearch.ToList().Count;

            if (sfSearch != null)
            {
                result = true;
            }
            else
            {
                _shunFengInfoService.Repository.Insert(new ShunFengInfo()
                {
                    LillyId       = lillyID.ToUpper(),
                    OpenId        = openID.ToUpper(),
                    Email         = userInfo.email.ToUpper(),
                    Code          = rr.ToString(),
                    ValidBefore   = DateTime.Now,
                    CreatedUserID = "",
                    CreatedDate   = DateTime.Now,
                    UpdatedUserID = "",
                    UpdatedDate   = DateTime.Now,
                    IsDeleted     = false,
                    IsValid       = 0
                });

                if (_shunFengInfoService.Repository.Entities.Where(
                        t => t.LillyId == lillyID.ToUpper() && t.ValidBefore >= dttemp && t.IsValid == 0).FirstOrDefault() != null)
                {
                    result = true;
                }
            }

            if (result)
            {
                var jsonString = CommonService.GetSysConfig("SFEmail", "");
                _objService.SendMail(lillyID.ToUpper(), 0, rr.ToString(), jsonString, "", "", "验证码", true);
            }

            return(Json(new
            {
                result = result,
            }, JsonRequestBehavior.AllowGet));
        }
Ejemplo n.º 9
0
        //[TestMethod]
        public void GetMember(string userId)
        {
            var accessToken = AccessTokenContainer.GetToken(_corpId, base._corpSecret);
            var result      = MailListApi.GetMember(accessToken, userId);

            Assert.IsNotNull(result);
            Assert.IsTrue(result.errcode == ReturnCode_Work.请求成功);
        }
Ejemplo n.º 10
0
        public ActionResult ShowContent(string code, string state)
        {
            #region 获取用户code
            if (string.IsNullOrEmpty(code))
            {
                return(Content("您拒绝了授权!"));
            }

            if (state != Session["State"] as string)
            {
                //这里的state其实是会暴露给客户端的,验证能力很弱,这里只是演示一下
                //实际上可以存任何想传递的数据,比如用户ID,并且需要结合例如下面的Session["OAuthAccessToken"]进行验证
                return(Content("验证失败!请从正规途径进入!"));
            }

            //企业号:通过验证,获取access_token
            var accessToken = Senparc.Weixin.QY.CommonAPIs.CommonApi.GetToken(CorpId, CorpSecret);
            if (accessToken.errcode != ReturnCode_QY.请求成功)
            {
                return(Content("错误:" + accessToken.errmsg));
            }
            //下面2个数据也可以自己封装成一个类,储存在数据库中(建议结合缓存)
            //如果可以确保安全,可以将access_token存入用户的cookie中,每一个人的access_token是不一样的
            //Session["OAuthAccessTokenStartTime"] = DateTime.Now;
            //Session["OAuthAccessToken"] = accessToken;

            //因为这里还不确定用户是否关注本微信,所以只能试探性地获取一下
            try
            {
                //已关注,可以得到详细信息
                userInfo             = Senparc.Weixin.QY.AdvancedAPIs.OAuth2Api.GetUserId(accessToken.access_token, code);
                ViewData["ByBase"]   = true;
                ViewData["UserId"]   = userInfo.UserId;
                ViewData["DeviceId"] = userInfo.DeviceId;
                string NickName = MailListApi.GetMember(accessToken.access_token, userInfo.UserId).name;
                Session["NickName"] = NickName;
            }
            catch (ErrorJsonResultException ex)
            {
                //未关注,只能授权,无法得到详细信息
                //这里的 ex.JsonResult 可能为:"{\"errcode\":40003,\"errmsg\":\"invalid openid\"}"
                return(Content("用户已授权,授权Token:" + accessToken.access_token + "ex:" + ex.Message));
            }
            #endregion
            #region
            //获取时间戳
            var timestamp = Senparc.Weixin.QY.Helpers.JSSDKHelper.GetTimestamp();
            //获取随机码
            var    nonceStr = Senparc.Weixin.QY.Helpers.JSSDKHelper.GetNoncestr();
            string ticket   = JsApiTicketContainer.TryGetTicket(CorpId, CorpSecret, false);
            //获取签名
            var signature = Senparc.Weixin.QY.Helpers.JSSDKHelper.GetSignature(ticket, nonceStr, timestamp, Request.Url.AbsoluteUri);
            #endregion
            var jssdkUiPackage = new Senparc.Weixin.QY.Helpers.JsSdkUiPackage(CorpId, timestamp.ToString(), nonceStr, signature);
            return(View(jssdkUiPackage));
        }
Ejemplo n.º 11
0
        public ActionResult GetNewByTicket(string ticket, string clientId)
        {
            if (!VerifyNewParam("ticket", clientId, _signCheckService))
            {
                return(ErrMsg());
            }

            var weChatConfig = GetWechatConfig();
            var t            = EncryptionHelper.DecodeFrom64(ticket);
            var key          = DesHelper.Decrypt(t, CommonService.GetSysConfig("EncryptKey", ""));

            var openid = key.Split('|')[0];

            var strToken = GetToken();
            var userInfo = MailListApi.GetMember(strToken, openid);

            // var userInfo = UserApi.Info(weChatConfig.WeixinAppId, weChatConfig.WeixinCorpSecret, openid);


            //var userView = GetUserInfo((AddressBookMemberView)new AddressBookMemberView().ConvertAPIModel(userInfo));


            if (userInfo != null)
            {
                var strJson = Newtonsoft.Json.JsonConvert.SerializeObject(new
                {
                    message = "",
                    success = true,
                    item    = new
                    {
                        userid = userInfo.userid,
                        name   = userInfo.name,
                        avatar = userInfo.avatar,
                        status = userInfo.status,
                        email  = userInfo.email
                    }
                });

                return(Content(strJson, "application/json"));
            }
            else
            {
                log.Error("用户不存在:ticket:{0} userid:{1}", ticket, openid);

                return(Json(new
                {
                    message = "用户不存在!",
                    success = false
                }, JsonRequestBehavior.AllowGet));
            }
        }
Ejemplo n.º 12
0
        public static GetMemberResult GetMember(string userId, ref string erromsg)
        {
            GetMemberResult result = new GetMemberResult();

            try
            {
                result = MailListApi.GetMember(GetToken(), userId);
            }
            catch (ErrorJsonResultException ex)
            {
                erromsg = WxReturnCodeMessage.GetReturnMessage((int)ex.JsonResult.errcode);
            }
            return(result);
        }
Ejemplo n.º 13
0
        public IActionResult OAuth(string code, string state, string returnUrl)
        {
            if (string.IsNullOrEmpty(code))
            {
                ViewData["Message"] = "code值为空";
                return(View());
            }

            var tokenResult = CommonApi.GetToken(WeixinOptions.CorpId, WeixinOptions.Secret);

            if (!(tokenResult.errcode == Senparc.Weixin.ReturnCode_QY.请求成功))
            {
                ViewData["Message"] = JsonConvert.SerializeObject(tokenResult);
                return(View());
            }

            var userinfoResult = OAuth2Api.GetUserId(tokenResult.access_token, code);

            if (!(userinfoResult.errcode == Senparc.Weixin.ReturnCode_QY.请求成功))
            {
                ViewData["Message"] = JsonConvert.SerializeObject(userinfoResult);
                return(View());
            }

            if (string.IsNullOrEmpty(userinfoResult.UserId))
            {
                ViewData["Message"] = "非企业人员,考勤功能不可用!";
                return(View());
            }

            var memberResult = MailListApi.GetMember(tokenResult.access_token, userinfoResult.UserId);

            if (memberResult.errcode == Senparc.Weixin.ReturnCode_QY.请求成功)
            {
                if (string.IsNullOrEmpty(returnUrl))
                {
                    return(View());
                }
                else
                {
                    AppSessions.SetMember(memberResult);
                    return(RedirectToAction(nameof(Index)));
                }
            }

            return(View());
        }
Ejemplo n.º 14
0
        //public JsonResult GetBatchNotification(RequestMessageEvent_Batch_Job_Result jobResult)
        //{
        //    return Json(doJson(null), JsonRequestBehavior.AllowGet);
        //}

        public override ActionResult Get(string Id)
        {
            string strID = Request["Id"];

            if (!string.IsNullOrEmpty(strID))
            {
                GetMemberResult result = MailListApi.GetMember(GetToken(), Id);

                result.entryDate = !_localservice.Repository.Entities.Where(a => a.LillyID == result.userid).IsEmpty() ?
                                   _localservice.Repository.Entities.Where(a => a.LillyID == result.userid).First().ACTL_HIRE_DT.ToString("yyyy-MM-dd") :
                                   "1900-01-01";

                return(Json(result, JsonRequestBehavior.AllowGet));
            }

            return(Json(null, JsonRequestBehavior.AllowGet));
        }
Ejemplo n.º 15
0
        /// <summary>
        /// 获取成员
        /// </summary>
        /// <param name="_userId"></param>
        /// <returns></returns>
        public static GetMemberResult GetMember(int _userId)
        {
            AccessTokenResult access_token_result = new AccessTokenResult();
            QYConfigInfo      config = GetQYConfig();

            access_token_result = CommonApi.GetToken(config.QYCorpId, config.QYSecret);
            //调用接口
            var result = MailListApi.GetMember(access_token_result.access_token, _userId.ToString());

            if (result.errmsg == "ok")
            {
                return(result);
            }
            else
            {
                return(null);
            }
        }
        /// <summary>
        /// 同步企业号用户
        /// </summary>
        /// <param name="strUserID"></param>
        /// <param name="user"></param>
        /// <param name="config"></param>
        public static void SyncUserFromWechat(string strUserID, ref SysAddressBookMember user, SysWechatConfig config)
        {
            var token     = WeChatCommonService.GetWeiXinToken(config.Id);
            var apiResult = MailListApi.GetMember(token, strUserID);
            IAddressBookService _addressBookServie = EngineContext.Current.Resolve <IAddressBookService>();
            var Nowtime = System.DateTime.Now;

            //没找到用户,直接新建
            if (user == null || user.Id == 0)
            {
                user = new SysAddressBookMember()
                {
                    Avatar          = apiResult.avatar,
                    AccountManageId = config.AccountManageId,
                    // CompanyID = apiResult.
                    Gender         = apiResult.gender,
                    UserId         = apiResult.userid,
                    WeiXinId       = apiResult.weixinid,
                    UserName       = apiResult.name,
                    Status         = 1,
                    Department     = JsonConvert.SerializeObject(apiResult.department),
                    EmployeeStatus = Innocellence.WeChat.Domain.ModelsView.AddressBookMemberView.EmployeeStatusEnum.U.ToString(),
                    Mobile         = apiResult.mobile,
                    Position       = apiResult.position,
                    Email          = apiResult.email,
                    CreateTime     = DateTime.Now,
                    DeleteFlag     = 0,
                    SubscribeTime  = Nowtime
                };

                _addressBookServie.Repository.Insert(user);
            }
            else
            {
                if (apiResult.errcode == ReturnCode_QY.请求成功)
                {
                    user.Avatar = apiResult.avatar;
                }

                user.Status        = 1;
                user.SubscribeTime = Nowtime;
                _addressBookServie.UpdateMember(user);
            }
        }
Ejemplo n.º 17
0
        /// <summary>
        /// 根据Member的主键ID获取Member对象
        /// </summary>
        /// <param name="ID">Menber的主键ID</param>
        /// <returns></returns>
        public static QYMemberBL GetMemberByPKID(string ID)
        {
            QYMemberDA MembertDA   = new QYMemberDA();
            QYMemberBL member      = MembertDA.TableToEntity <QYMemberBL>(MembertDA.GetMemberByPKID(ID)).First();
            var        accessToken = AccessTokenContainer.GetToken(QYConfig.CorpId);
            var        m           = MailListApi.GetMember(accessToken, member.UserId);

            if (m != null)
            {
                if (m.status.ToString() != member.Status)
                {
                    member.Status = m.status.ToString();
                    string errMsg = "";
                    member.UpdateMember("1", ref errMsg);
                }
            }

            return(member);
        }
Ejemplo n.º 18
0
Archivo: WxFO.cs Proyecto: Luyingjin/Qy
        /// <summary>
        /// 获取成员
        /// </summary>
        /// <param name="QyID">企业ID</param>
        /// <param name="userId">员工UserID。必须企业内唯一</param>
        /// <returns></returns>
        public GetMemberResult GetUser(string QyID, string userId)
        {
            GetMemberResult result = null;

            try
            {
                result = MailListApi.GetMember(GetAccessToken(QyID), userId);
            }
            catch (Exception ex)
            {
                LogWriter.Error(ex, string.Format("获取QyID为{0}的成员失败", QyID));
                result = MailListApi.GetMember(GetAccessToken(QyID, true), userId);
            }
            if (result.errcode != ReturnCode_QY.请求成功)
            {
                LogWriter.Info(string.Format("获取QyID为{0}的成员失败,原因:{1}", QyID, result.errmsg));
            }
            return(result);
        }
Ejemplo n.º 19
0
        public ActionResult GetSFUserInfo(string lillyID, string clientID)
        {
            if (!VerifyNewParam("lillyid", clientID, _signCheckService))
            {
                return(ErrMsg());
            }

            var user = MailListApi.GetMember(GetToken(), lillyID);

            if (user != null)
            {
                var strJson = Newtonsoft.Json.JsonConvert.SerializeObject(new
                {
                    message = "",
                    success = true,
                    data    = new
                    {
                        userid = user.userid,
                        name   = user.name,
                        avatar = user.avatar,
                        status = user.status,
                        email  = user.email
                    }
                });

                return(Content(strJson, "application/json"));
            }
            else
            {
                var strJson = Newtonsoft.Json.JsonConvert.SerializeObject(new
                {
                    message = "",
                    success = false,
                    data    = new
                    {
                    }
                });

                return(Content(strJson, "application/json"));
            }
        }
Ejemplo n.º 20
0
        /// <summary>
        /// 扫码推事件(显示消息接受中)
        /// </summary>
        /// <param name="requestMessage"></param>
        /// <returns></returns>
        public override IResponseMessageBase OnEvent_ScancodeWaitmsgRequest(RequestMessageEvent_Scancode_Waitmsg requestMessage)
        {
            QueryFromWebService qf = new QueryFromWebService();
            var    responseMessage = this.CreateResponseMessage <ResponseMessageText>();
            string barCode         = requestMessage.ScanCodeInfo.ScanResult;
            string eventKey        = requestMessage.EventKey;
            string result          = "";

            switch (eventKey)
            {
            case "saoFangHu":
            {
                result = qf.QueryContractFromFangHu(barCode, requestMessage.FromUserName);
            }
            break;
            }
            var    accessToken = AccessTokenContainer.TryGetToken(CorpId, CorpSecret);
            string NickName    = MailListApi.GetMember(accessToken, responseMessage.ToUserName).name;

            responseMessage.Content = NickName + "您好!\r\n查询结果是:\r\n" + result;
            return(responseMessage);
        }
Ejemplo n.º 21
0
        public Member GetMemberInfo(string accessToken, string userId)
        {
            var result = MailListApi.GetMember(accessToken, userId);

            if (result.errcode != ReturnCode_QY.请求成功)
            {
                throw new Exception(result.errcode.ToString());
            }

            var x = result;

            return(new Member(x.userid, x.name, x.weixinid)
            {
                Department = new List <int>(x.department),
                Position = x.position,
                Gender = x.gender,
                Mobile = x.mobile,
                Email = x.email,
                Status = x.status,
                Avatar = x.avatar,
                Enable = x.status == 2 ? 0 : 1
            });
        }
Ejemplo n.º 22
0
        public IActionResult GetOpenId(string id)
        {
            if (string.IsNullOrWhiteSpace(id))
            {
                id = "/";
            }
#if DEBUG
            return(Redirect($"/#/wxhub/{WebUtility.UrlEncode("黄继业")}/{WebUtility.UrlEncode("13907741118")}/{false}/{0}/{WebUtility.UrlEncode(id)}"));
#else
            if (!string.IsNullOrWhiteSpace(UserName) &&
                !string.IsNullOrWhiteSpace(UserId) &&
                !string.IsNullOrWhiteSpace(IsAdmin) &&
                !string.IsNullOrWhiteSpace(IsLeader))
            {
                return(Redirect($"/#/wxhub/{WebUtility.UrlEncode(UserName)}/{WebUtility.UrlEncode(UserId)}/{IsAdmin}/{IsLeader}/{WebUtility.UrlEncode(id)}"));
            }

            var state = Request.Query["state"];
            if (state != "car0774")
            {
                return(Redirect(OAuth2Api.GetCode(option.CorpId, "https://" + Request.Host + Request.Path + Request.QueryString, "car0774", "")));
            }
            else
            {
                option.AccessToken = AccessTokenContainer.TryGetToken(this.option.CorpId, this.option.Secret);
                var code     = Request.Query["code"];
                var at       = OAuth2Api.GetUserId(option.AccessToken, code);
                var userinfo = MailListApi.GetMember(option.AccessToken, at.UserId);
                UserName = userinfo.name;
                UserId   = at.UserId;
                IsAdmin  = userinfo.department.Contains(7).ToString();
                IsLeader = userinfo.isleader.ToString();
                //超级管理员的部门id为7
                return(Redirect($"/#/wxhub/{WebUtility.UrlEncode(userinfo.name)}/{WebUtility.UrlEncode(at.UserId)}/{userinfo.department.Contains(7)}/{userinfo.isleader}/{WebUtility.UrlEncode(id)}"));
            }
#endif
        }
Ejemplo n.º 23
0
        /// <summary>
        /// 文本消息接收事件
        /// </summary>
        /// <param name="requestMessage"></param>
        /// <returns></returns>
        public override IResponseMessageBase OnTextRequest(RequestMessageText requestMessage)
        {
            string result          = "";
            var    accessToken     = AccessTokenContainer.TryGetToken(CorpId, CorpSecret);
            string NickName        = MailListApi.GetMember(accessToken, requestMessage.FromUserName).name;
            var    responseMessage = this.CreateResponseMessage <ResponseMessageText>();

            if (requestMessage.Content == null)
            {
            }
            else if (requestMessage.Content.ToLower().StartsWith("xlh"))//判断用户输入的内容初始是否含有xlh字段
            {
                result = "您好!\r\n查询结果是:\r\n设备A\r\n信息:AAAAAAAAAAAAAAAAAAAAA";
                //string barCode = requestMessage.Content.Substring(3);//截取用户输入的文本内容
                //QueryFromWebService qf = new QueryFromWebService();//调用WebService获取查询内容
                //result = qf.QueryContractFromFangHu(barCode, requestMessage.FromUserName);
            }
            else if (requestMessage.Content == "1")
            {
                result = NickName + "您好!\r\n【扫防护码】:如过您想要扫描防护设备上的二维码,请点击下方菜单的【扫防护码】按钮获取防护设备的详细信息。";
            }
            else if (requestMessage.Content == "2")
            {
                result = NickName + "您好!\r\n【扫防化码】:如过您想要扫描防化设备上的二维码,请点击下方菜单的【扫防化码】按钮获取防化设备的详细信息。";
            }
            else if (requestMessage.Content == "3")
            {
                result = NickName + "您好!\r\n【查序列号】:如过您想要输入序列号来查询设备或合同的信息,请点击下方菜单的【查序列号】按钮获取相应提示。";
            }
            else
            {
                result = NickName + ",您好!\r\n不能识别您发送的消息,如需帮助请退出此应用返回上一层联系在线客服!";
            }
            responseMessage.Content = result;
            return(responseMessage);
        }
        public bool SendMail(int id, string question, string jsonString, string request, string baseUrl, string title)
        {
            //获取收件人信息
            var receiver  = string.Empty; //For local Testing "*****@*****.**"
            var objConfig = WeChatCommonService.GetWeChatConfigByID(AppId);

            string strToken = AccessTokenContainer.TryGetToken(objConfig.WeixinCorpId, objConfig.WeixinCorpSecret);
            var    mobile   = string.Empty;

#if !DEBUG
            var obj = MailListApi.GetMember(strToken, ViewBag.WeChatUserID);
            if (obj != null)
            {
                receiver = obj.email;
            }
            else
            {
                receiver = "";
            }
#endif
            var EmailReceiver  = "";
            var EmailEnableSsl = false;
            var EmailHost      = "";
            var EmailPassword  = "";
            var EmailUserName  = "";
            var EmailPort      = "";
            var EmailSender    = "";
            var EmailEnable    = true;
            var EmailTitle     = "";
            var EmailTemplate  = "";

            object jsonResult = null;

            LogManager.GetLogger(this.GetType()).Debug("request" + request);
            JavaScriptSerializer js = new JavaScriptSerializer();
            jsonResult = js.Deserialize <object>(jsonString);
            var fullResult = jsonResult as Dictionary <string, object>;

            if (fullResult != null)
            {
                EmailReceiver  = fullResult["EmailReceiver"] as string;
                EmailEnableSsl = bool.Parse(fullResult["EmailEnableSsl"].ToString());
                EmailHost      = fullResult["EmailHost"] as string;
                EmailPassword  = fullResult["EmailPassword"] as string;
                EmailUserName  = fullResult["EmailUserName"] as string;
                EmailPort      = fullResult["EmailPort"] as string;
                EmailSender    = fullResult["EmailSender"] as string;
                EmailEnable    = bool.Parse(fullResult["EmailEnable"].ToString());
                EmailTitle     = fullResult["EmailTitle"] as string;
                EmailTemplate  = fullResult["EmailTemplate"] as string;
            }

            if (!string.IsNullOrEmpty(EmailTitle))
            {
                //特殊处理EmailTitle
                if (!string.IsNullOrEmpty(title))
                {
                    EmailTitle = string.Format("{0} ({1},{2})", EmailTitle, ViewBag.WeChatUserID, DateTime.Now.ToShortDateString());
                }
                EmailTitle = EmailTitle.Replace("\r", "").Replace("\n", "");
            }
            List <QuestionImagesView> lst = _objImageService.GetListByQuestionID <QuestionImagesView>(id);
            var attachlink = "";

            if (lst != null || lst.Count > 0)
            {
                foreach (var attach in lst)
                {
                    attachlink = string.Format("{0}<a href=\"{1}\">{2}</a>\n", attachlink, string.Format("{0}Common/QuestionFile?id={1}&filename={2}", baseUrl, attach.Id, attach.ImageName), attach.ImageName);
                }
            }

            var userModel = _objUserService.GetByWeChatUserID(ViewBag.WeChatUserID);
            if (userModel != null)
            {
                mobile = userModel.Tel;
            }

            var EmailContent = EmailTemplate.Replace("#Url#", request).Replace("#Question#", question).
                               Replace("#WeChatUserID#", ViewBag.WeChatUserID).Replace("#Email#", receiver).Replace("#Contact#", mobile)
                               .Replace("#Attachment#", attachlink);

            EmailMessageSettingsRecord set = new EmailMessageSettingsRecord()
            {
                Host               = EmailHost,
                UserName           = EmailUserName,
                Password           = EmailPassword,
                Port               = int.Parse(EmailPort),
                EnableSsl          = EmailEnableSsl,
                Enable             = EmailEnable,
                DeliveryMethod     = "Network",
                Address            = EmailSender,
                RequireCredentials = true
            };

            Task.Run(() =>
            {
                EmailMessageService ser = new EmailMessageService(set);
                ser.SendMessage(EmailSender, EmailReceiver, EmailTitle,
                                EmailContent.Replace("\r\n", "<br/>").Replace("\n", "<br/>").Replace("\r", "<br/>"));
            });

            return(true);
        }
Ejemplo n.º 25
0
        public bool SendMail(int id, string question, string jsonString, string request, string baseUrl, string title)
        {
            //获取收件人信息
            string strToken = WeChatCommonService.GetWeiXinToken(AppId);
            var    mobile   = string.Empty;

            var    obj      = MailListApi.GetMember(strToken, ViewBag.LillyId);
            string receiver = obj != null ? obj.email : "";

            var EmailReceiver  = "";
            var EmailEnableSsl = false;
            var EmailHost      = "";
            var EmailPassword  = "";
            var EmailUserName  = "";
            var EmailPort      = "";
            var EmailSender    = "";
            var EmailEnable    = true;
            var EmailTitle     = "";
            var EmailTemplate  = "";

            object jsonResult = null;

            LogManager.GetLogger(this.GetType()).Debug("request" + request);
            var js = new JavaScriptSerializer();

            jsonResult = js.Deserialize <object>(jsonString);
            var fullResult = jsonResult as Dictionary <string, object>;

            if (fullResult != null)
            {
                EmailReceiver  = fullResult["EmailReceiver"] as string;
                EmailEnableSsl = bool.Parse(fullResult["EmailEnableSsl"].ToString());
                EmailHost      = fullResult["EmailHost"] as string;
                EmailPassword  = fullResult["EmailPassword"] as string;
                EmailUserName  = fullResult["EmailUserName"] as string;
                EmailPort      = fullResult["EmailPort"] as string;
                EmailSender    = fullResult["EmailSender"] as string;
                EmailEnable    = bool.Parse(fullResult["EmailEnable"].ToString());
                EmailTitle     = fullResult["EmailTitle"] as string;
                EmailTemplate  = fullResult["EmailTemplate"] as string;
            }

            if (!string.IsNullOrEmpty(EmailTitle))
            {
                //特殊处理EmailTitle
                if (!string.IsNullOrEmpty(title))
                {
                    EmailTitle = string.Format("{0} ({1},{2})", EmailTitle, ViewBag.LillyId, DateTime.Now.ToShortDateString());
                }
                EmailTitle = EmailTitle.Replace("\r", "").Replace("\n", "");
            }

            List <QuestionImagesView> lst = _objImageService.GetListByQuestionID <QuestionImagesView>(id);
            var attachlink = "";

            if (lst != null)
            {
                attachlink = lst.Aggregate(attachlink, (current, attach) => string.Format("{0}<a href=\"{1}\">{2}</a>\n", current, string.Format("{0}Common/QuestionFile?id={1}&filename={2}", baseUrl, attach.Id, attach.ImageName), attach.ImageName));
            }

            var userModel = _objUserService.GetBylillyId(ViewBag.LillyId);

            if (userModel != null)
            {
                mobile = userModel.Tel;
            }

            var emailContent = EmailTemplate.Replace("#Url#", request).Replace("#Question#", question).
                               Replace("#LillyId#", ViewBag.LillyId).Replace("#Email#", receiver).Replace("#Contact#", mobile)
                               .Replace("#Attachment#", attachlink);

            var set = new EmailMessageSettingsRecord()
            {
                Host               = EmailHost,
                UserName           = EmailUserName,
                Password           = EmailPassword,
                Port               = int.Parse(EmailPort),
                EnableSsl          = EmailEnableSsl,
                Enable             = EmailEnable,
                DeliveryMethod     = "Network",
                Address            = EmailSender,
                RequireCredentials = true
            };

            Task.Run(() =>
            {
                var ser = new EmailMessageService(set);
                ser.SendMessage(EmailSender, EmailReceiver, EmailTitle,
                                emailContent.Replace("\r\n", "<br/>").Replace("\n", "<br/>").Replace("\r", "<br/>"));
            });

            return(true);
        }
Ejemplo n.º 26
0
        /// <summary>
        /// 根据ticket获得员工信息
        /// </summary>
        /// <param name="ticket"></param>
        /// <returns></returns>
        public ActionResult GetByTicket(string ticket)
        {
            if (!VerifyParam("ticket"))
            {
                return(ErrMsg());
            }

            var weChatConfig = GetWechatConfig();
            var t            = EncryptionHelper.DecodeFrom64(ticket);
            var key          = DesHelper.Decrypt(t, CommonService.GetSysConfig("EncryptKey", ""));

            var openid = key.Split('|')[0];

            var strToken = GetToken();
            var userInfo = MailListApi.GetMember(strToken, openid);

            // var userInfo = UserApi.Info(weChatConfig.WeixinAppId, weChatConfig.WeixinCorpSecret, openid);


            //var userView = GetUserInfo((AddressBookMemberView)new AddressBookMemberView().ConvertAPIModel(userInfo));


            if (userInfo != null)
            {
                var strJson = Newtonsoft.Json.JsonConvert.SerializeObject(new
                {
                    message = "",
                    success = true,
                    item    = new
                    {
                        userid = userInfo.userid,
                        name   = userInfo.name,
                        avatar = userInfo.avatar,
                        status = userInfo.status,
                        email  = userInfo.email
                    }
                });

                return(Content(strJson, "application/json"));

                //return Json(new
                //{
                //    message = "",

                //    success = true,
                //    item= userView
                //    //item = new
                //    //{
                //    //    id = userInfo.Id,
                //    //    teamId = userInfo.AccountManageId,
                //    //    userId = userInfo.UserId,
                //    //    name = userInfo.UserName,
                //    //    position = userInfo.Position,
                //    //    mobile = userInfo.Mobile,
                //    //    gender = userInfo.Gender,
                //    //    avatar = userInfo.Avatar,
                //    //    extend1 = "",
                //    //    // telephone = userInfo.te,
                //    //    email = userInfo.Email,
                //    //    wxid = userInfo.WeiXinId,
                //    //    hrcode = userInfo.EmployeeNo,
                //    //    status = userInfo.Status,
                //    //    createTime = userInfo.CreateTime
                //    //},

                //}, JsonRequestBehavior.AllowGet);
            }
            else
            {
                log.Error("用户不存在:ticket:{0} userid:{1}", ticket, openid);

                return(Json(new
                {
                    message = "用户不存在!",
                    success = false
                }, JsonRequestBehavior.AllowGet));
            }
        }
Ejemplo n.º 27
0
        /// <summary>
        /// 根据userId获取用户信息
        /// </summary>
        /// <param name="userId"></param>
        /// <returns></returns>
        public ActionResult GetByUserId(string userId)
        {
            if (!VerifyParam("userId"))
            {
                return(ErrMsg());
            }

            var result = new Innocellence.Interface.ViewModel.AccessJsonView();

            var strToken = GetToken();
            var user     = MailListApi.GetMember(strToken, userId);

            if (user == null)
            {
                log.Error("用户不存在: userid:{0}", userId);

                result.success = false;
                result.message = "用户不存在!";
            }
            else
            {
                //TODO, DB中现在没有的字段暂时赋为空置
                result.success = true;

                //var userView = GetUserInfo((AddressBookMemberView)new AddressBookMemberView().ConvertAPIModel(user));

                //var userView = new AccessUserInfoView();
                //userView.Id = user.Id;
                //userView.position = user.Position;
                //userView.createTime = DateTimeHelper.GetWeixinDateTime(user.CreateTime.Value);
                //userView.birthday = "";
                //userView.contactNumber = user.Mobile; // TODO: 还有个属性Mobile
                //userView.wxid = user.WeiXinId;
                ////userView.departmentList
                //// TODO: 如何将string 类型的user.Department转化为List类型

                //userView.cityName = "";
                //userView.registerAddress = "";
                //userView.teamId = user.AccountManageId;
                //userView.city = "";
                //userView.contactSignTime = "";
                //userView.trainingAgreement = "";
                //userView.name = "";
                //userView.userId = user.UserId;
                //userView.gender = user.Gender.ToString();
                //userView.major = "";
                //userView.university = "";
                //userView.citizenshipNumber = "";
                //userView.status = user.Status;
                //userView.avatar = user.Avatar;
                //userView.englishName = "";
                //userView.confidentialityAgreement = "";
                //userView.degree = "";
                //userView.email = user.Email;
                //userView.address = "";
                //// TODO tag list
                ////userView.tagList = null


                //userView.publicAvatarPath = user.Avatar;
                //userView.hrcode = user.EmployeeNo;
                //userView.mobile = user.Mobile;

                result.item = user;
            }

            var strJson = Newtonsoft.Json.JsonConvert.SerializeObject(result);

            return(Content(strJson, "application/json"));

            //  return Json(result, JsonRequestBehavior.AllowGet);
        }
Ejemplo n.º 28
0
        //public  SysWechatConfig GetAppSysWechatConfig(string appId) {
        //     return lstSysWeChatConfig.Find(a => a.WeixinAppId == appId);

        //}

        public List <PersonGroup> GetAllPersonAndGroup(string appId, int accountManageId)
        {
            var             id      = int.Parse(appId);
            SysWechatConfig appInfo = null;

            if (id == 0)
            {
                appInfo = lstSysWeChatConfig.FirstOrDefault(a => a.AccountManageId == accountManageId);
            }
            else
            {
                appInfo = lstSysWeChatConfig.SingleOrDefault(a => a.Id == id && a.AccountManageId == accountManageId);
            }
            string token   = (appInfo.IsCorp != null && !appInfo.IsCorp.Value) ? Innocellence.Weixin.MP.CommonAPIs.AccessTokenContainer.GetToken(appInfo.WeixinCorpId, appInfo.WeixinCorpSecret) : Innocellence.Weixin.QY.CommonAPIs.AccessTokenContainer.TryGetToken(appInfo.WeixinCorpId, appInfo.WeixinCorpSecret);
            var    results = AppApi.GetAppInfo(token, int.Parse(appInfo.WeixinAppId));

            List <PersonGroup> list = new List <PersonGroup>();

            if (results.allow_userinfos != null)
            {
                foreach (var person in results.allow_userinfos.user)
                {
                    PersonGroup personGroup = new PersonGroup();

                    personGroup.Type = "Person";

                    var p = MailListApi.GetMember(token, person.userid);
                    personGroup.WeixinName = p.name;
                    personGroup.WeixinId   = p.userid;
                    personGroup.Avatar     = p.avatar;
                    list.Add(personGroup);
                }
            }

            if (results.allow_partys != null)
            {
                foreach (var groupId in results.allow_partys.partyid)
                {
                    PersonGroup personGroup = new PersonGroup();

                    personGroup.Type = "Group";

                    var d = MailListApi.GetDepartmentList(token, groupId).department.FirstOrDefault();
                    if (d != null)
                    {
                        personGroup.WeixinName = d.name;
                        personGroup.WeixinId   = d.id.ToString();
                        list.Add(personGroup);
                    }
                }
            }

            if (results.allow_tags != null)
            {
                var allTagList = MailListApi.GetTagList(token).taglist;
                foreach (var groupId in results.allow_tags.tagid)
                //foreach (var tag in allTagList)
                {
                    PersonGroup personGroup = new PersonGroup();

                    personGroup.Type = "Tag";

                    var tag = allTagList.Find(a => a.tagid == groupId.ToString());
                    if (tag != null)
                    {
                        personGroup.WeixinName = tag.tagname;
                        personGroup.WeixinId   = tag.tagid;
                        list.Add(personGroup);
                    }
                }
            }
            return(list);
        }
Ejemplo n.º 29
0
        /// <summary>
        /// 获取成员
        /// </summary>
        /// <param name="accessTokenOrAppKey">调用接口凭证(AccessToken)或AppKey(根据AccessTokenContainer.BuildingKey(corpId, corpSecret)方法获得)</param>
        /// <param name="userId">员工UserID</param>
        /// <returns></returns>
        public static MemberResult GetMember(string accessTokenOrAppKey, string userId)
        {
            var result = MailListApi.GetMember(accessTokenOrAppKey, userId);

            return(result.ToMemberResult());
        }
Ejemplo n.º 30
0
        public ActionResult UploadUser()
        {
            try
            {
                //同步部门
                GetDepartmentListResult result = MailListApi.GetDepartmentList(WeixinWorkService.GetToken());
                var departments = dbContext.SysDepartment.OrderByDescending(c => c.DepartmentName).ToList();
                foreach (var item in departments)
                {
                    if (item.DepartmentId == Guid.Parse("2379788E-45F0-417B-A103-0B6440A9D55D"))
                    {
                        continue;
                    }

                    var            parentId = Convert.ToInt64(departments.Where(c => c.DepartmentId == item.ParentId).FirstOrDefault().WeixinWorkId);
                    DepartmentList qyDep    = result.department.Where(c => c.id == item.WeixinWorkId).FirstOrDefault();
                    if (qyDep == null)
                    {
                        var createResult = MailListApi.CreateDepartment(WeixinWorkService.GetToken(), item.DepartmentName, parentId == 0 ? 1 : parentId, 1000 - (item.OrderNo.HasValue ? item.OrderNo.Value : 0));
                        item.WeixinWorkId = createResult.id;
                    }
                    else
                    {
                        MailListApi.UpdateDepartment(WeixinWorkService.GetToken(), qyDep.id, item.DepartmentName, parentId == 0 ? 1 : parentId, 1000 - (item.OrderNo.HasValue ? item.OrderNo.Value : 0));
                    }
                    dbContext.SaveChanges();
                }
                //同步用户
                var users = dbContext.SysUser.Where(c => c.UserCode != "admin").ToList();
                foreach (var userItem in users)
                {
                    long[] longArr = new long[1];
                    longArr[0] = Convert.ToInt64(dbContext.SysDepartment.Where(c => c.DepartmentId == userItem.DepartmentId).FirstOrDefault().WeixinWorkId);
                    try
                    {
                        var memberResult = MailListApi.GetMember(WeixinWorkService.GetToken(), userItem.UserCode);
                        if (memberResult.errcode == Senparc.Weixin.ReturnCode_Work.UserID不存在)
                        {
                            MemberCreateRequest request = new MemberCreateRequest();
                            request.email      = userItem.Email;
                            request.department = longArr;
                            request.enable     = 1;
                            request.mobile     = userItem.Mobile;
                            request.name       = userItem.UserName;
                            request.userid     = userItem.UserCode;
                            MailListApi.CreateMember(WeixinWorkService.GetToken(), request);
                        }
                        else
                        {
                            MemberUpdateRequest updateRequest = new MemberUpdateRequest();
                            updateRequest.department = longArr;
                            updateRequest.email      = userItem.Email;
                            updateRequest.enable     = 1;
                            updateRequest.mobile     = userItem.Mobile;
                            updateRequest.name       = userItem.UserName;
                            updateRequest.userid     = userItem.UserCode;
                            MailListApi.UpdateMember(WeixinWorkService.GetToken(), updateRequest);
                        }
                    }
                    catch { }
                }
                return(Json(new { Code = 0, Msg = "同步成功!" }));
            }
            catch (Exception ex)
            {
                LogHelper.SaveLog(ex);
                return(Json(new { Code = 1, Msg = "服务器异常,请联系管理员!" }));
            }
        }