예제 #1
0
        /// <summary>
        /// 修改用户
        /// </summary>
        /// <param name="userinfo">用户实体类</param>
        /// <returns>是否成功</returns>
        public bool EditUserMain(USERINFO userinfo)
        {
            var listTrans = new List <Entity.OracleTransaction>();

            // USERINFO
            var account = userinfo.F_ACCOUNT;
            var strSql  = new StringBuilder();

            strSql.Append("UPDATE USERINFO SET F_NAME=:F_NAME, F_PASSWORD=:F_PASSWORD, F_EMAIL=:F_EMAIL, F_PHONE=:F_PHONE, F_TEL=:F_TEL,");
            strSql.Append(" F_DESCRIPTION=:F_DESCRIPTION, F_ADDRESS=:F_ADDRESS, F_REALNAME=:F_REALNAME WHERE F_ACCOUNT=:F_ACCOUNT");
            var parms = new Dictionary <string, object>
            {
                { "F_ACCOUNT", account },
                { "F_NAME", userinfo.F_NAME },
                { "F_PASSWORD", userinfo.F_PASSWORD },
                { "F_EMAIL", userinfo.F_EMAIL ?? "" },
                { "F_PHONE", userinfo.F_PHONE ?? "" },
                { "F_TEL", userinfo.F_TEL ?? "" },
                { "F_DESCRIPTION", userinfo.F_DESCRIPTION ?? "" },
                { "F_ADDRESS", userinfo.F_ADDRESS ?? "" },
                { "F_REALNAME", userinfo.F_REALNAME ?? "" }
            };

            listTrans.Add(new Entity.OracleTransaction
            {
                SqlString  = strSql.ToString(),
                Parameters = parms
            });

            // DEPARTMENTUSER
            strSql = new StringBuilder();
            strSql.Append(
                "UPDATE DEPARTMENTUSER SET F_DEPARTMENTCODE = :F_DEPARTMENTCODE");
            strSql.Append(
                " WHERE F_ACCOUNT = :F_ACCOUNT");
            parms = new Dictionary <string, object>
            {
                { "F_DEPARTMENTCODE", userinfo.F_DEPARTMENTCODE },
                { "F_ACCOUNT", account }
            };
            listTrans.Add(new Entity.OracleTransaction
            {
                SqlString  = strSql.ToString(),
                Parameters = parms
            });

            // USERROLE
            if (userinfo.Roleinfos != null && userinfo.Roleinfos.Length > 0)
            {
                strSql = new StringBuilder();
                strSql.Append("DELETE USERROLE");
                strSql.Append(" WHERE F_ACCOUNT = :F_ACCOUNT");
                parms = new Dictionary <string, object>
                {
                    { "F_ACCOUNT", account }
                };
                listTrans.Add(new Entity.OracleTransaction
                {
                    SqlString  = strSql.ToString(),
                    Parameters = parms
                });
                foreach (var roleinfo in userinfo.Roleinfos)
                {
                    strSql = new StringBuilder();
                    strSql.Append(
                        "INSERT INTO USERROLE(F_ID, F_ACCOUNT, F_ROLECODE)VALUES");
                    strSql.Append(
                        "(SYS_GUID(),:F_ACCOUNT,:F_ROLECODE)");
                    parms = new Dictionary <string, object>
                    {
                        { "F_ACCOUNT", account },
                        { "F_ROLECODE", roleinfo }
                    };
                    listTrans.Add(new Entity.OracleTransaction
                    {
                        SqlString  = strSql.ToString(),
                        Parameters = parms
                    });
                }
            }

            var dbHelper = new DbAPI();

            try
            {
                dbHelper.RunOracleTransaction(listTrans);
                return(true);
            }
            catch (Exception ex)
            {
                LogBN.WriteLog(typeof(ROLEINFO_BN), "修改用户EditUserMain 程序段的异常" + ex);
                return(false);
            }
        }