/// <summary>
        /// 对象实体绑定数据
        /// </summary>
        private static USER_SHARE_COMPANYRELATEMODEL ReaderBind(DataRow dataReader)
        {
            USER_SHARE_COMPANYRELATEMODEL model = new USER_SHARE_COMPANYRELATEMODEL();

            model.CID            = ValidatorHelper.ToInt(dataReader["CID"], 0);
            model.COMPANYTYPE    = ValidatorHelper.ToInt(dataReader["COMPANYTYPE"], 0);
            model.COMPANYNAME    = CommonMethod.FinalString(dataReader["COMPANYNAME"]);
            model.COMPANYID      = ValidatorHelper.ToInt(dataReader["COMPANYID"], 0);
            model.GROUPID        = CommonMethod.FinalString(dataReader["GROUPID"]);
            model.PRODUCTIDS     = CommonMethod.FinalString(dataReader["PRODUCTIDS"]);
            model.PROJECTIDS     = CommonMethod.FinalString(dataReader["PROJECTIDS"]);
            model.COMPANYCODE    = ValidatorHelper.ToInt(dataReader["COMPANYCODE"], 0);
            model.SHARECOMPANYID = ValidatorHelper.ToInt(dataReader["SHARECOMPANYID"], 0);
            model.ADMINID        = ValidatorHelper.ToInt(dataReader["ADMINID"], 0);
            model.CREATEDATE     = ValidatorHelper.ToDateTime(dataReader["CREATEDATE"], DateTime.Now);
            model.STATUS         = ValidatorHelper.ToInt(dataReader["STATUS"], 0);
            return(model);
        }
        /// <summary>
        /// 获取对象
        /// </summary>
        /// <param name="nCompanyId"></param>
        /// <returns></returns>
        public static USER_SHARE_COMPANYRELATEMODEL GetModelByCid(int nCId)
        {
            StringBuilder strSql = new StringBuilder();

            strSql.Append("select CID,COMPANYTYPE,COMPANYNAME,COMPANYID,GROUPID,PROJECTIDS,PRODUCTIDS,COMPANYCODE,SHARECOMPANYID,ADMINID,CREATEDATE,STATUS from USER_SHARE_COMPANYRELATE ");
            strSql.Append(" where CID=:CID ");
            ParamList param = new ParamList();

            param["CID"] = nCId;
            USER_SHARE_COMPANYRELATEMODEL model = null;
            DataTable dt = StaticConnectionProvider.ExecuteDataTable(strSql.ToString(), param);

            if (dt != null && dt.Rows.Count > 0)
            {
                model = ReaderBind(dt.Rows[0]);
            }

            return(model);
        }
 private void LoadOriInfo(string strCid)
 {
     if (strCid.Length > 0)
     {
         USER_SHARE_COMPANYRELATEMODEL uscrModel = CompanyBusiness.GetModelByCid(ValidatorHelper.ToInt(strCid, 0));
         if (uscrModel != null)
         {
             txtCompanyName.Text = uscrModel.COMPANYNAME;
             ControlHelper.SelectFlg(ddlCompanyType, uscrModel.COMPANYTYPE.ToString());
             hidCompanyId.Value = uscrModel.COMPANYID > 0 ? uscrModel.COMPANYID.ToString() : uscrModel.SHARECOMPANYID.ToString();
             hidGroupId.Value   = CommonMethod.FinalString(uscrModel.GROUPID);
             hidGroupIdn.Value  = CommonMethod.FinalString(uscrModel.GROUPIDN);
             hidProjects.Value  = CommonMethod.FinalString(uscrModel.PROJECTIDS);
             hidProducts.Value  = CommonMethod.FinalString(uscrModel.PRODUCTIDS);
         }
         else
         {
             Response.Write("不存在此公司信息!");
             Response.End();
         }
     }
 }
        /// <summary>
        /// 获取TMS项目的公司账号信息
        /// </summary>
        /// <param name="context"></param>
        /// <param name="xmlDoc"></param>
        /// <param name="sResponse"></param>
        private void GetAccounts(HttpContext context, XmlDocument xmlDoc, ServiceResponse sResponse)
        {
            XmlNode xnAccountName = xmlDoc.SelectSingleNode("request/accountname");
            XmlNode xnAccountPwd  = xmlDoc.SelectSingleNode("request/accountpwd");
            XmlNode xnCompanyCode = xmlDoc.SelectSingleNode("request/companyid");

            if (CommonMethod.FinalString(xnAccountName.InnerText).Length == 0)
            {
                sResponse.ErrorType = ShareEnum.ApiResultStatus.InputParaErr;
                sResponse.ErrorDesc = "缺少传入参数accountname";
                return;
            }
            if (CommonMethod.FinalString(xnAccountPwd.InnerText).Length == 0)
            {
                sResponse.ErrorType = ShareEnum.ApiResultStatus.InputParaErr;
                sResponse.ErrorDesc = "缺少传入参数accountpwd";
                return;
            }
            if (CommonMethod.FinalString(xnCompanyCode.InnerText).Length == 0)
            {
                sResponse.ErrorType = ShareEnum.ApiResultStatus.InputParaErr;
                sResponse.ErrorDesc = "缺少传入参数companyid";
                return;
            }

            USER_SHARE_ACCOUNTMODEL accountModel = AccountBusiness.GetAccountModel(xnCompanyCode.InnerText.Trim(), xnAccountName.InnerText.Trim(), xnAccountPwd.InnerText.Trim());

            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() != xnCompanyCode.InnerText.Trim())
            {
                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;
            }
            //获取账号信息
            string strWhere = string.Format(" AND COMPANYID={0} ", xnCompanyCode.InnerText.Trim());

            strWhere += string.Format(" AND STATUS={0} ", ShareEnum.AccountStatus.Normal.ToString("d"));
            int           count     = 0;
            DataTable     dt        = AccountBusiness.GetAccountList(0, int.MaxValue, strWhere, out count);
            StringBuilder sbContent = new StringBuilder("<accounts>");

            if (dt != null && dt.Rows.Count > 0)
            {
                foreach (DataRow dr in dt.Rows)
                {
                    sbContent.AppendFormat(@"<accountitem><accountname>{0}</accountname><accountpwd>{1}</accountpwd>
                                                 <truename>{2}</truename><isadmin>{3}</isadmin></accountitem> ",
                                           dr["ACCOUNTNAME"], dr["ACCOUNTPWD"], dr["REALNAME"], dr["ISADMIN"]);
                }
            }

            sbContent.Append("</accounts>");
            sResponse.Result = sbContent.ToString();
        }
        /// <summary>
        /// 危险品,运管项目公司和账号自动注册接口(临时用)
        /// </summary>
        /// <param name="context"></param>
        /// <param name="xmlDoc"></param>
        /// <param name="sResponse"></param>
        private void AutoRegister(HttpContext context, XmlDocument xmlDoc, ServiceResponse sResponse)
        {
            //传入参数验证
            XmlNode xnCompanyType = xmlDoc.SelectSingleNode("request/companytype");
            XmlNode xnCompanyName = xmlDoc.SelectSingleNode("request/companyname");
            XmlNode xnGroupId     = xmlDoc.SelectSingleNode("request/groupid");
            XmlNode xnGroupIdn    = xmlDoc.SelectSingleNode("request/groupidn");
            XmlNode xnAccountName = xmlDoc.SelectSingleNode("request/accountname");
            XmlNode xnAccountPwd  = xmlDoc.SelectSingleNode("request/accountpwd");
            XmlNode xnRealName    = xmlDoc.SelectSingleNode("request/realname");

            if (xnCompanyType == null || xnCompanyType.InnerText.Trim().Length == 0)
            {
                sResponse.ErrorType = ShareEnum.ApiResultStatus.InputParaErr;
                sResponse.ErrorDesc = "缺少传入参数companytype";
                return;
            }
            if (xnCompanyName == null || xnCompanyName.InnerText.Trim().Length == 0)
            {
                sResponse.ErrorType = ShareEnum.ApiResultStatus.InputParaErr;
                sResponse.ErrorDesc = "缺少传入参数companyname";
                return;
            }
            if (xnGroupId == null || xnGroupId.InnerText.Trim().Length == 0)
            {
                sResponse.ErrorType = ShareEnum.ApiResultStatus.InputParaErr;
                sResponse.ErrorDesc = "缺少传入参数groupid";
                return;
            }
            if (xnGroupIdn == null || xnGroupIdn.InnerText.Trim().Length == 0)
            {
                sResponse.ErrorType = ShareEnum.ApiResultStatus.InputParaErr;
                sResponse.ErrorDesc = "缺少传入参数groupidn";
                return;
            }
            if (xnAccountName == null || xnAccountName.InnerText.Trim().Length == 0)
            {
                sResponse.ErrorType = ShareEnum.ApiResultStatus.InputParaErr;
                sResponse.ErrorDesc = "缺少传入参数accountname";
                return;
            }
            if (xnAccountPwd == null || xnAccountPwd.InnerText.Trim().Length == 0)
            {
                sResponse.ErrorType = ShareEnum.ApiResultStatus.InputParaErr;
                sResponse.ErrorDesc = "缺少传入参数accountpwd";
                return;
            }
            if (xnRealName == null || xnRealName.InnerText.Trim().Length == 0)
            {
                sResponse.ErrorType = ShareEnum.ApiResultStatus.InputParaErr;
                sResponse.ErrorDesc = "缺少传入参数realname";
                return;
            }

            int    ntype      = 0;
            string projectids = "";
            string productids = "";

            switch (xnCompanyType.InnerText.Trim())
            {
            //危险品运输
            case "0":
                ntype      = int.Parse(ShareEnum.CompanyType.PlatCompany.ToString("d"));
                projectids = ",1,21,";    //开通项目,危险品整合 和权限系统
                productids = ",15,2,";    //权限系统维护和危险品运输
                break;

            //运管平台
            case "2":
                ntype      = int.Parse(ShareEnum.CompanyType.YgCompany.ToString("d"));
                projectids = ",1,";    //开通项目,危险品整合 和权限系统
                productids = ",15,";   //权限系统维护
                break;

            default:
                return;
            }

            int ncode     = CompanyBusiness.IsCompanyExists(xnCompanyName.InnerText.Trim(), xnGroupId.InnerText.Trim(), ntype);
            int companyid = PlatFormBusiness.GetYgCompanyId(xnCompanyName.InnerText.Trim());

            if (ncode > 0)
            {
                //判断账号是否存在
                USER_SHARE_ACCOUNTMODEL accountModel1 = AccountBusiness.GetAccountModel(xnAccountName.InnerText.Trim(), ncode.ToString());
                if (accountModel1 != null)
                {
                    //已存在的账号,判断密码是否改动,如果改动,更新密码

                    if (accountModel1.ORIGNALPWD.Trim() != xnAccountPwd.InnerText.Trim())
                    {
                        accountModel1.ORIGNALPWD = xnAccountPwd.InnerText.Trim();
                        accountModel1.ACCOUNTPWD = Enc.Encrypt(xnAccountPwd.InnerText.Trim(), ncode.ToString().PadLeft(8, '0'));
                        //日志信息
                        USER_SHARE_LOGMODEL logModele = new USER_SHARE_LOGMODEL();
                        logModele.LOGID          = CommonBusiness.GetSeqID("S_USER_SHARE_LOG");
                        logModele.OPERATEDATE    = DateTime.Now;
                        logModele.OPERATORID     = 0;
                        logModele.PROJECTID      = 21;
                        logModele.COMPANYID      = ncode;
                        logModele.OPERATETYPE    = int.Parse(ShareEnum.LogType.EditAccount.ToString("d"));
                        logModele.OPERATECONTENT = string.Format("通过自动注册接口更改账号密码,账号名称:{0},公司ID:{1} ", xnAccountName.InnerText.Trim(), accountModel1.COMPANYID);
                        AccountBusiness.EditAccount(accountModel1, logModele);
                    }

                    //之前遗漏了公司Id ,已经注册过的,公司 Id更新进去
                    if (companyid > 0)
                    {
                        CompanyBusiness.UpdateRelateCompanyId(companyid, ncode);
                    }

                    return;
                }
            }
            else
            {
                //公司注册  产品开通

                USER_SHARE_COMPANYRELATEMODEL uscrModel = new USER_SHARE_COMPANYRELATEMODEL();
                ncode                 = CompanyBusiness.GetCompanyCode();
                uscrModel.CID         = CommonBusiness.GetSeqID("S_USER_SHARE_COMPANYRELATE");
                uscrModel.COMPANYID   = companyid;
                uscrModel.COMPANYTYPE = ntype;
                uscrModel.COMPANYNAME = xnCompanyName.InnerText.Trim();
                uscrModel.STATUS      = int.Parse(ShareEnum.CompanyRelateStatus.Normal.ToString("d"));
                uscrModel.GROUPID     = xnGroupId.InnerText.Trim();
                uscrModel.GROUPIDN    = xnGroupIdn.InnerText.Trim();
                uscrModel.PROJECTIDS  = projectids; //开通项目
                uscrModel.PRODUCTIDS  = productids; //开通产品
                uscrModel.CREATEDATE  = DateTime.Now;
                uscrModel.COMPANYCODE = ncode;

                //日志记录
                USER_SHARE_LOGMODEL logModel = new USER_SHARE_LOGMODEL();
                logModel.LOGID          = CommonBusiness.GetSeqID("S_USER_SHARE_LOG");
                logModel.OPERATEDATE    = DateTime.Now;
                logModel.OPERATORID     = 0;
                logModel.PROJECTID      = 21;
                logModel.COMPANYID      = ncode;
                logModel.OPERATETYPE    = int.Parse(ShareEnum.LogType.AddCompanyRelate.ToString("d"));
                logModel.OPERATECONTENT = "通过接口新增公司注册信息,公司名称:" + uscrModel.COMPANYNAME;
                CompanyBusiness.AddCompanyRelate(uscrModel, logModel);
            }

            //账号信息
            USER_SHARE_ACCOUNTMODEL accountModel = new USER_SHARE_ACCOUNTMODEL();

            accountModel.ACCOUNTID   = CommonBusiness.GetSeqID("S_USER_SHARE_ACCOUNT");
            accountModel.ACCOUNTNAME = xnAccountName.InnerText.Trim();
            accountModel.ACCOUNTPWD  = Enc.Encrypt(xnAccountPwd.InnerText.Trim(), ncode.ToString().PadLeft(8, '0'));
            accountModel.COMPANYID   = ncode;
            accountModel.ORIGNALPWD  = xnAccountPwd.InnerText.Trim();
            accountModel.CREATEDATE  = DateTime.Now;
            accountModel.REALNAME    = xnRealName.InnerText.Trim();
            accountModel.EMAIL       = "";
            accountModel.STATUS      = int.Parse(ShareEnum.AccountStatus.Normal.ToString("d"));
            accountModel.ISADMIN     = 0;
            accountModel.CREATORID   = 0;

            //日志信息
            USER_SHARE_LOGMODEL logModel2 = new USER_SHARE_LOGMODEL();

            logModel2.LOGID          = CommonBusiness.GetSeqID("S_USER_SHARE_LOG");
            logModel2.OPERATEDATE    = DateTime.Now;
            logModel2.OPERATORID     = 0;
            logModel2.PROJECTID      = 21;
            logModel2.COMPANYID      = ncode;
            logModel2.OPERATETYPE    = int.Parse(ShareEnum.LogType.AddAccount.ToString("d"));
            logModel2.OPERATECONTENT = string.Format("通过公司自动注册接口注册公司后新增账号信息,账号名称:{0},公司ID:{1} ", xnAccountName.InnerText.Trim(), accountModel.COMPANYID);
            AccountBusiness.AddAccount(accountModel, logModel2);
        }
        /// <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 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();
                }
            }
        }
        protected void btnSave_Click(object sender, EventArgs e)
        {
            #region 基本信息

            USER_SHARE_COMPANYRELATEMODEL uscrModel = null;

            //日志记录
            USER_SHARE_LOGMODEL logModel = new USER_SHARE_LOGMODEL();
            logModel.LOGID       = CommonBusiness.GetSeqID("S_USER_SHARE_LOG");
            logModel.OPERATEDATE = DateTime.Now;
            logModel.OPERATORID  = AccountId;
            logModel.PROJECTID   = ProjectId;
            logModel.COMPANYID   = CompanyId;



            #region 产品

            string strProjectIds = CommonMethod.FinalString(Request.Form["project"]);
            string strProductIds = CommonMethod.FinalString(Request.Form["ppfun"]);

            if (strProjectIds.Length > 0)
            {
                strProjectIds = "," + strProjectIds + ",";
            }

            if (strProductIds.Length > 0)
            {
                strProductIds = "," + strProductIds + ",";
            }

            if (strProjectIds.Length == 0 || strProductIds.Length == 0)
            {
                Alert("请选择公司开通的项目和产品!");
                return;
            }

            #endregion

            //新增

            if (Cid.Length == 0)
            {
                uscrModel               = new USER_SHARE_COMPANYRELATEMODEL();
                uscrModel.CID           = CommonBusiness.GetSeqID("S_USER_SHARE_COMPANYRELATE");
                uscrModel.STATUS        = int.Parse(ShareEnum.CompanyRelateStatus.Normal.ToString("d"));
                uscrModel.CREATEDATE    = DateTime.Now;
                uscrModel.COMPANYCODE   = CompanyBusiness.GetCompanyCode();
                logModel.OPERATETYPE    = int.Parse(ShareEnum.LogType.AddCompanyRelate.ToString("d"));
                logModel.OPERATECONTENT = "新增公司注册关联信息,公司名称:" + txtCompanyName.Text.Trim();
            }

            //修改

            else
            {
                uscrModel               = CompanyBusiness.GetModelByCid(ValidatorHelper.ToInt(Cid, 0));
                logModel.OPERATETYPE    = int.Parse(ShareEnum.LogType.EditCompanyRelate.ToString("d"));
                logModel.OPERATECONTENT = "修改公司注册关联信息,公司名称:" + txtCompanyName.Text.Trim();
            }

            uscrModel.COMPANYNAME = txtCompanyName.Text.Trim();
            uscrModel.COMPANYTYPE = int.Parse(ddlCompanyType.SelectedValue);
            if (uscrModel.COMPANYTYPE != int.Parse(ShareEnum.CompanyType.ShareCompany.ToString("d")))
            {
                uscrModel.COMPANYID      = ValidatorHelper.ToInt(hidCompanyId.Value, 0);
                uscrModel.SHARECOMPANYID = 0;
            }
            else
            {
                uscrModel.SHARECOMPANYID = ValidatorHelper.ToInt(hidCompanyId.Value, 0);
                uscrModel.COMPANYID      = 0;
            }

            uscrModel.GROUPID    = hidGroupId.Value;
            uscrModel.GROUPIDN   = hidGroupIdn.Value;
            uscrModel.PROJECTIDS = strProjectIds;
            uscrModel.PRODUCTIDS = strProductIds;

            if (Cid.Length == 0)
            {
                if (CompanyBusiness.AddCompanyRelate(uscrModel, logModel))
                {
                    Alert("注册成功!");
                }
                else
                {
                    Alert("注册失败,请重试!");
                }
            }
            else
            {
                if (CompanyBusiness.UpdateCompanyRelate(uscrModel, logModel))
                {
                    Alert("修改成功!");
                }
                else
                {
                    Alert("操作失败,请重试!");
                }
            }

            ExecScript("parent.__doPostBack('ctl00$MainContent$btnSearch','');");

            #endregion
        }
        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
        }
        /// <summary>
        /// 增加一条数据
        /// </summary>
        public static bool AddCompanyRelate(USER_SHARE_COMPANYRELATEMODEL model, USER_SHARE_LOGMODEL log)
        {
            bool          blSuccess = false;
            StringBuilder strSql    = new StringBuilder();

            strSql.Append("insert into USER_SHARE_COMPANYRELATE(");
            strSql.Append("CID,COMPANYTYPE,COMPANYNAME,COMPANYID,GROUPID,PRODUCTIDS,PROJECTIDS,COMPANYCODE,SHARECOMPANYID,ADMINID,CREATEDATE,STATUS,GROUPIDN)");

            strSql.Append(" values (");
            strSql.Append(":CID,:COMPANYTYPE,:COMPANYNAME,:COMPANYID,:GROUPID,:PRODUCTIDS,:PROJECTIDS,:COMPANYCODE,:SHARECOMPANYID,:ADMINID,:CREATEDATE,:STATUS,:GROUPIDN)");
            ParamList param = new ParamList();

            param["CID"]            = model.CID;
            param["COMPANYTYPE"]    = model.COMPANYTYPE;
            param["COMPANYNAME"]    = model.COMPANYNAME;
            param["COMPANYID"]      = model.COMPANYID;
            param["GROUPID"]        = model.GROUPID;
            param["PRODUCTIDS"]     = model.PRODUCTIDS;
            param["PROJECTIDS"]     = model.PROJECTIDS;
            param["COMPANYCODE"]    = model.COMPANYCODE;
            param["SHARECOMPANYID"] = model.SHARECOMPANYID;
            param["ADMINID"]        = model.ADMINID;
            param["CREATEDATE"]     = model.CREATEDATE;
            param["STATUS"]         = model.STATUS;
            param["ADMINID"]        = model.ADMINID;
            param["GROUPIDN"]       = model.GROUPIDN;
            //应用系统注册
            if (model.COMPANYTYPE == int.Parse(ShareEnum.CompanyType.ShareCompany.ToString("d")))
            {
                //user_share_company插入
                int nShareCompanyId = CommonBusiness.GetSeqID("S_USER_SHARE_COMPANY");
                model.SHARECOMPANYID    = nShareCompanyId;
                param["SHARECOMPANYID"] = nShareCompanyId;
            }

            string strSqlS = string.Format(@"SELECT M.* FROM USER_SHARE_PRODUCTFUN P INNER JOIN USER_SHARE_FUNMENU M 
                                             ON P.FUNID=M.FMID WHERE M.FMSTATUS={0} AND P.PRODUCTID IN ({1}) ",
                                           ShareEnum.FunMenuStatus.Normal.ToString("d"), model.PRODUCTIDS.TrimStart(',').TrimEnd(','));

            DataTable           dt         = StaticConnectionProvider.ExecuteDataTable(strSqlS);
            int                 nCfId      = 0;
            IConnectionProvider connection = ConnectionProviderBuilder.CreateConnectionProvider();

            try
            {
                using (connection)
                {
                    connection.BeginTranscation();

                    //公司关联信息
                    connection.ExecuteNonQuery(strSql.ToString(), param);
                    param.Clear();

                    if (model.COMPANYTYPE == int.Parse(ShareEnum.CompanyType.ShareCompany.ToString("d")))
                    {
                        strSqlS = "INSERT INTO USER_SHARE_COMPANY(COMPANYID,COMPANYNAME) VALUES({0},'{1}')";
                        connection.ExecuteNonQuery(string.Format(strSqlS, model.SHARECOMPANYID, model.COMPANYNAME));
                    }

                    //公司菜单初始化
                    foreach (DataRow dr in dt.Rows)
                    {
                        nCfId                  = CommonBusiness.GetSeqID("S_USER_SHARE_COMPANYFUN");
                        strSqlS                = string.Format(@"insert into USER_SHARE_COMPANYFUN(CFID,FMID,PROJECTID,COMPANYID,CFNAME,
                        CFANOTHERNAME,CFPAGEURL,CFPARENTID,CFSORTNUM,CFSTEP,CFISLAST,CFDESC,CFSTATUS) values (
                        :CFID,:FMID,:PROJECTID,:COMPANYID,:CFNAME,:CFANOTHERNAME,:CFPAGEURL,:CFPARENTID,:CFSORTNUM,
                        :CFSTEP,:CFISLAST,:CFDESC,:CFSTATUS)");
                        param["CFID"]          = nCfId;
                        param["FMID"]          = dr["FMID"];
                        param["PROJECTID"]     = dr["PROJECTID"];
                        param["COMPANYID"]     = model.COMPANYCODE;
                        param["CFNAME"]        = dr["FMNAME"];
                        param["CFANOTHERNAME"] = dr["FMNAME"];
                        param["CFPAGEURL"]     = CommonMethod.FinalString(dr["FMPAGEURL"]);
                        param["CFPARENTID"]    = CommonMethod.FinalString(dr["FMPARENTID"]);
                        param["CFSORTNUM"]     = dr["FMSORTNUM"];
                        param["CFSTEP"]        = CommonMethod.FinalString(dr["FMSTEP"]);
                        param["CFISLAST"]      = CommonMethod.FinalString(dr["FMISLAST"]);
                        param["CFDESC"]        = CommonMethod.FinalString(dr["FMDESC"]);
                        param["CFSTATUS"]      = ShareEnum.CompanyFunMenuStatus.Normal.ToString("d");
                        connection.ExecuteNonQuery(strSqlS, param);
                    }

                    param.Clear();

                    //操作日志
                    strSql = new StringBuilder();
                    strSql.Append("insert into USER_SHARE_LOG(");
                    strSql.Append("LOGID,OPERATETYPE,OPERATORID,PROJECTID,COMPANYID,OPERATECONTENT,OPERATEDATE)");
                    strSql.Append(" values (");
                    strSql.Append(":LOGID,:OPERATETYPE,:OPERATORID,:PROJECTID,:COMPANYID,:OPERATECONTENT,:OPERATEDATE)");

                    param["LOGID"]          = log.LOGID;
                    param["OPERATETYPE"]    = log.OPERATETYPE;
                    param["OPERATORID"]     = log.OPERATORID;
                    param["PROJECTID"]      = log.PROJECTID;
                    param["COMPANYID"]      = log.COMPANYID;
                    param["OPERATECONTENT"] = log.OPERATECONTENT;
                    param["OPERATEDATE"]    = log.OPERATEDATE;
                    connection.ExecuteNonQuery(strSql.ToString(), param);

                    connection.CommitTranscation();
                    blSuccess = true;
                }
            }
            catch (Exception ex)
            {
                connection.RollbackTranscation();
                LogHelper.WriteErr("注册公司时发生错误:公司名称-" + model.COMPANYNAME, ex);
            }

            return(blSuccess);
        }
        /// <summary>
        /// 更新一条数据
        /// </summary>
        public static bool UpdateCompanyRelate(USER_SHARE_COMPANYRELATEMODEL model, USER_SHARE_LOGMODEL log)
        {
            bool          blSuccess = false;
            StringBuilder strSql    = new StringBuilder();

            strSql.Append("update USER_SHARE_COMPANYRELATE set ");
            strSql.Append("COMPANYTYPE=:COMPANYTYPE,");
            strSql.Append("COMPANYNAME=:COMPANYNAME,");
            strSql.Append("COMPANYID=:COMPANYID,");
            strSql.Append("GROUPID=:GROUPID,");
            strSql.Append("PROJECTIDS=:PROJECTIDS,");
            strSql.Append("PRODUCTIDS=:PRODUCTIDS,");
            strSql.Append("COMPANYCODE=:COMPANYCODE,");
            strSql.Append("SHARECOMPANYID=:SHARECOMPANYID, ");
            strSql.Append("ADMINID=:ADMINID,");
            strSql.Append("GROUPIDN=:GROUPIDN ");
            strSql.Append(" where CID=:CID ");

            ParamList param = new ParamList();

            param["CID"]            = model.CID;
            param["COMPANYTYPE"]    = model.COMPANYTYPE;
            param["COMPANYNAME"]    = model.COMPANYNAME;
            param["COMPANYID"]      = model.COMPANYID;
            param["GROUPID"]        = model.GROUPID;
            param["PROJECTIDS"]     = model.PROJECTIDS;
            param["PRODUCTIDS"]     = model.PRODUCTIDS;
            param["COMPANYCODE"]    = model.COMPANYCODE;
            param["SHARECOMPANYID"] = model.SHARECOMPANYID;
            param["ADMINID"]        = model.ADMINID;
            param["GROUPIDN"]       = model.GROUPIDN;
            string strSqlS = string.Format(@"SELECT M.* FROM USER_SHARE_PRODUCTFUN P INNER JOIN USER_SHARE_FUNMENU M 
                                             ON P.FUNID=M.FMID WHERE M.FMSTATUS={0} AND P.PRODUCTID IN ({1}) AND P.FUNID
                                             NOT IN (SELECT FMID FROM USER_SHARE_COMPANYFUN WHERE COMPANYID={2}  )
                                             ", ShareEnum.FunMenuStatus.Normal.ToString("d"),
                                           model.PRODUCTIDS.TrimStart(',').TrimEnd(','),
                                           model.COMPANYCODE);

            DataTable dt = StaticConnectionProvider.ExecuteDataTable(strSqlS);

            //原来公司自己删除的菜单如果再次开通了要恢复
            strSqlS = string.Format(@"SELECT M.FMID FROM USER_SHARE_PRODUCTFUN P INNER JOIN USER_SHARE_FUNMENU M 
                                              ON P.FUNID=M.FMID WHERE M.FMSTATUS={0} AND P.PRODUCTID IN ({1}) AND P.FUNID
                                              IN (SELECT FMID FROM USER_SHARE_COMPANYFUN WHERE COMPANYID={2} AND CFSTATUS={3} )
                                             ", ShareEnum.FunMenuStatus.Normal.ToString("d"),
                                    model.PRODUCTIDS.TrimStart(',').TrimEnd(','),
                                    model.COMPANYCODE, ShareEnum.CompanyFunMenuStatus.StopUse.ToString("d"));
            DataTable dtStop = StaticConnectionProvider.ExecuteDataTable(strSqlS);
            int       nCfId  = 0;

            IConnectionProvider connection = ConnectionProviderBuilder.CreateConnectionProvider();

            try
            {
                using (connection)
                {
                    connection.CommitTranscation();

                    //增加项目信息
                    connection.ExecuteNonQuery(strSql.ToString(), param);
                    param.Clear();

                    //公司菜单初始化
                    foreach (DataRow dr in dt.Rows)
                    {
                        nCfId                  = CommonBusiness.GetSeqID("S_USER_SHARE_COMPANYFUN");
                        strSqlS                = string.Format(@"insert into USER_SHARE_COMPANYFUN(CFID,FMID,PROJECTID,COMPANYID,CFNAME,
                        CFANOTHERNAME,CFPAGEURL,CFPARENTID,CFSORTNUM,CFSTEP,CFISLAST,CFDESC,CFSTATUS) values (
                        :CFID,:FMID,:PROJECTID,:COMPANYID,:CFNAME,:CFANOTHERNAME,:CFPAGEURL,:CFPARENTID,:CFSORTNUM,
                        :CFSTEP,:CFISLAST,:CFDESC,:CFSTATUS)");
                        param["CFID"]          = nCfId;
                        param["FMID"]          = dr["FMID"];
                        param["PROJECTID"]     = dr["PROJECTID"];
                        param["COMPANYID"]     = model.COMPANYCODE;
                        param["CFNAME"]        = dr["FMNAME"];
                        param["CFANOTHERNAME"] = dr["FMNAME"];
                        param["CFPAGEURL"]     = CommonMethod.FinalString(dr["FMPAGEURL"]);
                        param["CFPARENTID"]    = CommonMethod.FinalString(dr["FMPARENTID"]);
                        param["CFSORTNUM"]     = dr["FMSORTNUM"];
                        param["CFSTEP"]        = CommonMethod.FinalString(dr["FMSTEP"]);
                        param["CFISLAST"]      = CommonMethod.FinalString(dr["FMISLAST"]);
                        param["CFDESC"]        = CommonMethod.FinalString(dr["FMDESC"]);
                        param["CFSTATUS"]      = ShareEnum.CompanyFunMenuStatus.Normal.ToString("d");
                        connection.ExecuteNonQuery(strSqlS, param);
                    }

                    //原来公司自己删除的菜单如果再次开通了要恢复
                    foreach (DataRow dr in dtStop.Rows)
                    {
                        strSqlS = "UPDATE USER_SHARE_COMPANYFUN SET CFSTATUS={0} WHERE COMPANYID={1} AND FMID={2} AND CFSTATUS={3}";
                        connection.ExecuteNonQuery(string.Format(strSqlS, ShareEnum.CompanyFunMenuStatus.Normal.ToString("d"),
                                                                 model.COMPANYCODE, dr["FMID"], ShareEnum.CompanyFunMenuStatus.StopUse.ToString("d")));
                    }

                    param.Clear();

                    //操作日志
                    strSql = new StringBuilder();
                    strSql.Append("insert into USER_SHARE_LOG(");
                    strSql.Append("LOGID,OPERATETYPE,OPERATORID,PROJECTID,COMPANYID,OPERATECONTENT,OPERATEDATE)");
                    strSql.Append(" values (");
                    strSql.Append(":LOGID,:OPERATETYPE,:OPERATORID,:PROJECTID,:COMPANYID,:OPERATECONTENT,:OPERATEDATE)");

                    param["LOGID"]          = log.LOGID;
                    param["OPERATETYPE"]    = log.OPERATETYPE;
                    param["OPERATORID"]     = log.OPERATORID;
                    param["PROJECTID"]      = log.PROJECTID;
                    param["COMPANYID"]      = log.COMPANYID;
                    param["OPERATECONTENT"] = log.OPERATECONTENT;
                    param["OPERATEDATE"]    = log.OPERATEDATE;
                    connection.ExecuteNonQuery(strSql.ToString(), param);

                    connection.CommitTranscation();
                    blSuccess = true;
                }
            }
            catch (Exception ex)
            {
                connection.RollbackTranscation();
                LogHelper.WriteErr("修改公司关联信息时发生错误:公司名称-" + model.COMPANYNAME, ex);
            }

            return(blSuccess);
        }