/// <summary>
        /// 修改密码
        /// </summary>
        /// <param name="context"></param>
        /// <param name="xmlDoc"></param>
        /// <param name="sResponse"></param>
        private void EditAccountPwd(HttpContext context, XmlDocument xmlDoc, ServiceResponse sResponse)
        {
            XmlNode xnKey       = xmlDoc.SelectSingleNode("request/appkey");
            XmlNode xnAccountId = xmlDoc.SelectSingleNode("request/accountid");
            XmlNode xnOldPwd    = xmlDoc.SelectSingleNode("request/oldpwd");
            XmlNode xnNewPwd    = xmlDoc.SelectSingleNode("request/newpwd");


            USER_SHARE_PROJECTMODEL projectModel = ProjectBusiness.GetProjectModelByKey(xnKey.InnerText.Trim());

            if (projectModel == null)
            {
                sResponse.ErrorType = ShareEnum.ApiResultStatus.KeyErr;
                sResponse.ErrorDesc = "不存在的密钥KEY";
                return;
            }

            else
            {
                //oldpwd参数验证
                if (xnOldPwd == null || xnOldPwd.InnerText.Trim().Length == 0)
                {
                    sResponse.ErrorType = ShareEnum.ApiResultStatus.InputParaErr;
                    sResponse.ErrorDesc = "缺少传入参数oldpwd";
                    return;
                }

                //newpwd参数验证
                if (xnNewPwd == null || xnNewPwd.InnerText.Trim().Length == 0)
                {
                    sResponse.ErrorType = ShareEnum.ApiResultStatus.InputParaErr;
                    sResponse.ErrorDesc = "缺少传入参数oldpwd";
                    return;
                }

                //账号Id
                int nAccountId = ValidatorHelper.ToInt(xnAccountId.InnerText.Trim(), 0);

                //accountid参数验证
                if (xnAccountId == null || nAccountId <= 0)
                {
                    sResponse.ErrorType = ShareEnum.ApiResultStatus.InputParaErr;
                    sResponse.ErrorDesc = "缺少传入参数accountid";
                    return;
                }

                string strAppKey = xnKey.InnerText.Trim();

                string strPwd = xnNewPwd.InnerText.Trim();


                USER_SHARE_ACCOUNTMODEL accountModel = AccountBusiness.GetAccountModel(nAccountId);
                if (accountModel == null || accountModel.ACCOUNTPWD != xnOldPwd.InnerText.Trim())
                {
                    sResponse.ErrorType = ShareEnum.ApiResultStatus.OldPassUnCorrect;
                    sResponse.ErrorDesc = "旧密码不正确";
                    return;
                }

                USER_SHARE_COMPANYRELATEMODEL companyModel = CompanyBusiness.GetModel(accountModel.COMPANYID);
                if (companyModel == null)
                {
                    sResponse.ErrorType = ShareEnum.ApiResultStatus.CompanyNotMatchAccount;
                    sResponse.ErrorDesc = "公司信息和账号信息不匹配";
                    return;
                }

                //得到原始密码
                string strOrignalPwd = Enc.Decrypt(strPwd, companyModel.COMPANYCODE.ToString().PadLeft(8, '0'));

                //更新账号密码
                if (!AccountBusiness.UpdatePwd(accountModel.ACCOUNTID, strPwd, strOrignalPwd))
                {
                    sResponse.ErrorType = ShareEnum.ApiResultStatus.ExceptionErr;
                    sResponse.ErrorDesc = "更改密码时出现并发错误,请重试!";
                    return;
                }
            }
        }
        /// <summary>
        /// 新开通账号
        /// </summary>
        /// <param name="context"></param>
        /// <param name="xmlDoc"></param>
        /// <param name="sResponse"></param>
        private void AddAccount(HttpContext context, XmlDocument xmlDoc, ServiceResponse sResponse)
        {
            XmlNode xnKey         = xmlDoc.SelectSingleNode("request/appkey");
            XmlNode xnCompanyCode = xmlDoc.SelectSingleNode("request/companycode");
            XmlNode xnAccountName = xmlDoc.SelectSingleNode("request/accountname");
            XmlNode xnAccountPwd  = xmlDoc.SelectSingleNode("request/accountpwd");
            XmlNode xnRealName    = xmlDoc.SelectSingleNode("request/realname");
            XmlNode xnEmail       = xmlDoc.SelectSingleNode("request/email");
            XmlNode xnCreatorId   = xmlDoc.SelectSingleNode("request/creatorid");

            USER_SHARE_PROJECTMODEL projectModel = null;

            //appkey参数验证
            if (xnKey.InnerText.Trim().Length > 0)
            {
                projectModel = ProjectBusiness.GetProjectModelByKey(xnKey.InnerText.Trim());
                if (projectModel == null)
                {
                    sResponse.ErrorType = ShareEnum.ApiResultStatus.KeyErr;
                    sResponse.ErrorDesc = "不存在的密钥KEY";
                    context.Response.Write(sResponse.GetXML());
                    return;
                }
                else
                {
                    //companycode参数验证
                    if (xnCompanyCode == null || xnCompanyCode.InnerText.Trim().Length == 0)
                    {
                        sResponse.ErrorType = ShareEnum.ApiResultStatus.InputParaErr;
                        sResponse.ErrorDesc = "缺少传入参数companycode";
                        return;
                    }

                    if (!CompanyBusiness.IsCompanyCodeExists(xnCompanyCode.InnerText.Trim()))
                    {
                        sResponse.ErrorType = ShareEnum.ApiResultStatus.UnValidCompanyCode;
                        sResponse.ErrorDesc = "不存在的公司编码信息";
                        return;
                    }

                    //accountpwd参数验证
                    if (xnAccountPwd == null || xnAccountPwd.InnerText.Trim().Length == 0)
                    {
                        sResponse.ErrorType = ShareEnum.ApiResultStatus.InputParaErr;
                        sResponse.ErrorDesc = "缺少传入参数accountpwd";
                        return;
                    }

                    //accountname参数验证
                    if (xnAccountName == null || xnAccountName.InnerText.Trim().Length == 0)
                    {
                        sResponse.ErrorType = ShareEnum.ApiResultStatus.InputParaErr;
                        sResponse.ErrorDesc = "缺少传入参数accountname";
                        return;
                    }

                    //判断账号是否重复
                    USER_SHARE_ACCOUNTMODEL accountModel = AccountBusiness.GetAccountModel(xnAccountName.InnerText.Trim(), xnCompanyCode.InnerText.Trim());
                    if (accountModel != null)
                    {
                        sResponse.ErrorType = ShareEnum.ApiResultStatus.AccountNameExists;
                        sResponse.ErrorDesc = "已经存在此账号,请确认!";
                        return;
                    }

                    //realname参数验证
                    if (xnRealName == null || xnRealName.InnerText.Trim().Length == 0)
                    {
                        sResponse.ErrorType = ShareEnum.ApiResultStatus.InputParaErr;
                        sResponse.ErrorDesc = "缺少传入参数realname";
                        return;
                    }

                    //email参数验证
                    if (xnEmail == null || xnEmail.InnerText.Trim().Length == 0)
                    {
                        sResponse.ErrorType = ShareEnum.ApiResultStatus.InputParaErr;
                        sResponse.ErrorDesc = "缺少传入参数email";
                        return;
                    }

                    //creatorid参数验证
                    if (xnCreatorId == null || xnCreatorId.InnerText.Trim().Length == 0 || ValidatorHelper.ToInt(xnCreatorId.InnerText.Trim(), 0) == 0)
                    {
                        sResponse.ErrorType = ShareEnum.ApiResultStatus.InputParaErr;
                        sResponse.ErrorDesc = "缺少传入参数creatorid";
                        return;
                    }

                    //账号信息
                    accountModel             = new USER_SHARE_ACCOUNTMODEL();
                    accountModel.ACCOUNTID   = CommonBusiness.GetSeqID("S_USER_SHARE_ACCOUNT");
                    accountModel.ACCOUNTNAME = xnAccountName.InnerText.Trim();
                    accountModel.ACCOUNTPWD  = xnAccountPwd.InnerText.Trim();
                    accountModel.COMPANYID   = Convert.ToInt32(xnCompanyCode.InnerText.Trim());
                    accountModel.ORIGNALPWD  = Enc.Decrypt(accountModel.ACCOUNTPWD, accountModel.COMPANYID.ToString().PadLeft(8, '0'));
                    accountModel.CREATEDATE  = DateTime.Now;
                    accountModel.REALNAME    = xnRealName.InnerText.Trim();
                    accountModel.EMAIL       = xnEmail.InnerText.Trim();
                    accountModel.STATUS      = int.Parse(ShareEnum.AccountStatus.Normal.ToString("d"));
                    accountModel.ISADMIN     = 0;
                    accountModel.CREATORID   = Convert.ToInt32(xnCreatorId.InnerText.Trim());

                    //日志信息
                    USER_SHARE_LOGMODEL logModel = new USER_SHARE_LOGMODEL();
                    logModel.LOGID          = CommonBusiness.GetSeqID("S_USER_SHARE_LOG");
                    logModel.OPERATEDATE    = DateTime.Now;
                    logModel.OPERATORID     = accountModel.CREATORID;
                    logModel.PROJECTID      = projectModel.PROJECTID;
                    logModel.COMPANYID      = accountModel.COMPANYID;
                    logModel.OPERATETYPE    = int.Parse(ShareEnum.LogType.AddAccount.ToString("d"));
                    logModel.OPERATECONTENT = string.Format("通过接口新增账号信息,账号名称:{0},公司ID:{1} ", xnAccountName.InnerText.Trim(), accountModel.COMPANYID);

                    if (AccountBusiness.AddAccount(accountModel, logModel))
                    {
                        sResponse.Result = string.Format("<accountid>{0}</accountid>", accountModel.ACCOUNTID);
                    }
                }
            }
        }
        /// <summary>
        /// 账号登陆
        /// </summary>
        /// <param name="context"></param>
        /// <param name="xmlDoc"></param>
        /// <param name="sResponse"></param>
        private void AccountLogin(HttpContext context, XmlDocument xmlDoc, ServiceResponse sResponse)
        {
            XmlNode xnKey         = xmlDoc.SelectSingleNode("request/appkey");
            XmlNode xnCompanyCode = xmlDoc.SelectSingleNode("request/companycode");
            XmlNode xnAccountName = xmlDoc.SelectSingleNode("request/accountname");
            XmlNode xnAccountPwd  = xmlDoc.SelectSingleNode("request/accountpwd");

            USER_SHARE_PROJECTMODEL projectModel = null;

            //appkey参数验证
            if (xnKey.InnerText.Trim().Length > 0)
            {
                projectModel = ProjectBusiness.GetProjectModelByKey(xnKey.InnerText.Trim());
                if (projectModel == null)
                {
                    sResponse.ErrorType = ShareEnum.ApiResultStatus.KeyErr;
                    sResponse.ErrorDesc = "不存在的密钥KEY";
                    context.Response.Write(sResponse.GetXML());
                    return;
                }
                else
                {
                    //companycode参数验证
                    if (xnCompanyCode == null || xnCompanyCode.InnerText.Trim().Length == 0)
                    {
                        sResponse.ErrorType = ShareEnum.ApiResultStatus.InputParaErr;
                        sResponse.ErrorDesc = "缺少传入参数companycode";
                        return;
                    }

                    if (!CompanyBusiness.IsCompanyCodeExists(xnCompanyCode.InnerText.Trim()))
                    {
                        sResponse.ErrorType = ShareEnum.ApiResultStatus.UnValidCompanyCode;
                        sResponse.ErrorDesc = "不存在的公司编码信息";
                        return;
                    }

                    //accountpwd参数验证
                    if (xnAccountPwd == null || xnAccountPwd.InnerText.Trim().Length == 0)
                    {
                        sResponse.ErrorType = ShareEnum.ApiResultStatus.InputParaErr;
                        sResponse.ErrorDesc = "缺少传入参数accountpwd";
                        return;
                    }

                    //accountname参数验证
                    if (xnAccountName == null || xnAccountName.InnerText.Trim().Length == 0)
                    {
                        sResponse.ErrorType = ShareEnum.ApiResultStatus.InputParaErr;
                        sResponse.ErrorDesc = "缺少传入参数accountname";
                        return;
                    }

                    string strAppKey      = xnKey.InnerText.Trim();
                    string strCompanyCode = xnCompanyCode.InnerText.Trim();
                    string strAccountName = xnAccountName.InnerText.Trim();

                    string strPwd = xnAccountPwd.InnerText.Trim();

                    USER_SHARE_ACCOUNTMODEL accountModel = AccountBusiness.GetAccountModel(strCompanyCode, strAccountName, strPwd);

                    if (accountModel == null)
                    {
                        sResponse.ErrorType = ShareEnum.ApiResultStatus.UnValidUser;
                        sResponse.ErrorDesc = "用户名和密码不匹配";
                        return;
                    }
                    if (accountModel.STATUS != int.Parse(ShareEnum.AccountStatus.Normal.ToString("d")))
                    {
                        sResponse.ErrorType = ShareEnum.ApiResultStatus.UnValidUser;
                        sResponse.ErrorDesc = "此用户已停用";
                        return;
                    }

                    USER_SHARE_COMPANYRELATEMODEL companyModel = CompanyBusiness.GetModel(accountModel.COMPANYID);

                    //不存在公司信息或 公司编码和传入的编码不一致
                    if (companyModel == null || companyModel.COMPANYCODE.ToString() != strCompanyCode)
                    {
                        sResponse.ErrorType = ShareEnum.ApiResultStatus.CompanyNotMatchAccount;
                        sResponse.ErrorDesc = "公司信息和账号信息不匹配";
                        return;
                    }
                    if (companyModel.STATUS != int.Parse(ShareEnum.CompanyRelateStatus.Normal.ToString("d")))
                    {
                        sResponse.ErrorType = ShareEnum.ApiResultStatus.CompanyStopUse;
                        sResponse.ErrorDesc = "此公司已停用";
                        return;
                    }
                    StringBuilder sbContent = new StringBuilder();
                    sbContent.AppendFormat("<accountid>{0}</accountid>", accountModel.ACCOUNTID);
                    sbContent.AppendFormat("<truename>{0}</truename>", accountModel.REALNAME);
                    sbContent.AppendFormat("<companyid>{0}</companyid>", companyModel.COMPANYID);
                    sbContent.AppendFormat("<companyname>{0}</companyname>", companyModel.COMPANYNAME);
                    sbContent.AppendFormat("<sharecompanyid>{0}</sharecompanyid>", companyModel.SHARECOMPANYID);
                    sbContent.AppendFormat("<sharecompanyname>{0}</sharecompanyname>", companyModel.COMPANYNAME);
                    sbContent.AppendFormat("<productids>{0}</productids>", companyModel.PRODUCTIDS);
                    sbContent.AppendFormat("<groupid>{0}</groupid>", companyModel.GROUPID);
                    sbContent.AppendFormat("<groupname>{0}</groupname>", companyModel.COMPANYNAME);
                    sbContent.AppendFormat("<groupidn>{0}</groupidn>", companyModel.GROUPIDN);
                    sbContent.Append("<accountmenu>");
                    //账户拥有的菜单返回
                    DataTable dt = CompanyFunBusiness.GetAccountFunMenu(accountModel.ACCOUNTID, accountModel.ISADMIN, projectModel.PROJECTID, accountModel.COMPANYID);
                    if (dt != null && dt.Rows.Count > 0)
                    {
                        foreach (DataRow dr in dt.Rows)
                        {
                            sbContent.AppendFormat(@"<menuitem><menuid>{0}</menuid><name>{1}</name>
                                                 <linkurl>{2}</linkurl><parentid>{3}</parentid><sortnum>{4}</sortnum>
                                                <desc>{5}</desc></menuitem>", dr["FMID"], dr["CFANOTHERNAME"],
                                                   dr["CFPAGEURL"], dr["CFPARENTID"], dr["CFSORTNUM"], dr["CFDESC"]);
                        }
                    }

                    sbContent.Append("</accountmenu>");
                    sResponse.Result = sbContent.ToString();
                }
            }
        }
示例#4
0
        private void SysLogin(int nAccountId, string strAccount, string strPwd, string strAppKey, string strCompanyCode)
        {
            #region 登录

            USER_SHARE_ACCOUNTMODEL account = null;
            if (nAccountId > 0)
            {
                account = AccountBusiness.GetAccountModel(nAccountId);
            }
            else
            {
                account = AccountBusiness.GetAccountModel(strCompanyCode, strAccount, strPwd);
            }
            if (account == null)
            {
                Alert(nAccountId > 0 ? "不存在此账号!" : "用户名密码不匹配!");
                return;
            }
            else
            {
                if (account.STATUS != int.Parse(ShareEnum.AccountStatus.Normal.ToString("d")))
                {
                    Alert("此账号已无效,请确认!");
                    return;
                }

                USER_SHARE_PROJECTMODEL project = null;
                if (strAppKey.Length > 0)
                {
                    project = ProjectBusiness.GetProjectModelByKey(strAppKey);
                    if (project == null)
                    {
                        Alert("不存在的项目密钥,请确认!");
                        return;
                    }
                    if (project.STATUS == int.Parse(ShareEnum.ProjectStatus.StopUse.ToString("d")))
                    {
                        Alert("此项目已停用,请确认!");
                        return;
                    }
                }

                USER_SHARE_COMPANYRELATEMODEL company = CompanyBusiness.GetModel(account.COMPANYID);

                if (company == null)
                {
                    Alert("不存在的公司信息,请确认!");
                    return;
                }
                if (company.STATUS.ToString() == ShareEnum.CompanyRelateStatus.StopUse.ToString("d"))
                {
                    Alert("此公司信息已无效,请确认!");
                    return;
                }
                if (company.COMPANYCODE.ToString() != strCompanyCode)
                {
                    Alert("公司信息和账号信息不匹配");
                    return;
                }

                int nProjectId = ValidatorHelper.ToInt(CommonMethod.GetConfigValue("SYSPROJECTID"), 0);

                HttpCookie ck = new HttpCookie("USP");
                ck.Values.Add("AccountId", account.ACCOUNTID.ToString());
                ck.Values.Add("RealName", Server.UrlEncode(account.REALNAME));
                ck.Values.Add("ProjectId", project == null ? "0" : project.PROJECTID.ToString());
                ck.Values.Add("CompanyId", account.COMPANYID.ToString());
                ck.Values.Add("GroupId", CommonMethod.FinalString(company.GROUPID));
                ck.Values.Add("CompanyName", Server.UrlEncode(company.COMPANYNAME));
                ck.Values.Add("CompanyCode", company.COMPANYCODE.ToString());
                Response.Cookies.Add(ck);

                //由登录页面进入
                if (strAppKey.Length == 0)
                {
                    //公司编码记录到Cookie
                    HttpCookie ckCode = new HttpCookie("CompanyCode");
                    ckCode.Values.Add("CompanyCode", txtCompanyCode.Text.Trim());
                    Response.Cookies.Add(ckCode);
                }

                //获取菜单
                DataTable dt = CompanyFunBusiness.GetAccountFunMenu(account.ACCOUNTID, account.ISADMIN, nProjectId, account.COMPANYID);
                if (dt != null)
                {
                    DataRow[] rows = dt.Select("PROJECTID=" + nProjectId, "");
                    if (rows != null && rows.Length > 0)
                    {
                        Response.Redirect(rows[0]["CFPAGEURL"].ToString());
                    }
                    else
                    {
                        Alert("您没有此系统权限!");
                        return;
                    }
                }
                else
                {
                    Alert("您没有此系统权限!");
                    return;
                }
            }
            #endregion
        }